Localisa)on et naviga)on de robots
TD1: Odométrie
Fabio MORBIDI
TD1: Odométrie
Objec2f: Es)ma)on de la trajectoire d’un robot mobile
• Calculer la pose d’un robot unicycle (à conduite différen)elle) à par)r de l’odométrie
• Tracer la posi)on instantanée et simuler la trajectoire du robot
• Iden)fica)on de l’erreur (incer)tude) par le calcul de la matrice de covariance
• Extrac)on et affichage des ellipses d’erreur sur la
(x, y, ✓)
TD1: Odométrie
Matériel: Répertoire packTD1.zip Fichier « simu.m » u)lise :
• Fichier « initRobot » pour les paramètres du robot
• Fichier « initBruits » pour simuler:
• Le bruit d’une commande mal appliquée
• Le bruit de percep)on des capteurs
• Fichier « genereTrajs »
• pour générer la trajectoire du robot
• S’il applique parfaitement la commande
• Si on prends en compte les bruits
• Donne les valeurs des angles de chaque roue: et '
TD1: Odométrie
Matériel: Répertoire packTD1.zip
Répertoire « ou)ls » con)ent des fonc)ons:
• « Drawarrow » : Dessiner une flèche
• « Drawroundedrect » : Dessiner des rectangles
• « Drawellipse » : Dessiner une ellipse
• « Drawrobot » : Dessiner un robot
Exercice 1
Fonc2on « MAJEtatOdometrie »:
• Entrées:
• Les distance parcourues par la roue gauche et droite entre deux instants de temps et la pose courante du robot
• La largeur de l'essieu,
• Sor2e:
• Mise à jour de la pose :
U)liser ce@e fonc)on dans le fichier « simu.m » pour tracer le robot à chaque instant
p
0= [x
0, y
0, ✓
0]
Tp
L
Exercice 1
Fonc2on « MAJEtatOdometrie »:
x = s cos(✓ + ✓/2)
y = s sin(✓ + ✓/2)
✓ = s
ds
gL
s = s
d+ s
g2
p 0 = 2 6 4
x 0 y 0
✓ 0 3
7 5 = p + 2 6 4
s cos(✓ + ✓/2) s sin(✓ + ✓/2)
✓
3 7 5 p =
2 6 4
x y
✓ 3 7 5
,
,
,
Exercice 1
Fonc2on « MAJEtatOdometrie »:
x = s cos(✓ + ✓/2)
y = s sin(✓ + ✓/2)
✓ = s
ds
gL
s = s
d+ s
g2
p = 2 6 4
x y
✓ 3 7 5
p
0= f (x, y, ✓, s
d, s
g) = 2 6 4
x y
✓ 3 7 5 +
2 6 6 6 6 4
sd+ sg
2
cos ⇣
✓ +
sd2L sg⌘
sd+ sg
2
sin ⇣
✓ +
sd2L sg⌘
sd sg L
3 7 7 7 7 5
,
,
Exercice 1
Fonc2on « MAJEtatOdometrie »:
Exercice 1
Dans le ficher « simu.m »
Ssss
s
Exercice 1
Ss
Exercice 2
Propaga2on de l’erreur:
Fonc)on « propageErreurs » pour le calcul de la matrice de covariance
• Entrées:
• La matrice de covariance associée à l’état précédent
• L’état à l’instant précédent
• L’incrément courant
• Les paramètres
• Sor2e:
• Matrice de covariance
⌃ p
⌃ p
0⌃
L, k
g, k
dExercice 2
⌃ = cov( s
d, s
g) =
"
k
d| s
d| 0
0 k
g| s
g|
#
⌃
p0= r
pf · ⌃
p· ( r
pf )
T+ r
dgf · ⌃ · ( r
dgf )
Tr
pf =
@ f
@ x
@ f
@ y
@ f
@✓ = 2 6 4
1 0 s sin(✓ + ✓/2) 0 1 s cos(✓ + ✓/2)
0 0 1
3 7 5
r dgf =
@f
@ sd
@f
@ sg = 2 64
1
2 cos(✓ + ✓/2) 2Ls sin(✓ + ✓/2) 12 cos(✓ + ✓/2) + 2Ls sin(✓ + ✓/2)
1
2 sin(✓ + ✓/2) + 2Ls cos(✓ + ✓/2) 12 sin(✓ + ✓/2) 2Ls cos(✓ + ✓/2)
1/L 1/L
3 75