Projet Balise

De Wiki Robotronik

Introduction

Le club Robotronik participe chaque année à la coupe de France de Robotique. Les règles ainsi que les actions à effectuer sont données en début d’année scolaire et doivent être suivies afin que le robot soit homologable par les arbitres. Le but est de remporter un maximum de points dans un délai de match de 100s.

Une des problématiques de cet événement est de ne pas entrer en contact avec les robots adverses. Pour cela plusieurs méthodes sont accessibles. Des positions sont disponibles autour du terrain dans des zones stratégiques afin d’y déposer une balise. Il y a également la possibilité d’en fixer une sur le robot. Ce second cas fait ici l’objet de ce projet.


Objectifs du projet

  • Réaliser une balise indépendante.
  • Être capable de détecter les alentours du robot sur une distance de 2m.

Objectifs de la partie mécanique

  • Réaliser le montage électrique nécessaire au bon fonctionnement du système.
  • Réaliser le support physique permettant l’implémentation de la balise sur le robot.

Objectifs de la partie programmation

  • Contrôler les composants prévus dans l’électronique de l’objet.
  • Mettre en forme les informations reçues par le(s) capteur(s).

Les contraintes

  • Dimensions maximales de la balise (rectangulaire d'aire 7*7cm² ou cylindrique de diamètre 10cm et de hauteur 8cm)
  • Poids de la balise (300g)
  • Placement de la balise
  • Indépendance énergétique de la balise par rapport au robot
  • La balise doit être démontable
  • Rapidité et précision nécessaires à la détection d'un élément
  • Présence possible de plusieurs robots et objets sur le plateau
  • Environnement des matchs à la coupe (luminosité, bruit, personnes)
  • Durée de fonctionnement minimale au cours d’un match (100s)

Solution retenue

La méthode choisie consiste à scanner la zone autour du robot à l'aide d'un capteur "temps de vol" (plus communément capteur TOF) de chez STMicroelectronics, afin de détecter les objets présents ainsi que leur distance sur un rayon de 2m.

La balise ainsi posée au-dessus du robot est donc en rotation à l'aide d'un servomoteur Dynamixel XL-320 renvoyant un angle permettant au capteur de balayer la zone voulue.

Fichier:SolutionTechnique1.png Fichier:VueDessusSolutionTechnique.png


Partie mécanique

La conception des pièces en 3D est accessible ici et utilisable directement sur FreeCAD.

Paramètres généraux

  • Balise cylindrique de diamètre 10 cm et de hauteur 8 cm.
  • Présence de cavités afin de connecter électriquement le robot à la balise.
  • Fixations de la carte Nucléo de l'entreprise ST, du PCB-shield, des PCB des deux capteurs, ainsi que du servomoteur réalisant le balayage.

Composition

Deux étages indépendants :

  1. Le Stator : Permettant la fixation au robot.
  2. Le Rotor : Exécutant le balayage. Cet étage est divisé en trois pièces pour simplifier les impressions avec l'imprimante 3D.

Description des pièces du deuxième étage :

  • Dessous (bleu) :
    • Fixations disponibles par vis sur le dessus du robot.
    • Cavités permettant le branchement électronique entre la balise/le robot ainsi qu'entre les servomoteurs/la carte électronique de la balise.
    • Support de connexion au servomoteur amovible.
  • Milieu (orange) :
    • Fixations pour le moteur
    • Support permettant que cette pièce et celle au-dessus (pièces amovibles) ne se décrochent pas pendant le déplacement du robot et/ou lors du balayage.
    • Trous permettant le câblage du moteur ainsi que la connexion au robot.
  • Dessus (vert) :
    • Fixations par vis sur le cadre de la carte Nucléo avec son shield et les deux plaques pour les capteurs temps de vol
    • Fixations par vis entre cette pièce et celle du dessous.
    • Servomoteur fixé à cet étage afin d'augmenter la masse de la pièce et ainsi éviter son détachement.

Matériel nécessaire à une réparation :

  • PLA noir
  • Une imprimante 3D
  • Vis
  • Ecrous

400px

Partie électronique

Les fichiers correspondant à l'électronique de la balise sont disponibles ici et sont utilisables directement sur Kicad.

Fichier:MolexTransfert.jpg
Connecteur MOLEX permettant la communication vers le robot
Fichier:EnergieTransfert.jpg
Connecteur BPlug alimentant la carte en 15V via le robot
Fichier:PCBShield.png
PCB du shield
Fichier:PCBTof.png
PCB du capteur TOF

Paramètres généraux

  • Ensemble électronique adapté aux formes de la balise
  • Possibilité de changer rapidement la plupart des composants en cas de soucis.
  • Fixation de la carte principale sous la forme d’un shield.

Composition

Deux types de carte :

  1. Le shield : Carte principale faisant le lien entre toutes les parties de la balise.
  2. Le support capteur : Carte faisant l’adaptation des tensions et la fixation des capteurs.

Fichier:SchemaBlocElectronique.png

Description des blocs principaux :

  • Communication avec le servo :
    • Protocole USART (Tx/Rx).
    • Composants logiques assurant l’aiguillage de l’information vers le servo. (Le servo ne dispose que d’un seul canal de communication "Données" pour utiliser le Rx et le Tx).
    • Connection à l’aide de connecteurs Molex facilement démontables.
    • Alimentation du servo par le robot en 7,4V.
  • Abaisseur en tension :
    • Réglage simple de la tension de sortie à l’aide d’un diviseur de tension.
    • Composants commun (LM317) et montage simple.
    • Faible surface occupée sur le PCB.
  • Translateur de niveaux :
    • Fonctionnement symétrique (2V8-5V et 5V-2V8).
    • Montage fiable souvent utilisé en électronique.
    • Translation des niveaux logiques rapides (pratique pour des protocoles de communication rapide)

Matériel nécessaire à une réparation :

  • Un oscilloscope
  • Une alimentation stabilisée
  • Un multimètre portable
  • Du sang-froid et du temps

Partie programmation

Le répertoire contenant la programmation est accessible sur le git du club ici.

La programmation se fait sur une carte Nucléo-F401RE, contenant une STM32-F401RE, plus d'informations sur la carte et les logiciels associés sont décris ici sur le wiki.

Les fiches techniques des composants de ST sont disponibles ici :

Le contrôle des servos est fait avec le protocole UART, voir librairie ici.

Le contrôle du capteur temps de vol VL53L0X est contrôlé par I²C.

De plus, les données sont réceptionnables par le robot via la transmission UART.

Voici le rendu sur ordinateur à l'aide du fichier interface.py du test réalisé :

frame[Balise au centre d'une cage rectangulaire de côté 2m.

Les points bleus correspondent aux objets détectés à la distance définie sur le radar.

Améliorations envisagées

Temps de mesure et détection arrière

Comme le XL320 ne peut donner que des informations sur 320°, on peut ajouter un deuxième capteur TOF à l'opposé du premier, afin d'obtenir la totalité des alentours du robot, et ce pour seulement 180° de rotation (système plus rapide).

Le montage est prévu pour accueillir 2 capteurs TOF simultanément.

Le code est nonobstant manquant. Il faut faire attention au fait que les TOFs sont sur un bus et n'ont qu'une adresse. Lorsqu'ils sont reset, ils sont remis à l'adresse 0x52. Il faut donc allumer un TOF après l'autre en utilisant le pin reset afin de définir l'adresse des capteurs TOF séparément.

Pour améliorer cette fonctionnalité, l'utilisation de 6 capteurs TOF sur la balise est possible (maximum que la physique nous permet d'avoir sur ce modèle).

Une autre possibilité serait de remplacer le servomoteur par un autre modèle ayant la possibilité d'envoyer sa position plus rapidement et/ou se servir d'un capteur annexe pour récupérer sa position, tout en laissant le servomoteur en mode roue libre.

Compacter le montage

Afin de compacter le circuit, il suffit d'utiliser un four à fusion afin de souder directement le capteur TOF au lieu d'utiliser une mini carte de test de capteur TOF.

Voici le routage permettant cette amélioration :

400px

Les deux dernières solutions envisageables pour diminuer l'espace occupé par la partie électronique sont les suivantes :

  • Changer de type de carte en remplaçant la NUCLEO64-F401RE par une NUCLEO32-F303K8 qui est plus petite.
  • Réaliser entièrement un PCB en venant souder directement le microcontrôleur dessus.

Ces schémas ne sont cependant pas disponibles pour le moment.