[Documentation] [TitleIndex] [WordIndex

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

Organizers' page (private)


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:

Installation Instructions


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.

PR2 mobile manipulation robot

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.


rviz screenshot


(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.

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.



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.

2017-09-23 12:17