72
4 – Robot mobili DIFFERENTIAL DRIVE ROVER Jacopo Sini ROBOTICS@MIDDLESCHOOL v.2 - Torino, 25/05/2015 Revisione da 1.1 a 2.0 del 15/02/2016

Robotics@MiddleSchool - Differential Drive Rover

  • Upload
    polito

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

4 – Robot mobili

DIFFERENTIAL DRIVE ROVER

Jacopo Sini

ROBOTICS@MIDDLESCHOOL

v.2 - Torino, 25/05/2015Revisione da 1.1 a 2.0 del 15/02/2016

ROBOTICS@MIDDLESCHOOL 4DDR.2

In queste slide verranno trattati:

β€’ Attuatori

β€’ Controllori

Controllore ProcessoObiettivo Attuatori

Sensori

+-

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.3

In queste diapositive vedremo:

β€’ Pianificazione della traiettoria

β€’ Differential drive rover

β€’ Guida differential drive

β€’ Programmazione

β€’ Calcolo delle distanze

β€’ (Appendice) Descrizione analitica

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.4

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.

Jacopo Sini

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.5Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.6

Vista del differential driver rover dall’alto:

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.7

Le RUOTE MOTRICI sono poste in

rotazione dai MOTORI.

Come si puo’ vedere le due

ruote stanno sullo stesso asse

e sono parallele, ma essendo

collegate a due differenti

motori possono avere diverse

velocita’

RUOTE MOTRICI

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.8

La ruota condotta fornisce il

terzo appoggio al robot.

Ruota condotta

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.9

Oltre a fornire l’appoggio al

rover, la ruota condotta non

deve opporre resistenza alla

rotazione.

Ruotando attorno alla

cerniera Γ¨e’ in grado di seguire

fluidamente la traiettoria

imposta dalle ruote motrici, in

modo simile a quanto fanno le

ruote dei carrelli dei

supermercati.

Cerniera ruota

condotta

ROBOTICS@MIDDLESCHOOL 4DDR.10

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).

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.11Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.12Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.13Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.14Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.15Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.16Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.17Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.18

Punto medio asse

ruote motrici

Jacopo Sini

Jacopo Sini ROBOTICS@MIDDLESCHOOL 4DDR.19

Centro di

istantanea

rotazione

ROBOTICS@MIDDLESCHOOL 4DDR.20

raggio di

curvatura

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.21

velocita’

periferica

delle ruote

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.22

velocita’

periferica del

punto medio

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.23

La ruota

condotta si

allinea alla

tangente alla

circonferenza

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.24

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.

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.25Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.26Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.27Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.28Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.29Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.30Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.31

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).

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.32

Forniamo ora un angolo di rotazione al nostroattuatore:

πœƒ

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.33

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.

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.34

Per prima cosa misuriamo il raggio della ruota

π‘Ÿ

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.35

πœƒ

𝑙

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.36

πœƒ

𝑙

π‘Ÿ

𝑙 = π‘Ÿ β‹…πœƒ

360

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.37

Per percorrere un segmento di lunghezza 𝑙 Γ¨quindi sufficiente far ruotare entrambe leruote dello stesso angolo πœƒ.

πœƒ =𝑙 β‹… 360

π‘Ÿ

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.38

Per percorrere un arco di circonferenza Γ¨necessario far percorrere distanze diversealle due ruote.

Come calcolare le due distanze noto il raggiodi curvatura?

Jacopo Sini

Jacopo Sini 4DDR.39ROBOTICS@MIDDLESCHOOL

Jacopo Sini 4DDR.40ROBOTICS@MIDDLESCHOOL

4DDR.41ROBOTICS@MIDDLESCHOOL

Traiettoria

del punto medio

Jacopo Sini

4DDR.42ROBOTICS@MIDDLESCHOOL

Traiettoria

ruota esterna

Jacopo Sini

4DDR.43ROBOTICS@MIDDLESCHOOL

Traiettoria

ruota interna

Jacopo Sini

Jacopo Sini ROBOTICS@MIDDLESCHOOL 4DDR.44

Traiettoria

seguita dal

punto medio

ROBOTICS@MIDDLESCHOOL 4DDR.45

Traiettoria

seguita dal

punto medio

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.46

Traiettoria

seguita dal

punto medio

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.47

Traiettoria

seguita dal

punto medio

Jacopo Sini

