NRP Communication Flow

The communication and data flow of the NRP is shown in communication-flow. The diagram includes all communication and data flows between the three main components (Frontend, backend and CLE) as well as the most important communication and data flows within the components.

Frontend

The Frontend basically calls the REST API of the backend via HTTP using JSON for data transfer. For rendering the Frontend can directly access the Gazebo API running in the CLE by using gzweb/gz3d. In addition the Frontend subscribes to ROS topics in the CLE for status updates (/ros_cle_simulation/status) and monitoring brain/robot activities (/monitoring/’device_type’) by using rosbridge.

Backend

The REST Server uses the classes hbp_nrp_backend.cle_interface.ROSCLESimulationFactoryClient and hbp_nrp_backend.cle_interface.ROSCLEClient to start and control the CLE. Both classes communicate with their counter part in the CLE by calling ROS services (/ros_cle_simulation/create_new_simulation) to launch the CLE and (/ros/cle_simulation/{start,stop,pause,reset,stop}) to control the CLE. In addition the backend is able to call ROS services of Gazebo (/gazebo/{light,visual}) to perform events and interactions with the environment of the simulation.

Closed Loop Engine

The CLE internal communication is basically done via ROS services and topics. See CLE documentation for more details.