Gyarados: Software

In the ROS architecture running on the Gyarados motherboard, different nodes are used to control different parts of the vehicle. These nodes communicate with each other through ROS; each node can have several publishers and subscribers based on the function of the node. Each Arduino board on the sub is a node that interfaces with the hardware. The computer vision node is isolated for modularity. 

Software diagram

Object detection is handled by the computer vision node, which uses OpenCV for preprocessing and detection. First, the images are labelled, then features are extracted using HOG. These images are then used for training the real-time object detection system. Real-time detection is based on image frames from a video feed that are preprocessed, ROI determined, then classified. These classifications are used to decide which movements the submarine should take. 

Filter out colorsFind contours

Filtering Out Colors                                                          Find Contours

Before machine learningAfter applying machine learning

Before Machine Learning                                       After Applying Machine Learning