jeudi 23 juin 2011

Vidéos embarqué du robot

Voici quelques vidéos en direct de l'intérieur du robot dans lequel on avait embarqué une Gopro juste pour le fun :




mercredi 22 juin 2011

Méthode de calibration de l'odométrie de notre robot 2011

   Dans cet article je vais expliquer comment j’ai réglé l’odométrie du robot de 2011 (« Ibiza Dog II »). Mon objectif était d’avoir une méthode rapide à mettre en œuvre, je voulais être capable de la refaire à la coupe en cas de changement mécanique de dernière minute. J’ai décidé de me concentrer sur la calibration des paramètres pour le calcul du cap du robot. En effet je considère que si le cap est bon, une erreur sur le diamètre des roues utilisé pour le calcul de l’avancement du robot n’introduit qu’une erreur « d’échelle » qui ne s’accumule pas dans le temps contrairement aux erreurs sur la rotation qui font rapidement dériver la position du robot. Je souhaitais aussi que ma méthode soit « autosuffisante » et donc qu’elle ne nécessite aucun paramètre en entrée afin que son résultat ne dépende pas de la qualité de ces derniers.

   Autre point très important, je voulais prendre en compte les différences de diamètre entre la roue droite et la roue gauche. Il y a toujours une différence de diamètres entres les deux roues lié aux tolérances des processus de fabrication. Ces différences sont infimes et donc impossible à mesurer à la main. La prise en compte de cette différence commence à devenir indispensable dès qu’on souhaite avoir des erreurs sur le cap d’un ordre de grandeur inférieur à 0.1%. 0.1% peut sembler faible mais si en match le robot fait 5 tours sur lui-même, 0.1% correspond à une erreur d’environ 2° en fin de match, cette erreur de 2° au bout d’une ligne droite de 3m introduit une erreur de position de 10cm (PS, une erreur de 0.1% sur le diamètre des roues utilisé pour le calcul de l’avancement du robot introduit au bout de 3m une erreur de seulement 3mm …).

   Passons aux formules, le calcul du cap via les formules d’odométrie est le suivant :

   Avec l’avancement de la roue droite,  l’avancement de la roue gauche et L la distance entre les deux roues.
 
   Avec l’incrément du codeur droit, l’incrément du codeur gauche, le diamètre de la roue droite,  le diamètre de la roue gauche et ncodeur le nombre d’impulsions par tour des codeurs.

   Notre objectif va être de déterminer les constantes  et  qui sont les deux constantes qui nous permettrons de déterminer le cap du robot. 

   
   Pour déterminer  et  on va faire deux mesure ce qui nous permettra de résoudre le système suivant :


   Pour les mesures j’ai fait tourner le robot sur lui-même. La mesure de cap doit absolument être indépendante des mesures des codeurs, pour cela j'ai utilisé une boussole. Comme le robot tourne sur lui-même, localement le nord mesuré reste le même, pour limiter les effets des perturbations je commence et termine toujours les mesures au même relèvement. En pratique j’ai demandé au robot de faire 10 tours sur lui-même.
   Pour le choix des deux mesures, il ne faut pas faire deux fois la même séquence sinon les équations sont très proches et le système d’équation devient mal conditionné. Il faut avoir deux mesures suffisamment différentes en évitant cependant d’avoir un trop gros déséquilibre entre la rotation de la roue droite et la rotation de la roue gauche. J’ai donc choisis :
   Mesure 1 : Moteur droit en rotation +100%, moteur gauche rotation -33%
   Mesure 2 : Moteur droit en rotation -33%, moteur gauche rotation +100%

   Je ne détaillerais pas la résolution du système d’équation car je l’ai fait directement sur une calculatrice. A titre d'exemple les résultats m'ont montré une différence de diamètres des deux roues de 0.14% ou environ 0.18mm sur le diamètre d'une roue. Sur la précision de l’odométrie du robot il y a eu clairement un avant et un après l’utilisation des paramètres calculé ici.  Lors d’essais sur tables de match, j’ai constaté qu’en fin de match la précision du positionnement du robot était inférieure à 5cm.