High-Level Architecture#
ROS based
Distributed paradigm with communication between nodes (processes)
Pub/Sub and RPC (Remote Procedure Call) communication
Layered architecture

Note
The implementation isn’t great (needs some heavy refactoring: we had to move fast while learning new technologies, which contributed to a decrease in quality), but the concepts and ideas should be useful.
Decision Making#
The decision making logic is based on a state machine implementation (state pattern).
Inputs from the sensing nodes originate state changes, and different states may respond differently to the same inputs.