Équipe Logiciel

Découvrez l'équipe logiciel !

L’équipe logicielle est responsable du développement de tous les systèmes informatiques embarqués à bord des AUV. Cela inclut aussi bien les pilotes de bas niveau qui collectent les données des capteurs que le système de mission qui gouverne le comportement global du sous-marin.

L’un de nos projets clés est un système d’intelligence artificielle entraîné à reconnaître et classifier les objets autour des sous-marins. Le contrôle du véhicule est assuré par une approche de type Model Predictive Control (MPC), qui utilise les données des capteurs en temps réel pour estimer la position du véhicule et calculer ses mouvements. Ensemble, ces systèmes sont essentiels pour garantir une navigation sous-marine fluide et fiable.

L’écosystème logiciel est construit autour de ROS 2, qui sert de cadre de communication. Son architecture modulaire permet de développer chaque système de manière indépendante tout en assurant une intégration fluide au sein d’un système unique et cohérent.

Projets logiciels


BehaviorTree (missions)

BehaviorTree est un outil qui aide S.O.N.I.A. à créer des missions complexes pour les sous-marins sans programmer manuellement chacune d’elles. BehaviorTree est utilisé pour créer les arbres de comportement, les exécuter et les surveiller. Lors des tests, il est également possible de collaborer avec le sous-marin lors de l’exécution de la mission. (Outils et/ou langages utilisés : ROS 2, 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 2)

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 2, C++, Python, TCP/IP, Communication série)

Simulation

L’équipe utilise l’environnement de simulation MATLAB et Unreal Engine développé par MathWorks pour la compétition RoboSub afin de tester des scénarios de mission dans un environnement virtuel. Le monde sous-marin et les éléments de compétition sont personnalisés et maintenus par le club afin de représenter fidèlement les conditions réelles d’opération. Cette simulation doit être aussi précise que possible, car nous souhaitons y tester la majorité de nos missions. (Outils et/ou langages utilisés : MATLAB, Unreal, ROS 2)

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 2)

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 (YOLOv11). 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 2, Ultralytics)