Willow Garage Blog

June 12, 2009


At Willow Garage we like robots, so much so that some of our employees spend their free time building even more robots. Willow Garage employees Curt Meyers, Melonee Wise and Derek King, along with Dallas Goecker, Michael Gregg, and Iibo Cao put together Counter Revolution, which is a robot you keep your distance from. Counter Revolution is a 217-lb robot of destruction, wielding counter-rotating blades of doom. In addition to competing in the recently relaunched Battlebots events, Counter Revolution is competing in the heavyweight class in this weekend's RoboGames at Fort Mason in San Francisco. We don't let them turn it on inside the office, so I'll be heading to the city to see what it can do.

RoboGames is a great yearly event. Come cheer them on and check out all the other robot action, both combat and non-combat.

Update: they won their match today! (Friday)

June 10, 2009

The science of robotics has suffered from the inability of researchers to replicate each other's results.  Replicating results begins by being able to run demonstrations in different laboratories, often on different hardware.  The JSK lab at the University of Tokyo and Willow Garage have recent had some success in this area.

In March, Professors Inaba, Okada and four students visited Willow Garage to create demos on PR2 robots combining their infrastructure with ROS.  At ICRA in May, Ken Conley from Willow Garage worked with the JSK team to bring ROS and those same demonstrations up on an HRP2-V robot from Kawada industries.  The HRP2-V combines the torso of an HRP2 walking humanoid with an omni-directional wheeled base, producing a platform that is similar in structure to the PR2, but with different sensor configuration, different kinematics, etc...

On both occasions, the combined team was able to complete their work in under a week, demonstrating that replicating results in robotics is possible at a relatively low cost.

June 10, 2009

Integrating ROS with other robot software frameworks, such as OpenRAVE, Player, and Euslisp, has been important to us as it allows developers to leverage the strengths of each. No framework can be the best at everything, so it's important to allow developers to choose the tools they need. This video shows the integration between the ROS and the Orocos Real Time Toolkit (RTT), which was done by Orocos developer Ruben Smits during a month-long visit to Willow Garage. Ruben became a vital member of our Milestone 2 team and still managed to have time to build this great, seamless integration.

While ROS has good support for distributing components over the network, RTT offers hard realtime communication between components. This demo combines the best of both worlds: the realtime low level control is handled by a set of RTT components that directly control the the PR2 robot hardware, but the communication between the controllers is visible to the whole ROS network.

The integration makes the RTT components appear as ROS components, without breaking the realtime communication between the RTT components. This allows RTT developers to use tools developed for ROS, such as rviz and rxplot, to visualize the communication between controllers.

-- Wim Meeusen

June 6, 2009

Radu Bogdan Rusu, Gary Bradski, Kurt Konolige, and Michael Beetz are organizing a workshop at IROS 2009 in St. Louis, MO, USA: Semantic Perception for Mobile Manipulation. The workshop will try to analyze the requirements of a perception system that is able to create useful semantic models for mobile manipulation, by bringing together researchers from the Computer Vision, 3D Mapping, and Mobile Manipulation and Grasping areas.

We invite the community to submit papers presenting their latest work on perception for mobile manipulation, including object recognition, perception for grasping, etc... We welcome preliminary results, particularly with compelling videos. Whether or not you submit a paper, you are invited to attend the workshop.

The submission deadline is 15th of July 2009; check the website for details.

See also other Willow Garage-affiliated workshops.

June 5, 2009


ROS is set up for distributed Open Source development.  The system is designed to be built from a federation of repositories, each potentially run by a different organization.  We've been happy to see three new ROS package repositories sprout up (besides those already hosted by Stanford, CMU, MIT, and TUM).

bosch-ros-pkg: Bosch has been extending our navigation stack to support frontier-based exploration and they have been contributing patches back to the personalrobots repository. Their wrapper for libgphoto2 has also been getting some use on the ros-users mailing list

gt-ros-pkg: Georgia Tech's Healthcare Robotics Lab has already contributed several packages and the Humanoid Robotics Lab and Socially Intelligent Machines Lab will be participating as well.

wu-ros-pkg: Washington University is also setting up a ROS package repository (which the many Wash-U alumni at Willow Garage are happy to see). Bill Smart's presentation, "Is a Common Middleware for Robotics Possible?" at IROS 2007 helped guide the philosophy and goals of ROS in its earliest stages, especially the focus on making reusable libraries.

June 3, 2009

We have put together a video of our Milestone 2 run, which we completed this past Monday, June 1, 2009. This particular run had our PR2 alpha robot navigate through eight doors, and plug its power cord into nine outlets. In this video, you can see the various challenges our robot faced, such as a crowded office environment and the abrupt appearance of a human obstacle. We nearly sabotaged the run early on. Folks around the office were eager to track the progress of the robot, so many people ran their own monitoring programs on the PR2. This caused an increase in CPU load, starving the navigation software. Nonetheless, the robot was able to continue with the run, albeit more slowly and cautiously.

