Réflexions sur la détection d’obstacle
Problématique
Chaque année à la coupe de France de Robotique la détection d’obstacle est problématique :
- détection tardive des adversaires ne permettant pas un évitement acceptable
- détection impossible (sur le flanc des robots par exemple) ne permettant pas un évitement acceptable
- détection d’objets parasites déclenchant un évitement indésirable (robot bloqué dans la zone de départ, action arrêtée et perte de temps,…)
Bien que la techno des capteurs ultra-son est rodé de longue date, un complément est nécessaire pour pallier à ces problèmes trop fréquents.
Un généreux mécène a fait don au club de 2 LIDAR. Pour les travaux persos de juillet-août 2023, nous avons décidé de voir comment intégrer ces capteurs à notre stratégie de détection d’obstacle.
Les travaux ont été partagés comme suit :
- Intégration électrique et numérique des LIDAR ⇒ Nico
- Intégration méca et électronique des LIDAR ⇒ Alex et Benjamin
- Intégration des informations dans un superviseur ⇒ Laguiche et Erwann
Objectif
Le superviseur balise reçoit toutes les informations des balises actives en bord de terrain, synthétise les informations d’emplacement des objets détectés et les restitue aux robots avec des infos complémentaires (à définir comme vecteur de direction des robots adverses, zones libres, conseil de ralentissement,…).
Comment
Le superviseur sera un module LaBotBox : BotAlorsYouAre
Source d’inspiration ⇒ https://youtu.be/s8cMrDqwbNw ça semblait adapté à un logiciel d’identification 🙂
Chaque balise aura donc un module BotAlorsYouAre mais un seul sera déclaré en maître. Le premier module déclaré sur le réseau sera considéré comme maître (c’est à dire avec l’autorisation de communiqué des coordonnées de robots).
BotAlorsYouAre reçoit les informations soit de son propre LIDAR (en messagerie interne), soit des autres LIDAR via une communication sans fil (Xbee par exemple).
Les LIDAR sont placés en bord de terrain.
L’angle et la portée des LIDAR fait qu’un seul est suffisant. A partir de 2 LIDAR on peut se prémunir des effets de masquage (1) ou de bruit de fond pour les détections en bord de terrain (2) entre autres, même si la précision du LIDAR devrait être suffisante pour éviter ces cas-là.
Chaque LIDAR donne des informations minimales par objet détecté :
- Identification du LIDAR ou son emplacement sur le terrain (une balise fixe inerte, c’est à dire sans capteur, pourrait servir de point de repère pour une identification automatique).
- Une distance de détection
- Un angle
- Une info complémentaire (optionnelle) : une identification aruco, une couleur,…
Ces informations sont stockées dans le superviseur dans un objet CBot.
Ces objets sont stockés périodiquement dans une première liste de pointeurs : m_rawBotList
Cette liste va subir différents traitements :
- Calculs trigo pour transformer les informations en coordonnées sur le terrain
- Suppression des points aberrants (exemple un point en dehors du terrain)
- Fusion des points (exemple : si deux points sont espacés de moins de 5 cm on suppose que c’est le même objet)
- Identification du point (à partir soit d’un historique, soit d’infos complémentaires, soit d’infos communiquées par nos robots ) qui permettrait de différencier les robots adverses
- Enrichissement des objets (vecteur de déplacement, vitesse, prochain point ou zone d’occupation, obstacle détecté à l’avant ou à l’arrière, robot adverse proche,…)
- Construction d’un indice de fiabilité de détection pour chaque robot (identification incohérente avec l’historique, vitesse anormale,…)
La liste m_rawBotList traitée va ensuite être utilisée pour mettre à jour la liste définitive des robots : m_BotList.
Les infos primaires (identification, coordonnées terrain) de m_BotList sont historisées sur des périodes glissantes de 1 seconde dans un tableau permettant différents traitements ultérieurs.
Le superviseur communique les informations de m_BotList (à définir) aux robots.
Optionnel (le coup d’après) :
La liste m_BotList va également permettre de mettre à jour la situation tactique du match (quadrillage du terrain avec description de chaque zone), conseiller les meilleures zones suivant la progression des robots adverses, valider des actions nécessitant la cohésion de nos robots,…
IHM
Parce que BotAlorsYouAre est un module LaBotBox on a la possibilité d’avoir une IHM.
Cette IHM permettra de restituer la situation en temps réelle sur le terrain, la liste des robots identifiés et les infos associées. Le maître disposera également d’informations supplémentaires issues de chaque traitement par exemple ou de l’historisation.
Une led physique sur le support du LIDAR pourrait éventuellement indiquer qui est le maître
Éventuellement, un onglet spécifique permettra de corriger l’emplacement ou l’id de chaque LIDAR.