Équipe Logiciel

L’équipe logiciel est responsable du développement de tous les programmes sur les ordinateurs des AUVs, des pilotes qui collectent les données des capteurs jusqu’au système de mission qui contrôle le sous-marin.

L’équipe développe aussi le réseau neuronal qui s’occupe de la détection d’obstacle ainsi que la commande prédictive à base de modèle (MPC) et le planificateur qui contrôle les mouvements des AUVs. Tous ces systèmes sont essentiels pour obtenir des interactions fluides entre le sous-marin et son environnement.

L’écosystème logiciel est construit autour de ROS2 (Robot Operating System), qui est notre réseau de communication. La flexibilité de celui-ci permet à l’équipe de développer des programmes individuels pour chaque partie du système et de les intégrer afin d’obtenir un seul système fonctionnel.

Projets logiciels


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)

Contrôle

Le sous-marin autonome doit être capable d'exécuter des trajectoires de suivi, d'alignement de vision, d'alignement acoustique et plus encore. Tout cela est possible grâce à une chose... un bon contrôle ! Notre équipe travaille sur un algorithme de contrôle modulaire pour contrôler leurs prototypes. Nous utilisons également le contrôle pour déplacer manuellement le sous-marin dans son environnement. (Outils et/ou langages utilisés : Matlab, Simulink, ROS)

Providers et Procs

Les «providers» sont les pilotes qui communiquent avec les modules S.O.N.I.A. bas niveaux, les capteurs et actionneurs sur les sous-marins en utilisant différents protocoles. Les données sont transmises vers les «procs» via ROS pour traiter les informations. Ces informations seront interprétées et utilisées par la télémétrie, les autres nœuds «procs» ou les missions. (Outils et/ou langages utilisés : ROS, C++, Python, TCP/IP, Communication série)

Simulation

L'équipe développe son propre environnement de simulation pour tester différentes tâches à l'intérieur d'un environnement virtuel. Cette simulation doit être la plus précise possible car nous voulons tester la majorité de nos missions à l'intérieur. (Outils et/ou langages utilisés : Unity, ROS, C#)

Télémétrie

La télémétrie est un cadre rqt basé sur Qt pour contrôler et surveiller les sous-marins pendant nos tests. Il est portable et permet à l'équipe de se connecter à partir de n'importe quel appareil de son choix. Il comprend un tas de modules dont nous avons besoin pour surveiller les sous-marins comme le module de propulseur, le module d'actionneurs, la visionneuse de caméra, etc. (Outils et/ou langages utilisés : python, ROS)

Vision

La vision est une capacité indispensable pour un véhicule autonome afin de détecter et reconnaître les objets qui l’entourent ce qui lui permet ensuite d’interagir avec son environnement. Pour effectuer cette tâche dans nos sous-marins, nous utilisons un modèle de type réseau neuronaux (YOLOv8n ou YOLOv10n). Ce modèle doit être à la fois très fiable, très léger et utiliser peu de données d'entraînement. C’est pourquoi nous faisons le choix d’entraîner un modèle très spécialisé pour l'environnement de la compétition RoboSub. Par ailleurs, toutes nos images sont étiquetées à la main à l’aide de Labelbox, ce qui nous permet d'avoir des étiquettes plus précises. Ces données nous permettent ensuite d'entraîner puis de tester de manière fiable notre modèle. (Outils et/ou langages utilisés : CUDA, Labelbox, OpenCV, Python, Pytorch, ROS, Ultralytics)