4. Robot OS (ROS)

Robot OS (ROS) is an open source set of C++ and Python libraries which facilitate the delivery of messages, actions, and services for creating robotic and autonomous process flows.

4.1. ROS basics

The ROS set of tools provides the basic foundation for creating autonomous systems.

4.1.1. ROS Infrastructure

  • The ROS Core or ROS Master is a server node which keeps the registration information of all active nodes and their addresses on the XML-RPC server used for communication between nodes.

  • The ROS Parameter Server is an API of the ROS Master which manages the parameters and the configuration of the nodes, and can communicate the current parameters to other nodes.

  • Nodes are servant APIs written in Python or C++, which generate and receive messages, perform actions, and execute commands on the ROS network.

4.1.2. ROS Messages and Topics:

  • ROS Messages are a specific predefined format for messages exchanged between nodes. Messages are serialized, and need to be compatible with both C++ and Python. Message formats contain the list of variables and variable classes which comprise the message.

  • ROS Topics are published message streams generated by a Publisher
    which subscriber nodes can subscribe to using the TCP protcol. Note that a node can have none, one, or multiple Publisher and a Subscriber APIs of one or both types, and publishers/subscribers operate independently of eachother. Note: The relationship between publishers and subscribers is one to many.

4.1.3. ROS Services and Actions

  • ROS Services are special synconous APIs which allow for a node to request an action to be performed by another node as part of its operating loop. Unlike topics, nodes and service APIs cannot execute additional processes until the API service call has been closed.

  • ROS Actions are special kinds of Asyncronous services which do not occupy the requesting node. Actions are given an objective to be perfomed and which can be modified; they also provide incrementatl status on actions. git c