Willow Garage Blog

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

May 7, 2009


If you'll be at the International Conference on Robotics and Automation (ICRA) in Kobe, Japan this year, don't throw away all those papers that come in your registration packet.  Tucked inside will be a miniature cardboard PR2 - a glamour shot of the alpha robot named Eowin.  Willow Garage is a proud sponsor of ICRA, and will have a booth where we'll be showing recent video clips of the robots in action, and talking to researchers about what's next.

We'll also be hosting an OpenCV and ROS users' meeting at the University of Tokyo on May 19th, after the conference.  Stop by our ICRA booth for details.

April 28, 2009

Until recently, our PR2 robots have seen people as mere obstacles in the environment. From a robotics perspective, preventing collisions with "obstacles" is a matter of setting small buffer zones around them to avoid.  Of course, your personal space is quite different from the safe buffer zone around a table.  Invading personal spaces is not only rude, but can also be unsafe as a person might move unpredictably. As mobile manipulators mature into personal robots operating in your environments, they must respect social norms to gain your acceptance and trust.

To move the PR2 toward its goal of becoming a personal robot, we are building people-specific sensory systems, detection algorithms, and interactive behaviors. As a start to our human-robot interaction research (HRI) at Willow Garage, we ran a controlled experiment on the proxemics (i.e., personal space) behaviors between people and PR2s. We explored several situations: (1) people approaching a PR2, (2) people being approached by an autonomously moving PR2, and (3) people being approached by a teleoperatated PR2.  From this study, we found substantially different influences on personal space than those seen in previous HRI work including the person's agreeableness and pet ownership experience.  Along with other findings about pet ownership and HRI noted by our friends at Carnegie Mellon's Human-Computer Interaction Institute, these latest findings have motivated our current research on the relationship between human-pet relationships and human-robot interactions.

With all of this research and development going on, we have lots of human-robot interaction designs to explore and evaluate. Of course, running these studies with only roboticists isn't acceptable when we really want to understand how people who are not necessarily familiar with robotics will interact with personal robots. If you live or work nearby (Menlo Park, CA) and are interested in visiting us to participate in studies with our robots, just let us know <takayama@willowgarage.com>. If you are far away, we might be running some studies online so drop us a line if you'd be interested in trying those out.

 -- Leila Takayama & Caroline Pantofaru