Chapitre 1 : Une tourelle tournante « Laser »

sans l'utilisation de télémètre

Ce projet de tourelle laser n’est pas une nouvelle technologie, le principe est connu depuis longtemps et même très utilisé pour Eurobot… en voici les grandes lignes :

Un capteur Laser tourne sur notre robot et ne détecte que s’il est réfléchi sur un catadioptre (réflecteur posé sur le robot adverse). Le capteur Laser est de Classe 1 (imposé par le règlement Eurobot) ce qui nous oblige à utiliser du « tout ou rien » (il fonctionne comme un interrupteur) :

  • il renvoi 1 : le capteur voit le réflecteur (sur l’adversaire)
  • il renvoi 0 :le capteur ne voit pas le réflecteur

On ajoute un « codeur » (pour nous un simple capteur Inductif pour donner un tic à chaque tour) et on connait déjà l’angle (de direction du robot adversaire). Il ne reste plus qu’a déterminer la distance.

Calcul de distance = TRIGONOMÉTRIE ?

Le capteur laser n’est pas un télémètre. L’astuce pour connaitre la distance de l’adversaire est mathématique. En fonction de plusieurs paramètres connus (la position angulaire du laser et le diamètre de la balise réflecteur posé sur l’adversaire) et avec un simple calcul trigonométrique, on obtient la distance :

Et dans le monde « DISCRET » de la robotique ?

Ça c’est la théorie mathématique, mais on est en robotique et c’est l’informatique qui pilote tout : on discrétise le temps… Ce qui nous arrange bien en fait, car on simplifie encore le problème :

C’est la même méthode que précédemment sauf qu’au lieu d’avoir une mesure d’angle en deg (ou rad) on a une mesure en « nombre de tics » : plus on se rapproche de l’adversaire, plus l’angle mesuré (alpha) est grand donc plus on a de tic (Distance 1 = 7 tics)… et inversement, plus l’adversaire et loin, moins on a de tic (Distance 2 = 3 tics).

MODÉLISATION et PARAMÉTRAGE du système

Le principe est très simple. Maintenant il faut concevoir la mécanique, préparer l’électronique et coder l’algo. Bien que ce ne soit pas indispensable, nous avons fixé les objectifs d’avoir une vue sur l’adversaire jusqu’à 3 mètre autour de notre robot, une précision au centimètre (au moins pour la proximité) et un temps de réponse suffisant pour s’arrêter à 1m/s.

  • La précisionest sur la mesure de l’angle alpha et donc le nombre de tics par tour : moins la balise tournera vite, meilleure sera la précision (plus on aura de tics/tours)
  • Le temps de réponsedu système dépend de la vitesse de rotation de la balise : plus la balise tournera vite meilleur sera le temps de réponse

C’est donc un compromis : précision / temps de réponse

Jusqu’à présent, nous réalisons le traitement de l’évitement avec un Cubloc. Ce microcontrôleur est très pratique mais n’autorise les interruptions qu’au minimum à 10ms… Nous devons être plus rapides pour atteindre nos objectifs.

Nous allons donc passer le traitement de l’évitement sur une BeagleBone Black, et pour commencer avec des interruptions à 1ms (une vitesse que nous pourrons augmenter par la suite).

Dans un premier temps, une discrétisation du temps à 1ms et une précision de 2deg, il faut donc tourner le capteur à 333 tr/min. Pour augmenter le temps de réponse du système on double les capteurs (càd qu’un demi-tour 180° suffit à cartographier). Avec les deux lasers en opposition on atteint un temps de réponse de 90ms… soit 90mm à une vitesse de 1 m/s. C’est encore beaucoup, mais suffisant si on anticipe en réduisant notre vitesse par exemple lorsque l’adversaire est à moins d’un mètre de nous.

Comme le montre ce graphique, avec une précision de 2 deg, nous n’atteignons pas l’objectif des 3 mètres, la précision diminue avec la distance. A 2 mètre on n’observe plus qu’un tic/tour et au delà on risque de ne mesurer aucun tic (le réflecteur sur l’adversaire se trouve entre deux mesures représentées par des points noirs sur le graphique)

Pour le prototype, nous restons avec cette configuration déjà assez performante. Par la suite on pourra diminuer le temps des interruptions pour gagner en précision et donc peut-être atteindre les 3 mètres pour le même temps de réponse.

Un problème 3D

Un autre problème apparaît en réalisant la conception mécanique. En 3D on se rend compte que le problème n’est pas tout à fait plan, car on pose le réflecteur sur le robot adverse, à une hauteur supérieure à celle de nos lasers. On va donc doubler une fois de plus le nombre de laser pour couvrir toute la table : 2 inclinaisons différentes permettent ainsi une détection entre 40mm et 500mm (angle B1) puis entre 500mm et 3000mm (angle B2) :

Conception Mécanique

La CAO est prête, les capteurs, le moteur et le collecteur tournant tiennent dans un cube de 80mm:

Réalisation mécanique du prototype

Toute la mécanique de ce premier prototype est imprimée en plastique. Une mécanique plus précise sera réalisée si besoin en usinage aluminium :

Les composants de la balise :

  • 4 capteurs Laser :OMRON E3Z-LR61
  • 1 collecteur tournant 6 voies :2 pour le 12V et 4 pour les données des capteurs
  • 1 capteur inductif :OsiSense XS1 N05PB311S
  • 1 moteur DC :MAXON DCX22S

Premiers Essais

Pour une première approche rapide, le code est réalisé sur la Beaglebone Black en node.js via Cloud9 : la carte est déjà prête à être utilisée à l’achat et permet des interruptions jusqu’à 1ms :

Je ne dispose pour le moment que de capteurs infrarouge OMRON (E3Z-D61). J’achèterai les capteurs laser avec catadioptre si le prototype nous offre de bons résultats.

Du coup pour le moment la balise est très limitée (mesure des capteurs sur 100mm max) mais elle nous offre déjà des résultats très encourageants. On optimise l’algorithme et les calculs et il ne nous restera plus qu’à tester avec une électronique plus propre et de vrais capteurs laser.

Pour aller plus loin

Beaucoup d’autres solutions mécaniques sont possibles:

  • Mettre à l’horizontale les capteurs laser (pour les avoir le plus haut possible)
  • Avoir une balise autonomeen embarquant batterie et électronique sur la partie tournante afin de supprimer le collecteur tournant (mais oblige à installer une communication sans fil entre la balise et le robot)
  • Tourner un miroir à 45°pour éviter de faire tourner de l’électronique mais empêche l’utilisation de plusieurs lasers.
  • ou encore d’autres évolutions, dont la plus avancée à ma connaissance,  développée par l’équipe Omybot, était présentée en Coupe de France de 2013 :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *