Sei sulla pagina 1di 9

ca

Lu
Odometria nei robot

e
“DDD”

iD
Differential Dual Drive
nn
va
io

Giovanni De Luca
G

www.delucagiovanni.com
Odometria - Dead Reckoning

ca
„ Si basa sul calcolo dei giri effettuati dalle ruote del

Lu
robot (misurata con gli encoder) durante gli
spostamenti.

e
„ Fornisce una buona accuratezza su piccoli

iD
spostamenti.
„ L’errore commesso si accumula nel tempo con la
nn
distanza percorsa dal robot (scarsa precisione sulle
va
lunghe distanze).
„ L’informazione odometrica viene corretta utilizzando
io

sistemi di localizzazione alternativi.


G

Giovanni De Luca Navigazione Robotica 2


Odometria - Dead Reckoning

ca
Esempio di calcolo dell’odometria (per piccoli spostamenti)

Lu
Y
C’

e
iD
C
nn
va
io

C = (X,Y,θ) X
G

C’ = (X’,Y’,θ’)
Giovanni De Luca Navigazione Robotica 3
Odometria - Dead Reckoning

ca
Supponiamo che dopo un certo intervallo (I) gli encoder della ruota sinistra

Lu
e destra abbiano registrato rispettivamente un incremento del numero
di impulsi pari a NL e NR.
Sia

e
Cm = π D/n Ce

iD
dove
Cm = fattore di conversione che traduce gli impulsi lineari
in distanza lineare effettuata delle ruote
nn
D = diametro nominale delle ruote
Ce = risoluzione degli encoder
va
n = Rapporto di riduzione tra motore (dove è posizionato l’encoder)
e ruota
io
G

Giovanni De Luca Navigazione Robotica 4


Odometria - Dead Reckoning

ca
Lu
e
iD
nn
va
io
G

Giovanni De Luca Navigazione Robotica 5


Odometria - Dead Reckoning

ca
Possiamo calcolare la distanza percorsa dalle ruote sinistra e destra,
ΔUL,i

Lu
e ΔUR, come

ΔUL/R,i = Cm NL/R,i

e
iD
Allora, la distanza percorsa dal centro del robot, ΔUi risulta essere:

ΔUi = (ΔUL,i + ΔUR,i)/2


nn
Mentre l’angolo di orientazione del robot risulta essere incrementato di
va
Δθi=(ΔUR,i + ΔUL,i)/b
io

Dove (b) è la distanza tra le due ruote della base (idealmente misurata
G

come la distanza tra i punti di contatto delle le ruote con il pavimento)

Giovanni De Luca Navigazione Robotica 6


Odometria - Dead Reckoning

ca
La nuova posizione del robot risulta essere:

Lu
θi= θi-1+ Δθi
xi= xi-1+ ΔUi cosθi

e
yi= yi-1+ ΔUi sinθi

iD
Dove (xi-1 ,yi-1 ,θi-1) era la posizione nello spazio del centro
del robot c. nn
va
io
G

Giovanni De Luca Navigazione Robotica 7


Calcolo spostamento lineare

ca
Lu
--- Calcolo spostamento lineare delle ruote Cm ------
Cm = (Pi * diametro_ruote) / (riduzione * impulsi_encoder)

e
Cm = (3.1415926 * 100) / (43 * 400)

iD
Cm = 314.15926 / 17200
Cm = 0,018265073 per ogni impulso encoder
Inverso nn
1 / 0,018265073 = 54.74
va
--------------------------------------------------------------------
io
G

Giovanni De Luca Navigazione Robotica 8


Calcoli odometrici

ca
(Timer 10 mSec o meno)
Differenza(1) = (Val_Encoder(1) - Val_Encoder_Old(1))
Differenza(2) = (Val_Encoder(2) - Val_Encoder_Old(2))

Lu
Delta(1) = Differenza(1) / Spostamento_lineare_ruota
Delta(2) = Differenza(2) / Spostamento_lineare_ruota

e
Delta_U = (Delta(1) + Delta(2)) / 2

iD
Delta_Theta = (Delta(2) - Delta(1)) / Interasse_ruote
Theta = Theta + Delta_Theta

nn
Xpos = Xpos_old + Delta_U * Cos(Theta)
Ypos = Ypos_old + Delta_U * Sin(Theta)
va
Angolo = Theta * 180 / PI
Xpos_old = Xpos
Ypos_old = Ypos
io

Val_Encoder_Old(1) = Val_Encoder(1)
G

Val_Encoder_Old(2) = Val_Encoder(2)

Giovanni De Luca Navigazione Robotica 9