Odométrie

Objectif : programmer un robot à entraînement différentiel en utilisant la technique de l’odométrie.

Définition
L’odométrie est une technique permettant d’estimer la position d’un véhicule en mouvement en utilisant la mesure individuelle des déplacements de ses roues, afin de reconstituer le mouvement global du véhicule.

 

L’activité repose sur un robot à entraînement différentiel AlphaBot :

Prérequis : avoir déjà fait l’activité robot à entraînement différentiel.

 

Vous répondrez aux questions sur un document texte (MS Word ou LibreOffice Writer).

La présentation doit être claire, concise, soignée, et comporter des captures d’écran et photos pertinentes.

 

Présentation

Le robot AlphaBot

 Alphabot_Odometrie_2

Le programme proposé permet de piloter le robot Alphabot avec 2 paramètres uniquement :

  • la vitesse (en m/s) de son centre \(C\) : \(V_C=\left|V_{C\in A/0}\right|\)
  • le rayon (en m) de la trajectoire de \(C\) :
    • \(R \le 0\) pour un déplacement vers la gauche
    • \(R \ge 0\) pour un déplacement vers la droite
    • \(R=\infty\) pour un déplacement en ligne droite

Pour piloter le robot selon un mouvement prédéfini, le programme utilise des tableaux de valeurs :

  • un tableau T pour les différents instants du profil de mouvement
  • un tableau V pour les valeurs de vitesse  \(V_C\) pour chaque instant de T
  • un tableau R pour les valeurs de rayon \(R\) pour chaque instant de T
    La valeur \(\infty\) s’écrit INF.

Exemple : pour un échelon de vitesse comme ci-dessous :

On utilise les tableaux suivants :

// Profil de vitesse 
const unsigned int n = 4;  // nombre de points
unsigned long  T[n] = {0, 1000, 1001, 6000};   // instants [ms]
double         V[n] = {0, 0, 0.2, 0.2};        // vitesses [m/s]
double         R[n] = {INF, INF, INF, INF};    // rayons [m]

Remarque : on ne peut pas imposer un échelon « parfait », d’où le petit décalage de 1ms

 

 

Cahier des charges

Précision de positionnement :

  • Erreur de position du centre  < 5%
  • Erreur d’orientation < 3°

 


Travail demandé

Trajectoire en ligne droite

On souhaite faire avancer le robot en ligne droite :

Le robot étant commandé en « vitesse », pour effectuer un tel déplacement, il faut impérativement adopter une loi d’évolution de la vitesse qui débute et qui se termine par une vitesse nulle, comme par exemple une loi en trapèze :

Remarque : les valeurs des consignes en accélération/décélération ou en vitesse doivent impérativement être inférieures aux capacités du robots.

Dans le cas contraire, on pourrait avoir un phénomène de glissement, ou bien des vitesses inférieures à la consigne, rendant impossible tout calcul d’odométrie …

 

Donner l’expression de la distance théorique \(d\) parcourue par le robot en fonction de \(V_{C_{v}}\), \(T_a\) et \(T_v\).

 

On note \(a_{max}\) et \(V_{C_{max}}\) les valeurs absolues de l’accélération/décélération maximale et de la vitesse maximale dont le robot est capable.

De plus, on désire obtenir le déplacement du robot le plus rapide possible : \(a_{C}=a_{C_{max}}\) et \(V_{C_{v}}=V_{C_{max}}\).

Déterminer les expressions de \(T_a\) et \(T_v\) en fonction de \(d\) et \(a_{max}\) et \(V_{C_{max}}\).

 

Détermination expérimentale de \(V_{C_{max}}\) et \(a_{C_{max}}\)

Pour calculer les différents instants d’un profil de vitesse en trapèze, nous avons besoin de connaître les capacités du robot en termes de vitesse et accélération maximales.

Dans le programme, modifier le profil de vitesse pour imposer une consigne en échelon de 10m/s (très au delà des capacités effectives du robot !). Téléverser le programme.
À l’aide du matériel fourni (trépied, …), réaliser une courte vidéo du mouvement du robot.
  • le champ de vision soit le plus étroit possible (moins de déformations) : zoom optique au maximum,
  • le centre de l’image soit au centre du mouvement,
  • la scène soit la plus éclairée possible,
  • le fond, derrière le robot, soit le plus uni possible,
  • le mode de prise de vue soit le plus rapide avec la plus grande résolution possible (UHD 60fps)

 

À l’aide du logiciel Tracker, réaliser le pointage vidéo afin d’obtenir les coordonnées du point \(C\) au cours du mouvement.
Pour cela, suivre les instructions du tutoriel Tracker. Copier/coller les tableaux de valeur de chaque mouvement dans une feuille de calcul (tableur MS Excel, Open office Calc, …).

Pour la suite, on prendra \(V_{C_{max}}=0,5\;\text{m/s}\) et \(a_{C_{max}}=1,2\;\text{m/s^2}\) …

 

 

Mesure de la performance de précision

Modifier le programme (partie // Profil de vitesse) afin de commander au robot d’effectuer un déplacement en ligne droite d’une distance de 50 cm.

 

Mesurer la distance effectivement parcourue, ainsi que la variation d’orientation. Conclure quant au respect du cahier des charges.

 

Laisser un commentaire

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