Skip to content
Alejandro Bordallo edited this page Feb 9, 2015 · 2 revisions

MULTIPLE ROS MASTERS

The Robot Operating System (ROS) is used to interconnect the different modules and hardware on this project. Through the creations of nodes, publishers and subscribers, the information is distributed and sent as messages between services. This also serves for synchronising independent processes through thread timing and ensure data is transferred following the computing requirements (i.e. Real Time, asynchronous).

For ensuring interoperability and portability of all modules produced, ROS publishers and subscribers are to be created from the point of origin of the data. As an example, if a robot with sensors is being controlled by a remote program, the remote program will need to listen to the robot sensors, and the robot hardware should listen to the output control commands of the remote software. In this case, the remote controller is to include the code necessary to create the publisher of its command signals, and subscribe to the sensor stream provided by the robot platform. Consequently, the module on the robot thus needs to create a publisher for the sensor array and subscribe to the controller stream.

This framework allows modules to work together as long as the stream formatting is consistent. Data may be transmitted at different rates (e.g. Sensors stream at 20Hz and command signals at 2Hz) or even variable if the module is designed for that capability. Furthermore, interchangeability of code becomes possible as modules are only dependent on the subscribed data streams (e.g. As long as the robot platform receives commands in the same format from a publisher, it matters not what module is sending these commands).