Other Robot Frameworks

2.7. Other Robot Frameworks#

ROS is similar in some respects to ‘robot frameworks,’ such as Orocos, Microsoft Robotics Studio. CARMEN, Orca, MOOS, YARP, and Player.

So, “How is ROS different from X?” It’s hard to answer for every X, but first, if you choose to use X, we hope that you can still use many of the libraries distributed with ROS. As for more specifics, this e-mail by Brian Gerkey (of both Player and ROS) to the ros-users mailing list regarding the differences between ROS and Player, including OpenCV integration, provides some comparisons:

The answer, as usual, depends. In particular, it depends on what you’re trying to do. Player is a great fit for simple, non-articulated mobile platforms. It was designed to provide easy access to sensors and motors on laser-equipped Pioneers.

ROS, on the other hand, is designed around complex mobile manipulation platforms, with actuated sensing (tilting lasers, pan/tilt sensor heads, sensors attached to arms). As compared to Player, ROS makes it easier to take advantage of a distributed computing environment, and I would say that the higher-level side of things is more developed in ROS than in Player. Whereas Player offers more hardware drivers, ROS offers more implementations of algorithms.

I think that’s it’s fair to say that ROS is more powerful and flexible than Player, but, as usual, greater power and flexibility come at the cost of greater complexity. While we’re working hard to make ROS easy to use, there is still a significant learning curve. Of course, familiarly with Player should help in learning to use ROS, as many of the underlying concepts are similar.

As to your specific question regarding OpenCV integration, I think that you’ll find quite a bit more ROS code than Player code that uses OpenCV in interesting ways. In the future, you should expect to see even more, as there’s significant overlap between the ROS and OpenCV development teams.

I should note that ROS leverages a lot of code from the Player project. There are ROS nodes that reuse code from many Player drivers, and both Stage and Gazebo are well-supported and widely used in the ROS community.