As you can see from the video, perhaps the element most critical to our success in the milestone was PR2's robust failure handling, which was managed by TREX. The run was not perfect, but PR2's ability to detect failure and try again allowed the robot to persist until it successfully completed its task. During the run, two attempts at picking up its plug failed, but the TREX executive repositioned the robot to try again, with success. Similarly, the robot had trouble detecting a partially open door, but with a couple of retries, it was able to detect and open the door.

As the run took nearly one hour, we have sped up some of the footage. For Milestone 2, our tester designated ten different outlets that the robot was required to plug into, although only nine of the selected outlets were physically reachable. The robot was expected to successfully detect that one of its ten goal outlets was behind a locked door, abort that effort, and move on to its next outlet. The rest of the doors were placed in various states of closed, partially opened, and fully open.

June 1, 2009

Milestone 2

Today at 6pm, one of our PR2 alpha robots successfully completed Milestone 2 by performing a circuit of 10 plugin goals in just under an hour. It had previously completed the first part of the milestone, which was successful navigation around the office for 26.2 miles (a marathon).The first accomplishment required four days, with about 32 hours of actual robot navigation time.

For this second goal, there were doors that were closed, partially open, open and one that was locked (successfully detected).  This was our second attempt, after a first attempt on Friday failed at the ninth plug. The team here worked hard over the weekend and, with the latest failure recovery code, it passed with flying colors.

June 1, 2009

ROSROS 0.5.1 has been released, which is a minor update to our ROS 0.5 release.   This release includes enhancements to roscpp, such as timer callbacks, that build upon the recently releaased Node Handle API. There have also been changes to roslaunch that group together log files from the same launch as well as changes to rospy to prepare for upcoming changes to "bag" files. Release notes are below, or you can view the full list of changes.

Change List

  • roslaunch: changed location of log files so that logs from the same launch are collected together in the same directory. This makes it easier to find results of a run and prevents log filename recycling.
  • roscpp
    • Timer callbacks allow you to receive a callback at a specified rate. See the "timers" tutorial in the roscpp_tutorials package.
    • Transport hints let you specify TCP_NODELAY per subscription.
    • All nodes now advertise "~get_loggers" and "~set_logger_level" services, which can be called through the rosservice tool.
    • Publish calls should no longer take a large amount of time (spikes up to 100ms were seen).
    • Subscriptions created through the NodeHandle API can no longer block the ROS thread. Queue size should now behave properly.
    • Added Publisher::getNumSubscribers() call
  • rospy
    • refactored much of the genmsg_py code to add dynamic message generators, fix handling of uint8[] types, fix handling of string constants, and add more tests.
    • bug fix to rospy.myargv() handling
    • get_time/get_rostime now throw an exception if init_node has not been called

  • rxtools: New rxloggerlevel tool which lets you change the logger levels of roscpp nodes while they are running
  • rostopic: rostopic hz now prints "no new messages" if no new messages have been received since last print
  • rosmsg: rosmsg show now properly includes constants
  • rospack
    • profile output marks directories that contain no manifest
    • recover from bad cache location of a package
  • rosbuild: recover from bad cache location of rospack
  • rosrecord: rosplay now complains clearly and exits if asked to play a non-existent .bag file
May 11, 2009

In December, we completed our first milestone, where a PR2 alpha robot without arms autonomously navigated throughout Willow Garage. Our next milestone takes us beyond controlling the robot base to tasks that require the arms, To successfully complete our second milestone, PR2 needs to open doors to enter rooms, and plug itself into an outlet when the battery level gets too low. This requires a fully integrated system, where both the base and the arms work together.

This video shows how PR2''s arms are designed to interact with the environment: both arm are fully compliant and force controlled. When opening a door or a refrigerator, the robot 'feels' the door motion, and follows this motion without exerting high forces on the door handle.  Although the robot tasks in this  video are teleoperated, we are making good progress toward fully autonomous door opening (preview) and autonomous plugging in.  Stay tuned for details.

May 7, 2009

ROS 0.5

Time to celebrate! ROS 0.5 is here! You can download it from ros.sourceforge.net.

We've been working furiously on ROS to incorporate new features and APIs to make ROS easier to use and more robust. The biggest change is the introduction of the roscpp "Node Handle" API, which is based on months of feedback from the ROS community and our own internal testing. There's also a new, experimental roswtf tool, which we hope to evolve into a powerful system-wide diagnosis tool. To find out more about this release, please read the list of changes.

This release also marks the start of our 'stack' releases. In the coming weeks, look for our first release of ROS Stacks, which are collections of ROS packages that are now mature enough for release to a wider audience. One of the first stacks that we will release will be the Navigation stack, which was heavily tested and refined during Milestone 1.