Odométrie

Odométrie d'un robot ; la distance parcourue par chacune des roues est identique, mais les positions finales sont différentes.

L’odométrie est une technique permettant d'estimer la position d'un véhicule en mouvement. Le terme vient du grec hodos (voyage) et metron (mesure)[1]. Cette mesure de bas niveau est présente sur quasiment tous les robots mobiles, grâce à des capteurs embarqués permettant de mesurer le déplacement du robot (de ses roues).

Principe

L'odométrie repose sur la mesure individuelle des déplacements des roues pour reconstituer le mouvement global du robot. En partant d'une position initiale connue et en intégrant les déplacements mesurés, on peut ainsi calculer à chaque instant la position courante du véhicule.

Modèle de déplacement

Pour calculer le mouvement global du robot à partir des mesures odométriques, il est nécessaire de disposer d'un modèle décrivant le déplacement du robot. L'exemple le plus courant en robotique est celui d'un robot dont le déplacement est contrôlé par le différentiel de vitesse entre les deux roues motrices.

On note :

  • d g {\displaystyle d_{g}} et d d {\displaystyle d_{d}} les déplacements respectifs des roues gauche et droite ;
  • v g {\displaystyle v_{g}} et v d {\displaystyle v_{d}} les vitesses respectives des roues gauches et droite ;
  • x {\displaystyle x} , y {\displaystyle y} , θ {\displaystyle \theta } les coordonnées du robot (position et orientation dans le sens trigonométrique) ;
  • d {\displaystyle d} le déplacement du robot ;
  • v {\displaystyle v} la vitesse du robot ;
  • e {\displaystyle e} l'écart entre les deux roues ;
  • x O {\displaystyle x_{O}} , y O {\displaystyle y_{O}} et R {\displaystyle R} les coordonnées du centre O {\displaystyle O} du cercle trajectoire et le rayon de celui-ci.

Modèle direct

Si on suppose que la trajectoire du robot est un cercle de rayon R {\displaystyle R} parcouru à la vitesse angulaire d θ d t {\displaystyle \textstyle {\frac {\mathrm {d} \theta }{\mathrm {d} t}}} ( R > 0 {\displaystyle R>0} ). si le cercle est parcouru dans le sens trigonométrique, alors on a :

v = R d θ d t {\displaystyle v=R\;{\frac {\mathrm {d} \theta }{\mathrm {d} t}}}

Dans ce cas, les vitesses des roues sont données par :

{ v g = ( R e 2 ) d θ d t = ( R e 2 ) v R v d = ( R + e 2 ) d θ d t = ( R + e 2 ) v R {\displaystyle \left\{{\begin{matrix}v_{g}&=&\displaystyle (R-{\frac {e}{2}})\;{\frac {\mathrm {d} \theta }{\mathrm {d} t}}&=&\displaystyle (R-{\frac {e}{2}}){\frac {v}{R}}\\v_{d}&=&\displaystyle (R+{\frac {e}{2}})\;{\frac {\mathrm {d} \theta }{\mathrm {d} t}}&=&\displaystyle (R+{\frac {e}{2}}){\frac {v}{R}}\end{matrix}}\right.}

On a donc construit un modèle direct du déplacement du robot (i.e. un modèle permettant de calculer les vitesses v g {\displaystyle v_{g}} et v d {\displaystyle v_{d}} des roues en fonction des paramètres de la trajectoire globale v {\displaystyle v} et R {\displaystyle R} .

Modèle inverse

L'odométrie va cependant nécessiter la connaissance du modèle inverse du déplacement du robot : connaissant les mesures odométriques, on cherche à retrouver les paramètres de la trajectoire. On peut supposer qu'à chaque instant et durant un intervalle de temps très court, la trajectoire du robot s'apparente à un cercle. Il suffit donc d'inverser le modèle direct précédemment construit pour un cercle, et on pourra reconstruire le rayon de courbure local de la trajectoire et la vitesse du robot.

L'inversion du système précédent donne :

{ v = v g + v d 2 R = e 2 v d + v g v d v g {\displaystyle \left\{{\begin{matrix}v&=&\displaystyle {\frac {v_{g}+v_{d}}{2}}\\R&=&\displaystyle {\frac {e}{2}}\,{\frac {v_{d}+v_{g}}{v_{d}-v_{g}}}\end{matrix}}\right.}

Calcul d'odométrie

On est maintenant en mesure de mettre à jour la position du robot en temps réel :

  • à chaque instant, les mesures odométriques donnent les déplacements des roues d g {\displaystyle d_{g}} et d d {\displaystyle d_{d}} depuis l'instant précédent ;
  • le modèle inverse (dans lequel l'intervalle de temps a été éliminé et les vitesses remplacées par des déplacements) permet de calculer le déplacement d {\displaystyle d} du robot et le rayon de courbure instantané R {\displaystyle R} de la trajectoire ;
  • on calcule le changement d'orientation d θ {\displaystyle \mathrm {d} \theta } du robot et les coordonnées du centre O {\displaystyle O} du cercle trajectoire :
d θ = d R {\displaystyle \mathrm {d} \theta ={\frac {d}{R}}}
{ x O = x R cos ( θ π 2 ) y O = y R sin ( θ π 2 ) {\displaystyle \left\{{\begin{matrix}x_{O}&=&x-R\,\cos(\theta -{\frac {\pi }{2}})\\y_{O}&=&y-R\,\sin(\theta -{\frac {\pi }{2}})\end{matrix}}\right.}
  • on met à jour la position du robot :
{ θ θ + d θ x x O + R cos ( θ π 2 ) y y O + R sin ( θ π 2 ) {\displaystyle \left\{{\begin{matrix}\theta &\leftarrow &\theta +\mathrm {d} \theta \\x&\leftarrow &x_{O}+R\,\cos(\theta -{\frac {\pi }{2}})\\y&\leftarrow &y_{O}+R\,\sin(\theta -{\frac {\pi }{2}})\end{matrix}}\right.}

Liens externes

  • http://www.seattlerobotics.org/encoder/200108/using_a_pid.html

Notes et références

  1. D. Fernandez et A. Price, « Visual odometry for an outdoor mobile robot », IEEE Conference on Robotics, Automation and Mechatronics, 2004., vol. 2,‎ , p. 816–821 vol.2 (DOI 10.1109/RAMECH.2004.1438023, lire en ligne, consulté le )
  • icône décorative Portail de la robotique