DONPHAN’s software architecture is split into modules. The mission planning module is responsible for monitoring data from all of the sensors as well as the computer vision module. It then decides the actions the submarine will take, depending on what objects it has seen as well as what tasks it has yet to complete, and sends the appropriate commands to the controls system.
The state machine is responsible for the monitoring of sensors, tracking of specified tasks, and execution of task related activities. It is based on a loop of searching for an uncompleted task, approaching the task, executing the task, and disengaging/tracking completed tasks. Each state is responsible for obtaining relevant data from the sensor modules, as well as controlling the submarine. Each approach and execution state is unique to the task, allowing the programming and testing of a specific task without the need to have the entire state machine running. It also allows for setting a time limit on tasks, allowing the submarine to move on if the task takes too long to complete. The modularity of this system will allow for greater reuse of code, as well as faster modifications without disturbing the function of other task states.
The computer vision system on Donphan is a simple OpenCV Haar Cascade system. It was trained on several photos taken of the competition objects and can successfully classify several of the objects.