Software

Capable, Modular, Extensible, Open and Open Source

ROS - Robot Open Source

ROS, the name of our software platform means two things: Robot Operating System, a loose analogy to a computer operating system and Robot Open Source. All of the software that we are developing at WIllow Garage is released under the BSD license meaning that is completely open source and free for others to use, change and commercialize on.

ROS - Robot Operating System

ROS is our software platform for mobile manipulation robotics. Here are the basic ROS components:

  • ROScore

    The communications framework provides the functional software nodes with a common method of talking to each other across the onboard and off board computers (OS and language independent), making it easy to pass data, results of analyses and commands from anywhere to anywhere in the system.

  • Visualization and Development Nodes

    Development tools for logging and playback, diagnostics, and data flow, program structure, robot state visualization.

  • PR2 Interface Node

    The PR2 interface node is a layers controls API for making PR2 go. The highest level is designed for non-controls to be able to take advantage of the 32 degree of freedom, kinematically redundant, force controlled robot through a simple intuitive interface. For controls researchers and developers the layered architecture enabled the control system to be peeled back and improved, refined or rebuilt as low as the basic hardware interface.

  • Sensor Driver Nodes

    Calibrated interfaces for talking to all of the sensors on PR2.

  • PR2 Simulator Nodes

    Tuned PR2 hardware and sensor simulator.

  • System Calibration Node

    Intra-sensor calibration integrated with mechanical system calibration for sensor to gripper tip closed loop calibration.

  • OpenCV Vision Nodes

    OpenCV is now supported by Willow Garage and is being actively refined and developed for mobile manipulation applications.

  • Additional Libraries

    Additional algorithms are being ported to ROS for planar mapping, localization and navigation, object recognition, arm path planning in the presence of obstacles and grasp planning.

Sourceforge Repositories

Focus on Our Community

We are all about making a platform that is going to save developers and researches real time. Many people on our team have been in robotics for a long time and we are making the ultimate platform that we wish we had all along.

Our Mantra

The success of the platform as an open source project hinges on its adoption by researchers and developers in the field. To that end we have a three part development mantra.

  • Technical Excellence: provide well engineered solutions to the practical day-to-day development challenges that are

  • Flexible: enable you to take the code base in directions we are not anticipating and can correct mistakes we may have made.

  • Save Real Time: Integrate enough state of the art functionality that we will save your a lot of time and make you more productive.

Background

The goal is to implement the communications framework and a basic set of functional modules for which the technology is already well developed. We hope the result will be an integrated development environment for personal robotics that the open source robotics community can grow.

Other platforms in robotics have spawned open-source communities, including the CARMEN toolkit for mapping, the openCV toolkit for vision and the Player-Stage system for planar mobile robots. We see this platform as the beginning of an evolution toward software capable of robustly doing autonomous tasks for humans.

Open to Developers at Every Level

A flexible architecture is very important for all of us in the robotics community as we push the technology toward applications. Picking approaches that will remain flexible in the future and creating implementations that will support future work well, takes significant planning and commitment. We see this system wide need for flexibility being driven by the need keep you as a member of the community flexible while working at any of these levels:

  • Module level: If you are working on the technology behind a specific module you will be able to improve or replace that module while leveraging the turnkey functionality represented in the other modules.

  • Task level: The architecture challenges of combining modules to achieve higher level functionality can now be tackled for the first time, since multiple functional modules in different domains are available on an integrated system.

  • Application level: At the highest level, you can use the functional modules and build the logic to combine them for specific applications.