August 2009 Archives

driver_common.png joystick_drivers.png imu_drivers.png

Today we are releasing ROS Stacks representing many of the drivers we are supporting, as well as our common driver and diagnostics infrastructure. These drivers are being released with the 0.1 designation as we are currently performing user testing on them to make sure that they are easy-to-use and provide proper diagnostics information.

  • diagnostics: diagnostics provides a common infrastructure for reporting, aggregating, and analyzing diagnostic information from hardware and other sources.
  • driver_common: driver_common provides a common driver infrastructure that supports driver diagnostics and reconfiguration.
  • imu_drivers: 3dmgx2 IMU driver (based on the driver in Player).
  • joystick_drivers: joystick_drivers contains drivers for generic linux joysticks, the Playstation 3 SIXAXIS joystick and for 3Dconnection 3D input devices.
  • laser_drivers: laser_drivers contains Hokuyo drivers (SCIP2.0-compliant, 04LX) as well as a ROS wrapper for sicktoolbox (SICK LIDAR devices).
  • sound_drivers: driver for playing sounds over ROS Topics.


common_msgs 0.9.1

| No Comments | No TrackBacks

As part of our release of common and geometry, common_msgs has been updated to 0.9.1. This update contains actionlib_msgs, which are part of the actionlib API in common.


common.png geometry.png navigation.png

Today we are releasing our foundation ROS Stacks: Common and Geometry. We are also releasing initial versions of Navigation and Slam Gmapping, which are a critical pieces of functionality that have been heavily tested over the past year. Most recently, the Navigation Stack passed the Milestone 2 requirement of 26.2 miles of error-free indoor navigation. All of these stacks are being released with the 0.1 designation: we intend to have stable releases of each of these soon, but due to their central role in any robot software system, they are undergoing heavy user testing and their documentation is being improved.

We are also working on a new install system for ROS to handle automated installation of these stacks.

Summary of stacks:

  • common: Common contains ROS Packages that have common use across a wide variety of functional areas, including C++ plugins, a robot action API, and wrappers for bfl, yaml-cpp and tinyxml.
  • geometry: Geometry's most importantly provides the tf package, which defines how ROS nodes communicate about coordinate frames of the robot. Geometry also contains ROS wrappers for KDL, Eigen, and Bullet.
  • slam_gmapping: slam_gmapping contains the gmapping package, which is a ROS wrapper around GMapping from the OpenSLAM project. Gmapping enables you to use laser range data to construct maps.
  • navigation: The Navigation Stack provides autonomous navigation capabilities to differential drive and holonomic wheeled robots. It has been heavily tested on the PR2 robot within an indoor office environment.

As you can see from the descriptions above, these stacks incorporate code from many other open source projects, including Orocos, Eigen, Bullet, OpenSLAM, Poco, yaml-cpp, Player, and tinyxml. We are grateful to these projects for providing useful libraries to build upon.


Collision Detecting and Arm Planning

| No Comments | No TrackBacks

crossposted from

Ioan Sucan is headed back to Rice University after his third stay here at Willow Garage. Ioan is a motion planning researcher and is the author of Open Motion Planning Library (OMPL), a library of sampling-based motion planning algorithms. These algorithms are important for the PR2 because they enable the arm to grasp and manipulate objects, while simultaneously avoiding collisions with people and other still or moving objects.

This past winter, Ioan and Radu Rusu used OMPL to do dynamic collision avoidance. This summer, Ioan was able to make many improvements to OMPL so that the PR2 can grasp and manipulate objects in cluttered indoor environments. In the video, you can see how the PR2 is able to grasp objects while moving its arm through complex obstacle courses. Data from the tilting laser scanner is used to construct and update a 3D-representation of the environment, allowing the arm to avoid even moving obstacles.

Ioan also improved the robot_self_filter and the collision_map. When the PR2's arm moves in front of the sensors, two problems occur: the arm looks like an obstacle in the environment, and the arm blocks the robot's view of the environment behind the arm. The robot_self_filter, in combination with the collision_map, allows the PR2 to disregard its arm as an obstacle, and "remember" objects behind the arm.

Here are the slides from Ioan's end-of-summer presentation describing his work on OMPL and other projects.

