Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
4 – Robot mobili
DIFFERENTIAL DRIVE ROVER
Jacopo Sini
ROBOTICS@MIDDLESCHOOL
v 1.1 - Torino, 25/05/2015Revisione da 1.0 a 1.1 del 28/08/2015
ROBOTICS@MIDDLESCHOOL 4DDR.2
In queste diapositive vedremo:
• Pianificazione della traiettoria
• Differential drive rover
• Guida differential drive
• Programmazione
• Calcolo delle distanze
• (Appendice) Descrizione analitica
ROBOTICS@MIDDLESCHOOL 4DDR.3
Immaginiamo di dover far muovere il nostrorover all’interno di una corsia: come possiamofornirgli il percorso da seguire?
ROBOTICS@MIDDLESCHOOL 4DDR.4
ROBOTICS@MIDDLESCHOOL 4DDR.5
Si vuole far percorrere alrover la corsia in figura (dicui la mappa e’ nota)
Come possiamo fornirgliindicazioni utili per lapianificazione del percorso?
ROBOTICS@MIDDLESCHOOL 4DDR.6
Per prima cosa tracciamo sullamappa la traiettoria cheriteniamo migliore.Vogliamo quindi mantenere laproiezione del punto mediodell’asse fra le due ruote suquesta traiettoria, cosi’ comemostrato in figura.
ROBOTICS@MIDDLESCHOOL 4DDR.7
Fissiamo ora un sistema diriferimento (in questo caso, adesempio, scegliamo di piazzarel’origine degli assi all’iniziodella traiettoria)
x
y
ROBOTICS@MIDDLESCHOOL 4DDR.8
Notiamo subito che alcuni trattidella nostra traiettoria sonoquasi rettilinei, quindi possiamosemplicemente far ruotare,per una certa distanza, ledue ruote alla stessavelocita’.In alcuni tratti possiamosostituire la linea con deisegmenti.
x
y
ROBOTICS@MIDDLESCHOOL 4DDR.9
Rettilinei
x
y
ROBOTICS@MIDDLESCHOOL 4DDR.10
Cosa possiamo fare nei
tratti rimasti vuoti?
x
y
ROBOTICS@MIDDLESCHOOL 4DDR.11
Ricordiamoci che non possiamofar compiere angoli al nostrorobot, ma solo curve.
Un’idea potrebbe esserequella di approssimare latraiettoria rossa con unacirconferenza.
x
y
ROBOTICS@MIDDLESCHOOL 4DDR.12
asse ruote motrici
ROBOTICS@MIDDLESCHOOL 4DDR.13
Punto medio asse ruote motrici
ROBOTICS@MIDDLESCHOOL 4DDR.14
Fisso opportunamente un raggio di curvatura
ROBOTICS@MIDDLESCHOOL 4DDR.15
Fisso opportunamente un raggio di curvatura
ROBOTICS@MIDDLESCHOOL 4DDR.16
Fisso opportunamente un raggio di curvatura
Dal punto di vista matematico,fissare un raggio di curvaturaopportuno non e’ un passobanale.
Per quanto ci riguardaconsidereremo sempre quei casidove questo sia fornito oevidente.
ROBOTICS@MIDDLESCHOOL 4DDR.17
Fisso un errore massimo rispetto alla traiettoria
rossa
ROBOTICS@MIDDLESCHOOL 4DDR.18
Quando raggiungo l’errore massimo
raccordo la circonferenza ottenuta con il
segmento o circonferenza
successivi
ROBOTICS@MIDDLESCHOOL 4DDR.19
Una possibile soluzione allapianificazione della traiettoria
x
y
Épunti di raccordo
ROBOTICS@MIDDLESCHOOL 4DDR.20
Annotiamo quindi le coordinate(cartesiane) dei punti di raccordo ei raggi di curvatura.
x
y
𝑅2
𝑅1(𝑥1, 𝑦1)
(𝑥2, 𝑦2)
(𝑥3, 𝑦3)
(𝑥4, 𝑦4)
(𝑥5, 𝑦5)(𝑥6, 𝑦6)
ROBOTICS@MIDDLESCHOOL 4DDR.21
In alcune applicazioni dei robot mobiliterrestri (chiamati rover), potrebbe esseretroppo costoso o complesso realizzare unsistema di sterzatura delle ruote, come quelloche si trova comunemente nelle auto.
In questi casi è possibile fornire direzionalitàal robot tramite la tecnica differential drive.
La tecnica differential drive consiste nel farmuovere le ruote del robot a velocitàindipendenti l’una dall’altra.
Analizzeremo, fra tutte le possibiliconfigurazioni, quella a due ruote motricisullo stesso asse e terza ruota condotta.
ROBOTICS@MIDDLESCHOOL 4DDR.22
ROBOTICS@MIDDLESCHOOL 4DDR.23
Vista del differential driver rover dall’alto:
ROBOTICS@MIDDLESCHOOL 4DDR.24
Le RUOTE MOTRICI sono poste inrotazione dai MOTORI.
Come si puo’ vedere le dueruote stanno sullo stesso assee sono parallele, ma essendocollegate a due differentimotori possono avere diversevelocita’
RUOTE MOTRICI
ROBOTICS@MIDDLESCHOOL 4DDR.25
La ruota condotta fornisce ilterzo appoggio al robot.
Ruota condotta
ROBOTICS@MIDDLESCHOOL 4DDR.26
Oltre a fornire l’appoggio alrover, la ruota condotta nondeve opporre resistenza allarotazione.Ruotando attorno allacerniera èe’ in grado di seguirefluidamente la traiettoriaimposta dalle ruote motrici, inmodo simile a quanto fanno leruote dei carrelli deisupermercati.
Cerniera ruota condotta
ROBOTICS@MIDDLESCHOOL 4DDR.27
Abbiamo appena visto che solo la ruotacondotta è in grado di sterzare, ma non hanessun motore.
Per affrontare le curve è necessario usare unatecnica differente da quella usata per la guidadelle automobili, che solitamente vieneimpiegata sui mezzi cingolati (quali carriarmati, pale meccaniche o spazzaneve).
ROBOTICS@MIDDLESCHOOL 4DDR.28
ROBOTICS@MIDDLESCHOOL 4DDR.29
ROBOTICS@MIDDLESCHOOL 4DDR.30
ROBOTICS@MIDDLESCHOOL 4DDR.31
ROBOTICS@MIDDLESCHOOL 4DDR.32
ROBOTICS@MIDDLESCHOOL 4DDR.33
ROBOTICS@MIDDLESCHOOL 4DDR.34
ROBOTICS@MIDDLESCHOOL 4DDR.35
Punto medio asse ruote motrici
ROBOTICS@MIDDLESCHOOL 4DDR.36
Centro di istantanea rotazione
ROBOTICS@MIDDLESCHOOL 4DDR.37
raggio di curvatura
ROBOTICS@MIDDLESCHOOL 4DDR.38
velocita’periferica
delle ruote
ROBOTICS@MIDDLESCHOOL 4DDR.39
velocita’periferica del punto medio
ROBOTICS@MIDDLESCHOOL 4DDR.40
La ruota condotta si
allinea alla tangente alla circonferenza
ROBOTICS@MIDDLESCHOOL 4DDR.41
Il caso limite si ha quando il raggio dicurvatura è pari all’interasse (cioè alladistanza tra le ruote).
Questo avviene quando una e una sola delledue ruote è ferma.
Per semplicità e a causa della struttura conruota condotta montata su un carrellino non siconsidereranno le ruote in rotazione con versiopposti.
ROBOTICS@MIDDLESCHOOL 4DDR.42
ROBOTICS@MIDDLESCHOOL 4DDR.43
ROBOTICS@MIDDLESCHOOL 4DDR.44
ROBOTICS@MIDDLESCHOOL 4DDR.45
ROBOTICS@MIDDLESCHOOL 4DDR.46
ROBOTICS@MIDDLESCHOOL 4DDR.47
ROBOTICS@MIDDLESCHOOL 4DDR.48
Ora che abbiamo trovato tutti i punti diraccordo e tutti i raggi di curvatura dobbiamoancora fornire al rover i due angoli che le dueruote devono percorrere.
Attenzione: ricorda che le ruote devonopercorrere l’angolo assegnato, impiegando lostesso tempo (dunque avranno velocitàperiferiche diverse).
ROBOTICS@MIDDLESCHOOL 4DDR.49
Forniamo ora un angolo di rotazione al nostroattuatore:
𝜃
ROBOTICS@MIDDLESCHOOL 4DDR.50
Che effetto ha questa rotazione sul punto dicontatto del rover con il suolo?
Per rispondere a questa domanda è necessariocapire qual è la relazione che lega l’angolo e ladistanza percorsa da una ruota.
ROBOTICS@MIDDLESCHOOL 4DDR.51
Per prima cosa misuriamo il raggio della ruota
𝑟
ROBOTICS@MIDDLESCHOOL 4DDR.52
𝜃
𝑙
ROBOTICS@MIDDLESCHOOL 4DDR.53
𝜃
𝑙
𝑟
𝑙 = 𝑟 ⋅𝜃
360
ROBOTICS@MIDDLESCHOOL 4DDR.54
Per percorrere un segmento di lunghezza 𝑙 èquindi sufficiente far ruotare entrambe leruote dello stesso angolo 𝜃.
𝜃 =𝑙 ⋅ 360
𝑟
ROBOTICS@MIDDLESCHOOL 4DDR.55
Per percorrere un arco di circonferenza ènecessario far percorrere distanze diversealle due ruote.
Come calcolare le due distanze noto il raggiodi curvatura?
4DDR.56ROBOTICS@MIDDLESCHOOL
4DDR.57ROBOTICS@MIDDLESCHOOL
4DDR.58ROBOTICS@MIDDLESCHOOL
Traiettoria del punto medio
4DDR.59ROBOTICS@MIDDLESCHOOL
Traiettoria ruota esterna
4DDR.60ROBOTICS@MIDDLESCHOOL
Traiettoria ruota interna
ROBOTICS@MIDDLESCHOOL 4DDR.61
Traiettoria seguita dal punto medio
ROBOTICS@MIDDLESCHOOL 4DDR.62
Traiettoria seguita dal punto medio
ROBOTICS@MIDDLESCHOOL 4DDR.63
Traiettoria seguita dal punto medio
ROBOTICS@MIDDLESCHOOL 4DDR.64
Traiettoria seguita dal punto medio
4DDR.65ROBOTICS@MIDDLESCHOOL
Raggiunta la fine del trattoda spazzare, secondo unatraiettoria circolare, il robotcontinuera’ la sua traiettoriaorientato nel modo indicato afianco (ossia la freccia biancaindicante il frontale delrover segue sempre ladirezione tangente allacirconferenza seguita).
4DDR.66ROBOTICS@MIDDLESCHOOL
Cosa accade se facciamocontinuare il moto del rovercon entrambe le ruote allastessa velocita’?
Il rover si muove secondo ladirezione tangente allacirconferenza appena seguita.
4DDR.67ROBOTICS@MIDDLESCHOOL
4DDR.68ROBOTICS@MIDDLESCHOOL
4DDR.69ROBOTICS@MIDDLESCHOOL
4DDR.70ROBOTICS@MIDDLESCHOOL
ROBOTICS@MIDDLESCHOOL 4DDR.71
Vediamo ora come calcolare l’angolo dapercorrere per spazzare un arco di 𝜑 gradisu una circonferenza di raggio 𝑅.
Per prima cosa, ricordiamo che la distanza
percorsa 𝑙 è pari a 𝑙 = 2𝜋𝑅 ⋅𝜑
360
ROBOTICS@MIDDLESCHOOL 4DDR.72
Misuriamo quindi l’interasse, cioè la distanza𝑘 tra il centro delle due ruote del nostro rover:
𝑘
4DDR.73ROBOTICS@MIDDLESCHOOL
𝑅
𝜑
𝑙 = 2𝜋𝑅 ⋅𝜑
360
4DDR.74ROBOTICS@MIDDLESCHOOL
𝑅 +𝑘2
𝜑
𝑙1 = 2𝜋 𝑅 +𝑘2
⋅𝜑
360
4DDR.75ROBOTICS@MIDDLESCHOOL
𝜑
𝑅 −𝑘2
𝑙2 = 2𝜋 𝑅 −𝑘2
⋅𝜑
360
4DDR.76ROBOTICS@MIDDLESCHOOL
𝜃2
𝑙2
𝜃2 =𝑙2 ⋅ 360
𝑅 −𝑘
2
𝜃1
𝑙1
𝜃1 =𝑙1 ⋅ 360
𝑅 +𝑘
2
𝑟 Raggio ruota motrice.
𝑅 Raggio di curvatura.
𝜃𝑖 Angolo (coordinate di giunto percorso dalla i-esima ruota motrice.
𝜑 Angolo (coordinate nello spazio di lavoro) spazzato durante la percorrenza di una traiettoria circolare.
𝑙 Distanza (lungo la curva) percorsa dal rover.
𝑙𝑖 Distanza (lungo la rispettiva curva) percorsa dalla i-esima ruota.
𝑘 Distanza euclidea tra i punti di appoggio delle due ruote motrici.
ROBOTICS@MIDDLESCHOOL 4DDR.77
BONA B. Modellistica dei robot industriali, Celid, Torino, 2002
CORKE P. Robotics, Vision and Control, star, Springer , 2011
FERRARESI C., RAPARELLI T., Meccanica Applicata, CLUT, 1992
MICROSOFT VIRTUAL ACADEMY
http://www.microsoftvirtualacademy.com/training-courses/sviluppare-
giochi-con-bambini-e-ragazzi
ROBOTICS@MIDDLESCHOOL 4DDR.78
Quest'opera è distribuita con Licenza
Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 4.0 Internazionale.
http://creativecommons.org/licenses/by-nc-sa/4.0/
ROBOTICS@MIDDLESCHOOL 4DDR.79
Per ottenere in versione digitale questo file egli altri della serie
polito.academia.edu/JacopoSini
http://bit.ly/1CLt7qB
http://creativecommons.org/licenses/by-nc-sa/4.0/
ROBOTICS@MIDDLESCHOOL 4DDR.80
Per completezza, anche se ben conscio delladifficoltà intrinseca della descrizione, vengonodi seguito riportate le descrizioni analitichenecessarie per implementare concretamenteuna pianificazione di traiettoria tramite latecnica differential drive.
4DDR.81ROBOTICS@MIDDLESCHOOL
Con 𝑘 interasse tra le ruote, 𝑅 raggio dicurvatura, 𝑣𝑙 e 𝑣𝑟 rispettivamente velocitàperiferica delle ruote, rispettivamente sinistrae destra, e 𝜔 velocità angolare, le seguentiequazioni forniscono la cinematica del rover:
𝑣𝑙 = 𝜔 𝑅 −𝑘
2
𝑣𝑟 = 𝜔 𝑅 +𝑘
2
𝑣𝑟 − 𝑣𝑙 =2𝜔𝑘
2→ 𝜔 =
𝑣𝑟 − 𝑣𝑙𝑘
𝑣𝑟 + 𝑣𝑙 = 2𝜔𝑅 → 𝑅 =𝑙(𝑣𝑟 + 𝑣𝑙)
2(𝑣𝑟 − 𝑣𝑙)
4DDR.82ROBOTICS@MIDDLESCHOOL
Considerando le equazioni a tempo discreto i eassumendo valori costanti durante l’intervallodi tempo:
𝐶𝐼𝑅𝑖 =𝐶𝑥𝑖𝐶𝑦𝑖
=𝑥𝑖 − 𝑅𝑖 sin(𝜑𝑖)𝑦𝑖 + 𝑅𝑖 cos(𝜑𝑖)
𝜔𝑖 =𝑣𝑟𝑖 − 𝑣𝑙𝑖
𝑘; 𝛿𝜑𝑖 =
𝑙𝑟𝑖 − 𝑙𝑙𝑖𝑘
𝑣𝑖 =𝑣𝑟𝑖 + 𝑣𝑙𝑖
2
𝜔𝑖 𝑅𝑖 +𝑘
2= 𝑣𝑟𝑖
𝜔𝑖 𝑅𝑖 −𝑘
2= 𝑣𝑙𝑖
𝑅𝑖 =𝑣𝑖𝜔𝑖
=𝑘(𝑣𝑟𝑖 + 𝑣𝑙𝑖)
2(𝑣𝑟𝑖 − 𝑣𝑙𝑖)
4DDR.83ROBOTICS@MIDDLESCHOOL
Considerando le equazioni a tempo discreto i eassumendo valori costanti durante l’intervallodi tempo:
𝐶𝐼𝑅𝑖 =𝐶𝑥𝑖𝐶𝑦𝑖
=𝑥𝑖 − 𝑅𝑖 sin(𝜑𝑖)𝑦𝑖 + 𝑅𝑖 cos(𝜑𝑖)
𝜔𝑖 =𝑣𝑟𝑖 − 𝑣𝑙𝑖
𝑘; 𝛿𝜑𝑖 =
𝑙𝑟𝑖 − 𝑙𝑙𝑖𝑘
𝑣𝑖 =𝑣𝑟𝑖 + 𝑣𝑙𝑖
2
𝜔𝑖 𝑅𝑖 +𝑘
2= 𝑣𝑟𝑖
𝜔𝑖 𝑅𝑖 −𝑘
2= 𝑣𝑙𝑖
𝑅𝑖 =𝑣𝑖𝜔𝑖
=𝑘(𝑣𝑟𝑖 + 𝑣𝑙𝑖)
2(𝑣𝑟𝑖 − 𝑣𝑙𝑖)
Centro di istantanea rotazione
4DDR.84ROBOTICS@MIDDLESCHOOL
Considerando le equazioni a tempo discreto i eassumendo valori costanti durante l’intervallodi tempo:
𝐶𝐼𝑅𝑖 =𝐶𝑥𝑖𝐶𝑦𝑖
=𝑥𝑖 − 𝑅𝑖 sin(𝜑𝑖)𝑦𝑖 + 𝑅𝑖 cos(𝜑𝑖)
𝜔𝑖 =𝑣𝑟𝑖 − 𝑣𝑙𝑖
𝑘; 𝛿𝜑𝑖 =
𝑙𝑟𝑖 − 𝑙𝑙𝑖𝑘
𝑣𝑖 =𝑣𝑟𝑖 + 𝑣𝑙𝑖
2
𝜔𝑖 𝑅𝑖 +𝑘
2= 𝑣𝑟𝑖
𝜔𝑖 𝑅𝑖 −𝑘
2= 𝑣𝑙𝑖
𝑅𝑖 =𝑣𝑖𝜔𝑖
=𝑘(𝑣𝑟𝑖 + 𝑣𝑙𝑖)
2(𝑣𝑟𝑖 − 𝑣𝑙𝑖)
Velocita’ punto medio asse
ruote
4DDR.85ROBOTICS@MIDDLESCHOOL
Considerando le equazioni a tempo discreto i eassumendo valori costanti durante l’intervallodi tempo:
𝐶𝐼𝑅𝑖 =𝐶𝑥𝑖𝐶𝑦𝑖
=𝑥𝑖 − 𝑅𝑖 sin(𝜑𝑖)𝑦𝑖 + 𝑅𝑖 cos(𝜑𝑖)
𝜔𝑖 =𝑣𝑟𝑖 − 𝑣𝑙𝑖
𝑘; 𝛿𝜑𝑖 =
𝑙𝑟𝑖 − 𝑙𝑙𝑖𝑘
𝑣𝑖 =𝑣𝑟𝑖 + 𝑣𝑙𝑖
2
𝜔𝑖 𝑅𝑖 +𝑘
2= 𝑣𝑟𝑖
𝜔𝑖 𝑅𝑖 −𝑘
2= 𝑣𝑙𝑖
𝑅𝑖 =𝑣𝑖𝜔𝑖
=𝑘(𝑣𝑟𝑖 + 𝑣𝑙𝑖)
2(𝑣𝑟𝑖 − 𝑣𝑙𝑖)
Distanza percorsa ruota destra e
sinistra
4DDR.86ROBOTICS@MIDDLESCHOOL
𝑥 𝑡 = 0
𝑡
cos 𝜑 𝜏 𝑣 𝜏 𝑑𝜏; 𝑦 𝑡 = 0
𝑡
sin𝜑 𝜏 𝑣 𝜏 𝑑𝜏
𝜑 𝑡 = 0
𝑡
𝜔 𝜏 𝑑𝜏
Se il tempo di campionamento è piccolo:
𝜔𝑖 =𝑑
𝑑𝑡𝜑 → 𝜔𝑖 ≅ 𝜑𝑖+1 ≝ 𝛿𝜑𝑖
𝑥𝑖+1𝑦𝑖+1𝜑𝑖+1
=cos(𝛿𝜑𝑖) − sin(𝛿𝜑𝑖) 0sin(𝛿𝜑𝑖) cos(𝛿𝜑𝑖) 0
0 0 1
𝑥𝑖 − 𝐶𝐼𝑅𝑥𝑖𝑦𝑖 − 𝐶𝐼𝑅𝑦𝑖
𝜑𝑖
+
𝐶𝐼𝑅𝑥𝑖𝐶𝐼𝑅𝑦𝑖𝛿𝜑𝑖
4DDR.87ROBOTICS@MIDDLESCHOOL
Approssimazione di Eulero
𝑥𝑖+1 = 𝑥𝑖 + 𝑣𝑖𝑇 cos(𝜑𝑖)𝑦𝑖+1 = 𝑦𝑖 + 𝑣𝑖𝑇 sin(𝜑𝑖)
𝜑𝑖+1 = 𝜑𝑖 + 𝜔𝑖𝑇𝛿𝑙
𝑞𝑖
𝑞𝑖+1
𝛿𝜑 𝑅
4DDR.88ROBOTICS@MIDDLESCHOOL
Approssimazione di Runge-Kutta
𝑥𝑖+1 = 𝑥𝑖 + 𝑣𝑖𝑇 cos 𝜑𝑖 +1
2𝜔𝑖𝑇
𝑦𝑖+1 = 𝑦𝑖 + 𝑣𝑖𝑇 sin 𝜑𝑖 +1
2𝜔𝑖𝑇
𝜑𝑖+1 = 𝜑𝑖 + 𝜔𝑖𝑇
𝑞𝑖+1
𝛿𝑙
𝑞𝑖𝛿𝜑 𝑅
4DDR.89ROBOTICS@MIDDLESCHOOL
Integrazione esatta
𝑥𝑖+1 = 𝑥𝑖 +𝜔𝑖𝑣𝑖
sin𝜑𝑖+1 − sin𝜑𝑖
𝑦𝑖+1 = 𝑦𝑖 +𝜔𝑖𝑣𝑖
cos𝜑𝑖+1 − cos𝜑𝑖
𝜑𝑖+1 = 𝜑𝑖 + 𝜔𝑖𝑇𝑞𝑖+1
𝛿𝑙
𝑞𝑖𝛿𝜑 𝑅