Roboboat est une compétition internationale de robotique organisée par robonation où des bateaux robotisés autonomes s’affrontent dans des défis entre écoles. Je fais partie de Roboboat depuis ma première année à l’université et j’ai travaillé sur divers projets.
Au cours de ma première année, nous avons participé à la compétition aux États-Unis, en Floride, mais malheureusement, nous n’avons pas pu nous qualifier en raison de notre incapacité à relever certains défis. Depuis, l’université voulait que nous soyons en meilleure condition pour la prochaine fois que nous participerions à la compétition. Malheureusement, ce fut la seule fois que nous avons participé à la compétition.
Détection de bouées
ML et OpenCV
Au début, je faisais partie de l’équipe de détection d’images où nous avons joué avec OpenCV et Tensorflow pour trouver d’abord des bouées possibles avec OpenCV. Nous avons ensuite utilisé Tensorflow (avec un modèle d’apprentissage machine) pour déterminer si l’image était une bouée ou non.
Comme c’était pendant ma première année d’université, ce n’était pas facile. Bien que les étapes de la création d’un modèle d’apprentissage automatique pour reconnaître certains objets semblaient faciles :
- * Assembler des images de l’objet en question
- * L’introduire dans Tensorflow
Ce fut la première partie qui a pris un peu de temps. Il existe de nombreux ensembles d’images disponibles en ligne, mais aucun de bouées et la quantité nécessaire pour créer un modèle d’apprentissage machine. Nous avons alors eu l’idée d’extraire les images des enregistrements vidéo des compétitions passées et d’autres vidéos pertinentes, par exemple ceci ou ceci . C’était la première fois que je voyais que l’ingénierie des données et la création d’ensembles de données (dataset) étaient une partie très importante de l’apprentissage machine.
J’ai téléchargé toutes les vidéos pertinentes et extrait les images de chaque vidéo à un certain intervalle (toutes les 1 à 4 secondes) pour obtenir les images de la compétition. Une fois les images extraites, nous avons recadré manuellement les bouées dans les images. Nous avons recadré collectivement près de 2000 images provenant de 11 vidéos différentes. Notre ensemble d’images était alors composé de :
- * 648 - Arrière-plan
- * 640 - Grosses bouées
- * 622 - Petites bouées
Si vous souhaitez obtenir l’ensemble de données, vous trouverez un lien ici . Il s’agit d’un jeu de données relativement petit. Nous avons utilisé quelques techniques pour multiplier notre ensemble de données en retournant les images et en modifiant la saturation, le bruit, la résolution, la teinte et la luminosité. Nous avons ainsi obtenu un ensemble de données d’environ 12000 images, ce qui n’est pas si mal.
Il y avait quelques problèmes lorsque nous avons testé ce système avec le bateau réel. La partie OpenCV ne fonctionnait pas correctement et l’ordinateur du bateau n’était pas assez puissant pour tout suivre.
Seulement OpenCV
Nous avons donc supprimé la partie apprentissage machine et conservé uniquement le traitement OpenCV. Bien qu’OpenCV soit très sensible à la lumière, nous avons pu ajuster nos paramètres OpenCV à l’aide d’une interface utilisateur construite en Python montrant un aperçu des bouées détectées sur un ensemble d’images.
Nous avions également différents préréglages basés sur la luminosité de l’environnement pour qu’OpenCV détecte la plupart des bouées, quelle que soit la lumière.
Chef d’équipe
Pendant ma dernière année à Roboboat, j’étais le chef d’équipe logiciel chargé d’administrer les réunions bihebdomadaires avec les autres membres logiciels de l’équipe, où nous discutions du progrès de l’équipe, des défis, de la distribution des tâches, et du travail en collaboration sur certaines tâches ensemble.
Lorsque le chef d’équipe de Roboboat est parti, j’ai décidé d’assumer le rôle de chef d’équipe tout en étant le chef du logiciel et en travaillant sur la détection d’images. Malheureusement, au fur et à mesure que le temps passait, l’intérêt et l’implication des étudiants diminuaient (également avec l’arrivée du COVID à peu près à la même époque).
Tableau de bord
Il s’agit de ma première itération d’un tableau de bord ROS (Robotic Operating System) , qui précède la version que j’ai réalisée pour Mars Rover . C’était aussi la première fois que je créais une application web React (puisque je n’ai utilisé React que pour créer des applications mobiles avec React Native).
Il nous a permis de voir un graphique continu pour surveiller les informations des capteurs (comme la température du bateau), de voir la caméra, et de voir un aperçu des informations de ROS (comme les paramètres, les sujets et les nœuds de ROS). Il a donné un aperçu général de l’état de notre bateau depuis la terre.
Il nous a permis de surveiller via un graphe continu les informations des capteurs (comme la température du bateau), de visualiser la caméra et de voir un aperçu des informations de ROS (comme les paramètres, les sujets et les nœuds de ROS). Il donnait un aperçu général de l’état de notre bateau de la terre.
Site web
J’ai créé leur site web promotionnel pour montrer ce qu’est Roboboat à la population étudiante et aux commenditaires potentiels.
Tester le bateau
Une fois que nous avions une bonne base du bateau (du point de vue logiciel, électrique et mécanique), nous l’avons testé dans l’eau, soit plus spécifiquement dans la piscine de l’Université. Nous devions tester le bateau dans l’eau pour voir s’il était stable, si les moteurs fonctionnaient correctement, et si la détection des bouées fonctionnait correctement.
Nous avons principalement testé la durabilité du bateau. Une manette Xbox a été utilisée pour contrôler le bateau.