Skip to content

The Robot Operating System

tsirif edited this page Oct 6, 2014 · 3 revisions

ROS Topics

###1. The Robot Operating System

In this part we will get to know ROS. ROS is a software library which gives robotic developers the API to connect together independent robotic functions and also a rich framework of utilities for developers to use. In a few words, it is a middleware that wraps all robotic software together.
Learn about what ROS is at this link: http://www.ros.org/about-ros/

Few words about ROS

Its most basic attribute is the creation of object, called Node, as a representation of the process that is being executed. Nodes are used to create their own interface, thus defining intraprocess communication and the node's role in the robotic system. A node's interface is exposed by creating and specifying objects that implement a general rule of communication between nodes. The general ways of node communication are: messages, actions, services. Generally, when a communication object in a node is invoked in order to send some information to a Τopic, an event is triggered at another node leading to fetching that information from the topic and reacting accordingly.

The second thing you should notice about ROS is that includes its own building and file system. Along with the definition of a ROS package or meta-package, ROS extends CMake scripting language and wraps some ROS-specific building actions to it. The result is the catkin building system. Notice that catkin is not the only building system that ROS uses. There is another one called rosbuild, but currently Pandora uses catkin!

Finally, ROS is an open source project with a large active contributing community that constantly writes software which solves common problems in ROS usage and robotics. For this reason, there exist many ROS packages and libraries that we can utilize accordingly for our convenience. Being open source and outgoing is the reason why robotics is blooming during the last years! Following this logic, we should actively join the community and be up-to-date continuously. You can follow these sites and join ROS-users too!

http://ros-users.122217.n3.nabble.com/
http://www.ros.org/news/
http://planet.ros.org/
http://www.willowgarage.com/news

An example of a user contribution that Pandora regularly uses is dynamic reconfiguration on nodes.

This link contains good reference of all ROS concepts.

Currently Pandora uses ROS Hydro Medusa but soon we will migrate to the recent ROS Indigo Igloo. This will be quite a nasty procedure, because Hydro is on Ubuntu Precise (and not on Trusty) and Indigo is on Ubuntu Trusty (and not on Precise) :(. Install Hydro for now. People who are new to ROS do not have to worry about the changes because the general way things work do not change usually across distributions. The are some subtle changes though: http://wiki.ros.org/indigo/Migration. Closing the paragraph of ROS distributions, i will note that a new operating system is on the making: ROS 2.

Learning ROS

Learning how to use ROS API is necessary for both software-oriented and hardware-oriented members. This is because it is the way that each member's contribution to the project connects to each other. So, mastering ROS at some point is a top priority. Follow the link for the tutorials, below:
http://wiki.ros.org/ROS/StartGuide
http://wiki.ros.org/ROS/Tutorials

Useful ROS tools

Next chapter: Testing in ROS

Clone this wiki locally