Software Team

Meet the software team!

The software team is responsible for developing all computer-based systems onboard the AUVs. This includes everything from low-level drivers that collect data from sensors to the mission system that governs the submarine’s overall behaviour.

One of our key projects is an artificial intelligence system trained to recognize and classify objects around the submarines. The vehicle’s control is handled through a Model Predictive Control (MPC) approach, which uses real-time sensor data to estimate the vehicle’s position and compute its motion. Together, these systems are essential for ensuring smooth and reliable underwater navigation.

The software ecosystem is built around ROS 2, which acts as our communication framework. Its modular architecture allows each system to be developed independently while still integrating seamlessly into a single, cohesive 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)