A lot of people ask, "How is ROS different from X?" where X is another robotics software platform. For us, ROS was never about creating a platform with the most features, though we knew that the PR2 robot would drive many requirements. Instead, ROS is about creating a platform that would support sharing and collaboration. This may seem like an odd goal for a software framework, especially as it means that we want our code to be useful with or without ROS, but we think that one of the catalysts for robotics will be broad libraries of robotics drivers and algorithms that are freely available and easily integrated into any framework.
We're excited to see so many public ROS package repositories have already emerged. Here's the list that we know of:
personalrobots.sourceforge.net:(see update) focused on Personal Robotics applications. Willow Garage is helping to maintain this repository with contributions from many others (Stanford, UPenn, TUM, CMU, MIT, etc...).
- sail-ros-pkg.sourceforge.net: started by ROS lead developer Morgan Quigley to house code from the Stanford AI Lab (SAIL) code.
- cmu-ros-pkg.sourceforge.net: maintained by Rosen Diankov of CMU, who has also integrated OpenRAVE with ROS.
- tum-ros-pkg.sourceforge.net: contains several drivers released by Radu Rusu of TUM, who has also been busy with his many contributions to the personalrobots repository (e.g. point_cloud_mapping).
- code.google.com/p/lis-ros-pkg: contains an interface for the Barrett WAM and Hand, written by Kaijen Hsiao of MIT's Learning and Intelligent Systems Group
An ecosystem of federated package repositories is as important to ROS as the ROS node is for powering the distributed system of processes. Just as the ROS node is the unit of a ROS runtime, the ROS package is the unit of code sharing and the ROS package repository is the unit of collaboration. Each provides the opportunity for independent decisions about development and implementation, but all can be brought together with ROS infrastructure tools.
One of the tools we've written to support these federated repositories is roslocate. roslocate solves the problem of "where is package X?" For example, you can type "svn co `roslocate svn imagesift`" to quickly checkout the source code for the "imagesift" package from cmu-ros-pkg. As more ROS repositories emerge, we will continue to refine our tools so that multiple repositories can easily be an integral component of ROS development.
If you have any public repositories of your own that you'd like to share, drop us a note on ros-users and we'll add it to our list.