4DDR.48ROBOTICS@MIDDLESCHOOL

Raggiunta la fine del tratto

da spazzare, secondo una

traiettoria circolare, il robot

continuera’ la sua traiettoria

orientato nel modo indicato a

fianco (ossia la freccia bianca

indicante il frontale del

rover segue sempre la

direzione tangente alla

circonferenza seguita).

Jacopo Sini

4DDR.49ROBOTICS@MIDDLESCHOOL

Cosa accade se facciamo

continuare il moto del rover

con entrambe le ruote alla

stessa velocita’?

Il rover si muove secondo la

direzione tangente alla

circonferenza appena seguita.

Jacopo Sini

4DDR.50ROBOTICS@MIDDLESCHOOL

4DDR.51ROBOTICS@MIDDLESCHOOLJacopo Sini

4DDR.52ROBOTICS@MIDDLESCHOOLJacopo Sini

4DDR.53ROBOTICS@MIDDLESCHOOLJacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.54

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

Jacopo Sini

ROBOTICS@MIDDLESCHOOL 4DDR.55

Misuriamo quindi l’interasse, cioΓ¨ la distanzaπ‘˜ tra il centro delle due ruote del nostro rover:

π‘˜

Jacopo Sini

4DDR.56ROBOTICS@MIDDLESCHOOL

𝑅

πœ‘

𝑙 = 2πœ‹π‘… β‹…πœ‘

360

Jacopo Sini

4DDR.57ROBOTICS@MIDDLESCHOOL

𝑙𝑒 = 2πœ‹ 𝑅 +π‘˜2

β‹…πœ‘

360

𝑅 +π‘˜2

πœ‘

Jacopo Sini

4DDR.58ROBOTICS@MIDDLESCHOOL

𝑙𝑖 = 2πœ‹ 𝑅 βˆ’π‘˜2

β‹…πœ‘

360

πœ‘

𝑅 βˆ’π‘˜2

Jacopo Sini

4DDR.59ROBOTICS@MIDDLESCHOOL

πœƒπ‘–

𝑙𝑖

πœƒπ‘– =𝑙𝑖 β‹… 360

𝑅 βˆ’π‘˜

2

πœƒπ‘’

𝑙𝑒

πœƒπ‘’ =𝑙𝑒 β‹… 360

𝑅 +π‘˜

2

Jacopo Sini

π‘Ÿ 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.60Jacopo Sini

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

ROBOTICS@MIDDLESCHOOL 4DDR.61Jacopo Sini

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.62Jacopo Sini

Per ottenere in versione digitale questo file egli altri della serie

polito.academia.edu/JacopoSini

http://www.roboticsMS.altervista.org/

ROBOTICS@MIDDLESCHOOL 4DDR.63

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.

Jacopo Sini

4DDR.64ROBOTICS@MIDDLESCHOOL

Con π‘˜ interasse tra le ruote, 𝑅 raggio dicurvatura, 𝑣𝑙 e π‘£π‘Ÿ rispettivamente velocitΓ periferica delle ruote sinistra e destra, πœ”velocitΓ  angolare, le seguenti equazioniforniscono la cinematica del rover:

𝑣𝑙 = πœ” 𝑅 βˆ’π‘˜

2

π‘£π‘Ÿ = πœ” 𝑅 +π‘˜

2

π‘£π‘Ÿ βˆ’ 𝑣𝑙 =2πœ”π‘˜

2β†’ πœ” =

π‘£π‘Ÿ βˆ’ π‘£π‘™π‘˜

π‘£π‘Ÿ + 𝑣𝑙 = 2πœ”π‘… β†’ 𝑅 =𝑙(π‘£π‘Ÿ + 𝑣𝑙)

2(π‘£π‘Ÿ βˆ’ 𝑣𝑙)

Jacopo Sini

4DDR.65ROBOTICS@MIDDLESCHOOL

Considerando le equazioni a tempo discreto i eassumendo valori costanti durante l’intervallodi tempo:

𝐢𝐼𝑅𝑖 =𝐢π‘₯𝑖𝐢𝑦𝑖

=π‘₯𝑖 βˆ’ 𝑅𝑖 sin(πœ‘π‘–)𝑦𝑖 + 𝑅𝑖 cos(πœ‘π‘–)

πœ”π‘– =π‘£π‘Ÿπ‘– βˆ’ 𝑣𝑙𝑖

