Vous êtes sur la page 1sur 9

CALCUL DE LA POSITION REELLE APRES DEPLACEMENT

GENERATION DES CONSIGNES


OPTIMISATION DES TRAJECTOIRES

CALCULS DE TRAJECTOIRES


08l00l8 00 lf8(00l0lf08 0000M0l8ll0



f0088 l f000ll0 $lfll 2


Calcul de position :

Le calcul de position par odomtrie consiste en la rcupration des dplacements rels des
roues du robot. A partir de ces donnes, on va calculer le dplacement relatif [dx,dy] et la
variation dorientation du robot.



















)
2
.( 1
d
R M + =
2
1
d
R M + =
. 2
2 1 M M
R
+
= )) cos( 1 .( =R dx
)
2
.( 2
d
R M =
2
2
d
R M =
d
M M 2 1
= ) sin( . R dy=


Ces formules sont valables quelques soient le sens de dplacement du robot (avant ou
arrire), et le sens du virage (gauche ou droite).

Pour indication, on obtient les valeurs dangle et de rayon de courbure suivantes, selon
lvolution du robot :

d
R

dx
dy
M2
M1

d : Distance entre les roues, dans lunit de
mesure des codeurs.

Mi : Distance parcourue par une roue

: variation dangle dcrit par le robot (radian)

R : Rayon de courbure

R<0
<0
R>0
>0
R<0
>0
R>0
<0
x
y

08l00l8 00 lf8(00l0lf08 0000M0l8ll0



f0088 l f000ll0 $lfll 3

Systme dunit du robot :

Comme le robot ne connat pas plus le mtre que le feet ou les inchs, on va crer une
unit. Ce pourrait tre le broglub, trs courus sur Araounda la nbuleuse, ou le Casta (un
sous multiple du tour de poitrine de Leatitia, valeur universelle en soit). Non, ce sera
lIntervalle Robot Ir .

Pour donner une valeur de correspondance, je donne le calcul :

Prenez un moteur rducteur + codeur dun rapport de 1/6,3
Comptez 500 ppt pour le codeur
Rajoutez un rapport de 0,75 de par la transmission par engrenage.
Mettez une roue de 99,76 mm de diamtre, soit un primtre de 313,4 mm

Prenez un shaker, secouez, servez chaud : 13,4014 impulsions / mm
Soit le Ir 74,61905 m.

La distance entre les deux roues du robot est de 1716,3831 Ir.
d
Le point de rfrence pour toutes les
commandes se trouve exactement
entre les deux roues.

08l00l8 00 lf8(00l0lf08 0000M0l8ll0



f0088 l f000ll0 $lfll 4


Gnration des consignes :

Calcul des consignes M1=f
1
(dx,dy) et M2=f
2
(dx,dy) envoyer aux moteurs. Ces calculs sont
donn pour un vecteur relatif (coordonns par rapport la position actuelle du robot).

)) cos( 1 .( =R dx
) sin( .. R dy=


)) cos( 1 .( ) sin( . =dy dx On pose . 2 =
) ( sin . 2 . ) cos( ). sin( . 2 . dy dx =
) sin( . ) cos( . dy dx =
) tan( =
dy
dx


) arctan( . 2
dy
dx
= )
2
( 1
d
R M + =
) sin(
dy
R= )
2
( 2
d
R M =


Rectification de trajectoires :

Ces formules utilise seules cela pourraient induire des trajectoires qui prennent trop
de dbattement. Lextrme tant un dplacement avec dy=0, le robot dcrit un demi cercle
complet, et langle final est gal 180























V


x
y
De
Marche avant






Marche arrire

08l00l8 00 lf8(00l0lf08 0000M0l8ll0



f0088 l f000ll0 $lfll 5

On remarque que = 2.. Lorientation finale du robot est le double de lorientation du
vecteur de consigne.
On remarque galement que De, la valeur du ventre entre la corde et larc de cercle, est
dautant plus lev que lest.

On en dduit que pour comprit entre 0et 22,5, la dviation du robot reste acceptable (0
45) et De faible. Cela impose que dx dy . 41 , 2 .

A titre indicatif, on peut estimer lcart relatif :
v
De
. 2 =


) (
4
1

. 2
dy dx
dy dx R R
+
+
=

Cette valeur est lexpression de lerreur maximale lors du dplacement. La valeur max est
obtenue pour dy=0,
2
dx
De= et = 1


08l00l8 00 lf8(00l0lf08 0000M0l8ll0



f0088 l f000ll0 $lfll 6


Modification dorientation :

Plutt que de faire une trajectoire la con, il est plus fut de mettre le robot dans une
orientation favorable. Pour cela, on effectue une rotation sur place, dx=dy=0. Ensuite, on
prendra le chemin le plus court pour se placer en [dx,dy]
On prendra logiquement pour , langle du vecteur de consigne : ) tan(
dy
dx
Arc =
2
. 1
d
M =
2
. 2
d
M =

Bien entendus, dans ce cas, il est impratif de recalculer lorientation du robot aprs
excution de la commande de rotation, pour prendre en compte lerreur dans la commande
de dplacement. On obtient un logigrame de ce genre :




































Dbut
dx dy . 41 , 2 ?
Rorientation
Calcul position et
orientation relle
Calcul [dx,dy]
dans la nouvelle
base
Calcul de M1 et
M2 dplacement
Calcul de M1 et
M2 rorientation
Excution
dplacement
fin

08l00l8 00 lf8(00l0lf08 0000M0l8ll0



f0088 l f000ll0 $lfll 7

Calcul du vecteur de consigne dans une nouvelle base de mme
origine :

En modifiant lorientation lorigine du robot, on modifie galement les coordonnes du
vecteur. Cest mme le but dune rorientation.












) sin( . ) cos( . ' dy dx dx =

) sin( . ) cos( . ' dx dy dy + =







Calcul du vecteur de consigne dans une base colinaire :

On ne pourra viter un lger dplacement pendant une rorientation. De plus, cette fonction
sera utilis par les gnrations avances de trajectoires.



















dx
dy
dx
dy
Un brave franais du nom de
Michel Chasles en a dj parl,
mais on sen lasse pas :

x V dx dx = '

y V dy dy = '



V


08l00l8 00 lf8(00l0lf08 0000M0l8ll0



f0088 l f000ll0 $lfll 8



Gnralisation pour un dplacement quelconque :

Simple, on tient compte des deux phnomnes :

) sin( ). ( ) cos( ). ( ' y x V dy V dx dx =
) sin( ). ( ) cos( ). ( ' x y V dx V dy dy + =

Optimisation de trajectoire, prise en compte dune consigne
dangle :

Il peut tre intressant darriver au point dsign avec un angle prcis. Pour cela, on
peut calculer un point de retrait. Bien entendu, il est des orientations particulires pour
lesquelles cette fonctionnalit nest pas judicieuse. On peut alors dfinir des conditions
particulires dutilisation.



















Restrictions :

Le vecteur de dplacement doit tre suffisamment important pour que la modification
de trajectoire ne soit pas trop sensible.
Si langle final est gal loppos de langle du vecteur de dplacement, une
variation prs. Cela revient rouler sur lobjectif avant de se placer. Cest souvent
inutile de prendre des prcautions.

Ces restrictions, sous forme mathmatique sexpriment par :

dx+dy > Vmin. Vmin reprsente le module minimum du vecteur de dplacement
au carr.
[+ ; ++ ]. reprsente louverture dangle viter.
Une consigne complte ne se
contente pas dun dplacement. On
doit galement prendre en compte
langle souhait larrive.

Ici, en rouge, le vecteur de
consigne de dplacement. En vert,
la consigne dorientation finale.


08l00l8 00 lf8(00l0lf08 0000M0l8ll0



f0088 l f000ll0 $lfll 9



















Calcul du point de retrait C:

Le vecteur de retrait est calcul sur une base de longueur fixe Vret, et une orientation gale
lorientation finale souhaite.

Vret
x
= Vret.sin()
Vret
y
= Vret.cos()

Cx = dx - Vret.sin()
Cy = dy - Vret.cos()

La longueur Vret est dterminer, bien entendus, toujours dans le systme dunit du robot.

Pour effectuer cette trajectoire, on ralisera les lments suivant :

1. Calcul du point C.
2. Si ncessaire modification dorientation vers le point C.
3. Si ncessaire, re-calcul des points C et objectif final (point et angle) une fois
modification dorientation effectue.
4. Dplacement vers le point C.
5. Calcul du nouvel angle et du nouvelles coordonnes du point final dans la base du
robot en C.
6. r-Orientation dans langle .
7. Calcul des coordonnes du point final.
8. Dplacement vers le point final.



2

C

Vous aimerez peut-être aussi