Software Team

Meet our software team, we are responsible for developing all the systems on the computers of the AUVs. This includes the drivers responsible for collecting data from the sensors and mission system that control the submarine.

Another interesting project is our neural network, trained to recognize objects, but can also serve as a Predictive Controller Model, that is tasked on planning the AUVs future moves. All mentioned systems are essential for a smooth underwater navigation.

The software ecosystem is built around ROS2 (Robot Operating System), which is our communication network. The flexibility of the network allows the team to develop an individual program for each system, while allowing a seamless integration to obtain a single working system.

Software projects


BehaviorTree (missions)

BehaviorTree is a tool that helps S.O.N.I.A. to creates complex missions for the submarines without manually coding everyone of them. BehaviorTree is used to create the behavior trees, execute and monitor them. During the tests, it's also possible to collaborate with the submarine during the mission execution. (Tools and/or languages used: ROS, C++, Groot2)

Control

The AUV must be able to execute trajectories following, vision alignment, acoustic alignment and more. All of this is possible because of one thing... a good control! Our team is working on a modulable control algorithm to control their prototypes. We are using the control to manually move the submarine in his environment as well. (Tools and/or languages used: Matlab, Simulink, ROS)

Providers and Procs

The providers are the drivers that communicate with low levels S.O.N.I.A. modules, sensors and actuators on the AUVs using different protocols. The data is passed towards the procs via ROS to process the information. This information will be interpreted and used by the telemetry, the other proc nodes or the mission. (Tools and/or languages used: ROS, C++, Python, TCP/IP, Serial communication)

Simulation

The team develop his own simulation environment to test different tasks virtual environnment. This simulation need to be the most accurate as possible because we want to test the majority of our missions inside of it. (Tools and/or languages used: Unity, ROS, C#)

Telemetry

The telemetry is a rqt Qt-based framework to control and monitor the submarines during our tests. It is portable and allow the team to connect from any device they want. It includes a bunch of modules that we need to monitor the submarines like thruster’s module, actuators module, camera viewer, etc. (Tools and/or languages used: python, ROS)

Vision

Vision is an essential capability for an autonomous vehicle, as detecting and recognizing objects around it then enables the vehicle to interact with its environment. To perform this task in our submarines, we use a neural network model (YOLOv8n or YOLOv10n). This model needs to be highly reliable, lightweight and require very little training data. This is why we have chosen to train a highly specialized model for the RoboSub competition environment. Additionally, all our images are hand-labeled using Labelbox, giving us more accurate labels. (Tools and/or languages used: CUDA, Labelbox, OpenCV, Python, Pytorch, ROS, Ultralytics)