ROS: The Linux for Robotics
Although ROS stands for “Robot Operating System”, it is not an operating system. At least not as intended when talking about Linux. ROS is actually a set of software libraries, tools, and conventions (including protocols) made to ease the development of robotic applications. Originally developed by Willow Garage for their PR2 robot, ROS was put under a free software license (BSD) from the first public release back to 2009. This, decision for sure contributed to ROS’ success by attracting many hobbyists, researchers and companies. The community has now its conference RosCon that will be held 19-20 May 2012 in St. Paul, Minnesota, immediately after ICRA.
One of the powerful features of ROS is that it enables interoperability between software and hardware developed by different people. For instance, you can develop a package that performs SLAM (Simultaneous Localization and Mapping) and use it with any laser range-finder as long as both conform to ROS. This generalizes to an arbitrary set of software and hardware. Any robot part and any software developed as ROS package can be integrated in a ROS setting.
At run-time, each package sets up one or more nodes in a peer-to-peer network. Nodes are processes that perform computations or drive some hardware device (sensor, actuator). Each ROS installation has a master, which is a node that provides name registration and lookup. Basically, the ROS master allows nodes discover each other so they can interact and exchange data.
Nodes have two kinds communication channels: services and topics. Services are 1 to 1 communications channels. A node offering a service accepts requests that match the service name, and sends back replies to the requester. Topics on the other hand can be viewed pretty much like discussion forums: all nodes that subscribed to a topic receive all messages published by other nodes in the given topic.
Bags are yet another interesting feature of ROS. They allow saving and playing back ROS messages. This can be very helpful when debugging by storing for example some sensor data, that can be difficult to collect.
There is a lot more to say about ROS. If you wish to learn more, we recommand you reading our post that explains main concepts using a concrete example. You even run the examples using the VirtualBox virtual machine we provide. And, if you want to install it on your own PC, we provide you with a step by step tutorial to easily install ROS.
There are also plenty of videos that you might watch. We selected the one below (Video 1) from the Dallas Personal Robotics Group (DPRG). Since it’s more than 1 hour long, we provide an outline so you can jump to sections that might interest you.
00:11 What does ROS do?
00:17 ROS Nodes and their interactions
00:21 Tools (Command line, graphical)
00:31 Collection of videos showcasing ROS usage and tools (links embedded into the video)
00:52 Important websites (links embedded into the video)
01:00 ROS with Arduino: Description of the setting used for demo
01:03 Demo of a basic ROS service that sends a message to a ROS topic
01:06 Demo of a ROS service to connect the PC to the Arduino board through the network
01:11 Demo of rosbag that records data to allow replays for purpose of analysis and debug