π‘˜; π›Ώπœ‘π‘– =

π‘™π‘Ÿπ‘– βˆ’ π‘™π‘™π‘–π‘˜

𝑣𝑖 =π‘£π‘Ÿπ‘– + 𝑣𝑙𝑖

2

πœ”π‘– 𝑅𝑖 +π‘˜

2= π‘£π‘Ÿπ‘–

πœ”π‘– 𝑅𝑖 βˆ’π‘˜

2= 𝑣𝑙𝑖

𝑅𝑖 =π‘£π‘–πœ”π‘–

=π‘˜(π‘£π‘Ÿπ‘– + 𝑣𝑙𝑖)

2(π‘£π‘Ÿπ‘– βˆ’ 𝑣𝑙𝑖)Jacopo Sini

4DDR.66ROBOTICS@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

Jacopo Sini

4DDR.67ROBOTICS@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

Jacopo Sini

4DDR.68ROBOTICS@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

Jacopo Sini

4DDR.69ROBOTICS@MIDDLESCHOOL

π‘₯ 𝑑 = ΰΆ±0

𝑑

cos πœ‘ 𝜏 𝑣 𝜏 π‘‘πœ; 𝑦 𝑑 = ΰΆ±0

𝑑

sinπœ‘ 𝜏 𝑣 𝜏 π‘‘πœ

πœ‘ 𝑑 = ΰΆ±0

𝑑

πœ” 𝜏 π‘‘πœ

Se il tempo di campionamento Γ¨ piccolo:

πœ”π‘– =𝑑

π‘‘π‘‘πœ‘ β†’ πœ”π‘– β‰… πœ‘π‘–+1 ≝ π›Ώπœ‘π‘–

π‘₯𝑖+1𝑦𝑖+1πœ‘π‘–+1

=cos(π›Ώπœ‘π‘–) βˆ’ sin(π›Ώπœ‘π‘–) 0sin(π›Ώπœ‘π‘–) cos(π›Ώπœ‘π‘–) 0

0 0 1

π‘₯𝑖 βˆ’ 𝐢𝐼𝑅π‘₯𝑖𝑦𝑖 βˆ’ 𝐢𝐼𝑅𝑦𝑖

πœ‘π‘–

+

𝐢𝐼𝑅π‘₯π‘–πΆπΌπ‘…π‘¦π‘–π›Ώπœ‘π‘–

Jacopo Sini

4DDR.70ROBOTICS@MIDDLESCHOOL

Approssimazione di Eulero

ቐ

π‘₯𝑖+1 = π‘₯𝑖 + 𝑣𝑖𝑇 cos(πœ‘π‘–)𝑦𝑖+1 = 𝑦𝑖 + 𝑣𝑖𝑇 sin(πœ‘π‘–)

πœ‘π‘–+1 = πœ‘π‘– + πœ”π‘–π‘‡π›Ώπ‘™

π‘žπ‘–

π‘žπ‘–+1

π›Ώπœ‘ 𝑅

Jacopo Sini

4DDR.71ROBOTICS@MIDDLESCHOOL

Approssimazione di Runge-Kutta

π‘₯𝑖+1 = π‘₯𝑖 + 𝑣𝑖𝑇 cos πœ‘π‘– +1

2πœ”π‘–π‘‡

𝑦𝑖+1 = 𝑦𝑖 + 𝑣𝑖𝑇 sin πœ‘π‘– +1

2πœ”π‘–π‘‡

πœ‘π‘–+1 = πœ‘π‘– + πœ”π‘–π‘‡

π‘žπ‘–+1

𝛿𝑙

π‘žπ‘–π›Ώπœ‘ 𝑅

Jacopo Sini

4DDR.72ROBOTICS@MIDDLESCHOOL

Integrazione esatta

π‘₯𝑖+1 = π‘₯𝑖 +πœ”π‘–

𝑣𝑖sinπœ‘π‘–+1 βˆ’ sinπœ‘π‘–

𝑦𝑖+1 = 𝑦𝑖 +πœ”π‘–

𝑣𝑖cosπœ‘π‘–+1 βˆ’ cosπœ‘π‘–

πœ‘π‘–+1 = πœ‘π‘– + πœ”π‘–π‘‡π‘žπ‘–+1

𝛿𝑙

π‘žπ‘–π›Ώπœ‘ 𝑅

Jacopo Sini