La saison est terminé, c’est les vacances pour nos robots jusque fin septembre… ou presque : C’est aussi le moment de préparer 2016 : « beach bots »

Le règlement 2016 n’est pas encore sortie (prévue pour début octobre) mais en attendant la fin de l’été nous pouvons améliorer deux systèmes parmi les plus importants pour nos robots :

  1. L’asservissement pour les déplacements du robot
  2. L’évitement :  détection d’un (ou deux) adversaire(s) et d’un partenaire + algorithme pour effectuer une éventuelle manœuvre de contournement.

Nous pouvons nettement nous améliorer sur ces deux points, mais jusqu’à présent la principale faiblesse de nos robots était leur manque de « visibilité ». Nous allons donc commencer par améliorer la vue de nos robots.

Voici un état des lieu et l’avancement du projet « évitement 2016 » en ce début juillet : 

 

Etat des lieux (depuis 2012) :


Pour l’évitement notre meilleur robot est Cub’hot (notre petit de 2013), quelques exemples dans le best of :

L’évitement était cruciale cette année là, avec la plupart du temps 4 robots sur la table et des éléments de jeu partagés sur toute l’air. Il était donc programmé avec des manœuvres d’évitement pour changer d’objectif et essayer de marquer le maximum de points sans bloquer le match.

L’évitement était efficace, mais seulement avec des télémètres ultrasons qui présentent trois contraintes :

  1. Pas de distinction entre les éléments de la table et les adversaires… il faut donc trouver des solutions supplémentaires pour exclure ce qui est détecté.
  2. Même si le capteur peut donner une mesure sur 15 mètre, en réalité le robot n’arrive à s’en sortir que sur du proche (détection <30cm autour du robot). A cette distance d’évitement, aucune anticipation n’est possible… ce qui génère d’importantes pertes de temps sur seulement 90s par match.
  3. Bien qu’assez stable et fiable en compétition, les perturbations sont courantes avec un adversaire utilisant la même technologie.

 

Une tourelle tournante « Laser » :


Pour 2016 il est temps de coupler les US avec une autre technologie pour palier à tous ces problèmes de détection. Plusieurs projets en cours :  une couronne d’Infra-rouge mais également une tourelle tournante avec lasers.

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 Classe 1 (imposé par le règlement) 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.

  1. La précision est 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)
  2. Le temps de réponse du 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 rapide 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:

CAO_V1

 

 

Réalisation mécanique du prototype :


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

IMG_1634 IMG_1635

 

IMG_1636

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 :

prog

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 🙂

IMG_1652

 

Pour aller plus loin :


Beaucoup d’autres solutions mécaniques sont possibles:

  1. mettre à l’horizontale les capteurs laser (pour les avoir le plus haut possible)
  2. avoir une balise autonome en 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)
  3. Tourner un miroir à 45° pour éviter de faire tourner de l’électronique mais empêche l’utilisation de plusieurs lasers.
  4. 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 :


 

 

Balise 2016 : tourelle lasers

Laisser un commentaire

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