Welcome To ROS Topics
Welcome To ROS Topics
R
obot operating system (ROS) is a free and open- ROS is available for commercial as well as noncommercial
source system that has grown out of a novel collabo- use. The software is licensed under BSD or Apache 2.0 licenses,
ration between industry and academia. This column and the system is designed to be able to include components
is designed to introduce you and help track this important written under various GNU licenses as well. Every package in
community effort. The latest information about ROS will ROS is clearly labeled with its licensing terms so that research-
always be available on the Web (http://ros.org). My goal is to ers and developers can immediately know which components
help you decide whether or not to download and try the sys- can be incorporated into their work.
tem. In future columns, I’ll write about the latest develop-
ments in ROS and its progress in the ROS community. What Is ROS?
ROS is a thin, message-based, tool-based system designed for
Why ROS? mobile manipulators. The system is composed of reusable libra-
ROS is an open source-software platform designed to support a ries that are designed to work independently. The libraries are
new generation of personal robots. Personal robots move around in wrapped with a thin message-passing layer that enables them to
a human environment and interact with the same objects people be used by and make use of other ROS nodes. Messages are
use. These robots are sometimes called service robots or mobile manip- passed peer to peer and are not based on a specific programming
ulators. Think of Rosie from The Jetsons, but without the attitude. language; nodes can be written in Cþþ, Python, C, LISP,
Robots in this class today include the PR2 from Willow Garage, Octave, or any other language for which someone has written a
the HRP2 from Kawada Industries, and a number of academic ROS wrapper. ROS is based on a Unix-like philosophy of build-
prototypes such as the STAIR robots from Stanford University, ing many small tools that are designed to work together (more
HERB from Intel/CMU, and El-E from Georgia Tech. on that in a bit). ROS grows out of a collaboration between
Personal robotics research builds on many other subfields of industry and academia and is a novel blend of professional soft-
robotics. Because these robots move around in the world, they ware development practices and the latest research results.
make use of the research results from mobile robotics for the past Software libraries and ROS nodes are organized into pack-
20 years, including SLAM and many navigation algorithms. ages, stacks, and ultimately Apps. Packages can contain any-
Robot perception (including much of computer vision) is thing: libraries, nodes, message definitions, or tools. Each
required to make sense of the world around the robot. Motion package should have enough functionality to be useful but not
planning is required to compute safe trajectories for the arms and so much as to make it heavyweight. Stacks collect sets of pack-
end effectors. To manipulate objects, grasp analysis and planning ages that together provide useful functionality. Examples of
are required, as well as reasoning about object properties (e.g., stacks are ros_core, which contains the basic infrastructure of
keep the cup upright or don’t squeeze the egg too hard). ROS, and navigation, which was used to make the PR2 auton-
This class of robots poses interesting software design chal- omously travel around an office building for 26.2 mi (a mara-
lenges. The breadth of expertise necessary to program a personal thon). The navigation stack has also been ported to other
robot is beyond the capacity of a single researcher, and it is there- platforms such as the HRP2 at the JSK laboratory in Tokyo.
fore necessary to simplify the integration of different software Applications are similar to stacks but package up an executable
libraries from different institutions. Perception and planning are robot program instead of just a library of reusable functionality.
computationally expensive, so supporting many processors is a A ROS system is a computation graph consisting of a set of
requirement. Robotics is a challenging systems integration prob- nodes communicating with one another over edges. The com-
lem and requires a rich set of tools to successfully manage the munication consists of messages that are organized by topics.
complexity. Personal robotics software is necessarily complex, so ROS contains tools for inspecting the graph and monitoring
the software system requires modern software engineering tech- what is being said by node or by topic. One of the basic tools
niques such as continuous testing and integration to be success- of ROS, rostopic, allows a command-line user to see what is
ful. Finally, since robots operate in the real world, the system being said about a topic, how frequently messages are being
must support efficient communication between its components published, etc. That’s where this column gets its name.
and be able to support real-time components. ROS provides an In addition to rostopic, ROS contains many useful tools.
approach for each of these challenges. There is a set of tools for finding or creating packages, resolving
dependencies, and compiling them. There are tools for visual-
Digital Object Identifier 10.1109/MRA.2010.935808 izing the running system and graphing the output of nodes in
ROS Community
The ROS community began with a core group of developers at
Stanford and Willow Garage. Morgan Quigley, Brian Gerkey,
Ken Conley, and Eric Berger had all worked previously on soft-
ware systems for distributed systems or robotics (or both). The
original ROS core team included Jeremy Leibs, Tully Foote,
Josh Faust, and Rob Wheeler. By now, the ROS community
includes almost 40 software developers at Willow Garage,
numerous members of the academic robotics community at
dozens of institutions, and researchers at other companies,
notably, Intel and Bosch.