Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.
robotics:odometrie [2013/06/04 10:17] gdo [Approximation par arc de cercle] |
robotics:odometrie [2014/09/18 14:26] (Version actuelle) ldo [Implementation] |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
L'odométrie est une technique de localisation relative d'un robot. En mesurant tous les déplacements du robot depuis son point d'origine, il est possible de calculer à chaque instant sa position et son orientation sur la table. | L'odométrie est une technique de localisation relative d'un robot. En mesurant tous les déplacements du robot depuis son point d'origine, il est possible de calculer à chaque instant sa position et son orientation sur la table. | ||
- | ==== Principe ==== | + | ===== Principe ===== |
Un odomètre (roue codeuse placée au centre du robot) nous permet de connaître la distance parcourue par le robot. Cette seule information de distance ne permet pas de positionner le robot dans un système de coordonnées. | Un odomètre (roue codeuse placée au centre du robot) nous permet de connaître la distance parcourue par le robot. Cette seule information de distance ne permet pas de positionner le robot dans un système de coordonnées. | ||
Ligne 10: | Ligne 10: | ||
==== Approximation par segment de droite ==== | ==== Approximation par segment de droite ==== | ||
On suppose que la trajectoire du robot est découpée en une série de segment. A chaque intervalle de temps, le robot effectue un déplacement rectiligne suivant son orientation précédente. \\ | On suppose que la trajectoire du robot est découpée en une série de segment. A chaque intervalle de temps, le robot effectue un déplacement rectiligne suivant son orientation précédente. \\ | ||
- | {{:robotics:segment.png?400|}} | + | {{ :robotics:segment.png?400| }} |
=== Distance moyenne du robot === | === Distance moyenne du robot === | ||
La distance moyenne parcourue par le robot est la distance moyenne parcourue par les 2 roues du robot : Δdr = (Δdd + Δdg) / 2. | La distance moyenne parcourue par le robot est la distance moyenne parcourue par les 2 roues du robot : Δdr = (Δdd + Δdg) / 2. | ||
Ligne 78: | Ligne 78: | ||
Cette approximation est plus précise que l'approximation par segment mais nécessite plus de calcul. | Cette approximation est plus précise que l'approximation par segment mais nécessite plus de calcul. | ||
- | ==== Implementation ==== | + | ===== Implementation ===== |
<code c> | <code c> | ||
typedef struct | typedef struct | ||
Ligne 94: | Ligne 94: | ||
p->x += distance * cos(p->O); | p->x += distance * cos(p->O); | ||
p->y += distance * sin(p->O); | p->y += distance * sin(p->O); | ||
- | p->O += atan2(angle, entraxe); | + | p->O += angle/entraxe; //atan2(angle, entraxe); |
} | } | ||
Ligne 146: | Ligne 146: | ||
</code> | </code> | ||
- | ==== Conclusion ==== | + | ===== Conclusion ===== |
- | Pour des mesures régulières et fréquences dans un environnement restreint (table eurobot 2 x 3 m), les deux approximations sont sensiblement équivalentes. Nous avons effectué les calculs sur une ARDUINO UNO et tracé les deux courbes qui sont quasiment identiques. | + | Pour des mesures régulières et fréquentes dans un environnement restreint (table eurobot 2 x 3 m), les deux approximations sont sensiblement équivalentes. Nous avons effectué les calculs sur une ARDUINO UNO et tracé les deux courbes qui sont quasiment identiques. |
{{:robotics:mongraphe.png?400|}} | {{:robotics:mongraphe.png?400|}} | ||