Communication Scheme¶
The robot is made up of multiple subsystems. It is mainly devided into these layers (top down):
- The Superordinate Control is the intelligence of the system. It is not a hard real-time system. Currently it is made up of a sigle Raspberry Pi. However, additional nodes might be added. (These would then be connected via Ethernet LAN.)
- The Subordinate Control constituates the low level control. It is made up of bare metal, hard real-time controllers. These are controlling inputs such as distance sensors and outputs such as motors.
- The I/O Layer is made up of sensors and actuators. Some might be dumb, e.g. temperature sensor read via ADC. Some might be smart, e.g. depth sensors with built-in compute and digital interfaces.
These subsystems are communicating as depicted below:
- The Superordinate Control, currently a single Raspberry Pi, communicates the subordinate control via CAN bus. It sends commands and queries and receives status updates, warnings, and errors.
- The Subordinate Control communicates to the actual peripherals via GPIO, I2C, and other low level busses.
- The Superordinate Control may also directly control peripherals via high bandwidth channels such as USB or also directly via its own GPIOs.
- The Motor Controller Bridge issues debug messages via USB. These messages might be read by the Superordinate Control. Alternatively the bridge might be connected to a developer notebook to view the debug messages.