S.O.N.I.A. uses 3D printing to manufacture the internal supports to hold the electronic components. 3D printing is also used to print some parts to create our accessories on submarines. (Tools: Simplify3D)
To design quality submarines, the mechanical team is joining forces to manufacture various precise parts for our prototypes. Machining allows our team to materialize their ideas. (Tools: CATIA)
Whether it is to design a new submarine, an electronic component support or an accessorie on submarines. The mechanical team needs creative ideas to develop new concepts. (Tools: SolidWorks)
An hydrodynamic study of the submarine can allow us to find very relevant information to design quality submarines. The information collected can also be used to obtain the most realistic model for our simulator. (Tools: ANSYS)
Inputs and Outputs
Accessories such as torpedo launchers, robotic arm and "droppers" are positioned on the submarine. To ensure the correct functioning of the latter, proper operation of the electrical side is essential.
Modern electronic systems often require voltage regulation to work. In the case of S.O.N.I.A.’s submarine, the voltage of the batteries (normally around 16 V) needs to be decreased to a value more suitable for electronic components.
The electrical team designs several PCBs for different systems on the submarine. They go through the design stages of the electrical diagram, the design of the PCB, the ordering, the soldering as well as the tests. (Tools : Altium)
All the embedded systems on the submarine run Mbed OS on STM32F4 microcontrollers. The programs on those microcontrollers are developed and tested by members of the team.
In general, the hydrophone are used to calculate the delay between the reception of a ping from the reference to the 3 other hydrophones. With the phase difference, we can get the angle (heading) for the X reference on the submarine and the angle bewteen the X and Y plan and the pinger. These 2 angles are used to navigate at 2 positions. Only the heading would be necessary for the competition, but the system is more reliable with the 2 angles and it is easier to confirm the mouvement of the submarine.
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)
It’s essential for an AUV to interact well with its environment to have performant machine learning models and software. To help us, we are using Apache-Airflow to automate our machine learning pipeline and our data transformation pipelines (ETL) are fully automated. We are also using Labelbox’s distributed labeling features to label all the images we get from tests. (Tools and/or languages: Airflow, Labelbox, Google Cloud, Tensorflow)
The software architecture of S.O.N.I.A. is mainly based on multiple Docker containers. Each nodes are developped and run inside containers to reduce maintenance, development and testing times. We are using Docker Compose to run the multiple containers onto the AUV. (Tools and/or languages used: Docker, Docker Compose)
FlexBE is a tool that helps S.O.N.I.A. to creates complex missions for the submarines without manually coding them. FlexBE app is used to create the state machines, 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, Python)
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)
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#)
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)
The design of vision algorithms that reliably detect objects can be extremely hard to achieve. The task requires extensive knowledge of computer vision theory; the technology used for the development (programming language and operating system) as well the natural environment in which it is to be used. It also requires time-consuming testing on various data sets to confirm the applicability of the end-result. (Tools and/or languages: ROS, OpenCV, CUDA, C++)