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

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
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
Tpour les différents instants du profil de mouvement - un tableau
Vpour les valeurs de vitesse \(V_C\) pour chaque instant deT - un tableau
Rpour les valeurs de rayon \(R\) pour chaque instant deT
La valeur \(\infty\) s’écritINF.
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 …
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é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.
- 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)
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
// Profil de vitesse) afin de commander au robot d’effectuer un déplacement en ligne droite d’une distance de 50 cm.
