ROS [1]} is a very popular software development framework in the robotic community. Programs written in ROS are
nodes which communicate through an asynchronous publish/subscribe mechanism over topics. One node can advertise a topic
(e.g. the position of the robot) to contain some data, whose format is defined in a msg file (e.g. three floats: x, y, theta) , and
then publish this data at will. Other nodes can subscribe to this topic and specify a callback which will be called when a new topic
value (e.g. a new position of the robot) is published. Another mechanism, service, is also provided to make a synchronous remote process call
(RPC) to a server advertising the services (with the type of data passed as arguments and returned by the call defined in a srv
file). This can be used for example to have a server node to provide a locate service which given the x, y (e.g. 10.3, 4.0) position of the robot, returns
the name of the room in which it is (e.g. "kitchen").
