RobotData – Single or Multi Process

The RobotData serves as a communication link between the back end and the front end (see architecture). It contains time series structures, in which all the data (actions, observations, etc.) is stored.

The interface is defined in the base class RobotData. There are two different implementations that implement the interface:

  • A “single-process” implementation (SingleProcessRobotData), keeping the data in a buffer in normal memory. This allows fastest access but all modules (front end, back end, …) must run in the same process. This is easiest to use for simple setups where everything is in one script.

  • A “multi-process” implementation (MultiProcessRobotData) using a shared memory which can be accessed by multiple processes. With this, front end, back end, etc. can be executed as separate processes. This allows a more secure setup as user code (using the front end) and back-end configuration can be decoupled, thus not allowing the user to change safety-critical settings of the robot (e.g. the maximum motor current).

See the demos for implementations with both the single- and the multi-process RobotData.