Ioan Sucan: Motion Planning for the PR2 Arm on Scribd (Download PDF from

Humans Helping Robots See

| No Comments | No TrackBacks

crossposted from

Alex Sorokin of University of Illinois, Urbana-Champaign has been hacking on many projects this summer, extending work that he started at Willow Garage last year. Alex is the author of the CV Web Annotation Toolkit, which is an open source tool that helps researchers in computer perception collect and classify data, with the help of workers on Amazon's Mechanical Turk. If you're a researcher collecting a data set, you can use this toolkit to submit images to Mechanical Turk and pay people to label them for you. For example, you can instruct Mechanical Turk users to draw boxes around all of the people in an image, or draw polygons around people's hands. These manually-labeled datasets allow researchers to test their own algorithms and compare them against what a person sees. If you're worried about the quality of results that random Turkers might give you, you can easily let an additional set of users grade the results that you get back, and increase the likelihood of accurate responses.

In addition to helping our researchers collect data sets, this toolkit is also very useful for our robots. For just a couple of dollars, you can easily submit images to Mechanical Turk and have users teach the robot where your refrigerator and dishwasher are, what your cups look like, or where your power outlets are. We're a long way from having robots that can identify objects in an environment as well as humans can, but toolkits like Alex's help us to bridge that gap by allowing humans to lend their abilities to robots.

In addition to his work with Mechanical Turk, Alex came up with many great extensions to ROS. These include bagserver, which enables random-access into ROS bag files, and bag_image_view, which lets you visually scan through images in a bag file and play them back.

Below is Alex's end-of-summer presentation, which discusses his various contributions in greater detail.

Alex Sorokin: CV/Mechanical Turk Presentation (Download PDF from

ROS 0.7.3 Released

| No Comments | No TrackBacks

ROS 0.7.3 has been released! This is a patch release with miscellaneous bug fixes. For a full description see below.

You can download it from:

You can also grab it from Subversion using the ROS 0.7.3 tag:

svn co ros-0.7.3

The changes below have been merged to the stable tag on Subversion. If
you're working from stable, please do an 'svn up'. In the event of
emergency (i.e. ROS 0.7.3 doesn't work for you), please contact us, then grab the previous version using the ros-0.7.2 tag:

svn co ros-0.7.2

-- your friendly neighborhood ROS team.


common_msgs simulator_stage visualization_common

Reposting from, 2009/08/13

It took over a year of development and our first Milestone to develop and release the first stable version of ROS, our robot software framework. Now, six months later and with another Milestone behind us, we're ready to start committing to same level of stability with the software we're building on top of ROS. Today we are launching the first of our ROS "Stack" releases: common_msgs 0.9 (download/SVN tag), simulator_stage 0.1 (download/SVN tag), and visualization_common 0.9 (download/SVN tag). In the coming weeks there will be many more releases, including our navigation software, drivers, controller and geometry libraries. This is all part of our Milestone 3 efforts, which focus on the ROS and PR2 User Experience.

Stacks can be thought of as libraries for ROS. Some will be specific to our PR2 robot, but many are already in use on other robot hardware as diverse as the iRobot Create, Kawada HRP2-V, and Videre Erratic. This first set of releases contains some of the most general libraries that we are developing. common_msgs defines many basic ROS message types that are useful in robotics-related software. visualization_common defines ROS message types for use in our visualization tools as well as providing wrappers around the popular open-source 3D engine, Ogre. simulator_stage allows you to use the popular open-source 2D simulator, Stage, with ROS.

The release of these stacks begins a shift in how we expect ourselves and others to develop on top of ROS. ROS started off as experimental software in how a robot software framework could take advantage of networked computer resources. The various ROS stacks started off as research, with a far-off goal of an integrated software platform on a brand new robot platform. Now both the software and hardware have taken shape: the lab to build the final PR2s is nearly complete and we are starting the first of our many stack releases. As we've experienced with our own prototypes, it's hard to develop against a moving target, but now we are transitioning to stable platforms. These stable platforms will help accelerate development and make it easier to share and exchange code.

For these initial releases, we will be using two version number indicators: 0.1 and 0.9. We are using 0.9 for stacks that are stable. They will be released as 1.0 when they have more complete documentation. We are using 0.1 for stacks that are still undergoing review. While we believe that they are mostly stable, we are also conducting user testing here at Willow Garage to verify that this is true. These, too, will receive 1.0 designation once our user testing is complete and feedback is integrated into our APIs and documentation.

If you were an early adopter of ROS, you might be asking, "so what do I do with these releases?" The answer for most is: if you are using code from a stack that has hit 0.9, now is a good time to migrate any out-of-date code. Otherwise, we recommend waiting until we have made some of our higher-level stack releases (e.g. navigation stack) before changing your installation process to use these releases instead. We will also be releasing tools soon to help you manage and install stack-based releases.

-- your friendly neighborhood ROS and ROS Stacks team

Welcome to is still coming online as I write this. We hope that this site will become an online hub for the ROS community. Much of the content is driven by you, our users, whether it be the content on the Wiki or the software that you're writing and releasing with ROS.

Things are a bit sparse right now as we get all of our systems in place, but here's a tour of what you see right now:

  • Documentation: Current ROS users will probably recognize the Documentation Wiki -- we've moved the old wiki to this site so that it would have an easier-to-remember URL. We also removed the non-ROS content and purged much of the out-of-date content. In the coming weeks we will be honing and refining the Wiki here to provide you better and easier-to-find information.
  • Browse Software: You can use this experimental interface to search for ROS software. We are currently indexing all of the various ROS open source repositories on the Web.
  • News: As we release more ROS Stacks, expect to find the release announcements here.

ROS 0.7.2 Released

| No Comments | No TrackBacks

ROSROS 0.7.2 has been released (SVN tag)! This is a patch release that fixes various issues in preparation for our upcoming ROS Stack releases. We have also been focusing on improving error messages and performance based on ongoing user testing. The detailed change list is below.

-- Your friendly neighborhood ROS team


  • Fixed subscription callbacks to not starve other callbacks in a certain case.
  • Doxygen fixes for deprecated functions that were not pointing at the correct new locations.
  • Fixed `_param:=value` on anonymous nodes when `__name:=` was specified
  • Fixed race condition that would cause a "call to empty boost::function" exception


  • fixed bug with Time objects jumping to zero with simulated time on publish in certain cases
  • bug fix to numpy_msg
  • suppress error message stack trace for common case of connection refused


  • Fixed bug where checkbag incorrectly reports that a bag is up to date if it has moved without md5sum changing
  • Fixed bug where messages including messages from other packages where not populating migration rules fully
  • Stop displaying redundantly auto-generated rules boundary conditions where multiple scenarios lead to the same parallel generation
  • Programmatic use of checkbag/fixbag within a single script now cache initial load of message migrator. This gives huge savings when checking/fixing large numbers bags in batch, such as during testing.
  • Added "" script which operates on multiple bags more easily and efficiently


  • fixed major issues with generate_dynamic and Header messages
  • better error message in generate_dynamic
  • better cleanup of dynamically generated .py / .pyc files in roslib
  • Fixed manifest for rosrecord so external users can use librosrecorder now that it's been broken out from just a header.

roslib: fixed cache use of ROS_PACKAGE_PATH when it is not set
rostopic: bug fix to bw command and better error reporting
roswtf: numerous updates, including better offline behavior, and fix to duplicate node rule
topic_tools: export MuxSelect header
rosmsg: bug fix to indentation of constants with rosmsg show
roslaunch-deps: better handling of bad xml
rostest: suppress output from master during tests

  • Fixed assertion on page up/arrow up when the number of messages in the list control is 0
  • Fixed high CPU utilization when no new messages have arrived

rosdep: festival, libusb (r5530)
rosstack: bug fixes so that it works again, and handles unversioned stack dependencies. uses ROS_ROOT and ROS_PACKAGE_PATH if ROS_STACK_PATH is not defined. Expose librosstack via package manifest and moving rosstack.h into the package include directory

University of Freiburg researcher Jürgen Sturm is just finishing his second internship here at Willow Garage. In addition to helping out with our egg-breaking efforts, he's been using the stereo cameras of PR2 to detect planar objects like doors, drawers, books, and boxes. More importantly, he has been tracking the movement of these objects to learn articulation models, i.e. how these objects move. Does the door open to the left or the right? Does the drawer slide in or out? Where will the handle of the drawer be when it is fully open? This is the sort of information that is critical for enabling robots to operate in our own environments.

We've posted a video of Jürgen discussing his findings as well as slides from a presentation that he gave at Willow Garage. You can also download his code from the planar_objects ROS package.

Planar Objects and Articulation Models on Scribd (Download PDF from

Find this blog and more at

Please submit content to be reviewed by emailing

About this Archive

This page is an archive of entries from August 2009 listed from newest to oldest.

July 2009 is the previous archive.

September 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.