89
4 – Robot mobili DIFFERENTIAL DRIVE ROVER Jacopo Sini ROBOTICS@MIDDLESCHOOL v 1.1 - Torino, 25/05/2015 Revisione da 1.0 a 1.1 del 28/08/2015

4 - Robot mobili - DDR - Robot... · 2016. 3. 6. · 4 –Robot mobili DIFFERENTIAL DRIVE ROVER Jacopo Sini ROBOTICS@MIDDLESCHOOL v 1.1 - Torino, 25/05/2015 Revisione da 1.0 a 1.1

  • 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

    𝛿𝑙

    𝑞𝑖𝛿𝜑 𝑅