ICRA 2010 Tutorial on ROS: from nodes and messages to sensing, planning, and control
IMPORTANT: Tutorial registration is now closed. Due to limited resources, we are *full* for this event
Date: Friday, 7 May 2010
This is a hands-on tutorial, and we will be diving in immediately. We request that all attendees bring their own laptop and have already installed the appropriate software:
This full day tutorial will teach participants how to use ROS in their robotics research and development work. Hands-on exercises in simulation and with a physical PR2 robot will provide experience with existing ROS software, as well as an opportunity to write new code. Leaving the tutorial, attendees will be familiar with the ROS tools and several of the major functional components.
ROS is an open source distributed robotics platform designed to accelerate robotics research and development, including commercial application development. ROS is a high-quality, actively maintained, well-documented software platform intended to support the academic and industrial robotics communities. ROS includes reusable components that implement a variety of low- and high-level functionality, such as base navigation, mapping, visual odometry, arm planning and control, data visualization, object recognition, and task-level execution. ROS supports a number of research robots and common robot simulators.
All ROS software is released under an Open Source license, and the great majority of it is licensed under a BSD-style license that allows users and companies to build applications on top without licensing constraints.
The primary audience is robot software developers and algorithm researchers. The secondary audience is human-robot interaction researchers, educational groups, robot competition participants, and commercial application developers hoping to become more productive.
This is a hands-on tutorial, with programming exercises in Python. Attendees need not be expert Python programmers, but they should be familiar with the basics of writing Python code.
Attendees need not have prior experience with ROS, though they are encouraged to familiarize themselves online documentation.
Motivation and objectives
The motive for this tutorial is to introduce and teach usage of ROS, a well-supported robotic application development environment and repository of functionality. This tutorial is designed to bring attendees to a point where they are able to use ROS in their own work and to participate in the ROS community. ROS includes modules written by expert practitioners in a variety of fields, including mapping, control, planning, and perception. All code is freely available for robotics researchers or entrepreneurs to use and build upon. Many third-party packages used by ROS, such as Player, Stage, and OpenCV, can be used alone, without being embedded in ROS. ROS is intended to be portable across many robots.
With ROS, we want to reduce the re-invention of common functionality and allow people to share and build on new functionality through a free and open infrastructure. By providing a software platform that facilitates self-publishing of research code, we aim to improve scientific practice. It is hoped that as more people in the community use ROS in their research, it will be easier to check and share results and more easily collaborate using this open and free platform.
- use ROS command line tools and visualization tools
- launch, analyze, and debug distributed ROS systems
- write ROS nodes in Python
- write and use custom ROS messages
- access sensors and visualize data
- construct sensor processing pipelines
- Planning and Control
- use and customize navigation for a mobile base
- use and customize motion control for an articulated arm
- build high-level executive in Python
- run complex robot simulations
- control a complex mobile manipulation platform
(Under construction and subject to change)
Part I - Learning ROS
In the first part of the day, you'll learn the basics of using ROS.
9:00 -- 9:30 : ROS Overview, Morgan Quigley
- What is ROS? What problems does it solve? Introduction to basic concepts and tour of key features.
9:30 -- 11:00 : TurtleSim, Ken Conley
11:00 -- 11:30 : Introduction to the PR2, Brian Gerkey
Part II - Using ROS
In the second part of the day, you'll use ROS to make a robot do a task that integrates perception, planning, and control. While the exercises will use a PR2, most of the material is relevant for any robot that runs ROS.
11:30 -- 12:30 : Objection recognition, Gary Bradski
Learn how to integrate ROS with OpenCV to do image processing on data from the PR2's cameras. Apply OpenCV algorithms to find objects.
Slides in PDF form are available here (5.4M)
If you have ROS working on your laptop and want to try out the chessboard detector, you can download this bag (data) file (Large: 316M).
If we have time, we may also try out a new face detection node written in Python. Get it here (Update: This, and a launch file are now included in icra_ros_tutorial. Just svn up there.)
You can get a bag file with faces here (119M)
12:30 -- 14:30 : Lunch (on your own)
14:30 -- 15:30 : Navigation, Eitan Marder-Eppstein
Learn about the ROS navigation stack, which can safely drive the robot's base to a goal location, avoiding obstacles.
15:30 -- 16:30 : Arm control and grasping, Melonee Wise
Learn how to control the PR2's arms, using inverse kinematics to move the gripper to an object and pick it up.
16:30 -- 17:30 : Extra time
- Extend your work and experiment with ROS and the PR2.
Gary Bradski, Willow Garage
Ken Conley, Willow Garage
Brian Gerkey, Willow Garage
Eitan Marder-Eppstein, Willow Garage
Morgan Quigley, Stanford University
- Melonee Wise, Willow Garage
Will it be recorded?
Most likely, no. The material we have designed is very hands-on with very little lecture. We expect that the bulk of the session will involve hands-on time with a robot.