-
Notifications
You must be signed in to change notification settings - Fork 0
The Robot Operating System
###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
-
rviz: is a ROS package developed to visualize information contained in ROS Topics. So, it is what we use to view camera images, maps, octomaps, point clouds, robot models, tfs, navigation paths, costmaps, points of interest and basically everything.
http://wiki.ros.org/rviz -
rqt: is a Qt-based framework for GUI development for ROS. Pandora's GUI is made on rqt!
http://wiki.ros.org/rqt -
dynamic reconfigure: i mentioned this earlier before. We use this to change some constant parameters on the robot while experimenting or on the software while we are simulating.
http://wiki.ros.org/dynamic_reconfigure
http://wiki.ros.org/dynamic_reconfigure/Tutorials -
rqt_ez_publisher: well, this is something neat and new. We will probably modify and use this software to create an integration and functional testing infrastructure for creating easily mock nodes.
http://wiki.ros.org/rqt_ez_publisher