analisi e sviluppo di un simulatore per gait

200
POLITECNICO DI MILANO Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Analisi e sviluppo di un simulatore per gait di un robot quadrupede Relatore: Prof.ssa Giuseppina GINI Correlatore: Ing. Michele FOLGHERAITER Tesi di Laurea di: Sabrina PICCO Matr. n. 642306 Anno Accademico 2003-2004

Upload: others

Post on 08-Dec-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Analisi e sviluppo di un simulatore per gait

POLITECNICO DI MILANO Facoltagrave di Ingegneria

Corso di Laurea in Ingegneria Informatica

Analisi e sviluppo di un simulatore per gait

di un robot quadrupede

Relatore Profssa Giuseppina GINI

Correlatore Ing Michele FOLGHERAITER

Tesi di Laurea di

Sabrina PICCO

Matr n 642306

Anno Accademico 2003-2004

hellipErsquo importante non smettere mai di porsi domande

AEinstein

Indice INTRODUZIONE 8

Unitagrave funzionali di un robot mobile 10

Obiettivo del lavoro 13

Organizzazione della tesi 13

CAPITOLO 1 SISTEMI DI LOCOMOZIONE 16

11 Scopi di studio della locomozione su zampe 17

12 Differenze e analogie tra locomozione a zampe e su ruote 19

13 Analisi Trot gait di quadrupedi 22 131 Studio andatura quasi-statica 24 132 Studio andatura quasi-dinamica 25 133 Studio andatura dinamica trotto 26

CAPITOLO 2 STATO DELLrsquoARTE DEI FOUR LEGGED ROBOT 28

21 Panoramica dei Robot quadrupedi esistenti 29 211 Collie-1 e Collie-2 29 212 Quadrupede MIT 31 213 GEO 31 214 Quadrupede Kimura lab 32

22 Algoritmi di controllo CPG for four legged robot 33

23 Robocup e Sony Aibo 38 231 Storia 40 232 Descrizione dei sensori di Aibo 44

2321 Visione della macchina 44 2322 Riconoscimento audio 45 2323 Tatto 45 2324 Movimento e sviluppo 46

CAPITOLO 3 ARCHITETTURA DEL ROBOT ASGARD 47

31 Configurazione del robot quadrupede 48 311 Struttura Meccanica 48

Indice 4

312 Attuatori 50 313 Materiale Policarbonato 52

32 ASGRAD in numeri 53

33 Hardware 55

34 Software 56

35 Stato Attuale 57

CAPITOLO 4 MODELLIZZAZIONE CINEMATICA E DINAMICA 58

41 Convenzioni e simbologia utilizzata 59

42 Sistemi di coordinate e trasformazioni 60

43 Cinemetica diretta 62 431 Definizione dei parametri di Denavit Hartemberg 63 432 Metodo di assegnamento secondo D-H 65

44 Cinematica inversa 69 441 Metodo gradiente 72

4411 Gradient following 73 4412 Faster gradient following 74

45 Calcolo delle traiettorie 75

46 Modello dinamico Newton-Eulero 78

47 Creazione di una mappa 80 471 Espansione degli ostacoli traformazione delle distanze 81

48 Scelta di un percorso Algoritmo di Dijkstra 83

CAPITOLO 5 SVILUPPO DELLrsquoALGORITMO DI CAMMINATA 84

51 Metodologie di sviluppo 85

52 Progetto di una andatura 85 521 Lo spazio 86 522 Stabilitagrave 87 523 Tempo 88

53 Andature implementate 88

Indice 5

54 Catene cinematiche del robot 90

55 Passo statico e dinamico 96

56 Formule di forza e torsione sui giunti 100

57 Anello di Controllo 102

58 Map-building e scelta del gait 105 581 Costruzione della mappa ed espansione degli ostacoli 106 582 Algoritmo di ricerca del percorso minimo 108 583 Realizzazione del gait 111

CAPITOLO 6 SPERIMENTAZIONE E ANALISI DEI RISULTATI 115

61 Risultati statici 116 611 Passo reale effettuato 117 612 Misurazioni reali della pressione 119 613 Confronti di cinemetica inversa 122

62 Risultati dinamici 124 621 Caratteristiche negative dei motori 126

6211 Velocitagrave 126 6212 Alimentazione 126

63 Caratteristiche del percorso 127

CAPITOLO 7 CONCLUSIONI E SVILUPPI FUTURI 129

71 Risultati raggiunti 130

72 Progetti futuri 131 721 Modifiche meccaniche 131 722 Miglioramenti Hardware 132 723 Miglioramenti Software 133

73 Conclusioni finali 133

BIBLIOGRAFIA 135

APPENDICE A 139

i Sensori nei robot a zampe disponibili sul mercato 140

Indice 6

ii Dead Reckoning Stima della posizione 140 ii1 Encoder Ottici 141 ii2 Encoder ottici incrementali 141

ii21 EL30 E-H-I Eltra srl 142 ii3 Encoder ottici Assoluti 142

ii31 Sensori ottici CORRSYS-DATRON 143 ii32 EAM Parallelo-SSI Eltra srl 144

ii4 Sensori Dopler 144 ii41 Robot Italy SRF04 146

iii Heading Sensor 146 iii1 Giroscopio meccanico 146

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice FT445533 147 iii12 Futaba Giroscopio FP GY 240 AVCS 149

iii2 Giro-bussola 149 iii3 Giroscopio-Girobussola a fibre ottiche 150

iii31 La funzione giroscopica 152 iii4 Giroscopio piezoelettrico 154

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03 155 iii42 Giroscopio Piezoelettrico Enc-03ja 155

iv Sensori geomagnetici 156 iv1 Bussola magnetica meccanica 157 iv2 Bussola a effetto Hall 158

iv21 1490 Digital Compass Sensor 159 iv3 Bussola a magnetoreversiva 159

iv31 Philips bussola AMR 160 iv4 Bussola magnetoelastica 160

iv41 Metglas 2605S2 161

v Sensori per la modellizzazione dellrsquoambiente 162

vi Sensori di distanza 162 vi1 Sensori basati sul tempo di volo 162

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502 163 vi2 Sensore telemetro a sfasamento 165

vi21 LIDAR lsquoLight detection and Rangingrsquo 165 vi3 Triangolazione 166

vi31 IFELL Laser e Sistemi Srl 168

INFORMAZIONI SUI PRODUTTORI 169

APPENDICE B 170

Indice 7

i Manuale drsquouso 171

ii Codice generato 172 ii1 Menu principale 172 ii2 Confronto andatura quasi-stabile vs quasi-dinamica 173 ii3 Calcolo della cinematica inversa 180 ii4 Analisi del modello dinamico 184 ii5 Map building 187

ii51 Espansione degli ostacoli 187 ii52 Calcolo del percorso 189 ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente 192

ii6 Collegamento diretto con il robot fisico 196 ii61 Creazione degli angoli da trasmetter agli attuatori 196 ii62 Coollegamento diretto di comunicazione con la PIC 198

Introduzione

Introduzione 9

Negli ultimi decenni continue evoluzioni scientifico tecnologiche hanno

portato ad un radicale cambiamento nella vita umana e nella realizzazione di

progetti un tempo considerati utopici Dalle ldquoali di Leonardordquo allrsquoemulazione

della natura lrsquouomo continua ad osservare lrsquoambiente che lo circonda e

analizzandolo accuratamente egrave riuscito a costruire macchine indipendenti che lo

aiutano nelle azioni quotidiane o che semplicemente lo supportano nelle abitudini

della vita di ogni giorno

Anche se lo stato dellrsquoarte della robotica egrave ancora lontano dal realizzare

dispositivi cosigrave complessi il notevole incremento della potenzialitagrave di calcolo

permette oggi la costruzione di robot dotati di un certo grado di autonomia Un

robot puograve essere considerato autonomo tanto piugrave egrave in grado di svolgere attivitagrave

individuali senza ausili esterni e di prendere decisioni proprie di fronte a

problematiche semplici

In tale contesto di ricerca svolge un ruolo essenziale lo studio delle

interazioni tra il robot e lrsquoambiente circostante Le fasi di ricerca e sviluppo si

possono suddividere in tre fasi principali

bull lrsquoosservazione del naturale comportamento dellrsquoanimale in esame e

lo stretto contatto tra le sue abitudini(camminata corsa trotto) e il

suo habitat

bull la costruzione del progetto e lo sviluppo del modello rendendo il

piugrave possibile congruente le caratteristiche fisiche naturali con la

strumentazione a noi disponibile

bull la realizzazione pratica del progetto

Introduzione 10

Figura 1 Fasi di Osservazione Progettazione Realizzazione

Lrsquoemulazione del movimento e la reazione del robot agli impulsi che

dovragrave essere generata deve risultare il piugrave possibile simile al comportamento

naturale

Unitagrave funzionali di un robot mobile

Un primo approccio con un robot mobile ci porta ad individuare le parti

fondamentali che lo compongono Possiamo effettuare una prima distinzione tra

ciograve che deve necessariamente essere on-board1 e ciograve che invece puograve essere svolto

anche da terminale remoto

Oltre ad attuatori e sensori che obbligatoriamente devono trovarsi sul

robot sarebbe importante che anche lrsquounitagrave di controllo si trovi su di esso affinchegrave

1 Posto sulla struttura meccanica del robot

Introduzione 11

i tempi di risposta e le dispersioni nel canale di comunicazione vengano

minimizzate Da notare lrsquoimportanza di encoder2 che permettono una stima

odometrica3 della posizione e chiudono lrsquoanello di retroazione dei motori questo

tipo di controllo egrave chiamato dead-reckoning[1]

Sul nostro robot attualmente sono posizionati solamente i motori di

attuazione e un sensore di pressione posto sotto una delle quattro zampe si

prevederagrave in futuro lrsquoincremento di sensori di cui viene fornita in seguito una

specifica (Apendice A) Questa miglioria sensoriale giagrave prevista nel progetto da

noi svolto permetteragrave la sostituzione di valori finora forzati come inputcon veri e

propri feedback4

Lrsquounitagrave di map-building che ora egrave delegata ad un compiuter remoto ha il

compito di generare le traiettorie e spedire i valori alla Pic di controllo dei

motori5 le sue potenzialitagrave potranno essere incrementate da dati sensoriali di

visione o contatto con lrsquoambiente esterno

Sensori che permettono una corretta scansione dellrsquoambiente possono

essere di molte tipologie tra i piugrave comuni sonar scanner laser telecamere fisse o a

bordo (anche se egrave molto importante tenere in considerazione il peso di tale

dispositivi) Lrsquoutilizzo di sensori differenti e algoritmi di visione richiedono un

grosso apporto di calcolo computazionale che se fatto on-board potrebbe

compromettere il funzionamento real-time6

2 sensori di rilevamento della posizione 3 forniscono posizione in base ai dati sensoriali a disposizione 4 dati sensoriali percepiti dallrsquoambiente e rinviati allrsquounitagrave di controllo 5 scheda di interfacciamento Pc-attuatori 6 reazione in tempi reali agli impulsi

Introduzione 12

Figura 2 Unitagrave funzionali che caratterizzano un robot mobile autonomo

Ulteriore elemento utile in un robot mobile egrave la sua localizzazione che

solitamente richiede calcoli con rilevatori odometrici Nel nostro progetto ci egrave

stato di grande aiuto lo sviluppo con il sistema Matlab che mantenendo in

memoria variabili matriciali ci ha reso possibile il monitoraggio del baricentro nei

singoli movimenti Tramite queste valutazioni siamo riusciti a ricavare i valori

dellrsquoerrore durante lo spostamento nelle mappe locali dellrsquoambiente create[2][3]

Una volta noto lrsquoambiente e la posizione degli ostacoli (consideriamo

lrsquoambiente noto) si passa a pianificare il moto al fine di svolgere i compiti richiesti

dallrsquoutente[4][5] Gli algoritmi di pianificazione si dividono in due grandi

categorie

bull generativi noti lrsquoambiente e la posizione del robot generano

traiettorie che minimizzano i percorsi e i tempi di reazione

aggirando gli ostacoli[6][7]

bull reattivi adattano il moto del robot a nuovi ostacoli

In generale occorre combinare entrambe le tipologie utilizzando un

pianificatore generativo sulla mappa dellrsquoambiente a disposizione e un algoritmo

Introduzione 13

reattivo nella fase di inseguimento della traiettoria per rendere il robot pronto a

reagire a cambiamenti anche improvvisi dellrsquoambiente

Obiettivo del lavoro

Scopo di tale tesi saragrave quello di realizzare algoritmi per la camminata di un

robot quadrupede al fine di permettere la realizzazione di movimenti il piugrave

possibile reali e la creazione di ipotetiche traiettorie che il robot potragrave

intraprendere in ambienti noti a priori

Al fine di testare il corretto funzionamento dei nostri risultati ci siamo

posti come obiettivo la costruzione di ASGARD (Automatic Stable Gait of A Robot

quaDruped) robot quadrupede in progetto al Politecnico di Milano e di effettuare

prove reali sul campo

Robot quadrupedi richiedono una particolare e complessa analisi di

stabilitagrave ed uno studio approfondito sul controllo del movimento Con il nostro

progetto vogliamo garantire stabilitagrave statica e dinamica e controllare lo sforzo

reale dei motori da noi utilizzati Permettere in sintesi ad ASGARD di vedere la

luce e compiere i sui primi passi

Inoltre in questa tesi verranno sviluppati un algoritmo di map-building e il

pianificatore del moto generativo (non avendo a disposizione sensori di feedback

non possiamo implementare il reattivo) utilizzando algoritmi a contenuto calcolo

computazionale che permetteranno al robot di deambulare in un ambiente noto

senza sovraccaricare il sistema ed effettuando movimenti generati dal sistema in

real time scegliendo lrsquoopportuno passo da eseguire

Organizzazione della tesi

In questo lavoro discuteremo i metodi per modellare e analizzare robot

mobili la principale analisi si concentra su robot quadrupedi dotati di arti

Introduzione 14

autonomi fino ad arrivare allrsquoimplementazione di ASGARD (Automatic Stable

Gait of A Robot quaDruped) il robot del Politecnico di Milano Lo scopo egrave fornire

uno strumento di analisi di stabilitagrave statica e dinamica per la realizzazione di una

camminata in un ambiente noto e una prima struttura di algoritmi che in futuro si

occuperanno del controllo e delle iterazioni con il mondo circostante

Tematiche discusse nei successivi capitoli

Capitolo 1

Motivazioni che ci hanno portato alla scelta di costruire un robot

quadrupede e le sue strategie di camminate possibili

Capitolo 2

Una breve panoramica sui robot quadrupedi esistenti enfatizzando le loro

caratteristiche salienti in termini di posture e sensori e i loro algoritmi principali di

controlloal fine di delineare un adeguato quadro entro cui porre il robot del

Politecnico di Milano

Capitolo 3

Analisi delle caratteristiche meccaniche e funzionali di ASGARD

Capitolo 4

Definizione degli obiettivi fissati per il progetto e presentazione della

teoria necessaria per il corretto svolgimento

Capitolo 5

Descrizione della parte di implementazione del progetto dallrsquoapplicazione

della teoria esposta nel capitolo precedente alla scrittura del codice

Introduzione 15

Capitolo 6

Discussione dei risultati e su alcune proveeseguite a simulatore e su altre

misurazioni pratiche realizzate sul robot fisico

Capitolo 7

Migliorie possibili effettuabili in futuro e conclusioni finali dellrsquoautore

Appendice A

Ricerca eseguita su sensori disponibili sul mercato che potranno essere

integrati nel progetto

Appendice B

Presentazione del manuale di utilizzo e parte di codice significativa

generato in linguaggio Matlab 65

Capitolo 1 Sistemi di locomozione

Sistemi di locomozione 17

11 Scopi di studio della locomozione su zampe

Esistono diverse motivazioni che giustificano lo studio di robot su zampe

tre le principali[8] troviamo

bull mobilitagrave fondamentale caratteristica di un robot egrave riuscire a

lavorare e svolgere le sue mansioni in tutte le tipologie di

terreni da quelli lisci ai piugrave ostili in presenza di scale o gradini

e riuscire se possibile ad evitare ostacoli non solo aggirandoli

ma anche scavalcandoli Veicoli a ruote sono la soluzione

adeguata se si pensa a terreni piani o con inclinazioni continue

ma la struttura del nostro pianeta permette il loro utilizzo in

meno della metagrave delle terre emerse Se invece pensiamo alla

crosta terrestre essa egrave quasi completamente raggiungibile da

esseri viventi (uomini animali) dotati di gambe

bull punti di appoggio isolati che ottimizzano il supporto e la

trazione e non richiedono un continuo contatto con il suolo

come succede per le ruote

bull sospensione attiva che disaccoppia la traiettoria delle gambe

da quella del corpo rendendo possibile cioegrave lo spostamento

senza sollecitazioni del carico nonostante pronunciate

sconnessioni del terreno

Queste caratteristiche in molti casi rendono indipendenti le capacitagrave del

robot dallrsquoasperitagrave del percorso dando la possibilitagrave di maggiore efficienza in

velocitagrave anche in ambienti molto ostili

Analizzare le spiccate doti di agilitagrave e mobilitagrave di animali non risulta un

facile compito essi sono in grado di muoversi velocemente e con sicurezza nelle

piugrave svariate condizioni ambientali

Sistemi di locomozione 18

Figura 3 Particolari posture animali in condizioni ambientali ostili

Nostro principio di studio risulta essere cercare metodologie di emulazione

di tali doti e successivamente applicarle a robot quadrupedi cercare i compiti

simili di locomozione e tramite questi risultati percepire problematiche e trovare

soluzioni per la mobilitagrave di strutture artificiali[9]

In particolare un robot su zampe necessita di

bull controllo del movimento dei giunti

bull controllo dellrsquoequilibrio

bull ciclicitagrave dellrsquouso delle zampe

bull punti di appoggio noti

bull calcolo della possibile traiettoria percorribile

I sistemi legged7 risiltano in diversi ambiti molto utili ai settori di ricerca

dallrsquoIntelligenza Artificiale e Sistemi di cooperazione multi-agente a semplici

robottini in grado di svolgere un unico ma non meno significativo task8 come la

pulizia di una superficie la raccolta di un oggetto o la perlustrazione di aree

pericolose con la relativa raccolta dati

7 termine inglese per rappresentare sistemi robotica dotati di quattro zampe 8 compitoincaricoobiettivo da raggiungere

Sistemi di locomozione 19

12 Differenze e analogie tra locomozione a zampe e su ruote

La principale caratteristica che diversifica le due tipologie di robot egrave la

gestione dei movimenti Per i sistemi legged la realizzazione di un passo include

al suo interno un insieme di variabili di controllo per il movimento corretto dei

giunti e la corretta sincronizzazione dei movimenti delle zampe al fine di ottenere

una adeguata andatura

Figura 4 Rover a ruote Figura 5 Rover Spirit sulla superficie di Marte[10]

Durante il passo inoltre bisogna mantenere il controllo sulla stabilitagrave e

sullrsquoequilibrio (controlli del tutto assenti in un robot a ruote) monitorare i valori

di torsione dei singoli motori accertandosi che essi non superino le soglie limite e

valutare il punto di appoggio futuro Una volta costruito un passo il compito

ricade nel continuare a ciclarlo opportunamente al fine di portare a termine il

compito richiesto superando eventuali dissestamenti del terreno o ostacoli

Un robot a ruote invece egrave in grado solo di muoversi su terreni lisci e

richiede un maggior spazio per effettuare semplici manovre Di fronte a ostacoli

anche minimi il robot a ruote dovragrave effettuare la pianificazione di una traiettoria

Sistemi di locomozione 20

per aggirare lrsquoostacolo e impiegheragrave un tempo di reazione maggiore Se un robot

a ruote si troveragrave di fronte ad uno ostacolo saragrave costretto ad attivare calcoli

opportuni che gli permetteranno di costruire una strada alternativa per il

superamento dellrsquoimprevisto Un robot a zampe invece potragrave attivare gli attuatori

al fine di scavalcare se possibile lrsquoostacolo

Figura 6 Diverse strategie per oltrepassare un ostacolo

Altro aspetto di differenziazione tra le due tipologie di robot risulta essere

la mobilitagrave della piattaforma Alcune volte risulta essere utile mantenere il carico

in una inclinazione prestabilita (ad esempio il trasporto di un grave o il

mantenimento del centro ottico di una telecamera) Nei robot a ruote il corpo egrave

solitamente solidale con lrsquoasse delle ruote e si mantiene ad una distanza fissa dal

terreno seguendolo in ogni sua inclinazione Questo risulta essere una

caratteristica utile su terreni pianeggianti ma risulta sconveniente su terreni

curvilinei In questa circostanza risulterebbe utile disaccoppiare la piattaforma con

le ruote motrici al fine di mantenere costante lrsquoinclinazione del corpo principale

Questo disaccoppiamento egrave giagrave presente nella struttura dinamica del robot

a zampe dove la postura della piattaforma risulta essere la somma di due

contributi quali

bull scelta dei punti di appoggio

bull posizione cinematica assunta da ogni singola zampa in riferimento

alle caratteristiche del terreno

Sistemi di locomozione 21

Attraverso cioegrave la posizione delle zampe il robot egrave in grado di

ammortizzare le sconnessioni del terreno e dentro i limiti cinematici e di

mantenere lrsquoasse prescelto

Figura 7 Mobilitagrave della piattaforma

Esistono comunque analogie che accomunano le due strutture di robot

esistenti la principale risulta essere la ciclicitagrave dei movimenti Nei sistemi legged

dopo aver trovato un corretto movimento per la realizzazione di un passo egrave da

ricercare il periodo in cui esso dovragrave ripetersi al fine di ottenere una camminata

con andatura corretta Per un robot a ruote il periodo risulta invece essere

semplicemente la rotazione della ruota attorno al proprio asse A paritagrave di

ripetizione di un ciclo il risultato deve essere il ritorno nella posizione iniziale e

lrsquoincremento dello spazio di lavoro

Ulteriore analogia egrave il sistema odometrico Su ogni robot sono solitamente

posizionati un discreto numero di encoder per il rilevamento della posizione Nei

robot a ruote essi sono posizionati sullrsquoasse delle ruote mentre nei legged essi

sono inseriti nelle articolazioni dove sono posizionati i motori Si possono notare

differenze consistenti a livello di calcoli effettuati ma entrambi forniscono come

risultato la posizione effettivamente raggiunta Di particolare interesse per i

calcoli egrave la sequenza di comandi dati in input al variare di essi varia la postura

finale assunta

Sempre riguardo lrsquoodometria altra caratteristica comune egrave il calcolo

dellrsquoerrore esso viene calcolato in relazione ai valori di feedback dei sensori Si

puograve presentare di due tipologie

Sistemi di locomozione 22

bull sistematico dovuto a caratteristiche proprie meccaniche del robot

bull non sistematico dovuto alle iterazioni con lrsquoambiente circostante

Errori e cause di errori verranno trattati nei capitoli successivi

13 Analisi Trot gait di quadrupedi

Tra gli esseri viventi dotati di zampe presenti in natura[11] la nostra

analisi si concentra su animali che deambulano su 4 arti Essi rappresentano una

classe animale che sfrutta particolari doti fisiche e mentali per regolare la stabilitagrave

del corpo e lrsquoagilitagrave dei movimenti

Vengono presentate di seguito alcuni gait9 di quadrupedi su terreni piani e

lrsquoanalisi dei principali fattori che ne determinano le caratteristiche e le prestazioni

in termini di velocitagrave[12]

Le principali caratteristiche sullo studio di andature sono

bull Periodicitagrave il moto prevede la sequenza ciclica del movimento di

ogni singola zampa (passo)Ogniuna di esse egrave regolata da tre

variabili di giunto ciascuna delle quali segue a sua volta una

traiettoria periodica Complicazioni ulteriori emergono se si

considerano virate o terreni sdrucciolevoli

bull Stabilitagrave caratteristica di maggiore importanza nel caso di

locomozione a zampe essa egrave assicurata quando il baricentro del

robot cade allrsquointerno del poligono di stabilitagrave ovvero quando il

margine di stabilitagrave egrave maggiore di zero Il margine di stabilitagrave

dipende dalla posizione in cui il robot si trova se fermo o in

movimento Se il robot egrave fermo tale margine si calcola come la

distanza piugrave breve dal baricentro al perimetro del poligono di

9 Andatura con passi specifici

Sistemi di locomozione 23

stabilitagrave in qualsiasi direzione durante il moto si considerano solo

le distanze nella direzione del moto (margine di stabilitagrave

longitudinale)

bull Traiettoria della zampa la traiettoria dellrsquoorgano terminale di una

zampa (piedino) si compone di tre fasi principali

bull alzata

bull avanzamento

bull appoggio

la prima ha il compito di sollevare il piede da terra la seconda

permette lrsquoavanzamento della zampa ed infine nella terza il piede

viene riposizionato a terra nella posizione base per reiterare il

procedimento

In relazione al profilo scheletrico di un vertebrato mammifero

generalizzato esso egrave in grado deambulare in diverse andature[13]

Non troppo dissimile dallrsquoarchitettura di cani cavalli o gatti il nostro robot

presenta perograve lrsquoarticolazione della spalla ruotata di 90 gradi rispetto al mammifero

comune questo gli permette di mantenere un notevole grado di stabilitagrave in quanto

incrementa il suo possibile convex hull10 ma ci obbliga a studiare un nuovo tipo

di movimento per il passo base

Inoltre il piede di appoggio risulta essere di notevoli dimensioni rispetto

alla zampa al fine di sopportare ottimamente il peso del corpo sovrastante

In base alla stabilitagrave durante il movimento la andatura di un 4-legged puograve

essere classificata in tre diverse classi principali

bull andatura quasi statica

bull andatura quasi dinamica

bull andatura dinamica

10 poligono che rappresenta la base drsquoappoggio

Sistemi di locomozione 24

131 Studio andatura quasi-statica

Una andatura si dice quasi-statica se il centro di massa della nostra

struttura cade allrsquointerno del poligono di stabilitagrave che si viene a creare

congiungendo i punti di appoggio Con questa tipologia di camminata siamo certi

che il robot assorbiragrave le possibili perturbazioni del moto con un piugrave ampio

margine di stabilitagrave

uesta andatura egrave quella riprodotta in laboratorio sul nostro soggetto le

ragioni che ci hanno portato a questa scelta oltre ai vantaggi precedentemente

citati sono

bull moderata velocitagrave

bull buona risposta in tempo degli attuatori

Per implementare le fasi di camminata abbiamo analizzato ed elaborato il

gait 4-time11 di un mammifero comune essa si basa su quattro movimenti un LF

(di sinistra-anteriore) un RR (di destra-posteriore) una RF (di destra-anteriore)

un LR (di sinistra-posteriore) quindi una ripetizione

In questo movimento si noti che lrsquoequilibrio e il supporto egrave effettuato dal

LR+RF ldquodiagonalerdquo mentre i piedini di RR e di LF sono sospesi [ posizioni 1 2 ]

e dalla diagonale opposta per gli altri 2 piedini [ posizioni 5 6 ]

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

11 Gait 4-time camminata divisa in quattro fasi

Sistemi di locomozione 25

Figura 8 Nei nove diagrammi viene descritta la completa sequenza di camminata

partendo con la zampa sinistra Le posizioni 1 e 2 mostrano la diagonale destra 3 diagonale

destra e anteriore sinistra 4 laterale sinistra 5 e 6 diagonale sinistra 7 diagonale sinistra e

anteriore destra 8 laterale destra 9 ritorno nella posizione di partenza

Questa andatura presenta un tipico movimento sinusoidale del baricentro

del corpo nel piano trasversale

In base alla configurazione del nostro robot esso non presenta una colonna

vertebrale snodabile lrsquoanalisi prodotta ci ha potato alla creazione di una andatura

che non modifica lrsquoasse su cui giace il centro di massa

132 Studio andatura quasi-dinamica

La seconda classe di camminata raggruppa andature per cui la proiezione

del centro di massa cade in alcune fasi del passo sul lato del poligono di stabilitagrave

Sistemi di locomozione 26

In queste situazioni un incorretto posizionamento degli attuatori o una

minima perturbazione potrebbe causare una perdita di stabilitagrave per questo bisogna

intervenire in tempistiche ridotte trovando soluzioni che riducano gli effetti

La velocitagrave che si riesce ad ottenere deriva da un passo di camminata

leggermente piugrave ampio eseguito in un tempo minore di frame12 pur mantenendo

quasi inalterate le fasi di esso

133 Studio andatura dinamica trotto

La classe di andatura dinamica rappresenta invece lrsquoandatura piugrave veloce

presente in natura[14] essa si basa sul concetto di tempo di volo in cui solo due

zampe o addirittura tutto il corpo non tocca il terreno andatura tipica nella corsa

di mammiferiVenendo a mancare il triangolo di appoggio bisogna trovare un

abile compromesso tra inerzia velocitagrave e potenza muscolare al fine di evitare la

perdita di equilibrio e lo slittamento delle zampe sul terreno

12 istanti temporali in cui si attua lrsquoanalisi completa

Sistemi di locomozione 27

Figura 9 Nelle posizioni 1 e 3 vengono mostrate la diagonale destra e sinistra come

supporto al trotto Le posizioni 2 e 4 mostrano il momento di flying trot che egrave raramente

osservabile a causa della velocitagrave dei movimenti Le posizioni 5 e 6 mostrano un passo di

corsa piugrave tranquillo che puograve essere eseguito da un cane stanco o non troppo motivato

Capitolo 2 Stato dellrsquoarte dei four legged robot

Stato dellrsquoarte dei four legged robot 29

21 Panoramica dei Robot quadrupedi esistenti

In questo capitolo verragrave presentata una carrellata dei moderni sviluppi

riguardanti la 4-legged robotics13

Proponiamo i progetti piugrave significativi a cui ci siamo riferiti per lrsquoanalisi e

lo sviluppo della camminata e i robot piugrave moderni che vengono utilizzati come

banchi di prova per progetti di intelligenza artificiale e multi-collaborazione che ci

potranno essere utili per evoluzioni future del nostro ASGARD

211 Collie-1 e Collie-2

Giagrave dalle prime ricerche nellrsquoambito della robotica umanoide la

realizzazione di una camminata naturale egrave stata ampiamente presa in

considerazione Nella seconda metagrave degli anni ottanta abbiamo trovato il primo

utilizzo di DC servos per la realizzazione di prototipi per la camminata dinamica

Collie-1 e la sua evoluzione Collie-2[15] Basandosi sul concetto di camminata

suddivisa come statica e dinamica lo studio ha messo in evidenza come la

camminata dinamica richiede un surplus di energia e una maggior velocitagrave di

esecuzione ponendo particolare interesse ai valori di stabilitagrave velocitagrave massima e

consumo energetico che sono alcuni dei parametri anche da noi presi in

considerazione nel nostro progetto Nello sviluppo di Collie le relazioni tra questi

criteri e i parametri (gait speed period stride length of the leg joint angles etc)

hanno portato alle seguenti deduzioni riguardanti al camminata dinamica

a) Minore egrave il periodo in cui avviene la camminata migliore egrave la stabilitagrave del

quadrupede

Ersquo desiderabile camminare con un lungo periodo e compiendo ampi passi

per riuscire ad accrescere la velocitagrave massima

13 settore della robotica che si occupa di robot a 4 zampe

Stato dellrsquoarte dei four legged robot 30

b) Crsquoegrave un periodo in cui la velocitagrave egrave massima

c) Crsquoegrave un periodo in cui si minimizza il consumo energetico per fornire

velocitagrave

d) Trot gai14t egrave desiderabile quando la prioritagrave egrave in primo piano rispetto al

consumo energetico

Pace gait15 egrave raccomandata quando la prioritagrave energetica egrave al di sopra

della velocitagrave massima

Gli esperimenti per appurare la validitagrave di queste affermazioni sono stati

effettuati con il robot Collie-2 che fisicamente presenta 3 joint16 attorno allrsquoasse di

pitch (beccheggio) e 2 joint attorno allrsquoasse di roll (rollio) per ogni gamba con un

potenziometro montato per ogni gamba e motori DC servos sistemati sui 3 joint

sullrsquoasse trasversale e 1 joint sullrsquoasse sagittale

Figura 10 Collie 2 vista semi

frontale Figura 11 Collie 2 di

fronte

Figura 12 camminata vista

laterale

14 andatura veloce di trotto 15 camminata tranquilla da crocera non veloce 16 giunto

Stato dellrsquoarte dei four legged robot 31

212 Quadrupede MIT

Realizzato al MIT (Massachusset Institute of Technology) negli anni 1984-

1987 [16] egrave composto da un unico grado di libertagrave per zampa a cui si aggiunge un

meccanismo a basso livello di coordinazione del piedino Ersquo stato sviluppato per

esplorare il funzionamento su quatto zampe e le transizioni tra tipologie diverse di

gait quali il trottino (accoppiamento zampe diagonali) pacing (accoppiamento

laterali) bounding (accoppiamento anteriore posteriore) fornendo consistenti

informazioni sulle diverse posture[17]

Figura 13 Immagine laterale camminata

robot dequadrupe del MIT

Figura 14 basato su llo stesso

meccanismo del robot del MIT Scout

prodotto allrsquoumiversitagrave di Monteal

sviluppa ampliamente il concetto di

bounding gait[18]

213 GEO

Iniziata la costruzione del progetto nel 1994 a USC GEO I [19]

presentava due grandi innovazioni una spina dorsale flessibile e zampe

riconfigurabili Queste due caratteristiche permettono al robot di emulare la

camminata di una salamandra cioegrave di far seguire al proprio baricentro un

andamento sinusoidale quando invece una zampa egrave posizionata sotto il corpo il

robot puograve deambulare come un comune mammifero quale ad esempio il cane

Stato dellrsquoarte dei four legged robot 32

Questa particolare possibilitagrave di cambiamento di tipologia di camminata egrave

rimasta nellrsquoevoluzione del modello GEO II che risulta essere molto piugrave leggero

del suo predecessore dotato si sensori di forza nei piedi e possibilitagrave di

interazione con il mondo esterno tramite reti neurali

Figura 15 GEO I nel superamento di un

ostacolo

Figura 16 GEO II in posizione base

214 Quadrupede Kimura lab

Dal Giappone e piugrave precisamente dal laboratorio di Kimura[20]

compaiono i robot piugrave avanzati in grado di camminare su terreni estremi quali

ciottolati erbe sparse o pavimentazioni sconnesse utilizzando sensori di visione I

principali in evoluzione sono Tekken-II azionato da servomotori e pilotato

manuale usando un regolatore radiofonico Futaba Le particolaritagrave di questo robot

sono il giunto della caviglia passivo con il meccanismo molla-smorzatore17 il

posizionamento di un meccanismo della molla intorno al giunto del ginocchio

dellrsquoanca al fine di ridurre il consumo di energia Sul corpo presenta diversi

sensori Tasso-girobussola per 3 ascie e 2 inclinometri per le ascie del rullo e del

passo 1 sensore per il contatto di asse egrave fissato su ogni piedino Della stessa

famiglia adatti perograve a terreni scoscesi e ondulati ricordiamo inoltre Patrush I e

Patrush II rispettivamente degli anni 2000 e 2001

17 principio fisico che attenua le sollecitazioni e incamera energia che puograve essere

successivamente sfruttata

Stato dellrsquoarte dei four legged robot 33

Figura 17 Patrush I vista

semifrontale

Figura 18 Tekken II vista laterale

22 Algoritmi di controllo CPG for four legged robot

Testato successivamente sulle potenzialitagrave di GEO II egrave stato realizzato nel

2002 il modello CPG (Central Pattern Generation)[21] che sostituisce lrsquounitagrave

centrale del controllo del sistema nervoso presente negli animali Esso propone

che lrsquoadattamento di un animale allrsquoambiente circostante puograve essere modellizzato

come un modulo adattativo (AMs Adaptative Modules) che agisce su un sistema

distribuito di oscillazioni chiamate Adaptative Ring Rules (ARRs) che simulano

semplici riflessi Lrsquoutilizzo e la costruzione di questa rete neuronale ha mostrato

come un sistema puograve auto programmarsi attraverso interazioni con lrsquoambiente

Lrsquoadattamento fa emergere spontaneamente alcuni stati discreti come il

movimento del busto la scelta tra un passo corto e la camminata da crociera e le

coordinate per un singolo giunto

Il risultato di questo modello egrave che ha permesso a un quadrupede di

imparare a camminare in pochi minuti

Basandosi su innumerevoli trattati sullo sviluppo degli impulsi del sistema

nervoso dei mammiferi (Bekoff 1985Cohen 1988) Lewis egrave riuscito a riprodurre

una rete che tenta di emulare le fasi standard e principali del comportamento

Stato dellrsquoarte dei four legged robot 34

animale in relazione ad alcuni stimoli esterni e di riuscire a comunicare questi

impulsi nervosi ai relativi attuatori per creare lrsquoazione Tuttora diversi studi sono

ancora in atto per perfezionare questa tecnica introducendo apprendimento per

rinforzo

Si puograve modellizzare il CPG come una rete di unitagrave funzionali chiamate

unit CPGs (uCPGs) Riferendosi alla figura 18 2 uCPGs sono denominate con

Tw+ e Tw- insieme esse producono il coordinamento principale del robot e

giocheranno un ruolo base nellrsquoacquisizione della camminata Alle uCPGs sono

collegati archi che rappresentano il collegamento ai muscoli estensori delle

diverse articolazioni Questi archi rendono possibile quindi il collegamento delle

unitagrave del busto con quelle del ginocchio etc

Lrsquooutput dei muscoli viene trasformato attraverso una funzione di uscita in

comandi di movimento Questi a loro volta sono ricombinati per creare impulsi

compatibili con i servos dellrsquoancae del ginocchio

Sono introdotti nella rete ulteriori parametri che servono per adattare la

rete a diversi robot

Stato dellrsquoarte dei four legged robot 35

Figura 19Organizzazione del sistema di controllo Il sistema di controllo del robot

presenta una rete di uCPG Ogni cerchio presenta un uCPGs Connessionitrasmissione di

informazioni sono visualizzate come freccie Ogni funzione Ψ converte una informazione in

comandi per i motori I comandi dei motori sono combinati insieme per produrre una

sequeza di livelli di posizione per ogni anca e ginocchio Abbreviazioni KFmuscolo flessore

ginocchio KEmuscolo estensore ginocchio HEmuscolo estensore dellrsquoanca HFmuscolo

flessore dellrsquoanca TW+torsione positivo TW-torsione negativo

Per definire meglio il controllo sono stati realizzati schemi che si basano

su controlli di posizione sulla reattivitagrave dei riflessi e sullrsquoadattamento della

torsione al modulo ambiente

Per realizzare lrsquoultimo modello egrave necessario introdurre ARRs cioegrave il

modulo adattativo dellrsquoambiente attraverso un ulteriore unitagrave computazionale

costituita da tre componenti

Stato dellrsquoarte dei four legged robot 36

Figura 20 Lrsquouso di un innato interno modello per lrsquoadattamento di CGPs La figura

mostra i componeti di un AM

Il primo componente egrave il Forward Model il quale usa una efficiente copia

di una uCPGs per predire il feedback sensoriale il secondo il Comparison egrave a tutti

gli effetti un comparatore tra il feedback sensoriale e il feedback atteso il terzo egrave

una regola che utilizza il risultato della comparazione per modulare la uCPGs in

questione

LrsquoARRs genera un segnale di output che viene indirizzato agli attuatori o a

semplici circuiti che seguono per il controllo sensoriale e rimane in attesa di

ricevere un segnale di ritorno proveniente dai sensori Il segnale di output puograve

anche essere emesso nellrsquoambiente come decisone di movimento per eventuali

robot ad esso sottomessi La creazione di movimenti puorsquo cosigrave migliorare

introducendo nuovi modelli di controllo quali adattamento della lunghezza del

busto per il coordinamento delle gambe e fase di aggiustamento

Questi modelli sono stati realizzati su robot che presentano caratteristiche

mostrate nella seguente figura e che possono essere ritrovate in GEO II

Stato dellrsquoarte dei four legged robot 37

Figura 21 Postura dei Principali Rilessi Tre tipi di simmetria sono applicati per la

distribuzione del pesoDiagonal comparazione dei piedi diagonali Anteriore verso posteriore

comparazione dai piedi anteriori ai posteriori e sullo Stesso lato comparazione dei piedi

sulla destra rispetto quelli sulla sinistra Il numero vicino ad ogni piede denota il numero del

piede

La parte per noi piugrave interessante risulta essere la postura dei riflessi statici

I risultati mostrano come viene distribuito il peso del robot sui piedi di appoggio

Inizialmente quando il robot egrave appoggiato completamente al suolo il peso risulta

essere equamente distribuito In altri casi appariranno disturbi causati da carichi

aggiuntivi come posizione del cavo di alimentazione o piugrave semplicemente alzata

della zampa per compiere un passo

Stato dellrsquoarte dei four legged robot 38

Figura 22Postura dei Riflessi Grafico che mostra la distribuzione del peso rulle

zampe del robot

Questo grafo ci rappresenta come la variazione della postura del robot

influenzi i carichi su ciascuna zampa nella nostra analisi ritroveremo un grafico

simile al precedente quando analizzeremo le forze agenti sui motori nel modello

di Newton-Eulero GEO II presenta perograve un vantaggio considerevole durante i

movimenti il robot attua una fase di ldquoaggiustaggiordquo in cui riassesta il busto per

riequilibrare la distribuzione del peso su tutte le zampe non creando scompensi

23 Robocup e Sony Aibo

RoboCup[22] egrave unrsquoiniziativa internazionale di formazione e di ricerca Egrave

un tentativo di promuovere lrsquoAI18 e lrsquoautomatismo intelligente Basati sul concetto

che una squadra di robot giochi a soccer allrsquointerno di ambienti reali o simulati le

tecnologie che vengono coinvolte devono comprendere nei loro progetti i principi

di agenti autonomi collaborazione multi-agente aquisizione di strategie

ragionamento in tempo reale e automatismo

18 Intelligent Agents

Stato dellrsquoarte dei four legged robot 39

Ersquo in RoboCup che si egrave vista la prima squadra fornita di gambe

Largamente utilizzati per la realizzazione di sistemi multiagenti dotati cioegrave di

complessi programmi di intelligenza artificiale sono i famosi Aibo Sony

Figura 23 Robot Aibo Sony durante una partita alla Robocup

Aibo egrave il miglior prodotto della Sony 4-legged robot essa coinvolge le piugrave

moderne tecnologie per concepire un amico completamente autonomo per

accompagnare ed intrattenere lrsquouomo nella vita giornaliera

Il centro di intelligenza artificiale di Aibo egrave il software Mente2 situato su

una memoria stick removibile Esso controlla il suo comportamento le sue abilitagrave

e le relative caratteristiche che possono essere incrementate con un corretto

addestramento da parte dellrsquoutente Aibo infatti implementa al suo interno un

algoritmo di apprendimento per rinforzo

Nella vita giornaliera questo software gli permette di intrattenere e

comunicare con chiunque riconoscendo intelligentemente i volti e le voci dei suoi

padroni

Per le sue particolari proprietagrave quali vedere sentire registrare suoni

oggetti e facce e riflettere una vasta gamma delle emozioni attraverso la relativa

faccia Condur-guidata19 Aibo egrave in grado di familiarizzare con ogni tipo di

ambiente ambiente e trasformarsi in ogni senso in un individuo vero e unico

19 pilotati da software intelligenti diversi led rappresentano espressioni emotive

Stato dellrsquoarte dei four legged robot 40

231 Storia

Ma vediamo come nasce Aibo[23]Le sue radici risalgono agli inizi degli

anni novanta quando gli ambienti tecnologici erano agli albori riguardo la

creazione di applicazioni per lrsquointrattenimento umano Fu Dr Doi il capo dell

Sonyrsquos Digital Creature Lab ad implementare in un unico automa i nuovi

progressi in termini di processori intelligenza artificiale riconoscitori vocali e

tecnologie di visione al fine di creare un robot autonomo

Durante la fase iniziale nel 1992 gli ingegneri della Sony progettarono

alcuni importanti cambiamenti radicali Nei primi anni novanta robot con camere

e ruote erano riprogrammati per ogni attivitagrave o task in cui essi venivano impiegati

I nuovi progetti includevano la capacitagrave di un robot di deambulare su zampe e

lrsquointerazione con programmi di IA capaci di interagire con alcuni organi sensoriali

come il tatto la vista e il suono Solo verso il 1997 il primo prototipo portograve alla

luce gli enormi sforzi di ricerca e sviluppo Dr Doi indirizzograve tutta la sua ricerca

nella costruzione e nel design di un amichevole robot autonomo Il suo primo

prototipo aveva sei gambe ed era il primo passo per la creazione di un robot a

zampe Dopo questo primo rudimentale modello il team Sony studiograve un design

innovativo e analizzograve ciograve che il robot poteva o non poteva fare per incrementare le

potenzialitagrave celebrali ed espandere le funzionalitagrave hardware e software

Lrsquooriginale modello Aibo ERS-110 fu presentato nel 1999 e rapidamente

si diffuse in tutto il mondo con lo slogan di essere un grande compagno di giochi e

intrattenimento entrando anche a far parte del guinnes dei Primati Lrsquo Europa vide

la sua apparizione il 26 Ottobre 1999 Solo un mese dopo dallrsquoenorme successo

riscontrato fu presentato un ulteriore modello ERS-111 per il target mondiale

Nellrsquoottobre del 2000 venne alla luce la seconda generazione di Aibo ERS-

210 che inglobava miglioramenti di mobilitagrave sensori di tatto led facciali

programmi di risposta sensoriale al mondo esterno tramite espressioni visive

funzioni di memorizzazione delle parole e riconoscitore vocale[24]

Stato dellrsquoarte dei four legged robot 41

I modelli LATTE e MACARON (ERS-311 a ERS-312) entrarono a far parte

della famiglia nel Settembre 2001 i loro nomignoli li rendono dolci e adorabili da

coccolare includendo comunque tutte le caratteristiche dei loro predecessori

Lrsquo8 Novembre 2001 egrave nato lrsquoultimo membro della famiglia Sony che

include le piugrave sofisticate performance e capacitagrave Il modello ERS-220 dotato di un

look futuristico presenta al suo interno una moltitudine di azioni altamente

avanzate e un alto numero di luci e sensori che lo fanno diventare il modello piugrave

sofisticato di robot quadrupede sul mercato[25]

Stato dellrsquoarte dei four legged robot 42

Sviluppo dei modelli Aibo dai primi anni novanta a oggi

Robot Sony Aibo modello a sei zampe

Robot Sony Aibo ERS-110

Robot Sony Aibo ERS-111

Robot Sony Aibo ERS-210

Robot Sony Aibo ERS-31x

Robot Sony Aibo ERS-220

Stato dellrsquoarte dei four legged robot 43

Figura 24 Zoom sulle caratteristiche presenti negli ultimi ritrovati

Specifikace

bull Head touch sensor bull Color Camera bull Stereo microphone bull Speaker bull Pause button bull Back sensor bull Lithium ion battery pack bull Tail sensor bull Memory Stick slot for AIBO bull PC card slot ndash bull slot pro PCMCIAPC-kartu

CPU 64-bitovy RISC procesor memory 32MB SDRAM weight - 15 kg ( baterie a Memory Stick (approx33lb)) dimension 152x266x274mm

Stato dellrsquoarte dei four legged robot 44

232 Descrizione dei sensori di Aibo

Il robot egrave stato progettato in modo da assomigliare ad un vero e proprio

essere vivente Esso egrave quindi dotato di svariati sensori mediante i quali puograve

comunicare con lrsquoambiente e reagire agli stimoli esterni[26]

Il sistema di controllo di Aibo utilizza i microprocessori per controllare

lrsquoinput dai dispositivi quali

bull Macchina fotografica del video a colori CCD20

bull microfono stereo

bull sensore termometrico

bull sensore infrarosso

bull sensore giroscopico di accelerazione

2321 Visione della macchina

Aibo ha una macchina fotografica digitale a colori montata nella sezione

ldquotestardquo I dati di immagine da questa macchina fotografica sono vitali nella

generazione dellrsquoesperienza interattiva tra il robot e il mondo Il video input egrave

analizzato per identificare lrsquooggetto o ldquoun punto caldordquo i motori robot spostano la

testa per dare lrsquoapparenza che il Aibo stia osservando Il robot inoltre egrave fornito di

un sensore infrarosso di distanza per rilevare gli ostacoli e per evitare di collidere

con essi

20 Charge Coupled Device attraverso una piastrina di silicio dotata di sensori le immagini

vengono digitalizzate in relazione a posizione colore e intensitagrave

Stato dellrsquoarte dei four legged robot 45

Figura 25 CCD camera a colori

Figura 26 Microfoni montati sugli assi

2322 Riconoscimento audio

Aibo egrave dotato di un accoppiamento di microfoni uno da ogni lato della

calotta cranica Questi generano unrsquoimmagine stereo del suono ricevuto che aiuta

nel localizzare la fonte di emissione Ersquo presente un regolatore di distanza per

permettere al robot di porre limiti per frasi da riconosce come ordini

2323 Tatto

Il rilievo sensibile al tocco sulla parte superiore della testa del Aibo egrave un

altro meccanismo attraverso cui riceveragrave input sensoriali In base a come questo

sensore egrave toccato un Aibo riceve i dati che registrano le risposte positive o

negative rispetto ldquoal suo comportamento precedenterdquo imitando le dimostrazioni

affetto o rimprovero

Stato dellrsquoarte dei four legged robot 46

Figura 27 Il bottone blu egrave uno switch per il sensore di pressione

2324 Movimento e sviluppo

Molti dei movimenti del Aibo sono simili a quelli di un animale domestico

un cane o un gatto Un Aibo accede e fa funzionare algoritmi di movimento che

dettano il moto delle relative membra controllando i motori siti nei piedini nella

testa e nella coda In modo indipendente e autonomo il robot si muove attraverso

parecchie fasi per un periodo di tempo Quando ldquosupportatordquo dal suono (comandi

o musica) riesce ad intraprendere movimenti a lui noti e ad imparare nuove

posture piugrave specializzate come sottoposto ad un vero e proprio addestramento

Figura 28 Particolare coda

Figura 29 Sensori del piedino

Capitolo 3 Architettura del robot ASGARD

Architettura del robot ASGARD 48

31 Configurazione del robot quadrupede

Analizziamo ora le caratteristiche del quadrupede realizzato presso lrsquoAir

Lab21 del Politecnico di Milano Nei paragrafi che seguono verranno descritte le

sue caratteristiche implementative che ne hanno permesso la realizzazione e il

controllo

Il progetto egrave stato avviato di recente di conseguenza il robot presenta

ancora notevoli problematiche di stabilitagrave e attuazione tramite servo attuatori

Hitec

311 Struttura Meccanica

La struttura di ASGARD egrave composta da parti ricavate da lastre di

policarbonato di cui presenteremo le caratteristiche nel paragrafo seguente e

incollate con speciale solvente

Il progetto della struttura di Marco Piralli [27] ha permesso al nostro robot

di avere una struttura simile a diversi esseri naturali

Figura 30 Progetto Robot completo di Pialli (sinistra) e dettaglio dellrsquoarticolazione (destra)

21 Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano sede

Leonardo sito in Lambrate

Architettura del robot ASGARD 49

Esso egrave dotato di 12 gradi di libertagrave tre per ogni zampa simili a quelli di

Aibo eccetto la spalla Questi gradi di libertagrave ci permettono di far compiere al

robot movimenti su tutti e tre gli assi La spalla in particolare ci permette tutti i

movimenti nel piano sagittale (detto anche piano laterale movimento fronte-retro)

Mentre le altre due articolazioni permettono movimenti nel piano frontale

(movimento lato-lato) e in quello trasversale

Questa serie di attuazioni da la possibilitagrave al robot di essere indipendente

nel movimento di ogni singola zampa e un ulteriore grado passivo nella zampa

permette di affrontare le differenti tipologie di terreno

Il collegamento tra attuatori e struttura risulta essere diretta senza cioegrave

lrsquoausili di tendini il rotore del motore egrave direttamente connesso alla articolazione

studiata per alloggiare il motore al suo interno

Figura 31 Particolari sulle locazioni e i sostegni degli attuatori nel giunto di

spalla(sinista) e ginocchio caviglia (destra)

Architettura del robot ASGARD 50

Giunto 9Giunto 12

Giunto 3

Giunto 6

Giunto 1

Giunto 2 Giunto 4

Giunto 5

Giunto 7

Giunto 8 Giunto 11 Giunto 10

Figura 32 Posizionamento dei giunti nel robot reale

312 Attuatori

Come illustrato in Figura 32 gli attuatori necessari al movimento di

ASGARD devono risultare leggeri e disposti in modo da non intralciare gli

eventuali movimenti I singoli attuatori sono costituiti da un motore servo da una

molla torsionale e da uno smorzatore senza essere perograve dotato di encoder

incrementale Con questo sistema non egrave possibile realizzare un preciso controllo

di posizione istante per istante ma egrave possibile ottenere una rigidezza di giunto non

infinita

I motori da noi utilizzati sono da 44 Kg bull cm HITEC HS 475HB Standar

Delux[28] abitualmente utilizzati in ambito di modellismo Le cui caratteristiche

sono qui sotto riportate

Architettura del robot ASGARD 51

Caratteristiche principali HS457 HB

Control system Operatine voltage range Operatine speed Stall torque Idle current Running current Stall current Dimensions Weight

+Pulse width control 1500usec neutral 48 V to 60 V 023 sec60(load) 018 sec60(no load) 44 Kg cm 55 Kg cm 74 mA (stopped) 77 mA(no load) 180 mA60 (load) 160 mA60(no load) 900 mA 388x198x36 mm 40 g

Figura 33 Attuatore HS 475 HB visto in sezione (sinistra) e come si presenta sul

nostro robot (destra)

Architettura del robot ASGARD 52

313 Materiale Policarbonato

Per la realizzazione del robot egrave stato scelto un materiale innovativo

resistente agli urti e alla trazione che puograve in questo modo resistere alle

sollecitazioni esterne e alle vibrazioni causate dalla camminata su terreni aspri

Oltre le potenziali caratteristiche di resistenza ha la dote di essere

estremamente leggero e di riuscire ad assemblarsi tramite apposito solvente

Questo permette alla struttura chimica di una superficie di scomporsi e di legarsi

in modo stabile alla struttura di una ulteriore lastra ricreando una struttura

compatta e indissaldabile

Proprietagrave policarbonato[29]

Carico limite di snervamento Nmmsup2 gt60

Resistenza alla rottura Nmmsup2 gt70

Allungamento a snervamento 6 hellip 8

Allungamento a rottura lt100

Modulo elastico Nmmsup2 2300

PROPRIETA MECCANICHE

Resistenza allrsquourto IZOD con intaglio Jm 700

Peso specifico gcmsup3 120

Indice di rifrazione 159

Assorbimento idrico (24h - 23degC) per immersione

036 PROPRIETA

FISICHE

Permeabilitagrave al vapore drsquoacqua (spessore 01m 24h)

gmsup3 15

Temperatura di resistenza al calore vicat VSTB

degC 145hellip150

Espansione termica lineare 1degC 67 X 10

PROPRIETA TERMICHE

Conducibilitagrave termica WmdegC 021

Architettura del robot ASGARD 53

32 ASGRAD in numeri

Le caratteristiche fisiche di Asgard si possono cosigrave riassumere

Busto

Larghezza 1210 cm

Lunghezza 2290 cm

Zampe

Link num 1 573 cm

Link num 2 675 cm

Link num 3 735 cm

Piede 350 x 415 cm

Spessore 4 mm

Peso

Corpo in policarbonato 660 g

Attuatori 480 g

Scheda Pic 20 g

Peso Complessivo 1180 Kg

Angoli dei giunti nella posizione di riposo

Giunto spalla 0deg

Giunto ginocchio 45deg

Giunto caviglia 45deg

Architettura del robot ASGARD 54

735 573 675

2290 122

121

Figura 34 Specifiche di ASGARD vista dallrsquoalto

1212 cm

Figura 35 Vista frontale di ASGARD

Architettura del robot ASGARD 55

33 Hardware

Attualmente non esiste un vero e proprio controllo on-board in grado di

generare traiettorie ma una PIC [30] sita su di esso il cui scopo egrave quello di

interpretare i segnali di comando in uscita dal nostro codice Matlab e di

trasformarli in impulsi (PWM) da inviare ai motori

Figura 36 Sistema di controllo dei motori Nellrsquoambiente Matlab sono stati inseriti dei comandi manuali di posizionamento il programma gestisce la generazione delle traiettorie e i comandi vengono inviati alla PIC Questa si occupa di generare e inviare ai motori gli impulsi che ne garantiscono il posizionamento

Unitagrave di controllo

Alimentazione

Porta seriale

Max 232

PIC

18F4x28 40L DIP

A T T U A T O R I

Figura 37 Schema a blocchi della PIC di controllo

Architettura del robot ASGARD 56

34 Software

La creazione del nostro algoritmo rappresenta la prima implementazione di

codice in merito al progetto del robot quadrupede in esame

Per il collegamento diretto e il pilotaggio di motori servo tramite la porta

seriale abbiamo usufruito di un codice elaborato precedentemente e implementato

sulla PIC

Questo programma egrave costituito da cicli di attesa da parte della PIC stessa

per la ricezione dei comandi e da un canale di ritorno in cui essa comunica al Pc

la corretta trasmissione dellrsquoimpulso

Una miglioria sullrsquoanalisi implementativi ci ha permesso di spingere la

velocitagrave di comunicazione fino a 14400 bitsec

Il nostro programma di analisi e simulazione dei passi analizza le

caratteristiche fisiche di movimento del nostro robot generando i movimenti

opportuni che gli permetteranno di deambulare stabilmente nellrsquoambiente

Un ulteriore ricerca ci ha portato a realizzare una funzione di calcolo delle

traiettorie in ambiente noto che dagrave la possibilitagrave a ASGARD di decidere in real-

time il passo da intraprendere nel singolo istante

Questo puograve essere considerato il primo passo verso un algoritmo di

Intelligenza Artificiale per il nostro robot

Il sistema di controllo dellrsquoandatura di un robot con zampe si puograve cosigrave

scomporre in tre livelli distinti

Architettura del robot ASGARD 57

SUPERVISORE

bull Traiettoria bull Parametri dellrsquoandatura

COORDINATORE bull Controllo della stabilitagrave bull Traiettoria dellrsquoestremitagrave delle

zampe

LIVELLO DELLE ZAMPE bull Cinematica inversa bull Controllo dinamico bull Comandi agli attuatori

35 Stato Attuale

Allo stato attuale il robot egrave stato completato e dotato di sensore di

pressione posto sotto la zampa anteriore sinistra Le tempistiche di risposta della

scheda PIC presentano non poche difficoltagrave a carattere di controllo I motori da

noi utilizzati ricevono in input solo il valore della posizione ed egrave pertanto

impossibile effettuare controlli su velocitagrave ed accelerazione

Ersquo risultato comunque possibile dopo una attenta analisi di stabilitagrave la

creazione di un ciclo di passi che ha permesso ad ASGARD di compiere la sua

prima camminata

Capitolo 4 Modellizzazione cinematica e dinamica

Modellizzazione cinematica e dinamica 59

41 Convenzioni e simbologia utilizzata

Data la natura del robot saragrave essenziale fornirne una corretta analisi

matematica e robotica per mantenere una certa coerenza e chiarezza verranno

utilizzate le seguenti convenzioni

bull Il pedice indica il numero della grandezza a cui si sta facendo

riferimento indica ad esempio lrsquoelemento n di A Nel caso vi

siano presenti due pedici si fa riferimento ad una grandezza che va

dal primo pedice al secondo indica quindi un vettore da i a k

nA

kiA

bull Lrsquoapice egrave utilizzato per indicare il sistema di riferimento rispetto al

quale la grandezza egrave riferita indica quindi lrsquoelemento n della

grandezza A nel sistema di riferimento i

inA

bull Il simbolo times indica il prodotto vettoriale

bull Il simbolo bull indica il prodotto scalare mentre la T posta come apice

egrave la trasposizione

Nella Tabella 1 vengono mostrate le grandezze fisiche utilizzate e la

simbologia per rappresentarle[31]

Ti

iR 1minus Matrice di rotazione dalla terna i-1 alla terna i (premoltiplicazione)

iiR 1+ Matrice di rotazione dalla terna i+1 alla terna i (postmoltiplicazione)

im Massa del braccio

iir 1minus Vettore dalla terna i-1 alla terna i

iI Tensore drsquoinerzia del braccio

iϑ Posizione angolare del giunto i

iϑamp Velocitagrave angolare del giunto i

Modellizzazione cinematica e dinamica 60

iϑampamp Accelerazione angolare del giunto i

iω Velocitagrave angolare del braccio

iωamp Accelerazione angolare del braccio

ipampamp Accelerazione lineare terna i

iCpampamp Accelerazione lineare baricentro iC

if Forza esercitata sul giunto i

imicro Momento esercitato sul giunto i

iτ Forza generalizzata al giunto i

Tabella 1 Rappresentazione delle grandezze fisiche utilizzate

42 Sistemi di coordinate e trasformazioni

Qualunque punto dello spazio puograve essere rappresentato da coordinate

omogenee che non sono altro che le coordinate cartesiane del punto a meno di un

fattore di proporzionalitagrave

⎥⎥⎥⎥

⎢⎢⎢⎢

=rarr⎥⎥⎥

⎢⎢⎢

⎡=

wzyx

pZYX

p dove wxX =

wyY =

wzZ =

In coordinate omogenee ci sono quattro punti particolari

versore direzione dellrsquoasse X versore direzione dellrsquoasse Y ir

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0001

jr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0010

versore direzione dellrsquoasse Z Origine degli assi kr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0100

Or

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1000

Modellizzazione cinematica e dinamica 61

Questi quattro punti caratterizzano il sistema di riferimento Un sistema di

riferimento puograve essere posto in ogni punto dello spazio per noi saragrave essenziale

porne uno in ogni giunto dei robot[32] Inserito un sistema di riferimento il

passaggio da un sistema al successivo avviene tramite una matrice di

trasformazione che al suo interno ne descrive la rotazione e traslazione

La rotazione pura rispetto ad un sistema fisso di coordinate viene

rappresentata tramite una matrice quadrata 33times Ad esempio una rotazione di un

angolo α attorno allrsquoasse z viene descritta con

( )⎥⎥⎥

⎢⎢⎢

⎡ minus=

1000cossin0cos

αααα

αsen

Rz

La matrice A di rototraslazione egrave rappresentata in generale come

composizione degli spostamenti rotatorio e traslatorio

( ) ( )

[ ] ⎥⎦

⎤⎢⎣

⎡ timestimes=

10001333 TraslRot

A

La matrice egrave costituita da una parte di rotazione una di traslazione lungo i

tre assi e una riga i cui valori indicano la ldquoscalardquo e la ldquoprospettivardquo (non utilizzati

in questo ambito) In analisi piugrave approfondita

Modellizzazione cinematica e dinamica 62

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

A

possiamo vedere come le prime tre colonne rappresentano i versori del

sistema di partenza mentre lrsquoultime rappresenta la posizione di arrivo in

coordinate omogenee dellrsquoorigine in cui egrave posizionato il sistema di riferimento

43 Cinemetica diretta

In questo ambito ci proponiamo di illustrare i modelli matematici che ci

hanno permesso di analizzare ASGARD Partiamo da alcune definizione basilari

Un robot manipolatore egrave una catena cinematica sequenziale22 aperta23 o

catena parallela composta da corpi rigidi (link) uniti da giunti

Lrsquointeresse principale egrave rivolto alla mano o end-effector del robot che

possa raggiungere ogni posizione con qualunque orientamento senza bisogno di

resettare fisicamente il sistema

La cinematica studia il legame tra le variabili indipendenti dei giunti e le

posizioni e orientamento cartesiane raggiunte dal robot Questo egrave chiaramente un

problema cruciale per le applicazioni Il problema si suddivide in due parti

cinematica diretta = passaggi dalle variabili di giunto24 alle variabili

cartesiane25

cinematica inversa = passaggio dalle variabili cartesiane alle variabili di

giunto

22 sequenziale significa che non ci sono diramazioni nella catena 23 aperta una delle due estremitagrave (mano=end-effector) egrave libera 24 valori degli angoli di ogni singolo giunto 25 valore della posizione espresso in coordinate nel di riferimento considerato

Modellizzazione cinematica e dinamica 63

La dinamica studia le equazioni che caratterizzano il moto del robot intese

come velocitagrave accelerazioni tenendo conto non solo delle posizioni iniziali e

finali ma di tutte le caratteristiche del moto la nostra analisi si egrave concentrata sulle

forze e le torsioni agenti sui motori studiate con il metodo di Newton-Eulero

Il calcolo delle traiettorie consiste nel determinare un modo per fornire al

controllore del robot lrsquoinsieme dei punti (variabili di giunto) per spostarsi da una

posizione allrsquoaltra con opportune velocitagrave e accelerazioni

Il problema del controllo consiste invece nel trovare modalitagrave efficienti per

far compiere al robot il piugrave fedelmente possibile le traiettorie determinate

431 Definizione dei parametri di Denavit Hartemberg

Elaborare i valori delle variabili di giunto fino a trovare i valori delle

coordinate cartesiane riferite alla posizione dellrsquoend-effector non egrave di facile

carico computazionale soprattutto quando il robot risulta complesso26

Sviluppare metodi a doc ottimi per la cinematica inversa risultano

scomodi e onerosi se riferiti alla cinematica diretta

Un metodo generale e applicabile a qualsiasi tipologia di manipolatore egrave

stato sviluppato negli anni cinquanta da Denavit e Hartenberg (D-H)

Esso consiste nel fissare sistemi di riferimento sui giunti per poterne

determinare i parametri caratteristici Tramite lrsquouso di matrici di rototraslazione

dei sistemi di riferimento egrave possibile trovare un legame tra i parametri dei giunti e

la posizione e lrsquoorientamento dellrsquoend-effector Con questa scelta ogni singola

trasformazione da un sistema di riferimento al successivo saragrave descritta da una

matrice definita da quattro parametri lrsquoangolo del giuntonnA 1minus ϑ lrsquoangolo di twist

α e le due distanze d e l

Identificata la struttura giuntilink del robot egrave necessario fissare i sistemi di

riferimento nel seguente modo

26 complesso con piugrave di due gradi di libertagrave

Modellizzazione cinematica e dinamica 64

bull Scegliere lrsquoasse giacente lrsquoungo lrsquoasse del giunto i+1 iz

bull Individuare allrsquointersezione dellrsquoasse con la normale comune

agli assi e con

iO iz

1minusiz iz iOprime si indica lrsquointersezione della normale

comune con 1minusiz

bull Si assume lrsquoasse diretto lungo la normale comune agli assi

e con verso positivo dal giunto i al giunto i+1

ix 1minusiz

iz

bull Si sceglie lrsquoasse in modo tale da completare una terna levogira iy

Figura 38 Parametri cinematici di Denavit-Hartenberg

Fissate le terne solidali si ha che

ia = distanza da a iO iOprime

id = coordinata su di 1minusiz iOprime

iα = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

ix 1minusiz iz

iϑ = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

1minusiz 1minusix ix

Modellizzazione cinematica e dinamica 65

Nella nostra analisi essendo tutti giunti rotoidali lrsquounica variabile risulta

essere iϑ indicante la posizione in gradiradianti del giunto Nello sviluppo della

parte grafica per caratteristiche proprie del tool utilizzato sono stati introdotti

ulteriori due giunti traslazionali che nellrsquoanalisi non vengono perograve presi in

considerazione come variabili

La matrice di trasformazione complessiva viene costruita nel modo

seguente

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡minus

minus

=minus

1000cos0

coscoscoscoscoscos

1

iii

iiiiiii

iiiiiii

ii dsen

senasensenasensensen

Aαα

ϑαϑαϑϑϑαϑαϑϑ

432 Metodo di assegnamento secondo D-H

Per ricavare velocemente le matrici di trasformazione secondo la

convenzione di D-H si utilizza la seguente procedura operativa

1 Individuare e numerare consecutivamente gli assi dei giunti

assegnare rispettivamente le direzioni agli assi hellip 0z 1minusnz

2 Fissare la terna base posizionandone lrsquoorigine sullrsquoasse gli assi

e sono scelti in maniera tale da ottenere una terna levogira

0z

0x 0y

Eseguire i passi da 3 a 5 per i = 1 hellip n

3 Individuare lrsquoorigine allrsquointersezione di con la normale comune agli assi e Se gli assi e sono paralleli posizionare in modo da annullare

iO iz

1minusiz iz 1minusiz iz

iO id4 Fissare lrsquoasse diretto lungo la normale comune agli assi e

con verso positivo dal giunto i al giunto i+1 ix 1minusiz

iz5 Fissare lrsquoasse in modo da ottenere una terna levogira iy

Per completare

Modellizzazione cinematica e dinamica 66

1 Fissare la terna n allineando lungo la direzione di nz 1minusnz

2 Costruire per i = 1 hellip n la tabella dei parametri ia id iα iϑ

3 Calcolare sulla base dei parametri di cui al punto 7 le matrici di

trasformazione omogenea ( )iii qA 1minus per i = 1 hellip n

La posizione e lrsquoorientamento di un qualsiasi giunto della catena rispetto il

sistema base egrave ora calcolabile premoltiplicando i valori nel sistema corrente per

tutte le matrici di trasformazione precedenti a tale sistema

11

121

010

0 minusminussdotsdotsdot== n

nnn AAAAT

In ASGARD si egrave attuata una doppia analisi

la prima consiste nellrsquoalzata del piede e il suo riposizionamento nelle

coordinate desiderate in questo caso lrsquoorigine del robot risulta essere solidale con

il baricentro del corpo e lrsquoend-effector risulta coincidere con la zampa mobile

Figura 39 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nel baricentro e end-effector coincidente con la zampa mobile

Modellizzazione cinematica e dinamica 67

I parametri di D-H calcolati risultano essere

link ϑ α a d

1 deg45 0 1l 0

2 2ϑ deg90 2l 0

3 3ϑ 0 3l 0

4 0 4l 0 4ϑ

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

1111

1111

010

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdot

=

10000010

00

2222

2222

121

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

3333

3333

232

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

44441

4444

343

SlCSClSC

A

e la matrice T contenente i valori in coordinate cartesiane della posizione

della zampa egrave calcolata come 3

432

321

210

1004 AAAAAT sdotsdotsdot==

la seconda analisi consiste nellrsquoavanzamento del corpo non essendo il

nostro robot dotato di uno scheletro mobile e flessibile durante la camminata si ha

la necessitagrave di spostare il baricentro sfruttando lrsquoattrito delle zampe con il terreno

In questa situazione le zampe puntate a terra risultano essere lrsquoorigine e il

baricentro della nostra struttura egrave la parte terminale libera

Modellizzazione cinematica e dinamica 68

Figura 40 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nella zampa di appoggio e end-effector coincidente con il baricentro

In questo caso i parametri di D-H subiscono la seguente modifica

link ϑ α a d

1 1ϑ degminus 90 0 0 2 2ϑ 0 2l 0 3 3ϑ degminus 90 3l 0 4 0 0 4l 0

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

11

11

010

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ minus

=

100001000000

22

22

121

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

33

33

232

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000010000100001

343A

La matrice T per il calcolo della posizione finale non subisce invece

modifiche nella sua formula rimane invariata 343

232

121

010

0 AAAAAT n sdotsdotsdot==

Modellizzazione cinematica e dinamica 69

44 Cinematica inversa

Data una posizione e un orientamento nello spazio cartesiano egrave possibile

trovare una configurazione del nostro manipolatore affincheacute essa possa essere

raggiunta Questo egrave il problema di cinematica inverso

Nel calcolo di tale problema non egrave garantita neacute lrsquoesistenza neacute lrsquounicitagrave

della soluzione cercata La posizione se appartenente allo spazio di destrezza del

manipolatore (spazio in cui egrave garantita lrsquoesistenza della soluzione) non egrave detto che

possa essere raggiunta con unrsquounica sequenza di variabili di giunto

Metodi di analisi ammissibili per il nostro robot risultano essere il metodo

di Paul[33] e quello geometrico non essendo rispettati i vincoli per il metodo di

Pieper (tre giunti rotoidali consecutivi con assi paralleli)

Il metodo di Paul consente di determinare le soluzioni mediante

premoltiplicazioni o postmoltiplicazioni con matrici di trasformazione ortogonali

egrave un metodo euristico per la ricerca di soluzioni in forma chiusa

Lrsquoalgoritmo egrave il seguente

1 Uguagliare la matrice di trasformazione generale T espressa in

termini di variabili cartesiane alla matrice di trasformazione del

manipolatore espressa in termini di variabili di giunto

2 Cercare nella seconda matrice

bull elementi che contengono una sola variabile di giunto

bull coppie di elementi che danno unrsquoespressione in una sola

variabile di giunto quando vengono divisi tra loro

bull elementi o combinazioni di elementi che possono essere

semplificati usando identitagrave trigonometriche

3 Quando si sono identificati questi elementi li si eguagliano ai

corrispondenti elementi della matrice in variabili cartesiane

ottenendo unrsquoequazione la cui soluzione permette di trovare un

Modellizzazione cinematica e dinamica 70

legame fra una variabile di giunto ed elementi della matrice di

trasformazione generale

4 Se non si sono identificati elementi che soddisfano le condizioni al

passo 2 si premoltiplicano entrambi i membri dellrsquoequazione

matriciale per lrsquoinversa della matrice A del primo link si opera

secondo il passo 2 Si itera il procedimento per tutti i link

5 Non sempre egrave possibile trovare elementi che rispettano le

condizioni imposte e riuscire a trovare una soluzione valida

Nella nostra analisi questo metodo egrave stato valido e molto veloce per

trovare il valore del primo angolo spalla ma risulta svantaggioso nel calcolo dei

successivi angoli in cui non si riuscivano a trovare equazioni semplici

=

⎥⎥⎥⎥

⎢⎢⎢⎢

+minusminusminusminus++minusminusminusminusminus++minusminusminusminus

=

10000 2232332332323232

11212321332131321321321321

11212321332131321321321321

SlSClCSlCCSSSCSSSlCSlSSSlCCSlCSSSCCSCSSCCSClCClSSClCCClSCSCSCCSSCCCC

T

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

da cui si ricava

( )( ) 1

1

1223233231

1223233231

CS

lClSSlCClClClSSlCClS

pp

x

y =++minus++minus

= quindi ⎟⎟⎠

⎞⎜⎜⎝

⎛=

x

y

pp

a tan1ϑ

Ersquo stato quindi decisivo per il riscontro del secondo e del terzo angolo

rispettivamente ginocchio e caviglia un approccio geometrico a doc

In questa tipologia di studio di rilevante importanza egrave stata lrsquoestrapolazione

delle coordinate dellrsquoend-effector e la traslazione dellrsquoorigine nel ginocchio al fine

di isolare due piani del moto per ridurre lrsquoanalisi di una dimensione

Modellizzazione cinematica e dinamica 71

Il calcolo della cinematica inversa per un manipolatore a due link risulta

poi di basso carico computazionale applicando regole di trigonometria basilari

Figura 41 Calcolo cinematica inversa attraverso metodo geometrico su un robot

planare a 2gradi di libertagrave

Conoscendo la posizione raggiunta

( )21211 coscos ϑϑϑ ++= llx ( )21211 ϑϑϑ ++= senlsenly

Si applica il teorema di Pitagora nel triangolo indicato

( ) ( ) =sdot+sdotsdotsdot+sdot+=+sdot+=+ 22

22221

22

22

21

222

2221

22 cos2coscos ϑϑϑϑϑ senlllllsenlllyx 221

22

21 cos2 ϑsdotsdotsdot++= llll

E da esso si ricava

21

22

21

22

2 2)(cos

llllyx

sdotsdotminusminus+

=ϑ e quindi ⎥⎦

⎤⎢⎣

⎡sdotsdot

minusminus+=

21

22

21

22

2 2)(

cosll

llyxaϑ

Come si era previsto porta a due soluzioni gomito alto o bassoPer trovare

lrsquoaltro angolo si osserva cha al posto αϑϑ +=∆ 1 si ha

( )xy

=∆ϑtan ( )221

22

costan

ϑϑ

αsdot+

=llsenl

quindi

⎟⎟⎠

⎞⎜⎜⎝

⎛sdot+

minus⎟⎠⎞

⎜⎝⎛= minusminus

221

22111 cos

tantanϑ

ϑϑ

llsenl

xy

Modellizzazione cinematica e dinamica 72

441 Metodo gradiente

Abbiamo utilizzato questo metodo alternativo sperimentale in

concomitanza con il metodo geometrico valutandone successivamente le sue

potenzialitagrave per possibili applicazioni future Esso attraverso semplici calcoli

matematici ci porta al valore dei successivi due giunti della zampa

Figura 42 Baccio a due link

Denomineremo

a angolo del primo giunto

b angolo del secondo giunto

obiettivo stella rossa

errore vettore che punta lrsquoobiettivo

Spostiamo il braccio del robot intorno alla base cambiando gli angoli a e b

Possiamo tracciare un grafico di questo comportamento[34]

Figura 43 Immagine della rappresentazione del gradiente

Modellizzazione cinematica e dinamica 73

Lrsquoasse x rappresenta langolo a mentre lrsquoasse y rappresenta langolo b Lrsquoorigine

egrave nel cento Denomineremo lo spazio di tutti gli orientamenti possibili del braccio

del robot lo spazio di configurazione

Ogni punto sul quadrato contiene una tonalitagrave di grigio che rappresenta la

distanza fra lrsquoend-effector e lobiettivo Le tonalitagrave piugrave chiare sono distanze piugrave

grandi mentre il nero rappresenta zone di avvicinamento allrsquoobiettivo Ci sono

due posti in cui la distanza egrave uguale zero rappresentanti le due configurazioni

(gomito alto e basso) in cui il braccio puograve toccare lobiettivo

Dovrebbe essere evidente arrivare al target significa trovare le parti piugrave

nere del grafico Questi punti bassi sono conosciuti come minimi

4411 Gradient following

Questo metodo risulta essere di grande utilizzo per riuscire a trovari i

minimi in uno spazio bidimensionale

Per trovare i punti piugrave bassi sul grafico si deve semplicemente seguire

punti che portano lrsquoend effector ad una distanza minore dal target

Figura 44 Immagine di esempio

Figura 45 Gafico del Gradiente di esempio

Si guardi questo esempio Figura 44 Lobiettivo egrave la stella rossa In questa

posizioneun movimento del giunto di rotazione a sposteragrave la mano nel senso della

freccia a ed un movimento di b sposteragrave lrsquoend-effector nel senso della freccia b

Modellizzazione cinematica e dinamica 74

Per raggiungere lrsquoobiettivo desideriamo spostare la mano nel senso della freccia t

Spostando solo il giunto A o solo B non otterremo grandi risultati ma serviragrave un

movimento complessivo Ora guardiamo questo in termini di grafico (Figura 45)

Cominciando ad una configurazione casuale del braccio (start) possiamo

guardare i vettori a e b e ruotiamo ogni giunto un po in proporzione a quanto

aiuta per ottenere una migliore posizione rispetto allrsquoobiettivo Si puograve pensare a

questo come esaminare la pendenza locale del grafico Ci si chiede qual egrave il

movimento che li conduce il piugrave velocemente in discesa ci si sposta in quel senso

Si continua a ciclare questo fino ad arrivare ad una distanza dal nostro obiettivo

che concorda con lrsquoapprossimazione da noi desiderata

Vantaggi di questo metodo sono lrsquoapplicazione in tutte le problematiche

con un numero elevato di link Il tempo computazionale non risulta essere oneroso

in quanto ci si riconduce a semplici operazioni matematiche che Matlab riesce ad

eseguire in pochissimi istanti nonostante lrsquoelevato numero di iterazioni

4412 Faster gradient following

Esso egrave unottimizzazione del metodo gradient following che accelera

letteralmente il processo[34] Precedentemente ad ogni ripetizione la pendenza egrave

stata sottratta semplicemente dalla posizione nello spazio di configurazione

spostando la struttura piugrave vicino al minimo Questa volta sottrarremo la pendenza

dalla velocitagrave a cui ci muoviamo attraverso lo spazio di configurazione

Otteniamo come risultato un calcolo molto piugrave rapido in termini di

iterazioni che si riducono fino al 60-75 rispetto al precedente mantenedo

risultati ottimi in base anche allrsquoapprossimazione da noi scelta

Modellizzazione cinematica e dinamica 75

Figura 46 Passi per arrivare al target nel metodo di inseguimento veloce

45 Calcolo delle traiettorie

Vogliamo presentare le modalitagrave di come le traiettorie vengono generate

Tra le diverse disponibili egrave stato scelto il controllo in posizione nello spazio dei

giunti affichegrave il robot riesca a deambulare in un cammino definito Esprimendo le

traiettorie nello spazio dei giunti vengono evitate le conversioni cinematiche

inverse e quindi per la realizzazione delle traiettorie non serve potenza di calcolo

onerosa

Per il controllo delle traiettorie esistono metodi semplici basati sulla

gestione del movimento del singolo link senza che esso venga temporizzato con

tutta la struttura e algoritmi piugrave complessi che fanno uso delle cubiche27 esse

arrivano a un buon compromesso tra quantitagrave di calcolo richiesta e qualitagrave delle

traiettorie ottenute Il cammino da compiere viene specificato mediante punto di

arrivo e punto di stop si vorrebbe che tutti i giunti arrivino al task nello stesso

istante in modo da garantire lrsquoassenza delle discontinuitagrave Si generano traiettorie

nello spazio dei giunti specificando per ogni motore la funzione di moto e

verificando che le posizioni attraversate non siano degeneri28 o singolari29[32]

27 polinomi dal terzo grado a superiore che rappresentano funzioni continue 28 degenere significa non raggiungibile dal robot

Modellizzazione cinematica e dinamica 76

Esistono diversi metodi per calcolare le cubiche di seguito vengono

presentate quelle da noi elaborate e convertite in codice

Movimento da una posizione finale ad una posizione finale in un certo

intervallo di tempo per ogni giunto deve essere trovata una funzione ( )tϑ

continua e con derivata prima continua il cui valore per t=0 sia per t = sia ft fϑ e

che possa essere usata per interpolare i valori dei giunti I vincoli che devono

essere soddisfatti sono

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = 0 Velocitagrave iniziale nulla

( )fϑamp = 0 Velocitagrave finale nulla

Per soddisfare i vincoli egrave necessario un polinomio di terzo grado in cui i

coefficienti saranno scelti per soddisfare i quatto vincoli

( )tϑ = 3

32

210 tatataa sdot+sdot+sdot+

dal polinomio ricaviamo la funzione che rappresenta la velocitagrave

( )tϑamp = 2321 32 tataa sdotsdot+sdotsdot+

e lrsquoaccelerazione

( )tϑampamp = taa sdotsdot+sdot 32 62

sostituendo le equazioni nei vincoli sopra citati troviamo i seguenti valori dei

coefficienti

=0a 0ϑ

29 un punto singolare egrave un punto in cui non egrave possibile calcolare lo jacobiano inverso

Modellizzazione cinematica e dinamica 77

01 =a

( )2

02

3

f

f

ta

ϑϑ minussdot=

( )3

03

2

f

f

ta

ϑϑ minussdotminus=

Con queste equazioni abbiamo ottenuto il metodo piugrave semplice per

connettere due posizioni nello spazio A fronte del consistente numero di

operazioni richieste per il carico grafico questo egrave il metodo da noi utilizzato per

tutto lo sviluppo del simulatore che emula la creazione di un percorso inoltre esso

risulta simile al controllo a noi a disposizione per gli attuatori reali a disposizione

Abbiamo comunque voluto implementare un metodo avanzato per

superare limitazioni presenti che potragrave essere utilizzato anche in un futuro quando

controlli effettivi saranno introdotti per il controllo di velocitagrave e accelerazione dei

motori Esso egrave costituito da un polinomio di quinto grado in cui possono essere

specificate posizioni velocitagrave e accelerazioni nei punti iniziale e finale e puograve

gestire la continuitagrave dellrsquoaccelerazione nei punti di via

Il polinomio studiato risulta essere

( )tϑ = 5

54

43

32

210 tatatatataa sdot+sdot+sdot+sdot+sdot+

( ) =tϑamp 45

34

2321 5432 tatatataa sdotsdot+sdotsdot+sdotsdot+sdotsdot+

( ) =tϑampamp 35

2432 201262 tatataa sdotsdot+sdotsdot+sdotsdot+sdot

imponendo

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = Velocitagrave iniziale 0v

( )fϑamp = Velocitagrave finale fv

Modellizzazione cinematica e dinamica 78

sostituendo i vincoli trovo i seguenti valori dei parametri

tvva fof sdotminussdotminusminussdot= )(3)(6 05 ϑϑ

tvva fof sdotsdotminussdot+minussdotminus= )78()(15 04 ϑϑ

tvva fof sdotsdotminussdotminusminussdot= )46()(10 03 ϑϑ

02 =a

tva sdot= 01

00 va =

46 Modello dinamico Newton-Eulero

Per un analisi realistica e approfondita della camminata non egrave sufficiente

considerare gli effetti della forza di gravitagrave ma diventa necessario introdurre il

modello dinamico che tiene conto di tutti i fattori non trascurabili nei corpi in

movimento

Per completare le formule ricavate nel caso statico vengono calcolate le

singole velocitagrave e accelerazioni dei giunti e link Risulta assai comodo ed

efficiente lrsquoalgoritmo ricorsivo di Newton-Eulero[31] Viene effettuata dapprima

una ricorsione ldquoin avantirdquo per calcolare le velocitagrave e accelerazioni dei giunti e

successivamente una ricorsione ldquoallrsquoindietrordquo per ricavare i valori di forza e

torsione

Nella prima fase dalla base (baricentro) allrsquoend-effector (zampa in

movimento) abbiamo

Velocitagrave angolare del rotore ( )011

1 zR iii

Tii

ii ϑωω amp+= minus

minusminus

Accelerazione angolare del link ( )0110

11

1 zzR iiii

ii

Tii

ii times++= minus

minusminusminus

minus ωϑϑωω ampampampampamp

Accelerazione lineare terna i ( )iii

ii

ii

iii

ii

ii

Tii

ii rrpRp 11

11

1minusminus

minusminus

minus timestimes+times+= ωωωampampampampamp

Modellizzazione cinematica e dinamica 79

Accelerazione lineare baricentro iC ( )iCi

ii

ii

iCi

ii

iiC iii

rrpp timestimes+times+= ωωωampampampampamp

Nella seconda fase dallrsquoend-effector al baricentro le formule diventano

Forza iCi

ii

ii

ii i

pmfRf ampamp+= +++

111

Momento ( )

( )ii

ii

ii

ii

ii

iCi

ii

ii

ii

ii

iCi

iii

ii

ii

II

rfRRrrfii

ωωω

micromicro

times++

times+++timesminus= +++

+++minus

amp

1

111111

Forza generalizzata 0

1 zR Tii

Tiii

minus= microτ

Ai fini di semplificare i calcoli tutti i vettori sono riferiti alla terna corrente

sul link i Si rende quindi necessario moltiplicare per i vettori da trasformare

dalla terna i+1 alla terna i e per i vettori da trasformare dalla terna i-1 alla

terna i In questo modo e diventa possibile

semplificare la formula del tensore drsquoinerzia del link

iiR 1+

TiiR 1minus

[ ]Tz 1000 = costante =iCi i

r

( )

( )( ) ⎥

⎥⎥⎥

⎢⎢⎢⎢

+sdotminussdotminus

sdotminus+sdotminus

sdotminussdotminus+

sdot=

intintintintintintintintint

dVyxdVyzdVxz

dVyzdVzxdVxy

dVxzdVxydVzy

I22

22

22

ρ

Lrsquoinerzia egrave una proprietagrave che dipende dalla massa del corpo e da come tale

massa egrave distribuita I tensori sopra calcolati descrivono lrsquoinerzia del corpo nello

spazio tridimensionale Per i calcoli si sono supposti i link di densitagrave uniforme e a

forma di parallelepipedo tale approssimazione porta ad ottenere risultati

sufficientemente precisi per questo lavoro semplificando i termini del tensore

( )

( )( ) ⎥

⎥⎥

⎢⎢⎢

++

+sdot=

120001200012

22

22

22

yxzx

zymI

Modellizzazione cinematica e dinamica 80

Nelle formule del calcolo della torsione sono stati tralasciati i termini

inerenti alle forze interne dei motori essendo questi di dimensione trascurabile

47 Creazione di una mappa

La navigazione consiste nel dirigere il cammino di un robot

mobile[35][36] mentre esso si muove in un ambiente affincheacute

bull Raggiunga la destinazione

bull Non si perda

bull Non si schianti contro ostacoli fissi o mobili

La navigazione egrave composta dalle seguenti parti

mapping planning rArr driving rArr

costruzione della mappa pianificazione esecuzione

Il mapping consiste nel rappresentare lrsquoambiente in cui il robot si muove

ottimizzando i movimenti del robot per ASGARD lrsquoambiente egrave stato rappresentato

mediante una matrice bidimensionale che rappresenta la sua area di azione

Il planning rappresenta la costruzione di un cammino geometrico nella

mappa Nel nostro lavoro si egrave deciso di dare la possibilitagrave al robot di scegliere il

percorso piugrave adatto che dovragrave intraprendere Come verragrave descritto piugrave in dettaglio

nel prossimo capitolo dopo aver inserito valori di riferimento degli ostacoli

mediante un algoritmo di ricerca saragrave il controllore a fornire le direttive e

scegliere che tipologia di camminata che ASGARD dovragrave affrontare in ogni

singolo istante alla fase di driving saragrave delegato il compito di scegliere il passo

opportuno al fine di velocizzare la camminata

Il goal per il nostro robot egrave il raggiungimento della posizione data come

obiettivo senza urtare ostacoli fissi presenti sul suo cammino Non essendo dotato

Modellizzazione cinematica e dinamica 81

di un sistema odometrico per il calcolo della posizione saragrave lo stesso controllore a

verificare in real-time la corretta posizione del baricentro del robot

Non possedendo nemmeno sensori di visione abbiamo deciso di simulare

e costruire una mappa object oriented30 la mappa conosce le posizioni degli

oggetti diffusi nel mondo e vieta al robot le aree in cui essi sono presenti

La mappa saragrave rappresentata da una matrice in cui per ogni cella avremo

valori che rappresentano la distanza dal goal31 e le distanza dallrsquoostacolo piugrave

vicino un opportuno algoritmo di planning (revisione dellrsquoAlgoritmo di Dijkstra)

attueragrave la ricerca del cammino meno dispendioso e dopo un opportuno controllo

diragrave al robot se attuare un passo di camminata veloce o un passo di correzione

471 Espansione degli ostacoli traformazione delle distanze

Basato sul concetto di propagazione drsquoonda32 il metodo della

trasformazione delle distanze proviene dal meccanismo utilizzato per processare

la forma in immagini binarie Il metodo consiste nella propagazione della distanza

da un insieme di celle poste in uno spazio rappresentato da una griglia

Si calcola lo scheletro dellrsquoimmagine ostacolo e si identificano le celle che

ne conterranno gli spigoli Poi si passa da sinistra a destra e dallrsquoalto al basso le

celle esterne al perimetro identificandole con distanza 1 Si procede per tutte le

celle della matrice quando tutti i passaggi sono completati il risultato egrave una

matrice che contiene la trasformazione delle distanze applicate al perimetro di un

oggetto I punti occupati dallrsquooggetto verranno identificati con valori idealmente

infinito e non saranno mai visitati

30 tipologia di costruzione di una mappa orientata agli oggetti 31 obiettivo 32 dallrsquooggetto considerato centro in tutte le direzioni dello spazio bidimensionale

Modellizzazione cinematica e dinamica 82

4 3 2 2 3 3 2 1 1 2 2 1 1 3 2 1 1 2 4 3 2 2 3

4 3 2 2 3 4 4 5 3 2 1 1 2 3 3 4 2 1 1 2 2 3 3 2 1 1 2 1 1 2 4 3 2 2 1 1 5 4 3 2 1 1 6 5 4 3 2 1 1 2

Figura 47 Propagazione drsquoonda per ostacolo singolo e multiplo

Abbiamo deciso di propagare lrsquoonda non solo dagli ostacoli questo

avviene in tutto lo spazio libero fluendo attorno agli ostacoli e dando unrsquoidea a

ogni cella della distanza dallrsquoobiettivo e della direzione da prendere per potersi

avvicinare

I valori del perimetro degli ostacoli vanno propagati in base alla geometria

del robot per evitare eventuali collisioni Nel nostro lavoro lrsquoespansione egrave stata

necessaria solo per i margini verticali in cui il raggio di elevazione delle zampe

poograve collidere con oggetti fissi durante la camminata longitudinale questo

problema non egrave stato invece riscontrato per lrsquoasse latitudinale

4 3 2 2 3 4 3 2 1 1 2 3

2 2 2 2 3 2 1 1 2 3 3 3 2 2 3 4

Figura 48 Griglia con espansione laterale ostacolo

Modellizzazione cinematica e dinamica 83

48 Scelta di un percorso Algoritmo di Dijkstra

Questo algoritmo egrave stato scelto come ricerca di un cammino minimo

allrsquointerno di un grafo[37] per la sua elegante semplicitagrave e il suo basso carico

computazionale (O(n)33)

Proposto da WDijkstra nel 1959[38] esso visita i nodi del grafo in

maniera simile ad una ricerca in ampiezza o profonditagrave In ogni istante lrsquoinsieme

N dei nodi viene diviso in nodi visitati V nodi frontiera F (che sono i successori34

dei nodi visitati) e i nodi sconosciuti che sono ancora da visitare

Per ogni nodo lrsquoalgoritmo tiene traccia del valore che nel nostro caso

saragrave il valore della distanza dal punto di arrivo e del nodo in cui siamo

Lrsquoalgoritmo consiste nel ripetere il seguente passo

zd

zu

si prende dallrsquoinsieme F un qualsiasi nodo z con minimo si sposta z da

F a V si spostano tutti i successori di z conosciuti in F e per ogni successore w di

z si aggiornano i valori di e

zd

wd wu ( )azww pddd +larr min dove a egrave lrsquoarco che

collega z a w Si sceglie in minore valore tra i successori di z si salva questrsquoultimo

nel vettore u

Alla fine dellrsquoalgoritmo arriviamo ad avere nel vettore u lrsquoinsieme dei nodi

che forniscono il cammino minimo dal punto di start al punto di end35

33 Orine di grandezza dellrsquoalgoritmo 34 Un successore di z egrave un nodo raggiungible lungo un arco uscente da z 35 dalla partenza allrsquoarrivo

Capitolo 5 Sviluppo dellrsquoalgoritmo di camminata

Sviluppo dellrsquoalgoritmo di camminata 85

51 Metodologie di sviluppo

Per lrsquoimplementazione della parte software si egrave scelto di far uso

dellrsquoambiente di sviluppo Matlab progettato appositamente per lavorare con

matrici e formule di notevole complessitagrave

Nel realizzare il modello matematico del robot ai fini di studiarne il

comportamento ci si potrebbe chiedere percheacute non sia stato utilizzato lrsquoambiente

di simulazione MSCADAMS in grado di fornire anche proprietagrave fisiche

direttamente dal modello CAD studiarne la cinematica la dinamica e

lrsquointerazione con il mondo esterno La finalitagrave di questo progetto perograve egrave quella di

creare uno strumento di supporto da poter essere realizzato in real-time

A questo punto Matlab potrebbe venir criticato per le sue prestazioni

inferiori a linguaggi quali il C ma esso mette a disposizione toolbox aggiuntivi

quali simulink36 che permettono un facile interfacciamento con tutti i dispositivi

hardware Ersquo comunque possibile convertire il codice sorgente in eseguibili o

addirittura nello stesso linguaggio C senza comprometterne alcuna funzionalitagrave

52 Progetto di una andatura

Per la creazione di una andatura rilevante al fine pratico abbiamo attuato

notevoli ricerche di analisi parametriche in merito Il principale obiettivo trovato egrave

risultata essere la realizzazione delle fasi di un passo stabile e veloce Ci

proponiamo quindi di massimizzare la componente velocitagrave senza provocare

instabilitagrave nel robot La velocitagrave si calcola secondo lrsquoespressione

impiegatotempomotodeldirezionenellapercorsospaziovelocitagrave

______

=

36 tool di matlab per la creazionedi controlli ad anello di automazione

Sviluppo dellrsquoalgoritmo di camminata 86

Per raggiungere tale scopo occorre concentrarsi su diverse questioni

bull Scelta del ciclo di camminata

bull Spazio decidere gli angoli del movimento di ciascuna zampa

bull Il tempo partire da una postura conveniente che garantisca i piugrave

brevi scostamenti possibili di angoli di giunto

bull La stabilitagrave

bull Le coppie prodotte dagli attuatori

bull La scelta della camminata

Attraverso lrsquoanalisi di alcune tra le possibili andature di quadruped sono

emersi pregi e difetti derivanti dallrsquoutilizzo di un ciclo di camminata con un

ridotto numero di fasi Un vantaggio fondamentale sta nel ridurre il tempo

impiegato e il maggior difetto egrave legato ai problemi di instabilitagrave del robot

Al fine di ridurre la stabilitagrave siamo intervenuti nella modellizzazione di un

opportuna camminata quasi statica che si adatta alla morfologia del nostro robot

Lrsquoidea egrave stata quella di trovare una camminata efficiente ma stabile

Al fine di ridurre lrsquoistabilitagrave sono state introdotte fasi aggiuntive che

garantiscono il poligono di appoggio e si egrave tentata di far assumere ad ASGARD

una postura a baricentro basso

Il trotto egrave stato escuso dalla nostra analisi non solo per il tempo di risposta

ma anche per lrsquoimpossibilitagrave di attuare spinte per il balzo

521 Lo spazio

La domanda che ci siamo posti egrave stata se risultava conveniente avanzare le

zampe attraverso piccoli spostamenti ripetuti o con ampi spostamenti meno

frequenti

Lrsquoavanzamento del robot avviene mediante la combinazione di due

movimenti

Sviluppo dellrsquoalgoritmo di camminata 87

bull lo spostamento delle singole zampe da una postura iniziale a una

finale

bull la spinta simultanea delle quattro zampe che permettono lrsquoeffettivo

movimento del main body37

La fase aerea risulta essere molto piugrave complessa e richiede un tempo di

attuazione maggiore rispetto a quella di spinta del busto

Lo spostamento assoluto della zampa che si solleva egrave la combinazione di

due movimenti quello attivo dipendente dalla traiettoria imposta allrsquoend effector

e quello passivo che si muove per mezzo della spinta offerta dal movimento del

busto i due movimenti sono strettamente correlati

Se lrsquoobiettivo egrave quello di massimizzare la velocitagrave del ciclo di camminata

la scelta egrave di prevedere lo spostamento della zampa piugrave ampio possibile (passo

lungo) Abbiamo comunque ritenuto utile introdurre entrambe le tipologie di

passo lungo e passo correttivo per la minimizzazione della distanza dal target

522 Stabilitagrave

Al fine di garantire la stabilitagrave egrave utile porsi nel caso quasi-statico cioegrave fare

in modo che il baricentro del robot cada sempre allrsquointerno del poligono di

stabilitagrave ciograve non sembra un problema per le fasi intermedie del ciclo di

camminata percheacute tutte e quattro le zampe toccano il terreno Il problema invece

si fa sentire nelle fasi in cui una zampa viene sollevata e un punto di contatto

viene a meno In questo caso abbiamo dovuto scegliere posture in cui il baricentro

cada nella base drsquoappoggio Ersquo indispensabile quindi prevedere tali configurazioni

e definirle in modo corretto

Occorre inoltre evitare che due zampe in appoggio poste sul medesimo

lato si urtino durante il moto infatti spazi di lavoro delle zampe presentano

strutturalmente zone di intersezione non trascurabili

37 corpo o busto del robot

Sviluppo dellrsquoalgoritmo di camminata 88

Un ulteriore accorgimento per migliorare la stabilitagrave risulta essere quello di

cercare di abbassere il baricentro durante la camminata al fine di mantenere

costante lrsquointensitagrave del moto associato alla forza peso del robot calcolato rispetto

ai punti di appoggio

523 Tempo

Un altro punto su cui si egrave posta particolare attenzione risulta essere il

piegamento delle zampe nel senso se decidere se per compiere un movimento egrave

piugrave conveniente (in termini di spostamento) tenere le zampe tese o piegate

In base a valori di test riscontrati si deduce che in genere conviene tenere

le zampe piuttosto tese poicheacute in questo modo lrsquoescursione angolare nonostante

amplifichi il movimento garantisce un corretto riposizionamento nella posizione

finale desiderata e i tempi non subiscono variazioni

53 Andature implementate

Dopo lrsquoanalisi compiuta sulle modellizzazioni naturali e sui parametri di

scelta abbiamo implementato due tipologie di camminata

Considerando la rigiditagrave del busto di ASGARD esso non dispone di spina

dorsale mobileabbiamo implementato uno stile quasi-statico che non altera lrsquoasse

del baricentro Questo ci ha vincolato a muovere una sola zampa alla volta

(motivazione da cercare anche nella alimentazione dei motori) facendolo partire

da una particolare postura in cui entrambe le zampe del lato sinistro del corpo

sono arretrate rispetto al busto e con angolature precisa degli arti

Abbiamo cosigrave creato una scomposizione del movimento in sei fasi

succesive

bull movimento zampa RL

bull movimento zampa RF

Sviluppo dellrsquoalgoritmo di camminata 89

bull spostamento in avanti del baricentro

bull movimento zampa LR

bull movimento zampa LF

bull spostamento in avanti del baricentro per tornare a posizione base

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

In questa tipologia di gait il robot si trova in piena stabilitagrave anche durante

lrsquoalzata di una zampa la proiezione del centro di massa risulta essere centrale al

triangolo drsquoappoggio

Questa tipologia di camminata quasi-statica egrave una alterazione del modello

Crawl38 presente in natura e nei modelli Aibo con lrsquoinnovazione di sfruttare

posture del normale trotto differenziandone e rallentandone le fasi di realizzazione

al fine di maggiorare il triangolo di appoggio in relazione alla struttura fisica del

nostro robot

Il segmento di appoggio dello stile Crawl viene qui espanso ad un

triangolo di stabilitagrave pur mantenendone le caratteristiche di spazio percorso e

velocitagrave

La nostra ricerca ci ha ulteriormente spinti alla creazione di un ulteriore

stile di camminata quasi-dinamico in cui la proiezione del baricentro durante

lrsquoalzata si spinge a coincidere con il lato del poligono di stabilitagrave

Le fasi di camminata diversificano da quelle precedenti per lrsquoangolazione

degli attuatori e lrsquoordine di esecuzione dei movimenti

Il passo risulta essere composto da 5 fasi

bull movimento zampa RF

bull movimento zampa LF

bull spostamento in avanti del baricentro

bull movimento zampa RR

bull movimento zampa LR

38 modello di trotto di Aibo

Sviluppo dellrsquoalgoritmo di camminata 90

Nella nostra analisi essendo ancora precario il controllo sugli attuatori

risulta impossibile realizzare un impulso tale da creare il balzo del robot Le

andature studiate escludono pertanto lrsquoandatura dinamica o trotto

La camminata quasi-statica egrave stata correttamente testata sul campo

ottenendo buoni risultati le tempistiche di risposta del robot no hanno permesso

perograve la completa realizzazione della quasi-dinamica che in alcune prove non viene

portata a termine in tutte le sue fasi a causa di cedimenti in stabilitagrave

Per questa ragione essa egrave stata ampiamente testata a simulatore

Per lrsquoanalisi dei suoi movimenti essi sono stati elaborati ed egrave stata creata

anche una variante che presenta una minimizzazione dellrsquoangolatura del giunto

spalla e riporta il movimento a quasi-stabile (passo correttivo esso sposta infatti il

robot sulllrsquoasse longitudinale solo di 2 cm)

54 Catene cinematiche del robot

Per lrsquoiplementazione a simulatore abbiamo dovuto adattare il nostro robot

ad una analisi cinematica e dinamica posizionando su di esso i sistemi di

riferimento in modo da costruire una catena cinematica aperta

Per semplificare il modello abbiamo deciso di caratterizzare la struttura del

robot in quattro catene cinematiche aventi base coincidente nel baricentro e

facendo coincidere ogni end-effector con la relativa zampa in movimento

La prima catena quindi che ci proponiamo di analizzare risulta quindi

essere la seguente

Sviluppo dellrsquoalgoritmo di camminata 91

z0

x0

y0

z1

x1

y1

y2

y3

y4

x2

x3

x4

Figura 49 Posizionamento dei sistemi di riferimento con D-H sulla zampa reale

Essa egrave stata implementata in Matlab utilizzando il metodo di D-H

precedentemente descritto implementato nel nostro tool di analisi

INIT_ROBOT Funzione di definizione delle componenti del robot allinterno del nostro simulatore In relazione alle componentistiche del nostro robot e alla grafica del simulatore questa funzione si propone di definire le parti fondamentali inserendo opportunatamente i parametri di Denavit Hartemberg Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 Copyright (C) 2003-2004 by Picco Sabrina zampa A clear L definifione allinterno della matrice L i parametri di Denavit Hartemberg sigma= 1 giunto prismatico sigma=0 giunto rotoidale sono stati inseriti due giunti prismatici per motivi di grafica del simulatore nel collegamento con i motori reali tali valori non verranno considerati alpha A theta D sigma L1 = link([0 -01 pi4 0 1] mod) L2 = link([0 -06 -pi4 0 0] mod) L3 = link([0 0 -pi4 0 1] mod)

Sviluppo dellrsquoalgoritmo di camminata 92

L4 = link([-pi2 -0573 0 0 0] mod) L5 = link([0 -0675 0 0 0] mod) L6 = link([0 -0735 0 0 0] mod) zampaa = robot(L zampaa Unimation AKampB) clear L

Nel codice Matlab riportato per la creazione di una zampa i parametri

prismatici introdotti sono utilizzati solamente a scopo grafico e vengono tralasciati

dallrsquoalgoritmo per la creazione dei movimenti e dei comandi da spedire algli

attuatori

Si egrave cercata una rappresentazione in grado di descrivere non soltanto i

giunti e i link ma anche altre caratteristiche fondamentali quali masse e lunghezze

Il passo viene scomposto principalmente in due passaggi movimento in

avanti delle zampe e spostamento del busto Nel secondo passaggio la catena

cinematica costruita deve ldquoinvertirsirdquo in quanto non saragrave piugrave la zampa del robot a

costituire il nostro end-effector ma essa saragrave solidale con il terreno e saragrave il

baricentro a diventare il nostro punto terminale asimulatore infatti non sono

possibili movimenti che sfruttano la semplice forza attrito

La catena cinematica verragrave cosigrave modificata

Creazione di un ulteriore robot per caratterizzare il cambiamento del punto di partenza della catena cinematicamentre per la prima parte del passo lend-effector egrave la zampadopo che questa egrave stata appoggiata lend-effector diventa il baricentro del robottino alpha A theta D sigma L1 = link([0 0 0 065 1] mod) L2 = link([0 0 0 0 0] mod) L3 = link([pi2 0 0 0 0] mod) L4 = link([0 0573 0 0 0] mod) L5 = link([pi2 0675 0 0 0] mod) L6 = link([0 0735 -pi4 0 0] mod) zampaa2 = robot(L zampaa2 Unimation AKampB)

Sviluppo dellrsquoalgoritmo di camminata 93

Figura 50 Fase di movimento delle zampe anteriorila base delle quattro catene

cinematiche egrave identificata con il baricentro di cui viene effettuata la prioezione

Figura 51 Fase di spostamento del baricentro si possono notare le proiezioni delle

basi delle rispettive catene cinematiche che si identificano con le zampe

La parte di codice presentato appartiene al file Init_robotm in cui vengono

definite tutte le catene cinematiche necessarie al movimento

Un ulteriore definizione di notevole importanza egrave la ricerca di tutti i punti

essenziali per il corretto posizionamento del robot durante la camminata

Sviluppo dellrsquoalgoritmo di camminata 94

Nel file DB_Positionm vengono memorizzate le posizione chiave per la

costruzione di un passo

Nel nostro algoritmo un passo egrave rappresentato da una sequenza di

posizioni base opportunatamente scelte in relazione ai parametri utili per

realizzare gait veloci e stabili

Il movimento che trasla tutta la struttura da un punto al successivo viene

definito da un profilo di accelerazione e velocitagrave implementato via software che

permette di ottenere ottenere un controllo efficiente e un movimento fluido che

rispetti certi vincoli di forza e di tempo

La funzione jtrajm infatti implementa al suo interno un polinomio di

quinto grado che permette il controllo in velocitagrave e accellerazine sia nel punto di

partenza che di fine della traiettoria permettendo un movimento ldquodolcerdquo che egrave in

grado di evitare picchi di torsione Purtroppo nella realizzazione pratica questo egrave

risultato fin troppo oneroso in quanto sui motori da noi usati non esiste alcun

controllo in velocitagrave

Al fine di rendere piugrave reale la simulazione abbiamo implementato un

semplice controllo in movimento da una posizione finale ad una posizione finale

in un certo intervallo di tempo Esso egrave costituito da un semplice polinomio di

terzo grado non attua controlli e gestisce il movimento spingendo il servo a

velocitagrave massima per ogni intervallo Presentiamo la parte di codice per la

gestione del calcolo delle traiettorie e le principali caratteristiche

sullrsquoimplementazione dei vincoli che diversificano in relazione al polinomio

utilizzato

FUNZIONE CUBICA_norm Funzione per la generazione di una traiettoria da un punto iniziale q0 ad un punto di arrivo qf in un certo intervallo di tempo tv utilizzando un polinomio di terzo grado parametri in input q0= posizione iniziale qf= posizione finale da raggiungere tv=tempo in cui effettuare lazione

FUNZIONE JTRAJ Funzione per la generazione delle traiettorie da qo a q1I numero di interpolazioni dipende dal valore di tLa costruzione di tale algoritmo di generazione avviene tramite lutilizzo di un polinomio di ordine 5 con condizioni di velocitagrave e accellerazione agli estremi parametri input q0=posizione iniziale

Sviluppo dellrsquoalgoritmo di camminata 95

parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [qtnqdtnqddtn] = cubica_norm(q0qftv) if length(tv) gt 1 controllo sul tempo tscal = max(tv) t = tv()tscal else tscal = 1 t = [0(tv-1)](tv-1) normalizzazione parametrotempo end q0 = q0() qf = qf() qt= a0+ a1t+ a2t^2+ a3t^3 vincoli da soddisfare qdt= a1+ 2a2t+ 3a3t^2 qddt= 2a2+ 6a3t implementazione dei vincoli A=q0 B= zeros(size(A)) C=((3(tscal^2))(qf-q0)) D=(((-2)(tscal^3))(qf-q0)) creazione del polinomio ttpv = [t^3 t^2 t ones(size(t))] p=[D C B A] creazione del vettore velocitagrave qtn = ttpv p

q1= posizione finale da raggiungere tv=tempo in cui effettuare lazione qd0=condizione velocitagrave nellestremo di partenza qd1=condizione velocitagrave nellestremo di arrivo parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 implementazione dei vincoli A = 6(q1 - q0) - 3(qd1+qd0)tscal B = -15(q1 - q0) + (8qd0 + 7qd1)tscal C = 10(q1 - q0) - (6qd0 +4qd1)tscal E = qd0tscal F = q0 creazione del polinomio tt = [t^5 t^4 t^3 t^2 t ones(size(t))] c = [A B C zeros(size(A)) E F] calcolo valore posizione qt = ttc calcolo la velocitagrave c1 = [ zeros(size(A)) 5A 4B 3 C zeros(size(A)) E ] qdt = ttc1tscal calcolo accellerazione c2 = [ zeros(size(A)) zeros(size(A)) 20A 12B 6C zeros(size(A))] qddt = ttc2tscal^2

Per la chiamata di entrambe queste funzioni vengono richieste le posizioni

di partenza di arrivo ed un tempo questrsquoultimo rappresenta il tempo che intercorre

tra un frame e il successivo cioegrave ogni quanto verragrave generato un valore di

posizione Per ottenere quindi un movimento il piugrave possibile continuo dovremo

richiedere la generazione di un elevato numero di frame introducendo un tempo

piccolissimo Ad esempio se vogliamo che lrsquointerpolazione generi 10 posizioni

intermedie e che tutto il movimento sia compiuto in 1 sec dobbiamo dare t=01

Sviluppo dellrsquoalgoritmo di camminata 96

55 Passo statico e dinamico

Finora abbiamo visto come sia possibile simulare il movimento di una

singola zampa o del baricentro del nostro robot per eseguire un passoa

simulatore questi movimenti devono perograve essere coordinati in modo opportuno

per permettere lrsquoesecuzione sequenziale delle fasi che lo compongono

In prima analisi il nostro lavoro si posto come obiettivo di creare un passo

quasi-statico in cui il baricentro del robot egrave strettamente compreso nella base

drsquoappoggio per garantire al robot una discreta stabilitagrave

Lrsquoanalisi delle fasi della camminata quasi-statica da noi introdotta

possono essere cosigrave schematizzate

Figura 52 Le 6 fasi della camminata quasi-statica

Da questo possiamo notare come il passo si divide in 6 movimenti in cui

vengono mosse le zampe sul lato sinistro del corpo si sposta in avanti il busto si

muovono le zampe sul lato destro e si risposta il busto per tornare alla posizione

di partenza

Ersquo da notare come lo spostamento del busto nellrsquoanalisi reale avviene

sfruttando lrsquoattrito delle zampe con il suolo mentre a simulatore egrave richiesta

lrsquoinversione della catena cinematica

La struttura da noi proposta e analizzata tenta di attuare una camminata

stabile e veloce

Il calcolo della stabilitagrave nei movimenti risulta effettivamente coerente con

le nostre aspettative

Sviluppo dellrsquoalgoritmo di camminata 97

Figura 53 Analisi margine di

stabilitagravesolo alzata(sinistra)in

movimento(destra)

Dove

321 ddd == distanza tra baricentro e perimetro

021 ne= ll durante il passo considero solo la distanza sullrsquoasse del moto

Dopo aver raggiunto un discreto livello di camminata quasi-statica il

nostro obiettivo si egrave spostato nella realizzazione di una camminata quasi-

dinamica

Figura 54 Fasi della camminata quasi-dinamica

Come si puograve notare in questa configurazione esistono istanti in cui il

baricentro del nostro robot giace sul perimetro del triangolo drsquoappoggio in questi

istanti servirebbe una risposta immediata degli attuatori per limitare le tempistiche

di movimento e permettere al robot di mantenere lrsquoequilibrio Questo fenomeno

presente anche in natura lo possiamo notare analizzando la corsa di una pantera

quando il suo corpo ondeggia in ampi angoli i suoi movimenti diventani fulminei

per mantenere la stabilitagrave

Il nostro algoritmo presenta la sezione camminata_statm che simula i due

passi e ne mostra le differenze

Sviluppo dellrsquoalgoritmo di camminata 98

Figura 55 Passo Statico vista semi frontale

Figura 56 Passo Statico vista dallrsquoalto

Figura 57 Passo Quasi-Dinamico vista semi

frontale

Figura 58 Passo Quasi-Dinamico vista

dallrsquoalto

Possimo notare anche dalle immagini come egrave posizionato il baricentro del

nostro robot rispetto alla base drsquoappoggio in diverse fasi del passo e come nella

camminata quasi-dinamica si spinge a limiti intollerabili per le caratteristiche

fisiche del nostro progetto attuale

Presentiamo di seguito lo schema a blocchi di analisi della camminata

Sviluppo dellrsquoalgoritmo di camminata 99

Cerca posizione da raggiungere

Calcola traiettoria end-effector tramite cubiche

Traccia poligono drsquoappoggio per laposizione raggiunta

inizio

Fine

Attua movimento

Posizione=target no

si

Figura 59 Schema a blocchi creazione singolo passo

Il codice proposto in appendice egrave stato successivamente opportunamente

modulato ma questo ha portato a ulteriori cali di prestezione Pertanto nella

esecuzione si egrave preferito riutilizzare il file integro Problemi di tempistiche sono

da attribuirsi alla parte grafica e al calcolo matriciale richiesto per ogni

movimento

La sperimentazione dei passi reali sul robot fisico sono stati effettuati

utilizzando array di valori di angoli di giunto estrapolati durante la simulazione

sopra citata

Sviluppo dellrsquoalgoritmo di camminata 100

56 Formule di forza e torsione sui giunti

Uno dei ruoli principali delle zampe egrave quello di sostenere la piattaforma

del robot e di evitare la caduta

A causa di un cedimento strutturale avvenuto durante i primi approcci di

pilotaggio dei motori abbiamo pensato necessario calcolare la forza e la torsione

sui giunti utilizzando le formule di Newton-Eulero viste precedentemente La

risoluzione di tali equazioni richiede una potenza di calcolo non indifferente ma

le tempistiche del nostro simulatore sono causate dalla lentezza nel plottaggio dei

grafici e dei movimenti del robot

Non avendo un diretto valore di velocitagrave dei motori ci egrave sembrato

interessante provare a calcolare effettivamente le tempistiche dei motori

Conoscendo tramite la cinematica diretta la posizione di arrivo per ogni coppia di

valori abbiamo calcolato lo spazio percorso Cronometrando il tempo richiesto

affincheacute i motori si portassero nella posizione voluta egrave stato possibile valutare la

velocitagrave media dei motori

Questa velocitagrave egrave stata successivamente introdotta nellrsquoalgoritmo

Per il calcolo delle formule di Newton-Eulero egrave inoltre da sottolineare

lrsquoimportanza della ripartizione delle masse ci egrave sembrato coerente ipotizzare le

equidistribuzione del peso su tutte e quattro le zampe in quanto la PIC aggiuntiva

non dovrebbe influenzare tale ripartizione

Dallrsquoanalisi svolta si trovano i seguenti valori sui giunti

Sviluppo dellrsquoalgoritmo di camminata 101

Figura 60 Gafici della torsione in un passo quasi-dianmico

Dal grafico possiamo inanzitutto notare come i valori di torsione che ogni

motore subisce sono inferiori al valore massimo possibile dichiarato dalla casa

costruttrice presente in ogni grafico con la linea nera continua

Possiamo vedere che il valore piugrave alto di torsione viene subito

dallrsquoattuatore presente sulla caviglia sul quale ricadono le maggiori sollecitazioni

Un comportamento analogo ma con decisamente meno carico avviene sul

giunto del ginocchio orientato come il precedente che ha la funzione di aiutare la

caviglia nel sostegno del peso

Il giunto della spalla presenta lrsquoasse di rotazione parallelo alla forza peso

di cui per questo motivo non se ne fa carico Le sue piccole perturbazioni sono

causate durante il movimento del busto dalla resistenza della forza di attrito

sfruttata per il movimento e durante lrsquoalzata della zampa dal peso di ogni singola

Sviluppo dellrsquoalgoritmo di camminata 102

articolazione che risulta perograve essere pressocheacute irrilevante rispetto al peso del

busto

Durante il movimento si possono osservare sulle grandezze di ginocchio e

caviglia una serie di oscillazioni tra due valori essi sono causati dalla ripartizione

del peso su tre o quattro zampe in base alle alzate consecutive quando il peso egrave

ripartito su tre zampe ovviamente il carico che ogni singola zampa egrave costretta a

subire cresce

Ovviamente durante lrsquoalzata ogni singola zampa presenta sui giunti

torsioni pressocheacute nulle questi minimi valori sono da attribuirsi alla sola

resistenza di ogni link alla forza di gravitagrave

La parte di codice fondamentale riportata in Appendice B per questa

funzione risulta essere la definizione dei parametri e lrsquoimplementazione delle

formule di andata e di ritorno dei valori Le funzione base viene chiamata

allrsquointerno di una ulteriore funzione NW-EUm che adatta lrsquoanalisi al passo

Esisteragrave nellrsquoalgoritmo una funzione eulerom che effettueragrave i calcoli di

Newton-Eulero anche per la catena cinematica che presenta come end-effector il

baricentro

57 Anello di Controllo

Un ulteriore controllo introdotto egrave il calcolo della cinematica inversa e il

controllo sulla soluzione trovata

A questo anello di controllo egrave stato predisposto il possibile inserimento di

un eventuale errore nel raggiungimento della posizione voluta Questo errore

potrebbe essere rilevato in futuro da sensori di posizione o da un sistema di

stereovisione dellrsquoambiente in grado di percepire la reale posizione di ogni zampa

Per ora viene passato come parametro di input settato da utente

Sviluppo dellrsquoalgoritmo di camminata 103

Figura 61 Anello di controllo cinematica inversa

Diversi approcci sono stati implementati per il calcolo della cinematica

inversa la funzione dagrave la possibilitagrave allrsquoutente settare le equazioni decisionali

quali scegliere il metodo da utilizzare settare lrsquoapprossimazione desiderata nel

caso di metodo del gradiente e la configurazione a gomito alto o basso nel caso di

metodo geometrico

Presentiamo di seguito lo schema a blocchi di sviluppo dellrsquoalgoritmo che

ci permetteragrave una spiegazione piugrave immediata del funzionamento

Sviluppo dellrsquoalgoritmo di camminata 104

Applico formule geometriche Metodo gradiente

Scelta algoritmo

inizio

Metodo inseguimento veloce del gradiente

Calcolo cinematica diretta

Setto parametri decisionali

Calcolo errore

fine

Figura 62 Schema a blocchi calcolo cinematico

Proponiamo successivamente lo pseudo codice in merito la funzione di

inseguimento veloce del gradiente al fine di rendere piugrave chiare e dettagliate le sue

caratteristiche di esecuzione

1 Anticipatamente viene settata la approssimazione desiderata per il

raggiungimento del target e lrsquoincremento dellrsquoangolo

2 Pongo nullo lrsquoincremento iniziale

Sviluppo dellrsquoalgoritmo di camminata 105

3 Pongo nulli i rispettivi valori di gradiente_old dei singoli giunti

4 Calcolo la distanza dal target con le posizioni base

5 Fintantochegrave la distanza non egrave minore dellrsquoapprossimazione introdotta

bull Calcolo i valori dei nuovi gradienti incrementando i singoli angoli

del valore incremento prefissato

bull Confronto il valore del segno del nuovo gradiente del primo giunto

con il corrispettivo gradiente_old

- se segno discorde diminuisco il valore dellrsquoangolo in

funzione el valore del gradiente nuovo e old al fine di

arrivare al punto di colle

- se segno concorde aumento ulteriormente lrsquoangolo del

giunto aggiungendogli un valore proporzionale alla distanza

trovata

bull viene eseguito lo stesso controllo per il secondo giunto

bull incremento la variabile num_iterazioni

bull i nuovi gradienti diventano i gradienti_old

bull Calcolo la distanza con il nuovi valori degli angoli dei due giunti e

torno al punto 5

58 Map-building e scelta del gait

Il nostro scopo egrave quello ricreare un programma che ricevendo in input i

soli valori di dimensione dellrsquoarea di gioco e posizione degli ostacoli fornisca al

robot tutti i comandi per muoversi nellrsquoambiente e arrivare allrsquoobiettivo senza piugrave

intervento esterno A tal fine questa funzione dovragrave comprendere diversi goal

intermedi che possono essere cosigrave schematizzati

Sviluppo dellrsquoalgoritmo di camminata 106

Creazione mappa

Ricerca percorso

Scelgo passi da attuare

inizio

fine

Il programma si divide in tre parti fondamentali

bull creazione della mappa tramite algoritmo di map-building

bull ricerca del percorso

bull decisione del passo da intraprendere per ogni istante e applicazione

del gait oppotuno

581 Costruzione della mappa ed espansione degli ostacoli

Abbiamo elaborato la costruzione di una mappa creando una matrice

bidimensionale in cui ogni cella rappresenta le possibili posizioni del baricentro

del robot nellrsquoambiente Utilizzando valori noti in input per le dimensioni e i

posizionamenti degli oggetti egrave il programma stesso a fornirci la matrice

Un ostacolo viene identificato come un cubetto in cui le coordinate inserite sono

Sviluppo dellrsquoalgoritmo di camminata 107

Xa1Ya1

a

Xa2Ya2

Per ogni cella sono presenti due valori il primo rappresenta la distanza

dallrsquoobiettivo il secondo la distanza dallrsquoostacolo piugrave vicino (se ne esiste piugrave di

uno) Questi valori sono determinati tramite onde di propagazione che partono

dallrsquooggetto in esame e si diffondono in tutte le direzioni allrsquointerno della mappa

Lrsquoonda egrave da considerarsi come una scansione prima orizzontale e poi verticale

dellrsquoambiente che incrementa ad ogni riga i controlli sulla distanza sono

introdotti in seconda analisi il controllo sulla distanza dellrsquoostacolo piugrave imminente

qualora ce ne siano presenti piugrave di uno e il controllo sullrsquoespansione drsquoonda

limitata qualora lrsquoostacolo o la destinazione si trovino ai borbi della mappa

Gli ostacoli presentano una ulteriore onda di espansione orizzontale in

quanto egrave solo lungo questa direzione che possono avvenire collisioni tra il nostro

robot in movimento e gli ostacoli fissi Accorgimenti successivi ci hanno

permesso la costruzione di un ulteriore passo correttivo che puograve essere utilizzato

in un secondo momento per un avvicinamento forzato

Figura 63 Mappa creata vista dallrsquoalto

Sviluppo dellrsquoalgoritmo di camminata 108

Figura 64 Visione della mappa semilaterale si possono vedere i corpi degli ostacoli

Matrice generata

10 3 9 2 109 0 110 0 110 0 109 0 4 2 9 2 8 2 109 0 110 0 110 0 109 0 3 1 8 1 7 1 6 2 5 1 109 0 110 0 110 0

110 0 110 0 109 0 4 2 109 0 110 0 110 0 110 0 110 0 109 0 3 2 2 2 1 1 0 1

Ogni elemento della matrice rappresenta un vertice di intersezione delle

coordinate (xy) della mappa Il primo valore equivalente a 110 rappresenta

lrsquoostacolo il valore 109 la sua espansione in altro caso esso egrave la distanza dalla

destinazione Il secondo valore rappresenta la distanza dallrsquoostacolo piugrave

imminente

582 Algoritmo di ricerca del percorso minimo

Avendo a disposizione una matrice che mi identifica tutto lrsquoambiente che

circonda il robot abbiamo deciso di modificare lrsquoAlgoritmo di Dijkstra

precedentemente descritto al fine di trovare un percorso minimo con bassa

computazionalitagrave di calcolo

Sviluppo dellrsquoalgoritmo di camminata 109

Nella prima fase abbiamo applicato lrsquoalgoritmo di ricerca operativa non su

un grafo ma su una matrice considerando come nodi successori le quatto celle

confinanti (su giugrave dx sx) rispetto a quella in cui ci troviamo Il costo di

movimento o meglio il miglior successore in cui spostarsi per riterare lrsquoanalisi

viene scelto tramite lrsquoimplementazione di un compromesso adeguato tra

minimizzazione della distanza dal target e massimizzazione della distanza dagli

ostacoli

Questa funzione restituisce in output se egrave stato trovato un percorso in caso

affermativo di esso visualizza le coordinate dei punti da attraversare e le

indicazioni in rappresentazione direzionale (destra sinistra avanti indietro)

Direzioni

start Destra Avanti Avanti Destra Destra Avanti Avanti Destra Destra Destra

Coordinate

1 1 1 2 2 2 3 2 3 3 3 4 4 4 5 4 5 5 5 6

5 7

Tabella 2 risultati ricerca percorso

Riportimo il flow-chart che descrive lrsquoalgoritmo di ricerca sopra citato

Sviluppo dellrsquoalgoritmo di camminata 110

pos =partenza migliore=non_valido

Considero 4 successori

Passo ad altro

successore

pos=visitato

pos=v

Stampo percorso in coordinate

Trasformo percorso in direzioni

inizio

Pos = destinazione

Egraversquo pos sul bordo

Considero 32 successori

Insieme successori vuoto

Considero successore v

distanza dest_vltdistanza dest

migliore

distanza ost_vltdistaza ost

migliore

Percorso non trovato

salvo pos in percorso

fine

si no

si

no

si

si

no

no

no

si

Figura 65Schema a blocchi ricerca percorso

Sviluppo dellrsquoalgoritmo di camminata 111

583 Realizzazione del gait

Una volta generato il percorso da seguire segue la parte piugrave dispendiosa in

tempo in quando legata alla grafica

Sono stati implementati per la realizzazione del percorso i seguenti passi

bull in avanti

bull in dietro

bull a destra

bull a sinistra

bull correttivo avanti

bull correttivo indietro

bull correttivi laterali non sono stati introdotti a causa del giagrave minimo

spostamento laterale per ogni passo in quella direzione (2 cm)

La terza parte di algoritmo considera il percorso generato e decide il passo

da mettere in pratica uno spostamento sullrsquoasse verticale del piano implica una

scelta ulteriore per la calibrazione del numero di passi lunghi e dei passi correttivi

Una ampia falcata permette il movimento del robot di 7 cm mentre il passo

correttivo di 2 Il programma in base al percorso ottimizza le tempistiche

effettuando il maggior numero di passi ampi e riassestando la posizione con il

minor numero possibile di passi correttivi dispendiosi in tempo

Saragrave possibile ammirare tutta la camminata del nostro robot in una

immagine che plotta tutti i movimenti del robot

Sviluppo dellrsquoalgoritmo di camminata 112

Figura 66 Robot in movimento nellrsquoambiente

Al raggiungimento dellrsquoobiettivo destinazione sulla mappa appariragrave oltre il

percorso ideale il percorso effettivamente compiuto dal robot dandoci in uscita

anche le approssimazioni al valore reale di destinazione

Figura 67 Immagini del percorso trovatoin verde percorso ideale in blu percorso

effettivo

Tali valori rappresentano la distanza ancora da percorrere e la scelta

dellrsquoulteriore passo da intraprendere per compierla

Sviluppo dellrsquoalgoritmo di camminata 113

SONO ARRIVATO A DISTANZA DALL OBIETTIVO DIX = 35527e-015 Y = -03200 testo = devo fare ancora ans = 16000 testo = passi correttivi indietro

Dopo averci fornito queste informazioni il controllore comanderagrave e faragrave

eseguire al robot i passi correttivi appropriati che gli mancano per il

raggiungimento della destinazione

Schema a blocchi dellrsquoultima parte dellrsquoalgoritmo

Sviluppo dellrsquoalgoritmo di camminata 114

Alzata nello start

Analisi elemento i

Avanti Indietro Passo dx Passo sx

Calcolo avanzamento complessivo

Calcolo num passi lunghi e

corretivi

Esegue passi

Memorizzo pos

Stampa percorso vero e ideale

Calcola distanza dal target

Effettua passi correttivi ancora

possibili

inizio

Esistono elementi in percorso

Calcolo indietreggiamento

complessivo

Esegue passo

fine

no

si

1 -1 2 -2

Figura 68 Schema a blocchi movimento

Capitolo 6 Sperimentazione e analisi dei risultati

Sperimentazione e analisi dei risultati 116

61 Risultati statici

La creazione di file a se stanti contenenti tutte le possibili posture del

nostro robot e la realizzazione di procedure che identificano i passi standard

possono essere in un secondo momento cablati su un chip di controllo diretto

posizionato on-board

Questo darebbe la possibilitagrave reale al robot di deambulare senza

condizionamento con un Pc remoto Il processo di creazione dei percorsi vincola

perograve il movimento in quanto non sono presenti tuttora sensori di visione

Possiamo inoltre affermare che tra gli stili di camminata da noi studiati ha

un ruolo fondamentale la camminata quasi-statica che effettivamente permette il

movimento del robot in ambiente piano la camminata quasi dinamica richiede

ulteriori fasi di analisi soprattutto in merito al miglioramento della risposta dei

motori

Sono state effettuate diverse prove per la realizzazione di movimenti

fluidi il valore riscontrato a simulatore e di 30 frame mentre nella realizzazione

pratica a causa dei tempi di risposta egrave stato raggiunto un valor di soglia frame=8

che permette la realizzazione di movimenti continui

Sperimentazione e analisi dei risultati 117

611 Passo reale effettuato

In prima analisi poniamo le foto delle fasi piugrave significative del passo quasi-

statico compiuto da ASGARD in laboratorio

- 1 - - 2 -

- 3 - - 4 -

- 5 - - 6 -

Sperimentazione e analisi dei risultati 118

- 7 - - 8 -

- 9 - - 10 -

- 11- - 12 -

Tabella 3 Foto del passo quasi ndashstatico eseguito da ASGARD

Le foto rappresentano la sequenza di esecuzione della nostra camminata

quasi-statica nelle viste dallrsquoalto si possono notare le caratteristiche delle posture

assunte dalle zampe e si puograve verificare il poligono drsquoappoggio

Sperimentazione e analisi dei risultati 119

Da porre in particolare evidenza sono gli angoli del giunto che rappresenta

la spalla calibrati al fine di non interferire nel movimento durante il moto

Nelle viste laterali sono da porre in particolare evidenza i momenti di volo

di ogni singola alzata caratterizzandone le tempistiche di movimento

Da notare le immagini 5 6 e 1011 in cui si verifica la spinta del baricentro

in avanti nel primo caso per lrsquoavanzamento a metagrave passo nel secondo caso per

riposizionare le zampe nella posizione iniziale

612 Misurazioni reali della pressione

Durante le prove di laboratorio in merito alla camminata statica del robot

sono stati effettuati rilevamenti dellrsquounico sensore di pressione posto sotto la

zampa anteriore sinistra

Figura 69 Particolare del sensore di pressione da noi costruito (sinistra) e del

posizionamento di esso sotto la zampa anteriore sinistra (destra)

Sperimentazione e analisi dei risultati 120

I dati riscontrati sono

istanti descrizione Valori di resistenza misurati(ohm) media

passi 1 2 3 4 5 ottenuta

1 4 in appoggio 321 287 298 314 306 3052 2 alzo C 233 246 239 253 232 2406 3 appoggio C 266 275 294 278 289 2804 4 alzo B 1271 1232 1244 1262 1251 1252 5 appoggio B 98 90 99 92 87 932 6 sposto busto 311 308 298 301 287 301 7 alzo D 198 209 203 195 211 2032 8 appoggio D 302 319 311 320 301 3106 9 alzo A 180 193 184 192 177 1852

10 appoggio A 268 259 262 270 281 268 11 sposto busto 108 115 127 122 123 119 12

Assestamento

308

305

311

313

299

3072

Tabella 4 Rilevamenti sensore pressione

Da questa tabella abbiamo trasformato i valori di resistenza in forza secondo i

diagrammi di caratteristica del sensore e abbiamo trovato

val resistenza pressione

Ohm

Kg

4 in appoggio 3052 031 alzo C 2406 045

appoggio C 2804 034 alzo B 1252 002

appoggio B 932 15 sposto busto 301 0306

alzo D 2032 049 appoggio D 3106 034

alzo A 1852 055 appoggio A 268 046 sposto busto 119 06 assestamento

3072

033

Tabella 5 Trasformazione in forza dei valori misurati del sensore pressione

Sperimentazione e analisi dei risultati 121

Da cui si puograve ricavare il seguente grafico

Volori di pressione rilevati sperimentalmente

002040608

1121416

0 5 10 15

istanti temporali passo (sec)

pres

sion

e (K

g)

pressione

impatto con il suolo

Alzata

Figura 70 Grafico della pressione

Da questo possiamo notare come effettivamente il sensore rileva le

variazioni di forza peso che agiscono sulla zampa

Le misure sono state effettuate dopo un periodo di assestamento iniziale

quando effettivamente tutte le zampe sono appoggiate il carico risulta essere

minore mentre aumenta alle singole alzate delle altre tre articolazioni Si puograve

inoltre notare dal grafico come dopo lrsquoalzata la zampa subisce un forte impatto

con il terreno istante 5 e non si riposiziona piugrave esattamente corretta aderenza

qusto causa un eccessivo carico solo su alcune parti esterne del piedino (dove egrave

situato il sensore) che andranno ad aggravare le misurazioni durante le successive

alzate

Purtroppo questo incorretto posizionamento egrave causato dalla poca mobilitagrave

del giunto passivo della zampa che puograve essere migliorato solo tramite interventi

alla struttura meccanica Ulteriore vantaggio si potrebbe riscontrare con

lrsquoinserimento di un controllo di velocitagrave che eviti impatti considerevoli con il

terreno

Sperimentazione e analisi dei risultati 122

613 Confronti di cinemetica inversa

Proponiamo alcuni risultati ottenuti con i tre diversi metodi di cinematica

inversa introducendo disturbo nullo

Metodo geometrico

Metodo del gradiente

Inseguimento veloce

del gradiente Approssimazione=25 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 438

Errore in gradi 0 2 2 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3

N= 85

Errore in gradi 0 2 2 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1

Approssimazione=05 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 2030

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

N= 130

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

Tabella 6 Confronto risultati ottenuti conmetodi cinematica inversa

Sperimentazione e analisi dei risultati 123

Da cui si possono ricavare i seguenti andamenti dellrsquoerrore

Errore sul secondo giunto con approssimazione di 25 gradi

01234

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Errore sul terzo giunto con approssimazione di 25 gradi

0

1

2

3

4

0 2 4 6 8

numero angoli

erro

re (g

radi

) metodogeometrico

metodo diinseguimento delgradiente

metodo diinseguimentoveloce

Errore sul secondo giunto con approssimazione di 05 gradi

0

05

1

0 2 4 6 8

nume r o a ngol i

met odo gradient e

met odo diinseguiment o delgradient e

met odo diinsegiument oveloce

Errore sul terzo gionto con approssimazione di 05 gradi

0

05

1

15

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Figura 71 Grafici che rappresentano lrsquoandamento dellrsquoerrore trovato

Sperimentazione e analisi dei risultati 124

I valori degli angoli inseriti sono quelli effettivamente lanciati come

comando ai motori

Vediamo che nonostante il primo metodo sia il migliore in quanto fornisce

ottimi risultati con una sola iterazione ha a monte una oneroso carico di analisi

Il metodo di inseguimento veloce fornisce buoni risultati con una notevole

diminuzione del numero di iterazioni rispetto al metodo del gradiente semplice

essi si sono quindi dimostrati metodi di qualitagrave efficiente per il ritrovamento di

posizioni desiderate Si ricorda che questi metodi sono stati qui analizzati come

banco di prova per possibili applicazioni in robot presenti in laboratorio dotati di

catene cinematiche piugrave complesse (LARP di UScarfogliero[39])

62 Risultati dinamici

Dallrsquoanalisi dei grafici ottenuti tramite le formule di Newton-Eulero

presentati nel capitolo precedente possiamo affermare che i motori utilizzati sono

stati correttamente calibrati in merito di forze e torsioni a cui sono sottoposti

durante il passo

Variando il tempo di esecuzione dei movimenti otteniamoli seguente

grafico

Sperimentazione e analisi dei risultati 125

Figura 72 Grafico torsione con interpolazione limitata a 2 frame

Riducendo di molto il valore di interpolazione come si puograve vedere di

grafici i motori subiscono delle variazioni di carico molto forti in istanti

ravvicinati in quanto come giagrave piugrave volte affermato non esiste un controllo in

accelerazione e velocitagrave Vediamo inoltre come i valori di picco del giunto della

caviglia della zampa b trovati sono in stretta similitudine con i parametri misurati

nei rilevamenti del sensore di pressione posto sotto la zampa stessa I due grafici

simili nellrsquoandamento presentano come unica differenza la misura dellrsquoimpatto

con il suolo nel grafo della pressione viene rilevato mentre la torsione del motore

non evidenzia le forze di repulsione del suolo ma solo le forze i momenti e forza

di gravitagrave sullrsquoasse rotoidale del giunto

Sperimentazione e analisi dei risultati 126

Notiamo comunque che nonostante i picchi subiti i valori rimangono nei

limiti proposti dalla HITEC

Il cedimento strutturale riscontrato egrave stato quindi attribuito a imprecisioni

di laboratorio avvenute per inesperienza iniziale

621 Caratteristiche negative dei motori

6211 Velocitagrave

Una nota negativa nellrsquoutilizzo di questi servo attuatori va perograve apostrofata

in merito alla velocitagrave di rotazione che rimane di gran lunga inferiore a quella

dichiarata dalla casa costruttrice ( 023 sec60deg con carico 018 sec60deg a vuoto)

6212 Alimentazione

Un problema riscontrato durante le prove sul campo riguarda

lrsquoalimentazione I motori vengono alimentati direttamente dalla PIC che genera i

segnali la quale egrave a sua volta alimentata da un trasformatore in grado di fornire

circa 35A alla tensione di utilizzo di 6V Dopo aver riscontrato dei problemi

durante lrsquoutilizzo di piugrave motori in simultanea siamo andati a verificare i valori

effettivi di corrente assorbita a run-time Il valore dichiarato di 900mA (senza

carico) sulle specifiche HITEC [28] consentirebbe il movimento di pressocheacute tutti

i motori in simultanea ma con carico applicato si sono riscontrati valori di picco

di 18A Essendo improbabile che tutti i 12 motori vengano utilizzati in

contemporanea e sotto massimo sforzo non egrave necessario dover fornire

costantemente 216A ma risulta comunque chiaro che in alcuni casi la corrente

fornita non egrave sufficiente e ciograve causa malfunzionamenti alla PIC Oltre alla

necessitagrave di acquistare un trasformatore piugrave potente sarebbe opportuno separare

lrsquoalimentazione dei motori da quella della PIC o perlomeno apportare le

necessarie modifiche affincheacute la corrente fornita al processore non sia

strettamente dipendente da quella assorbita dai motori

Sperimentazione e analisi dei risultati 127

63 Caratteristiche del percorso

Solitamente la deambulazione per sistemi legged richiede al robot di essere

fornito di un considerevole numero di sensori per lrsquoanalisi dellrsquoambiente

La realizzazione di un nuovo algoritmo che facendo cooperare elementi di

cinematica e ricerca matematica permette la camminata fornisce un efficiente

mezzo di analisi

I dati a disposizione ci permettono di affermare che lrsquoalgoritmo di

creazione delle mappe e ricerca di percorsi minimi presenta ottime risposte a

differenti tipologie di ambienti proposti

Tra le principali doti di cui esso dispone ci permettiamo di sottolineare la

velocitagrave computazionele e la semplicitagrave di utilizzo

Inserendo infatti semplicemente le dimensioni dellrsquoarea drsquoazione e la

definizione delle coordinate dellrsquoostacolo esso rileva il percorso minimo che ci

conduce al target in tempistiche ridotte

La parte innovativa di tale algoritmo permette non solo di generare il

percorso ma di delegare al sistema la scelta del passo da intraprendere nel singolo

istante basandosi semplicemente su coordinate geometriche e su un data base di

posizioni possibili

La fase di decisione del passo da intraprendere puograve essere considerato un

buon risultato di ricerca nella creazione della prima attivitagrave celebrale di ASGARD

Sperimentazione e analisi dei risultati 128

Figura 73 Esempi di percorsi provati a simulatore

Capitolo 7 Conclusioni e sviluppi futuri

Conclusioni e sviluppi futuri 130

71 Risultati raggiunti

Il percorso di analisi svolto ci ha permesso di realizzare un prototipo di

robot quadrupede tra i piugrave leggeri presenti nella ricerca Costriuito con materiali

tecnologicamente avanzati che gli garantiscono particolari doti di elasticitagrave e

torsione richiede anche per il movimento semplici attuatori utilizzati

abitualmente nellrsquoambito del modellismo

Queste considerevoli doti pongono ASGARD in una rilevante posizione per

la realizzazione futura di consistenti progetti di Trot gait deambulazione in

ambienti ostili e superamento di ostacoli

Nonostante il nostro robot non sia fornito come GEO (vedi cap3) di una

spina dorsale adattabile la camminata da noi implementata gli fornisce stabili

posture che gli consentono un movimento rapido nellrsquoambiente

Tale innovativa camminata permette infatti al nostro robot tempistiche di

movimento per nulla invidiabili a Patrush o a Tekken (vedi cap3)

Concludendo questo lavoro possiamo affermare di aver realizzato un

potente mezzo di analisi della camminata statica e dinamica dimostrandosi

estremamente utile nelle prime fasi di analisi e nella realizzazione pratica

successiva

Essendo il nostro robot tuttora sprovvisto di sensori ci egrave parso utile

implementare un algoritmo di ricerca del percorso minimo in ambiente con

ostacoli in posizioni note

A tal fine abbiamo pensato di far cooperare diversi settori di ricerca

rielaborando algoritmi di ricerca operativae applicandoli a mappe di ambienti

Il notevole risultato ottenuto permette ad ASGARD di riconoscere

lrsquoambiente nonostante non ottenga feedback dallo stesso Questo algoritmo

rappresenta il primo sostanziale passo per la creazione di un sistema di

apprendimento per rinforzo intelligente per il nostro robot

Conclusioni e sviluppi futuri 131

La comunicazione con i servo motori ha permesso un primo reale

interfacciamento tra macchina e robot e lo studio del movimento ha permesso al

robot di compiere i suoi primi passi

72 Progetti futuri

Attualmente il robot egrave in grado di deambulare in ambiente piano e molte

sono le applicazioni e le migliorieche potrebbero essere aggiunte al controllo del

nostro automa

721 Modifiche meccaniche

Miglioramento del giunto passivo che si trova nella caviglia la fine di

realizzare un sistema mossa-smorzatore[40] che riesce ad attuire gli urti e le

oscillazioni presenti nellrsquoimpatto durante lrsquoappoggio della zampa al terreno

A tal scopo egrave stato realizzato il primo rudimentale progetto di

reingegnerizzazione del giunto ottenendo il seguente risultato

Figura 74 Caratteristiche del progetto di zampa realizzato si possono notare le

torsioni possibili su due assi

Conclusioni e sviluppi futuri 132

In esso si puograve notare come il giunto del piedino sia diventato

completamente mobile regolato solamente dalla costante elastica delle molle che

puograve essere a sua volta regolata dalle viti presenti sulla base del piedino

Il sistema molla-smorzatore egrave in grado di immagazzinare energia durante

lrsquoimpatto con il suolo e di riutilizzarla per il riposizionamento in aderenza

perfetta

Ulteriore miglioria consigliata egrave lrsquoincremento dei sensori al fine di

permettere al robot una conoscenza piugrave vasta e piugrave autonoma dellrsquoambiente

esterno Un ritorno di valori sensoriali inoltre migliorerebbe il programma da noi

realizzato permettendo la reale acquisizione di dati esterni e non forniti da utente

Il sensore fino ad oggi presente ci permette semplicemente di capire i

carichi presenti sulla zampa ma non ci fornisce ulteriori informazioni Ponendo un

sensore su ogni zampa e migliorando la struttura portante di ogni singola

cavigliaverrebbero forniti dati utili nel valutare il corretto posizionamento della

zampa e cioegrave la corretta esecuzione di ogni passo

Al fine di un futuro miglioramento della parte sensoriale egrave stata condotta

una ricerca riguardante i migliori sensori disponibili sul mercato che meglio si

adattano alle nostre problematiche tale ricerca viene presentata in Appendice A

722 Miglioramenti Hardware

Un ulteriore miglioramento egrave richiesto nella comunicazione tra computer e

scheda di comando degli attuatori

Questa scheda non permette tuttora la programmazione della PIC presente

su di essa andrebbe rivisto il circuito presente in modo da sfruttare anche i canali

di ritorno in lettura in modo da sfruttare questi ultimi per feedback sensoriali

Questo miglioramento permetterebbe lrsquoutilizzo della scheda come interfaccia di

inputoutput del robot

Conclusioni e sviluppi futuri 133

Di primaria necessitagrave egrave la differenziazione dellrsquoalimentazione dei motori

dallrsquoalimentazione della scheda per non compromettere il corretto funzionamento

della PIC

723 Miglioramenti Software

Raggiunto lrsquoobiettivo di una buona camminata quasi-statica si puograve pensare

di integrare un controllore on-board aggiungere sistemi di trasmissione wireless e

unrsquoalimentazione autonoma per rendere il robot indipendente dalla postazione

fissa

Come si puograve notare i campi di ricerca sono molto vasti da semplici

migliorie hardware al campo di Intelligenza Artificiale per dotare il robot di

potenzialitagrave che lo rendano il piugrave possibile un emulatore dei comportamenti

naturali di un mammifero

73 Conclusioni finali

A causa della complessitagrave dellrsquoanalisi e delle difficoltagrave implementative

riscontrate alcune parti richiedono ancora un grosso intervento per arrivare a

efficienti strumenti di precisione per lrsquoattuazione dei movimenti

Sono comunque da sottolineare i grandi passi compiuti In quanto in poco

piugrave di un anno il progetto egrave stato creato e messo in pratica riuscendo ad arrivare

ad un passo cruciale per il corretto funzionamento

Il continuo progresso e il continuo impegno potranno portarci in un futuro

non troppo lontano alla creazione di amici elettronici in grado di giocare con noi

e di muoversi come farebbe un normale amico a quattro zampe

Lrsquointroduzione inoltre di sistemi di camminata dinamica intelligente in

qualsiasi ambiente porterebbe evoluzioni significative anche in ambito di bio-

ingegneria ambientale rendendo in questo modo possibile lrsquoacquisizione di dati

Conclusioni e sviluppi futuri 134

provenienti da habitat inaccessibili allrsquouomo quali crateri di vulcani profonditagrave

marine o pianeti del sistema solare permettendo cosigrave una crescita culturale

dellrsquointera umanitagrave

Bibliografia

[1] NDiolaiti ldquoSistemi di navigazione per robot mobili in ambienti sconosciutirdquo

Thesis 2001

[2] J Borenstein e L Feng ldquoMeasurement and correction of systematic odometry

errors in mobile robotsrdquo In IEE Transactions on Robotics and Automation

vol7 NO 12 pag 869-880 1996

[3] KS Chong e L Kleeman ldquoAccurate odometry and error modelling for

mobile robotrdquo In Proceedings of IEEE International Conference on Robotic

and Automation pag 2783-2788 Albuquerque New Mexico 1997

[4] U Gerecke e N Sharkey ldquoQuick and Dirty Localization for a Lost Robotrdquo

University of Sheffield 1999

[5] B Yamauchi A Shultz e W Adams ldquoMobile robot exploration and map-

building with continuous localizationrdquo In Proceedings of IEEE International

Conference on Robotic and Automation pag 3715-370 Leuven Belgium

1998

[6] H TakedaC Facchinetti JC Latombe ldquoPlanning the motions of a mobile

robot in a sensory uncertainty fieldrdquo In IEEE Transactions on Pattern

Analysis and Machine Intelligence pag 1002-1017 oct 1994

[7] JP Laumond editor ldquoRobot Motion Planning and Controlrdquo Published 1999

[8] C Sanitati ldquoAnalisi e implementazione di andature per il robot quadrupede

Sony Aibordquo Thesis 2001

[9] MH Raibert ldquoLegged robots that balancerdquo MIT Press Cambridge

[10] httpmarsroversjplnasagovgalleryspacecraft

Bibliografia 136

[11] AAbourachid ldquoA new way of analysing symmetrical and asymmetrical

gait in quadrupedsrdquoCRBiologiesvol 326pag 625-630May 2003

[12] JAVilenskyJACook ldquoDo quadrupeds require a change in trunk posture

to walk backwardrdquoJournal of Biomechanicsvol33pag 911-916March 2000

[13] Oricom technology ldquoQuadruped Locomotion- Musing about running dogs

and othe 4-legged creaturesrdquo(httpwwworicomtechcomprojectslegshtm)

[14] RKurazumeKYoneda e SHiroseFeedforward and Feedback dynamic

trot gait control for quadruped walking vehicleAutonomous Robotsvol12

pag 157-1722002

[15] H Kimura I Shimoyama e H Miura ldquoDynamics in the dynamic walk of

a quadruped robotrdquo RSJ Advanced Robotics vol4 no3 pp283-301 1990U

(httpwwwkimuraisuecacjpfacultiesColliedynamic-walk-of-quadrupedhtml)

[16] M Raibert H Brown MA Chepponis EF Hastings S Murthy e FC

Wimberly ldquoDynamically Stable Legged Locomotion Second Report to

OARPArdquo Robotics Institute Carnegie Mellon University January 1983

(httpwwwaimiteduprojectsleglabrobotsquadrupedquadrupedhtml)

[17] MH Raibert M Chepponis and H Brown ldquoRunning on Four Legs As

Though They Were Onerdquo IEEE Journal of Robotics and Automation Vol

RA-2 No 2 June 1982 pp 70-82

[18] STalebiIPoulakakisEPapadopoulos e MBuehler ldquoQuadruped robot

running with a bounding gaitrdquoCenter for Intelligent MachinesMcGill

UniversityMontreal

[19] MA Lewis e LS Simo ldquoNeurocore Evolution Development and

Roboticsrdquo Sumitted to IROS 96 Osaka(httpuirvliaiuiucedutlewispicsgeoIIhtml)

[20] Y Fukuoka H Kimura e AH Cohen ldquoAdaptive Dynamic Walking of a

Quadruped Robot on Irregular Terrain based on Biological Conceptsrdquo Int

Journal of Robotics Research Vol22 No3-4 pp187-202 2003

[21] MA Lewis ldquoGait Adaptation in a Quadruped Robotrdquo Autonomous

Robot 2002 in PressIguana RoboticsInc

[22] httpwwwrobocuporg

Bibliografia 137

[23] httpwwwaibo-europecomdownloadsAIBO_Storypdf

[24] LSteel e FKaplan ldquoAibos first wordsThe social learning of language and

meaningrdquo Sony Computer Science laboratory Vub Artificial Intelligent

laboratory

[25] httpwwwopencaeczhwhw_sony-robot_aibohtml

[26] httpprojectspowerhousemuseumcomhscaiboteardownhtm

[27] M Piralli ldquoProgetto quadrupede Politecnico di Milanordquo 2004

[28] HITEC httpwwwhitecrcdcom file HS475HbpdfServomanualpdf

[29] Proprieta chimiche ldquopolicarbonatodocrdquo da

httpwwwedilportalecomedilcatalogo0EdilCatalogo_SchedaProdottoaspI

DProdotto=1897

[30] DCrespi e F Gandola ldquoScheda di interfacciamento per servomotorirdquo2004

[31] L Sciavicco e B Siciliano ldquoRobotica industriale ndash Modellistica e

controllo di Manipolatorirdquo EdMc-Graw-Hill seconda edizione 2000

[32] G Gini e V Caglioti ldquoRoboticardquo Ed Zanichelli 2003

[33] MFolgheraiter ldquoEsempi di cinematica direttainversardquoPolitecnico di

Milano Robotica 2004

[34] HElias ldquoInverse Kinematics - Improved Methodsrdquo2004

httpfreespacevirginnethugoeliasmodelsm_ik2htm

[35] JMinguez e LMontanoNearness Diagram (ND) navigationcollision

avoidance in troublesome scenariosIEEE Transaction on Robotics and

Automationvol 20NO 1 February 2004

[36] AArleoJRMillan e DFloreanoEfficient learning of variable-resolution

cognitive maps for autonomous indoor navigationIEEE Transaction on

Robotics and Automationvol 15NO 6 December 1999ruary 2004

[37] S Vigno ldquoAlgoritmo di Dijkstrardquo 2001

[38] EWDijkstra ldquoA note on two problem in connexion with graphsrdquo

Numeriche Mathematik 1269-271 1959

[39] U Scarfogliero ldquoProgettazione e sviluppo di un robot bipede a dodici

gradi di libertagrave con controllo elastico-reattivordquo Thesis 2004

Bibliografia 138

[40] PRoccoControlloimpedenzaPolitecnico di MilanoRobotica Industriale

2004

Appendice A

Appendice A 140

i Sensori nei robot a zampe disponibili sul mercato

Ersquo stata compiuta una accurata ricerca sui componenti che potrebbero

essere montati su ASGARD per migliorarne le abilitagrave e le reazioni con lrsquoambiente

esterno e su tecniche di utilizzo di semplici sensori per fornire feedback rilevanti

Tra i sensori presenti in commercio egrave stata effettuata una scrematura in

merito a efficienza peso ingombro e prezzo in quanto si ricorda la precaria

stabilitagrave del robot e il fattore sovvenzione scolastica

Forniremo dei principali sensori trovati anche una rapida descrizione del

funzionamento dello stesso per meglio comprendere le migliorie e le potenzialitagrave

che esso potragrave donare al nostro progetto

ii Dead Reckoning Stima della posizione

Dead reckoning deriva da ldquodeduced reckoningrdquo e consiste nellrsquoutilizzare

una procedura matematica per determinare la posizione istantanea di un robot a

partire dalla conoscenza dalle posizioni e velocitagrave precedenti lungo un certo

periodo di tempo Questo sistema ha ovviamente lo svantaggio di accumulare

errori della stima e per questo periodicamente la misura deve essere corretta con i

valori reali o con quelli forniti da qualche altro strumento Spesso la stima della

posizione viene chiamata odometria39[41]

Per fornire la posizione corrente possono essere utilizzate le seguenti

tipologie di sensori

39 Odometry

Appendice A 141

ii1 Encoder Ottici

Gli encoder ottici sono sensori che vengono utilizzati per effettuare misure

di rotazione Possono essere utilizzati sia per robot a ruote per misurarne la

velocitagrave di avanzamento sia per un robot con gambe per misurare lrsquoangolo di

rotazione degli arti artificiali

Si sono sviluppati due diversi tipi di encoder ottici encoder incrementali e

encoder assoluti

Gli encoder ottici incrementali servono principalmente per stabilire la

velocitagrave di rotazione mentre quelli assoluti forniscono istantaneamente lrsquoangolo

di rotazione

ii2 Encoder ottici incrementali

Gli encoder ottici incrementali sono formati da un disco routante solidale

con lrsquoasse di rotazione del sensore da un led e da due sensori ottici (tipicamente

due fotodiodi) Il disco egrave suddiviso in settori trasparenti e settori opachi Il numero

dei settori in genere egrave una potenza di 2 cioegrave 64128256 etc Il led emette una luce

sul lato del disco mentre i due fotodiodi la captano sul lato opposto Grazie alle

regioni opache si ha la possibilitagrave di vedere degli impulsi sul fotodiodo che

permettono di stabilire ad esempio la velocitagrave di rotazione ma non bastano ad

avere una indicazione sul verso della rotazione stessa Per sapere se la rotazione egrave

oraria o antioraria si egrave utilizzato un secondo fotodiodo collegato come in figura

Figura 75 Struttura encoder ottico

Appendice A 142

Come si puograve notare i due fotodiodi avranno unrsquouscita molto simile ma

sfasata causata dalle regioni opache del disco questo sfasamento ci permetteragrave di

capire il verso di rotazione

La velocitagrave di rotazione risulta essere proporzionale in modo inverso alla

larghezza degli impulsi in uscita

Questo tipo di encoder egrave molto economico tanto da essere utilizzato nelle

seconda metagrave degli anni novanta nei mouse da PC

Encoder ottico presente in commercio

ii21 EL30 E-H-I Eltra srl

Serie encoder miniaturizzati Oslash30 per applicazioni ove sia richiesto il

minimo ingombro possibile pur mantendo ottime prestazioni[42]

- Risoluzioni fino a 1000 impgiro con zero

- Varie configurazioni elettroniche disponibili con

alimentazioni fino a 24 Vdc

- Frequenza di esercizio fino a 100 Khz - Uscita

cavo eventuale connettore applicato alla fine del

cavo -

- Velocitagrave di rotazione fino a 3000 rpm - Grado di

protezione fino a IP54tensione di alimentazione 5 V

e peso di 50 g

Figura 76 Encode incrementale

EL 30 E-H-I

ii3 Encoder ottici Assoluti

Gli encoder ottici assoluti a differenza di quelli incrementali forniscono in

uscita direttamente una configurazione di bit che indicano la posizione angolare

Il dispositivo egrave composto di un disco suddiviso sempre in settori ma con

piugrave tracce una sorgente di luce e un numero di sensori di luce pari al numero di

tracce

Appendice A 143

Ad ogni traccia corrisponde un bit e ad ogni settore corrisponde un livello

Il numero di tracce e setori egrave scelto in modo da utilizzare tutte le combinazioni

possibili e quindi i livelli saranno traccenum2

Esistono perograve diversi modi per codificare ogni livello Il metodo piugrave

semplice egrave partire da 0 e incrementare di 1 il numero e utilizzare la normale

codifica binaria

Il sistema risulta essere rischioso quando due livelli consecutivi nella

codifica hanno piugrave di un bit diverso per questo motivo sono state introdotte

diverse codifiche come il codice Gray che riescono ad evitare cosigrave il problema

prima citato

Figura 77 Essempi di disco Figura 78 Struttura di rilevamento

Presenti sul mercato

ii31 Sensori ottici CORRSYS-DATRON

Tipologia a 2 assi (trasversalelongitudinale) per la misura accurata di

velocitagrave distanza percorsa angolo di imbardata[43]

S-CE con integrato giroscopio ottico Come versione S-CE ma con

incorporato un giroscopio a fibra ottica range 200degsec linearitagrave 02 1000 Hz

banda passante per avere maggiori info sul comportamento dinamico del veicolo

SL-R Ultralight Versione ultralight Racing del modello S-CE

SL 200 Sensore ottico biassiale per la misura senza scivolo di dinamiche

trasversali su larghe gamme di funzionamento Il sensore SL-200 egrave caratterizzato

da dimensioni ridottissime (ultra piatto) e per la possibilitagrave di installazione su

piccoli veicoli

Appendice A 144

La serie di encoder assoluti multigiro paralleli EAM[42] sono stati studiati

precisioni anche su esteso sviluppo lineare

sono disponibili con risoluzioni fino a 13 bit e quindi 8192 PosizioniGiro sul giro

e fino

ii32 EAM Parallelo-SSI Eltra srl

per applicazioni che richiedono alte

a risoluzioni di 12 bit 4096 Posizionigiro per i giri Le configurazioni di

uscita sono sia a codice gray che binario e le elettroniche di uscita coprono tutti i

campi di applicazione essendo disponibili in formato NPN NPN OPEN

COLLECTORPNP e PUSH PULL

Figura 79 Encoder assoluto EAM Parallelo ndashSSI

ii4 S

Sensori di grande utilitagrave per la localizzazione di oggetti presenti

un robot sono sensori che sfruttano lrsquoeffetto Doppler

Largamente utilizzati in ambito marino e aeronautico essi misurano la velocitagrave

del me

ensori Dopler

nellrsquoambiente di azione di

zzo in riferimento alla posizione del suolo Lrsquoeffetto doppler si basa sul

principio di funzionamento dello shift di frequenza unrsquoonda che viene ricevuta o

riflessa da una sorgente che si muove rispetto al mezzo In ambito terrestre le

onde spedite e ricevute sono microonde sonore

Appendice A 145

In relazione alla figura riusciamo ricavare le seguenti regole di

funzionamento

αα cos2cos O

DDA F

cFVV ==

Dove

AV = velocitagrave del terreno

DV = misura della velocitagrave tramite il sensore

α = angolo di declinazione

c = velocitagrave della luce

= scostamento in frequenza per effetto Doppler DF

OF = Frequenza emessa

La difficoltagrave di utilizzo di questo sensore diventa consistente nellrsquoutilizzo

su robot mobili in terreni accidentali in quanto gli spostamenti verticali

influiscono sulla misura di e sulla stima di DV AV

Appendice A 146

ii41 Robot Italy SRF04

Figura 80 Sensore SRF04

LSRF04 [44] e un sensore ad

ultrasuoni che unisce delle ottime

prestazioni ad un costo veramente

conveniente utilizza una tecnologia a

ultrasuoni molto semplificata

Questo sensore e dotato di un

microcontrollore che assolve tutte le

funzioni di calcolo ed elaborazione e

sufficiente inviare un impulso e leggere

leco di ritorno per stabilire con facilita

la distanza dellostacolo o delloggetto

che si trova davanti

iii Heading Sensor

Tramite lrsquoutilizzo di questi sensori si riesce in parte a compensare parte le

carenze di odometria Attraverso la stima della posizione ogni piccolo errore si

sommeragrave al precedente nella stima della posizione provocando uno scostamento

via via crescente tra la posizione reale e quella stimata Ersquo di grande aiuto

individuare immediatamente e correggere alcuni di questi errori

iii1 Giroscopio meccanico

Il giroscopio meccanico basato sulla ldquoinerziona di un rotorerdquo egrave conosciuto

giagrave dai primi del 1800 Il primo giroscopio fu costruito in germania 1810 da GC

Bohnenberger Nel 1852 il celebre francese L Foucault mostrograve che il giroscopio egrave

Appendice A 147

in grado di percepire la rotazione terrestre Essa puograve essere scomposta in due

componenti lungo un immaginario asse verticale e lungo un asse tangente alla

superficie Al polo la componente verticale saragrave di 15degora e spostandosi verso

lrsquoequatore diminuiragrave fino ad annullarsi Come per gli encoder ottici anche per i

giroscopi esistono due metodologie per fornire mediante una tensione o una

frequenza lo spostamento istantaneo o lrsquoangolo assoluto di rotazione

Figura 81 Giroscopio meccanico

Vediamo come funziona un giroscopio meccanico il rotore pilotato

elettricamente egrave sospeso ai propri assi da una coppia di cuscinetti con attrito

bassissimo I cuscinetti a loro volta sono montati su un anello ruotante chiamato

anello di sospensione interna (inner gimbal ring) Questo anello gira a sua volta

allrsquointerno di un altro anello (outer gimbal ring) La rotazione dellrsquoanello interno

definisce lrsquoasse x del giroscopio che egrave perpendicolare con lrsquoasse di rotazione del

rotore lrsquoanello esterno definisce lrsquoasse verticale del giroscopio In questa struttura

egrave da notare come lrsquoasse orizzontale saragrave allineato con il meridiano in questo modo

si potragrave calcolare la rotazione orizzontale e verticale in funzione a quella terrestre

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice

FT445533

Nuovo regolatore di giri con la piugrave moderna tecnica microprocessore con

Display LC ad 8 posti Il regolatore di giri GV ndash1 [45] mantiene la testa del rotore

Appendice A 148

in sistema di giri costante Cosigrave diventa possibile un movimento piugrave preciso e

sensibile

Al contrario di altri regolatori il GV-1 controlla anche il numero di giri del

motore Una curva a 3 punti regolabile permette la prescrizione del numero dei

giri tramite un commutatore a tre scatti oppure un canale proporzionale Nel

display viene indicato a scelta il numero di giri del motore o del rotore dove viene

memorizzato il numero di giri massimale e richiamabile in qualsiasi momento

Questo modello risulta compatibile con i servo da noi utilizzati

Programmi

bull Indicazione del numero di giri (rotore oppure

motore)

bull Memoria del numero di giri massimale

bull Messa a punto del rapporto di riduzione

bull Regolazione del punto di attivazione e

disattivazione

bull Impostazione del campo di regolazione del

numero di giri

bull Impostazione del numero di giri massimale

bull Automatica disattivazione a partire

dallacuteimpostazione del numero di giri

bull Messa a punto di una curva di regolazione a tre

punti

bull Messa a punto 3D

bull Curva di messa a punto miscela a 9 punti

bull Test magnetico con indicazione del campo

intensitagrave

bull Misurazione della tensione di batterie

bull Allarme di bassa tensione

bull Messa a punto del servo di gas ATV

Caratteristiche Tecniche

Dimensioni Regolatore 56x305x16 mm

Dimensioni Sensore oslash 10 x 16 (27) mm

Peso Regolatore 34 g

Peso Sensore 4 g

Alimentazione 38 ndash 6 V

Campo di regolazione da 1000 a 21000

girimin

Figura 82 Futaba regolatore di giri

GIVERNOR GV-1

Appendice A 149

iii12 Futaba Giroscopio FP GY 240 AVCS

Grazie allrsquoutilizzo congiunto del nuovo sensore SMM40 e della nuova

tecnica di interruttore altamente integrata SMD41 la Futaba egrave riuscita a costruire

un giroscopio di soli 25g con dimensioni decisamente contenute 27 x 27 x 20

mm

Nonostante questa minima dimensione il giroscopio egrave equipaggiato sia

con il modulo normale che quello AVCS (Heading Hold)[46]

Oltre ai vantaggi rappresentati dalle dimensioni e dal peso questo sensore

non presenta alcuna deriva dovuta alla temperatura ed egrave ampiamente insensibile

alle vibrazioni ed ai colpi

Grazie ad una elaborazione puramente digitale del segnale questo

giroscopio reagisce molto rapidamente

Caratteristiche tecniche Dimensioni

27x27x20 mm PesoWeight

25 g Alimentazione

3-6 V Temperatura d`esercizio

-10degC +50degC Figura 83 Giroscopio FP GY 240 AVCS

iii2 Giro-bussola

Questo dispositivo integra le funzionalitagrave del giroscopio e della bussola per

individuare il Nord Lrsquoindividuazione del nord egrave importante percheacute lrsquoasse di

rotazione del rotore egrave orientato lungo un meridiano lrsquoasse orizzontale del

giroscopio non risente della rotazione terrestre La direzione e lrsquointensitagrave della

40Silicon Micro Machine misure laser posizioni 41 Standar ISO9000

Appendice A 150

misura dipende dallo scostamento tra lrsquoasse del rotore e la direzione dellrsquoasse

terrestre

iii3 Giroscopio-Girobussola a fibre ottiche

Il principio su cui si basa il funzionamento dei giroscopi ottici fu scoperto

dal fisico francese Sagnac nel 1913 ed ha trovato inizialmente una sua

applicazione nella costruzione di interferometri e successivamente nei giroscopi

laser ad anello chiuso (RLG Ring Laser Gyro) Tale principio consiste nello

sdoppiare un unico raggio luminoso in due diversi raggi che viaggiano su un

medesimo percorso ottico ad anello chiuso ma in direzioni opposte un raggio

ruota in senso orario e lrsquoaltro in senso antiorario

Figura 84 Schema di principio di un giroscopio laser ad anello

Nei giroscopi RLG[47] i raggi rimbalzano fra vari specchi come mostrato

in Figura 83 nei giroscopi FOG (a fibre ottiche) i raggi scorrono dentro un fascio

di fibre ottiche lungo anche 5 Km ed avvolte in spire del diametro di alcuni

centimetri

Appendice A 151

Quando un raggio si propaga la sua fase cambia continuamente con la

distanza L percorsa e precisamente di 2π radianti per ogni tratto pari alla

lunghezza drsquoonda λ si ha pertanto

λπα L2

=

con λ = c f dove f egrave la frequenza del raggio luminoso e c egrave la velocitagrave

della luce

Nel caso in cui il giroscopio sia fisso rispetto ad un sistema inerziale i due

raggi percorrono lo stesso cammino anche se in direzioni opposte arrivando nel

ricevitore con la stessa fase Diversa egrave la situazione in cui lrsquointero sistema ruota

attorno ad un asse passante per O (asse sensibile del giroscopio) e con velocitagrave

angolare Ω in tal caso il percorso del raggio concorde con il verso di rotazione

tende ad allungarsi mentre quello dellrsquoaltro raggio tende ad accorciarsi per cui la

differenza di fase Φ dei segnali che arrivano nel ricevitore non egrave piugrave nulla ma

assume la seguente espressione

Ω=∆=Φλ

παcLD2

Dove

L = lunghezza del percorso ottico o delle fibre ottiche nei FOG

D = diametro del percorso o della bobina nei FOG

Ω = velocitagrave angolare del giroscopio attorno al suo asse sensibile

Il fattore davanti alla velocitagrave angolare Ω egrave chiamato fattore di scala ed egrave

un indicatore della sensibilitagrave dello strumento piugrave egrave alto tale fattore piugrave lo

strumento egrave in grado di misurare velocitagrave angolari molto basse come ad esempio

nel caso di quella terrestre Come si vede il fattore dipende dai dati geometrici del

percorso ottico e precisamente nel caso dei FOG dalla lunghezza delle fibre

Appendice A 152

ottiche e dal diametro delle spire Analizzando la precedente espressione si

comprende come a paritagrave di volume i giroscopi a fibre ottiche (FOG) siano molto

piugrave sensibili dei giroscopi laser (RLG)

Figura 85 Schema tipico di un giroscopio a fibre ottiche

iii31 La funzione giroscopica

Il FOG non egrave in grado da solo di indicare la direzione del nord come nei

normali giroscopi di tipo meccanico con sospensione cardanica esso egrave soltanto in

grado di misurare la componente della velocitagrave angolare terrestre lungo il suo asse

di sensibilitagrave

Per ottenere la funzione orientamento desiderata si montano tre giroscopi

disposti lungo una terna di assi cartesiani X Y e Z che puograve coincidere con i tre

assi del robot per definire il piano orizzontale si impiegano inoltre due sensori di

livello La tecnologia utilizzata egrave nota come strapdown ossia con i giroscopi

montati rigidamente su un piano fisso costantemente orientato e parallelo rispetto

ad un piano di riferimento come nella navigazione inerziale di tipo tradizionale

Nel caso di oggetto fermo lrsquounica velocitagrave angolare a cui esso risulta essere

soggetto egrave quella terrestre per cui i tre giroscopi misurerebbero le seguenti

componenti

Appendice A 153

yTx CosPCosϕρρ =

yTy SinPCosϕρρ minus=

ϕρρ Sinz T=

dove egrave facile calcolare lrsquoangolo di prova nel caso siano note la velocitagrave

ρ

yP

Τ e la latitudine ϕ

Nel caso di moto con velocitagrave VN si ha una velocitagrave angolare

supplementare pari a VNRT diretta lungo -y (RT egrave il raggio della Terra) A questa

velocitagrave si sommano inoltre altre velocitagrave angolari continuamente variabili

dovute ai moti attorno ai suoi tre assi e precisamente i moti di rollio di

beccheggio e di imbardata

yyTx CosPCos ρϕρρ +=

oT

NyTy R

VSinPCos ρϕρρ ++minus=

aT Sinz ρϕρρ +=

In realtagrave il problema viene risolto definendo inizialmente alla partenza un

sistema cartesiano di riferimento con gli assi X0 e Y0 situati nel piano orizzontale

e lrsquoasse Z0 che coincide con la verticale In tale situazione i segnali provenienti

dai sensori di livello devono essere nulli

Durante la camminata la continua misura delle tre velocitagrave angolari e

dellrsquoassetto del robot mediante i sensori di livello consentono di definire lrsquoesatto

orientamento della terna cartesiana T (X Y e Z) rispetto alla terna di riferimento

iniziale T0 (X0 Y0 e Z0) Un opportuno calcolatore provvede a convertire gli

Appendice A 154

angoli di sfasamento dovuti allrsquoeffetto Sagnac nelle corrispondenti velocitagrave

angolari integrando le velocitagrave si ottengono gli angoli

dta iii int+=+ ρα1

da cui egrave poi possibile ricavare gli angoli di rollio di beccheggio e di

imbardata Ogni ciclo di calcolo deve avere una durata molto breve inferiore

normalmente al tempo impiegato dai segnali luminosi a percorrere la bobina di

fibre ottiche (∆t = Lc = 3 nsec per L = 1 m)

iii4 Giroscopio piezoelettrico

Utilizzano la forza di Coriolis per misurare la velocitagrave di rotazione

montando tre trasduttori piezoelettrici su un prima triangolare Se uno dei sensori

egrave eccitato alla sua frequenza di risonanza la vibrazione prodotta verragrave percepita in

eguale misura dagli altri due sensori Quando il prisma viene ruotato lungo il suo

asse longitudinale la forza di Coriolis risultante causeragrave una piccola differenza

nellrsquointensitagrave di vibrazione percepita dai due trasduttori la variazione di tensione

risultante egrave direttamente e linearmente proporzionale alla velocitagrave di rotazione

Appendice A 155

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03

Giroscopio miniaturizzato[44] 26x27x11mm per 7grammi di peso Puo

essere utilizzato per bilanciare o per compensare spostamenti indesiderati di

walkers e rover Utile anche per rilevare spostamenti

Figura 86 Modello GWS PG-03 Robot Italy

iii42 Giroscopio Piezoelettrico Enc-03ja

Ersquo componente elettronico di solo 21mm x 8mm[48] Ersquo in grado di

rilevare i cambiamenti nella rotazione pur essendo ultra-piccolo ultra-leggero

con una ultra rapida-risposta e a basso costo Usa il fenomeno della forza di

Coriolis per rilevare i cambiamenti nella velocitagrave angolare di rotazione

Limitazione le girobussole hanno una lettura massima di 300 gradi al secondo e

richiederanno la calibratura

Figura 87 Giroscopio Enc-03ja

Appendice A 156

iv Sensori geomagnetici

Nella stima della posizione inevitabilmente esistono degli errori e questi

vengono misurati durante il tempo e quindi egrave molto importante poter disporre di

una misura assoluta e poter compensare o correggere appunto questi errori

Il piugrave comune sensore di questo tipo egrave la bussola magnetica La

terminologia usualmente utilizzata per misurare un campo magnetico egrave la densitagrave

di flusso magnetico B misurata in Gauss(G) Altre unitagrave di misura sono la Tesla

(T) e gamma (γ ) dove 1 Tesla = Gauss = Gamma Lrsquointensitagrave media del

campo magnetico terrestre egrave 05 G e puograve essere rappresentato come un bipolo che

fluttua sia nel tempo che nello spazio situato a 440 chilometri dal centro e

inclinato di 11deg dallrsquoasse di rotazione terrestre Questa differenza tra il polo

magnetico e il polo terrestre egrave conosciuta come declinazione e varia in funzione

del tempo e della posizione geografica

410 910

I dispositivi che misurano i campi magnetici sono detti magnetometri Per

applicazioni su robot mobili i magnetometri piugrave utilizzati si dividono nelle

seguenti famiglie

bull Bussola magnetica meccanica

bull Bussola a effetto Hall

bull Bussola a magnetoreversiva

Prima di analizzare da vicino ogni singola famiglia va precisato un

problema molto importante il campo magnetico terrestre egrave spesso distorto nelle

vicinanze di strutture metalliche questo rende difficile lrsquoimpiego di tali sensori

allrsquointerno di edifici Tuttavia questo problema egrave possibile aggirarlo utilizzando

con essi ulteriori sensori

Appendice A 157

iv1 Bussola magnetica meccanica

La prima traccia nellrsquouso della bussola risale al 2634 AC Dal XIII secolo

utilizzata in tutto il mondo in campo marittimo W Gilber [1600] fu il primo ad

esporre teorie riguardanti campi magnetici presenti sulla superficie terrestre

Le prime bussole marine consistevano in aghi magnetizzati che

fluttuavano su pezzetti di sughero immersi in acqua Questo dispositivo egrave stato

raffinato fino ad arrivare oggi giorno ad essere composto da un paio di magneti

attaccati ad un disco graduato fluttuante in una composizione di acqua alcol e

glicerina

Lrsquoerrore tra nord magnetico e nord geografico egrave conosciuto come

deviazione della bussola

decdevit CFCFHH plusmnplusmn=

Dove

tH = Direzione giusta

iH = Direzione misurata

devCF = Fattore di correzione per la deviazione della bussola

decCF = Fattore di correzione per la declinazione magnetica

Unrsquoaltra fonte potenziale di errore consiste nel dip magnetico42 dovuto alla

componente verticale del campo magnetico terrestre Questo effetto varia in base

alla latitudine possiamo affermare che le linee di forza che agiscono sono

orizzontali allrsquoequatore e verticali ai poli Per questo motivo sugli aghi delle

bussole a volte sono montati dei pesetti che pessono essere spostati al fine di

contrastare questo effetto

42 Magnetic dip

Appendice A 158

iv2 Bussola a effetto Hall

I sensori ad effetto Hall sono basati sulle osservazioni di Hall(1979) che un

conduttore e un semiconduttore immersi in un campo magnetico mostrano una

differenza di potenziale ai loro capi Il vantaggio di questi sensori egrave la possibilitagrave

di misurare il flusso in modo statico I primi sensori costruiti avevano una

sensibilitagrave e una stabilitagrave paragonabile a quella dei fluxgate43 ma negli ultimi anni

egrave migliorata fino a raggiungere i Gauss e oltre Giagrave nei primi anni 60rsquo la

Marina mostrograve interesse a questo tipo di sensori e la Motorola costruigrave un certo

numero di prototipi per valutarne le potenzialitagrave La bussola della Motorola

montava due sensori ad effetto Hall per limitare gli effetti dovuti alle variazioni di

temperatura Ogni sensore era formato da una barretta di ferro- indio- arsenico di

2 x 2 x 01 millimetri inserito in un concentratore di flusso come si vede in Figura

87

310 minus

Il concentratore di circa 5 cm incrementava la densitagrave di flusso attraverso il

sensore di due ordini di grandezza [Willey 1964] lrsquouscita di tale dispositivo egrave un

treno di impulsi ad ampiezza variabile in cui lrsquoampiezza appunto egrave proporzionale

al valore misurato Fu riscontrata una buona linearitagrave fino a densitagrave di flusso di

0001 Gauss[Willey 1962]

Figura 88 Una coppia di sensori Hall (Lega di Indio-Ferro-Arsenico)

Maenaka allrsquouniversitagrave di tecnologia di Toyohashi in giappone sviluppograve

un sensore al silicio basato su due sensori Hall montati in disposizione ortogonale

43 Bussola fluxgate sfutta campi magnetici generati da spire azionati da corrente continua

Appendice A 159

Purtoppo i risultati di questo esperimento non furono dei migliori in

quanto il sensore costruito forniva un sensibilitagrave di 1 Gauss e il campo terrestre va

da 01 Gauss allrsquoequatore fino a 09 ai poli Di notevole interesse rimane per

lrsquoessere interamente costruito in un integrato e quindi lo rende molto pratico e di

elevato interesse commerciale

iv21 1490 Digital Compass Sensor

Questo sensore[49] fornisce informazioni su scostamenti in otto direzioni

misurando il campo magnetico della terra usando la tecnologia ad effetto Hall Il

sensore 1490 internamente egrave destinato per rispondere a cambiamento direzionale

simile ad una bussola riempita liquida Rinvieragrave al senso indicato da uno

spostamento di 90 gradi in circa 25 secondi senza overswing I 1490 possono

funzionare inclinato fino a 12 gradi con lerrore accettabile Egrave connesso facilmente

a circuiti digitali ed i microprocessori

Caratteristiche Specifiche Alimentazione 5-18 volt di CC 30 mA Uscite Apra il collettore NPN affondi 25 mA per il senso Peso 225 grammi Formato un diametro da 127 millimetri alto 16 millimetri Perni 3 perni da 4 lati sui centri del 050 Temperatura -20 - +85 gradi di C

Figura 89 1490 DCS

iv3 Bussola a magnetoreversiva

Questa tipologia di sensori egrave molto interessante per il range di sensibilitagrave

che coprono ad anello aperto che va da a 50 Gauss e coprono quindi

interamente la regione interessata del flusso terrestre Ad anello chiuso hanno un

210 minus

Appendice A 160

sendibilitagrave approssimativamente di Gauss [Lenz 1990] Presentano

ulteriormente un basso assorbimento di potenza piccole dimensioni che li

posizionano tra i primi posti nella scelta di componenti

610 minus

iv31 Philips bussola AMR

Uno dei primi sensori magneto resistivi impiegati per realizzare una

bussola magnetica egrave il KMZ10B costruito dalla Philips[50] Semiconductors nel

1996 La sensibilitagrave di questo dispositivo (approssimativamente 01 mVAmcon

alimentazione di 5 V DC) comparata con il campo magnetico terrestre massimo

implica che devono essere presi con molta considerazione gli errori dovuti alla

variazione della temperatura e alle variazioni di offset[Patersen1989]Un sistema

per ovviare a questi inconvenienti egrave utilizzare lrsquoeffetto flipping44

iv4 Bussola magnetoelastica

Utilizzare materiali magneto-elastici come materiali fondamentali di

sensori in campo magnetico ad alta precisioneIl principio su cui si basano questa

famiglia di componenti egrave la variazione del modulo di Young[51] in leghe

magnetiche quando introdotte in campo magnetico esternoIl modulo di elasticitagrave

di un materiale egrave semplicemente misurato come

εσ

=E

Dove

E = Modulo di elasticitagrave

σ = Tensione applicata

44 Flipping phenomenon non trattato in questa discussione

Appendice A 161

ε = Deformazione risultante

Se la tensione applicata rimane costante la deformazione egrave inversamente

proporzionale al modulo di elasticitagrave In alcune leghe E egrave molto pronunciato

questo permette al campo magnetico di essere accuratamente determinato

misurando la variazione di lunghezza di una lega opportunatamente sollecitata da

una forza costante Esistono due tecnologie che permettono di realizzare sensori

economici e molto precisi

bull Interferometric

bull Tunneling-trip

iv41 Metglas 2605S2

Metglas[52] egrave una lega di ferro boro silicio e carbonio Il sensore egrave

costituito da un nastro della lega che in presenza di campo magnetico esterno

mostra un certo allungamento (analisi sul nastro di vetro metallico sono avvenute

al laboratorio di SERC Rutherford Appleton) I dati di riflettivitagrave sono stati

analizzati le misure forniscono modelli che hanno permesso una valutazione del

profilo di magnetizzazione vicino alla superficie del nastro In Figura 89 egrave

mostrato il circuito utilizzato per misurare la variazione di lunghezza

dellrsquoelemento magnetoresistivo

Figura 90Circuito per misurare lrsquoallungamento delle striscia magnetoresistiva

Appendice A 162

v Sensori per la modellizzazione dellrsquoambiente

Molti sensori per mappare ambienti interni sono sensori di distanza per

questo motivo verranno esposti in questo testo alcuni tra i piugrave conosciuti

vi Sensori di distanza

Esistono differenti approci per ottenere questo tipo di misura

bull Sensori basati sul tempo di volo (TOF45) di un impulso di energia

emesso che si propaga e che viene riflesso dallrsquoostacolo

bull Sensori basati sulla differenza di fase introdotta sempre nella

riflessione di un segnale ma non impulsivo

bull Sensori basati su radar a modulazione di frequenza

vi1 Sensori basati sul tempo di volo

Il funzionamento consiste nel misurare il tempo di volo di un senale da un

trasmettitore al ricevitore il percorso effettuato mentre il tempo di percorrenza

risulta esserecdT 2

=∆ dove c egrave la velocitagrave della luce

In robotica la velocitagrave della luce non riesce a trovare applicazioni pratiche

e trovano utile impiego le onde acustiche la cui velocitagrave di propagazione egrave

v=340ms I vantaggi che si trovano dallrsquoutilizzo di questo metodo sono che

emettitore e ricevitore possono essere lo stesso oggetto e che le superfici non

devono presentare particolari requisiti Gli svantaggi possono essere fronti di

salita imprecisi durante lrsquoemissione lrsquoattenuazione della radiazione riflessa che

45 Time of Fly

Appendice A 163

puograve essere influenzata da rumore lrsquoinaccuratezza nel circuito che serve a misurare

il tempo e la possibile variazione della velocitagrave di propagazione soprattutto con

onde sonore Il cono di emissione inoltre non ci permette di rilevare la forma

dellrsquooggetto Quando lrsquoonda si riflette su un oggetto si ha un fenomeno chiamato

crosstalk Utilizzando diverse misurazioni con treni di impulsi si riescono ad

avere stime abbastanza precise sullrsquooggetto riuscendo ad arrivare ad avere

precisione anche di 25 mm da una distanza di 30 cm

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502

Campo di misura tra 30 cm e 5 metri[53]

Caratteristiche

- Campo di misura tra 30 cm e 5 m (MS 6502)

-Campo di misura tra 15 cm e 10 m ( MS 6001)

-Alimentazione singola tra 75V e 15V - Gestione degli Echo multipli

- Possibilitagrave di fissaggio del sensore direttamente al circuito stampato

- Sistema di connessione MODU II - Uscita open collector

-Protezione dallrsquoinversione di polaritagrave

Figura 91 Piedinatura modello MS

6501

Figura 92 Sonar Modello MS 6501

Figura 93 Sonar Modello MS 6502

Appendice A 164

Il modulo sonar egrave un dispositivo di basso costo con il quale egrave possibile

gestire direttamente i sensori elettrostatici Polaroid per effettuare misure di

distanza Gli impulsi ad ultrasuoni sono a 499 KHz per entrambi i modelli e

vengono prodotti da un quarzo funzionante alla frequenza di 420 KHzI moduli

soso dotati di un ingresso di inibizione esterna con il quale egrave possibile

unrsquoesclusione selettiva di alcuni echo in modalitagrave di funzionamento echo multiplo

Con il dispositivo proposto egrave possibile distinguere echo di ritorno tra due oggetti

distanti 75 cm circa

Figura 94 Struttura del Mdulo Sonar

Vi sono due modalitagrave di funzionamento del sonar echo singolo e echo

multiplo

Nella funzionalitagrave ad echo singolo la gestione consite nel portare basso il

valore di INIT spedire le onde ultrasoniche e attendere la ricezione del segnale di

echo il tempo tra quando si egrave reso basso il senale di INIT e quello in cui diventa

basso ECHO indica il tempo di volo impiegato per raggiungere il target Ersquo

conveniente attendere circa 80 ms tra una spedizione e lrsquoaltra per evitare onde

ultrasoniche ancora presenti nellrsquoambiente

Nella funzionalitagrave multiplo dopo che si pone basso INIT il trasduttore

viene pilotato da 16 impulsi a frequenza 499 KHz (MS 6501) o 45 KHz (MS

Appendice A 165

6502) e di ampiezza variabile per modello (MS6501 400VMS6502 100V) ciograve

comporta lrsquoinvio di un pacchetto di onde ultrasoniche che si propagano nello

spazio Al fine di evitare lrsquoassestamento del trasduttore (fenomeno ringring) esso

viene oscurato in ricezione per 238 ms Queste tempistiche rendono possibile

lrsquoindividuazione di oggetti a distanza di 40 cm che corrispondono a tempo di volo

di 238 ms

Figura 95 Modalitagrave di funzionamento a

eho singolo

Figura 96 Modalitagrave di funzionamento a

echo multiplo

vi2 Sensore telemetro a sfasamento

Il sensore si basa sul seguente principio si separa lrsquoonda emessa in due

parti una incide lrsquooggetto e torna indietro la seconda viene riflessa su uno

specchio di cui si conosce la posizione Si calcola la differenza temporale tra le

due onde Essendo noto il cammino ottico della luce riflessa dallo specchio si egrave in

grado di determinare il cammino ottico incognito In robotica si misurano distanza

dellrsquoordine di qualche metro quindi lrsquoonda laser emessa λ egrave dellrsquoordine del metro

vi21 LIDAR lsquoLight detection and Rangingrsquo

Utilizzi molto rilevanti in questo tipo di acquisizione dati ci vengono

forniti da progetti NASA per la struttura della morfologia terrestre in particolare

in progetti DSM e DTM (Digital Surface Model e Digital Terrain Model)[54] Si

Appendice A 166

dispone di un raggio lasee di cui si analizza lrsquoecho e la distorsione conoscendo la

velocitagrave di propagazione Le misura proposte vengono elaborate per creare

coordinate 3D Dopo aver puntato su zone giagrave conosciute mediante comunicazioni

con GPRS il sistema scansiona la zona ignota per estrapolare per comparazione i

nuovi valori effettuando una misura di sfasamento tra lrsquoonda modulata emessa e

quella rientrante Analizzando opportunamente lrsquointensitagrave della luce riflessa si

potranno anche dedurre informazioni sulla tipologia del materiale analizzato

Figura 97 Esempio di acquisizione LIDAR

vi3 Triangolazione

Uno dei metodi piugrave semplici utilizzati Il soggetto egrave illuminato da uno

stretto fascio di luce che scandisce la superficie Il movimento di scansione

avviene sul piano definito dalla linea che va dallrsquooggetto al rilevatore e dal

rilevatore alla sorgente Il rilevatore egrave focalizzato su una limitata porzione di

superficie quando il rilevatore vede un piccola macchia di luce la sua distanza d

dalla superficie illuminata viene calcolata con un semplice calcolo geometrico

Appendice A 167

i

sdαtan

=

Dove

iα = angolo tra la sorgente e la linea della base

angolo di massima intensitagrave

s = distanza tra la sorgente e il rilevatore

Questo fornisce la misura di un punto se il sistema sorgente rilevatore

viene mossa su un piano egrave possibile ottenere un insieme di punti facilmente

trasformabili in coordinate tridimensionali che caratterizzano la struttura

dellrsquooggetto esaminato

Appendice A 168

vi31 IFELL Laser e Sistemi Srl

Modello[55] Caratteristiche principali

Figura 987 Serie LK

bull Campi di misura fino a 500 mm bull Tecnologia di fotorivelazione con

CCD Micropunto di lettura (fino a 30 micron)

bull Protezione IP-67 (solo teste) bull Insensibilitagrave alle variazioni di colore bull Elevata precisione anche su materiali

otticamente difficili bull Uscita analogica

Figura 99 Serie ODS

bull Campi di misura fino a 2000 mm bull Tecnologia di fotorivelazione con CCDbull Amplificatore integrato bull Protezione IP-65 bull Uscita analogica e digitale RS-232 bull Ingressouscita di sincronizzazione bull Esecuzione speciale per materiali

trasparenti

Figura 100 Serie M5

bull Campi di misura fino a 400 mm bull Tecnologia di fotorivelazione con PSD bull Protezione IP-64 (solo teste) bull Uscita analogica e digitale (opzione) bull Ingressouscita di sincronizzazione bull Comparatore integrato

Informazioni sui produttori

[41] G Arlanch ldquoSviluppo di un simulatore per il controllo dellrsquoandatura di un

quadrupederdquoThesis 1997

[42] httpwwweltrait

[43] httpwwwcorrsysdatronithomehtml

[44] httpwwwrobot-italycomproduct_infophpproducts_id

[45] httpwwwfutaba-rccomradioaccysfutm1001html

[46] httpwwweuroshop2000itcat159html

[47] MBertolini ldquoGirobussole a fibre otticherdquo ITN Viareggio

[48] httpwwwgyroscopecom

[49] httpwwwdinsmoresensorscom1490spechtm

[50] Philips ldquoKMZ10B Magnetic field sensorrdquo Data sheet 1998

[51] JP Sinnecker ldquoMateriaia magneticos doces e materiaia ferromagneticos

amorfosrdquo Reviat brasileira de Fisicavol 222000

[52] K Ivison N Cowlam MRJ Gibbs J Penfold e C Shackleton ldquoUna

misura diretta della magnetizzazione di superficie di un vetro metallico

ferromagneticordquo Edizione 23 (Il 12 Giugno 1989)

[53] Blautron ldquoModulo sonar 6501pdfrdquo ldquoModulo sonar 6502pdfrdquoItaly 2002

[54] V Adorno ldquoIl DTM e il DSM ad alta risoluzionela tecnologia laser

scanner e lrsquoutilizzo del Lidarrdquo Naturaltech

[55] wwwifelliti_sens_triangi_sens_trianghtm

Appendice B

Appendice B 171

i Manuale drsquouso

Per permettere una rapida visualizzazione dei risultati da noi trovati viene

fornito allrsquoutente un menugrave principale di scelta in cui puograve richiamare le funzioni

generate

Lrsquoutente richiameragrave direttamente dal promt di Matlab la funzione

start_asgrad(x) passando come parametro x un intero da o a 5Ad ognuno di

questi numeri corrisponderagrave una funzione

1 = visualizzazione della differenza tra passo in andatura quasi-stabile e

quasi-dinamica grafica del passo e proiezione del convex hull

2 = calcolo della cinematica e visualizzazione degli errori(in

start_asgradm posso modificare direttamente i valori delle variabili decisionali in

merito alla cinematica inversa)

3 = visualizzazione dei grafici riguardanti la forza e la torsionesui giunti

scegliendo nella funzione stessa il numero di frame da considerare

4 = generazione del movimento in un ambiente noto (per settare i

parametri riferiti allrsquoambiente bisogna modificare il file initm prima dellrsquoavvio

del programma)

5 = permette il movimento reale del robot quadrupede del politecnico di

Milano Questa funzione puograve essere richiamata dopo una serie di accorgimenti per

istaurare un corretto canale di comunicazione (collegare la porta seriale o il

convertitore USB-Seriale e accertarsi che la porta sia denominata COM 1 con

velocitagrave di trasferimento di 14400 bitsec)

Appendice B 172

ii Codice generato

ii1 Menu principale

FUNZIONE START_ASGARD funzione che avvia lesecuzione di tutto il programma permettendo allutente di selezionare la parte di analisi da visualizzare parametri in input val_scelta=valore di scelta 1= confronto passo quasi-staticoquasi-dinamico 2= studio cinematico 3= analisi dinamica 4= scelta del percorso(si ricorda che prima di sceglire questa opzione si devono settare i parametri nella funzione init per la descrizione dellambiente 5= collegamento diretto al robot fisico Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [] = start_asgard(val_scelta) if(val_scelta==1) richiamo della funzione passo_STATICO clearpulizia dello workspace end if(val_scelta==2) angoli_motori2richiamo generatrice angoli da inviare ai motori settaggio parametri funzione met=2 incr=25 g=1 cinematica(ja(28)metincrg) clear end if(val_scelta==3) fr=10setto numero di frame richiamo della funzione NW_EU clear end if(val_scelta==4) richiamo della funzione ambiente_prova

Appendice B 173

clear end if(val_scelta==5) angoli_motori2richiamo generatrice angoli da inviare ai motori n=1inizializzazione numero passi richiamo della funzione camminata_stat clear end

ii2 Confronto andatura quasi-stabile vs quasi-dinamica

FUNZIONE PASSO_STATICO Funzione che permette la comparazione tra il passo statico e il passo quasi-dinamicomostrando per ogni animazione la proiezione del centro di massa e il poligono di appoggio definizione tempistiche per movimento zampa frame=6 definizione punto vista X= 0(090)dallalto Y=90110120)angolata definizione tempo int=1(frame-1) t = [0int1] inizializzazione della figura figure(NamePasso StaticoNumbertitleoff) view(XY) richiamo inizializzazione robot init_robot DB_position posizioni zampe poszero=[0 0 0 0 0 0]posizione impressa nella pic pos_base_A=[0 0 0 -pi4 (-pi4) 0] posizione base delle zampe di destra pos_base_B=[0 0 0 pi4 pi4 0] posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento nel simulatore egrave stato ulteriormente aumentato di un fattore correttivo pos_av_A=[0 (pi4-045) 0 -pi4 -pi4 0] pos_av_B=[0 (-pi4+045) 0 pi4 pi4 0] pos_ind_A=[0 (-pi4+045) 0 -pi4 -pi4 0] pos_ind_B=[0 (pi4-045) 0 pi4 pi4 0] posizioni intermedie=punti di via per le cubiche pos_int_A1=[0 (-pi4+045) 0 0 0 0]

Appendice B 174

pos_int_B2=[0 (pi4-045) 0 0 0 0] ------------------------------------------- calcolo della traiettoria movimento in avanti zampe di sinistra jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_Bt) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint) jb_b=cubica_norm(pos_av_Bpos_base_Bint) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_Apos_base_Aint) jbb=cubica_norm(pos_base_Bpos_ind_Bint) ------------------------------ parte grafica sposto il robot al centro trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) disegno convex hull line([136 46 46][-345 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) muovo prima zampa plot2(zampad jb1) plot(zampad jb2) clf muovo seconda zampa cambia la base dappoggio disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_av_B) line([136 46 46][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jb1) plot(zampab jb2) muovo_baricentro--------------------------------------- posizioni baricentro posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa = [0735 (-pi4+04) pi4 -pi4 -pi4-03 0] posb = [0735 (34pi+04) pi4 -pi4 pi4-03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc = [0735 (3pi4+04) 3pi4 pi4 -pi4+03 0] posd = [0735 (5pi4-04) pi4 -pi4 -pi4+03 0]

Appendice B 175

qposd = [0735 pi pi4 -pi4 -pi4 0] traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -048 -1135]) t2=transl([157 -09 -1135]) t3=transl([-159 045 -1135]) t4=transl([162 0045 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno zampe view(XY) disegno zampe con cinematica da zampa puntata a bar plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposat) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(XY) base di appoggio line([136 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) movimento baricentro plot(zampab2jbarb) plot(zampad2 jbard) plot(zampaa2 jbara) plot(zampac2 jbarc) _______________________________________________________________ riposiziono zampe catena cinemetica diretta r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase tx=transl([0 -042 0]) bara=r1tx barb=r2tx barc=r3tx

Appendice B 176

bard=r4tx zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard clf disegno bas dappoggio e zampe view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_ind_Apos_base_B) line([142 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-288 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo terza zampa plot2(zampac ja1) plot(zampac ja2) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_av_Apos_base_B) line([142 464 464][-335 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-335 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo ultima zampa plot(zampaa ja1) plot(zampaa ja2) ____________________________________ sposto di nuovo il baricentro per tornare alla posizione base posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa_av = [0735 (pi4-04) pi4 -pi4 (-pi4+03) 0] posb_ind = [0735 (54pi-04) pi4 -pi4 pi4+03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc_av = [0735 (5pi4-04) 3pi4 pi4 -pi4-03 0] posd_ind = [0735 (5pi4-04) pi4 -pi4 -pi4+038 0] qposd = [0735 pi pi4 -pi4 -pi4 0] disegna traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -09 -1135]) t2=transl([164 -054 -1135]) t3=transl([-159 003 -1135]) t4=transl([162 041 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc

Appendice B 177

zampad2base=bard disegno zampe view(XY) plot(zampaa2qposa_av) plot(zampab2qposb) plot(zampac2qposc_av) plot(zampad2qposd) generazione traiettorie per baricentro jbara=cubica_norm(qposa_avposat) jbarb=cubica_norm(qposbposb_indt) jbarc=cubica_norm(qposc_av posct) jbard=cubica_norm(qposd posd_indt) clf view(XY) _____________________________- riposiziono zampe base r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -042 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard _____________________________________________ disegno base appoggio e muovo zampe line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) Analisi passo dinamico figure(NamePasso DinamicoNumbertitleoff) t = [0int1] calcolo delle traiettorie

Appendice B 178

jta1 = cubica_norm(qza qpva t) jta2 = cubica_norm(qpva qfa t) jtb1 = cubica_norm(qzb qpvb t) jtb2 = cubica_norm(qpvb qfb t) jtc1 = cubica_norm(qpvc qfc t) jtc2 = cubica_norm(qfc qzc t) jtd1 = cubica_norm(qpvd qfd t) jtd2 = cubica_norm(qfd qzd t) ------------------------------ parte grafica parto da posizione base trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegno robot e base dappoggio disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) line([136 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) view(110120) muovo prima zampa plot2(zampaa jta1) plot(zampaa jta2) clf muovo seconda zampa e cambio base appoggio disegna_robot(zampaazampabzampaczampadqfaqzbqzcqzd) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jtb1) plot(zampab jtb2) baricentro definizione cordinate baricentro posa = [0735 pi4 pi4 -pi4 0 0 ] qposa = [0735 0 pi4 -pi4 -pi4 0] posb = [0735 -pi4 34pi pi4 0 0] qposb = [0735 0 34pi pi4 -pi4 0] posc = [0735 0 pi4 -pi4 pi4 0] qposc = [0735 -pi4 pi4 -pi4 0 0] posd = [0735 0 34pi pi4 pi4 0] qposd = [0735 pi4 34pi pi4 0 0] disegno robot in corretta posizione t1=transl([-13 -13 -1135]) t2=transl([13 -13 -1135]) t3=transl([-16 045 -1135]) t4=transl([16 045 -1135]) b=zampaabasetraslazione nellorigine della zampa bara=bt1 barb= bt2 barc= bt3

Appendice B 179

bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno robot e bae appoggio line([465 428 428][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([428 175 175][-415 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposa t) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(110120) spostamento tramite rivisualizzazione ta1=transl([-029 0 0]) ta2=transl([029 0 0]) bara=ta1zampaa2base barb=ta2zampab2base barc=ta2zampac2base bard=ta1zampad2base zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 17 17][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) line([17 432 432][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) torno al robot con catena cinematica base baricentro r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -078 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb

Appendice B 180

zampacbase=barc zampadbase=bard clf view(110120) disegna_robot(zampaazampabzampaczampadqzaqzbqpvcqpvd) line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) view(110120) sposto terza zampa plot2(zampac jtc1) plot(zampac jtc2) clf disegna_robot(zampaazampabzampaczampadqzaqzbqzcqfd) line([46 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) sposta quarta zampa plot(zampad jtd1) plot(zampad jtd2) line([46 46 45][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 46 46][-324 -324 -324][-1135 -1135 -1135]ColorrLineWidth1)

ii3 Calcolo della cinematica inversa

FUNZIONE CINEMATICA Programma che permette di calcolare la cinemetica diretta ed inversa della zampa del robot in esame simula in modo opportuno lanello cinematico di controllo dando la possibilitagrave allutente di inserire un possibile disturbo esterno che non ha permesso il corretto funzionamento La variabile diturbo potragrave in future evoluzioni assumere i valori di sensori o dometrici la funzione di cinemetica inversa egrave stata implementata con tre differenti metodicalcolo del gradiente e geometrico(studiato ad ok che permette il calcolo in real time) parametri in input vetthheta = vettore degli angoli dei giunti per la cinematica diretta medodo = scelta tra i metodi di calcolo di cinematica inversa 1=geometrico 2=inseguimento del gradiente 3=inseguimento veloce del gradiente incremento_angolo = approssimazione da usare con i metodi del gradiente espressa in gradi

Appendice B 181

gomito = scelta se gomito alto (1) o basso (0) parametri output n = numero di iterazioni per il calcolo della cinematica inversa errore = errore in gradi commesso tra la posizione voluta in input e quella realmente raggiunta Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [nerrore] = cinematica(vetthetametodoincremento_angologomito) metodo=1 incremento_angolo=25 gomito=1 alto vettheta=[-pi4 pi4 pi2] errore=[] incr_ang=incremento_angolo2pi360trasformazione valore in radianti ntheta=size(vettheta) considero ogni singola riga del vettore degli angoli concentro cioegrave lanalisi sui singoli 3 valori degli angoli for(nt=1ntheta) utilizzo variabile locale theta=(vettheta(nt)) theta_i=[] v1=size(theta) for(v=1v1(11)) inizio ciclo per tutti i valori di theta inseriti calcolo CINEMATICA DIRETTA per il calcolo della posizione dellend_effector nello spazio dei giunti considero c1 il baricentro che risulta essere giunto fittizio C2=cos(theta(v1))S2=sin(theta(v1)) C3=cos(theta(v2))S3=sin(theta(v2)) C4=cos(theta(v3))S4=sin(theta(v3)) matrici prodotte dai parametri di Denavit Hartemberg A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A34=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] matrice finale end-effector T=A12A23A34 memorizzo in pos la posizione finale dellend effector calcolata si trova nei primi 3 elementi della quarta colonna della matrice T for(i=13) pos(1i)=T(i4) end pos(14)=1 siamo nelle omogenee p deve avere 4 valori disturbo=[0 0 0 0]introduco valori disturbo quando avremo i sensori avrograve in input valore posizione finale raggiunta diversa da quella calcolata ricalcolo posizione reale raggiunta pos=pos+disturbo

Appendice B 182

dalla nuova posizione calcolo la CINEMATICA INVERSA PRIMO ANGOLOricavato direttamente dalla matrice T z2=pos(12)pos(11) theta_i(11) = atan(z2) ricalcolo l aposizione corretta di intersezione degli assi avendo giagrave calcolato il valore de primo giuntosposto lorigine nel secondo giunto in base alla posizione effettiva del robotsullasse devo fare controlli per calcolare l aposizione dellend-effector rispetto alla nuova origine PIPPO=pos() if (theta_i(11)==0) pos(11)=pos(11)-(cos(theta_i(11))00573) else if pos(13)==0 pos(11)=00675+009 else if (theta_i(11)gt0) pos(11)=(pos(11)cos(theta_i(11)))-00573 else pos(11)=(pos(11)cos(theta_i(11))-00573) end end end PIPPO2=pos() METODO GEOMETRICO if (metodo==1) n=1 unica interazione dist=0 pos(11)=abs(pos(11)) pos(13)=abs(pos(13)) da analisi geometrica B = pos(11)^2+pos(13)^2 c2=(B-00675^2-009^2)(200675009) theta_i(13)=(acos(c2)) delta=atan((pos(13))(pos(11)))considerando i grafici ho valori di x e z invertiti zx=(009sin(theta_i(13))(00675+009cos(theta_i(13)))) alfa = atan(zx) se gomito alto uasato sempre if (gomito==1) theta_i(12)=(delta+alfa) end se gomito basso if (gomito==0) theta_i(12)=(delta-alfa) end calcolo errore tra dato in input e valori trovati err(11)=theta(11)-theta_i(11) err(12)=abs(theta(12))-theta_i(12)+pi2causa inversione di posizionamento motori err(13)=abs(theta(13))-theta_i(13) trasformo errore in gradi errore=[errorefix(err360(2pi))] else METODO ITERATIVO PER CALCOLARE CINEMATICA INVERSA

Appendice B 183

if (metodo==2) METODO GRADIENTE inizializzo var di appoggio a=0 b=0 n=0 dist = Calc_Distanza(abpos(11)pos(13)) calcolo distanza iniziale while (dist gt 0001) 0001 approx al millimetro 001 approx al centimetro calcolo la differenza della distanza dalla pos finale dellend-effector incrementado e decrementando gli angoli verifico se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_angbpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) -Calc_Distanza(a b-incr_angpos(11)pos(13)) a = a - gradient_a creo le nuove pos b = b - gradient_b ricalcolo la distanza e vedo se egrave minore dellapprox dist = Calc_Distanza(abpos(11)pos(13)) n=n+1incremento numero di iterazioni end else if(metodo==3) METODO FASTER GRADIENT FOLLOWING inizializzo var di appoggio a=0 b=0 n=0 speeda=0 speedb=0 dist = Calc_Distanza(abpos(11)pos(13))calcolo distanza da end effector salvo il valore del vecchio gradiente per entrambe le posizioni old_gradient_a = 0 old_gradient_b = 0 while (dist gt 0001) approssimazione al millimetro n=n+1 controllo se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_ang bpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) - Calc_Distanza(a b-incr_angpos(11)pos(13)) controllo se ci siamo gia trovati in questi valori in segno if (sign(old_gradient_a) ~= sign(gradient_a)) se gradiente ha cambiato direzione(salitadiscesa)devo arrestare e modificare valori a = a - speeda old_gradient_a (gradient_a-old_gradient_a) speeda = 0 else speeda =speeda + gradient_a se sto seguendo salita o discesa del gradiente continuo a seguirla if (sign(old_gradient_b) ~= sign(gradient_b))

Appendice B 184

b = b- speeda old_gradient_b (gradient_b-old_gradient_b) speedb = 0 else modifico posizioni raggiunte e velocitagrave speedb =speedb+gradient_b a = a- speeda b = b- speedb end end ricalcolo distanza con nuovi valori dist = Calc_Distanza(a bpos(11)pos(13)) old_gradient_a = gradient_a il grdiente appena calcolato diventa il vecchio old_gradient_b = gradient_b end else testo=inserito metodo errato end end STAMPO VALORI NEL CASO DEI GRADIENTI nstampo il numero di iterazioni che sono servite a calcolare il risultato dist theta_i(12)=a-incr_angvalori corretti sono quelli al passo precedente theta_i(13)=b-incr_ang theta_i esprimo lerrore in gradi err=theta-theta_i errore=[errorefix(err360(2pi))] end end end

ii4 Analisi del modello dinamico

FUNZIONE EULERO_BASE Funzione che effettua il calcolo dei coefficienti di newton eulero sulla singola zampa per ogni singolo giunto dellarticolazione in base alla parametrizzazione di Denavit-Hartemberg La catena cinematica qui analizzata egrave quella che ha per base il baricentro ed end effector il piedeApplicata a parametri di controllo degli attuatori(passo_avanti) parametri input theta=vettore a tre colonne che rappresenta gli angoli dei tre giunti function [forza_gen] = eulero_base(theta) theta=[ pi4 pi4 pi2 pi4 pi4 pi4 0 pi4

Appendice B 185

pi4 pi4 0 pi4 pi4 pi4 0 pi4 pi4 pi4 pi2 pi4 pi4 pi4 pi2 pi4] definizione tempistiche delta=1 [v1 n1]=size(theta) forza_gen=[] massa PESO=1 IN KG massa=[PESO4 002 002 005] gravitagrave g=[0 0 -98] tensore dinerzia del complesso braccio motore espressi in millimetri x=[0026 0003 0003 0009] y=[0054 0020 0020 004] z=[01125 00573 00675 009] I=[] matrice momento dinerzia for(i=13) I=[I (y(i)^2+z(i)^2)12 0 0 0 (x(i)^2+z(i)^2)12 0 0 0 (y(i)^2+z(i)^2)12] end for(v=1v1-1) inizio ciclo per piugrave posizioni successive ris=[] analizzo due istanti temporali successivi per estrapolare la velocitagrave for(j=1n1) ris=[ris (theta(v+1j)-theta(vj))] end d_theta=risdelta espresso in radsec dd_theta=d_thetadeltaespresso in radsec^2 C1=cos(theta(v1))S1=sin(theta(v1)) C2=cos(theta(v2))S2=sin(theta(v2)) C3=cos(theta(v3))S3=sin(theta(v3)) C4=cos(theta(v4))S4=sin(theta(v4)) Ricavo matrice di rotazione tot R=[[C1(1) (-S1(1)) 0 S1(1) C1(1) 0 0 0 1] [C2(1) 0 (-S2(1)) S2(1) 0 -C2(1) 0 1 0] [C3(1) (-S3(1)) 0 S3(1) C3(1) 0 0 0 1] [C4(1) (-S4(1)) 0 S4(1) C4(1) 0 0 0 1]]gestita come 123 cinematica diretta per il calcolo della posizione dellend_effector nello spazio dei giunti A11=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A13=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A14=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T1=A11A12A13A14

Appendice B 186

C1=cos(theta(v+11))S1=sin(theta(v+11)) C2=cos(theta(v+12))S2=sin(theta(v+12)) C3=cos(theta(v+13))S3=sin(theta(v+13)) C4=cos(theta(v+14))S4=sin(theta(v+14)) A21=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A22=[C2 0 (-S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A24=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T2=A21A22A23A24 dalle posizioni successive trovate con cinematica diretta estrapolo la posizione e da essa la velocitagrave for(i=13) pos(1i)=T2(i4)-T1(i4) end vel=posdelta acc_end_eff=veldelta vettore dallorigine della terna(i-1)al baricentro Ci R_iC=[0055125 0 0002865 0 0003375 0 00045 0 0] vettore dallorigine della terna(i)al baricentro Ci RC=[-0055125 0 0-002865 0 0-003375 0 0-0045 0 0] vettore dallorigine della terna(i-1)allorigine della terna (i) R_iI=[01125 0 000573 0 000675 0 0009 0 0] zo=[0 0 1]asse base altri parametri da calcolare velocitagrave lineare del baricentro Ci p_C=[0 0 0] velocitagrave lineare dellorigine della terna (i) p_i=[0 0 0] velocitagrave angolare del braccio omega=[0 0 0] accelerazione lineare del baricentro Ci pp_C=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione lineare dellorigine della terna (i) pp_i=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione angolare del braccio d_omega=[0 0 0] forza esercitata dal braccio (i-1) sul braccio i f=(1)acc_end_eff il primo valore rappresenta su end_effector momento mu=[0 0 0] forza generalizzata tau=[] impongo velocitagrave e accellerazioni per il braccio base inizio algoritmo inserisco formule di Newton-Eulero(vedi teoria) for(i=24) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] omega(i)=(Rot(omega(i-1)+(d_theta(1i-1)zo))) d_omega(i)=(Rot(d_omega(i-1)+(dd_theta(1i-1)zo)+cross(d_theta(1i-1)omega(i-1)zo)))

Appendice B 187

pp_i(i)=(Rotpp_i(i-1))+cross(d_omega(i)R_iI(i-1))+cross(omega(i)(cross(omega(i)R_iI(i-1)))) pp_C(i)=pp_i(i)+cross(d_omega(i)RC(i-1))+cross(omega(i)(cross(omega(i)RC(i-1)))) end TORNO indietro per calcolare le forze e i momenti i=3 r=2indici while(igt=1) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] Iner=[I((i-1)3+1)I((i-1)3+2)I((i-1)3+3)] f(r)=(Rotf(r-1))-massa(1i)pp_C(i)ho sottratto la massa perchegrave la considero forzapeso mu(r)=cross(-f(r)(R_iI(i)+RC(i)))+(Rotmu(r-1))+(Rot(cross(f(r-1)RC(i))))+(Inerd_omega(i))+cross(omega(i)(Ineromega(i))) i=i-1 r=r+1 end n2=size(mu) for(i=2n2) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] tau(i)=mu(i)Rotzo end forza_gen=[forza_gen tau] end forza_gen espressa in Nm forza_gen=(forza_gen100)98 trasformazione in cmKg

ii5 Map building

ii51 Espansione degli ostacoli

FUNZIONE ONDA_DESTINAZIONE funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input matrice= matrice di definizione mappa xend=valore dellascissa della destinazione yend=valore dellordinata della destinazione parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_destinazione(matricexendyend)

Appendice B 188

calcolo dimensioni matrice [dim1dim2] = size(matrice) for(i=1(xend-1))righe superiori ad arrivo for(j=1(dim22))per tutte le colonne matrice(i((j2)-1))=(xend-i)attribuisco valori decrescenti end end for(i=(xend+1)dim1)righe inferiori ad arrivo for(j=1(dim22)) matrice(i((j2)-1))=(i-xend)attribuisco valori a cui devo sottrarre la destinazione end end for(i=1dim1)colonne a sx ad arrivo for(j=1(yend-1))fino a colonna precedente arrivo sottraggo il numero in cui sono matrice(i((j2)-1))=matrice(i((j2)-1))+(yend-j) end end for(i=1dim1)colonne a dx ad arrivo for(j=(yend+1)(dim22))da colonna successiva a fine matrice(i((j2)-1))=matrice(i((j2)-1))+(j-yend)da valore devo sottrarre valore destinazione end end matrix=matrice restituisco matrice modificata FUNZIONE ONDA_OSTACOLOPLUS funzione che inseriscce come secondo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dallstacolo piugrave vicino valutando opportunamente la relazione tra gli ostacoli giagrave presenti parametri in input matrice= matrice di definizione mappa xposa=valore dellascissa iniziale deelostacolo xposb=valore dellascissa di fine deelostacolo yposa=valore dellordinata iniziale deelostacolo yposb=valore dellordinata di fine deelostacolo parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_ostacoloplus(matricexposaxposbyposayposb) funzione per la creazione degli ostacoli ostacolo_par(xaxbyaybc) ostacolo occupa quattro celle xayaxaybxbya xbyb definisco nuova matrice matrice_1=zeros(size(matrice)) creo onda con singolo ostacolo matrice_1=onda_ostacolo(matrice_1xposaxposbyposayposb) [dim1dim2] = size(matrice_1) confonto matrice con singolo ostacolo con matrice con giagrave presenti altri ostacoli e salvo le distanze minime da essi for(i=1dim1) for(j=1(dim22))

Appendice B 189

if(matrice_1(i(j2))ltmatrice(i(j2))) matrice(i(j2))=matrice_1(i(j2)) end end end matrice(xposayposa2)=0valori che identificano lostacolo matrice(xposa((yposa2)-1))=110 matrice(xposayposb2)=0valori che identificano lostacolo matrice(xposa((yposb2)-1))=110 matrice(xposbyposa2)=0valori che identificano lostacolo matrice(xposb((yposa2)-1))=110 matrice(xposbyposb2)=0valori che identificano lostacolo matrice(xposb((yposb2)-1))=110 espansione ostacolo if(yposa ~= 1)se sono sul bordo sinistro matrice(xposa(yposa-1)2)=0valori che identificano lespansione matrice(xposa(((yposa-1)2)-1))=109 matrice(xposb(yposa-1)2)=0valori che identificano lespansione matrice(xposb(((yposa-1)2)-1))=109 end if(yposb ~= (dim22))se sono sul bordo destro matrice(xposa(yposb+1)2)=0valori che identificano lespansione matrice(xposa(((yposb+1)2)-1))=109 matrice(xposb(yposb+1)2)=0valori che identificano lespansione matrice(xposb(((yposb+1)2)-1))=109 end matrix=matriceritorno il valore della matrice modificata

ii52 Calcolo del percorso

FUNZIONE TROVA_PERCORSO funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input xst=valore dellascissa del punto di partenza yst=valore dellordinata del punto di partenza xend=valore dellascissa del punto di arrivo yend=valore dellordinata del punto di arrivo dim1dim2=dimendioni matrice mappa posxa1posxa2posya1posya2=posizione ostacolo 1 posxb1posxb2posyb1posyb2=posizione ostacolo 2 posxc1posxc2posyc1posyc2=posizione ostacolo 3 parametri in output prova1= valori in coordinate cartesiane del percorso trovato strada_per=percorso in rappresentazione direzionale dei passi da percorrere strada_per_uso=percorso espresso in valori singoli(0=Start1=Avanti-1=Indietro-2=Sinistra2=Destra) Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005

Appendice B 190

function [prova1strada_perstrada_per_uso] = trova_percorso(xstystxendyenddim1dim2posxa1posxa2posya1posya2posxb1posxb2posyb1posyb2posxc1posxc2posyc1posyc2) non_val=[100 1 -1 -1]valore non valido 100=dist_da destinazione 1=distanza da ostacolo visitato=[150 0]marca per nodi visitati arr=[0 45]marca arrivo strada=[xst yst]memorizzo coordinate percorso dim1=5 dim2=dim22 matrice_appoggio=eye(dim1dim2) crea una matrice diagonale dim1 x dim2 matrice=zeros(size(matrice_appoggio))creo matrice vuota creo matrice con onde necessarie matrice=onda_destinazione(matricexendyend) matrice=onda_ostacolo(matriceposxa1posxa2posya1posya2) matrice=onda_ostacoloplus(matriceposxb1posxb2posyb1posyb2) matrice=onda_ostacoloplus(matriceposxc1posxc2posyc1posyc2) prova=matriceprova diventa la mia matrice i=xst j=yst parto da sorgente n=dim1dimensioni matrice m=dim22 trovato=0 creo insieme dei successivi del nodo in analisi while(trovato==0) if((igt=1)ampamp(ilt=dim1)ampamp(jgt=1)ampamp(jlt=(dim22))) if(i ~= 1)se sono ai bordi successivi=[matrice(i-1(j2)-1) matrice(i-1(j2)) i-1 j] else successivi=non_val end if(j ~= 1)se sono ai bordi successivi=[successivimatrice(i(((j-1)2)-1)) matrice(i(j-1)2) i (j-1)] else successivi=[successivinon_val] end if(i ~= n) successivi=[successivimatrice(i+1(j2)-1) matrice(i+1(j2)) i+1 j] else successivi=[successivinon_val] end if(j ~= m) successivi=[successivimatrice(i(((j+1)2)-1)) matrice(i(j+1)2) i (j+1)] else successivi=[successivinon_val] end migliore=non_valattribuisco valore enorme a migliore trov=0 scelgo il miglior successivo quello che mi porta piugrave vicino a destinazione for(k=14) if(successivi(k1)lt=migliore(1)) tra due a stessa distanza prendo quello piugrave lontano dallostacolo

Appendice B 191

if((successivi(k1)==migliore(1))ampamp(successivi(k2)ltmigliore(2))) migliore=successivi(k) trov=1 posto=ksalvo la posizione del successivo end migliore=successivi(k) trov=1 posto=k end end matrice(i(j2)-1)=visitato(1)marco percorso giagrave visitato matrice(i(j2))=visitato(2) strada=[stradamigliore(3) migliore(4)]salvo la posizione del migliore trovato se sono arrivato a destinazione ho finito if(migliore(3)==xend)ampamp(migliore(4)==yend) trovato=1 end controllo per il mancato raggiungimento del percorso i=migliore(3)cerco il successivo j=migliore(4) se il migliore tra i successivi egrave o un ostacolo o unespansione sono bloccato if((migliore(1)==150)||(migliore(1)==109)||(migliore(1)==110)) trovato=2non esiste percorso end else trovato=2 end end if(trovato==1) testo=PERCORSO TROVATO end if(trovato==2) testo=PERCORSO NON TROVATO end se ho trovato il percorso if(trovato ~= 2) prova1=stradasalvo la strada in coordinate effettuata [rc] = size(strada) dalle coordinate estrapolo la strada direzionale e una espressa in singolo valore strada_per=[ start] strada_per_uso=[0] for(k=1(r-1)) if((strada(k1)~= strada(k+11))ampamp(strada(k2)== strada(k+12))) ris=strada(k1)- strada(k+11) if (ris==1) strada_per=vertcat(strada_perIndietro) strada_per_uso=[strada_per_uso-1] else strada_per=vertcat(strada_perAvanti ) strada_per_uso=[strada_per_uso1] end

Appendice B 192

else if((strada(k1)== strada(k+11))ampamp(strada(k2)~= strada(k+12))) ris=strada(k2)- strada(k+12) if (ris==1) strada_per=vertcat(strada_perSinistra) strada_per_uso=[strada_per_uso-2] else strada_per=vertcat(strada_perDestra ) strada_per_uso=[strada_per_uso+2] end end end end stampa=strada_per end

ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente

FUNZIONE AMBIENTE_PROVA Algoritmo che richiama la funzione trova_percorso e con i risultati trovati realizza il plottaggio grafico del robot in movimento nellambiente Realizza controlli per la scelta del passo da utilizzare nellistante in esame Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 preparazione dati base figura figure grid on axis([-5 5 -5 5 -2 7]) clf init sfondo(xstartystartxendyend) ASGAR b=transl(000) posiziono il robot nello start t=transl([ystart -xstart 0]) bara=bt barb=bt barc=bt bard=bt zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard center_position(barabarbbarcbard)

Appendice B 193

chiamo la funzione trova_percorso [coord path

path_uso]=trova_percorso(xstartystartxendyenddim1dim2ostxa1ostxa2ostya1ostya2ostxb1ostxb2ostyb1ostyb2ostxc1ostxc2ostyc1ostyc2) [p k]=size(path_uso) v=1 p1=[] cont=[] per ogni elemento del percorso while(vlt=p) in relazione al percorso espresso con singoli valori if (path_uso(v)== 0)start clf alzati7chiamo funzione di alzata del robot clf sfondo(xstartystartxendyend) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) v=v+1 else if (path_uso(v)== -2) cammina_sinistra for(i=04) faccio fare CINQUE passi a sx x spst a sx=02 hold on passo_sx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 2) cammina_destra for(i=04) faccio fare CINQUE passi a dx x spost a dx =02 hold on passo_dx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 1)in avanti c=0 k=v conto per quante celle non varia la x cioegrave qunti elementi devo andare avanti while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1)

Appendice B 194

n_passi=fix(distanza07)trasformo la distanza in passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo per eccesso il rimanente for(s=1n_passi) cammina_avanti con passi lunghi hold on passo_avanti_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_avanti con passi correttivi hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] else if (path_uso(v)==-1)indietro c=0 k=v calcolo x quanti elementi ho camminata indietro while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1) n_passi=fix(distanza07)definisco n_passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo rimanente for(s=1n_passi) cammina_indietro con passi lunghi hold on passo_indietro_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_indietro con passi correttivi hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] end end end end end

Appendice B 195

end axis([-1 7 -8 1 -2 7]) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]salvo percorso fino a prima

della correzione finale correzione finale mi dice quanto sono arrivata lontano dalle destinazione desiderata [m m1]=size(percorso_effettivo) distanza=[] distanza(1)=percorso_effettivo((m-3)4)-(yend) distanza(2)=percorso_effettivo((m-2)4)-(-xend) testo=SONO ARRIVATO A DISTANZA DALL OBIETTIVO DI X=distanza(1) y=distanza(2) in base al valore di distanza mi suggerisce cosa il robot dovrebbe ancora fare if ((distanza(2)gt=02)||(distanza(2)lt=-02)) dist_fin=distanza(2)02 testo=devo fare ancora abs(dist_fin)visualizzo il modulo if(dist_fingt0) testo=passi correttivi avanti else testo=passi correttivi indietro end dopo avermi detto cosa deve fare lo esegue if(dist_finlt0) for(i=0fix(abs(dist_fin))) hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end else for(i=0fix(abs(dist_fin))) hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end end end p1=[p1zampaabase] disegno i due percorsi IDEALE e EFFETTIVO percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]aggiungo la correzione al

percorso [n n1]=size(coord)percorso ideale for(k=1(n-1)) if((coord(k1)~= coord(k+11))ampamp(coord(k2)== coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k+11)][0 0

0]ColorgLineWidth2)

Appendice B 196

else if((coord(k1)== coord(k+11))ampamp(coord(k2)~= coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k1)][0 0

0]ColorgLineWidth2) end end end PERCORSO vero che invece fa il robottino il valore delle coordinate egrave giagrave giusto come segni for(k=0(m4)-2) if((percorso_effettivo((4k)+14) ~=

percorso_effettivo((4(k+1)+1)4))||(percorso_effettivo((4k)+24) == percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4(k+1)+1)4)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo(4k+24)][0 0 0]ColorbLineWidth2) else if((percorso_effettivo((4k)+14) ==

percorso_effettivo((4(k+1)+1)4))ampamp(percorso_effettivo(4k+24) ~= percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4k)+14)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo((4(k+1)+2)4)][0 0 0]ColorbLineWidth2) end end end

ii6 Collegamento diretto con il robot fisico

ii61 Creazione degli angoli da trasmetter agli attuatori

FUNZIONE ANGOLI_MOTORI2 Funzione che crea in output larray theta_motori generando le traiettorie di movimento per il corretto funzionamento dellattuazione dei motori fisici In questa versione gli angoli di movimento risultano essere piugrave accentuati per migliorare la stabilirtagrave Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 INSERIRE NUMERO FRAME AL SECONDO frame=2 con 50 sembra continuo

Appendice B 197

int=1(frame-1)definisco il numero di intervalli in cui scandire il movimento t=[0int1] definizione variabile di controllo x=0 if (int==1) x=1 end poszero=[0 0 0]posizione impressa nella pic pos_base_A=[0 -pi4 (-pi2)]posizione base delle zampe di destra pos_base_B=[0 pi4 (pi2)]posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento pos_av_A=[(pi4-02) -pi4 -pi2] pos_av_A2=[(pi3) -pi4 -pi2] modificata accentuo movimento in avanti pos_av_B=[(-pi4+02) pi4 pi2] pos_av_B2=[(-pi3) pi4 pi2] pos_ind_A=[(-pi4+02) -pi4 -pi2] pos_ind_A2=[(-pi3) -pi4 -pi2] pos_ind_B=[(pi4-02) pi4 pi2] pos_ind_B2=[(pi3) pi4 pi2] posizioni intermedie=punti di via per le cubiche pos_int_A1=[(-pi4+02) 0 0] pos_int_A2=[(-pi3) 0 0] pos_int_B2=[(pi4-02) 0 0] pos_int_B3=[(pi3) 0 0] calcolo dellle traiettorie tramite la cubica da posizione zero a posizione base parta=cubica_norm(poszeropos_base_At) partb=cubica_norm(poszeropos_ind_Bt) partc=cubica_norm(poszeropos_ind_B2t) movimento in avanti zampe di sinistra jc1=cubica_norm(pos_ind_B2pos_int_B3t) jc2=cubica_norm(pos_int_B3pos_av_Bt) jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_B2t) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint+x) jd_b=cubica_norm(pos_base_Apos_ind_A2int+x) jb_b=cubica_norm(pos_av_B2pos_base_Bint+x) jc_b=cubica_norm(pos_av_Bpos_base_Bint+x) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_A2t) jd1=cubica_norm(pos_ind_A2pos_int_A2t) jd2=cubica_norm(pos_int_A2pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_A2pos_base_Aint+x)

Appendice B 198

jdb=cubica_norm(pos_av_Apos_base_Aint+x) jbb=cubica_norm(pos_base_Bpos_ind_Bint+x) jcb=cubica_norm(pos_base_Bpos_ind_B2int+x) costruzione dei vettori di attesa per ogni zampa pos_attesaA=[]attesa della zampa nella posizione base pos_attesaB=[] pos_attindA=[]attesa della zampa nella posizione indietro pos_attindB=[] pos_attavA=[]attesa della zampa nella posizione avanti pos_attavB=[] vettori per le attese dei movimenti delle altre zampe for(i=1(2+2int)int) pos_attesaA=[pos_attesaApos_base_A]attesa zampa in posizione base pos_attesaB=[pos_attesaBpos_base_B] pos_attindA=[pos_attindApos_ind_A]attesa zampa in posizione indietro pos_attindB=[pos_attindBpos_ind_B] pos_attavA=[pos_attavApos_av_A]attesa zampa in posizione avanti pos_attavB=[pos_attavBpos_av_B] end costruzioni vettori composti per la camminata ja=[partapos_attesaApos_attesaAja_bpos_attindAja1ja2jab] jb=[partbpos_attindBjb1jb2jb_bpos_attesaBpos_attesaBjbb] jc=[partcjc1jc2pos_attavBjc_bpos_attesaBpos_attesaBjcb] jd=[partapos_attesaApos_attesaAjd_bjd1jd2pos_attavAjdb] vettore da mandare in output ogni colonna rappresenta un motore in pos 3 4 5 6 7 8 9 10 11 12 13 14 theta_motori=[jb(1) jc(1) jb(2) jb(3) jc(2) jc(3) jd(3) jd(2) ja(3) ja(2) jd(1) ja(1)] costruzione della scala per i valori minimi valori_minimi=(-pi2)ones(112) chiamata di funzione per spedire valori ai motori moveservos_mio(theta_motori0111valori_minimi) ho messo frame 8 e valore tra un valore sparato e laltro 008 va bene

ii62 Coollegamento diretto di comunicazione con la PIC

FUNZIONE MOVESEVOS La funzione che ricevendo in imput il vettore contenente le posizioni dei motori le elabora per trasformarle in valori compatibili con la PIC (0 255)e apre una connessione di comunicazione con essa La PIC che riceveragrave in input i dati tramite la connessione seriale (impostata sulla COM1 alla velocitagrave di 9600) interpreteragrave i dati nel seguente modo

Appendice B 199

- Il primo valore indica la modalitagrave (254 = movimento dei servo) - I successivi 16 valori compresi tra 0 e 255 indicano le posizioni parametri inputpos=la matrice theta costitutita da una o piugrave righe composta da 12 elementi riferiti ai 12 attuatori timestep=indica il tempo di invio tra una sequenza e laltra ovvero il tempo che intercorre tra ogni framerigha della matrice in ingresso(valore minimo 0111) min=vettore contenente i valori min assumibili dai motori per calcolare lo zero delle posizioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 pos egrave il valore della mia theta espressa solo con 12 valori Funzione che invia i valori in output sulla seriale function moveservos_mio(postimestepmin) max_servo_rotation = pi Quanto possono ruotare i motori (pi 2pi) [rowscols] = size(pos) Crea una connessione seriale try s = serial(COM1 BaudRate14400) sByteOrder = littleEndian sTerminator = CR set(s timeout timestep)posso mettere 1 fopen(s) Laperturachiusura della seriale avviene una volta per ogni matrice theta e non ad ogni rigainvio for i=1rows pos_rel = pos(i)-min posizione relativa alla pos minima Vengono aggiunti 4 valori fittizi nulli poichegrave la seriale egrave progettata per gestire 16 motori mentre theta ne contiene 12 theta16 = [0 0 pos_rel(18) 0 pos_rel(1012) pos_rel(9) 0] Converto in valori in valori da 0 a 255 per la PIC I valori inviati compaiono anche nella command line per verifica theta16 = round(theta16255max_servo_rotation) fwrite(s 254 uchar async) readyByte = fread(s 1 uchar) fwrite(stheta16 uchar async) Controlla se la PIC ha ricevuto theta (conferma tramite valore 33) confirmByte = fread(s 1 uchar) if confirmByte ~= 33 msgbox(Errore di invio dei comandi sulla serialeErroreerror) else Valori inviati correttamente sulla seriale end pause(timestep) end

Appendice B 200

fclose(s) clear ans catch Se fallisce la connessione avverti lutente Porta seriale non connessa end

  • Introduzione
    • Unitagrave funzionali di un robot mobile
    • Obiettivo del lavoro
    • Organizzazione della tesi
      • Sistemi di locomozione
        • Scopi di studio della locomozione su zampe
        • Differenze e analogie tra locomozione a zampe e su ruote
        • Analisi Trot gait di quadrupedi
          • Studio andatura quasi-statica
          • Studio andatura quasi-dinamica
          • Studio andatura dinamica trotto
              • Stato dellrsquoarte dei four legged robot
                • Panoramica dei Robot quadrupedi esistenti
                  • Collie-1 e Collie-2
                  • Quadrupede MIT
                  • GEO
                  • Quadrupede Kimura lab
                    • Algoritmi di controllo CPG for four legged robot
                    • Robocup e Sony Aibo
                      • Storia
                      • Descrizione dei sensori di Aibo
                        • Visione della macchina
                        • Riconoscimento audio
                        • Tatto
                        • Movimento e sviluppo
                          • Architettura del robot ASGARD
                            • Configurazione del robot quadrupede
                              • Struttura Meccanica
                              • Attuatori
                              • Materiale Policarbonato
                                • ASGRAD in numeri
                                • Hardware
                                • Software
                                • Stato Attuale
                                  • Modellizzazione cinematica e dinamica
                                    • Convenzioni e simbologia utilizzata
                                    • Sistemi di coordinate e trasformazioni
                                    • Cinemetica diretta
                                      • Definizione dei parametri di Denavit Hartemberg
                                      • Metodo di assegnamento secondo D-H
                                        • Cinematica inversa
                                          • Metodo gradiente
                                            • Gradient following
                                            • Faster gradient following
                                                • Calcolo delle traiettorie
                                                • Modello dinamico Newton-Eulero
                                                • Creazione di una mappa
                                                  • Espansione degli ostacoli traformazione delle distanze
                                                    • Scelta di un percorso Algoritmo di Dijkstra
                                                      • Sviluppo dellrsquoalgoritmo di camminata
                                                        • Metodologie di sviluppo
                                                        • Progetto di una andatura
                                                          • Lo spazio
                                                          • Stabilitagrave
                                                          • Tempo
                                                            • Andature implementate
                                                            • Catene cinematiche del robot
                                                            • Passo statico e dinamico
                                                            • Formule di forza e torsione sui giunti
                                                            • Anello di Controllo
                                                            • Map-building e scelta del gait
                                                              • Costruzione della mappa ed espansione degli ostacoli
                                                              • Algoritmo di ricerca del percorso minimo
                                                              • Realizzazione del gait
                                                                  • Sperimentazione e analisi dei risultati
                                                                    • Risultati statici
                                                                      • Passo reale effettuato
                                                                      • Misurazioni reali della pressione
                                                                      • Confronti di cinemetica inversa
                                                                        • Risultati dinamici
                                                                          • Caratteristiche negative dei motori
                                                                            • Velocitagrave
                                                                            • Alimentazione
                                                                                • Caratteristiche del percorso
                                                                                  • Conclusioni e sviluppi futuri
                                                                                    • Risultati raggiunti
                                                                                    • Progetti futuri
                                                                                      • Modifiche meccaniche
                                                                                      • Miglioramenti Hardware
                                                                                      • Miglioramenti Software
                                                                                        • Conclusioni finali
                                                                                          • Bibliografia
                                                                                          • Appendice A
                                                                                            • i Sensori nei robot a zampe disponibili sul mercato
                                                                                            • ii Dead Reckoning Stima della posizione
                                                                                              • ii1 Encoder Ottici
                                                                                              • ii2 Encoder ottici incrementali
                                                                                                • ii21 EL30 E-H-I Eltra srl
                                                                                                  • ii3 Encoder ottici Assoluti
                                                                                                    • ii31 Sensori ottici CORRSYS-DATRON
                                                                                                    • ii32 EAM Parallelo-SSI Eltra srl
                                                                                                      • ii4 Sensori Dopler
                                                                                                      • ii41 Robot Italy SRF04
                                                                                                        • iii Heading Sensor
                                                                                                          • iii1 Giroscopio meccanico
                                                                                                            • iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codi
                                                                                                            • iii12 Futaba Giroscopio FP GY 240 AVCS
                                                                                                              • iii2 Giro-bussola
                                                                                                              • iii3 Giroscopio-Girobussola a fibre ottiche
                                                                                                                • iii31 La funzione giroscopica
                                                                                                                  • iii4 Giroscopio piezoelettrico
                                                                                                                    • iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03
                                                                                                                    • iii42 Giroscopio Piezoelettrico Enc-03ja
                                                                                                                        • iv Sensori geomagnetici
                                                                                                                          • iv1 Bussola magnetica meccanica
                                                                                                                          • iv2 Bussola a effetto Hall
                                                                                                                            • iv21 1490 Digital Compass Sensor
                                                                                                                              • iv3 Bussola a magnetoreversiva
                                                                                                                                • iv31 Philips bussola AMR
                                                                                                                                  • iv4 Bussola magnetoelastica
                                                                                                                                    • iv41 Metglas 2605S2
                                                                                                                                        • v Sensori per la modellizzazione dellrsquoambiente
                                                                                                                                        • vi Sensori di distanza
                                                                                                                                          • vi1 Sensori basati sul tempo di volo
                                                                                                                                            • vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502
                                                                                                                                              • vi2 Sensore telemetro a sfasamento
                                                                                                                                                • vi21 LIDAR lsquoLight detection and Rangingrsquo
                                                                                                                                                  • vi3 Triangolazione
                                                                                                                                                    • vi31 IFELL Laser e Sistemi Srl
                                                                                                                                                      • Informazioni sui produttori
                                                                                                                                                      • Appendice B
                                                                                                                                                        • i Manuale drsquouso
                                                                                                                                                        • ii Codice generato
                                                                                                                                                          • ii1 Menu principale
                                                                                                                                                          • ii2 Confronto andatura quasi-stabile vs quasi-dinamica
                                                                                                                                                          • ii3 Calcolo della cinematica inversa
                                                                                                                                                          • ii4 Analisi del modello dinamico
                                                                                                                                                          • ii5 Map building
                                                                                                                                                            • ii51 Espansione degli ostacoli
                                                                                                                                                            • ii52 Calcolo del percorso
                                                                                                                                                            • ii53 Definizione dei movimenti per la deambulazione nellrsquoa
                                                                                                                                                              • ii6 Collegamento diretto con il robot fisico
                                                                                                                                                                • ii61 Creazione degli angoli da trasmetter agli attuatori
                                                                                                                                                                • ii62 Coollegamento diretto di comunicazione con la PIC
Page 2: Analisi e sviluppo di un simulatore per gait

hellipErsquo importante non smettere mai di porsi domande

AEinstein

Indice INTRODUZIONE 8

Unitagrave funzionali di un robot mobile 10

Obiettivo del lavoro 13

Organizzazione della tesi 13

CAPITOLO 1 SISTEMI DI LOCOMOZIONE 16

11 Scopi di studio della locomozione su zampe 17

12 Differenze e analogie tra locomozione a zampe e su ruote 19

13 Analisi Trot gait di quadrupedi 22 131 Studio andatura quasi-statica 24 132 Studio andatura quasi-dinamica 25 133 Studio andatura dinamica trotto 26

CAPITOLO 2 STATO DELLrsquoARTE DEI FOUR LEGGED ROBOT 28

21 Panoramica dei Robot quadrupedi esistenti 29 211 Collie-1 e Collie-2 29 212 Quadrupede MIT 31 213 GEO 31 214 Quadrupede Kimura lab 32

22 Algoritmi di controllo CPG for four legged robot 33

23 Robocup e Sony Aibo 38 231 Storia 40 232 Descrizione dei sensori di Aibo 44

2321 Visione della macchina 44 2322 Riconoscimento audio 45 2323 Tatto 45 2324 Movimento e sviluppo 46

CAPITOLO 3 ARCHITETTURA DEL ROBOT ASGARD 47

31 Configurazione del robot quadrupede 48 311 Struttura Meccanica 48

Indice 4

312 Attuatori 50 313 Materiale Policarbonato 52

32 ASGRAD in numeri 53

33 Hardware 55

34 Software 56

35 Stato Attuale 57

CAPITOLO 4 MODELLIZZAZIONE CINEMATICA E DINAMICA 58

41 Convenzioni e simbologia utilizzata 59

42 Sistemi di coordinate e trasformazioni 60

43 Cinemetica diretta 62 431 Definizione dei parametri di Denavit Hartemberg 63 432 Metodo di assegnamento secondo D-H 65

44 Cinematica inversa 69 441 Metodo gradiente 72

4411 Gradient following 73 4412 Faster gradient following 74

45 Calcolo delle traiettorie 75

46 Modello dinamico Newton-Eulero 78

47 Creazione di una mappa 80 471 Espansione degli ostacoli traformazione delle distanze 81

48 Scelta di un percorso Algoritmo di Dijkstra 83

CAPITOLO 5 SVILUPPO DELLrsquoALGORITMO DI CAMMINATA 84

51 Metodologie di sviluppo 85

52 Progetto di una andatura 85 521 Lo spazio 86 522 Stabilitagrave 87 523 Tempo 88

53 Andature implementate 88

Indice 5

54 Catene cinematiche del robot 90

55 Passo statico e dinamico 96

56 Formule di forza e torsione sui giunti 100

57 Anello di Controllo 102

58 Map-building e scelta del gait 105 581 Costruzione della mappa ed espansione degli ostacoli 106 582 Algoritmo di ricerca del percorso minimo 108 583 Realizzazione del gait 111

CAPITOLO 6 SPERIMENTAZIONE E ANALISI DEI RISULTATI 115

61 Risultati statici 116 611 Passo reale effettuato 117 612 Misurazioni reali della pressione 119 613 Confronti di cinemetica inversa 122

62 Risultati dinamici 124 621 Caratteristiche negative dei motori 126

6211 Velocitagrave 126 6212 Alimentazione 126

63 Caratteristiche del percorso 127

CAPITOLO 7 CONCLUSIONI E SVILUPPI FUTURI 129

71 Risultati raggiunti 130

72 Progetti futuri 131 721 Modifiche meccaniche 131 722 Miglioramenti Hardware 132 723 Miglioramenti Software 133

73 Conclusioni finali 133

BIBLIOGRAFIA 135

APPENDICE A 139

i Sensori nei robot a zampe disponibili sul mercato 140

Indice 6

ii Dead Reckoning Stima della posizione 140 ii1 Encoder Ottici 141 ii2 Encoder ottici incrementali 141

ii21 EL30 E-H-I Eltra srl 142 ii3 Encoder ottici Assoluti 142

ii31 Sensori ottici CORRSYS-DATRON 143 ii32 EAM Parallelo-SSI Eltra srl 144

ii4 Sensori Dopler 144 ii41 Robot Italy SRF04 146

iii Heading Sensor 146 iii1 Giroscopio meccanico 146

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice FT445533 147 iii12 Futaba Giroscopio FP GY 240 AVCS 149

iii2 Giro-bussola 149 iii3 Giroscopio-Girobussola a fibre ottiche 150

iii31 La funzione giroscopica 152 iii4 Giroscopio piezoelettrico 154

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03 155 iii42 Giroscopio Piezoelettrico Enc-03ja 155

iv Sensori geomagnetici 156 iv1 Bussola magnetica meccanica 157 iv2 Bussola a effetto Hall 158

iv21 1490 Digital Compass Sensor 159 iv3 Bussola a magnetoreversiva 159

iv31 Philips bussola AMR 160 iv4 Bussola magnetoelastica 160

iv41 Metglas 2605S2 161

v Sensori per la modellizzazione dellrsquoambiente 162

vi Sensori di distanza 162 vi1 Sensori basati sul tempo di volo 162

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502 163 vi2 Sensore telemetro a sfasamento 165

vi21 LIDAR lsquoLight detection and Rangingrsquo 165 vi3 Triangolazione 166

vi31 IFELL Laser e Sistemi Srl 168

INFORMAZIONI SUI PRODUTTORI 169

APPENDICE B 170

Indice 7

i Manuale drsquouso 171

ii Codice generato 172 ii1 Menu principale 172 ii2 Confronto andatura quasi-stabile vs quasi-dinamica 173 ii3 Calcolo della cinematica inversa 180 ii4 Analisi del modello dinamico 184 ii5 Map building 187

ii51 Espansione degli ostacoli 187 ii52 Calcolo del percorso 189 ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente 192

ii6 Collegamento diretto con il robot fisico 196 ii61 Creazione degli angoli da trasmetter agli attuatori 196 ii62 Coollegamento diretto di comunicazione con la PIC 198

Introduzione

Introduzione 9

Negli ultimi decenni continue evoluzioni scientifico tecnologiche hanno

portato ad un radicale cambiamento nella vita umana e nella realizzazione di

progetti un tempo considerati utopici Dalle ldquoali di Leonardordquo allrsquoemulazione

della natura lrsquouomo continua ad osservare lrsquoambiente che lo circonda e

analizzandolo accuratamente egrave riuscito a costruire macchine indipendenti che lo

aiutano nelle azioni quotidiane o che semplicemente lo supportano nelle abitudini

della vita di ogni giorno

Anche se lo stato dellrsquoarte della robotica egrave ancora lontano dal realizzare

dispositivi cosigrave complessi il notevole incremento della potenzialitagrave di calcolo

permette oggi la costruzione di robot dotati di un certo grado di autonomia Un

robot puograve essere considerato autonomo tanto piugrave egrave in grado di svolgere attivitagrave

individuali senza ausili esterni e di prendere decisioni proprie di fronte a

problematiche semplici

In tale contesto di ricerca svolge un ruolo essenziale lo studio delle

interazioni tra il robot e lrsquoambiente circostante Le fasi di ricerca e sviluppo si

possono suddividere in tre fasi principali

bull lrsquoosservazione del naturale comportamento dellrsquoanimale in esame e

lo stretto contatto tra le sue abitudini(camminata corsa trotto) e il

suo habitat

bull la costruzione del progetto e lo sviluppo del modello rendendo il

piugrave possibile congruente le caratteristiche fisiche naturali con la

strumentazione a noi disponibile

bull la realizzazione pratica del progetto

Introduzione 10

Figura 1 Fasi di Osservazione Progettazione Realizzazione

Lrsquoemulazione del movimento e la reazione del robot agli impulsi che

dovragrave essere generata deve risultare il piugrave possibile simile al comportamento

naturale

Unitagrave funzionali di un robot mobile

Un primo approccio con un robot mobile ci porta ad individuare le parti

fondamentali che lo compongono Possiamo effettuare una prima distinzione tra

ciograve che deve necessariamente essere on-board1 e ciograve che invece puograve essere svolto

anche da terminale remoto

Oltre ad attuatori e sensori che obbligatoriamente devono trovarsi sul

robot sarebbe importante che anche lrsquounitagrave di controllo si trovi su di esso affinchegrave

1 Posto sulla struttura meccanica del robot

Introduzione 11

i tempi di risposta e le dispersioni nel canale di comunicazione vengano

minimizzate Da notare lrsquoimportanza di encoder2 che permettono una stima

odometrica3 della posizione e chiudono lrsquoanello di retroazione dei motori questo

tipo di controllo egrave chiamato dead-reckoning[1]

Sul nostro robot attualmente sono posizionati solamente i motori di

attuazione e un sensore di pressione posto sotto una delle quattro zampe si

prevederagrave in futuro lrsquoincremento di sensori di cui viene fornita in seguito una

specifica (Apendice A) Questa miglioria sensoriale giagrave prevista nel progetto da

noi svolto permetteragrave la sostituzione di valori finora forzati come inputcon veri e

propri feedback4

Lrsquounitagrave di map-building che ora egrave delegata ad un compiuter remoto ha il

compito di generare le traiettorie e spedire i valori alla Pic di controllo dei

motori5 le sue potenzialitagrave potranno essere incrementate da dati sensoriali di

visione o contatto con lrsquoambiente esterno

Sensori che permettono una corretta scansione dellrsquoambiente possono

essere di molte tipologie tra i piugrave comuni sonar scanner laser telecamere fisse o a

bordo (anche se egrave molto importante tenere in considerazione il peso di tale

dispositivi) Lrsquoutilizzo di sensori differenti e algoritmi di visione richiedono un

grosso apporto di calcolo computazionale che se fatto on-board potrebbe

compromettere il funzionamento real-time6

2 sensori di rilevamento della posizione 3 forniscono posizione in base ai dati sensoriali a disposizione 4 dati sensoriali percepiti dallrsquoambiente e rinviati allrsquounitagrave di controllo 5 scheda di interfacciamento Pc-attuatori 6 reazione in tempi reali agli impulsi

Introduzione 12

Figura 2 Unitagrave funzionali che caratterizzano un robot mobile autonomo

Ulteriore elemento utile in un robot mobile egrave la sua localizzazione che

solitamente richiede calcoli con rilevatori odometrici Nel nostro progetto ci egrave

stato di grande aiuto lo sviluppo con il sistema Matlab che mantenendo in

memoria variabili matriciali ci ha reso possibile il monitoraggio del baricentro nei

singoli movimenti Tramite queste valutazioni siamo riusciti a ricavare i valori

dellrsquoerrore durante lo spostamento nelle mappe locali dellrsquoambiente create[2][3]

Una volta noto lrsquoambiente e la posizione degli ostacoli (consideriamo

lrsquoambiente noto) si passa a pianificare il moto al fine di svolgere i compiti richiesti

dallrsquoutente[4][5] Gli algoritmi di pianificazione si dividono in due grandi

categorie

bull generativi noti lrsquoambiente e la posizione del robot generano

traiettorie che minimizzano i percorsi e i tempi di reazione

aggirando gli ostacoli[6][7]

bull reattivi adattano il moto del robot a nuovi ostacoli

In generale occorre combinare entrambe le tipologie utilizzando un

pianificatore generativo sulla mappa dellrsquoambiente a disposizione e un algoritmo

Introduzione 13

reattivo nella fase di inseguimento della traiettoria per rendere il robot pronto a

reagire a cambiamenti anche improvvisi dellrsquoambiente

Obiettivo del lavoro

Scopo di tale tesi saragrave quello di realizzare algoritmi per la camminata di un

robot quadrupede al fine di permettere la realizzazione di movimenti il piugrave

possibile reali e la creazione di ipotetiche traiettorie che il robot potragrave

intraprendere in ambienti noti a priori

Al fine di testare il corretto funzionamento dei nostri risultati ci siamo

posti come obiettivo la costruzione di ASGARD (Automatic Stable Gait of A Robot

quaDruped) robot quadrupede in progetto al Politecnico di Milano e di effettuare

prove reali sul campo

Robot quadrupedi richiedono una particolare e complessa analisi di

stabilitagrave ed uno studio approfondito sul controllo del movimento Con il nostro

progetto vogliamo garantire stabilitagrave statica e dinamica e controllare lo sforzo

reale dei motori da noi utilizzati Permettere in sintesi ad ASGARD di vedere la

luce e compiere i sui primi passi

Inoltre in questa tesi verranno sviluppati un algoritmo di map-building e il

pianificatore del moto generativo (non avendo a disposizione sensori di feedback

non possiamo implementare il reattivo) utilizzando algoritmi a contenuto calcolo

computazionale che permetteranno al robot di deambulare in un ambiente noto

senza sovraccaricare il sistema ed effettuando movimenti generati dal sistema in

real time scegliendo lrsquoopportuno passo da eseguire

Organizzazione della tesi

In questo lavoro discuteremo i metodi per modellare e analizzare robot

mobili la principale analisi si concentra su robot quadrupedi dotati di arti

Introduzione 14

autonomi fino ad arrivare allrsquoimplementazione di ASGARD (Automatic Stable

Gait of A Robot quaDruped) il robot del Politecnico di Milano Lo scopo egrave fornire

uno strumento di analisi di stabilitagrave statica e dinamica per la realizzazione di una

camminata in un ambiente noto e una prima struttura di algoritmi che in futuro si

occuperanno del controllo e delle iterazioni con il mondo circostante

Tematiche discusse nei successivi capitoli

Capitolo 1

Motivazioni che ci hanno portato alla scelta di costruire un robot

quadrupede e le sue strategie di camminate possibili

Capitolo 2

Una breve panoramica sui robot quadrupedi esistenti enfatizzando le loro

caratteristiche salienti in termini di posture e sensori e i loro algoritmi principali di

controlloal fine di delineare un adeguato quadro entro cui porre il robot del

Politecnico di Milano

Capitolo 3

Analisi delle caratteristiche meccaniche e funzionali di ASGARD

Capitolo 4

Definizione degli obiettivi fissati per il progetto e presentazione della

teoria necessaria per il corretto svolgimento

Capitolo 5

Descrizione della parte di implementazione del progetto dallrsquoapplicazione

della teoria esposta nel capitolo precedente alla scrittura del codice

Introduzione 15

Capitolo 6

Discussione dei risultati e su alcune proveeseguite a simulatore e su altre

misurazioni pratiche realizzate sul robot fisico

Capitolo 7

Migliorie possibili effettuabili in futuro e conclusioni finali dellrsquoautore

Appendice A

Ricerca eseguita su sensori disponibili sul mercato che potranno essere

integrati nel progetto

Appendice B

Presentazione del manuale di utilizzo e parte di codice significativa

generato in linguaggio Matlab 65

Capitolo 1 Sistemi di locomozione

Sistemi di locomozione 17

11 Scopi di studio della locomozione su zampe

Esistono diverse motivazioni che giustificano lo studio di robot su zampe

tre le principali[8] troviamo

bull mobilitagrave fondamentale caratteristica di un robot egrave riuscire a

lavorare e svolgere le sue mansioni in tutte le tipologie di

terreni da quelli lisci ai piugrave ostili in presenza di scale o gradini

e riuscire se possibile ad evitare ostacoli non solo aggirandoli

ma anche scavalcandoli Veicoli a ruote sono la soluzione

adeguata se si pensa a terreni piani o con inclinazioni continue

ma la struttura del nostro pianeta permette il loro utilizzo in

meno della metagrave delle terre emerse Se invece pensiamo alla

crosta terrestre essa egrave quasi completamente raggiungibile da

esseri viventi (uomini animali) dotati di gambe

bull punti di appoggio isolati che ottimizzano il supporto e la

trazione e non richiedono un continuo contatto con il suolo

come succede per le ruote

bull sospensione attiva che disaccoppia la traiettoria delle gambe

da quella del corpo rendendo possibile cioegrave lo spostamento

senza sollecitazioni del carico nonostante pronunciate

sconnessioni del terreno

Queste caratteristiche in molti casi rendono indipendenti le capacitagrave del

robot dallrsquoasperitagrave del percorso dando la possibilitagrave di maggiore efficienza in

velocitagrave anche in ambienti molto ostili

Analizzare le spiccate doti di agilitagrave e mobilitagrave di animali non risulta un

facile compito essi sono in grado di muoversi velocemente e con sicurezza nelle

piugrave svariate condizioni ambientali

Sistemi di locomozione 18

Figura 3 Particolari posture animali in condizioni ambientali ostili

Nostro principio di studio risulta essere cercare metodologie di emulazione

di tali doti e successivamente applicarle a robot quadrupedi cercare i compiti

simili di locomozione e tramite questi risultati percepire problematiche e trovare

soluzioni per la mobilitagrave di strutture artificiali[9]

In particolare un robot su zampe necessita di

bull controllo del movimento dei giunti

bull controllo dellrsquoequilibrio

bull ciclicitagrave dellrsquouso delle zampe

bull punti di appoggio noti

bull calcolo della possibile traiettoria percorribile

I sistemi legged7 risiltano in diversi ambiti molto utili ai settori di ricerca

dallrsquoIntelligenza Artificiale e Sistemi di cooperazione multi-agente a semplici

robottini in grado di svolgere un unico ma non meno significativo task8 come la

pulizia di una superficie la raccolta di un oggetto o la perlustrazione di aree

pericolose con la relativa raccolta dati

7 termine inglese per rappresentare sistemi robotica dotati di quattro zampe 8 compitoincaricoobiettivo da raggiungere

Sistemi di locomozione 19

12 Differenze e analogie tra locomozione a zampe e su ruote

La principale caratteristica che diversifica le due tipologie di robot egrave la

gestione dei movimenti Per i sistemi legged la realizzazione di un passo include

al suo interno un insieme di variabili di controllo per il movimento corretto dei

giunti e la corretta sincronizzazione dei movimenti delle zampe al fine di ottenere

una adeguata andatura

Figura 4 Rover a ruote Figura 5 Rover Spirit sulla superficie di Marte[10]

Durante il passo inoltre bisogna mantenere il controllo sulla stabilitagrave e

sullrsquoequilibrio (controlli del tutto assenti in un robot a ruote) monitorare i valori

di torsione dei singoli motori accertandosi che essi non superino le soglie limite e

valutare il punto di appoggio futuro Una volta costruito un passo il compito

ricade nel continuare a ciclarlo opportunamente al fine di portare a termine il

compito richiesto superando eventuali dissestamenti del terreno o ostacoli

Un robot a ruote invece egrave in grado solo di muoversi su terreni lisci e

richiede un maggior spazio per effettuare semplici manovre Di fronte a ostacoli

anche minimi il robot a ruote dovragrave effettuare la pianificazione di una traiettoria

Sistemi di locomozione 20

per aggirare lrsquoostacolo e impiegheragrave un tempo di reazione maggiore Se un robot

a ruote si troveragrave di fronte ad uno ostacolo saragrave costretto ad attivare calcoli

opportuni che gli permetteranno di costruire una strada alternativa per il

superamento dellrsquoimprevisto Un robot a zampe invece potragrave attivare gli attuatori

al fine di scavalcare se possibile lrsquoostacolo

Figura 6 Diverse strategie per oltrepassare un ostacolo

Altro aspetto di differenziazione tra le due tipologie di robot risulta essere

la mobilitagrave della piattaforma Alcune volte risulta essere utile mantenere il carico

in una inclinazione prestabilita (ad esempio il trasporto di un grave o il

mantenimento del centro ottico di una telecamera) Nei robot a ruote il corpo egrave

solitamente solidale con lrsquoasse delle ruote e si mantiene ad una distanza fissa dal

terreno seguendolo in ogni sua inclinazione Questo risulta essere una

caratteristica utile su terreni pianeggianti ma risulta sconveniente su terreni

curvilinei In questa circostanza risulterebbe utile disaccoppiare la piattaforma con

le ruote motrici al fine di mantenere costante lrsquoinclinazione del corpo principale

Questo disaccoppiamento egrave giagrave presente nella struttura dinamica del robot

a zampe dove la postura della piattaforma risulta essere la somma di due

contributi quali

bull scelta dei punti di appoggio

bull posizione cinematica assunta da ogni singola zampa in riferimento

alle caratteristiche del terreno

Sistemi di locomozione 21

Attraverso cioegrave la posizione delle zampe il robot egrave in grado di

ammortizzare le sconnessioni del terreno e dentro i limiti cinematici e di

mantenere lrsquoasse prescelto

Figura 7 Mobilitagrave della piattaforma

Esistono comunque analogie che accomunano le due strutture di robot

esistenti la principale risulta essere la ciclicitagrave dei movimenti Nei sistemi legged

dopo aver trovato un corretto movimento per la realizzazione di un passo egrave da

ricercare il periodo in cui esso dovragrave ripetersi al fine di ottenere una camminata

con andatura corretta Per un robot a ruote il periodo risulta invece essere

semplicemente la rotazione della ruota attorno al proprio asse A paritagrave di

ripetizione di un ciclo il risultato deve essere il ritorno nella posizione iniziale e

lrsquoincremento dello spazio di lavoro

Ulteriore analogia egrave il sistema odometrico Su ogni robot sono solitamente

posizionati un discreto numero di encoder per il rilevamento della posizione Nei

robot a ruote essi sono posizionati sullrsquoasse delle ruote mentre nei legged essi

sono inseriti nelle articolazioni dove sono posizionati i motori Si possono notare

differenze consistenti a livello di calcoli effettuati ma entrambi forniscono come

risultato la posizione effettivamente raggiunta Di particolare interesse per i

calcoli egrave la sequenza di comandi dati in input al variare di essi varia la postura

finale assunta

Sempre riguardo lrsquoodometria altra caratteristica comune egrave il calcolo

dellrsquoerrore esso viene calcolato in relazione ai valori di feedback dei sensori Si

puograve presentare di due tipologie

Sistemi di locomozione 22

bull sistematico dovuto a caratteristiche proprie meccaniche del robot

bull non sistematico dovuto alle iterazioni con lrsquoambiente circostante

Errori e cause di errori verranno trattati nei capitoli successivi

13 Analisi Trot gait di quadrupedi

Tra gli esseri viventi dotati di zampe presenti in natura[11] la nostra

analisi si concentra su animali che deambulano su 4 arti Essi rappresentano una

classe animale che sfrutta particolari doti fisiche e mentali per regolare la stabilitagrave

del corpo e lrsquoagilitagrave dei movimenti

Vengono presentate di seguito alcuni gait9 di quadrupedi su terreni piani e

lrsquoanalisi dei principali fattori che ne determinano le caratteristiche e le prestazioni

in termini di velocitagrave[12]

Le principali caratteristiche sullo studio di andature sono

bull Periodicitagrave il moto prevede la sequenza ciclica del movimento di

ogni singola zampa (passo)Ogniuna di esse egrave regolata da tre

variabili di giunto ciascuna delle quali segue a sua volta una

traiettoria periodica Complicazioni ulteriori emergono se si

considerano virate o terreni sdrucciolevoli

bull Stabilitagrave caratteristica di maggiore importanza nel caso di

locomozione a zampe essa egrave assicurata quando il baricentro del

robot cade allrsquointerno del poligono di stabilitagrave ovvero quando il

margine di stabilitagrave egrave maggiore di zero Il margine di stabilitagrave

dipende dalla posizione in cui il robot si trova se fermo o in

movimento Se il robot egrave fermo tale margine si calcola come la

distanza piugrave breve dal baricentro al perimetro del poligono di

9 Andatura con passi specifici

Sistemi di locomozione 23

stabilitagrave in qualsiasi direzione durante il moto si considerano solo

le distanze nella direzione del moto (margine di stabilitagrave

longitudinale)

bull Traiettoria della zampa la traiettoria dellrsquoorgano terminale di una

zampa (piedino) si compone di tre fasi principali

bull alzata

bull avanzamento

bull appoggio

la prima ha il compito di sollevare il piede da terra la seconda

permette lrsquoavanzamento della zampa ed infine nella terza il piede

viene riposizionato a terra nella posizione base per reiterare il

procedimento

In relazione al profilo scheletrico di un vertebrato mammifero

generalizzato esso egrave in grado deambulare in diverse andature[13]

Non troppo dissimile dallrsquoarchitettura di cani cavalli o gatti il nostro robot

presenta perograve lrsquoarticolazione della spalla ruotata di 90 gradi rispetto al mammifero

comune questo gli permette di mantenere un notevole grado di stabilitagrave in quanto

incrementa il suo possibile convex hull10 ma ci obbliga a studiare un nuovo tipo

di movimento per il passo base

Inoltre il piede di appoggio risulta essere di notevoli dimensioni rispetto

alla zampa al fine di sopportare ottimamente il peso del corpo sovrastante

In base alla stabilitagrave durante il movimento la andatura di un 4-legged puograve

essere classificata in tre diverse classi principali

bull andatura quasi statica

bull andatura quasi dinamica

bull andatura dinamica

10 poligono che rappresenta la base drsquoappoggio

Sistemi di locomozione 24

131 Studio andatura quasi-statica

Una andatura si dice quasi-statica se il centro di massa della nostra

struttura cade allrsquointerno del poligono di stabilitagrave che si viene a creare

congiungendo i punti di appoggio Con questa tipologia di camminata siamo certi

che il robot assorbiragrave le possibili perturbazioni del moto con un piugrave ampio

margine di stabilitagrave

uesta andatura egrave quella riprodotta in laboratorio sul nostro soggetto le

ragioni che ci hanno portato a questa scelta oltre ai vantaggi precedentemente

citati sono

bull moderata velocitagrave

bull buona risposta in tempo degli attuatori

Per implementare le fasi di camminata abbiamo analizzato ed elaborato il

gait 4-time11 di un mammifero comune essa si basa su quattro movimenti un LF

(di sinistra-anteriore) un RR (di destra-posteriore) una RF (di destra-anteriore)

un LR (di sinistra-posteriore) quindi una ripetizione

In questo movimento si noti che lrsquoequilibrio e il supporto egrave effettuato dal

LR+RF ldquodiagonalerdquo mentre i piedini di RR e di LF sono sospesi [ posizioni 1 2 ]

e dalla diagonale opposta per gli altri 2 piedini [ posizioni 5 6 ]

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

11 Gait 4-time camminata divisa in quattro fasi

Sistemi di locomozione 25

Figura 8 Nei nove diagrammi viene descritta la completa sequenza di camminata

partendo con la zampa sinistra Le posizioni 1 e 2 mostrano la diagonale destra 3 diagonale

destra e anteriore sinistra 4 laterale sinistra 5 e 6 diagonale sinistra 7 diagonale sinistra e

anteriore destra 8 laterale destra 9 ritorno nella posizione di partenza

Questa andatura presenta un tipico movimento sinusoidale del baricentro

del corpo nel piano trasversale

In base alla configurazione del nostro robot esso non presenta una colonna

vertebrale snodabile lrsquoanalisi prodotta ci ha potato alla creazione di una andatura

che non modifica lrsquoasse su cui giace il centro di massa

132 Studio andatura quasi-dinamica

La seconda classe di camminata raggruppa andature per cui la proiezione

del centro di massa cade in alcune fasi del passo sul lato del poligono di stabilitagrave

Sistemi di locomozione 26

In queste situazioni un incorretto posizionamento degli attuatori o una

minima perturbazione potrebbe causare una perdita di stabilitagrave per questo bisogna

intervenire in tempistiche ridotte trovando soluzioni che riducano gli effetti

La velocitagrave che si riesce ad ottenere deriva da un passo di camminata

leggermente piugrave ampio eseguito in un tempo minore di frame12 pur mantenendo

quasi inalterate le fasi di esso

133 Studio andatura dinamica trotto

La classe di andatura dinamica rappresenta invece lrsquoandatura piugrave veloce

presente in natura[14] essa si basa sul concetto di tempo di volo in cui solo due

zampe o addirittura tutto il corpo non tocca il terreno andatura tipica nella corsa

di mammiferiVenendo a mancare il triangolo di appoggio bisogna trovare un

abile compromesso tra inerzia velocitagrave e potenza muscolare al fine di evitare la

perdita di equilibrio e lo slittamento delle zampe sul terreno

12 istanti temporali in cui si attua lrsquoanalisi completa

Sistemi di locomozione 27

Figura 9 Nelle posizioni 1 e 3 vengono mostrate la diagonale destra e sinistra come

supporto al trotto Le posizioni 2 e 4 mostrano il momento di flying trot che egrave raramente

osservabile a causa della velocitagrave dei movimenti Le posizioni 5 e 6 mostrano un passo di

corsa piugrave tranquillo che puograve essere eseguito da un cane stanco o non troppo motivato

Capitolo 2 Stato dellrsquoarte dei four legged robot

Stato dellrsquoarte dei four legged robot 29

21 Panoramica dei Robot quadrupedi esistenti

In questo capitolo verragrave presentata una carrellata dei moderni sviluppi

riguardanti la 4-legged robotics13

Proponiamo i progetti piugrave significativi a cui ci siamo riferiti per lrsquoanalisi e

lo sviluppo della camminata e i robot piugrave moderni che vengono utilizzati come

banchi di prova per progetti di intelligenza artificiale e multi-collaborazione che ci

potranno essere utili per evoluzioni future del nostro ASGARD

211 Collie-1 e Collie-2

Giagrave dalle prime ricerche nellrsquoambito della robotica umanoide la

realizzazione di una camminata naturale egrave stata ampiamente presa in

considerazione Nella seconda metagrave degli anni ottanta abbiamo trovato il primo

utilizzo di DC servos per la realizzazione di prototipi per la camminata dinamica

Collie-1 e la sua evoluzione Collie-2[15] Basandosi sul concetto di camminata

suddivisa come statica e dinamica lo studio ha messo in evidenza come la

camminata dinamica richiede un surplus di energia e una maggior velocitagrave di

esecuzione ponendo particolare interesse ai valori di stabilitagrave velocitagrave massima e

consumo energetico che sono alcuni dei parametri anche da noi presi in

considerazione nel nostro progetto Nello sviluppo di Collie le relazioni tra questi

criteri e i parametri (gait speed period stride length of the leg joint angles etc)

hanno portato alle seguenti deduzioni riguardanti al camminata dinamica

a) Minore egrave il periodo in cui avviene la camminata migliore egrave la stabilitagrave del

quadrupede

Ersquo desiderabile camminare con un lungo periodo e compiendo ampi passi

per riuscire ad accrescere la velocitagrave massima

13 settore della robotica che si occupa di robot a 4 zampe

Stato dellrsquoarte dei four legged robot 30

b) Crsquoegrave un periodo in cui la velocitagrave egrave massima

c) Crsquoegrave un periodo in cui si minimizza il consumo energetico per fornire

velocitagrave

d) Trot gai14t egrave desiderabile quando la prioritagrave egrave in primo piano rispetto al

consumo energetico

Pace gait15 egrave raccomandata quando la prioritagrave energetica egrave al di sopra

della velocitagrave massima

Gli esperimenti per appurare la validitagrave di queste affermazioni sono stati

effettuati con il robot Collie-2 che fisicamente presenta 3 joint16 attorno allrsquoasse di

pitch (beccheggio) e 2 joint attorno allrsquoasse di roll (rollio) per ogni gamba con un

potenziometro montato per ogni gamba e motori DC servos sistemati sui 3 joint

sullrsquoasse trasversale e 1 joint sullrsquoasse sagittale

Figura 10 Collie 2 vista semi

frontale Figura 11 Collie 2 di

fronte

Figura 12 camminata vista

laterale

14 andatura veloce di trotto 15 camminata tranquilla da crocera non veloce 16 giunto

Stato dellrsquoarte dei four legged robot 31

212 Quadrupede MIT

Realizzato al MIT (Massachusset Institute of Technology) negli anni 1984-

1987 [16] egrave composto da un unico grado di libertagrave per zampa a cui si aggiunge un

meccanismo a basso livello di coordinazione del piedino Ersquo stato sviluppato per

esplorare il funzionamento su quatto zampe e le transizioni tra tipologie diverse di

gait quali il trottino (accoppiamento zampe diagonali) pacing (accoppiamento

laterali) bounding (accoppiamento anteriore posteriore) fornendo consistenti

informazioni sulle diverse posture[17]

Figura 13 Immagine laterale camminata

robot dequadrupe del MIT

Figura 14 basato su llo stesso

meccanismo del robot del MIT Scout

prodotto allrsquoumiversitagrave di Monteal

sviluppa ampliamente il concetto di

bounding gait[18]

213 GEO

Iniziata la costruzione del progetto nel 1994 a USC GEO I [19]

presentava due grandi innovazioni una spina dorsale flessibile e zampe

riconfigurabili Queste due caratteristiche permettono al robot di emulare la

camminata di una salamandra cioegrave di far seguire al proprio baricentro un

andamento sinusoidale quando invece una zampa egrave posizionata sotto il corpo il

robot puograve deambulare come un comune mammifero quale ad esempio il cane

Stato dellrsquoarte dei four legged robot 32

Questa particolare possibilitagrave di cambiamento di tipologia di camminata egrave

rimasta nellrsquoevoluzione del modello GEO II che risulta essere molto piugrave leggero

del suo predecessore dotato si sensori di forza nei piedi e possibilitagrave di

interazione con il mondo esterno tramite reti neurali

Figura 15 GEO I nel superamento di un

ostacolo

Figura 16 GEO II in posizione base

214 Quadrupede Kimura lab

Dal Giappone e piugrave precisamente dal laboratorio di Kimura[20]

compaiono i robot piugrave avanzati in grado di camminare su terreni estremi quali

ciottolati erbe sparse o pavimentazioni sconnesse utilizzando sensori di visione I

principali in evoluzione sono Tekken-II azionato da servomotori e pilotato

manuale usando un regolatore radiofonico Futaba Le particolaritagrave di questo robot

sono il giunto della caviglia passivo con il meccanismo molla-smorzatore17 il

posizionamento di un meccanismo della molla intorno al giunto del ginocchio

dellrsquoanca al fine di ridurre il consumo di energia Sul corpo presenta diversi

sensori Tasso-girobussola per 3 ascie e 2 inclinometri per le ascie del rullo e del

passo 1 sensore per il contatto di asse egrave fissato su ogni piedino Della stessa

famiglia adatti perograve a terreni scoscesi e ondulati ricordiamo inoltre Patrush I e

Patrush II rispettivamente degli anni 2000 e 2001

17 principio fisico che attenua le sollecitazioni e incamera energia che puograve essere

successivamente sfruttata

Stato dellrsquoarte dei four legged robot 33

Figura 17 Patrush I vista

semifrontale

Figura 18 Tekken II vista laterale

22 Algoritmi di controllo CPG for four legged robot

Testato successivamente sulle potenzialitagrave di GEO II egrave stato realizzato nel

2002 il modello CPG (Central Pattern Generation)[21] che sostituisce lrsquounitagrave

centrale del controllo del sistema nervoso presente negli animali Esso propone

che lrsquoadattamento di un animale allrsquoambiente circostante puograve essere modellizzato

come un modulo adattativo (AMs Adaptative Modules) che agisce su un sistema

distribuito di oscillazioni chiamate Adaptative Ring Rules (ARRs) che simulano

semplici riflessi Lrsquoutilizzo e la costruzione di questa rete neuronale ha mostrato

come un sistema puograve auto programmarsi attraverso interazioni con lrsquoambiente

Lrsquoadattamento fa emergere spontaneamente alcuni stati discreti come il

movimento del busto la scelta tra un passo corto e la camminata da crociera e le

coordinate per un singolo giunto

Il risultato di questo modello egrave che ha permesso a un quadrupede di

imparare a camminare in pochi minuti

Basandosi su innumerevoli trattati sullo sviluppo degli impulsi del sistema

nervoso dei mammiferi (Bekoff 1985Cohen 1988) Lewis egrave riuscito a riprodurre

una rete che tenta di emulare le fasi standard e principali del comportamento

Stato dellrsquoarte dei four legged robot 34

animale in relazione ad alcuni stimoli esterni e di riuscire a comunicare questi

impulsi nervosi ai relativi attuatori per creare lrsquoazione Tuttora diversi studi sono

ancora in atto per perfezionare questa tecnica introducendo apprendimento per

rinforzo

Si puograve modellizzare il CPG come una rete di unitagrave funzionali chiamate

unit CPGs (uCPGs) Riferendosi alla figura 18 2 uCPGs sono denominate con

Tw+ e Tw- insieme esse producono il coordinamento principale del robot e

giocheranno un ruolo base nellrsquoacquisizione della camminata Alle uCPGs sono

collegati archi che rappresentano il collegamento ai muscoli estensori delle

diverse articolazioni Questi archi rendono possibile quindi il collegamento delle

unitagrave del busto con quelle del ginocchio etc

Lrsquooutput dei muscoli viene trasformato attraverso una funzione di uscita in

comandi di movimento Questi a loro volta sono ricombinati per creare impulsi

compatibili con i servos dellrsquoancae del ginocchio

Sono introdotti nella rete ulteriori parametri che servono per adattare la

rete a diversi robot

Stato dellrsquoarte dei four legged robot 35

Figura 19Organizzazione del sistema di controllo Il sistema di controllo del robot

presenta una rete di uCPG Ogni cerchio presenta un uCPGs Connessionitrasmissione di

informazioni sono visualizzate come freccie Ogni funzione Ψ converte una informazione in

comandi per i motori I comandi dei motori sono combinati insieme per produrre una

sequeza di livelli di posizione per ogni anca e ginocchio Abbreviazioni KFmuscolo flessore

ginocchio KEmuscolo estensore ginocchio HEmuscolo estensore dellrsquoanca HFmuscolo

flessore dellrsquoanca TW+torsione positivo TW-torsione negativo

Per definire meglio il controllo sono stati realizzati schemi che si basano

su controlli di posizione sulla reattivitagrave dei riflessi e sullrsquoadattamento della

torsione al modulo ambiente

Per realizzare lrsquoultimo modello egrave necessario introdurre ARRs cioegrave il

modulo adattativo dellrsquoambiente attraverso un ulteriore unitagrave computazionale

costituita da tre componenti

Stato dellrsquoarte dei four legged robot 36

Figura 20 Lrsquouso di un innato interno modello per lrsquoadattamento di CGPs La figura

mostra i componeti di un AM

Il primo componente egrave il Forward Model il quale usa una efficiente copia

di una uCPGs per predire il feedback sensoriale il secondo il Comparison egrave a tutti

gli effetti un comparatore tra il feedback sensoriale e il feedback atteso il terzo egrave

una regola che utilizza il risultato della comparazione per modulare la uCPGs in

questione

LrsquoARRs genera un segnale di output che viene indirizzato agli attuatori o a

semplici circuiti che seguono per il controllo sensoriale e rimane in attesa di

ricevere un segnale di ritorno proveniente dai sensori Il segnale di output puograve

anche essere emesso nellrsquoambiente come decisone di movimento per eventuali

robot ad esso sottomessi La creazione di movimenti puorsquo cosigrave migliorare

introducendo nuovi modelli di controllo quali adattamento della lunghezza del

busto per il coordinamento delle gambe e fase di aggiustamento

Questi modelli sono stati realizzati su robot che presentano caratteristiche

mostrate nella seguente figura e che possono essere ritrovate in GEO II

Stato dellrsquoarte dei four legged robot 37

Figura 21 Postura dei Principali Rilessi Tre tipi di simmetria sono applicati per la

distribuzione del pesoDiagonal comparazione dei piedi diagonali Anteriore verso posteriore

comparazione dai piedi anteriori ai posteriori e sullo Stesso lato comparazione dei piedi

sulla destra rispetto quelli sulla sinistra Il numero vicino ad ogni piede denota il numero del

piede

La parte per noi piugrave interessante risulta essere la postura dei riflessi statici

I risultati mostrano come viene distribuito il peso del robot sui piedi di appoggio

Inizialmente quando il robot egrave appoggiato completamente al suolo il peso risulta

essere equamente distribuito In altri casi appariranno disturbi causati da carichi

aggiuntivi come posizione del cavo di alimentazione o piugrave semplicemente alzata

della zampa per compiere un passo

Stato dellrsquoarte dei four legged robot 38

Figura 22Postura dei Riflessi Grafico che mostra la distribuzione del peso rulle

zampe del robot

Questo grafo ci rappresenta come la variazione della postura del robot

influenzi i carichi su ciascuna zampa nella nostra analisi ritroveremo un grafico

simile al precedente quando analizzeremo le forze agenti sui motori nel modello

di Newton-Eulero GEO II presenta perograve un vantaggio considerevole durante i

movimenti il robot attua una fase di ldquoaggiustaggiordquo in cui riassesta il busto per

riequilibrare la distribuzione del peso su tutte le zampe non creando scompensi

23 Robocup e Sony Aibo

RoboCup[22] egrave unrsquoiniziativa internazionale di formazione e di ricerca Egrave

un tentativo di promuovere lrsquoAI18 e lrsquoautomatismo intelligente Basati sul concetto

che una squadra di robot giochi a soccer allrsquointerno di ambienti reali o simulati le

tecnologie che vengono coinvolte devono comprendere nei loro progetti i principi

di agenti autonomi collaborazione multi-agente aquisizione di strategie

ragionamento in tempo reale e automatismo

18 Intelligent Agents

Stato dellrsquoarte dei four legged robot 39

Ersquo in RoboCup che si egrave vista la prima squadra fornita di gambe

Largamente utilizzati per la realizzazione di sistemi multiagenti dotati cioegrave di

complessi programmi di intelligenza artificiale sono i famosi Aibo Sony

Figura 23 Robot Aibo Sony durante una partita alla Robocup

Aibo egrave il miglior prodotto della Sony 4-legged robot essa coinvolge le piugrave

moderne tecnologie per concepire un amico completamente autonomo per

accompagnare ed intrattenere lrsquouomo nella vita giornaliera

Il centro di intelligenza artificiale di Aibo egrave il software Mente2 situato su

una memoria stick removibile Esso controlla il suo comportamento le sue abilitagrave

e le relative caratteristiche che possono essere incrementate con un corretto

addestramento da parte dellrsquoutente Aibo infatti implementa al suo interno un

algoritmo di apprendimento per rinforzo

Nella vita giornaliera questo software gli permette di intrattenere e

comunicare con chiunque riconoscendo intelligentemente i volti e le voci dei suoi

padroni

Per le sue particolari proprietagrave quali vedere sentire registrare suoni

oggetti e facce e riflettere una vasta gamma delle emozioni attraverso la relativa

faccia Condur-guidata19 Aibo egrave in grado di familiarizzare con ogni tipo di

ambiente ambiente e trasformarsi in ogni senso in un individuo vero e unico

19 pilotati da software intelligenti diversi led rappresentano espressioni emotive

Stato dellrsquoarte dei four legged robot 40

231 Storia

Ma vediamo come nasce Aibo[23]Le sue radici risalgono agli inizi degli

anni novanta quando gli ambienti tecnologici erano agli albori riguardo la

creazione di applicazioni per lrsquointrattenimento umano Fu Dr Doi il capo dell

Sonyrsquos Digital Creature Lab ad implementare in un unico automa i nuovi

progressi in termini di processori intelligenza artificiale riconoscitori vocali e

tecnologie di visione al fine di creare un robot autonomo

Durante la fase iniziale nel 1992 gli ingegneri della Sony progettarono

alcuni importanti cambiamenti radicali Nei primi anni novanta robot con camere

e ruote erano riprogrammati per ogni attivitagrave o task in cui essi venivano impiegati

I nuovi progetti includevano la capacitagrave di un robot di deambulare su zampe e

lrsquointerazione con programmi di IA capaci di interagire con alcuni organi sensoriali

come il tatto la vista e il suono Solo verso il 1997 il primo prototipo portograve alla

luce gli enormi sforzi di ricerca e sviluppo Dr Doi indirizzograve tutta la sua ricerca

nella costruzione e nel design di un amichevole robot autonomo Il suo primo

prototipo aveva sei gambe ed era il primo passo per la creazione di un robot a

zampe Dopo questo primo rudimentale modello il team Sony studiograve un design

innovativo e analizzograve ciograve che il robot poteva o non poteva fare per incrementare le

potenzialitagrave celebrali ed espandere le funzionalitagrave hardware e software

Lrsquooriginale modello Aibo ERS-110 fu presentato nel 1999 e rapidamente

si diffuse in tutto il mondo con lo slogan di essere un grande compagno di giochi e

intrattenimento entrando anche a far parte del guinnes dei Primati Lrsquo Europa vide

la sua apparizione il 26 Ottobre 1999 Solo un mese dopo dallrsquoenorme successo

riscontrato fu presentato un ulteriore modello ERS-111 per il target mondiale

Nellrsquoottobre del 2000 venne alla luce la seconda generazione di Aibo ERS-

210 che inglobava miglioramenti di mobilitagrave sensori di tatto led facciali

programmi di risposta sensoriale al mondo esterno tramite espressioni visive

funzioni di memorizzazione delle parole e riconoscitore vocale[24]

Stato dellrsquoarte dei four legged robot 41

I modelli LATTE e MACARON (ERS-311 a ERS-312) entrarono a far parte

della famiglia nel Settembre 2001 i loro nomignoli li rendono dolci e adorabili da

coccolare includendo comunque tutte le caratteristiche dei loro predecessori

Lrsquo8 Novembre 2001 egrave nato lrsquoultimo membro della famiglia Sony che

include le piugrave sofisticate performance e capacitagrave Il modello ERS-220 dotato di un

look futuristico presenta al suo interno una moltitudine di azioni altamente

avanzate e un alto numero di luci e sensori che lo fanno diventare il modello piugrave

sofisticato di robot quadrupede sul mercato[25]

Stato dellrsquoarte dei four legged robot 42

Sviluppo dei modelli Aibo dai primi anni novanta a oggi

Robot Sony Aibo modello a sei zampe

Robot Sony Aibo ERS-110

Robot Sony Aibo ERS-111

Robot Sony Aibo ERS-210

Robot Sony Aibo ERS-31x

Robot Sony Aibo ERS-220

Stato dellrsquoarte dei four legged robot 43

Figura 24 Zoom sulle caratteristiche presenti negli ultimi ritrovati

Specifikace

bull Head touch sensor bull Color Camera bull Stereo microphone bull Speaker bull Pause button bull Back sensor bull Lithium ion battery pack bull Tail sensor bull Memory Stick slot for AIBO bull PC card slot ndash bull slot pro PCMCIAPC-kartu

CPU 64-bitovy RISC procesor memory 32MB SDRAM weight - 15 kg ( baterie a Memory Stick (approx33lb)) dimension 152x266x274mm

Stato dellrsquoarte dei four legged robot 44

232 Descrizione dei sensori di Aibo

Il robot egrave stato progettato in modo da assomigliare ad un vero e proprio

essere vivente Esso egrave quindi dotato di svariati sensori mediante i quali puograve

comunicare con lrsquoambiente e reagire agli stimoli esterni[26]

Il sistema di controllo di Aibo utilizza i microprocessori per controllare

lrsquoinput dai dispositivi quali

bull Macchina fotografica del video a colori CCD20

bull microfono stereo

bull sensore termometrico

bull sensore infrarosso

bull sensore giroscopico di accelerazione

2321 Visione della macchina

Aibo ha una macchina fotografica digitale a colori montata nella sezione

ldquotestardquo I dati di immagine da questa macchina fotografica sono vitali nella

generazione dellrsquoesperienza interattiva tra il robot e il mondo Il video input egrave

analizzato per identificare lrsquooggetto o ldquoun punto caldordquo i motori robot spostano la

testa per dare lrsquoapparenza che il Aibo stia osservando Il robot inoltre egrave fornito di

un sensore infrarosso di distanza per rilevare gli ostacoli e per evitare di collidere

con essi

20 Charge Coupled Device attraverso una piastrina di silicio dotata di sensori le immagini

vengono digitalizzate in relazione a posizione colore e intensitagrave

Stato dellrsquoarte dei four legged robot 45

Figura 25 CCD camera a colori

Figura 26 Microfoni montati sugli assi

2322 Riconoscimento audio

Aibo egrave dotato di un accoppiamento di microfoni uno da ogni lato della

calotta cranica Questi generano unrsquoimmagine stereo del suono ricevuto che aiuta

nel localizzare la fonte di emissione Ersquo presente un regolatore di distanza per

permettere al robot di porre limiti per frasi da riconosce come ordini

2323 Tatto

Il rilievo sensibile al tocco sulla parte superiore della testa del Aibo egrave un

altro meccanismo attraverso cui riceveragrave input sensoriali In base a come questo

sensore egrave toccato un Aibo riceve i dati che registrano le risposte positive o

negative rispetto ldquoal suo comportamento precedenterdquo imitando le dimostrazioni

affetto o rimprovero

Stato dellrsquoarte dei four legged robot 46

Figura 27 Il bottone blu egrave uno switch per il sensore di pressione

2324 Movimento e sviluppo

Molti dei movimenti del Aibo sono simili a quelli di un animale domestico

un cane o un gatto Un Aibo accede e fa funzionare algoritmi di movimento che

dettano il moto delle relative membra controllando i motori siti nei piedini nella

testa e nella coda In modo indipendente e autonomo il robot si muove attraverso

parecchie fasi per un periodo di tempo Quando ldquosupportatordquo dal suono (comandi

o musica) riesce ad intraprendere movimenti a lui noti e ad imparare nuove

posture piugrave specializzate come sottoposto ad un vero e proprio addestramento

Figura 28 Particolare coda

Figura 29 Sensori del piedino

Capitolo 3 Architettura del robot ASGARD

Architettura del robot ASGARD 48

31 Configurazione del robot quadrupede

Analizziamo ora le caratteristiche del quadrupede realizzato presso lrsquoAir

Lab21 del Politecnico di Milano Nei paragrafi che seguono verranno descritte le

sue caratteristiche implementative che ne hanno permesso la realizzazione e il

controllo

Il progetto egrave stato avviato di recente di conseguenza il robot presenta

ancora notevoli problematiche di stabilitagrave e attuazione tramite servo attuatori

Hitec

311 Struttura Meccanica

La struttura di ASGARD egrave composta da parti ricavate da lastre di

policarbonato di cui presenteremo le caratteristiche nel paragrafo seguente e

incollate con speciale solvente

Il progetto della struttura di Marco Piralli [27] ha permesso al nostro robot

di avere una struttura simile a diversi esseri naturali

Figura 30 Progetto Robot completo di Pialli (sinistra) e dettaglio dellrsquoarticolazione (destra)

21 Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano sede

Leonardo sito in Lambrate

Architettura del robot ASGARD 49

Esso egrave dotato di 12 gradi di libertagrave tre per ogni zampa simili a quelli di

Aibo eccetto la spalla Questi gradi di libertagrave ci permettono di far compiere al

robot movimenti su tutti e tre gli assi La spalla in particolare ci permette tutti i

movimenti nel piano sagittale (detto anche piano laterale movimento fronte-retro)

Mentre le altre due articolazioni permettono movimenti nel piano frontale

(movimento lato-lato) e in quello trasversale

Questa serie di attuazioni da la possibilitagrave al robot di essere indipendente

nel movimento di ogni singola zampa e un ulteriore grado passivo nella zampa

permette di affrontare le differenti tipologie di terreno

Il collegamento tra attuatori e struttura risulta essere diretta senza cioegrave

lrsquoausili di tendini il rotore del motore egrave direttamente connesso alla articolazione

studiata per alloggiare il motore al suo interno

Figura 31 Particolari sulle locazioni e i sostegni degli attuatori nel giunto di

spalla(sinista) e ginocchio caviglia (destra)

Architettura del robot ASGARD 50

Giunto 9Giunto 12

Giunto 3

Giunto 6

Giunto 1

Giunto 2 Giunto 4

Giunto 5

Giunto 7

Giunto 8 Giunto 11 Giunto 10

Figura 32 Posizionamento dei giunti nel robot reale

312 Attuatori

Come illustrato in Figura 32 gli attuatori necessari al movimento di

ASGARD devono risultare leggeri e disposti in modo da non intralciare gli

eventuali movimenti I singoli attuatori sono costituiti da un motore servo da una

molla torsionale e da uno smorzatore senza essere perograve dotato di encoder

incrementale Con questo sistema non egrave possibile realizzare un preciso controllo

di posizione istante per istante ma egrave possibile ottenere una rigidezza di giunto non

infinita

I motori da noi utilizzati sono da 44 Kg bull cm HITEC HS 475HB Standar

Delux[28] abitualmente utilizzati in ambito di modellismo Le cui caratteristiche

sono qui sotto riportate

Architettura del robot ASGARD 51

Caratteristiche principali HS457 HB

Control system Operatine voltage range Operatine speed Stall torque Idle current Running current Stall current Dimensions Weight

+Pulse width control 1500usec neutral 48 V to 60 V 023 sec60(load) 018 sec60(no load) 44 Kg cm 55 Kg cm 74 mA (stopped) 77 mA(no load) 180 mA60 (load) 160 mA60(no load) 900 mA 388x198x36 mm 40 g

Figura 33 Attuatore HS 475 HB visto in sezione (sinistra) e come si presenta sul

nostro robot (destra)

Architettura del robot ASGARD 52

313 Materiale Policarbonato

Per la realizzazione del robot egrave stato scelto un materiale innovativo

resistente agli urti e alla trazione che puograve in questo modo resistere alle

sollecitazioni esterne e alle vibrazioni causate dalla camminata su terreni aspri

Oltre le potenziali caratteristiche di resistenza ha la dote di essere

estremamente leggero e di riuscire ad assemblarsi tramite apposito solvente

Questo permette alla struttura chimica di una superficie di scomporsi e di legarsi

in modo stabile alla struttura di una ulteriore lastra ricreando una struttura

compatta e indissaldabile

Proprietagrave policarbonato[29]

Carico limite di snervamento Nmmsup2 gt60

Resistenza alla rottura Nmmsup2 gt70

Allungamento a snervamento 6 hellip 8

Allungamento a rottura lt100

Modulo elastico Nmmsup2 2300

PROPRIETA MECCANICHE

Resistenza allrsquourto IZOD con intaglio Jm 700

Peso specifico gcmsup3 120

Indice di rifrazione 159

Assorbimento idrico (24h - 23degC) per immersione

036 PROPRIETA

FISICHE

Permeabilitagrave al vapore drsquoacqua (spessore 01m 24h)

gmsup3 15

Temperatura di resistenza al calore vicat VSTB

degC 145hellip150

Espansione termica lineare 1degC 67 X 10

PROPRIETA TERMICHE

Conducibilitagrave termica WmdegC 021

Architettura del robot ASGARD 53

32 ASGRAD in numeri

Le caratteristiche fisiche di Asgard si possono cosigrave riassumere

Busto

Larghezza 1210 cm

Lunghezza 2290 cm

Zampe

Link num 1 573 cm

Link num 2 675 cm

Link num 3 735 cm

Piede 350 x 415 cm

Spessore 4 mm

Peso

Corpo in policarbonato 660 g

Attuatori 480 g

Scheda Pic 20 g

Peso Complessivo 1180 Kg

Angoli dei giunti nella posizione di riposo

Giunto spalla 0deg

Giunto ginocchio 45deg

Giunto caviglia 45deg

Architettura del robot ASGARD 54

735 573 675

2290 122

121

Figura 34 Specifiche di ASGARD vista dallrsquoalto

1212 cm

Figura 35 Vista frontale di ASGARD

Architettura del robot ASGARD 55

33 Hardware

Attualmente non esiste un vero e proprio controllo on-board in grado di

generare traiettorie ma una PIC [30] sita su di esso il cui scopo egrave quello di

interpretare i segnali di comando in uscita dal nostro codice Matlab e di

trasformarli in impulsi (PWM) da inviare ai motori

Figura 36 Sistema di controllo dei motori Nellrsquoambiente Matlab sono stati inseriti dei comandi manuali di posizionamento il programma gestisce la generazione delle traiettorie e i comandi vengono inviati alla PIC Questa si occupa di generare e inviare ai motori gli impulsi che ne garantiscono il posizionamento

Unitagrave di controllo

Alimentazione

Porta seriale

Max 232

PIC

18F4x28 40L DIP

A T T U A T O R I

Figura 37 Schema a blocchi della PIC di controllo

Architettura del robot ASGARD 56

34 Software

La creazione del nostro algoritmo rappresenta la prima implementazione di

codice in merito al progetto del robot quadrupede in esame

Per il collegamento diretto e il pilotaggio di motori servo tramite la porta

seriale abbiamo usufruito di un codice elaborato precedentemente e implementato

sulla PIC

Questo programma egrave costituito da cicli di attesa da parte della PIC stessa

per la ricezione dei comandi e da un canale di ritorno in cui essa comunica al Pc

la corretta trasmissione dellrsquoimpulso

Una miglioria sullrsquoanalisi implementativi ci ha permesso di spingere la

velocitagrave di comunicazione fino a 14400 bitsec

Il nostro programma di analisi e simulazione dei passi analizza le

caratteristiche fisiche di movimento del nostro robot generando i movimenti

opportuni che gli permetteranno di deambulare stabilmente nellrsquoambiente

Un ulteriore ricerca ci ha portato a realizzare una funzione di calcolo delle

traiettorie in ambiente noto che dagrave la possibilitagrave a ASGARD di decidere in real-

time il passo da intraprendere nel singolo istante

Questo puograve essere considerato il primo passo verso un algoritmo di

Intelligenza Artificiale per il nostro robot

Il sistema di controllo dellrsquoandatura di un robot con zampe si puograve cosigrave

scomporre in tre livelli distinti

Architettura del robot ASGARD 57

SUPERVISORE

bull Traiettoria bull Parametri dellrsquoandatura

COORDINATORE bull Controllo della stabilitagrave bull Traiettoria dellrsquoestremitagrave delle

zampe

LIVELLO DELLE ZAMPE bull Cinematica inversa bull Controllo dinamico bull Comandi agli attuatori

35 Stato Attuale

Allo stato attuale il robot egrave stato completato e dotato di sensore di

pressione posto sotto la zampa anteriore sinistra Le tempistiche di risposta della

scheda PIC presentano non poche difficoltagrave a carattere di controllo I motori da

noi utilizzati ricevono in input solo il valore della posizione ed egrave pertanto

impossibile effettuare controlli su velocitagrave ed accelerazione

Ersquo risultato comunque possibile dopo una attenta analisi di stabilitagrave la

creazione di un ciclo di passi che ha permesso ad ASGARD di compiere la sua

prima camminata

Capitolo 4 Modellizzazione cinematica e dinamica

Modellizzazione cinematica e dinamica 59

41 Convenzioni e simbologia utilizzata

Data la natura del robot saragrave essenziale fornirne una corretta analisi

matematica e robotica per mantenere una certa coerenza e chiarezza verranno

utilizzate le seguenti convenzioni

bull Il pedice indica il numero della grandezza a cui si sta facendo

riferimento indica ad esempio lrsquoelemento n di A Nel caso vi

siano presenti due pedici si fa riferimento ad una grandezza che va

dal primo pedice al secondo indica quindi un vettore da i a k

nA

kiA

bull Lrsquoapice egrave utilizzato per indicare il sistema di riferimento rispetto al

quale la grandezza egrave riferita indica quindi lrsquoelemento n della

grandezza A nel sistema di riferimento i

inA

bull Il simbolo times indica il prodotto vettoriale

bull Il simbolo bull indica il prodotto scalare mentre la T posta come apice

egrave la trasposizione

Nella Tabella 1 vengono mostrate le grandezze fisiche utilizzate e la

simbologia per rappresentarle[31]

Ti

iR 1minus Matrice di rotazione dalla terna i-1 alla terna i (premoltiplicazione)

iiR 1+ Matrice di rotazione dalla terna i+1 alla terna i (postmoltiplicazione)

im Massa del braccio

iir 1minus Vettore dalla terna i-1 alla terna i

iI Tensore drsquoinerzia del braccio

iϑ Posizione angolare del giunto i

iϑamp Velocitagrave angolare del giunto i

Modellizzazione cinematica e dinamica 60

iϑampamp Accelerazione angolare del giunto i

iω Velocitagrave angolare del braccio

iωamp Accelerazione angolare del braccio

ipampamp Accelerazione lineare terna i

iCpampamp Accelerazione lineare baricentro iC

if Forza esercitata sul giunto i

imicro Momento esercitato sul giunto i

iτ Forza generalizzata al giunto i

Tabella 1 Rappresentazione delle grandezze fisiche utilizzate

42 Sistemi di coordinate e trasformazioni

Qualunque punto dello spazio puograve essere rappresentato da coordinate

omogenee che non sono altro che le coordinate cartesiane del punto a meno di un

fattore di proporzionalitagrave

⎥⎥⎥⎥

⎢⎢⎢⎢

=rarr⎥⎥⎥

⎢⎢⎢

⎡=

wzyx

pZYX

p dove wxX =

wyY =

wzZ =

In coordinate omogenee ci sono quattro punti particolari

versore direzione dellrsquoasse X versore direzione dellrsquoasse Y ir

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0001

jr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0010

versore direzione dellrsquoasse Z Origine degli assi kr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0100

Or

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1000

Modellizzazione cinematica e dinamica 61

Questi quattro punti caratterizzano il sistema di riferimento Un sistema di

riferimento puograve essere posto in ogni punto dello spazio per noi saragrave essenziale

porne uno in ogni giunto dei robot[32] Inserito un sistema di riferimento il

passaggio da un sistema al successivo avviene tramite una matrice di

trasformazione che al suo interno ne descrive la rotazione e traslazione

La rotazione pura rispetto ad un sistema fisso di coordinate viene

rappresentata tramite una matrice quadrata 33times Ad esempio una rotazione di un

angolo α attorno allrsquoasse z viene descritta con

( )⎥⎥⎥

⎢⎢⎢

⎡ minus=

1000cossin0cos

αααα

αsen

Rz

La matrice A di rototraslazione egrave rappresentata in generale come

composizione degli spostamenti rotatorio e traslatorio

( ) ( )

[ ] ⎥⎦

⎤⎢⎣

⎡ timestimes=

10001333 TraslRot

A

La matrice egrave costituita da una parte di rotazione una di traslazione lungo i

tre assi e una riga i cui valori indicano la ldquoscalardquo e la ldquoprospettivardquo (non utilizzati

in questo ambito) In analisi piugrave approfondita

Modellizzazione cinematica e dinamica 62

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

A

possiamo vedere come le prime tre colonne rappresentano i versori del

sistema di partenza mentre lrsquoultime rappresenta la posizione di arrivo in

coordinate omogenee dellrsquoorigine in cui egrave posizionato il sistema di riferimento

43 Cinemetica diretta

In questo ambito ci proponiamo di illustrare i modelli matematici che ci

hanno permesso di analizzare ASGARD Partiamo da alcune definizione basilari

Un robot manipolatore egrave una catena cinematica sequenziale22 aperta23 o

catena parallela composta da corpi rigidi (link) uniti da giunti

Lrsquointeresse principale egrave rivolto alla mano o end-effector del robot che

possa raggiungere ogni posizione con qualunque orientamento senza bisogno di

resettare fisicamente il sistema

La cinematica studia il legame tra le variabili indipendenti dei giunti e le

posizioni e orientamento cartesiane raggiunte dal robot Questo egrave chiaramente un

problema cruciale per le applicazioni Il problema si suddivide in due parti

cinematica diretta = passaggi dalle variabili di giunto24 alle variabili

cartesiane25

cinematica inversa = passaggio dalle variabili cartesiane alle variabili di

giunto

22 sequenziale significa che non ci sono diramazioni nella catena 23 aperta una delle due estremitagrave (mano=end-effector) egrave libera 24 valori degli angoli di ogni singolo giunto 25 valore della posizione espresso in coordinate nel di riferimento considerato

Modellizzazione cinematica e dinamica 63

La dinamica studia le equazioni che caratterizzano il moto del robot intese

come velocitagrave accelerazioni tenendo conto non solo delle posizioni iniziali e

finali ma di tutte le caratteristiche del moto la nostra analisi si egrave concentrata sulle

forze e le torsioni agenti sui motori studiate con il metodo di Newton-Eulero

Il calcolo delle traiettorie consiste nel determinare un modo per fornire al

controllore del robot lrsquoinsieme dei punti (variabili di giunto) per spostarsi da una

posizione allrsquoaltra con opportune velocitagrave e accelerazioni

Il problema del controllo consiste invece nel trovare modalitagrave efficienti per

far compiere al robot il piugrave fedelmente possibile le traiettorie determinate

431 Definizione dei parametri di Denavit Hartemberg

Elaborare i valori delle variabili di giunto fino a trovare i valori delle

coordinate cartesiane riferite alla posizione dellrsquoend-effector non egrave di facile

carico computazionale soprattutto quando il robot risulta complesso26

Sviluppare metodi a doc ottimi per la cinematica inversa risultano

scomodi e onerosi se riferiti alla cinematica diretta

Un metodo generale e applicabile a qualsiasi tipologia di manipolatore egrave

stato sviluppato negli anni cinquanta da Denavit e Hartenberg (D-H)

Esso consiste nel fissare sistemi di riferimento sui giunti per poterne

determinare i parametri caratteristici Tramite lrsquouso di matrici di rototraslazione

dei sistemi di riferimento egrave possibile trovare un legame tra i parametri dei giunti e

la posizione e lrsquoorientamento dellrsquoend-effector Con questa scelta ogni singola

trasformazione da un sistema di riferimento al successivo saragrave descritta da una

matrice definita da quattro parametri lrsquoangolo del giuntonnA 1minus ϑ lrsquoangolo di twist

α e le due distanze d e l

Identificata la struttura giuntilink del robot egrave necessario fissare i sistemi di

riferimento nel seguente modo

26 complesso con piugrave di due gradi di libertagrave

Modellizzazione cinematica e dinamica 64

bull Scegliere lrsquoasse giacente lrsquoungo lrsquoasse del giunto i+1 iz

bull Individuare allrsquointersezione dellrsquoasse con la normale comune

agli assi e con

iO iz

1minusiz iz iOprime si indica lrsquointersezione della normale

comune con 1minusiz

bull Si assume lrsquoasse diretto lungo la normale comune agli assi

e con verso positivo dal giunto i al giunto i+1

ix 1minusiz

iz

bull Si sceglie lrsquoasse in modo tale da completare una terna levogira iy

Figura 38 Parametri cinematici di Denavit-Hartenberg

Fissate le terne solidali si ha che

ia = distanza da a iO iOprime

id = coordinata su di 1minusiz iOprime

iα = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

ix 1minusiz iz

iϑ = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

1minusiz 1minusix ix

Modellizzazione cinematica e dinamica 65

Nella nostra analisi essendo tutti giunti rotoidali lrsquounica variabile risulta

essere iϑ indicante la posizione in gradiradianti del giunto Nello sviluppo della

parte grafica per caratteristiche proprie del tool utilizzato sono stati introdotti

ulteriori due giunti traslazionali che nellrsquoanalisi non vengono perograve presi in

considerazione come variabili

La matrice di trasformazione complessiva viene costruita nel modo

seguente

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡minus

minus

=minus

1000cos0

coscoscoscoscoscos

1

iii

iiiiiii

iiiiiii

ii dsen

senasensenasensensen

Aαα

ϑαϑαϑϑϑαϑαϑϑ

432 Metodo di assegnamento secondo D-H

Per ricavare velocemente le matrici di trasformazione secondo la

convenzione di D-H si utilizza la seguente procedura operativa

1 Individuare e numerare consecutivamente gli assi dei giunti

assegnare rispettivamente le direzioni agli assi hellip 0z 1minusnz

2 Fissare la terna base posizionandone lrsquoorigine sullrsquoasse gli assi

e sono scelti in maniera tale da ottenere una terna levogira

0z

0x 0y

Eseguire i passi da 3 a 5 per i = 1 hellip n

3 Individuare lrsquoorigine allrsquointersezione di con la normale comune agli assi e Se gli assi e sono paralleli posizionare in modo da annullare

iO iz

1minusiz iz 1minusiz iz

iO id4 Fissare lrsquoasse diretto lungo la normale comune agli assi e

con verso positivo dal giunto i al giunto i+1 ix 1minusiz

iz5 Fissare lrsquoasse in modo da ottenere una terna levogira iy

Per completare

Modellizzazione cinematica e dinamica 66

1 Fissare la terna n allineando lungo la direzione di nz 1minusnz

2 Costruire per i = 1 hellip n la tabella dei parametri ia id iα iϑ

3 Calcolare sulla base dei parametri di cui al punto 7 le matrici di

trasformazione omogenea ( )iii qA 1minus per i = 1 hellip n

La posizione e lrsquoorientamento di un qualsiasi giunto della catena rispetto il

sistema base egrave ora calcolabile premoltiplicando i valori nel sistema corrente per

tutte le matrici di trasformazione precedenti a tale sistema

11

121

010

0 minusminussdotsdotsdot== n

nnn AAAAT

In ASGARD si egrave attuata una doppia analisi

la prima consiste nellrsquoalzata del piede e il suo riposizionamento nelle

coordinate desiderate in questo caso lrsquoorigine del robot risulta essere solidale con

il baricentro del corpo e lrsquoend-effector risulta coincidere con la zampa mobile

Figura 39 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nel baricentro e end-effector coincidente con la zampa mobile

Modellizzazione cinematica e dinamica 67

I parametri di D-H calcolati risultano essere

link ϑ α a d

1 deg45 0 1l 0

2 2ϑ deg90 2l 0

3 3ϑ 0 3l 0

4 0 4l 0 4ϑ

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

1111

1111

010

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdot

=

10000010

00

2222

2222

121

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

3333

3333

232

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

44441

4444

343

SlCSClSC

A

e la matrice T contenente i valori in coordinate cartesiane della posizione

della zampa egrave calcolata come 3

432

321

210

1004 AAAAAT sdotsdotsdot==

la seconda analisi consiste nellrsquoavanzamento del corpo non essendo il

nostro robot dotato di uno scheletro mobile e flessibile durante la camminata si ha

la necessitagrave di spostare il baricentro sfruttando lrsquoattrito delle zampe con il terreno

In questa situazione le zampe puntate a terra risultano essere lrsquoorigine e il

baricentro della nostra struttura egrave la parte terminale libera

Modellizzazione cinematica e dinamica 68

Figura 40 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nella zampa di appoggio e end-effector coincidente con il baricentro

In questo caso i parametri di D-H subiscono la seguente modifica

link ϑ α a d

1 1ϑ degminus 90 0 0 2 2ϑ 0 2l 0 3 3ϑ degminus 90 3l 0 4 0 0 4l 0

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

11

11

010

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ minus

=

100001000000

22

22

121

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

33

33

232

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000010000100001

343A

La matrice T per il calcolo della posizione finale non subisce invece

modifiche nella sua formula rimane invariata 343

232

121

010

0 AAAAAT n sdotsdotsdot==

Modellizzazione cinematica e dinamica 69

44 Cinematica inversa

Data una posizione e un orientamento nello spazio cartesiano egrave possibile

trovare una configurazione del nostro manipolatore affincheacute essa possa essere

raggiunta Questo egrave il problema di cinematica inverso

Nel calcolo di tale problema non egrave garantita neacute lrsquoesistenza neacute lrsquounicitagrave

della soluzione cercata La posizione se appartenente allo spazio di destrezza del

manipolatore (spazio in cui egrave garantita lrsquoesistenza della soluzione) non egrave detto che

possa essere raggiunta con unrsquounica sequenza di variabili di giunto

Metodi di analisi ammissibili per il nostro robot risultano essere il metodo

di Paul[33] e quello geometrico non essendo rispettati i vincoli per il metodo di

Pieper (tre giunti rotoidali consecutivi con assi paralleli)

Il metodo di Paul consente di determinare le soluzioni mediante

premoltiplicazioni o postmoltiplicazioni con matrici di trasformazione ortogonali

egrave un metodo euristico per la ricerca di soluzioni in forma chiusa

Lrsquoalgoritmo egrave il seguente

1 Uguagliare la matrice di trasformazione generale T espressa in

termini di variabili cartesiane alla matrice di trasformazione del

manipolatore espressa in termini di variabili di giunto

2 Cercare nella seconda matrice

bull elementi che contengono una sola variabile di giunto

bull coppie di elementi che danno unrsquoespressione in una sola

variabile di giunto quando vengono divisi tra loro

bull elementi o combinazioni di elementi che possono essere

semplificati usando identitagrave trigonometriche

3 Quando si sono identificati questi elementi li si eguagliano ai

corrispondenti elementi della matrice in variabili cartesiane

ottenendo unrsquoequazione la cui soluzione permette di trovare un

Modellizzazione cinematica e dinamica 70

legame fra una variabile di giunto ed elementi della matrice di

trasformazione generale

4 Se non si sono identificati elementi che soddisfano le condizioni al

passo 2 si premoltiplicano entrambi i membri dellrsquoequazione

matriciale per lrsquoinversa della matrice A del primo link si opera

secondo il passo 2 Si itera il procedimento per tutti i link

5 Non sempre egrave possibile trovare elementi che rispettano le

condizioni imposte e riuscire a trovare una soluzione valida

Nella nostra analisi questo metodo egrave stato valido e molto veloce per

trovare il valore del primo angolo spalla ma risulta svantaggioso nel calcolo dei

successivi angoli in cui non si riuscivano a trovare equazioni semplici

=

⎥⎥⎥⎥

⎢⎢⎢⎢

+minusminusminusminus++minusminusminusminusminus++minusminusminusminus

=

10000 2232332332323232

11212321332131321321321321

11212321332131321321321321

SlSClCSlCCSSSCSSSlCSlSSSlCCSlCSSSCCSCSSCCSClCClSSClCCClSCSCSCCSSCCCC

T

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

da cui si ricava

( )( ) 1

1

1223233231

1223233231

CS

lClSSlCClClClSSlCClS

pp

x

y =++minus++minus

= quindi ⎟⎟⎠

⎞⎜⎜⎝

⎛=

x

y

pp

a tan1ϑ

Ersquo stato quindi decisivo per il riscontro del secondo e del terzo angolo

rispettivamente ginocchio e caviglia un approccio geometrico a doc

In questa tipologia di studio di rilevante importanza egrave stata lrsquoestrapolazione

delle coordinate dellrsquoend-effector e la traslazione dellrsquoorigine nel ginocchio al fine

di isolare due piani del moto per ridurre lrsquoanalisi di una dimensione

Modellizzazione cinematica e dinamica 71

Il calcolo della cinematica inversa per un manipolatore a due link risulta

poi di basso carico computazionale applicando regole di trigonometria basilari

Figura 41 Calcolo cinematica inversa attraverso metodo geometrico su un robot

planare a 2gradi di libertagrave

Conoscendo la posizione raggiunta

( )21211 coscos ϑϑϑ ++= llx ( )21211 ϑϑϑ ++= senlsenly

Si applica il teorema di Pitagora nel triangolo indicato

( ) ( ) =sdot+sdotsdotsdot+sdot+=+sdot+=+ 22

22221

22

22

21

222

2221

22 cos2coscos ϑϑϑϑϑ senlllllsenlllyx 221

22

21 cos2 ϑsdotsdotsdot++= llll

E da esso si ricava

21

22

21

22

2 2)(cos

llllyx

sdotsdotminusminus+

=ϑ e quindi ⎥⎦

⎤⎢⎣

⎡sdotsdot

minusminus+=

21

22

21

22

2 2)(

cosll

llyxaϑ

Come si era previsto porta a due soluzioni gomito alto o bassoPer trovare

lrsquoaltro angolo si osserva cha al posto αϑϑ +=∆ 1 si ha

( )xy

=∆ϑtan ( )221

22

costan

ϑϑ

αsdot+

=llsenl

quindi

⎟⎟⎠

⎞⎜⎜⎝

⎛sdot+

minus⎟⎠⎞

⎜⎝⎛= minusminus

221

22111 cos

tantanϑ

ϑϑ

llsenl

xy

Modellizzazione cinematica e dinamica 72

441 Metodo gradiente

Abbiamo utilizzato questo metodo alternativo sperimentale in

concomitanza con il metodo geometrico valutandone successivamente le sue

potenzialitagrave per possibili applicazioni future Esso attraverso semplici calcoli

matematici ci porta al valore dei successivi due giunti della zampa

Figura 42 Baccio a due link

Denomineremo

a angolo del primo giunto

b angolo del secondo giunto

obiettivo stella rossa

errore vettore che punta lrsquoobiettivo

Spostiamo il braccio del robot intorno alla base cambiando gli angoli a e b

Possiamo tracciare un grafico di questo comportamento[34]

Figura 43 Immagine della rappresentazione del gradiente

Modellizzazione cinematica e dinamica 73

Lrsquoasse x rappresenta langolo a mentre lrsquoasse y rappresenta langolo b Lrsquoorigine

egrave nel cento Denomineremo lo spazio di tutti gli orientamenti possibili del braccio

del robot lo spazio di configurazione

Ogni punto sul quadrato contiene una tonalitagrave di grigio che rappresenta la

distanza fra lrsquoend-effector e lobiettivo Le tonalitagrave piugrave chiare sono distanze piugrave

grandi mentre il nero rappresenta zone di avvicinamento allrsquoobiettivo Ci sono

due posti in cui la distanza egrave uguale zero rappresentanti le due configurazioni

(gomito alto e basso) in cui il braccio puograve toccare lobiettivo

Dovrebbe essere evidente arrivare al target significa trovare le parti piugrave

nere del grafico Questi punti bassi sono conosciuti come minimi

4411 Gradient following

Questo metodo risulta essere di grande utilizzo per riuscire a trovari i

minimi in uno spazio bidimensionale

Per trovare i punti piugrave bassi sul grafico si deve semplicemente seguire

punti che portano lrsquoend effector ad una distanza minore dal target

Figura 44 Immagine di esempio

Figura 45 Gafico del Gradiente di esempio

Si guardi questo esempio Figura 44 Lobiettivo egrave la stella rossa In questa

posizioneun movimento del giunto di rotazione a sposteragrave la mano nel senso della

freccia a ed un movimento di b sposteragrave lrsquoend-effector nel senso della freccia b

Modellizzazione cinematica e dinamica 74

Per raggiungere lrsquoobiettivo desideriamo spostare la mano nel senso della freccia t

Spostando solo il giunto A o solo B non otterremo grandi risultati ma serviragrave un

movimento complessivo Ora guardiamo questo in termini di grafico (Figura 45)

Cominciando ad una configurazione casuale del braccio (start) possiamo

guardare i vettori a e b e ruotiamo ogni giunto un po in proporzione a quanto

aiuta per ottenere una migliore posizione rispetto allrsquoobiettivo Si puograve pensare a

questo come esaminare la pendenza locale del grafico Ci si chiede qual egrave il

movimento che li conduce il piugrave velocemente in discesa ci si sposta in quel senso

Si continua a ciclare questo fino ad arrivare ad una distanza dal nostro obiettivo

che concorda con lrsquoapprossimazione da noi desiderata

Vantaggi di questo metodo sono lrsquoapplicazione in tutte le problematiche

con un numero elevato di link Il tempo computazionale non risulta essere oneroso

in quanto ci si riconduce a semplici operazioni matematiche che Matlab riesce ad

eseguire in pochissimi istanti nonostante lrsquoelevato numero di iterazioni

4412 Faster gradient following

Esso egrave unottimizzazione del metodo gradient following che accelera

letteralmente il processo[34] Precedentemente ad ogni ripetizione la pendenza egrave

stata sottratta semplicemente dalla posizione nello spazio di configurazione

spostando la struttura piugrave vicino al minimo Questa volta sottrarremo la pendenza

dalla velocitagrave a cui ci muoviamo attraverso lo spazio di configurazione

Otteniamo come risultato un calcolo molto piugrave rapido in termini di

iterazioni che si riducono fino al 60-75 rispetto al precedente mantenedo

risultati ottimi in base anche allrsquoapprossimazione da noi scelta

Modellizzazione cinematica e dinamica 75

Figura 46 Passi per arrivare al target nel metodo di inseguimento veloce

45 Calcolo delle traiettorie

Vogliamo presentare le modalitagrave di come le traiettorie vengono generate

Tra le diverse disponibili egrave stato scelto il controllo in posizione nello spazio dei

giunti affichegrave il robot riesca a deambulare in un cammino definito Esprimendo le

traiettorie nello spazio dei giunti vengono evitate le conversioni cinematiche

inverse e quindi per la realizzazione delle traiettorie non serve potenza di calcolo

onerosa

Per il controllo delle traiettorie esistono metodi semplici basati sulla

gestione del movimento del singolo link senza che esso venga temporizzato con

tutta la struttura e algoritmi piugrave complessi che fanno uso delle cubiche27 esse

arrivano a un buon compromesso tra quantitagrave di calcolo richiesta e qualitagrave delle

traiettorie ottenute Il cammino da compiere viene specificato mediante punto di

arrivo e punto di stop si vorrebbe che tutti i giunti arrivino al task nello stesso

istante in modo da garantire lrsquoassenza delle discontinuitagrave Si generano traiettorie

nello spazio dei giunti specificando per ogni motore la funzione di moto e

verificando che le posizioni attraversate non siano degeneri28 o singolari29[32]

27 polinomi dal terzo grado a superiore che rappresentano funzioni continue 28 degenere significa non raggiungibile dal robot

Modellizzazione cinematica e dinamica 76

Esistono diversi metodi per calcolare le cubiche di seguito vengono

presentate quelle da noi elaborate e convertite in codice

Movimento da una posizione finale ad una posizione finale in un certo

intervallo di tempo per ogni giunto deve essere trovata una funzione ( )tϑ

continua e con derivata prima continua il cui valore per t=0 sia per t = sia ft fϑ e

che possa essere usata per interpolare i valori dei giunti I vincoli che devono

essere soddisfatti sono

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = 0 Velocitagrave iniziale nulla

( )fϑamp = 0 Velocitagrave finale nulla

Per soddisfare i vincoli egrave necessario un polinomio di terzo grado in cui i

coefficienti saranno scelti per soddisfare i quatto vincoli

( )tϑ = 3

32

210 tatataa sdot+sdot+sdot+

dal polinomio ricaviamo la funzione che rappresenta la velocitagrave

( )tϑamp = 2321 32 tataa sdotsdot+sdotsdot+

e lrsquoaccelerazione

( )tϑampamp = taa sdotsdot+sdot 32 62

sostituendo le equazioni nei vincoli sopra citati troviamo i seguenti valori dei

coefficienti

=0a 0ϑ

29 un punto singolare egrave un punto in cui non egrave possibile calcolare lo jacobiano inverso

Modellizzazione cinematica e dinamica 77

01 =a

( )2

02

3

f

f

ta

ϑϑ minussdot=

( )3

03

2

f

f

ta

ϑϑ minussdotminus=

Con queste equazioni abbiamo ottenuto il metodo piugrave semplice per

connettere due posizioni nello spazio A fronte del consistente numero di

operazioni richieste per il carico grafico questo egrave il metodo da noi utilizzato per

tutto lo sviluppo del simulatore che emula la creazione di un percorso inoltre esso

risulta simile al controllo a noi a disposizione per gli attuatori reali a disposizione

Abbiamo comunque voluto implementare un metodo avanzato per

superare limitazioni presenti che potragrave essere utilizzato anche in un futuro quando

controlli effettivi saranno introdotti per il controllo di velocitagrave e accelerazione dei

motori Esso egrave costituito da un polinomio di quinto grado in cui possono essere

specificate posizioni velocitagrave e accelerazioni nei punti iniziale e finale e puograve

gestire la continuitagrave dellrsquoaccelerazione nei punti di via

Il polinomio studiato risulta essere

( )tϑ = 5

54

43

32

210 tatatatataa sdot+sdot+sdot+sdot+sdot+

( ) =tϑamp 45

34

2321 5432 tatatataa sdotsdot+sdotsdot+sdotsdot+sdotsdot+

( ) =tϑampamp 35

2432 201262 tatataa sdotsdot+sdotsdot+sdotsdot+sdot

imponendo

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = Velocitagrave iniziale 0v

( )fϑamp = Velocitagrave finale fv

Modellizzazione cinematica e dinamica 78

sostituendo i vincoli trovo i seguenti valori dei parametri

tvva fof sdotminussdotminusminussdot= )(3)(6 05 ϑϑ

tvva fof sdotsdotminussdot+minussdotminus= )78()(15 04 ϑϑ

tvva fof sdotsdotminussdotminusminussdot= )46()(10 03 ϑϑ

02 =a

tva sdot= 01

00 va =

46 Modello dinamico Newton-Eulero

Per un analisi realistica e approfondita della camminata non egrave sufficiente

considerare gli effetti della forza di gravitagrave ma diventa necessario introdurre il

modello dinamico che tiene conto di tutti i fattori non trascurabili nei corpi in

movimento

Per completare le formule ricavate nel caso statico vengono calcolate le

singole velocitagrave e accelerazioni dei giunti e link Risulta assai comodo ed

efficiente lrsquoalgoritmo ricorsivo di Newton-Eulero[31] Viene effettuata dapprima

una ricorsione ldquoin avantirdquo per calcolare le velocitagrave e accelerazioni dei giunti e

successivamente una ricorsione ldquoallrsquoindietrordquo per ricavare i valori di forza e

torsione

Nella prima fase dalla base (baricentro) allrsquoend-effector (zampa in

movimento) abbiamo

Velocitagrave angolare del rotore ( )011

1 zR iii

Tii

ii ϑωω amp+= minus

minusminus

Accelerazione angolare del link ( )0110

11

1 zzR iiii

ii

Tii

ii times++= minus

minusminusminus

minus ωϑϑωω ampampampampamp

Accelerazione lineare terna i ( )iii

ii

ii

iii

ii

ii

Tii

ii rrpRp 11

11

1minusminus

minusminus

minus timestimes+times+= ωωωampampampampamp

Modellizzazione cinematica e dinamica 79

Accelerazione lineare baricentro iC ( )iCi

ii

ii

iCi

ii

iiC iii

rrpp timestimes+times+= ωωωampampampampamp

Nella seconda fase dallrsquoend-effector al baricentro le formule diventano

Forza iCi

ii

ii

ii i

pmfRf ampamp+= +++

111

Momento ( )

( )ii

ii

ii

ii

ii

iCi

ii

ii

ii

ii

iCi

iii

ii

ii

II

rfRRrrfii

ωωω

micromicro

times++

times+++timesminus= +++

+++minus

amp

1

111111

Forza generalizzata 0

1 zR Tii

Tiii

minus= microτ

Ai fini di semplificare i calcoli tutti i vettori sono riferiti alla terna corrente

sul link i Si rende quindi necessario moltiplicare per i vettori da trasformare

dalla terna i+1 alla terna i e per i vettori da trasformare dalla terna i-1 alla

terna i In questo modo e diventa possibile

semplificare la formula del tensore drsquoinerzia del link

iiR 1+

TiiR 1minus

[ ]Tz 1000 = costante =iCi i

r

( )

( )( ) ⎥

⎥⎥⎥

⎢⎢⎢⎢

+sdotminussdotminus

sdotminus+sdotminus

sdotminussdotminus+

sdot=

intintintintintintintintint

dVyxdVyzdVxz

dVyzdVzxdVxy

dVxzdVxydVzy

I22

22

22

ρ

Lrsquoinerzia egrave una proprietagrave che dipende dalla massa del corpo e da come tale

massa egrave distribuita I tensori sopra calcolati descrivono lrsquoinerzia del corpo nello

spazio tridimensionale Per i calcoli si sono supposti i link di densitagrave uniforme e a

forma di parallelepipedo tale approssimazione porta ad ottenere risultati

sufficientemente precisi per questo lavoro semplificando i termini del tensore

( )

( )( ) ⎥

⎥⎥

⎢⎢⎢

++

+sdot=

120001200012

22

22

22

yxzx

zymI

Modellizzazione cinematica e dinamica 80

Nelle formule del calcolo della torsione sono stati tralasciati i termini

inerenti alle forze interne dei motori essendo questi di dimensione trascurabile

47 Creazione di una mappa

La navigazione consiste nel dirigere il cammino di un robot

mobile[35][36] mentre esso si muove in un ambiente affincheacute

bull Raggiunga la destinazione

bull Non si perda

bull Non si schianti contro ostacoli fissi o mobili

La navigazione egrave composta dalle seguenti parti

mapping planning rArr driving rArr

costruzione della mappa pianificazione esecuzione

Il mapping consiste nel rappresentare lrsquoambiente in cui il robot si muove

ottimizzando i movimenti del robot per ASGARD lrsquoambiente egrave stato rappresentato

mediante una matrice bidimensionale che rappresenta la sua area di azione

Il planning rappresenta la costruzione di un cammino geometrico nella

mappa Nel nostro lavoro si egrave deciso di dare la possibilitagrave al robot di scegliere il

percorso piugrave adatto che dovragrave intraprendere Come verragrave descritto piugrave in dettaglio

nel prossimo capitolo dopo aver inserito valori di riferimento degli ostacoli

mediante un algoritmo di ricerca saragrave il controllore a fornire le direttive e

scegliere che tipologia di camminata che ASGARD dovragrave affrontare in ogni

singolo istante alla fase di driving saragrave delegato il compito di scegliere il passo

opportuno al fine di velocizzare la camminata

Il goal per il nostro robot egrave il raggiungimento della posizione data come

obiettivo senza urtare ostacoli fissi presenti sul suo cammino Non essendo dotato

Modellizzazione cinematica e dinamica 81

di un sistema odometrico per il calcolo della posizione saragrave lo stesso controllore a

verificare in real-time la corretta posizione del baricentro del robot

Non possedendo nemmeno sensori di visione abbiamo deciso di simulare

e costruire una mappa object oriented30 la mappa conosce le posizioni degli

oggetti diffusi nel mondo e vieta al robot le aree in cui essi sono presenti

La mappa saragrave rappresentata da una matrice in cui per ogni cella avremo

valori che rappresentano la distanza dal goal31 e le distanza dallrsquoostacolo piugrave

vicino un opportuno algoritmo di planning (revisione dellrsquoAlgoritmo di Dijkstra)

attueragrave la ricerca del cammino meno dispendioso e dopo un opportuno controllo

diragrave al robot se attuare un passo di camminata veloce o un passo di correzione

471 Espansione degli ostacoli traformazione delle distanze

Basato sul concetto di propagazione drsquoonda32 il metodo della

trasformazione delle distanze proviene dal meccanismo utilizzato per processare

la forma in immagini binarie Il metodo consiste nella propagazione della distanza

da un insieme di celle poste in uno spazio rappresentato da una griglia

Si calcola lo scheletro dellrsquoimmagine ostacolo e si identificano le celle che

ne conterranno gli spigoli Poi si passa da sinistra a destra e dallrsquoalto al basso le

celle esterne al perimetro identificandole con distanza 1 Si procede per tutte le

celle della matrice quando tutti i passaggi sono completati il risultato egrave una

matrice che contiene la trasformazione delle distanze applicate al perimetro di un

oggetto I punti occupati dallrsquooggetto verranno identificati con valori idealmente

infinito e non saranno mai visitati

30 tipologia di costruzione di una mappa orientata agli oggetti 31 obiettivo 32 dallrsquooggetto considerato centro in tutte le direzioni dello spazio bidimensionale

Modellizzazione cinematica e dinamica 82

4 3 2 2 3 3 2 1 1 2 2 1 1 3 2 1 1 2 4 3 2 2 3

4 3 2 2 3 4 4 5 3 2 1 1 2 3 3 4 2 1 1 2 2 3 3 2 1 1 2 1 1 2 4 3 2 2 1 1 5 4 3 2 1 1 6 5 4 3 2 1 1 2

Figura 47 Propagazione drsquoonda per ostacolo singolo e multiplo

Abbiamo deciso di propagare lrsquoonda non solo dagli ostacoli questo

avviene in tutto lo spazio libero fluendo attorno agli ostacoli e dando unrsquoidea a

ogni cella della distanza dallrsquoobiettivo e della direzione da prendere per potersi

avvicinare

I valori del perimetro degli ostacoli vanno propagati in base alla geometria

del robot per evitare eventuali collisioni Nel nostro lavoro lrsquoespansione egrave stata

necessaria solo per i margini verticali in cui il raggio di elevazione delle zampe

poograve collidere con oggetti fissi durante la camminata longitudinale questo

problema non egrave stato invece riscontrato per lrsquoasse latitudinale

4 3 2 2 3 4 3 2 1 1 2 3

2 2 2 2 3 2 1 1 2 3 3 3 2 2 3 4

Figura 48 Griglia con espansione laterale ostacolo

Modellizzazione cinematica e dinamica 83

48 Scelta di un percorso Algoritmo di Dijkstra

Questo algoritmo egrave stato scelto come ricerca di un cammino minimo

allrsquointerno di un grafo[37] per la sua elegante semplicitagrave e il suo basso carico

computazionale (O(n)33)

Proposto da WDijkstra nel 1959[38] esso visita i nodi del grafo in

maniera simile ad una ricerca in ampiezza o profonditagrave In ogni istante lrsquoinsieme

N dei nodi viene diviso in nodi visitati V nodi frontiera F (che sono i successori34

dei nodi visitati) e i nodi sconosciuti che sono ancora da visitare

Per ogni nodo lrsquoalgoritmo tiene traccia del valore che nel nostro caso

saragrave il valore della distanza dal punto di arrivo e del nodo in cui siamo

Lrsquoalgoritmo consiste nel ripetere il seguente passo

zd

zu

si prende dallrsquoinsieme F un qualsiasi nodo z con minimo si sposta z da

F a V si spostano tutti i successori di z conosciuti in F e per ogni successore w di

z si aggiornano i valori di e

zd

wd wu ( )azww pddd +larr min dove a egrave lrsquoarco che

collega z a w Si sceglie in minore valore tra i successori di z si salva questrsquoultimo

nel vettore u

Alla fine dellrsquoalgoritmo arriviamo ad avere nel vettore u lrsquoinsieme dei nodi

che forniscono il cammino minimo dal punto di start al punto di end35

33 Orine di grandezza dellrsquoalgoritmo 34 Un successore di z egrave un nodo raggiungible lungo un arco uscente da z 35 dalla partenza allrsquoarrivo

Capitolo 5 Sviluppo dellrsquoalgoritmo di camminata

Sviluppo dellrsquoalgoritmo di camminata 85

51 Metodologie di sviluppo

Per lrsquoimplementazione della parte software si egrave scelto di far uso

dellrsquoambiente di sviluppo Matlab progettato appositamente per lavorare con

matrici e formule di notevole complessitagrave

Nel realizzare il modello matematico del robot ai fini di studiarne il

comportamento ci si potrebbe chiedere percheacute non sia stato utilizzato lrsquoambiente

di simulazione MSCADAMS in grado di fornire anche proprietagrave fisiche

direttamente dal modello CAD studiarne la cinematica la dinamica e

lrsquointerazione con il mondo esterno La finalitagrave di questo progetto perograve egrave quella di

creare uno strumento di supporto da poter essere realizzato in real-time

A questo punto Matlab potrebbe venir criticato per le sue prestazioni

inferiori a linguaggi quali il C ma esso mette a disposizione toolbox aggiuntivi

quali simulink36 che permettono un facile interfacciamento con tutti i dispositivi

hardware Ersquo comunque possibile convertire il codice sorgente in eseguibili o

addirittura nello stesso linguaggio C senza comprometterne alcuna funzionalitagrave

52 Progetto di una andatura

Per la creazione di una andatura rilevante al fine pratico abbiamo attuato

notevoli ricerche di analisi parametriche in merito Il principale obiettivo trovato egrave

risultata essere la realizzazione delle fasi di un passo stabile e veloce Ci

proponiamo quindi di massimizzare la componente velocitagrave senza provocare

instabilitagrave nel robot La velocitagrave si calcola secondo lrsquoespressione

impiegatotempomotodeldirezionenellapercorsospaziovelocitagrave

______

=

36 tool di matlab per la creazionedi controlli ad anello di automazione

Sviluppo dellrsquoalgoritmo di camminata 86

Per raggiungere tale scopo occorre concentrarsi su diverse questioni

bull Scelta del ciclo di camminata

bull Spazio decidere gli angoli del movimento di ciascuna zampa

bull Il tempo partire da una postura conveniente che garantisca i piugrave

brevi scostamenti possibili di angoli di giunto

bull La stabilitagrave

bull Le coppie prodotte dagli attuatori

bull La scelta della camminata

Attraverso lrsquoanalisi di alcune tra le possibili andature di quadruped sono

emersi pregi e difetti derivanti dallrsquoutilizzo di un ciclo di camminata con un

ridotto numero di fasi Un vantaggio fondamentale sta nel ridurre il tempo

impiegato e il maggior difetto egrave legato ai problemi di instabilitagrave del robot

Al fine di ridurre la stabilitagrave siamo intervenuti nella modellizzazione di un

opportuna camminata quasi statica che si adatta alla morfologia del nostro robot

Lrsquoidea egrave stata quella di trovare una camminata efficiente ma stabile

Al fine di ridurre lrsquoistabilitagrave sono state introdotte fasi aggiuntive che

garantiscono il poligono di appoggio e si egrave tentata di far assumere ad ASGARD

una postura a baricentro basso

Il trotto egrave stato escuso dalla nostra analisi non solo per il tempo di risposta

ma anche per lrsquoimpossibilitagrave di attuare spinte per il balzo

521 Lo spazio

La domanda che ci siamo posti egrave stata se risultava conveniente avanzare le

zampe attraverso piccoli spostamenti ripetuti o con ampi spostamenti meno

frequenti

Lrsquoavanzamento del robot avviene mediante la combinazione di due

movimenti

Sviluppo dellrsquoalgoritmo di camminata 87

bull lo spostamento delle singole zampe da una postura iniziale a una

finale

bull la spinta simultanea delle quattro zampe che permettono lrsquoeffettivo

movimento del main body37

La fase aerea risulta essere molto piugrave complessa e richiede un tempo di

attuazione maggiore rispetto a quella di spinta del busto

Lo spostamento assoluto della zampa che si solleva egrave la combinazione di

due movimenti quello attivo dipendente dalla traiettoria imposta allrsquoend effector

e quello passivo che si muove per mezzo della spinta offerta dal movimento del

busto i due movimenti sono strettamente correlati

Se lrsquoobiettivo egrave quello di massimizzare la velocitagrave del ciclo di camminata

la scelta egrave di prevedere lo spostamento della zampa piugrave ampio possibile (passo

lungo) Abbiamo comunque ritenuto utile introdurre entrambe le tipologie di

passo lungo e passo correttivo per la minimizzazione della distanza dal target

522 Stabilitagrave

Al fine di garantire la stabilitagrave egrave utile porsi nel caso quasi-statico cioegrave fare

in modo che il baricentro del robot cada sempre allrsquointerno del poligono di

stabilitagrave ciograve non sembra un problema per le fasi intermedie del ciclo di

camminata percheacute tutte e quattro le zampe toccano il terreno Il problema invece

si fa sentire nelle fasi in cui una zampa viene sollevata e un punto di contatto

viene a meno In questo caso abbiamo dovuto scegliere posture in cui il baricentro

cada nella base drsquoappoggio Ersquo indispensabile quindi prevedere tali configurazioni

e definirle in modo corretto

Occorre inoltre evitare che due zampe in appoggio poste sul medesimo

lato si urtino durante il moto infatti spazi di lavoro delle zampe presentano

strutturalmente zone di intersezione non trascurabili

37 corpo o busto del robot

Sviluppo dellrsquoalgoritmo di camminata 88

Un ulteriore accorgimento per migliorare la stabilitagrave risulta essere quello di

cercare di abbassere il baricentro durante la camminata al fine di mantenere

costante lrsquointensitagrave del moto associato alla forza peso del robot calcolato rispetto

ai punti di appoggio

523 Tempo

Un altro punto su cui si egrave posta particolare attenzione risulta essere il

piegamento delle zampe nel senso se decidere se per compiere un movimento egrave

piugrave conveniente (in termini di spostamento) tenere le zampe tese o piegate

In base a valori di test riscontrati si deduce che in genere conviene tenere

le zampe piuttosto tese poicheacute in questo modo lrsquoescursione angolare nonostante

amplifichi il movimento garantisce un corretto riposizionamento nella posizione

finale desiderata e i tempi non subiscono variazioni

53 Andature implementate

Dopo lrsquoanalisi compiuta sulle modellizzazioni naturali e sui parametri di

scelta abbiamo implementato due tipologie di camminata

Considerando la rigiditagrave del busto di ASGARD esso non dispone di spina

dorsale mobileabbiamo implementato uno stile quasi-statico che non altera lrsquoasse

del baricentro Questo ci ha vincolato a muovere una sola zampa alla volta

(motivazione da cercare anche nella alimentazione dei motori) facendolo partire

da una particolare postura in cui entrambe le zampe del lato sinistro del corpo

sono arretrate rispetto al busto e con angolature precisa degli arti

Abbiamo cosigrave creato una scomposizione del movimento in sei fasi

succesive

bull movimento zampa RL

bull movimento zampa RF

Sviluppo dellrsquoalgoritmo di camminata 89

bull spostamento in avanti del baricentro

bull movimento zampa LR

bull movimento zampa LF

bull spostamento in avanti del baricentro per tornare a posizione base

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

In questa tipologia di gait il robot si trova in piena stabilitagrave anche durante

lrsquoalzata di una zampa la proiezione del centro di massa risulta essere centrale al

triangolo drsquoappoggio

Questa tipologia di camminata quasi-statica egrave una alterazione del modello

Crawl38 presente in natura e nei modelli Aibo con lrsquoinnovazione di sfruttare

posture del normale trotto differenziandone e rallentandone le fasi di realizzazione

al fine di maggiorare il triangolo di appoggio in relazione alla struttura fisica del

nostro robot

Il segmento di appoggio dello stile Crawl viene qui espanso ad un

triangolo di stabilitagrave pur mantenendone le caratteristiche di spazio percorso e

velocitagrave

La nostra ricerca ci ha ulteriormente spinti alla creazione di un ulteriore

stile di camminata quasi-dinamico in cui la proiezione del baricentro durante

lrsquoalzata si spinge a coincidere con il lato del poligono di stabilitagrave

Le fasi di camminata diversificano da quelle precedenti per lrsquoangolazione

degli attuatori e lrsquoordine di esecuzione dei movimenti

Il passo risulta essere composto da 5 fasi

bull movimento zampa RF

bull movimento zampa LF

bull spostamento in avanti del baricentro

bull movimento zampa RR

bull movimento zampa LR

38 modello di trotto di Aibo

Sviluppo dellrsquoalgoritmo di camminata 90

Nella nostra analisi essendo ancora precario il controllo sugli attuatori

risulta impossibile realizzare un impulso tale da creare il balzo del robot Le

andature studiate escludono pertanto lrsquoandatura dinamica o trotto

La camminata quasi-statica egrave stata correttamente testata sul campo

ottenendo buoni risultati le tempistiche di risposta del robot no hanno permesso

perograve la completa realizzazione della quasi-dinamica che in alcune prove non viene

portata a termine in tutte le sue fasi a causa di cedimenti in stabilitagrave

Per questa ragione essa egrave stata ampiamente testata a simulatore

Per lrsquoanalisi dei suoi movimenti essi sono stati elaborati ed egrave stata creata

anche una variante che presenta una minimizzazione dellrsquoangolatura del giunto

spalla e riporta il movimento a quasi-stabile (passo correttivo esso sposta infatti il

robot sulllrsquoasse longitudinale solo di 2 cm)

54 Catene cinematiche del robot

Per lrsquoiplementazione a simulatore abbiamo dovuto adattare il nostro robot

ad una analisi cinematica e dinamica posizionando su di esso i sistemi di

riferimento in modo da costruire una catena cinematica aperta

Per semplificare il modello abbiamo deciso di caratterizzare la struttura del

robot in quattro catene cinematiche aventi base coincidente nel baricentro e

facendo coincidere ogni end-effector con la relativa zampa in movimento

La prima catena quindi che ci proponiamo di analizzare risulta quindi

essere la seguente

Sviluppo dellrsquoalgoritmo di camminata 91

z0

x0

y0

z1

x1

y1

y2

y3

y4

x2

x3

x4

Figura 49 Posizionamento dei sistemi di riferimento con D-H sulla zampa reale

Essa egrave stata implementata in Matlab utilizzando il metodo di D-H

precedentemente descritto implementato nel nostro tool di analisi

INIT_ROBOT Funzione di definizione delle componenti del robot allinterno del nostro simulatore In relazione alle componentistiche del nostro robot e alla grafica del simulatore questa funzione si propone di definire le parti fondamentali inserendo opportunatamente i parametri di Denavit Hartemberg Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 Copyright (C) 2003-2004 by Picco Sabrina zampa A clear L definifione allinterno della matrice L i parametri di Denavit Hartemberg sigma= 1 giunto prismatico sigma=0 giunto rotoidale sono stati inseriti due giunti prismatici per motivi di grafica del simulatore nel collegamento con i motori reali tali valori non verranno considerati alpha A theta D sigma L1 = link([0 -01 pi4 0 1] mod) L2 = link([0 -06 -pi4 0 0] mod) L3 = link([0 0 -pi4 0 1] mod)

Sviluppo dellrsquoalgoritmo di camminata 92

L4 = link([-pi2 -0573 0 0 0] mod) L5 = link([0 -0675 0 0 0] mod) L6 = link([0 -0735 0 0 0] mod) zampaa = robot(L zampaa Unimation AKampB) clear L

Nel codice Matlab riportato per la creazione di una zampa i parametri

prismatici introdotti sono utilizzati solamente a scopo grafico e vengono tralasciati

dallrsquoalgoritmo per la creazione dei movimenti e dei comandi da spedire algli

attuatori

Si egrave cercata una rappresentazione in grado di descrivere non soltanto i

giunti e i link ma anche altre caratteristiche fondamentali quali masse e lunghezze

Il passo viene scomposto principalmente in due passaggi movimento in

avanti delle zampe e spostamento del busto Nel secondo passaggio la catena

cinematica costruita deve ldquoinvertirsirdquo in quanto non saragrave piugrave la zampa del robot a

costituire il nostro end-effector ma essa saragrave solidale con il terreno e saragrave il

baricentro a diventare il nostro punto terminale asimulatore infatti non sono

possibili movimenti che sfruttano la semplice forza attrito

La catena cinematica verragrave cosigrave modificata

Creazione di un ulteriore robot per caratterizzare il cambiamento del punto di partenza della catena cinematicamentre per la prima parte del passo lend-effector egrave la zampadopo che questa egrave stata appoggiata lend-effector diventa il baricentro del robottino alpha A theta D sigma L1 = link([0 0 0 065 1] mod) L2 = link([0 0 0 0 0] mod) L3 = link([pi2 0 0 0 0] mod) L4 = link([0 0573 0 0 0] mod) L5 = link([pi2 0675 0 0 0] mod) L6 = link([0 0735 -pi4 0 0] mod) zampaa2 = robot(L zampaa2 Unimation AKampB)

Sviluppo dellrsquoalgoritmo di camminata 93

Figura 50 Fase di movimento delle zampe anteriorila base delle quattro catene

cinematiche egrave identificata con il baricentro di cui viene effettuata la prioezione

Figura 51 Fase di spostamento del baricentro si possono notare le proiezioni delle

basi delle rispettive catene cinematiche che si identificano con le zampe

La parte di codice presentato appartiene al file Init_robotm in cui vengono

definite tutte le catene cinematiche necessarie al movimento

Un ulteriore definizione di notevole importanza egrave la ricerca di tutti i punti

essenziali per il corretto posizionamento del robot durante la camminata

Sviluppo dellrsquoalgoritmo di camminata 94

Nel file DB_Positionm vengono memorizzate le posizione chiave per la

costruzione di un passo

Nel nostro algoritmo un passo egrave rappresentato da una sequenza di

posizioni base opportunatamente scelte in relazione ai parametri utili per

realizzare gait veloci e stabili

Il movimento che trasla tutta la struttura da un punto al successivo viene

definito da un profilo di accelerazione e velocitagrave implementato via software che

permette di ottenere ottenere un controllo efficiente e un movimento fluido che

rispetti certi vincoli di forza e di tempo

La funzione jtrajm infatti implementa al suo interno un polinomio di

quinto grado che permette il controllo in velocitagrave e accellerazine sia nel punto di

partenza che di fine della traiettoria permettendo un movimento ldquodolcerdquo che egrave in

grado di evitare picchi di torsione Purtroppo nella realizzazione pratica questo egrave

risultato fin troppo oneroso in quanto sui motori da noi usati non esiste alcun

controllo in velocitagrave

Al fine di rendere piugrave reale la simulazione abbiamo implementato un

semplice controllo in movimento da una posizione finale ad una posizione finale

in un certo intervallo di tempo Esso egrave costituito da un semplice polinomio di

terzo grado non attua controlli e gestisce il movimento spingendo il servo a

velocitagrave massima per ogni intervallo Presentiamo la parte di codice per la

gestione del calcolo delle traiettorie e le principali caratteristiche

sullrsquoimplementazione dei vincoli che diversificano in relazione al polinomio

utilizzato

FUNZIONE CUBICA_norm Funzione per la generazione di una traiettoria da un punto iniziale q0 ad un punto di arrivo qf in un certo intervallo di tempo tv utilizzando un polinomio di terzo grado parametri in input q0= posizione iniziale qf= posizione finale da raggiungere tv=tempo in cui effettuare lazione

FUNZIONE JTRAJ Funzione per la generazione delle traiettorie da qo a q1I numero di interpolazioni dipende dal valore di tLa costruzione di tale algoritmo di generazione avviene tramite lutilizzo di un polinomio di ordine 5 con condizioni di velocitagrave e accellerazione agli estremi parametri input q0=posizione iniziale

Sviluppo dellrsquoalgoritmo di camminata 95

parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [qtnqdtnqddtn] = cubica_norm(q0qftv) if length(tv) gt 1 controllo sul tempo tscal = max(tv) t = tv()tscal else tscal = 1 t = [0(tv-1)](tv-1) normalizzazione parametrotempo end q0 = q0() qf = qf() qt= a0+ a1t+ a2t^2+ a3t^3 vincoli da soddisfare qdt= a1+ 2a2t+ 3a3t^2 qddt= 2a2+ 6a3t implementazione dei vincoli A=q0 B= zeros(size(A)) C=((3(tscal^2))(qf-q0)) D=(((-2)(tscal^3))(qf-q0)) creazione del polinomio ttpv = [t^3 t^2 t ones(size(t))] p=[D C B A] creazione del vettore velocitagrave qtn = ttpv p

q1= posizione finale da raggiungere tv=tempo in cui effettuare lazione qd0=condizione velocitagrave nellestremo di partenza qd1=condizione velocitagrave nellestremo di arrivo parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 implementazione dei vincoli A = 6(q1 - q0) - 3(qd1+qd0)tscal B = -15(q1 - q0) + (8qd0 + 7qd1)tscal C = 10(q1 - q0) - (6qd0 +4qd1)tscal E = qd0tscal F = q0 creazione del polinomio tt = [t^5 t^4 t^3 t^2 t ones(size(t))] c = [A B C zeros(size(A)) E F] calcolo valore posizione qt = ttc calcolo la velocitagrave c1 = [ zeros(size(A)) 5A 4B 3 C zeros(size(A)) E ] qdt = ttc1tscal calcolo accellerazione c2 = [ zeros(size(A)) zeros(size(A)) 20A 12B 6C zeros(size(A))] qddt = ttc2tscal^2

Per la chiamata di entrambe queste funzioni vengono richieste le posizioni

di partenza di arrivo ed un tempo questrsquoultimo rappresenta il tempo che intercorre

tra un frame e il successivo cioegrave ogni quanto verragrave generato un valore di

posizione Per ottenere quindi un movimento il piugrave possibile continuo dovremo

richiedere la generazione di un elevato numero di frame introducendo un tempo

piccolissimo Ad esempio se vogliamo che lrsquointerpolazione generi 10 posizioni

intermedie e che tutto il movimento sia compiuto in 1 sec dobbiamo dare t=01

Sviluppo dellrsquoalgoritmo di camminata 96

55 Passo statico e dinamico

Finora abbiamo visto come sia possibile simulare il movimento di una

singola zampa o del baricentro del nostro robot per eseguire un passoa

simulatore questi movimenti devono perograve essere coordinati in modo opportuno

per permettere lrsquoesecuzione sequenziale delle fasi che lo compongono

In prima analisi il nostro lavoro si posto come obiettivo di creare un passo

quasi-statico in cui il baricentro del robot egrave strettamente compreso nella base

drsquoappoggio per garantire al robot una discreta stabilitagrave

Lrsquoanalisi delle fasi della camminata quasi-statica da noi introdotta

possono essere cosigrave schematizzate

Figura 52 Le 6 fasi della camminata quasi-statica

Da questo possiamo notare come il passo si divide in 6 movimenti in cui

vengono mosse le zampe sul lato sinistro del corpo si sposta in avanti il busto si

muovono le zampe sul lato destro e si risposta il busto per tornare alla posizione

di partenza

Ersquo da notare come lo spostamento del busto nellrsquoanalisi reale avviene

sfruttando lrsquoattrito delle zampe con il suolo mentre a simulatore egrave richiesta

lrsquoinversione della catena cinematica

La struttura da noi proposta e analizzata tenta di attuare una camminata

stabile e veloce

Il calcolo della stabilitagrave nei movimenti risulta effettivamente coerente con

le nostre aspettative

Sviluppo dellrsquoalgoritmo di camminata 97

Figura 53 Analisi margine di

stabilitagravesolo alzata(sinistra)in

movimento(destra)

Dove

321 ddd == distanza tra baricentro e perimetro

021 ne= ll durante il passo considero solo la distanza sullrsquoasse del moto

Dopo aver raggiunto un discreto livello di camminata quasi-statica il

nostro obiettivo si egrave spostato nella realizzazione di una camminata quasi-

dinamica

Figura 54 Fasi della camminata quasi-dinamica

Come si puograve notare in questa configurazione esistono istanti in cui il

baricentro del nostro robot giace sul perimetro del triangolo drsquoappoggio in questi

istanti servirebbe una risposta immediata degli attuatori per limitare le tempistiche

di movimento e permettere al robot di mantenere lrsquoequilibrio Questo fenomeno

presente anche in natura lo possiamo notare analizzando la corsa di una pantera

quando il suo corpo ondeggia in ampi angoli i suoi movimenti diventani fulminei

per mantenere la stabilitagrave

Il nostro algoritmo presenta la sezione camminata_statm che simula i due

passi e ne mostra le differenze

Sviluppo dellrsquoalgoritmo di camminata 98

Figura 55 Passo Statico vista semi frontale

Figura 56 Passo Statico vista dallrsquoalto

Figura 57 Passo Quasi-Dinamico vista semi

frontale

Figura 58 Passo Quasi-Dinamico vista

dallrsquoalto

Possimo notare anche dalle immagini come egrave posizionato il baricentro del

nostro robot rispetto alla base drsquoappoggio in diverse fasi del passo e come nella

camminata quasi-dinamica si spinge a limiti intollerabili per le caratteristiche

fisiche del nostro progetto attuale

Presentiamo di seguito lo schema a blocchi di analisi della camminata

Sviluppo dellrsquoalgoritmo di camminata 99

Cerca posizione da raggiungere

Calcola traiettoria end-effector tramite cubiche

Traccia poligono drsquoappoggio per laposizione raggiunta

inizio

Fine

Attua movimento

Posizione=target no

si

Figura 59 Schema a blocchi creazione singolo passo

Il codice proposto in appendice egrave stato successivamente opportunamente

modulato ma questo ha portato a ulteriori cali di prestezione Pertanto nella

esecuzione si egrave preferito riutilizzare il file integro Problemi di tempistiche sono

da attribuirsi alla parte grafica e al calcolo matriciale richiesto per ogni

movimento

La sperimentazione dei passi reali sul robot fisico sono stati effettuati

utilizzando array di valori di angoli di giunto estrapolati durante la simulazione

sopra citata

Sviluppo dellrsquoalgoritmo di camminata 100

56 Formule di forza e torsione sui giunti

Uno dei ruoli principali delle zampe egrave quello di sostenere la piattaforma

del robot e di evitare la caduta

A causa di un cedimento strutturale avvenuto durante i primi approcci di

pilotaggio dei motori abbiamo pensato necessario calcolare la forza e la torsione

sui giunti utilizzando le formule di Newton-Eulero viste precedentemente La

risoluzione di tali equazioni richiede una potenza di calcolo non indifferente ma

le tempistiche del nostro simulatore sono causate dalla lentezza nel plottaggio dei

grafici e dei movimenti del robot

Non avendo un diretto valore di velocitagrave dei motori ci egrave sembrato

interessante provare a calcolare effettivamente le tempistiche dei motori

Conoscendo tramite la cinematica diretta la posizione di arrivo per ogni coppia di

valori abbiamo calcolato lo spazio percorso Cronometrando il tempo richiesto

affincheacute i motori si portassero nella posizione voluta egrave stato possibile valutare la

velocitagrave media dei motori

Questa velocitagrave egrave stata successivamente introdotta nellrsquoalgoritmo

Per il calcolo delle formule di Newton-Eulero egrave inoltre da sottolineare

lrsquoimportanza della ripartizione delle masse ci egrave sembrato coerente ipotizzare le

equidistribuzione del peso su tutte e quattro le zampe in quanto la PIC aggiuntiva

non dovrebbe influenzare tale ripartizione

Dallrsquoanalisi svolta si trovano i seguenti valori sui giunti

Sviluppo dellrsquoalgoritmo di camminata 101

Figura 60 Gafici della torsione in un passo quasi-dianmico

Dal grafico possiamo inanzitutto notare come i valori di torsione che ogni

motore subisce sono inferiori al valore massimo possibile dichiarato dalla casa

costruttrice presente in ogni grafico con la linea nera continua

Possiamo vedere che il valore piugrave alto di torsione viene subito

dallrsquoattuatore presente sulla caviglia sul quale ricadono le maggiori sollecitazioni

Un comportamento analogo ma con decisamente meno carico avviene sul

giunto del ginocchio orientato come il precedente che ha la funzione di aiutare la

caviglia nel sostegno del peso

Il giunto della spalla presenta lrsquoasse di rotazione parallelo alla forza peso

di cui per questo motivo non se ne fa carico Le sue piccole perturbazioni sono

causate durante il movimento del busto dalla resistenza della forza di attrito

sfruttata per il movimento e durante lrsquoalzata della zampa dal peso di ogni singola

Sviluppo dellrsquoalgoritmo di camminata 102

articolazione che risulta perograve essere pressocheacute irrilevante rispetto al peso del

busto

Durante il movimento si possono osservare sulle grandezze di ginocchio e

caviglia una serie di oscillazioni tra due valori essi sono causati dalla ripartizione

del peso su tre o quattro zampe in base alle alzate consecutive quando il peso egrave

ripartito su tre zampe ovviamente il carico che ogni singola zampa egrave costretta a

subire cresce

Ovviamente durante lrsquoalzata ogni singola zampa presenta sui giunti

torsioni pressocheacute nulle questi minimi valori sono da attribuirsi alla sola

resistenza di ogni link alla forza di gravitagrave

La parte di codice fondamentale riportata in Appendice B per questa

funzione risulta essere la definizione dei parametri e lrsquoimplementazione delle

formule di andata e di ritorno dei valori Le funzione base viene chiamata

allrsquointerno di una ulteriore funzione NW-EUm che adatta lrsquoanalisi al passo

Esisteragrave nellrsquoalgoritmo una funzione eulerom che effettueragrave i calcoli di

Newton-Eulero anche per la catena cinematica che presenta come end-effector il

baricentro

57 Anello di Controllo

Un ulteriore controllo introdotto egrave il calcolo della cinematica inversa e il

controllo sulla soluzione trovata

A questo anello di controllo egrave stato predisposto il possibile inserimento di

un eventuale errore nel raggiungimento della posizione voluta Questo errore

potrebbe essere rilevato in futuro da sensori di posizione o da un sistema di

stereovisione dellrsquoambiente in grado di percepire la reale posizione di ogni zampa

Per ora viene passato come parametro di input settato da utente

Sviluppo dellrsquoalgoritmo di camminata 103

Figura 61 Anello di controllo cinematica inversa

Diversi approcci sono stati implementati per il calcolo della cinematica

inversa la funzione dagrave la possibilitagrave allrsquoutente settare le equazioni decisionali

quali scegliere il metodo da utilizzare settare lrsquoapprossimazione desiderata nel

caso di metodo del gradiente e la configurazione a gomito alto o basso nel caso di

metodo geometrico

Presentiamo di seguito lo schema a blocchi di sviluppo dellrsquoalgoritmo che

ci permetteragrave una spiegazione piugrave immediata del funzionamento

Sviluppo dellrsquoalgoritmo di camminata 104

Applico formule geometriche Metodo gradiente

Scelta algoritmo

inizio

Metodo inseguimento veloce del gradiente

Calcolo cinematica diretta

Setto parametri decisionali

Calcolo errore

fine

Figura 62 Schema a blocchi calcolo cinematico

Proponiamo successivamente lo pseudo codice in merito la funzione di

inseguimento veloce del gradiente al fine di rendere piugrave chiare e dettagliate le sue

caratteristiche di esecuzione

1 Anticipatamente viene settata la approssimazione desiderata per il

raggiungimento del target e lrsquoincremento dellrsquoangolo

2 Pongo nullo lrsquoincremento iniziale

Sviluppo dellrsquoalgoritmo di camminata 105

3 Pongo nulli i rispettivi valori di gradiente_old dei singoli giunti

4 Calcolo la distanza dal target con le posizioni base

5 Fintantochegrave la distanza non egrave minore dellrsquoapprossimazione introdotta

bull Calcolo i valori dei nuovi gradienti incrementando i singoli angoli

del valore incremento prefissato

bull Confronto il valore del segno del nuovo gradiente del primo giunto

con il corrispettivo gradiente_old

- se segno discorde diminuisco il valore dellrsquoangolo in

funzione el valore del gradiente nuovo e old al fine di

arrivare al punto di colle

- se segno concorde aumento ulteriormente lrsquoangolo del

giunto aggiungendogli un valore proporzionale alla distanza

trovata

bull viene eseguito lo stesso controllo per il secondo giunto

bull incremento la variabile num_iterazioni

bull i nuovi gradienti diventano i gradienti_old

bull Calcolo la distanza con il nuovi valori degli angoli dei due giunti e

torno al punto 5

58 Map-building e scelta del gait

Il nostro scopo egrave quello ricreare un programma che ricevendo in input i

soli valori di dimensione dellrsquoarea di gioco e posizione degli ostacoli fornisca al

robot tutti i comandi per muoversi nellrsquoambiente e arrivare allrsquoobiettivo senza piugrave

intervento esterno A tal fine questa funzione dovragrave comprendere diversi goal

intermedi che possono essere cosigrave schematizzati

Sviluppo dellrsquoalgoritmo di camminata 106

Creazione mappa

Ricerca percorso

Scelgo passi da attuare

inizio

fine

Il programma si divide in tre parti fondamentali

bull creazione della mappa tramite algoritmo di map-building

bull ricerca del percorso

bull decisione del passo da intraprendere per ogni istante e applicazione

del gait oppotuno

581 Costruzione della mappa ed espansione degli ostacoli

Abbiamo elaborato la costruzione di una mappa creando una matrice

bidimensionale in cui ogni cella rappresenta le possibili posizioni del baricentro

del robot nellrsquoambiente Utilizzando valori noti in input per le dimensioni e i

posizionamenti degli oggetti egrave il programma stesso a fornirci la matrice

Un ostacolo viene identificato come un cubetto in cui le coordinate inserite sono

Sviluppo dellrsquoalgoritmo di camminata 107

Xa1Ya1

a

Xa2Ya2

Per ogni cella sono presenti due valori il primo rappresenta la distanza

dallrsquoobiettivo il secondo la distanza dallrsquoostacolo piugrave vicino (se ne esiste piugrave di

uno) Questi valori sono determinati tramite onde di propagazione che partono

dallrsquooggetto in esame e si diffondono in tutte le direzioni allrsquointerno della mappa

Lrsquoonda egrave da considerarsi come una scansione prima orizzontale e poi verticale

dellrsquoambiente che incrementa ad ogni riga i controlli sulla distanza sono

introdotti in seconda analisi il controllo sulla distanza dellrsquoostacolo piugrave imminente

qualora ce ne siano presenti piugrave di uno e il controllo sullrsquoespansione drsquoonda

limitata qualora lrsquoostacolo o la destinazione si trovino ai borbi della mappa

Gli ostacoli presentano una ulteriore onda di espansione orizzontale in

quanto egrave solo lungo questa direzione che possono avvenire collisioni tra il nostro

robot in movimento e gli ostacoli fissi Accorgimenti successivi ci hanno

permesso la costruzione di un ulteriore passo correttivo che puograve essere utilizzato

in un secondo momento per un avvicinamento forzato

Figura 63 Mappa creata vista dallrsquoalto

Sviluppo dellrsquoalgoritmo di camminata 108

Figura 64 Visione della mappa semilaterale si possono vedere i corpi degli ostacoli

Matrice generata

10 3 9 2 109 0 110 0 110 0 109 0 4 2 9 2 8 2 109 0 110 0 110 0 109 0 3 1 8 1 7 1 6 2 5 1 109 0 110 0 110 0

110 0 110 0 109 0 4 2 109 0 110 0 110 0 110 0 110 0 109 0 3 2 2 2 1 1 0 1

Ogni elemento della matrice rappresenta un vertice di intersezione delle

coordinate (xy) della mappa Il primo valore equivalente a 110 rappresenta

lrsquoostacolo il valore 109 la sua espansione in altro caso esso egrave la distanza dalla

destinazione Il secondo valore rappresenta la distanza dallrsquoostacolo piugrave

imminente

582 Algoritmo di ricerca del percorso minimo

Avendo a disposizione una matrice che mi identifica tutto lrsquoambiente che

circonda il robot abbiamo deciso di modificare lrsquoAlgoritmo di Dijkstra

precedentemente descritto al fine di trovare un percorso minimo con bassa

computazionalitagrave di calcolo

Sviluppo dellrsquoalgoritmo di camminata 109

Nella prima fase abbiamo applicato lrsquoalgoritmo di ricerca operativa non su

un grafo ma su una matrice considerando come nodi successori le quatto celle

confinanti (su giugrave dx sx) rispetto a quella in cui ci troviamo Il costo di

movimento o meglio il miglior successore in cui spostarsi per riterare lrsquoanalisi

viene scelto tramite lrsquoimplementazione di un compromesso adeguato tra

minimizzazione della distanza dal target e massimizzazione della distanza dagli

ostacoli

Questa funzione restituisce in output se egrave stato trovato un percorso in caso

affermativo di esso visualizza le coordinate dei punti da attraversare e le

indicazioni in rappresentazione direzionale (destra sinistra avanti indietro)

Direzioni

start Destra Avanti Avanti Destra Destra Avanti Avanti Destra Destra Destra

Coordinate

1 1 1 2 2 2 3 2 3 3 3 4 4 4 5 4 5 5 5 6

5 7

Tabella 2 risultati ricerca percorso

Riportimo il flow-chart che descrive lrsquoalgoritmo di ricerca sopra citato

Sviluppo dellrsquoalgoritmo di camminata 110

pos =partenza migliore=non_valido

Considero 4 successori

Passo ad altro

successore

pos=visitato

pos=v

Stampo percorso in coordinate

Trasformo percorso in direzioni

inizio

Pos = destinazione

Egraversquo pos sul bordo

Considero 32 successori

Insieme successori vuoto

Considero successore v

distanza dest_vltdistanza dest

migliore

distanza ost_vltdistaza ost

migliore

Percorso non trovato

salvo pos in percorso

fine

si no

si

no

si

si

no

no

no

si

Figura 65Schema a blocchi ricerca percorso

Sviluppo dellrsquoalgoritmo di camminata 111

583 Realizzazione del gait

Una volta generato il percorso da seguire segue la parte piugrave dispendiosa in

tempo in quando legata alla grafica

Sono stati implementati per la realizzazione del percorso i seguenti passi

bull in avanti

bull in dietro

bull a destra

bull a sinistra

bull correttivo avanti

bull correttivo indietro

bull correttivi laterali non sono stati introdotti a causa del giagrave minimo

spostamento laterale per ogni passo in quella direzione (2 cm)

La terza parte di algoritmo considera il percorso generato e decide il passo

da mettere in pratica uno spostamento sullrsquoasse verticale del piano implica una

scelta ulteriore per la calibrazione del numero di passi lunghi e dei passi correttivi

Una ampia falcata permette il movimento del robot di 7 cm mentre il passo

correttivo di 2 Il programma in base al percorso ottimizza le tempistiche

effettuando il maggior numero di passi ampi e riassestando la posizione con il

minor numero possibile di passi correttivi dispendiosi in tempo

Saragrave possibile ammirare tutta la camminata del nostro robot in una

immagine che plotta tutti i movimenti del robot

Sviluppo dellrsquoalgoritmo di camminata 112

Figura 66 Robot in movimento nellrsquoambiente

Al raggiungimento dellrsquoobiettivo destinazione sulla mappa appariragrave oltre il

percorso ideale il percorso effettivamente compiuto dal robot dandoci in uscita

anche le approssimazioni al valore reale di destinazione

Figura 67 Immagini del percorso trovatoin verde percorso ideale in blu percorso

effettivo

Tali valori rappresentano la distanza ancora da percorrere e la scelta

dellrsquoulteriore passo da intraprendere per compierla

Sviluppo dellrsquoalgoritmo di camminata 113

SONO ARRIVATO A DISTANZA DALL OBIETTIVO DIX = 35527e-015 Y = -03200 testo = devo fare ancora ans = 16000 testo = passi correttivi indietro

Dopo averci fornito queste informazioni il controllore comanderagrave e faragrave

eseguire al robot i passi correttivi appropriati che gli mancano per il

raggiungimento della destinazione

Schema a blocchi dellrsquoultima parte dellrsquoalgoritmo

Sviluppo dellrsquoalgoritmo di camminata 114

Alzata nello start

Analisi elemento i

Avanti Indietro Passo dx Passo sx

Calcolo avanzamento complessivo

Calcolo num passi lunghi e

corretivi

Esegue passi

Memorizzo pos

Stampa percorso vero e ideale

Calcola distanza dal target

Effettua passi correttivi ancora

possibili

inizio

Esistono elementi in percorso

Calcolo indietreggiamento

complessivo

Esegue passo

fine

no

si

1 -1 2 -2

Figura 68 Schema a blocchi movimento

Capitolo 6 Sperimentazione e analisi dei risultati

Sperimentazione e analisi dei risultati 116

61 Risultati statici

La creazione di file a se stanti contenenti tutte le possibili posture del

nostro robot e la realizzazione di procedure che identificano i passi standard

possono essere in un secondo momento cablati su un chip di controllo diretto

posizionato on-board

Questo darebbe la possibilitagrave reale al robot di deambulare senza

condizionamento con un Pc remoto Il processo di creazione dei percorsi vincola

perograve il movimento in quanto non sono presenti tuttora sensori di visione

Possiamo inoltre affermare che tra gli stili di camminata da noi studiati ha

un ruolo fondamentale la camminata quasi-statica che effettivamente permette il

movimento del robot in ambiente piano la camminata quasi dinamica richiede

ulteriori fasi di analisi soprattutto in merito al miglioramento della risposta dei

motori

Sono state effettuate diverse prove per la realizzazione di movimenti

fluidi il valore riscontrato a simulatore e di 30 frame mentre nella realizzazione

pratica a causa dei tempi di risposta egrave stato raggiunto un valor di soglia frame=8

che permette la realizzazione di movimenti continui

Sperimentazione e analisi dei risultati 117

611 Passo reale effettuato

In prima analisi poniamo le foto delle fasi piugrave significative del passo quasi-

statico compiuto da ASGARD in laboratorio

- 1 - - 2 -

- 3 - - 4 -

- 5 - - 6 -

Sperimentazione e analisi dei risultati 118

- 7 - - 8 -

- 9 - - 10 -

- 11- - 12 -

Tabella 3 Foto del passo quasi ndashstatico eseguito da ASGARD

Le foto rappresentano la sequenza di esecuzione della nostra camminata

quasi-statica nelle viste dallrsquoalto si possono notare le caratteristiche delle posture

assunte dalle zampe e si puograve verificare il poligono drsquoappoggio

Sperimentazione e analisi dei risultati 119

Da porre in particolare evidenza sono gli angoli del giunto che rappresenta

la spalla calibrati al fine di non interferire nel movimento durante il moto

Nelle viste laterali sono da porre in particolare evidenza i momenti di volo

di ogni singola alzata caratterizzandone le tempistiche di movimento

Da notare le immagini 5 6 e 1011 in cui si verifica la spinta del baricentro

in avanti nel primo caso per lrsquoavanzamento a metagrave passo nel secondo caso per

riposizionare le zampe nella posizione iniziale

612 Misurazioni reali della pressione

Durante le prove di laboratorio in merito alla camminata statica del robot

sono stati effettuati rilevamenti dellrsquounico sensore di pressione posto sotto la

zampa anteriore sinistra

Figura 69 Particolare del sensore di pressione da noi costruito (sinistra) e del

posizionamento di esso sotto la zampa anteriore sinistra (destra)

Sperimentazione e analisi dei risultati 120

I dati riscontrati sono

istanti descrizione Valori di resistenza misurati(ohm) media

passi 1 2 3 4 5 ottenuta

1 4 in appoggio 321 287 298 314 306 3052 2 alzo C 233 246 239 253 232 2406 3 appoggio C 266 275 294 278 289 2804 4 alzo B 1271 1232 1244 1262 1251 1252 5 appoggio B 98 90 99 92 87 932 6 sposto busto 311 308 298 301 287 301 7 alzo D 198 209 203 195 211 2032 8 appoggio D 302 319 311 320 301 3106 9 alzo A 180 193 184 192 177 1852

10 appoggio A 268 259 262 270 281 268 11 sposto busto 108 115 127 122 123 119 12

Assestamento

308

305

311

313

299

3072

Tabella 4 Rilevamenti sensore pressione

Da questa tabella abbiamo trasformato i valori di resistenza in forza secondo i

diagrammi di caratteristica del sensore e abbiamo trovato

val resistenza pressione

Ohm

Kg

4 in appoggio 3052 031 alzo C 2406 045

appoggio C 2804 034 alzo B 1252 002

appoggio B 932 15 sposto busto 301 0306

alzo D 2032 049 appoggio D 3106 034

alzo A 1852 055 appoggio A 268 046 sposto busto 119 06 assestamento

3072

033

Tabella 5 Trasformazione in forza dei valori misurati del sensore pressione

Sperimentazione e analisi dei risultati 121

Da cui si puograve ricavare il seguente grafico

Volori di pressione rilevati sperimentalmente

002040608

1121416

0 5 10 15

istanti temporali passo (sec)

pres

sion

e (K

g)

pressione

impatto con il suolo

Alzata

Figura 70 Grafico della pressione

Da questo possiamo notare come effettivamente il sensore rileva le

variazioni di forza peso che agiscono sulla zampa

Le misure sono state effettuate dopo un periodo di assestamento iniziale

quando effettivamente tutte le zampe sono appoggiate il carico risulta essere

minore mentre aumenta alle singole alzate delle altre tre articolazioni Si puograve

inoltre notare dal grafico come dopo lrsquoalzata la zampa subisce un forte impatto

con il terreno istante 5 e non si riposiziona piugrave esattamente corretta aderenza

qusto causa un eccessivo carico solo su alcune parti esterne del piedino (dove egrave

situato il sensore) che andranno ad aggravare le misurazioni durante le successive

alzate

Purtroppo questo incorretto posizionamento egrave causato dalla poca mobilitagrave

del giunto passivo della zampa che puograve essere migliorato solo tramite interventi

alla struttura meccanica Ulteriore vantaggio si potrebbe riscontrare con

lrsquoinserimento di un controllo di velocitagrave che eviti impatti considerevoli con il

terreno

Sperimentazione e analisi dei risultati 122

613 Confronti di cinemetica inversa

Proponiamo alcuni risultati ottenuti con i tre diversi metodi di cinematica

inversa introducendo disturbo nullo

Metodo geometrico

Metodo del gradiente

Inseguimento veloce

del gradiente Approssimazione=25 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 438

Errore in gradi 0 2 2 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3

N= 85

Errore in gradi 0 2 2 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1

Approssimazione=05 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 2030

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

N= 130

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

Tabella 6 Confronto risultati ottenuti conmetodi cinematica inversa

Sperimentazione e analisi dei risultati 123

Da cui si possono ricavare i seguenti andamenti dellrsquoerrore

Errore sul secondo giunto con approssimazione di 25 gradi

01234

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Errore sul terzo giunto con approssimazione di 25 gradi

0

1

2

3

4

0 2 4 6 8

numero angoli

erro

re (g

radi

) metodogeometrico

metodo diinseguimento delgradiente

metodo diinseguimentoveloce

Errore sul secondo giunto con approssimazione di 05 gradi

0

05

1

0 2 4 6 8

nume r o a ngol i

met odo gradient e

met odo diinseguiment o delgradient e

met odo diinsegiument oveloce

Errore sul terzo gionto con approssimazione di 05 gradi

0

05

1

15

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Figura 71 Grafici che rappresentano lrsquoandamento dellrsquoerrore trovato

Sperimentazione e analisi dei risultati 124

I valori degli angoli inseriti sono quelli effettivamente lanciati come

comando ai motori

Vediamo che nonostante il primo metodo sia il migliore in quanto fornisce

ottimi risultati con una sola iterazione ha a monte una oneroso carico di analisi

Il metodo di inseguimento veloce fornisce buoni risultati con una notevole

diminuzione del numero di iterazioni rispetto al metodo del gradiente semplice

essi si sono quindi dimostrati metodi di qualitagrave efficiente per il ritrovamento di

posizioni desiderate Si ricorda che questi metodi sono stati qui analizzati come

banco di prova per possibili applicazioni in robot presenti in laboratorio dotati di

catene cinematiche piugrave complesse (LARP di UScarfogliero[39])

62 Risultati dinamici

Dallrsquoanalisi dei grafici ottenuti tramite le formule di Newton-Eulero

presentati nel capitolo precedente possiamo affermare che i motori utilizzati sono

stati correttamente calibrati in merito di forze e torsioni a cui sono sottoposti

durante il passo

Variando il tempo di esecuzione dei movimenti otteniamoli seguente

grafico

Sperimentazione e analisi dei risultati 125

Figura 72 Grafico torsione con interpolazione limitata a 2 frame

Riducendo di molto il valore di interpolazione come si puograve vedere di

grafici i motori subiscono delle variazioni di carico molto forti in istanti

ravvicinati in quanto come giagrave piugrave volte affermato non esiste un controllo in

accelerazione e velocitagrave Vediamo inoltre come i valori di picco del giunto della

caviglia della zampa b trovati sono in stretta similitudine con i parametri misurati

nei rilevamenti del sensore di pressione posto sotto la zampa stessa I due grafici

simili nellrsquoandamento presentano come unica differenza la misura dellrsquoimpatto

con il suolo nel grafo della pressione viene rilevato mentre la torsione del motore

non evidenzia le forze di repulsione del suolo ma solo le forze i momenti e forza

di gravitagrave sullrsquoasse rotoidale del giunto

Sperimentazione e analisi dei risultati 126

Notiamo comunque che nonostante i picchi subiti i valori rimangono nei

limiti proposti dalla HITEC

Il cedimento strutturale riscontrato egrave stato quindi attribuito a imprecisioni

di laboratorio avvenute per inesperienza iniziale

621 Caratteristiche negative dei motori

6211 Velocitagrave

Una nota negativa nellrsquoutilizzo di questi servo attuatori va perograve apostrofata

in merito alla velocitagrave di rotazione che rimane di gran lunga inferiore a quella

dichiarata dalla casa costruttrice ( 023 sec60deg con carico 018 sec60deg a vuoto)

6212 Alimentazione

Un problema riscontrato durante le prove sul campo riguarda

lrsquoalimentazione I motori vengono alimentati direttamente dalla PIC che genera i

segnali la quale egrave a sua volta alimentata da un trasformatore in grado di fornire

circa 35A alla tensione di utilizzo di 6V Dopo aver riscontrato dei problemi

durante lrsquoutilizzo di piugrave motori in simultanea siamo andati a verificare i valori

effettivi di corrente assorbita a run-time Il valore dichiarato di 900mA (senza

carico) sulle specifiche HITEC [28] consentirebbe il movimento di pressocheacute tutti

i motori in simultanea ma con carico applicato si sono riscontrati valori di picco

di 18A Essendo improbabile che tutti i 12 motori vengano utilizzati in

contemporanea e sotto massimo sforzo non egrave necessario dover fornire

costantemente 216A ma risulta comunque chiaro che in alcuni casi la corrente

fornita non egrave sufficiente e ciograve causa malfunzionamenti alla PIC Oltre alla

necessitagrave di acquistare un trasformatore piugrave potente sarebbe opportuno separare

lrsquoalimentazione dei motori da quella della PIC o perlomeno apportare le

necessarie modifiche affincheacute la corrente fornita al processore non sia

strettamente dipendente da quella assorbita dai motori

Sperimentazione e analisi dei risultati 127

63 Caratteristiche del percorso

Solitamente la deambulazione per sistemi legged richiede al robot di essere

fornito di un considerevole numero di sensori per lrsquoanalisi dellrsquoambiente

La realizzazione di un nuovo algoritmo che facendo cooperare elementi di

cinematica e ricerca matematica permette la camminata fornisce un efficiente

mezzo di analisi

I dati a disposizione ci permettono di affermare che lrsquoalgoritmo di

creazione delle mappe e ricerca di percorsi minimi presenta ottime risposte a

differenti tipologie di ambienti proposti

Tra le principali doti di cui esso dispone ci permettiamo di sottolineare la

velocitagrave computazionele e la semplicitagrave di utilizzo

Inserendo infatti semplicemente le dimensioni dellrsquoarea drsquoazione e la

definizione delle coordinate dellrsquoostacolo esso rileva il percorso minimo che ci

conduce al target in tempistiche ridotte

La parte innovativa di tale algoritmo permette non solo di generare il

percorso ma di delegare al sistema la scelta del passo da intraprendere nel singolo

istante basandosi semplicemente su coordinate geometriche e su un data base di

posizioni possibili

La fase di decisione del passo da intraprendere puograve essere considerato un

buon risultato di ricerca nella creazione della prima attivitagrave celebrale di ASGARD

Sperimentazione e analisi dei risultati 128

Figura 73 Esempi di percorsi provati a simulatore

Capitolo 7 Conclusioni e sviluppi futuri

Conclusioni e sviluppi futuri 130

71 Risultati raggiunti

Il percorso di analisi svolto ci ha permesso di realizzare un prototipo di

robot quadrupede tra i piugrave leggeri presenti nella ricerca Costriuito con materiali

tecnologicamente avanzati che gli garantiscono particolari doti di elasticitagrave e

torsione richiede anche per il movimento semplici attuatori utilizzati

abitualmente nellrsquoambito del modellismo

Queste considerevoli doti pongono ASGARD in una rilevante posizione per

la realizzazione futura di consistenti progetti di Trot gait deambulazione in

ambienti ostili e superamento di ostacoli

Nonostante il nostro robot non sia fornito come GEO (vedi cap3) di una

spina dorsale adattabile la camminata da noi implementata gli fornisce stabili

posture che gli consentono un movimento rapido nellrsquoambiente

Tale innovativa camminata permette infatti al nostro robot tempistiche di

movimento per nulla invidiabili a Patrush o a Tekken (vedi cap3)

Concludendo questo lavoro possiamo affermare di aver realizzato un

potente mezzo di analisi della camminata statica e dinamica dimostrandosi

estremamente utile nelle prime fasi di analisi e nella realizzazione pratica

successiva

Essendo il nostro robot tuttora sprovvisto di sensori ci egrave parso utile

implementare un algoritmo di ricerca del percorso minimo in ambiente con

ostacoli in posizioni note

A tal fine abbiamo pensato di far cooperare diversi settori di ricerca

rielaborando algoritmi di ricerca operativae applicandoli a mappe di ambienti

Il notevole risultato ottenuto permette ad ASGARD di riconoscere

lrsquoambiente nonostante non ottenga feedback dallo stesso Questo algoritmo

rappresenta il primo sostanziale passo per la creazione di un sistema di

apprendimento per rinforzo intelligente per il nostro robot

Conclusioni e sviluppi futuri 131

La comunicazione con i servo motori ha permesso un primo reale

interfacciamento tra macchina e robot e lo studio del movimento ha permesso al

robot di compiere i suoi primi passi

72 Progetti futuri

Attualmente il robot egrave in grado di deambulare in ambiente piano e molte

sono le applicazioni e le migliorieche potrebbero essere aggiunte al controllo del

nostro automa

721 Modifiche meccaniche

Miglioramento del giunto passivo che si trova nella caviglia la fine di

realizzare un sistema mossa-smorzatore[40] che riesce ad attuire gli urti e le

oscillazioni presenti nellrsquoimpatto durante lrsquoappoggio della zampa al terreno

A tal scopo egrave stato realizzato il primo rudimentale progetto di

reingegnerizzazione del giunto ottenendo il seguente risultato

Figura 74 Caratteristiche del progetto di zampa realizzato si possono notare le

torsioni possibili su due assi

Conclusioni e sviluppi futuri 132

In esso si puograve notare come il giunto del piedino sia diventato

completamente mobile regolato solamente dalla costante elastica delle molle che

puograve essere a sua volta regolata dalle viti presenti sulla base del piedino

Il sistema molla-smorzatore egrave in grado di immagazzinare energia durante

lrsquoimpatto con il suolo e di riutilizzarla per il riposizionamento in aderenza

perfetta

Ulteriore miglioria consigliata egrave lrsquoincremento dei sensori al fine di

permettere al robot una conoscenza piugrave vasta e piugrave autonoma dellrsquoambiente

esterno Un ritorno di valori sensoriali inoltre migliorerebbe il programma da noi

realizzato permettendo la reale acquisizione di dati esterni e non forniti da utente

Il sensore fino ad oggi presente ci permette semplicemente di capire i

carichi presenti sulla zampa ma non ci fornisce ulteriori informazioni Ponendo un

sensore su ogni zampa e migliorando la struttura portante di ogni singola

cavigliaverrebbero forniti dati utili nel valutare il corretto posizionamento della

zampa e cioegrave la corretta esecuzione di ogni passo

Al fine di un futuro miglioramento della parte sensoriale egrave stata condotta

una ricerca riguardante i migliori sensori disponibili sul mercato che meglio si

adattano alle nostre problematiche tale ricerca viene presentata in Appendice A

722 Miglioramenti Hardware

Un ulteriore miglioramento egrave richiesto nella comunicazione tra computer e

scheda di comando degli attuatori

Questa scheda non permette tuttora la programmazione della PIC presente

su di essa andrebbe rivisto il circuito presente in modo da sfruttare anche i canali

di ritorno in lettura in modo da sfruttare questi ultimi per feedback sensoriali

Questo miglioramento permetterebbe lrsquoutilizzo della scheda come interfaccia di

inputoutput del robot

Conclusioni e sviluppi futuri 133

Di primaria necessitagrave egrave la differenziazione dellrsquoalimentazione dei motori

dallrsquoalimentazione della scheda per non compromettere il corretto funzionamento

della PIC

723 Miglioramenti Software

Raggiunto lrsquoobiettivo di una buona camminata quasi-statica si puograve pensare

di integrare un controllore on-board aggiungere sistemi di trasmissione wireless e

unrsquoalimentazione autonoma per rendere il robot indipendente dalla postazione

fissa

Come si puograve notare i campi di ricerca sono molto vasti da semplici

migliorie hardware al campo di Intelligenza Artificiale per dotare il robot di

potenzialitagrave che lo rendano il piugrave possibile un emulatore dei comportamenti

naturali di un mammifero

73 Conclusioni finali

A causa della complessitagrave dellrsquoanalisi e delle difficoltagrave implementative

riscontrate alcune parti richiedono ancora un grosso intervento per arrivare a

efficienti strumenti di precisione per lrsquoattuazione dei movimenti

Sono comunque da sottolineare i grandi passi compiuti In quanto in poco

piugrave di un anno il progetto egrave stato creato e messo in pratica riuscendo ad arrivare

ad un passo cruciale per il corretto funzionamento

Il continuo progresso e il continuo impegno potranno portarci in un futuro

non troppo lontano alla creazione di amici elettronici in grado di giocare con noi

e di muoversi come farebbe un normale amico a quattro zampe

Lrsquointroduzione inoltre di sistemi di camminata dinamica intelligente in

qualsiasi ambiente porterebbe evoluzioni significative anche in ambito di bio-

ingegneria ambientale rendendo in questo modo possibile lrsquoacquisizione di dati

Conclusioni e sviluppi futuri 134

provenienti da habitat inaccessibili allrsquouomo quali crateri di vulcani profonditagrave

marine o pianeti del sistema solare permettendo cosigrave una crescita culturale

dellrsquointera umanitagrave

Bibliografia

[1] NDiolaiti ldquoSistemi di navigazione per robot mobili in ambienti sconosciutirdquo

Thesis 2001

[2] J Borenstein e L Feng ldquoMeasurement and correction of systematic odometry

errors in mobile robotsrdquo In IEE Transactions on Robotics and Automation

vol7 NO 12 pag 869-880 1996

[3] KS Chong e L Kleeman ldquoAccurate odometry and error modelling for

mobile robotrdquo In Proceedings of IEEE International Conference on Robotic

and Automation pag 2783-2788 Albuquerque New Mexico 1997

[4] U Gerecke e N Sharkey ldquoQuick and Dirty Localization for a Lost Robotrdquo

University of Sheffield 1999

[5] B Yamauchi A Shultz e W Adams ldquoMobile robot exploration and map-

building with continuous localizationrdquo In Proceedings of IEEE International

Conference on Robotic and Automation pag 3715-370 Leuven Belgium

1998

[6] H TakedaC Facchinetti JC Latombe ldquoPlanning the motions of a mobile

robot in a sensory uncertainty fieldrdquo In IEEE Transactions on Pattern

Analysis and Machine Intelligence pag 1002-1017 oct 1994

[7] JP Laumond editor ldquoRobot Motion Planning and Controlrdquo Published 1999

[8] C Sanitati ldquoAnalisi e implementazione di andature per il robot quadrupede

Sony Aibordquo Thesis 2001

[9] MH Raibert ldquoLegged robots that balancerdquo MIT Press Cambridge

[10] httpmarsroversjplnasagovgalleryspacecraft

Bibliografia 136

[11] AAbourachid ldquoA new way of analysing symmetrical and asymmetrical

gait in quadrupedsrdquoCRBiologiesvol 326pag 625-630May 2003

[12] JAVilenskyJACook ldquoDo quadrupeds require a change in trunk posture

to walk backwardrdquoJournal of Biomechanicsvol33pag 911-916March 2000

[13] Oricom technology ldquoQuadruped Locomotion- Musing about running dogs

and othe 4-legged creaturesrdquo(httpwwworicomtechcomprojectslegshtm)

[14] RKurazumeKYoneda e SHiroseFeedforward and Feedback dynamic

trot gait control for quadruped walking vehicleAutonomous Robotsvol12

pag 157-1722002

[15] H Kimura I Shimoyama e H Miura ldquoDynamics in the dynamic walk of

a quadruped robotrdquo RSJ Advanced Robotics vol4 no3 pp283-301 1990U

(httpwwwkimuraisuecacjpfacultiesColliedynamic-walk-of-quadrupedhtml)

[16] M Raibert H Brown MA Chepponis EF Hastings S Murthy e FC

Wimberly ldquoDynamically Stable Legged Locomotion Second Report to

OARPArdquo Robotics Institute Carnegie Mellon University January 1983

(httpwwwaimiteduprojectsleglabrobotsquadrupedquadrupedhtml)

[17] MH Raibert M Chepponis and H Brown ldquoRunning on Four Legs As

Though They Were Onerdquo IEEE Journal of Robotics and Automation Vol

RA-2 No 2 June 1982 pp 70-82

[18] STalebiIPoulakakisEPapadopoulos e MBuehler ldquoQuadruped robot

running with a bounding gaitrdquoCenter for Intelligent MachinesMcGill

UniversityMontreal

[19] MA Lewis e LS Simo ldquoNeurocore Evolution Development and

Roboticsrdquo Sumitted to IROS 96 Osaka(httpuirvliaiuiucedutlewispicsgeoIIhtml)

[20] Y Fukuoka H Kimura e AH Cohen ldquoAdaptive Dynamic Walking of a

Quadruped Robot on Irregular Terrain based on Biological Conceptsrdquo Int

Journal of Robotics Research Vol22 No3-4 pp187-202 2003

[21] MA Lewis ldquoGait Adaptation in a Quadruped Robotrdquo Autonomous

Robot 2002 in PressIguana RoboticsInc

[22] httpwwwrobocuporg

Bibliografia 137

[23] httpwwwaibo-europecomdownloadsAIBO_Storypdf

[24] LSteel e FKaplan ldquoAibos first wordsThe social learning of language and

meaningrdquo Sony Computer Science laboratory Vub Artificial Intelligent

laboratory

[25] httpwwwopencaeczhwhw_sony-robot_aibohtml

[26] httpprojectspowerhousemuseumcomhscaiboteardownhtm

[27] M Piralli ldquoProgetto quadrupede Politecnico di Milanordquo 2004

[28] HITEC httpwwwhitecrcdcom file HS475HbpdfServomanualpdf

[29] Proprieta chimiche ldquopolicarbonatodocrdquo da

httpwwwedilportalecomedilcatalogo0EdilCatalogo_SchedaProdottoaspI

DProdotto=1897

[30] DCrespi e F Gandola ldquoScheda di interfacciamento per servomotorirdquo2004

[31] L Sciavicco e B Siciliano ldquoRobotica industriale ndash Modellistica e

controllo di Manipolatorirdquo EdMc-Graw-Hill seconda edizione 2000

[32] G Gini e V Caglioti ldquoRoboticardquo Ed Zanichelli 2003

[33] MFolgheraiter ldquoEsempi di cinematica direttainversardquoPolitecnico di

Milano Robotica 2004

[34] HElias ldquoInverse Kinematics - Improved Methodsrdquo2004

httpfreespacevirginnethugoeliasmodelsm_ik2htm

[35] JMinguez e LMontanoNearness Diagram (ND) navigationcollision

avoidance in troublesome scenariosIEEE Transaction on Robotics and

Automationvol 20NO 1 February 2004

[36] AArleoJRMillan e DFloreanoEfficient learning of variable-resolution

cognitive maps for autonomous indoor navigationIEEE Transaction on

Robotics and Automationvol 15NO 6 December 1999ruary 2004

[37] S Vigno ldquoAlgoritmo di Dijkstrardquo 2001

[38] EWDijkstra ldquoA note on two problem in connexion with graphsrdquo

Numeriche Mathematik 1269-271 1959

[39] U Scarfogliero ldquoProgettazione e sviluppo di un robot bipede a dodici

gradi di libertagrave con controllo elastico-reattivordquo Thesis 2004

Bibliografia 138

[40] PRoccoControlloimpedenzaPolitecnico di MilanoRobotica Industriale

2004

Appendice A

Appendice A 140

i Sensori nei robot a zampe disponibili sul mercato

Ersquo stata compiuta una accurata ricerca sui componenti che potrebbero

essere montati su ASGARD per migliorarne le abilitagrave e le reazioni con lrsquoambiente

esterno e su tecniche di utilizzo di semplici sensori per fornire feedback rilevanti

Tra i sensori presenti in commercio egrave stata effettuata una scrematura in

merito a efficienza peso ingombro e prezzo in quanto si ricorda la precaria

stabilitagrave del robot e il fattore sovvenzione scolastica

Forniremo dei principali sensori trovati anche una rapida descrizione del

funzionamento dello stesso per meglio comprendere le migliorie e le potenzialitagrave

che esso potragrave donare al nostro progetto

ii Dead Reckoning Stima della posizione

Dead reckoning deriva da ldquodeduced reckoningrdquo e consiste nellrsquoutilizzare

una procedura matematica per determinare la posizione istantanea di un robot a

partire dalla conoscenza dalle posizioni e velocitagrave precedenti lungo un certo

periodo di tempo Questo sistema ha ovviamente lo svantaggio di accumulare

errori della stima e per questo periodicamente la misura deve essere corretta con i

valori reali o con quelli forniti da qualche altro strumento Spesso la stima della

posizione viene chiamata odometria39[41]

Per fornire la posizione corrente possono essere utilizzate le seguenti

tipologie di sensori

39 Odometry

Appendice A 141

ii1 Encoder Ottici

Gli encoder ottici sono sensori che vengono utilizzati per effettuare misure

di rotazione Possono essere utilizzati sia per robot a ruote per misurarne la

velocitagrave di avanzamento sia per un robot con gambe per misurare lrsquoangolo di

rotazione degli arti artificiali

Si sono sviluppati due diversi tipi di encoder ottici encoder incrementali e

encoder assoluti

Gli encoder ottici incrementali servono principalmente per stabilire la

velocitagrave di rotazione mentre quelli assoluti forniscono istantaneamente lrsquoangolo

di rotazione

ii2 Encoder ottici incrementali

Gli encoder ottici incrementali sono formati da un disco routante solidale

con lrsquoasse di rotazione del sensore da un led e da due sensori ottici (tipicamente

due fotodiodi) Il disco egrave suddiviso in settori trasparenti e settori opachi Il numero

dei settori in genere egrave una potenza di 2 cioegrave 64128256 etc Il led emette una luce

sul lato del disco mentre i due fotodiodi la captano sul lato opposto Grazie alle

regioni opache si ha la possibilitagrave di vedere degli impulsi sul fotodiodo che

permettono di stabilire ad esempio la velocitagrave di rotazione ma non bastano ad

avere una indicazione sul verso della rotazione stessa Per sapere se la rotazione egrave

oraria o antioraria si egrave utilizzato un secondo fotodiodo collegato come in figura

Figura 75 Struttura encoder ottico

Appendice A 142

Come si puograve notare i due fotodiodi avranno unrsquouscita molto simile ma

sfasata causata dalle regioni opache del disco questo sfasamento ci permetteragrave di

capire il verso di rotazione

La velocitagrave di rotazione risulta essere proporzionale in modo inverso alla

larghezza degli impulsi in uscita

Questo tipo di encoder egrave molto economico tanto da essere utilizzato nelle

seconda metagrave degli anni novanta nei mouse da PC

Encoder ottico presente in commercio

ii21 EL30 E-H-I Eltra srl

Serie encoder miniaturizzati Oslash30 per applicazioni ove sia richiesto il

minimo ingombro possibile pur mantendo ottime prestazioni[42]

- Risoluzioni fino a 1000 impgiro con zero

- Varie configurazioni elettroniche disponibili con

alimentazioni fino a 24 Vdc

- Frequenza di esercizio fino a 100 Khz - Uscita

cavo eventuale connettore applicato alla fine del

cavo -

- Velocitagrave di rotazione fino a 3000 rpm - Grado di

protezione fino a IP54tensione di alimentazione 5 V

e peso di 50 g

Figura 76 Encode incrementale

EL 30 E-H-I

ii3 Encoder ottici Assoluti

Gli encoder ottici assoluti a differenza di quelli incrementali forniscono in

uscita direttamente una configurazione di bit che indicano la posizione angolare

Il dispositivo egrave composto di un disco suddiviso sempre in settori ma con

piugrave tracce una sorgente di luce e un numero di sensori di luce pari al numero di

tracce

Appendice A 143

Ad ogni traccia corrisponde un bit e ad ogni settore corrisponde un livello

Il numero di tracce e setori egrave scelto in modo da utilizzare tutte le combinazioni

possibili e quindi i livelli saranno traccenum2

Esistono perograve diversi modi per codificare ogni livello Il metodo piugrave

semplice egrave partire da 0 e incrementare di 1 il numero e utilizzare la normale

codifica binaria

Il sistema risulta essere rischioso quando due livelli consecutivi nella

codifica hanno piugrave di un bit diverso per questo motivo sono state introdotte

diverse codifiche come il codice Gray che riescono ad evitare cosigrave il problema

prima citato

Figura 77 Essempi di disco Figura 78 Struttura di rilevamento

Presenti sul mercato

ii31 Sensori ottici CORRSYS-DATRON

Tipologia a 2 assi (trasversalelongitudinale) per la misura accurata di

velocitagrave distanza percorsa angolo di imbardata[43]

S-CE con integrato giroscopio ottico Come versione S-CE ma con

incorporato un giroscopio a fibra ottica range 200degsec linearitagrave 02 1000 Hz

banda passante per avere maggiori info sul comportamento dinamico del veicolo

SL-R Ultralight Versione ultralight Racing del modello S-CE

SL 200 Sensore ottico biassiale per la misura senza scivolo di dinamiche

trasversali su larghe gamme di funzionamento Il sensore SL-200 egrave caratterizzato

da dimensioni ridottissime (ultra piatto) e per la possibilitagrave di installazione su

piccoli veicoli

Appendice A 144

La serie di encoder assoluti multigiro paralleli EAM[42] sono stati studiati

precisioni anche su esteso sviluppo lineare

sono disponibili con risoluzioni fino a 13 bit e quindi 8192 PosizioniGiro sul giro

e fino

ii32 EAM Parallelo-SSI Eltra srl

per applicazioni che richiedono alte

a risoluzioni di 12 bit 4096 Posizionigiro per i giri Le configurazioni di

uscita sono sia a codice gray che binario e le elettroniche di uscita coprono tutti i

campi di applicazione essendo disponibili in formato NPN NPN OPEN

COLLECTORPNP e PUSH PULL

Figura 79 Encoder assoluto EAM Parallelo ndashSSI

ii4 S

Sensori di grande utilitagrave per la localizzazione di oggetti presenti

un robot sono sensori che sfruttano lrsquoeffetto Doppler

Largamente utilizzati in ambito marino e aeronautico essi misurano la velocitagrave

del me

ensori Dopler

nellrsquoambiente di azione di

zzo in riferimento alla posizione del suolo Lrsquoeffetto doppler si basa sul

principio di funzionamento dello shift di frequenza unrsquoonda che viene ricevuta o

riflessa da una sorgente che si muove rispetto al mezzo In ambito terrestre le

onde spedite e ricevute sono microonde sonore

Appendice A 145

In relazione alla figura riusciamo ricavare le seguenti regole di

funzionamento

αα cos2cos O

DDA F

cFVV ==

Dove

AV = velocitagrave del terreno

DV = misura della velocitagrave tramite il sensore

α = angolo di declinazione

c = velocitagrave della luce

= scostamento in frequenza per effetto Doppler DF

OF = Frequenza emessa

La difficoltagrave di utilizzo di questo sensore diventa consistente nellrsquoutilizzo

su robot mobili in terreni accidentali in quanto gli spostamenti verticali

influiscono sulla misura di e sulla stima di DV AV

Appendice A 146

ii41 Robot Italy SRF04

Figura 80 Sensore SRF04

LSRF04 [44] e un sensore ad

ultrasuoni che unisce delle ottime

prestazioni ad un costo veramente

conveniente utilizza una tecnologia a

ultrasuoni molto semplificata

Questo sensore e dotato di un

microcontrollore che assolve tutte le

funzioni di calcolo ed elaborazione e

sufficiente inviare un impulso e leggere

leco di ritorno per stabilire con facilita

la distanza dellostacolo o delloggetto

che si trova davanti

iii Heading Sensor

Tramite lrsquoutilizzo di questi sensori si riesce in parte a compensare parte le

carenze di odometria Attraverso la stima della posizione ogni piccolo errore si

sommeragrave al precedente nella stima della posizione provocando uno scostamento

via via crescente tra la posizione reale e quella stimata Ersquo di grande aiuto

individuare immediatamente e correggere alcuni di questi errori

iii1 Giroscopio meccanico

Il giroscopio meccanico basato sulla ldquoinerziona di un rotorerdquo egrave conosciuto

giagrave dai primi del 1800 Il primo giroscopio fu costruito in germania 1810 da GC

Bohnenberger Nel 1852 il celebre francese L Foucault mostrograve che il giroscopio egrave

Appendice A 147

in grado di percepire la rotazione terrestre Essa puograve essere scomposta in due

componenti lungo un immaginario asse verticale e lungo un asse tangente alla

superficie Al polo la componente verticale saragrave di 15degora e spostandosi verso

lrsquoequatore diminuiragrave fino ad annullarsi Come per gli encoder ottici anche per i

giroscopi esistono due metodologie per fornire mediante una tensione o una

frequenza lo spostamento istantaneo o lrsquoangolo assoluto di rotazione

Figura 81 Giroscopio meccanico

Vediamo come funziona un giroscopio meccanico il rotore pilotato

elettricamente egrave sospeso ai propri assi da una coppia di cuscinetti con attrito

bassissimo I cuscinetti a loro volta sono montati su un anello ruotante chiamato

anello di sospensione interna (inner gimbal ring) Questo anello gira a sua volta

allrsquointerno di un altro anello (outer gimbal ring) La rotazione dellrsquoanello interno

definisce lrsquoasse x del giroscopio che egrave perpendicolare con lrsquoasse di rotazione del

rotore lrsquoanello esterno definisce lrsquoasse verticale del giroscopio In questa struttura

egrave da notare come lrsquoasse orizzontale saragrave allineato con il meridiano in questo modo

si potragrave calcolare la rotazione orizzontale e verticale in funzione a quella terrestre

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice

FT445533

Nuovo regolatore di giri con la piugrave moderna tecnica microprocessore con

Display LC ad 8 posti Il regolatore di giri GV ndash1 [45] mantiene la testa del rotore

Appendice A 148

in sistema di giri costante Cosigrave diventa possibile un movimento piugrave preciso e

sensibile

Al contrario di altri regolatori il GV-1 controlla anche il numero di giri del

motore Una curva a 3 punti regolabile permette la prescrizione del numero dei

giri tramite un commutatore a tre scatti oppure un canale proporzionale Nel

display viene indicato a scelta il numero di giri del motore o del rotore dove viene

memorizzato il numero di giri massimale e richiamabile in qualsiasi momento

Questo modello risulta compatibile con i servo da noi utilizzati

Programmi

bull Indicazione del numero di giri (rotore oppure

motore)

bull Memoria del numero di giri massimale

bull Messa a punto del rapporto di riduzione

bull Regolazione del punto di attivazione e

disattivazione

bull Impostazione del campo di regolazione del

numero di giri

bull Impostazione del numero di giri massimale

bull Automatica disattivazione a partire

dallacuteimpostazione del numero di giri

bull Messa a punto di una curva di regolazione a tre

punti

bull Messa a punto 3D

bull Curva di messa a punto miscela a 9 punti

bull Test magnetico con indicazione del campo

intensitagrave

bull Misurazione della tensione di batterie

bull Allarme di bassa tensione

bull Messa a punto del servo di gas ATV

Caratteristiche Tecniche

Dimensioni Regolatore 56x305x16 mm

Dimensioni Sensore oslash 10 x 16 (27) mm

Peso Regolatore 34 g

Peso Sensore 4 g

Alimentazione 38 ndash 6 V

Campo di regolazione da 1000 a 21000

girimin

Figura 82 Futaba regolatore di giri

GIVERNOR GV-1

Appendice A 149

iii12 Futaba Giroscopio FP GY 240 AVCS

Grazie allrsquoutilizzo congiunto del nuovo sensore SMM40 e della nuova

tecnica di interruttore altamente integrata SMD41 la Futaba egrave riuscita a costruire

un giroscopio di soli 25g con dimensioni decisamente contenute 27 x 27 x 20

mm

Nonostante questa minima dimensione il giroscopio egrave equipaggiato sia

con il modulo normale che quello AVCS (Heading Hold)[46]

Oltre ai vantaggi rappresentati dalle dimensioni e dal peso questo sensore

non presenta alcuna deriva dovuta alla temperatura ed egrave ampiamente insensibile

alle vibrazioni ed ai colpi

Grazie ad una elaborazione puramente digitale del segnale questo

giroscopio reagisce molto rapidamente

Caratteristiche tecniche Dimensioni

27x27x20 mm PesoWeight

25 g Alimentazione

3-6 V Temperatura d`esercizio

-10degC +50degC Figura 83 Giroscopio FP GY 240 AVCS

iii2 Giro-bussola

Questo dispositivo integra le funzionalitagrave del giroscopio e della bussola per

individuare il Nord Lrsquoindividuazione del nord egrave importante percheacute lrsquoasse di

rotazione del rotore egrave orientato lungo un meridiano lrsquoasse orizzontale del

giroscopio non risente della rotazione terrestre La direzione e lrsquointensitagrave della

40Silicon Micro Machine misure laser posizioni 41 Standar ISO9000

Appendice A 150

misura dipende dallo scostamento tra lrsquoasse del rotore e la direzione dellrsquoasse

terrestre

iii3 Giroscopio-Girobussola a fibre ottiche

Il principio su cui si basa il funzionamento dei giroscopi ottici fu scoperto

dal fisico francese Sagnac nel 1913 ed ha trovato inizialmente una sua

applicazione nella costruzione di interferometri e successivamente nei giroscopi

laser ad anello chiuso (RLG Ring Laser Gyro) Tale principio consiste nello

sdoppiare un unico raggio luminoso in due diversi raggi che viaggiano su un

medesimo percorso ottico ad anello chiuso ma in direzioni opposte un raggio

ruota in senso orario e lrsquoaltro in senso antiorario

Figura 84 Schema di principio di un giroscopio laser ad anello

Nei giroscopi RLG[47] i raggi rimbalzano fra vari specchi come mostrato

in Figura 83 nei giroscopi FOG (a fibre ottiche) i raggi scorrono dentro un fascio

di fibre ottiche lungo anche 5 Km ed avvolte in spire del diametro di alcuni

centimetri

Appendice A 151

Quando un raggio si propaga la sua fase cambia continuamente con la

distanza L percorsa e precisamente di 2π radianti per ogni tratto pari alla

lunghezza drsquoonda λ si ha pertanto

λπα L2

=

con λ = c f dove f egrave la frequenza del raggio luminoso e c egrave la velocitagrave

della luce

Nel caso in cui il giroscopio sia fisso rispetto ad un sistema inerziale i due

raggi percorrono lo stesso cammino anche se in direzioni opposte arrivando nel

ricevitore con la stessa fase Diversa egrave la situazione in cui lrsquointero sistema ruota

attorno ad un asse passante per O (asse sensibile del giroscopio) e con velocitagrave

angolare Ω in tal caso il percorso del raggio concorde con il verso di rotazione

tende ad allungarsi mentre quello dellrsquoaltro raggio tende ad accorciarsi per cui la

differenza di fase Φ dei segnali che arrivano nel ricevitore non egrave piugrave nulla ma

assume la seguente espressione

Ω=∆=Φλ

παcLD2

Dove

L = lunghezza del percorso ottico o delle fibre ottiche nei FOG

D = diametro del percorso o della bobina nei FOG

Ω = velocitagrave angolare del giroscopio attorno al suo asse sensibile

Il fattore davanti alla velocitagrave angolare Ω egrave chiamato fattore di scala ed egrave

un indicatore della sensibilitagrave dello strumento piugrave egrave alto tale fattore piugrave lo

strumento egrave in grado di misurare velocitagrave angolari molto basse come ad esempio

nel caso di quella terrestre Come si vede il fattore dipende dai dati geometrici del

percorso ottico e precisamente nel caso dei FOG dalla lunghezza delle fibre

Appendice A 152

ottiche e dal diametro delle spire Analizzando la precedente espressione si

comprende come a paritagrave di volume i giroscopi a fibre ottiche (FOG) siano molto

piugrave sensibili dei giroscopi laser (RLG)

Figura 85 Schema tipico di un giroscopio a fibre ottiche

iii31 La funzione giroscopica

Il FOG non egrave in grado da solo di indicare la direzione del nord come nei

normali giroscopi di tipo meccanico con sospensione cardanica esso egrave soltanto in

grado di misurare la componente della velocitagrave angolare terrestre lungo il suo asse

di sensibilitagrave

Per ottenere la funzione orientamento desiderata si montano tre giroscopi

disposti lungo una terna di assi cartesiani X Y e Z che puograve coincidere con i tre

assi del robot per definire il piano orizzontale si impiegano inoltre due sensori di

livello La tecnologia utilizzata egrave nota come strapdown ossia con i giroscopi

montati rigidamente su un piano fisso costantemente orientato e parallelo rispetto

ad un piano di riferimento come nella navigazione inerziale di tipo tradizionale

Nel caso di oggetto fermo lrsquounica velocitagrave angolare a cui esso risulta essere

soggetto egrave quella terrestre per cui i tre giroscopi misurerebbero le seguenti

componenti

Appendice A 153

yTx CosPCosϕρρ =

yTy SinPCosϕρρ minus=

ϕρρ Sinz T=

dove egrave facile calcolare lrsquoangolo di prova nel caso siano note la velocitagrave

ρ

yP

Τ e la latitudine ϕ

Nel caso di moto con velocitagrave VN si ha una velocitagrave angolare

supplementare pari a VNRT diretta lungo -y (RT egrave il raggio della Terra) A questa

velocitagrave si sommano inoltre altre velocitagrave angolari continuamente variabili

dovute ai moti attorno ai suoi tre assi e precisamente i moti di rollio di

beccheggio e di imbardata

yyTx CosPCos ρϕρρ +=

oT

NyTy R

VSinPCos ρϕρρ ++minus=

aT Sinz ρϕρρ +=

In realtagrave il problema viene risolto definendo inizialmente alla partenza un

sistema cartesiano di riferimento con gli assi X0 e Y0 situati nel piano orizzontale

e lrsquoasse Z0 che coincide con la verticale In tale situazione i segnali provenienti

dai sensori di livello devono essere nulli

Durante la camminata la continua misura delle tre velocitagrave angolari e

dellrsquoassetto del robot mediante i sensori di livello consentono di definire lrsquoesatto

orientamento della terna cartesiana T (X Y e Z) rispetto alla terna di riferimento

iniziale T0 (X0 Y0 e Z0) Un opportuno calcolatore provvede a convertire gli

Appendice A 154

angoli di sfasamento dovuti allrsquoeffetto Sagnac nelle corrispondenti velocitagrave

angolari integrando le velocitagrave si ottengono gli angoli

dta iii int+=+ ρα1

da cui egrave poi possibile ricavare gli angoli di rollio di beccheggio e di

imbardata Ogni ciclo di calcolo deve avere una durata molto breve inferiore

normalmente al tempo impiegato dai segnali luminosi a percorrere la bobina di

fibre ottiche (∆t = Lc = 3 nsec per L = 1 m)

iii4 Giroscopio piezoelettrico

Utilizzano la forza di Coriolis per misurare la velocitagrave di rotazione

montando tre trasduttori piezoelettrici su un prima triangolare Se uno dei sensori

egrave eccitato alla sua frequenza di risonanza la vibrazione prodotta verragrave percepita in

eguale misura dagli altri due sensori Quando il prisma viene ruotato lungo il suo

asse longitudinale la forza di Coriolis risultante causeragrave una piccola differenza

nellrsquointensitagrave di vibrazione percepita dai due trasduttori la variazione di tensione

risultante egrave direttamente e linearmente proporzionale alla velocitagrave di rotazione

Appendice A 155

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03

Giroscopio miniaturizzato[44] 26x27x11mm per 7grammi di peso Puo

essere utilizzato per bilanciare o per compensare spostamenti indesiderati di

walkers e rover Utile anche per rilevare spostamenti

Figura 86 Modello GWS PG-03 Robot Italy

iii42 Giroscopio Piezoelettrico Enc-03ja

Ersquo componente elettronico di solo 21mm x 8mm[48] Ersquo in grado di

rilevare i cambiamenti nella rotazione pur essendo ultra-piccolo ultra-leggero

con una ultra rapida-risposta e a basso costo Usa il fenomeno della forza di

Coriolis per rilevare i cambiamenti nella velocitagrave angolare di rotazione

Limitazione le girobussole hanno una lettura massima di 300 gradi al secondo e

richiederanno la calibratura

Figura 87 Giroscopio Enc-03ja

Appendice A 156

iv Sensori geomagnetici

Nella stima della posizione inevitabilmente esistono degli errori e questi

vengono misurati durante il tempo e quindi egrave molto importante poter disporre di

una misura assoluta e poter compensare o correggere appunto questi errori

Il piugrave comune sensore di questo tipo egrave la bussola magnetica La

terminologia usualmente utilizzata per misurare un campo magnetico egrave la densitagrave

di flusso magnetico B misurata in Gauss(G) Altre unitagrave di misura sono la Tesla

(T) e gamma (γ ) dove 1 Tesla = Gauss = Gamma Lrsquointensitagrave media del

campo magnetico terrestre egrave 05 G e puograve essere rappresentato come un bipolo che

fluttua sia nel tempo che nello spazio situato a 440 chilometri dal centro e

inclinato di 11deg dallrsquoasse di rotazione terrestre Questa differenza tra il polo

magnetico e il polo terrestre egrave conosciuta come declinazione e varia in funzione

del tempo e della posizione geografica

410 910

I dispositivi che misurano i campi magnetici sono detti magnetometri Per

applicazioni su robot mobili i magnetometri piugrave utilizzati si dividono nelle

seguenti famiglie

bull Bussola magnetica meccanica

bull Bussola a effetto Hall

bull Bussola a magnetoreversiva

Prima di analizzare da vicino ogni singola famiglia va precisato un

problema molto importante il campo magnetico terrestre egrave spesso distorto nelle

vicinanze di strutture metalliche questo rende difficile lrsquoimpiego di tali sensori

allrsquointerno di edifici Tuttavia questo problema egrave possibile aggirarlo utilizzando

con essi ulteriori sensori

Appendice A 157

iv1 Bussola magnetica meccanica

La prima traccia nellrsquouso della bussola risale al 2634 AC Dal XIII secolo

utilizzata in tutto il mondo in campo marittimo W Gilber [1600] fu il primo ad

esporre teorie riguardanti campi magnetici presenti sulla superficie terrestre

Le prime bussole marine consistevano in aghi magnetizzati che

fluttuavano su pezzetti di sughero immersi in acqua Questo dispositivo egrave stato

raffinato fino ad arrivare oggi giorno ad essere composto da un paio di magneti

attaccati ad un disco graduato fluttuante in una composizione di acqua alcol e

glicerina

Lrsquoerrore tra nord magnetico e nord geografico egrave conosciuto come

deviazione della bussola

decdevit CFCFHH plusmnplusmn=

Dove

tH = Direzione giusta

iH = Direzione misurata

devCF = Fattore di correzione per la deviazione della bussola

decCF = Fattore di correzione per la declinazione magnetica

Unrsquoaltra fonte potenziale di errore consiste nel dip magnetico42 dovuto alla

componente verticale del campo magnetico terrestre Questo effetto varia in base

alla latitudine possiamo affermare che le linee di forza che agiscono sono

orizzontali allrsquoequatore e verticali ai poli Per questo motivo sugli aghi delle

bussole a volte sono montati dei pesetti che pessono essere spostati al fine di

contrastare questo effetto

42 Magnetic dip

Appendice A 158

iv2 Bussola a effetto Hall

I sensori ad effetto Hall sono basati sulle osservazioni di Hall(1979) che un

conduttore e un semiconduttore immersi in un campo magnetico mostrano una

differenza di potenziale ai loro capi Il vantaggio di questi sensori egrave la possibilitagrave

di misurare il flusso in modo statico I primi sensori costruiti avevano una

sensibilitagrave e una stabilitagrave paragonabile a quella dei fluxgate43 ma negli ultimi anni

egrave migliorata fino a raggiungere i Gauss e oltre Giagrave nei primi anni 60rsquo la

Marina mostrograve interesse a questo tipo di sensori e la Motorola costruigrave un certo

numero di prototipi per valutarne le potenzialitagrave La bussola della Motorola

montava due sensori ad effetto Hall per limitare gli effetti dovuti alle variazioni di

temperatura Ogni sensore era formato da una barretta di ferro- indio- arsenico di

2 x 2 x 01 millimetri inserito in un concentratore di flusso come si vede in Figura

87

310 minus

Il concentratore di circa 5 cm incrementava la densitagrave di flusso attraverso il

sensore di due ordini di grandezza [Willey 1964] lrsquouscita di tale dispositivo egrave un

treno di impulsi ad ampiezza variabile in cui lrsquoampiezza appunto egrave proporzionale

al valore misurato Fu riscontrata una buona linearitagrave fino a densitagrave di flusso di

0001 Gauss[Willey 1962]

Figura 88 Una coppia di sensori Hall (Lega di Indio-Ferro-Arsenico)

Maenaka allrsquouniversitagrave di tecnologia di Toyohashi in giappone sviluppograve

un sensore al silicio basato su due sensori Hall montati in disposizione ortogonale

43 Bussola fluxgate sfutta campi magnetici generati da spire azionati da corrente continua

Appendice A 159

Purtoppo i risultati di questo esperimento non furono dei migliori in

quanto il sensore costruito forniva un sensibilitagrave di 1 Gauss e il campo terrestre va

da 01 Gauss allrsquoequatore fino a 09 ai poli Di notevole interesse rimane per

lrsquoessere interamente costruito in un integrato e quindi lo rende molto pratico e di

elevato interesse commerciale

iv21 1490 Digital Compass Sensor

Questo sensore[49] fornisce informazioni su scostamenti in otto direzioni

misurando il campo magnetico della terra usando la tecnologia ad effetto Hall Il

sensore 1490 internamente egrave destinato per rispondere a cambiamento direzionale

simile ad una bussola riempita liquida Rinvieragrave al senso indicato da uno

spostamento di 90 gradi in circa 25 secondi senza overswing I 1490 possono

funzionare inclinato fino a 12 gradi con lerrore accettabile Egrave connesso facilmente

a circuiti digitali ed i microprocessori

Caratteristiche Specifiche Alimentazione 5-18 volt di CC 30 mA Uscite Apra il collettore NPN affondi 25 mA per il senso Peso 225 grammi Formato un diametro da 127 millimetri alto 16 millimetri Perni 3 perni da 4 lati sui centri del 050 Temperatura -20 - +85 gradi di C

Figura 89 1490 DCS

iv3 Bussola a magnetoreversiva

Questa tipologia di sensori egrave molto interessante per il range di sensibilitagrave

che coprono ad anello aperto che va da a 50 Gauss e coprono quindi

interamente la regione interessata del flusso terrestre Ad anello chiuso hanno un

210 minus

Appendice A 160

sendibilitagrave approssimativamente di Gauss [Lenz 1990] Presentano

ulteriormente un basso assorbimento di potenza piccole dimensioni che li

posizionano tra i primi posti nella scelta di componenti

610 minus

iv31 Philips bussola AMR

Uno dei primi sensori magneto resistivi impiegati per realizzare una

bussola magnetica egrave il KMZ10B costruito dalla Philips[50] Semiconductors nel

1996 La sensibilitagrave di questo dispositivo (approssimativamente 01 mVAmcon

alimentazione di 5 V DC) comparata con il campo magnetico terrestre massimo

implica che devono essere presi con molta considerazione gli errori dovuti alla

variazione della temperatura e alle variazioni di offset[Patersen1989]Un sistema

per ovviare a questi inconvenienti egrave utilizzare lrsquoeffetto flipping44

iv4 Bussola magnetoelastica

Utilizzare materiali magneto-elastici come materiali fondamentali di

sensori in campo magnetico ad alta precisioneIl principio su cui si basano questa

famiglia di componenti egrave la variazione del modulo di Young[51] in leghe

magnetiche quando introdotte in campo magnetico esternoIl modulo di elasticitagrave

di un materiale egrave semplicemente misurato come

εσ

=E

Dove

E = Modulo di elasticitagrave

σ = Tensione applicata

44 Flipping phenomenon non trattato in questa discussione

Appendice A 161

ε = Deformazione risultante

Se la tensione applicata rimane costante la deformazione egrave inversamente

proporzionale al modulo di elasticitagrave In alcune leghe E egrave molto pronunciato

questo permette al campo magnetico di essere accuratamente determinato

misurando la variazione di lunghezza di una lega opportunatamente sollecitata da

una forza costante Esistono due tecnologie che permettono di realizzare sensori

economici e molto precisi

bull Interferometric

bull Tunneling-trip

iv41 Metglas 2605S2

Metglas[52] egrave una lega di ferro boro silicio e carbonio Il sensore egrave

costituito da un nastro della lega che in presenza di campo magnetico esterno

mostra un certo allungamento (analisi sul nastro di vetro metallico sono avvenute

al laboratorio di SERC Rutherford Appleton) I dati di riflettivitagrave sono stati

analizzati le misure forniscono modelli che hanno permesso una valutazione del

profilo di magnetizzazione vicino alla superficie del nastro In Figura 89 egrave

mostrato il circuito utilizzato per misurare la variazione di lunghezza

dellrsquoelemento magnetoresistivo

Figura 90Circuito per misurare lrsquoallungamento delle striscia magnetoresistiva

Appendice A 162

v Sensori per la modellizzazione dellrsquoambiente

Molti sensori per mappare ambienti interni sono sensori di distanza per

questo motivo verranno esposti in questo testo alcuni tra i piugrave conosciuti

vi Sensori di distanza

Esistono differenti approci per ottenere questo tipo di misura

bull Sensori basati sul tempo di volo (TOF45) di un impulso di energia

emesso che si propaga e che viene riflesso dallrsquoostacolo

bull Sensori basati sulla differenza di fase introdotta sempre nella

riflessione di un segnale ma non impulsivo

bull Sensori basati su radar a modulazione di frequenza

vi1 Sensori basati sul tempo di volo

Il funzionamento consiste nel misurare il tempo di volo di un senale da un

trasmettitore al ricevitore il percorso effettuato mentre il tempo di percorrenza

risulta esserecdT 2

=∆ dove c egrave la velocitagrave della luce

In robotica la velocitagrave della luce non riesce a trovare applicazioni pratiche

e trovano utile impiego le onde acustiche la cui velocitagrave di propagazione egrave

v=340ms I vantaggi che si trovano dallrsquoutilizzo di questo metodo sono che

emettitore e ricevitore possono essere lo stesso oggetto e che le superfici non

devono presentare particolari requisiti Gli svantaggi possono essere fronti di

salita imprecisi durante lrsquoemissione lrsquoattenuazione della radiazione riflessa che

45 Time of Fly

Appendice A 163

puograve essere influenzata da rumore lrsquoinaccuratezza nel circuito che serve a misurare

il tempo e la possibile variazione della velocitagrave di propagazione soprattutto con

onde sonore Il cono di emissione inoltre non ci permette di rilevare la forma

dellrsquooggetto Quando lrsquoonda si riflette su un oggetto si ha un fenomeno chiamato

crosstalk Utilizzando diverse misurazioni con treni di impulsi si riescono ad

avere stime abbastanza precise sullrsquooggetto riuscendo ad arrivare ad avere

precisione anche di 25 mm da una distanza di 30 cm

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502

Campo di misura tra 30 cm e 5 metri[53]

Caratteristiche

- Campo di misura tra 30 cm e 5 m (MS 6502)

-Campo di misura tra 15 cm e 10 m ( MS 6001)

-Alimentazione singola tra 75V e 15V - Gestione degli Echo multipli

- Possibilitagrave di fissaggio del sensore direttamente al circuito stampato

- Sistema di connessione MODU II - Uscita open collector

-Protezione dallrsquoinversione di polaritagrave

Figura 91 Piedinatura modello MS

6501

Figura 92 Sonar Modello MS 6501

Figura 93 Sonar Modello MS 6502

Appendice A 164

Il modulo sonar egrave un dispositivo di basso costo con il quale egrave possibile

gestire direttamente i sensori elettrostatici Polaroid per effettuare misure di

distanza Gli impulsi ad ultrasuoni sono a 499 KHz per entrambi i modelli e

vengono prodotti da un quarzo funzionante alla frequenza di 420 KHzI moduli

soso dotati di un ingresso di inibizione esterna con il quale egrave possibile

unrsquoesclusione selettiva di alcuni echo in modalitagrave di funzionamento echo multiplo

Con il dispositivo proposto egrave possibile distinguere echo di ritorno tra due oggetti

distanti 75 cm circa

Figura 94 Struttura del Mdulo Sonar

Vi sono due modalitagrave di funzionamento del sonar echo singolo e echo

multiplo

Nella funzionalitagrave ad echo singolo la gestione consite nel portare basso il

valore di INIT spedire le onde ultrasoniche e attendere la ricezione del segnale di

echo il tempo tra quando si egrave reso basso il senale di INIT e quello in cui diventa

basso ECHO indica il tempo di volo impiegato per raggiungere il target Ersquo

conveniente attendere circa 80 ms tra una spedizione e lrsquoaltra per evitare onde

ultrasoniche ancora presenti nellrsquoambiente

Nella funzionalitagrave multiplo dopo che si pone basso INIT il trasduttore

viene pilotato da 16 impulsi a frequenza 499 KHz (MS 6501) o 45 KHz (MS

Appendice A 165

6502) e di ampiezza variabile per modello (MS6501 400VMS6502 100V) ciograve

comporta lrsquoinvio di un pacchetto di onde ultrasoniche che si propagano nello

spazio Al fine di evitare lrsquoassestamento del trasduttore (fenomeno ringring) esso

viene oscurato in ricezione per 238 ms Queste tempistiche rendono possibile

lrsquoindividuazione di oggetti a distanza di 40 cm che corrispondono a tempo di volo

di 238 ms

Figura 95 Modalitagrave di funzionamento a

eho singolo

Figura 96 Modalitagrave di funzionamento a

echo multiplo

vi2 Sensore telemetro a sfasamento

Il sensore si basa sul seguente principio si separa lrsquoonda emessa in due

parti una incide lrsquooggetto e torna indietro la seconda viene riflessa su uno

specchio di cui si conosce la posizione Si calcola la differenza temporale tra le

due onde Essendo noto il cammino ottico della luce riflessa dallo specchio si egrave in

grado di determinare il cammino ottico incognito In robotica si misurano distanza

dellrsquoordine di qualche metro quindi lrsquoonda laser emessa λ egrave dellrsquoordine del metro

vi21 LIDAR lsquoLight detection and Rangingrsquo

Utilizzi molto rilevanti in questo tipo di acquisizione dati ci vengono

forniti da progetti NASA per la struttura della morfologia terrestre in particolare

in progetti DSM e DTM (Digital Surface Model e Digital Terrain Model)[54] Si

Appendice A 166

dispone di un raggio lasee di cui si analizza lrsquoecho e la distorsione conoscendo la

velocitagrave di propagazione Le misura proposte vengono elaborate per creare

coordinate 3D Dopo aver puntato su zone giagrave conosciute mediante comunicazioni

con GPRS il sistema scansiona la zona ignota per estrapolare per comparazione i

nuovi valori effettuando una misura di sfasamento tra lrsquoonda modulata emessa e

quella rientrante Analizzando opportunamente lrsquointensitagrave della luce riflessa si

potranno anche dedurre informazioni sulla tipologia del materiale analizzato

Figura 97 Esempio di acquisizione LIDAR

vi3 Triangolazione

Uno dei metodi piugrave semplici utilizzati Il soggetto egrave illuminato da uno

stretto fascio di luce che scandisce la superficie Il movimento di scansione

avviene sul piano definito dalla linea che va dallrsquooggetto al rilevatore e dal

rilevatore alla sorgente Il rilevatore egrave focalizzato su una limitata porzione di

superficie quando il rilevatore vede un piccola macchia di luce la sua distanza d

dalla superficie illuminata viene calcolata con un semplice calcolo geometrico

Appendice A 167

i

sdαtan

=

Dove

iα = angolo tra la sorgente e la linea della base

angolo di massima intensitagrave

s = distanza tra la sorgente e il rilevatore

Questo fornisce la misura di un punto se il sistema sorgente rilevatore

viene mossa su un piano egrave possibile ottenere un insieme di punti facilmente

trasformabili in coordinate tridimensionali che caratterizzano la struttura

dellrsquooggetto esaminato

Appendice A 168

vi31 IFELL Laser e Sistemi Srl

Modello[55] Caratteristiche principali

Figura 987 Serie LK

bull Campi di misura fino a 500 mm bull Tecnologia di fotorivelazione con

CCD Micropunto di lettura (fino a 30 micron)

bull Protezione IP-67 (solo teste) bull Insensibilitagrave alle variazioni di colore bull Elevata precisione anche su materiali

otticamente difficili bull Uscita analogica

Figura 99 Serie ODS

bull Campi di misura fino a 2000 mm bull Tecnologia di fotorivelazione con CCDbull Amplificatore integrato bull Protezione IP-65 bull Uscita analogica e digitale RS-232 bull Ingressouscita di sincronizzazione bull Esecuzione speciale per materiali

trasparenti

Figura 100 Serie M5

bull Campi di misura fino a 400 mm bull Tecnologia di fotorivelazione con PSD bull Protezione IP-64 (solo teste) bull Uscita analogica e digitale (opzione) bull Ingressouscita di sincronizzazione bull Comparatore integrato

Informazioni sui produttori

[41] G Arlanch ldquoSviluppo di un simulatore per il controllo dellrsquoandatura di un

quadrupederdquoThesis 1997

[42] httpwwweltrait

[43] httpwwwcorrsysdatronithomehtml

[44] httpwwwrobot-italycomproduct_infophpproducts_id

[45] httpwwwfutaba-rccomradioaccysfutm1001html

[46] httpwwweuroshop2000itcat159html

[47] MBertolini ldquoGirobussole a fibre otticherdquo ITN Viareggio

[48] httpwwwgyroscopecom

[49] httpwwwdinsmoresensorscom1490spechtm

[50] Philips ldquoKMZ10B Magnetic field sensorrdquo Data sheet 1998

[51] JP Sinnecker ldquoMateriaia magneticos doces e materiaia ferromagneticos

amorfosrdquo Reviat brasileira de Fisicavol 222000

[52] K Ivison N Cowlam MRJ Gibbs J Penfold e C Shackleton ldquoUna

misura diretta della magnetizzazione di superficie di un vetro metallico

ferromagneticordquo Edizione 23 (Il 12 Giugno 1989)

[53] Blautron ldquoModulo sonar 6501pdfrdquo ldquoModulo sonar 6502pdfrdquoItaly 2002

[54] V Adorno ldquoIl DTM e il DSM ad alta risoluzionela tecnologia laser

scanner e lrsquoutilizzo del Lidarrdquo Naturaltech

[55] wwwifelliti_sens_triangi_sens_trianghtm

Appendice B

Appendice B 171

i Manuale drsquouso

Per permettere una rapida visualizzazione dei risultati da noi trovati viene

fornito allrsquoutente un menugrave principale di scelta in cui puograve richiamare le funzioni

generate

Lrsquoutente richiameragrave direttamente dal promt di Matlab la funzione

start_asgrad(x) passando come parametro x un intero da o a 5Ad ognuno di

questi numeri corrisponderagrave una funzione

1 = visualizzazione della differenza tra passo in andatura quasi-stabile e

quasi-dinamica grafica del passo e proiezione del convex hull

2 = calcolo della cinematica e visualizzazione degli errori(in

start_asgradm posso modificare direttamente i valori delle variabili decisionali in

merito alla cinematica inversa)

3 = visualizzazione dei grafici riguardanti la forza e la torsionesui giunti

scegliendo nella funzione stessa il numero di frame da considerare

4 = generazione del movimento in un ambiente noto (per settare i

parametri riferiti allrsquoambiente bisogna modificare il file initm prima dellrsquoavvio

del programma)

5 = permette il movimento reale del robot quadrupede del politecnico di

Milano Questa funzione puograve essere richiamata dopo una serie di accorgimenti per

istaurare un corretto canale di comunicazione (collegare la porta seriale o il

convertitore USB-Seriale e accertarsi che la porta sia denominata COM 1 con

velocitagrave di trasferimento di 14400 bitsec)

Appendice B 172

ii Codice generato

ii1 Menu principale

FUNZIONE START_ASGARD funzione che avvia lesecuzione di tutto il programma permettendo allutente di selezionare la parte di analisi da visualizzare parametri in input val_scelta=valore di scelta 1= confronto passo quasi-staticoquasi-dinamico 2= studio cinematico 3= analisi dinamica 4= scelta del percorso(si ricorda che prima di sceglire questa opzione si devono settare i parametri nella funzione init per la descrizione dellambiente 5= collegamento diretto al robot fisico Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [] = start_asgard(val_scelta) if(val_scelta==1) richiamo della funzione passo_STATICO clearpulizia dello workspace end if(val_scelta==2) angoli_motori2richiamo generatrice angoli da inviare ai motori settaggio parametri funzione met=2 incr=25 g=1 cinematica(ja(28)metincrg) clear end if(val_scelta==3) fr=10setto numero di frame richiamo della funzione NW_EU clear end if(val_scelta==4) richiamo della funzione ambiente_prova

Appendice B 173

clear end if(val_scelta==5) angoli_motori2richiamo generatrice angoli da inviare ai motori n=1inizializzazione numero passi richiamo della funzione camminata_stat clear end

ii2 Confronto andatura quasi-stabile vs quasi-dinamica

FUNZIONE PASSO_STATICO Funzione che permette la comparazione tra il passo statico e il passo quasi-dinamicomostrando per ogni animazione la proiezione del centro di massa e il poligono di appoggio definizione tempistiche per movimento zampa frame=6 definizione punto vista X= 0(090)dallalto Y=90110120)angolata definizione tempo int=1(frame-1) t = [0int1] inizializzazione della figura figure(NamePasso StaticoNumbertitleoff) view(XY) richiamo inizializzazione robot init_robot DB_position posizioni zampe poszero=[0 0 0 0 0 0]posizione impressa nella pic pos_base_A=[0 0 0 -pi4 (-pi4) 0] posizione base delle zampe di destra pos_base_B=[0 0 0 pi4 pi4 0] posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento nel simulatore egrave stato ulteriormente aumentato di un fattore correttivo pos_av_A=[0 (pi4-045) 0 -pi4 -pi4 0] pos_av_B=[0 (-pi4+045) 0 pi4 pi4 0] pos_ind_A=[0 (-pi4+045) 0 -pi4 -pi4 0] pos_ind_B=[0 (pi4-045) 0 pi4 pi4 0] posizioni intermedie=punti di via per le cubiche pos_int_A1=[0 (-pi4+045) 0 0 0 0]

Appendice B 174

pos_int_B2=[0 (pi4-045) 0 0 0 0] ------------------------------------------- calcolo della traiettoria movimento in avanti zampe di sinistra jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_Bt) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint) jb_b=cubica_norm(pos_av_Bpos_base_Bint) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_Apos_base_Aint) jbb=cubica_norm(pos_base_Bpos_ind_Bint) ------------------------------ parte grafica sposto il robot al centro trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) disegno convex hull line([136 46 46][-345 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) muovo prima zampa plot2(zampad jb1) plot(zampad jb2) clf muovo seconda zampa cambia la base dappoggio disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_av_B) line([136 46 46][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jb1) plot(zampab jb2) muovo_baricentro--------------------------------------- posizioni baricentro posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa = [0735 (-pi4+04) pi4 -pi4 -pi4-03 0] posb = [0735 (34pi+04) pi4 -pi4 pi4-03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc = [0735 (3pi4+04) 3pi4 pi4 -pi4+03 0] posd = [0735 (5pi4-04) pi4 -pi4 -pi4+03 0]

Appendice B 175

qposd = [0735 pi pi4 -pi4 -pi4 0] traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -048 -1135]) t2=transl([157 -09 -1135]) t3=transl([-159 045 -1135]) t4=transl([162 0045 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno zampe view(XY) disegno zampe con cinematica da zampa puntata a bar plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposat) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(XY) base di appoggio line([136 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) movimento baricentro plot(zampab2jbarb) plot(zampad2 jbard) plot(zampaa2 jbara) plot(zampac2 jbarc) _______________________________________________________________ riposiziono zampe catena cinemetica diretta r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase tx=transl([0 -042 0]) bara=r1tx barb=r2tx barc=r3tx

Appendice B 176

bard=r4tx zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard clf disegno bas dappoggio e zampe view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_ind_Apos_base_B) line([142 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-288 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo terza zampa plot2(zampac ja1) plot(zampac ja2) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_av_Apos_base_B) line([142 464 464][-335 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-335 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo ultima zampa plot(zampaa ja1) plot(zampaa ja2) ____________________________________ sposto di nuovo il baricentro per tornare alla posizione base posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa_av = [0735 (pi4-04) pi4 -pi4 (-pi4+03) 0] posb_ind = [0735 (54pi-04) pi4 -pi4 pi4+03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc_av = [0735 (5pi4-04) 3pi4 pi4 -pi4-03 0] posd_ind = [0735 (5pi4-04) pi4 -pi4 -pi4+038 0] qposd = [0735 pi pi4 -pi4 -pi4 0] disegna traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -09 -1135]) t2=transl([164 -054 -1135]) t3=transl([-159 003 -1135]) t4=transl([162 041 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc

Appendice B 177

zampad2base=bard disegno zampe view(XY) plot(zampaa2qposa_av) plot(zampab2qposb) plot(zampac2qposc_av) plot(zampad2qposd) generazione traiettorie per baricentro jbara=cubica_norm(qposa_avposat) jbarb=cubica_norm(qposbposb_indt) jbarc=cubica_norm(qposc_av posct) jbard=cubica_norm(qposd posd_indt) clf view(XY) _____________________________- riposiziono zampe base r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -042 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard _____________________________________________ disegno base appoggio e muovo zampe line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) Analisi passo dinamico figure(NamePasso DinamicoNumbertitleoff) t = [0int1] calcolo delle traiettorie

Appendice B 178

jta1 = cubica_norm(qza qpva t) jta2 = cubica_norm(qpva qfa t) jtb1 = cubica_norm(qzb qpvb t) jtb2 = cubica_norm(qpvb qfb t) jtc1 = cubica_norm(qpvc qfc t) jtc2 = cubica_norm(qfc qzc t) jtd1 = cubica_norm(qpvd qfd t) jtd2 = cubica_norm(qfd qzd t) ------------------------------ parte grafica parto da posizione base trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegno robot e base dappoggio disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) line([136 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) view(110120) muovo prima zampa plot2(zampaa jta1) plot(zampaa jta2) clf muovo seconda zampa e cambio base appoggio disegna_robot(zampaazampabzampaczampadqfaqzbqzcqzd) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jtb1) plot(zampab jtb2) baricentro definizione cordinate baricentro posa = [0735 pi4 pi4 -pi4 0 0 ] qposa = [0735 0 pi4 -pi4 -pi4 0] posb = [0735 -pi4 34pi pi4 0 0] qposb = [0735 0 34pi pi4 -pi4 0] posc = [0735 0 pi4 -pi4 pi4 0] qposc = [0735 -pi4 pi4 -pi4 0 0] posd = [0735 0 34pi pi4 pi4 0] qposd = [0735 pi4 34pi pi4 0 0] disegno robot in corretta posizione t1=transl([-13 -13 -1135]) t2=transl([13 -13 -1135]) t3=transl([-16 045 -1135]) t4=transl([16 045 -1135]) b=zampaabasetraslazione nellorigine della zampa bara=bt1 barb= bt2 barc= bt3

Appendice B 179

bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno robot e bae appoggio line([465 428 428][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([428 175 175][-415 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposa t) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(110120) spostamento tramite rivisualizzazione ta1=transl([-029 0 0]) ta2=transl([029 0 0]) bara=ta1zampaa2base barb=ta2zampab2base barc=ta2zampac2base bard=ta1zampad2base zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 17 17][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) line([17 432 432][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) torno al robot con catena cinematica base baricentro r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -078 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb

Appendice B 180

zampacbase=barc zampadbase=bard clf view(110120) disegna_robot(zampaazampabzampaczampadqzaqzbqpvcqpvd) line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) view(110120) sposto terza zampa plot2(zampac jtc1) plot(zampac jtc2) clf disegna_robot(zampaazampabzampaczampadqzaqzbqzcqfd) line([46 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) sposta quarta zampa plot(zampad jtd1) plot(zampad jtd2) line([46 46 45][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 46 46][-324 -324 -324][-1135 -1135 -1135]ColorrLineWidth1)

ii3 Calcolo della cinematica inversa

FUNZIONE CINEMATICA Programma che permette di calcolare la cinemetica diretta ed inversa della zampa del robot in esame simula in modo opportuno lanello cinematico di controllo dando la possibilitagrave allutente di inserire un possibile disturbo esterno che non ha permesso il corretto funzionamento La variabile diturbo potragrave in future evoluzioni assumere i valori di sensori o dometrici la funzione di cinemetica inversa egrave stata implementata con tre differenti metodicalcolo del gradiente e geometrico(studiato ad ok che permette il calcolo in real time) parametri in input vetthheta = vettore degli angoli dei giunti per la cinematica diretta medodo = scelta tra i metodi di calcolo di cinematica inversa 1=geometrico 2=inseguimento del gradiente 3=inseguimento veloce del gradiente incremento_angolo = approssimazione da usare con i metodi del gradiente espressa in gradi

Appendice B 181

gomito = scelta se gomito alto (1) o basso (0) parametri output n = numero di iterazioni per il calcolo della cinematica inversa errore = errore in gradi commesso tra la posizione voluta in input e quella realmente raggiunta Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [nerrore] = cinematica(vetthetametodoincremento_angologomito) metodo=1 incremento_angolo=25 gomito=1 alto vettheta=[-pi4 pi4 pi2] errore=[] incr_ang=incremento_angolo2pi360trasformazione valore in radianti ntheta=size(vettheta) considero ogni singola riga del vettore degli angoli concentro cioegrave lanalisi sui singoli 3 valori degli angoli for(nt=1ntheta) utilizzo variabile locale theta=(vettheta(nt)) theta_i=[] v1=size(theta) for(v=1v1(11)) inizio ciclo per tutti i valori di theta inseriti calcolo CINEMATICA DIRETTA per il calcolo della posizione dellend_effector nello spazio dei giunti considero c1 il baricentro che risulta essere giunto fittizio C2=cos(theta(v1))S2=sin(theta(v1)) C3=cos(theta(v2))S3=sin(theta(v2)) C4=cos(theta(v3))S4=sin(theta(v3)) matrici prodotte dai parametri di Denavit Hartemberg A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A34=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] matrice finale end-effector T=A12A23A34 memorizzo in pos la posizione finale dellend effector calcolata si trova nei primi 3 elementi della quarta colonna della matrice T for(i=13) pos(1i)=T(i4) end pos(14)=1 siamo nelle omogenee p deve avere 4 valori disturbo=[0 0 0 0]introduco valori disturbo quando avremo i sensori avrograve in input valore posizione finale raggiunta diversa da quella calcolata ricalcolo posizione reale raggiunta pos=pos+disturbo

Appendice B 182

dalla nuova posizione calcolo la CINEMATICA INVERSA PRIMO ANGOLOricavato direttamente dalla matrice T z2=pos(12)pos(11) theta_i(11) = atan(z2) ricalcolo l aposizione corretta di intersezione degli assi avendo giagrave calcolato il valore de primo giuntosposto lorigine nel secondo giunto in base alla posizione effettiva del robotsullasse devo fare controlli per calcolare l aposizione dellend-effector rispetto alla nuova origine PIPPO=pos() if (theta_i(11)==0) pos(11)=pos(11)-(cos(theta_i(11))00573) else if pos(13)==0 pos(11)=00675+009 else if (theta_i(11)gt0) pos(11)=(pos(11)cos(theta_i(11)))-00573 else pos(11)=(pos(11)cos(theta_i(11))-00573) end end end PIPPO2=pos() METODO GEOMETRICO if (metodo==1) n=1 unica interazione dist=0 pos(11)=abs(pos(11)) pos(13)=abs(pos(13)) da analisi geometrica B = pos(11)^2+pos(13)^2 c2=(B-00675^2-009^2)(200675009) theta_i(13)=(acos(c2)) delta=atan((pos(13))(pos(11)))considerando i grafici ho valori di x e z invertiti zx=(009sin(theta_i(13))(00675+009cos(theta_i(13)))) alfa = atan(zx) se gomito alto uasato sempre if (gomito==1) theta_i(12)=(delta+alfa) end se gomito basso if (gomito==0) theta_i(12)=(delta-alfa) end calcolo errore tra dato in input e valori trovati err(11)=theta(11)-theta_i(11) err(12)=abs(theta(12))-theta_i(12)+pi2causa inversione di posizionamento motori err(13)=abs(theta(13))-theta_i(13) trasformo errore in gradi errore=[errorefix(err360(2pi))] else METODO ITERATIVO PER CALCOLARE CINEMATICA INVERSA

Appendice B 183

if (metodo==2) METODO GRADIENTE inizializzo var di appoggio a=0 b=0 n=0 dist = Calc_Distanza(abpos(11)pos(13)) calcolo distanza iniziale while (dist gt 0001) 0001 approx al millimetro 001 approx al centimetro calcolo la differenza della distanza dalla pos finale dellend-effector incrementado e decrementando gli angoli verifico se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_angbpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) -Calc_Distanza(a b-incr_angpos(11)pos(13)) a = a - gradient_a creo le nuove pos b = b - gradient_b ricalcolo la distanza e vedo se egrave minore dellapprox dist = Calc_Distanza(abpos(11)pos(13)) n=n+1incremento numero di iterazioni end else if(metodo==3) METODO FASTER GRADIENT FOLLOWING inizializzo var di appoggio a=0 b=0 n=0 speeda=0 speedb=0 dist = Calc_Distanza(abpos(11)pos(13))calcolo distanza da end effector salvo il valore del vecchio gradiente per entrambe le posizioni old_gradient_a = 0 old_gradient_b = 0 while (dist gt 0001) approssimazione al millimetro n=n+1 controllo se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_ang bpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) - Calc_Distanza(a b-incr_angpos(11)pos(13)) controllo se ci siamo gia trovati in questi valori in segno if (sign(old_gradient_a) ~= sign(gradient_a)) se gradiente ha cambiato direzione(salitadiscesa)devo arrestare e modificare valori a = a - speeda old_gradient_a (gradient_a-old_gradient_a) speeda = 0 else speeda =speeda + gradient_a se sto seguendo salita o discesa del gradiente continuo a seguirla if (sign(old_gradient_b) ~= sign(gradient_b))

Appendice B 184

b = b- speeda old_gradient_b (gradient_b-old_gradient_b) speedb = 0 else modifico posizioni raggiunte e velocitagrave speedb =speedb+gradient_b a = a- speeda b = b- speedb end end ricalcolo distanza con nuovi valori dist = Calc_Distanza(a bpos(11)pos(13)) old_gradient_a = gradient_a il grdiente appena calcolato diventa il vecchio old_gradient_b = gradient_b end else testo=inserito metodo errato end end STAMPO VALORI NEL CASO DEI GRADIENTI nstampo il numero di iterazioni che sono servite a calcolare il risultato dist theta_i(12)=a-incr_angvalori corretti sono quelli al passo precedente theta_i(13)=b-incr_ang theta_i esprimo lerrore in gradi err=theta-theta_i errore=[errorefix(err360(2pi))] end end end

ii4 Analisi del modello dinamico

FUNZIONE EULERO_BASE Funzione che effettua il calcolo dei coefficienti di newton eulero sulla singola zampa per ogni singolo giunto dellarticolazione in base alla parametrizzazione di Denavit-Hartemberg La catena cinematica qui analizzata egrave quella che ha per base il baricentro ed end effector il piedeApplicata a parametri di controllo degli attuatori(passo_avanti) parametri input theta=vettore a tre colonne che rappresenta gli angoli dei tre giunti function [forza_gen] = eulero_base(theta) theta=[ pi4 pi4 pi2 pi4 pi4 pi4 0 pi4

Appendice B 185

pi4 pi4 0 pi4 pi4 pi4 0 pi4 pi4 pi4 pi2 pi4 pi4 pi4 pi2 pi4] definizione tempistiche delta=1 [v1 n1]=size(theta) forza_gen=[] massa PESO=1 IN KG massa=[PESO4 002 002 005] gravitagrave g=[0 0 -98] tensore dinerzia del complesso braccio motore espressi in millimetri x=[0026 0003 0003 0009] y=[0054 0020 0020 004] z=[01125 00573 00675 009] I=[] matrice momento dinerzia for(i=13) I=[I (y(i)^2+z(i)^2)12 0 0 0 (x(i)^2+z(i)^2)12 0 0 0 (y(i)^2+z(i)^2)12] end for(v=1v1-1) inizio ciclo per piugrave posizioni successive ris=[] analizzo due istanti temporali successivi per estrapolare la velocitagrave for(j=1n1) ris=[ris (theta(v+1j)-theta(vj))] end d_theta=risdelta espresso in radsec dd_theta=d_thetadeltaespresso in radsec^2 C1=cos(theta(v1))S1=sin(theta(v1)) C2=cos(theta(v2))S2=sin(theta(v2)) C3=cos(theta(v3))S3=sin(theta(v3)) C4=cos(theta(v4))S4=sin(theta(v4)) Ricavo matrice di rotazione tot R=[[C1(1) (-S1(1)) 0 S1(1) C1(1) 0 0 0 1] [C2(1) 0 (-S2(1)) S2(1) 0 -C2(1) 0 1 0] [C3(1) (-S3(1)) 0 S3(1) C3(1) 0 0 0 1] [C4(1) (-S4(1)) 0 S4(1) C4(1) 0 0 0 1]]gestita come 123 cinematica diretta per il calcolo della posizione dellend_effector nello spazio dei giunti A11=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A13=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A14=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T1=A11A12A13A14

Appendice B 186

C1=cos(theta(v+11))S1=sin(theta(v+11)) C2=cos(theta(v+12))S2=sin(theta(v+12)) C3=cos(theta(v+13))S3=sin(theta(v+13)) C4=cos(theta(v+14))S4=sin(theta(v+14)) A21=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A22=[C2 0 (-S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A24=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T2=A21A22A23A24 dalle posizioni successive trovate con cinematica diretta estrapolo la posizione e da essa la velocitagrave for(i=13) pos(1i)=T2(i4)-T1(i4) end vel=posdelta acc_end_eff=veldelta vettore dallorigine della terna(i-1)al baricentro Ci R_iC=[0055125 0 0002865 0 0003375 0 00045 0 0] vettore dallorigine della terna(i)al baricentro Ci RC=[-0055125 0 0-002865 0 0-003375 0 0-0045 0 0] vettore dallorigine della terna(i-1)allorigine della terna (i) R_iI=[01125 0 000573 0 000675 0 0009 0 0] zo=[0 0 1]asse base altri parametri da calcolare velocitagrave lineare del baricentro Ci p_C=[0 0 0] velocitagrave lineare dellorigine della terna (i) p_i=[0 0 0] velocitagrave angolare del braccio omega=[0 0 0] accelerazione lineare del baricentro Ci pp_C=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione lineare dellorigine della terna (i) pp_i=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione angolare del braccio d_omega=[0 0 0] forza esercitata dal braccio (i-1) sul braccio i f=(1)acc_end_eff il primo valore rappresenta su end_effector momento mu=[0 0 0] forza generalizzata tau=[] impongo velocitagrave e accellerazioni per il braccio base inizio algoritmo inserisco formule di Newton-Eulero(vedi teoria) for(i=24) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] omega(i)=(Rot(omega(i-1)+(d_theta(1i-1)zo))) d_omega(i)=(Rot(d_omega(i-1)+(dd_theta(1i-1)zo)+cross(d_theta(1i-1)omega(i-1)zo)))

Appendice B 187

pp_i(i)=(Rotpp_i(i-1))+cross(d_omega(i)R_iI(i-1))+cross(omega(i)(cross(omega(i)R_iI(i-1)))) pp_C(i)=pp_i(i)+cross(d_omega(i)RC(i-1))+cross(omega(i)(cross(omega(i)RC(i-1)))) end TORNO indietro per calcolare le forze e i momenti i=3 r=2indici while(igt=1) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] Iner=[I((i-1)3+1)I((i-1)3+2)I((i-1)3+3)] f(r)=(Rotf(r-1))-massa(1i)pp_C(i)ho sottratto la massa perchegrave la considero forzapeso mu(r)=cross(-f(r)(R_iI(i)+RC(i)))+(Rotmu(r-1))+(Rot(cross(f(r-1)RC(i))))+(Inerd_omega(i))+cross(omega(i)(Ineromega(i))) i=i-1 r=r+1 end n2=size(mu) for(i=2n2) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] tau(i)=mu(i)Rotzo end forza_gen=[forza_gen tau] end forza_gen espressa in Nm forza_gen=(forza_gen100)98 trasformazione in cmKg

ii5 Map building

ii51 Espansione degli ostacoli

FUNZIONE ONDA_DESTINAZIONE funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input matrice= matrice di definizione mappa xend=valore dellascissa della destinazione yend=valore dellordinata della destinazione parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_destinazione(matricexendyend)

Appendice B 188

calcolo dimensioni matrice [dim1dim2] = size(matrice) for(i=1(xend-1))righe superiori ad arrivo for(j=1(dim22))per tutte le colonne matrice(i((j2)-1))=(xend-i)attribuisco valori decrescenti end end for(i=(xend+1)dim1)righe inferiori ad arrivo for(j=1(dim22)) matrice(i((j2)-1))=(i-xend)attribuisco valori a cui devo sottrarre la destinazione end end for(i=1dim1)colonne a sx ad arrivo for(j=1(yend-1))fino a colonna precedente arrivo sottraggo il numero in cui sono matrice(i((j2)-1))=matrice(i((j2)-1))+(yend-j) end end for(i=1dim1)colonne a dx ad arrivo for(j=(yend+1)(dim22))da colonna successiva a fine matrice(i((j2)-1))=matrice(i((j2)-1))+(j-yend)da valore devo sottrarre valore destinazione end end matrix=matrice restituisco matrice modificata FUNZIONE ONDA_OSTACOLOPLUS funzione che inseriscce come secondo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dallstacolo piugrave vicino valutando opportunamente la relazione tra gli ostacoli giagrave presenti parametri in input matrice= matrice di definizione mappa xposa=valore dellascissa iniziale deelostacolo xposb=valore dellascissa di fine deelostacolo yposa=valore dellordinata iniziale deelostacolo yposb=valore dellordinata di fine deelostacolo parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_ostacoloplus(matricexposaxposbyposayposb) funzione per la creazione degli ostacoli ostacolo_par(xaxbyaybc) ostacolo occupa quattro celle xayaxaybxbya xbyb definisco nuova matrice matrice_1=zeros(size(matrice)) creo onda con singolo ostacolo matrice_1=onda_ostacolo(matrice_1xposaxposbyposayposb) [dim1dim2] = size(matrice_1) confonto matrice con singolo ostacolo con matrice con giagrave presenti altri ostacoli e salvo le distanze minime da essi for(i=1dim1) for(j=1(dim22))

Appendice B 189

if(matrice_1(i(j2))ltmatrice(i(j2))) matrice(i(j2))=matrice_1(i(j2)) end end end matrice(xposayposa2)=0valori che identificano lostacolo matrice(xposa((yposa2)-1))=110 matrice(xposayposb2)=0valori che identificano lostacolo matrice(xposa((yposb2)-1))=110 matrice(xposbyposa2)=0valori che identificano lostacolo matrice(xposb((yposa2)-1))=110 matrice(xposbyposb2)=0valori che identificano lostacolo matrice(xposb((yposb2)-1))=110 espansione ostacolo if(yposa ~= 1)se sono sul bordo sinistro matrice(xposa(yposa-1)2)=0valori che identificano lespansione matrice(xposa(((yposa-1)2)-1))=109 matrice(xposb(yposa-1)2)=0valori che identificano lespansione matrice(xposb(((yposa-1)2)-1))=109 end if(yposb ~= (dim22))se sono sul bordo destro matrice(xposa(yposb+1)2)=0valori che identificano lespansione matrice(xposa(((yposb+1)2)-1))=109 matrice(xposb(yposb+1)2)=0valori che identificano lespansione matrice(xposb(((yposb+1)2)-1))=109 end matrix=matriceritorno il valore della matrice modificata

ii52 Calcolo del percorso

FUNZIONE TROVA_PERCORSO funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input xst=valore dellascissa del punto di partenza yst=valore dellordinata del punto di partenza xend=valore dellascissa del punto di arrivo yend=valore dellordinata del punto di arrivo dim1dim2=dimendioni matrice mappa posxa1posxa2posya1posya2=posizione ostacolo 1 posxb1posxb2posyb1posyb2=posizione ostacolo 2 posxc1posxc2posyc1posyc2=posizione ostacolo 3 parametri in output prova1= valori in coordinate cartesiane del percorso trovato strada_per=percorso in rappresentazione direzionale dei passi da percorrere strada_per_uso=percorso espresso in valori singoli(0=Start1=Avanti-1=Indietro-2=Sinistra2=Destra) Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005

Appendice B 190

function [prova1strada_perstrada_per_uso] = trova_percorso(xstystxendyenddim1dim2posxa1posxa2posya1posya2posxb1posxb2posyb1posyb2posxc1posxc2posyc1posyc2) non_val=[100 1 -1 -1]valore non valido 100=dist_da destinazione 1=distanza da ostacolo visitato=[150 0]marca per nodi visitati arr=[0 45]marca arrivo strada=[xst yst]memorizzo coordinate percorso dim1=5 dim2=dim22 matrice_appoggio=eye(dim1dim2) crea una matrice diagonale dim1 x dim2 matrice=zeros(size(matrice_appoggio))creo matrice vuota creo matrice con onde necessarie matrice=onda_destinazione(matricexendyend) matrice=onda_ostacolo(matriceposxa1posxa2posya1posya2) matrice=onda_ostacoloplus(matriceposxb1posxb2posyb1posyb2) matrice=onda_ostacoloplus(matriceposxc1posxc2posyc1posyc2) prova=matriceprova diventa la mia matrice i=xst j=yst parto da sorgente n=dim1dimensioni matrice m=dim22 trovato=0 creo insieme dei successivi del nodo in analisi while(trovato==0) if((igt=1)ampamp(ilt=dim1)ampamp(jgt=1)ampamp(jlt=(dim22))) if(i ~= 1)se sono ai bordi successivi=[matrice(i-1(j2)-1) matrice(i-1(j2)) i-1 j] else successivi=non_val end if(j ~= 1)se sono ai bordi successivi=[successivimatrice(i(((j-1)2)-1)) matrice(i(j-1)2) i (j-1)] else successivi=[successivinon_val] end if(i ~= n) successivi=[successivimatrice(i+1(j2)-1) matrice(i+1(j2)) i+1 j] else successivi=[successivinon_val] end if(j ~= m) successivi=[successivimatrice(i(((j+1)2)-1)) matrice(i(j+1)2) i (j+1)] else successivi=[successivinon_val] end migliore=non_valattribuisco valore enorme a migliore trov=0 scelgo il miglior successivo quello che mi porta piugrave vicino a destinazione for(k=14) if(successivi(k1)lt=migliore(1)) tra due a stessa distanza prendo quello piugrave lontano dallostacolo

Appendice B 191

if((successivi(k1)==migliore(1))ampamp(successivi(k2)ltmigliore(2))) migliore=successivi(k) trov=1 posto=ksalvo la posizione del successivo end migliore=successivi(k) trov=1 posto=k end end matrice(i(j2)-1)=visitato(1)marco percorso giagrave visitato matrice(i(j2))=visitato(2) strada=[stradamigliore(3) migliore(4)]salvo la posizione del migliore trovato se sono arrivato a destinazione ho finito if(migliore(3)==xend)ampamp(migliore(4)==yend) trovato=1 end controllo per il mancato raggiungimento del percorso i=migliore(3)cerco il successivo j=migliore(4) se il migliore tra i successivi egrave o un ostacolo o unespansione sono bloccato if((migliore(1)==150)||(migliore(1)==109)||(migliore(1)==110)) trovato=2non esiste percorso end else trovato=2 end end if(trovato==1) testo=PERCORSO TROVATO end if(trovato==2) testo=PERCORSO NON TROVATO end se ho trovato il percorso if(trovato ~= 2) prova1=stradasalvo la strada in coordinate effettuata [rc] = size(strada) dalle coordinate estrapolo la strada direzionale e una espressa in singolo valore strada_per=[ start] strada_per_uso=[0] for(k=1(r-1)) if((strada(k1)~= strada(k+11))ampamp(strada(k2)== strada(k+12))) ris=strada(k1)- strada(k+11) if (ris==1) strada_per=vertcat(strada_perIndietro) strada_per_uso=[strada_per_uso-1] else strada_per=vertcat(strada_perAvanti ) strada_per_uso=[strada_per_uso1] end

Appendice B 192

else if((strada(k1)== strada(k+11))ampamp(strada(k2)~= strada(k+12))) ris=strada(k2)- strada(k+12) if (ris==1) strada_per=vertcat(strada_perSinistra) strada_per_uso=[strada_per_uso-2] else strada_per=vertcat(strada_perDestra ) strada_per_uso=[strada_per_uso+2] end end end end stampa=strada_per end

ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente

FUNZIONE AMBIENTE_PROVA Algoritmo che richiama la funzione trova_percorso e con i risultati trovati realizza il plottaggio grafico del robot in movimento nellambiente Realizza controlli per la scelta del passo da utilizzare nellistante in esame Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 preparazione dati base figura figure grid on axis([-5 5 -5 5 -2 7]) clf init sfondo(xstartystartxendyend) ASGAR b=transl(000) posiziono il robot nello start t=transl([ystart -xstart 0]) bara=bt barb=bt barc=bt bard=bt zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard center_position(barabarbbarcbard)

Appendice B 193

chiamo la funzione trova_percorso [coord path

path_uso]=trova_percorso(xstartystartxendyenddim1dim2ostxa1ostxa2ostya1ostya2ostxb1ostxb2ostyb1ostyb2ostxc1ostxc2ostyc1ostyc2) [p k]=size(path_uso) v=1 p1=[] cont=[] per ogni elemento del percorso while(vlt=p) in relazione al percorso espresso con singoli valori if (path_uso(v)== 0)start clf alzati7chiamo funzione di alzata del robot clf sfondo(xstartystartxendyend) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) v=v+1 else if (path_uso(v)== -2) cammina_sinistra for(i=04) faccio fare CINQUE passi a sx x spst a sx=02 hold on passo_sx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 2) cammina_destra for(i=04) faccio fare CINQUE passi a dx x spost a dx =02 hold on passo_dx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 1)in avanti c=0 k=v conto per quante celle non varia la x cioegrave qunti elementi devo andare avanti while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1)

Appendice B 194

n_passi=fix(distanza07)trasformo la distanza in passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo per eccesso il rimanente for(s=1n_passi) cammina_avanti con passi lunghi hold on passo_avanti_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_avanti con passi correttivi hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] else if (path_uso(v)==-1)indietro c=0 k=v calcolo x quanti elementi ho camminata indietro while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1) n_passi=fix(distanza07)definisco n_passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo rimanente for(s=1n_passi) cammina_indietro con passi lunghi hold on passo_indietro_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_indietro con passi correttivi hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] end end end end end

Appendice B 195

end axis([-1 7 -8 1 -2 7]) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]salvo percorso fino a prima

della correzione finale correzione finale mi dice quanto sono arrivata lontano dalle destinazione desiderata [m m1]=size(percorso_effettivo) distanza=[] distanza(1)=percorso_effettivo((m-3)4)-(yend) distanza(2)=percorso_effettivo((m-2)4)-(-xend) testo=SONO ARRIVATO A DISTANZA DALL OBIETTIVO DI X=distanza(1) y=distanza(2) in base al valore di distanza mi suggerisce cosa il robot dovrebbe ancora fare if ((distanza(2)gt=02)||(distanza(2)lt=-02)) dist_fin=distanza(2)02 testo=devo fare ancora abs(dist_fin)visualizzo il modulo if(dist_fingt0) testo=passi correttivi avanti else testo=passi correttivi indietro end dopo avermi detto cosa deve fare lo esegue if(dist_finlt0) for(i=0fix(abs(dist_fin))) hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end else for(i=0fix(abs(dist_fin))) hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end end end p1=[p1zampaabase] disegno i due percorsi IDEALE e EFFETTIVO percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]aggiungo la correzione al

percorso [n n1]=size(coord)percorso ideale for(k=1(n-1)) if((coord(k1)~= coord(k+11))ampamp(coord(k2)== coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k+11)][0 0

0]ColorgLineWidth2)

Appendice B 196

else if((coord(k1)== coord(k+11))ampamp(coord(k2)~= coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k1)][0 0

0]ColorgLineWidth2) end end end PERCORSO vero che invece fa il robottino il valore delle coordinate egrave giagrave giusto come segni for(k=0(m4)-2) if((percorso_effettivo((4k)+14) ~=

percorso_effettivo((4(k+1)+1)4))||(percorso_effettivo((4k)+24) == percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4(k+1)+1)4)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo(4k+24)][0 0 0]ColorbLineWidth2) else if((percorso_effettivo((4k)+14) ==

percorso_effettivo((4(k+1)+1)4))ampamp(percorso_effettivo(4k+24) ~= percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4k)+14)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo((4(k+1)+2)4)][0 0 0]ColorbLineWidth2) end end end

ii6 Collegamento diretto con il robot fisico

ii61 Creazione degli angoli da trasmetter agli attuatori

FUNZIONE ANGOLI_MOTORI2 Funzione che crea in output larray theta_motori generando le traiettorie di movimento per il corretto funzionamento dellattuazione dei motori fisici In questa versione gli angoli di movimento risultano essere piugrave accentuati per migliorare la stabilirtagrave Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 INSERIRE NUMERO FRAME AL SECONDO frame=2 con 50 sembra continuo

Appendice B 197

int=1(frame-1)definisco il numero di intervalli in cui scandire il movimento t=[0int1] definizione variabile di controllo x=0 if (int==1) x=1 end poszero=[0 0 0]posizione impressa nella pic pos_base_A=[0 -pi4 (-pi2)]posizione base delle zampe di destra pos_base_B=[0 pi4 (pi2)]posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento pos_av_A=[(pi4-02) -pi4 -pi2] pos_av_A2=[(pi3) -pi4 -pi2] modificata accentuo movimento in avanti pos_av_B=[(-pi4+02) pi4 pi2] pos_av_B2=[(-pi3) pi4 pi2] pos_ind_A=[(-pi4+02) -pi4 -pi2] pos_ind_A2=[(-pi3) -pi4 -pi2] pos_ind_B=[(pi4-02) pi4 pi2] pos_ind_B2=[(pi3) pi4 pi2] posizioni intermedie=punti di via per le cubiche pos_int_A1=[(-pi4+02) 0 0] pos_int_A2=[(-pi3) 0 0] pos_int_B2=[(pi4-02) 0 0] pos_int_B3=[(pi3) 0 0] calcolo dellle traiettorie tramite la cubica da posizione zero a posizione base parta=cubica_norm(poszeropos_base_At) partb=cubica_norm(poszeropos_ind_Bt) partc=cubica_norm(poszeropos_ind_B2t) movimento in avanti zampe di sinistra jc1=cubica_norm(pos_ind_B2pos_int_B3t) jc2=cubica_norm(pos_int_B3pos_av_Bt) jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_B2t) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint+x) jd_b=cubica_norm(pos_base_Apos_ind_A2int+x) jb_b=cubica_norm(pos_av_B2pos_base_Bint+x) jc_b=cubica_norm(pos_av_Bpos_base_Bint+x) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_A2t) jd1=cubica_norm(pos_ind_A2pos_int_A2t) jd2=cubica_norm(pos_int_A2pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_A2pos_base_Aint+x)

Appendice B 198

jdb=cubica_norm(pos_av_Apos_base_Aint+x) jbb=cubica_norm(pos_base_Bpos_ind_Bint+x) jcb=cubica_norm(pos_base_Bpos_ind_B2int+x) costruzione dei vettori di attesa per ogni zampa pos_attesaA=[]attesa della zampa nella posizione base pos_attesaB=[] pos_attindA=[]attesa della zampa nella posizione indietro pos_attindB=[] pos_attavA=[]attesa della zampa nella posizione avanti pos_attavB=[] vettori per le attese dei movimenti delle altre zampe for(i=1(2+2int)int) pos_attesaA=[pos_attesaApos_base_A]attesa zampa in posizione base pos_attesaB=[pos_attesaBpos_base_B] pos_attindA=[pos_attindApos_ind_A]attesa zampa in posizione indietro pos_attindB=[pos_attindBpos_ind_B] pos_attavA=[pos_attavApos_av_A]attesa zampa in posizione avanti pos_attavB=[pos_attavBpos_av_B] end costruzioni vettori composti per la camminata ja=[partapos_attesaApos_attesaAja_bpos_attindAja1ja2jab] jb=[partbpos_attindBjb1jb2jb_bpos_attesaBpos_attesaBjbb] jc=[partcjc1jc2pos_attavBjc_bpos_attesaBpos_attesaBjcb] jd=[partapos_attesaApos_attesaAjd_bjd1jd2pos_attavAjdb] vettore da mandare in output ogni colonna rappresenta un motore in pos 3 4 5 6 7 8 9 10 11 12 13 14 theta_motori=[jb(1) jc(1) jb(2) jb(3) jc(2) jc(3) jd(3) jd(2) ja(3) ja(2) jd(1) ja(1)] costruzione della scala per i valori minimi valori_minimi=(-pi2)ones(112) chiamata di funzione per spedire valori ai motori moveservos_mio(theta_motori0111valori_minimi) ho messo frame 8 e valore tra un valore sparato e laltro 008 va bene

ii62 Coollegamento diretto di comunicazione con la PIC

FUNZIONE MOVESEVOS La funzione che ricevendo in imput il vettore contenente le posizioni dei motori le elabora per trasformarle in valori compatibili con la PIC (0 255)e apre una connessione di comunicazione con essa La PIC che riceveragrave in input i dati tramite la connessione seriale (impostata sulla COM1 alla velocitagrave di 9600) interpreteragrave i dati nel seguente modo

Appendice B 199

- Il primo valore indica la modalitagrave (254 = movimento dei servo) - I successivi 16 valori compresi tra 0 e 255 indicano le posizioni parametri inputpos=la matrice theta costitutita da una o piugrave righe composta da 12 elementi riferiti ai 12 attuatori timestep=indica il tempo di invio tra una sequenza e laltra ovvero il tempo che intercorre tra ogni framerigha della matrice in ingresso(valore minimo 0111) min=vettore contenente i valori min assumibili dai motori per calcolare lo zero delle posizioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 pos egrave il valore della mia theta espressa solo con 12 valori Funzione che invia i valori in output sulla seriale function moveservos_mio(postimestepmin) max_servo_rotation = pi Quanto possono ruotare i motori (pi 2pi) [rowscols] = size(pos) Crea una connessione seriale try s = serial(COM1 BaudRate14400) sByteOrder = littleEndian sTerminator = CR set(s timeout timestep)posso mettere 1 fopen(s) Laperturachiusura della seriale avviene una volta per ogni matrice theta e non ad ogni rigainvio for i=1rows pos_rel = pos(i)-min posizione relativa alla pos minima Vengono aggiunti 4 valori fittizi nulli poichegrave la seriale egrave progettata per gestire 16 motori mentre theta ne contiene 12 theta16 = [0 0 pos_rel(18) 0 pos_rel(1012) pos_rel(9) 0] Converto in valori in valori da 0 a 255 per la PIC I valori inviati compaiono anche nella command line per verifica theta16 = round(theta16255max_servo_rotation) fwrite(s 254 uchar async) readyByte = fread(s 1 uchar) fwrite(stheta16 uchar async) Controlla se la PIC ha ricevuto theta (conferma tramite valore 33) confirmByte = fread(s 1 uchar) if confirmByte ~= 33 msgbox(Errore di invio dei comandi sulla serialeErroreerror) else Valori inviati correttamente sulla seriale end pause(timestep) end

Appendice B 200

fclose(s) clear ans catch Se fallisce la connessione avverti lutente Porta seriale non connessa end

  • Introduzione
    • Unitagrave funzionali di un robot mobile
    • Obiettivo del lavoro
    • Organizzazione della tesi
      • Sistemi di locomozione
        • Scopi di studio della locomozione su zampe
        • Differenze e analogie tra locomozione a zampe e su ruote
        • Analisi Trot gait di quadrupedi
          • Studio andatura quasi-statica
          • Studio andatura quasi-dinamica
          • Studio andatura dinamica trotto
              • Stato dellrsquoarte dei four legged robot
                • Panoramica dei Robot quadrupedi esistenti
                  • Collie-1 e Collie-2
                  • Quadrupede MIT
                  • GEO
                  • Quadrupede Kimura lab
                    • Algoritmi di controllo CPG for four legged robot
                    • Robocup e Sony Aibo
                      • Storia
                      • Descrizione dei sensori di Aibo
                        • Visione della macchina
                        • Riconoscimento audio
                        • Tatto
                        • Movimento e sviluppo
                          • Architettura del robot ASGARD
                            • Configurazione del robot quadrupede
                              • Struttura Meccanica
                              • Attuatori
                              • Materiale Policarbonato
                                • ASGRAD in numeri
                                • Hardware
                                • Software
                                • Stato Attuale
                                  • Modellizzazione cinematica e dinamica
                                    • Convenzioni e simbologia utilizzata
                                    • Sistemi di coordinate e trasformazioni
                                    • Cinemetica diretta
                                      • Definizione dei parametri di Denavit Hartemberg
                                      • Metodo di assegnamento secondo D-H
                                        • Cinematica inversa
                                          • Metodo gradiente
                                            • Gradient following
                                            • Faster gradient following
                                                • Calcolo delle traiettorie
                                                • Modello dinamico Newton-Eulero
                                                • Creazione di una mappa
                                                  • Espansione degli ostacoli traformazione delle distanze
                                                    • Scelta di un percorso Algoritmo di Dijkstra
                                                      • Sviluppo dellrsquoalgoritmo di camminata
                                                        • Metodologie di sviluppo
                                                        • Progetto di una andatura
                                                          • Lo spazio
                                                          • Stabilitagrave
                                                          • Tempo
                                                            • Andature implementate
                                                            • Catene cinematiche del robot
                                                            • Passo statico e dinamico
                                                            • Formule di forza e torsione sui giunti
                                                            • Anello di Controllo
                                                            • Map-building e scelta del gait
                                                              • Costruzione della mappa ed espansione degli ostacoli
                                                              • Algoritmo di ricerca del percorso minimo
                                                              • Realizzazione del gait
                                                                  • Sperimentazione e analisi dei risultati
                                                                    • Risultati statici
                                                                      • Passo reale effettuato
                                                                      • Misurazioni reali della pressione
                                                                      • Confronti di cinemetica inversa
                                                                        • Risultati dinamici
                                                                          • Caratteristiche negative dei motori
                                                                            • Velocitagrave
                                                                            • Alimentazione
                                                                                • Caratteristiche del percorso
                                                                                  • Conclusioni e sviluppi futuri
                                                                                    • Risultati raggiunti
                                                                                    • Progetti futuri
                                                                                      • Modifiche meccaniche
                                                                                      • Miglioramenti Hardware
                                                                                      • Miglioramenti Software
                                                                                        • Conclusioni finali
                                                                                          • Bibliografia
                                                                                          • Appendice A
                                                                                            • i Sensori nei robot a zampe disponibili sul mercato
                                                                                            • ii Dead Reckoning Stima della posizione
                                                                                              • ii1 Encoder Ottici
                                                                                              • ii2 Encoder ottici incrementali
                                                                                                • ii21 EL30 E-H-I Eltra srl
                                                                                                  • ii3 Encoder ottici Assoluti
                                                                                                    • ii31 Sensori ottici CORRSYS-DATRON
                                                                                                    • ii32 EAM Parallelo-SSI Eltra srl
                                                                                                      • ii4 Sensori Dopler
                                                                                                      • ii41 Robot Italy SRF04
                                                                                                        • iii Heading Sensor
                                                                                                          • iii1 Giroscopio meccanico
                                                                                                            • iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codi
                                                                                                            • iii12 Futaba Giroscopio FP GY 240 AVCS
                                                                                                              • iii2 Giro-bussola
                                                                                                              • iii3 Giroscopio-Girobussola a fibre ottiche
                                                                                                                • iii31 La funzione giroscopica
                                                                                                                  • iii4 Giroscopio piezoelettrico
                                                                                                                    • iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03
                                                                                                                    • iii42 Giroscopio Piezoelettrico Enc-03ja
                                                                                                                        • iv Sensori geomagnetici
                                                                                                                          • iv1 Bussola magnetica meccanica
                                                                                                                          • iv2 Bussola a effetto Hall
                                                                                                                            • iv21 1490 Digital Compass Sensor
                                                                                                                              • iv3 Bussola a magnetoreversiva
                                                                                                                                • iv31 Philips bussola AMR
                                                                                                                                  • iv4 Bussola magnetoelastica
                                                                                                                                    • iv41 Metglas 2605S2
                                                                                                                                        • v Sensori per la modellizzazione dellrsquoambiente
                                                                                                                                        • vi Sensori di distanza
                                                                                                                                          • vi1 Sensori basati sul tempo di volo
                                                                                                                                            • vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502
                                                                                                                                              • vi2 Sensore telemetro a sfasamento
                                                                                                                                                • vi21 LIDAR lsquoLight detection and Rangingrsquo
                                                                                                                                                  • vi3 Triangolazione
                                                                                                                                                    • vi31 IFELL Laser e Sistemi Srl
                                                                                                                                                      • Informazioni sui produttori
                                                                                                                                                      • Appendice B
                                                                                                                                                        • i Manuale drsquouso
                                                                                                                                                        • ii Codice generato
                                                                                                                                                          • ii1 Menu principale
                                                                                                                                                          • ii2 Confronto andatura quasi-stabile vs quasi-dinamica
                                                                                                                                                          • ii3 Calcolo della cinematica inversa
                                                                                                                                                          • ii4 Analisi del modello dinamico
                                                                                                                                                          • ii5 Map building
                                                                                                                                                            • ii51 Espansione degli ostacoli
                                                                                                                                                            • ii52 Calcolo del percorso
                                                                                                                                                            • ii53 Definizione dei movimenti per la deambulazione nellrsquoa
                                                                                                                                                              • ii6 Collegamento diretto con il robot fisico
                                                                                                                                                                • ii61 Creazione degli angoli da trasmetter agli attuatori
                                                                                                                                                                • ii62 Coollegamento diretto di comunicazione con la PIC
Page 3: Analisi e sviluppo di un simulatore per gait

Indice INTRODUZIONE 8

Unitagrave funzionali di un robot mobile 10

Obiettivo del lavoro 13

Organizzazione della tesi 13

CAPITOLO 1 SISTEMI DI LOCOMOZIONE 16

11 Scopi di studio della locomozione su zampe 17

12 Differenze e analogie tra locomozione a zampe e su ruote 19

13 Analisi Trot gait di quadrupedi 22 131 Studio andatura quasi-statica 24 132 Studio andatura quasi-dinamica 25 133 Studio andatura dinamica trotto 26

CAPITOLO 2 STATO DELLrsquoARTE DEI FOUR LEGGED ROBOT 28

21 Panoramica dei Robot quadrupedi esistenti 29 211 Collie-1 e Collie-2 29 212 Quadrupede MIT 31 213 GEO 31 214 Quadrupede Kimura lab 32

22 Algoritmi di controllo CPG for four legged robot 33

23 Robocup e Sony Aibo 38 231 Storia 40 232 Descrizione dei sensori di Aibo 44

2321 Visione della macchina 44 2322 Riconoscimento audio 45 2323 Tatto 45 2324 Movimento e sviluppo 46

CAPITOLO 3 ARCHITETTURA DEL ROBOT ASGARD 47

31 Configurazione del robot quadrupede 48 311 Struttura Meccanica 48

Indice 4

312 Attuatori 50 313 Materiale Policarbonato 52

32 ASGRAD in numeri 53

33 Hardware 55

34 Software 56

35 Stato Attuale 57

CAPITOLO 4 MODELLIZZAZIONE CINEMATICA E DINAMICA 58

41 Convenzioni e simbologia utilizzata 59

42 Sistemi di coordinate e trasformazioni 60

43 Cinemetica diretta 62 431 Definizione dei parametri di Denavit Hartemberg 63 432 Metodo di assegnamento secondo D-H 65

44 Cinematica inversa 69 441 Metodo gradiente 72

4411 Gradient following 73 4412 Faster gradient following 74

45 Calcolo delle traiettorie 75

46 Modello dinamico Newton-Eulero 78

47 Creazione di una mappa 80 471 Espansione degli ostacoli traformazione delle distanze 81

48 Scelta di un percorso Algoritmo di Dijkstra 83

CAPITOLO 5 SVILUPPO DELLrsquoALGORITMO DI CAMMINATA 84

51 Metodologie di sviluppo 85

52 Progetto di una andatura 85 521 Lo spazio 86 522 Stabilitagrave 87 523 Tempo 88

53 Andature implementate 88

Indice 5

54 Catene cinematiche del robot 90

55 Passo statico e dinamico 96

56 Formule di forza e torsione sui giunti 100

57 Anello di Controllo 102

58 Map-building e scelta del gait 105 581 Costruzione della mappa ed espansione degli ostacoli 106 582 Algoritmo di ricerca del percorso minimo 108 583 Realizzazione del gait 111

CAPITOLO 6 SPERIMENTAZIONE E ANALISI DEI RISULTATI 115

61 Risultati statici 116 611 Passo reale effettuato 117 612 Misurazioni reali della pressione 119 613 Confronti di cinemetica inversa 122

62 Risultati dinamici 124 621 Caratteristiche negative dei motori 126

6211 Velocitagrave 126 6212 Alimentazione 126

63 Caratteristiche del percorso 127

CAPITOLO 7 CONCLUSIONI E SVILUPPI FUTURI 129

71 Risultati raggiunti 130

72 Progetti futuri 131 721 Modifiche meccaniche 131 722 Miglioramenti Hardware 132 723 Miglioramenti Software 133

73 Conclusioni finali 133

BIBLIOGRAFIA 135

APPENDICE A 139

i Sensori nei robot a zampe disponibili sul mercato 140

Indice 6

ii Dead Reckoning Stima della posizione 140 ii1 Encoder Ottici 141 ii2 Encoder ottici incrementali 141

ii21 EL30 E-H-I Eltra srl 142 ii3 Encoder ottici Assoluti 142

ii31 Sensori ottici CORRSYS-DATRON 143 ii32 EAM Parallelo-SSI Eltra srl 144

ii4 Sensori Dopler 144 ii41 Robot Italy SRF04 146

iii Heading Sensor 146 iii1 Giroscopio meccanico 146

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice FT445533 147 iii12 Futaba Giroscopio FP GY 240 AVCS 149

iii2 Giro-bussola 149 iii3 Giroscopio-Girobussola a fibre ottiche 150

iii31 La funzione giroscopica 152 iii4 Giroscopio piezoelettrico 154

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03 155 iii42 Giroscopio Piezoelettrico Enc-03ja 155

iv Sensori geomagnetici 156 iv1 Bussola magnetica meccanica 157 iv2 Bussola a effetto Hall 158

iv21 1490 Digital Compass Sensor 159 iv3 Bussola a magnetoreversiva 159

iv31 Philips bussola AMR 160 iv4 Bussola magnetoelastica 160

iv41 Metglas 2605S2 161

v Sensori per la modellizzazione dellrsquoambiente 162

vi Sensori di distanza 162 vi1 Sensori basati sul tempo di volo 162

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502 163 vi2 Sensore telemetro a sfasamento 165

vi21 LIDAR lsquoLight detection and Rangingrsquo 165 vi3 Triangolazione 166

vi31 IFELL Laser e Sistemi Srl 168

INFORMAZIONI SUI PRODUTTORI 169

APPENDICE B 170

Indice 7

i Manuale drsquouso 171

ii Codice generato 172 ii1 Menu principale 172 ii2 Confronto andatura quasi-stabile vs quasi-dinamica 173 ii3 Calcolo della cinematica inversa 180 ii4 Analisi del modello dinamico 184 ii5 Map building 187

ii51 Espansione degli ostacoli 187 ii52 Calcolo del percorso 189 ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente 192

ii6 Collegamento diretto con il robot fisico 196 ii61 Creazione degli angoli da trasmetter agli attuatori 196 ii62 Coollegamento diretto di comunicazione con la PIC 198

Introduzione

Introduzione 9

Negli ultimi decenni continue evoluzioni scientifico tecnologiche hanno

portato ad un radicale cambiamento nella vita umana e nella realizzazione di

progetti un tempo considerati utopici Dalle ldquoali di Leonardordquo allrsquoemulazione

della natura lrsquouomo continua ad osservare lrsquoambiente che lo circonda e

analizzandolo accuratamente egrave riuscito a costruire macchine indipendenti che lo

aiutano nelle azioni quotidiane o che semplicemente lo supportano nelle abitudini

della vita di ogni giorno

Anche se lo stato dellrsquoarte della robotica egrave ancora lontano dal realizzare

dispositivi cosigrave complessi il notevole incremento della potenzialitagrave di calcolo

permette oggi la costruzione di robot dotati di un certo grado di autonomia Un

robot puograve essere considerato autonomo tanto piugrave egrave in grado di svolgere attivitagrave

individuali senza ausili esterni e di prendere decisioni proprie di fronte a

problematiche semplici

In tale contesto di ricerca svolge un ruolo essenziale lo studio delle

interazioni tra il robot e lrsquoambiente circostante Le fasi di ricerca e sviluppo si

possono suddividere in tre fasi principali

bull lrsquoosservazione del naturale comportamento dellrsquoanimale in esame e

lo stretto contatto tra le sue abitudini(camminata corsa trotto) e il

suo habitat

bull la costruzione del progetto e lo sviluppo del modello rendendo il

piugrave possibile congruente le caratteristiche fisiche naturali con la

strumentazione a noi disponibile

bull la realizzazione pratica del progetto

Introduzione 10

Figura 1 Fasi di Osservazione Progettazione Realizzazione

Lrsquoemulazione del movimento e la reazione del robot agli impulsi che

dovragrave essere generata deve risultare il piugrave possibile simile al comportamento

naturale

Unitagrave funzionali di un robot mobile

Un primo approccio con un robot mobile ci porta ad individuare le parti

fondamentali che lo compongono Possiamo effettuare una prima distinzione tra

ciograve che deve necessariamente essere on-board1 e ciograve che invece puograve essere svolto

anche da terminale remoto

Oltre ad attuatori e sensori che obbligatoriamente devono trovarsi sul

robot sarebbe importante che anche lrsquounitagrave di controllo si trovi su di esso affinchegrave

1 Posto sulla struttura meccanica del robot

Introduzione 11

i tempi di risposta e le dispersioni nel canale di comunicazione vengano

minimizzate Da notare lrsquoimportanza di encoder2 che permettono una stima

odometrica3 della posizione e chiudono lrsquoanello di retroazione dei motori questo

tipo di controllo egrave chiamato dead-reckoning[1]

Sul nostro robot attualmente sono posizionati solamente i motori di

attuazione e un sensore di pressione posto sotto una delle quattro zampe si

prevederagrave in futuro lrsquoincremento di sensori di cui viene fornita in seguito una

specifica (Apendice A) Questa miglioria sensoriale giagrave prevista nel progetto da

noi svolto permetteragrave la sostituzione di valori finora forzati come inputcon veri e

propri feedback4

Lrsquounitagrave di map-building che ora egrave delegata ad un compiuter remoto ha il

compito di generare le traiettorie e spedire i valori alla Pic di controllo dei

motori5 le sue potenzialitagrave potranno essere incrementate da dati sensoriali di

visione o contatto con lrsquoambiente esterno

Sensori che permettono una corretta scansione dellrsquoambiente possono

essere di molte tipologie tra i piugrave comuni sonar scanner laser telecamere fisse o a

bordo (anche se egrave molto importante tenere in considerazione il peso di tale

dispositivi) Lrsquoutilizzo di sensori differenti e algoritmi di visione richiedono un

grosso apporto di calcolo computazionale che se fatto on-board potrebbe

compromettere il funzionamento real-time6

2 sensori di rilevamento della posizione 3 forniscono posizione in base ai dati sensoriali a disposizione 4 dati sensoriali percepiti dallrsquoambiente e rinviati allrsquounitagrave di controllo 5 scheda di interfacciamento Pc-attuatori 6 reazione in tempi reali agli impulsi

Introduzione 12

Figura 2 Unitagrave funzionali che caratterizzano un robot mobile autonomo

Ulteriore elemento utile in un robot mobile egrave la sua localizzazione che

solitamente richiede calcoli con rilevatori odometrici Nel nostro progetto ci egrave

stato di grande aiuto lo sviluppo con il sistema Matlab che mantenendo in

memoria variabili matriciali ci ha reso possibile il monitoraggio del baricentro nei

singoli movimenti Tramite queste valutazioni siamo riusciti a ricavare i valori

dellrsquoerrore durante lo spostamento nelle mappe locali dellrsquoambiente create[2][3]

Una volta noto lrsquoambiente e la posizione degli ostacoli (consideriamo

lrsquoambiente noto) si passa a pianificare il moto al fine di svolgere i compiti richiesti

dallrsquoutente[4][5] Gli algoritmi di pianificazione si dividono in due grandi

categorie

bull generativi noti lrsquoambiente e la posizione del robot generano

traiettorie che minimizzano i percorsi e i tempi di reazione

aggirando gli ostacoli[6][7]

bull reattivi adattano il moto del robot a nuovi ostacoli

In generale occorre combinare entrambe le tipologie utilizzando un

pianificatore generativo sulla mappa dellrsquoambiente a disposizione e un algoritmo

Introduzione 13

reattivo nella fase di inseguimento della traiettoria per rendere il robot pronto a

reagire a cambiamenti anche improvvisi dellrsquoambiente

Obiettivo del lavoro

Scopo di tale tesi saragrave quello di realizzare algoritmi per la camminata di un

robot quadrupede al fine di permettere la realizzazione di movimenti il piugrave

possibile reali e la creazione di ipotetiche traiettorie che il robot potragrave

intraprendere in ambienti noti a priori

Al fine di testare il corretto funzionamento dei nostri risultati ci siamo

posti come obiettivo la costruzione di ASGARD (Automatic Stable Gait of A Robot

quaDruped) robot quadrupede in progetto al Politecnico di Milano e di effettuare

prove reali sul campo

Robot quadrupedi richiedono una particolare e complessa analisi di

stabilitagrave ed uno studio approfondito sul controllo del movimento Con il nostro

progetto vogliamo garantire stabilitagrave statica e dinamica e controllare lo sforzo

reale dei motori da noi utilizzati Permettere in sintesi ad ASGARD di vedere la

luce e compiere i sui primi passi

Inoltre in questa tesi verranno sviluppati un algoritmo di map-building e il

pianificatore del moto generativo (non avendo a disposizione sensori di feedback

non possiamo implementare il reattivo) utilizzando algoritmi a contenuto calcolo

computazionale che permetteranno al robot di deambulare in un ambiente noto

senza sovraccaricare il sistema ed effettuando movimenti generati dal sistema in

real time scegliendo lrsquoopportuno passo da eseguire

Organizzazione della tesi

In questo lavoro discuteremo i metodi per modellare e analizzare robot

mobili la principale analisi si concentra su robot quadrupedi dotati di arti

Introduzione 14

autonomi fino ad arrivare allrsquoimplementazione di ASGARD (Automatic Stable

Gait of A Robot quaDruped) il robot del Politecnico di Milano Lo scopo egrave fornire

uno strumento di analisi di stabilitagrave statica e dinamica per la realizzazione di una

camminata in un ambiente noto e una prima struttura di algoritmi che in futuro si

occuperanno del controllo e delle iterazioni con il mondo circostante

Tematiche discusse nei successivi capitoli

Capitolo 1

Motivazioni che ci hanno portato alla scelta di costruire un robot

quadrupede e le sue strategie di camminate possibili

Capitolo 2

Una breve panoramica sui robot quadrupedi esistenti enfatizzando le loro

caratteristiche salienti in termini di posture e sensori e i loro algoritmi principali di

controlloal fine di delineare un adeguato quadro entro cui porre il robot del

Politecnico di Milano

Capitolo 3

Analisi delle caratteristiche meccaniche e funzionali di ASGARD

Capitolo 4

Definizione degli obiettivi fissati per il progetto e presentazione della

teoria necessaria per il corretto svolgimento

Capitolo 5

Descrizione della parte di implementazione del progetto dallrsquoapplicazione

della teoria esposta nel capitolo precedente alla scrittura del codice

Introduzione 15

Capitolo 6

Discussione dei risultati e su alcune proveeseguite a simulatore e su altre

misurazioni pratiche realizzate sul robot fisico

Capitolo 7

Migliorie possibili effettuabili in futuro e conclusioni finali dellrsquoautore

Appendice A

Ricerca eseguita su sensori disponibili sul mercato che potranno essere

integrati nel progetto

Appendice B

Presentazione del manuale di utilizzo e parte di codice significativa

generato in linguaggio Matlab 65

Capitolo 1 Sistemi di locomozione

Sistemi di locomozione 17

11 Scopi di studio della locomozione su zampe

Esistono diverse motivazioni che giustificano lo studio di robot su zampe

tre le principali[8] troviamo

bull mobilitagrave fondamentale caratteristica di un robot egrave riuscire a

lavorare e svolgere le sue mansioni in tutte le tipologie di

terreni da quelli lisci ai piugrave ostili in presenza di scale o gradini

e riuscire se possibile ad evitare ostacoli non solo aggirandoli

ma anche scavalcandoli Veicoli a ruote sono la soluzione

adeguata se si pensa a terreni piani o con inclinazioni continue

ma la struttura del nostro pianeta permette il loro utilizzo in

meno della metagrave delle terre emerse Se invece pensiamo alla

crosta terrestre essa egrave quasi completamente raggiungibile da

esseri viventi (uomini animali) dotati di gambe

bull punti di appoggio isolati che ottimizzano il supporto e la

trazione e non richiedono un continuo contatto con il suolo

come succede per le ruote

bull sospensione attiva che disaccoppia la traiettoria delle gambe

da quella del corpo rendendo possibile cioegrave lo spostamento

senza sollecitazioni del carico nonostante pronunciate

sconnessioni del terreno

Queste caratteristiche in molti casi rendono indipendenti le capacitagrave del

robot dallrsquoasperitagrave del percorso dando la possibilitagrave di maggiore efficienza in

velocitagrave anche in ambienti molto ostili

Analizzare le spiccate doti di agilitagrave e mobilitagrave di animali non risulta un

facile compito essi sono in grado di muoversi velocemente e con sicurezza nelle

piugrave svariate condizioni ambientali

Sistemi di locomozione 18

Figura 3 Particolari posture animali in condizioni ambientali ostili

Nostro principio di studio risulta essere cercare metodologie di emulazione

di tali doti e successivamente applicarle a robot quadrupedi cercare i compiti

simili di locomozione e tramite questi risultati percepire problematiche e trovare

soluzioni per la mobilitagrave di strutture artificiali[9]

In particolare un robot su zampe necessita di

bull controllo del movimento dei giunti

bull controllo dellrsquoequilibrio

bull ciclicitagrave dellrsquouso delle zampe

bull punti di appoggio noti

bull calcolo della possibile traiettoria percorribile

I sistemi legged7 risiltano in diversi ambiti molto utili ai settori di ricerca

dallrsquoIntelligenza Artificiale e Sistemi di cooperazione multi-agente a semplici

robottini in grado di svolgere un unico ma non meno significativo task8 come la

pulizia di una superficie la raccolta di un oggetto o la perlustrazione di aree

pericolose con la relativa raccolta dati

7 termine inglese per rappresentare sistemi robotica dotati di quattro zampe 8 compitoincaricoobiettivo da raggiungere

Sistemi di locomozione 19

12 Differenze e analogie tra locomozione a zampe e su ruote

La principale caratteristica che diversifica le due tipologie di robot egrave la

gestione dei movimenti Per i sistemi legged la realizzazione di un passo include

al suo interno un insieme di variabili di controllo per il movimento corretto dei

giunti e la corretta sincronizzazione dei movimenti delle zampe al fine di ottenere

una adeguata andatura

Figura 4 Rover a ruote Figura 5 Rover Spirit sulla superficie di Marte[10]

Durante il passo inoltre bisogna mantenere il controllo sulla stabilitagrave e

sullrsquoequilibrio (controlli del tutto assenti in un robot a ruote) monitorare i valori

di torsione dei singoli motori accertandosi che essi non superino le soglie limite e

valutare il punto di appoggio futuro Una volta costruito un passo il compito

ricade nel continuare a ciclarlo opportunamente al fine di portare a termine il

compito richiesto superando eventuali dissestamenti del terreno o ostacoli

Un robot a ruote invece egrave in grado solo di muoversi su terreni lisci e

richiede un maggior spazio per effettuare semplici manovre Di fronte a ostacoli

anche minimi il robot a ruote dovragrave effettuare la pianificazione di una traiettoria

Sistemi di locomozione 20

per aggirare lrsquoostacolo e impiegheragrave un tempo di reazione maggiore Se un robot

a ruote si troveragrave di fronte ad uno ostacolo saragrave costretto ad attivare calcoli

opportuni che gli permetteranno di costruire una strada alternativa per il

superamento dellrsquoimprevisto Un robot a zampe invece potragrave attivare gli attuatori

al fine di scavalcare se possibile lrsquoostacolo

Figura 6 Diverse strategie per oltrepassare un ostacolo

Altro aspetto di differenziazione tra le due tipologie di robot risulta essere

la mobilitagrave della piattaforma Alcune volte risulta essere utile mantenere il carico

in una inclinazione prestabilita (ad esempio il trasporto di un grave o il

mantenimento del centro ottico di una telecamera) Nei robot a ruote il corpo egrave

solitamente solidale con lrsquoasse delle ruote e si mantiene ad una distanza fissa dal

terreno seguendolo in ogni sua inclinazione Questo risulta essere una

caratteristica utile su terreni pianeggianti ma risulta sconveniente su terreni

curvilinei In questa circostanza risulterebbe utile disaccoppiare la piattaforma con

le ruote motrici al fine di mantenere costante lrsquoinclinazione del corpo principale

Questo disaccoppiamento egrave giagrave presente nella struttura dinamica del robot

a zampe dove la postura della piattaforma risulta essere la somma di due

contributi quali

bull scelta dei punti di appoggio

bull posizione cinematica assunta da ogni singola zampa in riferimento

alle caratteristiche del terreno

Sistemi di locomozione 21

Attraverso cioegrave la posizione delle zampe il robot egrave in grado di

ammortizzare le sconnessioni del terreno e dentro i limiti cinematici e di

mantenere lrsquoasse prescelto

Figura 7 Mobilitagrave della piattaforma

Esistono comunque analogie che accomunano le due strutture di robot

esistenti la principale risulta essere la ciclicitagrave dei movimenti Nei sistemi legged

dopo aver trovato un corretto movimento per la realizzazione di un passo egrave da

ricercare il periodo in cui esso dovragrave ripetersi al fine di ottenere una camminata

con andatura corretta Per un robot a ruote il periodo risulta invece essere

semplicemente la rotazione della ruota attorno al proprio asse A paritagrave di

ripetizione di un ciclo il risultato deve essere il ritorno nella posizione iniziale e

lrsquoincremento dello spazio di lavoro

Ulteriore analogia egrave il sistema odometrico Su ogni robot sono solitamente

posizionati un discreto numero di encoder per il rilevamento della posizione Nei

robot a ruote essi sono posizionati sullrsquoasse delle ruote mentre nei legged essi

sono inseriti nelle articolazioni dove sono posizionati i motori Si possono notare

differenze consistenti a livello di calcoli effettuati ma entrambi forniscono come

risultato la posizione effettivamente raggiunta Di particolare interesse per i

calcoli egrave la sequenza di comandi dati in input al variare di essi varia la postura

finale assunta

Sempre riguardo lrsquoodometria altra caratteristica comune egrave il calcolo

dellrsquoerrore esso viene calcolato in relazione ai valori di feedback dei sensori Si

puograve presentare di due tipologie

Sistemi di locomozione 22

bull sistematico dovuto a caratteristiche proprie meccaniche del robot

bull non sistematico dovuto alle iterazioni con lrsquoambiente circostante

Errori e cause di errori verranno trattati nei capitoli successivi

13 Analisi Trot gait di quadrupedi

Tra gli esseri viventi dotati di zampe presenti in natura[11] la nostra

analisi si concentra su animali che deambulano su 4 arti Essi rappresentano una

classe animale che sfrutta particolari doti fisiche e mentali per regolare la stabilitagrave

del corpo e lrsquoagilitagrave dei movimenti

Vengono presentate di seguito alcuni gait9 di quadrupedi su terreni piani e

lrsquoanalisi dei principali fattori che ne determinano le caratteristiche e le prestazioni

in termini di velocitagrave[12]

Le principali caratteristiche sullo studio di andature sono

bull Periodicitagrave il moto prevede la sequenza ciclica del movimento di

ogni singola zampa (passo)Ogniuna di esse egrave regolata da tre

variabili di giunto ciascuna delle quali segue a sua volta una

traiettoria periodica Complicazioni ulteriori emergono se si

considerano virate o terreni sdrucciolevoli

bull Stabilitagrave caratteristica di maggiore importanza nel caso di

locomozione a zampe essa egrave assicurata quando il baricentro del

robot cade allrsquointerno del poligono di stabilitagrave ovvero quando il

margine di stabilitagrave egrave maggiore di zero Il margine di stabilitagrave

dipende dalla posizione in cui il robot si trova se fermo o in

movimento Se il robot egrave fermo tale margine si calcola come la

distanza piugrave breve dal baricentro al perimetro del poligono di

9 Andatura con passi specifici

Sistemi di locomozione 23

stabilitagrave in qualsiasi direzione durante il moto si considerano solo

le distanze nella direzione del moto (margine di stabilitagrave

longitudinale)

bull Traiettoria della zampa la traiettoria dellrsquoorgano terminale di una

zampa (piedino) si compone di tre fasi principali

bull alzata

bull avanzamento

bull appoggio

la prima ha il compito di sollevare il piede da terra la seconda

permette lrsquoavanzamento della zampa ed infine nella terza il piede

viene riposizionato a terra nella posizione base per reiterare il

procedimento

In relazione al profilo scheletrico di un vertebrato mammifero

generalizzato esso egrave in grado deambulare in diverse andature[13]

Non troppo dissimile dallrsquoarchitettura di cani cavalli o gatti il nostro robot

presenta perograve lrsquoarticolazione della spalla ruotata di 90 gradi rispetto al mammifero

comune questo gli permette di mantenere un notevole grado di stabilitagrave in quanto

incrementa il suo possibile convex hull10 ma ci obbliga a studiare un nuovo tipo

di movimento per il passo base

Inoltre il piede di appoggio risulta essere di notevoli dimensioni rispetto

alla zampa al fine di sopportare ottimamente il peso del corpo sovrastante

In base alla stabilitagrave durante il movimento la andatura di un 4-legged puograve

essere classificata in tre diverse classi principali

bull andatura quasi statica

bull andatura quasi dinamica

bull andatura dinamica

10 poligono che rappresenta la base drsquoappoggio

Sistemi di locomozione 24

131 Studio andatura quasi-statica

Una andatura si dice quasi-statica se il centro di massa della nostra

struttura cade allrsquointerno del poligono di stabilitagrave che si viene a creare

congiungendo i punti di appoggio Con questa tipologia di camminata siamo certi

che il robot assorbiragrave le possibili perturbazioni del moto con un piugrave ampio

margine di stabilitagrave

uesta andatura egrave quella riprodotta in laboratorio sul nostro soggetto le

ragioni che ci hanno portato a questa scelta oltre ai vantaggi precedentemente

citati sono

bull moderata velocitagrave

bull buona risposta in tempo degli attuatori

Per implementare le fasi di camminata abbiamo analizzato ed elaborato il

gait 4-time11 di un mammifero comune essa si basa su quattro movimenti un LF

(di sinistra-anteriore) un RR (di destra-posteriore) una RF (di destra-anteriore)

un LR (di sinistra-posteriore) quindi una ripetizione

In questo movimento si noti che lrsquoequilibrio e il supporto egrave effettuato dal

LR+RF ldquodiagonalerdquo mentre i piedini di RR e di LF sono sospesi [ posizioni 1 2 ]

e dalla diagonale opposta per gli altri 2 piedini [ posizioni 5 6 ]

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

11 Gait 4-time camminata divisa in quattro fasi

Sistemi di locomozione 25

Figura 8 Nei nove diagrammi viene descritta la completa sequenza di camminata

partendo con la zampa sinistra Le posizioni 1 e 2 mostrano la diagonale destra 3 diagonale

destra e anteriore sinistra 4 laterale sinistra 5 e 6 diagonale sinistra 7 diagonale sinistra e

anteriore destra 8 laterale destra 9 ritorno nella posizione di partenza

Questa andatura presenta un tipico movimento sinusoidale del baricentro

del corpo nel piano trasversale

In base alla configurazione del nostro robot esso non presenta una colonna

vertebrale snodabile lrsquoanalisi prodotta ci ha potato alla creazione di una andatura

che non modifica lrsquoasse su cui giace il centro di massa

132 Studio andatura quasi-dinamica

La seconda classe di camminata raggruppa andature per cui la proiezione

del centro di massa cade in alcune fasi del passo sul lato del poligono di stabilitagrave

Sistemi di locomozione 26

In queste situazioni un incorretto posizionamento degli attuatori o una

minima perturbazione potrebbe causare una perdita di stabilitagrave per questo bisogna

intervenire in tempistiche ridotte trovando soluzioni che riducano gli effetti

La velocitagrave che si riesce ad ottenere deriva da un passo di camminata

leggermente piugrave ampio eseguito in un tempo minore di frame12 pur mantenendo

quasi inalterate le fasi di esso

133 Studio andatura dinamica trotto

La classe di andatura dinamica rappresenta invece lrsquoandatura piugrave veloce

presente in natura[14] essa si basa sul concetto di tempo di volo in cui solo due

zampe o addirittura tutto il corpo non tocca il terreno andatura tipica nella corsa

di mammiferiVenendo a mancare il triangolo di appoggio bisogna trovare un

abile compromesso tra inerzia velocitagrave e potenza muscolare al fine di evitare la

perdita di equilibrio e lo slittamento delle zampe sul terreno

12 istanti temporali in cui si attua lrsquoanalisi completa

Sistemi di locomozione 27

Figura 9 Nelle posizioni 1 e 3 vengono mostrate la diagonale destra e sinistra come

supporto al trotto Le posizioni 2 e 4 mostrano il momento di flying trot che egrave raramente

osservabile a causa della velocitagrave dei movimenti Le posizioni 5 e 6 mostrano un passo di

corsa piugrave tranquillo che puograve essere eseguito da un cane stanco o non troppo motivato

Capitolo 2 Stato dellrsquoarte dei four legged robot

Stato dellrsquoarte dei four legged robot 29

21 Panoramica dei Robot quadrupedi esistenti

In questo capitolo verragrave presentata una carrellata dei moderni sviluppi

riguardanti la 4-legged robotics13

Proponiamo i progetti piugrave significativi a cui ci siamo riferiti per lrsquoanalisi e

lo sviluppo della camminata e i robot piugrave moderni che vengono utilizzati come

banchi di prova per progetti di intelligenza artificiale e multi-collaborazione che ci

potranno essere utili per evoluzioni future del nostro ASGARD

211 Collie-1 e Collie-2

Giagrave dalle prime ricerche nellrsquoambito della robotica umanoide la

realizzazione di una camminata naturale egrave stata ampiamente presa in

considerazione Nella seconda metagrave degli anni ottanta abbiamo trovato il primo

utilizzo di DC servos per la realizzazione di prototipi per la camminata dinamica

Collie-1 e la sua evoluzione Collie-2[15] Basandosi sul concetto di camminata

suddivisa come statica e dinamica lo studio ha messo in evidenza come la

camminata dinamica richiede un surplus di energia e una maggior velocitagrave di

esecuzione ponendo particolare interesse ai valori di stabilitagrave velocitagrave massima e

consumo energetico che sono alcuni dei parametri anche da noi presi in

considerazione nel nostro progetto Nello sviluppo di Collie le relazioni tra questi

criteri e i parametri (gait speed period stride length of the leg joint angles etc)

hanno portato alle seguenti deduzioni riguardanti al camminata dinamica

a) Minore egrave il periodo in cui avviene la camminata migliore egrave la stabilitagrave del

quadrupede

Ersquo desiderabile camminare con un lungo periodo e compiendo ampi passi

per riuscire ad accrescere la velocitagrave massima

13 settore della robotica che si occupa di robot a 4 zampe

Stato dellrsquoarte dei four legged robot 30

b) Crsquoegrave un periodo in cui la velocitagrave egrave massima

c) Crsquoegrave un periodo in cui si minimizza il consumo energetico per fornire

velocitagrave

d) Trot gai14t egrave desiderabile quando la prioritagrave egrave in primo piano rispetto al

consumo energetico

Pace gait15 egrave raccomandata quando la prioritagrave energetica egrave al di sopra

della velocitagrave massima

Gli esperimenti per appurare la validitagrave di queste affermazioni sono stati

effettuati con il robot Collie-2 che fisicamente presenta 3 joint16 attorno allrsquoasse di

pitch (beccheggio) e 2 joint attorno allrsquoasse di roll (rollio) per ogni gamba con un

potenziometro montato per ogni gamba e motori DC servos sistemati sui 3 joint

sullrsquoasse trasversale e 1 joint sullrsquoasse sagittale

Figura 10 Collie 2 vista semi

frontale Figura 11 Collie 2 di

fronte

Figura 12 camminata vista

laterale

14 andatura veloce di trotto 15 camminata tranquilla da crocera non veloce 16 giunto

Stato dellrsquoarte dei four legged robot 31

212 Quadrupede MIT

Realizzato al MIT (Massachusset Institute of Technology) negli anni 1984-

1987 [16] egrave composto da un unico grado di libertagrave per zampa a cui si aggiunge un

meccanismo a basso livello di coordinazione del piedino Ersquo stato sviluppato per

esplorare il funzionamento su quatto zampe e le transizioni tra tipologie diverse di

gait quali il trottino (accoppiamento zampe diagonali) pacing (accoppiamento

laterali) bounding (accoppiamento anteriore posteriore) fornendo consistenti

informazioni sulle diverse posture[17]

Figura 13 Immagine laterale camminata

robot dequadrupe del MIT

Figura 14 basato su llo stesso

meccanismo del robot del MIT Scout

prodotto allrsquoumiversitagrave di Monteal

sviluppa ampliamente il concetto di

bounding gait[18]

213 GEO

Iniziata la costruzione del progetto nel 1994 a USC GEO I [19]

presentava due grandi innovazioni una spina dorsale flessibile e zampe

riconfigurabili Queste due caratteristiche permettono al robot di emulare la

camminata di una salamandra cioegrave di far seguire al proprio baricentro un

andamento sinusoidale quando invece una zampa egrave posizionata sotto il corpo il

robot puograve deambulare come un comune mammifero quale ad esempio il cane

Stato dellrsquoarte dei four legged robot 32

Questa particolare possibilitagrave di cambiamento di tipologia di camminata egrave

rimasta nellrsquoevoluzione del modello GEO II che risulta essere molto piugrave leggero

del suo predecessore dotato si sensori di forza nei piedi e possibilitagrave di

interazione con il mondo esterno tramite reti neurali

Figura 15 GEO I nel superamento di un

ostacolo

Figura 16 GEO II in posizione base

214 Quadrupede Kimura lab

Dal Giappone e piugrave precisamente dal laboratorio di Kimura[20]

compaiono i robot piugrave avanzati in grado di camminare su terreni estremi quali

ciottolati erbe sparse o pavimentazioni sconnesse utilizzando sensori di visione I

principali in evoluzione sono Tekken-II azionato da servomotori e pilotato

manuale usando un regolatore radiofonico Futaba Le particolaritagrave di questo robot

sono il giunto della caviglia passivo con il meccanismo molla-smorzatore17 il

posizionamento di un meccanismo della molla intorno al giunto del ginocchio

dellrsquoanca al fine di ridurre il consumo di energia Sul corpo presenta diversi

sensori Tasso-girobussola per 3 ascie e 2 inclinometri per le ascie del rullo e del

passo 1 sensore per il contatto di asse egrave fissato su ogni piedino Della stessa

famiglia adatti perograve a terreni scoscesi e ondulati ricordiamo inoltre Patrush I e

Patrush II rispettivamente degli anni 2000 e 2001

17 principio fisico che attenua le sollecitazioni e incamera energia che puograve essere

successivamente sfruttata

Stato dellrsquoarte dei four legged robot 33

Figura 17 Patrush I vista

semifrontale

Figura 18 Tekken II vista laterale

22 Algoritmi di controllo CPG for four legged robot

Testato successivamente sulle potenzialitagrave di GEO II egrave stato realizzato nel

2002 il modello CPG (Central Pattern Generation)[21] che sostituisce lrsquounitagrave

centrale del controllo del sistema nervoso presente negli animali Esso propone

che lrsquoadattamento di un animale allrsquoambiente circostante puograve essere modellizzato

come un modulo adattativo (AMs Adaptative Modules) che agisce su un sistema

distribuito di oscillazioni chiamate Adaptative Ring Rules (ARRs) che simulano

semplici riflessi Lrsquoutilizzo e la costruzione di questa rete neuronale ha mostrato

come un sistema puograve auto programmarsi attraverso interazioni con lrsquoambiente

Lrsquoadattamento fa emergere spontaneamente alcuni stati discreti come il

movimento del busto la scelta tra un passo corto e la camminata da crociera e le

coordinate per un singolo giunto

Il risultato di questo modello egrave che ha permesso a un quadrupede di

imparare a camminare in pochi minuti

Basandosi su innumerevoli trattati sullo sviluppo degli impulsi del sistema

nervoso dei mammiferi (Bekoff 1985Cohen 1988) Lewis egrave riuscito a riprodurre

una rete che tenta di emulare le fasi standard e principali del comportamento

Stato dellrsquoarte dei four legged robot 34

animale in relazione ad alcuni stimoli esterni e di riuscire a comunicare questi

impulsi nervosi ai relativi attuatori per creare lrsquoazione Tuttora diversi studi sono

ancora in atto per perfezionare questa tecnica introducendo apprendimento per

rinforzo

Si puograve modellizzare il CPG come una rete di unitagrave funzionali chiamate

unit CPGs (uCPGs) Riferendosi alla figura 18 2 uCPGs sono denominate con

Tw+ e Tw- insieme esse producono il coordinamento principale del robot e

giocheranno un ruolo base nellrsquoacquisizione della camminata Alle uCPGs sono

collegati archi che rappresentano il collegamento ai muscoli estensori delle

diverse articolazioni Questi archi rendono possibile quindi il collegamento delle

unitagrave del busto con quelle del ginocchio etc

Lrsquooutput dei muscoli viene trasformato attraverso una funzione di uscita in

comandi di movimento Questi a loro volta sono ricombinati per creare impulsi

compatibili con i servos dellrsquoancae del ginocchio

Sono introdotti nella rete ulteriori parametri che servono per adattare la

rete a diversi robot

Stato dellrsquoarte dei four legged robot 35

Figura 19Organizzazione del sistema di controllo Il sistema di controllo del robot

presenta una rete di uCPG Ogni cerchio presenta un uCPGs Connessionitrasmissione di

informazioni sono visualizzate come freccie Ogni funzione Ψ converte una informazione in

comandi per i motori I comandi dei motori sono combinati insieme per produrre una

sequeza di livelli di posizione per ogni anca e ginocchio Abbreviazioni KFmuscolo flessore

ginocchio KEmuscolo estensore ginocchio HEmuscolo estensore dellrsquoanca HFmuscolo

flessore dellrsquoanca TW+torsione positivo TW-torsione negativo

Per definire meglio il controllo sono stati realizzati schemi che si basano

su controlli di posizione sulla reattivitagrave dei riflessi e sullrsquoadattamento della

torsione al modulo ambiente

Per realizzare lrsquoultimo modello egrave necessario introdurre ARRs cioegrave il

modulo adattativo dellrsquoambiente attraverso un ulteriore unitagrave computazionale

costituita da tre componenti

Stato dellrsquoarte dei four legged robot 36

Figura 20 Lrsquouso di un innato interno modello per lrsquoadattamento di CGPs La figura

mostra i componeti di un AM

Il primo componente egrave il Forward Model il quale usa una efficiente copia

di una uCPGs per predire il feedback sensoriale il secondo il Comparison egrave a tutti

gli effetti un comparatore tra il feedback sensoriale e il feedback atteso il terzo egrave

una regola che utilizza il risultato della comparazione per modulare la uCPGs in

questione

LrsquoARRs genera un segnale di output che viene indirizzato agli attuatori o a

semplici circuiti che seguono per il controllo sensoriale e rimane in attesa di

ricevere un segnale di ritorno proveniente dai sensori Il segnale di output puograve

anche essere emesso nellrsquoambiente come decisone di movimento per eventuali

robot ad esso sottomessi La creazione di movimenti puorsquo cosigrave migliorare

introducendo nuovi modelli di controllo quali adattamento della lunghezza del

busto per il coordinamento delle gambe e fase di aggiustamento

Questi modelli sono stati realizzati su robot che presentano caratteristiche

mostrate nella seguente figura e che possono essere ritrovate in GEO II

Stato dellrsquoarte dei four legged robot 37

Figura 21 Postura dei Principali Rilessi Tre tipi di simmetria sono applicati per la

distribuzione del pesoDiagonal comparazione dei piedi diagonali Anteriore verso posteriore

comparazione dai piedi anteriori ai posteriori e sullo Stesso lato comparazione dei piedi

sulla destra rispetto quelli sulla sinistra Il numero vicino ad ogni piede denota il numero del

piede

La parte per noi piugrave interessante risulta essere la postura dei riflessi statici

I risultati mostrano come viene distribuito il peso del robot sui piedi di appoggio

Inizialmente quando il robot egrave appoggiato completamente al suolo il peso risulta

essere equamente distribuito In altri casi appariranno disturbi causati da carichi

aggiuntivi come posizione del cavo di alimentazione o piugrave semplicemente alzata

della zampa per compiere un passo

Stato dellrsquoarte dei four legged robot 38

Figura 22Postura dei Riflessi Grafico che mostra la distribuzione del peso rulle

zampe del robot

Questo grafo ci rappresenta come la variazione della postura del robot

influenzi i carichi su ciascuna zampa nella nostra analisi ritroveremo un grafico

simile al precedente quando analizzeremo le forze agenti sui motori nel modello

di Newton-Eulero GEO II presenta perograve un vantaggio considerevole durante i

movimenti il robot attua una fase di ldquoaggiustaggiordquo in cui riassesta il busto per

riequilibrare la distribuzione del peso su tutte le zampe non creando scompensi

23 Robocup e Sony Aibo

RoboCup[22] egrave unrsquoiniziativa internazionale di formazione e di ricerca Egrave

un tentativo di promuovere lrsquoAI18 e lrsquoautomatismo intelligente Basati sul concetto

che una squadra di robot giochi a soccer allrsquointerno di ambienti reali o simulati le

tecnologie che vengono coinvolte devono comprendere nei loro progetti i principi

di agenti autonomi collaborazione multi-agente aquisizione di strategie

ragionamento in tempo reale e automatismo

18 Intelligent Agents

Stato dellrsquoarte dei four legged robot 39

Ersquo in RoboCup che si egrave vista la prima squadra fornita di gambe

Largamente utilizzati per la realizzazione di sistemi multiagenti dotati cioegrave di

complessi programmi di intelligenza artificiale sono i famosi Aibo Sony

Figura 23 Robot Aibo Sony durante una partita alla Robocup

Aibo egrave il miglior prodotto della Sony 4-legged robot essa coinvolge le piugrave

moderne tecnologie per concepire un amico completamente autonomo per

accompagnare ed intrattenere lrsquouomo nella vita giornaliera

Il centro di intelligenza artificiale di Aibo egrave il software Mente2 situato su

una memoria stick removibile Esso controlla il suo comportamento le sue abilitagrave

e le relative caratteristiche che possono essere incrementate con un corretto

addestramento da parte dellrsquoutente Aibo infatti implementa al suo interno un

algoritmo di apprendimento per rinforzo

Nella vita giornaliera questo software gli permette di intrattenere e

comunicare con chiunque riconoscendo intelligentemente i volti e le voci dei suoi

padroni

Per le sue particolari proprietagrave quali vedere sentire registrare suoni

oggetti e facce e riflettere una vasta gamma delle emozioni attraverso la relativa

faccia Condur-guidata19 Aibo egrave in grado di familiarizzare con ogni tipo di

ambiente ambiente e trasformarsi in ogni senso in un individuo vero e unico

19 pilotati da software intelligenti diversi led rappresentano espressioni emotive

Stato dellrsquoarte dei four legged robot 40

231 Storia

Ma vediamo come nasce Aibo[23]Le sue radici risalgono agli inizi degli

anni novanta quando gli ambienti tecnologici erano agli albori riguardo la

creazione di applicazioni per lrsquointrattenimento umano Fu Dr Doi il capo dell

Sonyrsquos Digital Creature Lab ad implementare in un unico automa i nuovi

progressi in termini di processori intelligenza artificiale riconoscitori vocali e

tecnologie di visione al fine di creare un robot autonomo

Durante la fase iniziale nel 1992 gli ingegneri della Sony progettarono

alcuni importanti cambiamenti radicali Nei primi anni novanta robot con camere

e ruote erano riprogrammati per ogni attivitagrave o task in cui essi venivano impiegati

I nuovi progetti includevano la capacitagrave di un robot di deambulare su zampe e

lrsquointerazione con programmi di IA capaci di interagire con alcuni organi sensoriali

come il tatto la vista e il suono Solo verso il 1997 il primo prototipo portograve alla

luce gli enormi sforzi di ricerca e sviluppo Dr Doi indirizzograve tutta la sua ricerca

nella costruzione e nel design di un amichevole robot autonomo Il suo primo

prototipo aveva sei gambe ed era il primo passo per la creazione di un robot a

zampe Dopo questo primo rudimentale modello il team Sony studiograve un design

innovativo e analizzograve ciograve che il robot poteva o non poteva fare per incrementare le

potenzialitagrave celebrali ed espandere le funzionalitagrave hardware e software

Lrsquooriginale modello Aibo ERS-110 fu presentato nel 1999 e rapidamente

si diffuse in tutto il mondo con lo slogan di essere un grande compagno di giochi e

intrattenimento entrando anche a far parte del guinnes dei Primati Lrsquo Europa vide

la sua apparizione il 26 Ottobre 1999 Solo un mese dopo dallrsquoenorme successo

riscontrato fu presentato un ulteriore modello ERS-111 per il target mondiale

Nellrsquoottobre del 2000 venne alla luce la seconda generazione di Aibo ERS-

210 che inglobava miglioramenti di mobilitagrave sensori di tatto led facciali

programmi di risposta sensoriale al mondo esterno tramite espressioni visive

funzioni di memorizzazione delle parole e riconoscitore vocale[24]

Stato dellrsquoarte dei four legged robot 41

I modelli LATTE e MACARON (ERS-311 a ERS-312) entrarono a far parte

della famiglia nel Settembre 2001 i loro nomignoli li rendono dolci e adorabili da

coccolare includendo comunque tutte le caratteristiche dei loro predecessori

Lrsquo8 Novembre 2001 egrave nato lrsquoultimo membro della famiglia Sony che

include le piugrave sofisticate performance e capacitagrave Il modello ERS-220 dotato di un

look futuristico presenta al suo interno una moltitudine di azioni altamente

avanzate e un alto numero di luci e sensori che lo fanno diventare il modello piugrave

sofisticato di robot quadrupede sul mercato[25]

Stato dellrsquoarte dei four legged robot 42

Sviluppo dei modelli Aibo dai primi anni novanta a oggi

Robot Sony Aibo modello a sei zampe

Robot Sony Aibo ERS-110

Robot Sony Aibo ERS-111

Robot Sony Aibo ERS-210

Robot Sony Aibo ERS-31x

Robot Sony Aibo ERS-220

Stato dellrsquoarte dei four legged robot 43

Figura 24 Zoom sulle caratteristiche presenti negli ultimi ritrovati

Specifikace

bull Head touch sensor bull Color Camera bull Stereo microphone bull Speaker bull Pause button bull Back sensor bull Lithium ion battery pack bull Tail sensor bull Memory Stick slot for AIBO bull PC card slot ndash bull slot pro PCMCIAPC-kartu

CPU 64-bitovy RISC procesor memory 32MB SDRAM weight - 15 kg ( baterie a Memory Stick (approx33lb)) dimension 152x266x274mm

Stato dellrsquoarte dei four legged robot 44

232 Descrizione dei sensori di Aibo

Il robot egrave stato progettato in modo da assomigliare ad un vero e proprio

essere vivente Esso egrave quindi dotato di svariati sensori mediante i quali puograve

comunicare con lrsquoambiente e reagire agli stimoli esterni[26]

Il sistema di controllo di Aibo utilizza i microprocessori per controllare

lrsquoinput dai dispositivi quali

bull Macchina fotografica del video a colori CCD20

bull microfono stereo

bull sensore termometrico

bull sensore infrarosso

bull sensore giroscopico di accelerazione

2321 Visione della macchina

Aibo ha una macchina fotografica digitale a colori montata nella sezione

ldquotestardquo I dati di immagine da questa macchina fotografica sono vitali nella

generazione dellrsquoesperienza interattiva tra il robot e il mondo Il video input egrave

analizzato per identificare lrsquooggetto o ldquoun punto caldordquo i motori robot spostano la

testa per dare lrsquoapparenza che il Aibo stia osservando Il robot inoltre egrave fornito di

un sensore infrarosso di distanza per rilevare gli ostacoli e per evitare di collidere

con essi

20 Charge Coupled Device attraverso una piastrina di silicio dotata di sensori le immagini

vengono digitalizzate in relazione a posizione colore e intensitagrave

Stato dellrsquoarte dei four legged robot 45

Figura 25 CCD camera a colori

Figura 26 Microfoni montati sugli assi

2322 Riconoscimento audio

Aibo egrave dotato di un accoppiamento di microfoni uno da ogni lato della

calotta cranica Questi generano unrsquoimmagine stereo del suono ricevuto che aiuta

nel localizzare la fonte di emissione Ersquo presente un regolatore di distanza per

permettere al robot di porre limiti per frasi da riconosce come ordini

2323 Tatto

Il rilievo sensibile al tocco sulla parte superiore della testa del Aibo egrave un

altro meccanismo attraverso cui riceveragrave input sensoriali In base a come questo

sensore egrave toccato un Aibo riceve i dati che registrano le risposte positive o

negative rispetto ldquoal suo comportamento precedenterdquo imitando le dimostrazioni

affetto o rimprovero

Stato dellrsquoarte dei four legged robot 46

Figura 27 Il bottone blu egrave uno switch per il sensore di pressione

2324 Movimento e sviluppo

Molti dei movimenti del Aibo sono simili a quelli di un animale domestico

un cane o un gatto Un Aibo accede e fa funzionare algoritmi di movimento che

dettano il moto delle relative membra controllando i motori siti nei piedini nella

testa e nella coda In modo indipendente e autonomo il robot si muove attraverso

parecchie fasi per un periodo di tempo Quando ldquosupportatordquo dal suono (comandi

o musica) riesce ad intraprendere movimenti a lui noti e ad imparare nuove

posture piugrave specializzate come sottoposto ad un vero e proprio addestramento

Figura 28 Particolare coda

Figura 29 Sensori del piedino

Capitolo 3 Architettura del robot ASGARD

Architettura del robot ASGARD 48

31 Configurazione del robot quadrupede

Analizziamo ora le caratteristiche del quadrupede realizzato presso lrsquoAir

Lab21 del Politecnico di Milano Nei paragrafi che seguono verranno descritte le

sue caratteristiche implementative che ne hanno permesso la realizzazione e il

controllo

Il progetto egrave stato avviato di recente di conseguenza il robot presenta

ancora notevoli problematiche di stabilitagrave e attuazione tramite servo attuatori

Hitec

311 Struttura Meccanica

La struttura di ASGARD egrave composta da parti ricavate da lastre di

policarbonato di cui presenteremo le caratteristiche nel paragrafo seguente e

incollate con speciale solvente

Il progetto della struttura di Marco Piralli [27] ha permesso al nostro robot

di avere una struttura simile a diversi esseri naturali

Figura 30 Progetto Robot completo di Pialli (sinistra) e dettaglio dellrsquoarticolazione (destra)

21 Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano sede

Leonardo sito in Lambrate

Architettura del robot ASGARD 49

Esso egrave dotato di 12 gradi di libertagrave tre per ogni zampa simili a quelli di

Aibo eccetto la spalla Questi gradi di libertagrave ci permettono di far compiere al

robot movimenti su tutti e tre gli assi La spalla in particolare ci permette tutti i

movimenti nel piano sagittale (detto anche piano laterale movimento fronte-retro)

Mentre le altre due articolazioni permettono movimenti nel piano frontale

(movimento lato-lato) e in quello trasversale

Questa serie di attuazioni da la possibilitagrave al robot di essere indipendente

nel movimento di ogni singola zampa e un ulteriore grado passivo nella zampa

permette di affrontare le differenti tipologie di terreno

Il collegamento tra attuatori e struttura risulta essere diretta senza cioegrave

lrsquoausili di tendini il rotore del motore egrave direttamente connesso alla articolazione

studiata per alloggiare il motore al suo interno

Figura 31 Particolari sulle locazioni e i sostegni degli attuatori nel giunto di

spalla(sinista) e ginocchio caviglia (destra)

Architettura del robot ASGARD 50

Giunto 9Giunto 12

Giunto 3

Giunto 6

Giunto 1

Giunto 2 Giunto 4

Giunto 5

Giunto 7

Giunto 8 Giunto 11 Giunto 10

Figura 32 Posizionamento dei giunti nel robot reale

312 Attuatori

Come illustrato in Figura 32 gli attuatori necessari al movimento di

ASGARD devono risultare leggeri e disposti in modo da non intralciare gli

eventuali movimenti I singoli attuatori sono costituiti da un motore servo da una

molla torsionale e da uno smorzatore senza essere perograve dotato di encoder

incrementale Con questo sistema non egrave possibile realizzare un preciso controllo

di posizione istante per istante ma egrave possibile ottenere una rigidezza di giunto non

infinita

I motori da noi utilizzati sono da 44 Kg bull cm HITEC HS 475HB Standar

Delux[28] abitualmente utilizzati in ambito di modellismo Le cui caratteristiche

sono qui sotto riportate

Architettura del robot ASGARD 51

Caratteristiche principali HS457 HB

Control system Operatine voltage range Operatine speed Stall torque Idle current Running current Stall current Dimensions Weight

+Pulse width control 1500usec neutral 48 V to 60 V 023 sec60(load) 018 sec60(no load) 44 Kg cm 55 Kg cm 74 mA (stopped) 77 mA(no load) 180 mA60 (load) 160 mA60(no load) 900 mA 388x198x36 mm 40 g

Figura 33 Attuatore HS 475 HB visto in sezione (sinistra) e come si presenta sul

nostro robot (destra)

Architettura del robot ASGARD 52

313 Materiale Policarbonato

Per la realizzazione del robot egrave stato scelto un materiale innovativo

resistente agli urti e alla trazione che puograve in questo modo resistere alle

sollecitazioni esterne e alle vibrazioni causate dalla camminata su terreni aspri

Oltre le potenziali caratteristiche di resistenza ha la dote di essere

estremamente leggero e di riuscire ad assemblarsi tramite apposito solvente

Questo permette alla struttura chimica di una superficie di scomporsi e di legarsi

in modo stabile alla struttura di una ulteriore lastra ricreando una struttura

compatta e indissaldabile

Proprietagrave policarbonato[29]

Carico limite di snervamento Nmmsup2 gt60

Resistenza alla rottura Nmmsup2 gt70

Allungamento a snervamento 6 hellip 8

Allungamento a rottura lt100

Modulo elastico Nmmsup2 2300

PROPRIETA MECCANICHE

Resistenza allrsquourto IZOD con intaglio Jm 700

Peso specifico gcmsup3 120

Indice di rifrazione 159

Assorbimento idrico (24h - 23degC) per immersione

036 PROPRIETA

FISICHE

Permeabilitagrave al vapore drsquoacqua (spessore 01m 24h)

gmsup3 15

Temperatura di resistenza al calore vicat VSTB

degC 145hellip150

Espansione termica lineare 1degC 67 X 10

PROPRIETA TERMICHE

Conducibilitagrave termica WmdegC 021

Architettura del robot ASGARD 53

32 ASGRAD in numeri

Le caratteristiche fisiche di Asgard si possono cosigrave riassumere

Busto

Larghezza 1210 cm

Lunghezza 2290 cm

Zampe

Link num 1 573 cm

Link num 2 675 cm

Link num 3 735 cm

Piede 350 x 415 cm

Spessore 4 mm

Peso

Corpo in policarbonato 660 g

Attuatori 480 g

Scheda Pic 20 g

Peso Complessivo 1180 Kg

Angoli dei giunti nella posizione di riposo

Giunto spalla 0deg

Giunto ginocchio 45deg

Giunto caviglia 45deg

Architettura del robot ASGARD 54

735 573 675

2290 122

121

Figura 34 Specifiche di ASGARD vista dallrsquoalto

1212 cm

Figura 35 Vista frontale di ASGARD

Architettura del robot ASGARD 55

33 Hardware

Attualmente non esiste un vero e proprio controllo on-board in grado di

generare traiettorie ma una PIC [30] sita su di esso il cui scopo egrave quello di

interpretare i segnali di comando in uscita dal nostro codice Matlab e di

trasformarli in impulsi (PWM) da inviare ai motori

Figura 36 Sistema di controllo dei motori Nellrsquoambiente Matlab sono stati inseriti dei comandi manuali di posizionamento il programma gestisce la generazione delle traiettorie e i comandi vengono inviati alla PIC Questa si occupa di generare e inviare ai motori gli impulsi che ne garantiscono il posizionamento

Unitagrave di controllo

Alimentazione

Porta seriale

Max 232

PIC

18F4x28 40L DIP

A T T U A T O R I

Figura 37 Schema a blocchi della PIC di controllo

Architettura del robot ASGARD 56

34 Software

La creazione del nostro algoritmo rappresenta la prima implementazione di

codice in merito al progetto del robot quadrupede in esame

Per il collegamento diretto e il pilotaggio di motori servo tramite la porta

seriale abbiamo usufruito di un codice elaborato precedentemente e implementato

sulla PIC

Questo programma egrave costituito da cicli di attesa da parte della PIC stessa

per la ricezione dei comandi e da un canale di ritorno in cui essa comunica al Pc

la corretta trasmissione dellrsquoimpulso

Una miglioria sullrsquoanalisi implementativi ci ha permesso di spingere la

velocitagrave di comunicazione fino a 14400 bitsec

Il nostro programma di analisi e simulazione dei passi analizza le

caratteristiche fisiche di movimento del nostro robot generando i movimenti

opportuni che gli permetteranno di deambulare stabilmente nellrsquoambiente

Un ulteriore ricerca ci ha portato a realizzare una funzione di calcolo delle

traiettorie in ambiente noto che dagrave la possibilitagrave a ASGARD di decidere in real-

time il passo da intraprendere nel singolo istante

Questo puograve essere considerato il primo passo verso un algoritmo di

Intelligenza Artificiale per il nostro robot

Il sistema di controllo dellrsquoandatura di un robot con zampe si puograve cosigrave

scomporre in tre livelli distinti

Architettura del robot ASGARD 57

SUPERVISORE

bull Traiettoria bull Parametri dellrsquoandatura

COORDINATORE bull Controllo della stabilitagrave bull Traiettoria dellrsquoestremitagrave delle

zampe

LIVELLO DELLE ZAMPE bull Cinematica inversa bull Controllo dinamico bull Comandi agli attuatori

35 Stato Attuale

Allo stato attuale il robot egrave stato completato e dotato di sensore di

pressione posto sotto la zampa anteriore sinistra Le tempistiche di risposta della

scheda PIC presentano non poche difficoltagrave a carattere di controllo I motori da

noi utilizzati ricevono in input solo il valore della posizione ed egrave pertanto

impossibile effettuare controlli su velocitagrave ed accelerazione

Ersquo risultato comunque possibile dopo una attenta analisi di stabilitagrave la

creazione di un ciclo di passi che ha permesso ad ASGARD di compiere la sua

prima camminata

Capitolo 4 Modellizzazione cinematica e dinamica

Modellizzazione cinematica e dinamica 59

41 Convenzioni e simbologia utilizzata

Data la natura del robot saragrave essenziale fornirne una corretta analisi

matematica e robotica per mantenere una certa coerenza e chiarezza verranno

utilizzate le seguenti convenzioni

bull Il pedice indica il numero della grandezza a cui si sta facendo

riferimento indica ad esempio lrsquoelemento n di A Nel caso vi

siano presenti due pedici si fa riferimento ad una grandezza che va

dal primo pedice al secondo indica quindi un vettore da i a k

nA

kiA

bull Lrsquoapice egrave utilizzato per indicare il sistema di riferimento rispetto al

quale la grandezza egrave riferita indica quindi lrsquoelemento n della

grandezza A nel sistema di riferimento i

inA

bull Il simbolo times indica il prodotto vettoriale

bull Il simbolo bull indica il prodotto scalare mentre la T posta come apice

egrave la trasposizione

Nella Tabella 1 vengono mostrate le grandezze fisiche utilizzate e la

simbologia per rappresentarle[31]

Ti

iR 1minus Matrice di rotazione dalla terna i-1 alla terna i (premoltiplicazione)

iiR 1+ Matrice di rotazione dalla terna i+1 alla terna i (postmoltiplicazione)

im Massa del braccio

iir 1minus Vettore dalla terna i-1 alla terna i

iI Tensore drsquoinerzia del braccio

iϑ Posizione angolare del giunto i

iϑamp Velocitagrave angolare del giunto i

Modellizzazione cinematica e dinamica 60

iϑampamp Accelerazione angolare del giunto i

iω Velocitagrave angolare del braccio

iωamp Accelerazione angolare del braccio

ipampamp Accelerazione lineare terna i

iCpampamp Accelerazione lineare baricentro iC

if Forza esercitata sul giunto i

imicro Momento esercitato sul giunto i

iτ Forza generalizzata al giunto i

Tabella 1 Rappresentazione delle grandezze fisiche utilizzate

42 Sistemi di coordinate e trasformazioni

Qualunque punto dello spazio puograve essere rappresentato da coordinate

omogenee che non sono altro che le coordinate cartesiane del punto a meno di un

fattore di proporzionalitagrave

⎥⎥⎥⎥

⎢⎢⎢⎢

=rarr⎥⎥⎥

⎢⎢⎢

⎡=

wzyx

pZYX

p dove wxX =

wyY =

wzZ =

In coordinate omogenee ci sono quattro punti particolari

versore direzione dellrsquoasse X versore direzione dellrsquoasse Y ir

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0001

jr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0010

versore direzione dellrsquoasse Z Origine degli assi kr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0100

Or

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1000

Modellizzazione cinematica e dinamica 61

Questi quattro punti caratterizzano il sistema di riferimento Un sistema di

riferimento puograve essere posto in ogni punto dello spazio per noi saragrave essenziale

porne uno in ogni giunto dei robot[32] Inserito un sistema di riferimento il

passaggio da un sistema al successivo avviene tramite una matrice di

trasformazione che al suo interno ne descrive la rotazione e traslazione

La rotazione pura rispetto ad un sistema fisso di coordinate viene

rappresentata tramite una matrice quadrata 33times Ad esempio una rotazione di un

angolo α attorno allrsquoasse z viene descritta con

( )⎥⎥⎥

⎢⎢⎢

⎡ minus=

1000cossin0cos

αααα

αsen

Rz

La matrice A di rototraslazione egrave rappresentata in generale come

composizione degli spostamenti rotatorio e traslatorio

( ) ( )

[ ] ⎥⎦

⎤⎢⎣

⎡ timestimes=

10001333 TraslRot

A

La matrice egrave costituita da una parte di rotazione una di traslazione lungo i

tre assi e una riga i cui valori indicano la ldquoscalardquo e la ldquoprospettivardquo (non utilizzati

in questo ambito) In analisi piugrave approfondita

Modellizzazione cinematica e dinamica 62

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

A

possiamo vedere come le prime tre colonne rappresentano i versori del

sistema di partenza mentre lrsquoultime rappresenta la posizione di arrivo in

coordinate omogenee dellrsquoorigine in cui egrave posizionato il sistema di riferimento

43 Cinemetica diretta

In questo ambito ci proponiamo di illustrare i modelli matematici che ci

hanno permesso di analizzare ASGARD Partiamo da alcune definizione basilari

Un robot manipolatore egrave una catena cinematica sequenziale22 aperta23 o

catena parallela composta da corpi rigidi (link) uniti da giunti

Lrsquointeresse principale egrave rivolto alla mano o end-effector del robot che

possa raggiungere ogni posizione con qualunque orientamento senza bisogno di

resettare fisicamente il sistema

La cinematica studia il legame tra le variabili indipendenti dei giunti e le

posizioni e orientamento cartesiane raggiunte dal robot Questo egrave chiaramente un

problema cruciale per le applicazioni Il problema si suddivide in due parti

cinematica diretta = passaggi dalle variabili di giunto24 alle variabili

cartesiane25

cinematica inversa = passaggio dalle variabili cartesiane alle variabili di

giunto

22 sequenziale significa che non ci sono diramazioni nella catena 23 aperta una delle due estremitagrave (mano=end-effector) egrave libera 24 valori degli angoli di ogni singolo giunto 25 valore della posizione espresso in coordinate nel di riferimento considerato

Modellizzazione cinematica e dinamica 63

La dinamica studia le equazioni che caratterizzano il moto del robot intese

come velocitagrave accelerazioni tenendo conto non solo delle posizioni iniziali e

finali ma di tutte le caratteristiche del moto la nostra analisi si egrave concentrata sulle

forze e le torsioni agenti sui motori studiate con il metodo di Newton-Eulero

Il calcolo delle traiettorie consiste nel determinare un modo per fornire al

controllore del robot lrsquoinsieme dei punti (variabili di giunto) per spostarsi da una

posizione allrsquoaltra con opportune velocitagrave e accelerazioni

Il problema del controllo consiste invece nel trovare modalitagrave efficienti per

far compiere al robot il piugrave fedelmente possibile le traiettorie determinate

431 Definizione dei parametri di Denavit Hartemberg

Elaborare i valori delle variabili di giunto fino a trovare i valori delle

coordinate cartesiane riferite alla posizione dellrsquoend-effector non egrave di facile

carico computazionale soprattutto quando il robot risulta complesso26

Sviluppare metodi a doc ottimi per la cinematica inversa risultano

scomodi e onerosi se riferiti alla cinematica diretta

Un metodo generale e applicabile a qualsiasi tipologia di manipolatore egrave

stato sviluppato negli anni cinquanta da Denavit e Hartenberg (D-H)

Esso consiste nel fissare sistemi di riferimento sui giunti per poterne

determinare i parametri caratteristici Tramite lrsquouso di matrici di rototraslazione

dei sistemi di riferimento egrave possibile trovare un legame tra i parametri dei giunti e

la posizione e lrsquoorientamento dellrsquoend-effector Con questa scelta ogni singola

trasformazione da un sistema di riferimento al successivo saragrave descritta da una

matrice definita da quattro parametri lrsquoangolo del giuntonnA 1minus ϑ lrsquoangolo di twist

α e le due distanze d e l

Identificata la struttura giuntilink del robot egrave necessario fissare i sistemi di

riferimento nel seguente modo

26 complesso con piugrave di due gradi di libertagrave

Modellizzazione cinematica e dinamica 64

bull Scegliere lrsquoasse giacente lrsquoungo lrsquoasse del giunto i+1 iz

bull Individuare allrsquointersezione dellrsquoasse con la normale comune

agli assi e con

iO iz

1minusiz iz iOprime si indica lrsquointersezione della normale

comune con 1minusiz

bull Si assume lrsquoasse diretto lungo la normale comune agli assi

e con verso positivo dal giunto i al giunto i+1

ix 1minusiz

iz

bull Si sceglie lrsquoasse in modo tale da completare una terna levogira iy

Figura 38 Parametri cinematici di Denavit-Hartenberg

Fissate le terne solidali si ha che

ia = distanza da a iO iOprime

id = coordinata su di 1minusiz iOprime

iα = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

ix 1minusiz iz

iϑ = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

1minusiz 1minusix ix

Modellizzazione cinematica e dinamica 65

Nella nostra analisi essendo tutti giunti rotoidali lrsquounica variabile risulta

essere iϑ indicante la posizione in gradiradianti del giunto Nello sviluppo della

parte grafica per caratteristiche proprie del tool utilizzato sono stati introdotti

ulteriori due giunti traslazionali che nellrsquoanalisi non vengono perograve presi in

considerazione come variabili

La matrice di trasformazione complessiva viene costruita nel modo

seguente

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡minus

minus

=minus

1000cos0

coscoscoscoscoscos

1

iii

iiiiiii

iiiiiii

ii dsen

senasensenasensensen

Aαα

ϑαϑαϑϑϑαϑαϑϑ

432 Metodo di assegnamento secondo D-H

Per ricavare velocemente le matrici di trasformazione secondo la

convenzione di D-H si utilizza la seguente procedura operativa

1 Individuare e numerare consecutivamente gli assi dei giunti

assegnare rispettivamente le direzioni agli assi hellip 0z 1minusnz

2 Fissare la terna base posizionandone lrsquoorigine sullrsquoasse gli assi

e sono scelti in maniera tale da ottenere una terna levogira

0z

0x 0y

Eseguire i passi da 3 a 5 per i = 1 hellip n

3 Individuare lrsquoorigine allrsquointersezione di con la normale comune agli assi e Se gli assi e sono paralleli posizionare in modo da annullare

iO iz

1minusiz iz 1minusiz iz

iO id4 Fissare lrsquoasse diretto lungo la normale comune agli assi e

con verso positivo dal giunto i al giunto i+1 ix 1minusiz

iz5 Fissare lrsquoasse in modo da ottenere una terna levogira iy

Per completare

Modellizzazione cinematica e dinamica 66

1 Fissare la terna n allineando lungo la direzione di nz 1minusnz

2 Costruire per i = 1 hellip n la tabella dei parametri ia id iα iϑ

3 Calcolare sulla base dei parametri di cui al punto 7 le matrici di

trasformazione omogenea ( )iii qA 1minus per i = 1 hellip n

La posizione e lrsquoorientamento di un qualsiasi giunto della catena rispetto il

sistema base egrave ora calcolabile premoltiplicando i valori nel sistema corrente per

tutte le matrici di trasformazione precedenti a tale sistema

11

121

010

0 minusminussdotsdotsdot== n

nnn AAAAT

In ASGARD si egrave attuata una doppia analisi

la prima consiste nellrsquoalzata del piede e il suo riposizionamento nelle

coordinate desiderate in questo caso lrsquoorigine del robot risulta essere solidale con

il baricentro del corpo e lrsquoend-effector risulta coincidere con la zampa mobile

Figura 39 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nel baricentro e end-effector coincidente con la zampa mobile

Modellizzazione cinematica e dinamica 67

I parametri di D-H calcolati risultano essere

link ϑ α a d

1 deg45 0 1l 0

2 2ϑ deg90 2l 0

3 3ϑ 0 3l 0

4 0 4l 0 4ϑ

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

1111

1111

010

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdot

=

10000010

00

2222

2222

121

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

3333

3333

232

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

44441

4444

343

SlCSClSC

A

e la matrice T contenente i valori in coordinate cartesiane della posizione

della zampa egrave calcolata come 3

432

321

210

1004 AAAAAT sdotsdotsdot==

la seconda analisi consiste nellrsquoavanzamento del corpo non essendo il

nostro robot dotato di uno scheletro mobile e flessibile durante la camminata si ha

la necessitagrave di spostare il baricentro sfruttando lrsquoattrito delle zampe con il terreno

In questa situazione le zampe puntate a terra risultano essere lrsquoorigine e il

baricentro della nostra struttura egrave la parte terminale libera

Modellizzazione cinematica e dinamica 68

Figura 40 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nella zampa di appoggio e end-effector coincidente con il baricentro

In questo caso i parametri di D-H subiscono la seguente modifica

link ϑ α a d

1 1ϑ degminus 90 0 0 2 2ϑ 0 2l 0 3 3ϑ degminus 90 3l 0 4 0 0 4l 0

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

11

11

010

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ minus

=

100001000000

22

22

121

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

33

33

232

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000010000100001

343A

La matrice T per il calcolo della posizione finale non subisce invece

modifiche nella sua formula rimane invariata 343

232

121

010

0 AAAAAT n sdotsdotsdot==

Modellizzazione cinematica e dinamica 69

44 Cinematica inversa

Data una posizione e un orientamento nello spazio cartesiano egrave possibile

trovare una configurazione del nostro manipolatore affincheacute essa possa essere

raggiunta Questo egrave il problema di cinematica inverso

Nel calcolo di tale problema non egrave garantita neacute lrsquoesistenza neacute lrsquounicitagrave

della soluzione cercata La posizione se appartenente allo spazio di destrezza del

manipolatore (spazio in cui egrave garantita lrsquoesistenza della soluzione) non egrave detto che

possa essere raggiunta con unrsquounica sequenza di variabili di giunto

Metodi di analisi ammissibili per il nostro robot risultano essere il metodo

di Paul[33] e quello geometrico non essendo rispettati i vincoli per il metodo di

Pieper (tre giunti rotoidali consecutivi con assi paralleli)

Il metodo di Paul consente di determinare le soluzioni mediante

premoltiplicazioni o postmoltiplicazioni con matrici di trasformazione ortogonali

egrave un metodo euristico per la ricerca di soluzioni in forma chiusa

Lrsquoalgoritmo egrave il seguente

1 Uguagliare la matrice di trasformazione generale T espressa in

termini di variabili cartesiane alla matrice di trasformazione del

manipolatore espressa in termini di variabili di giunto

2 Cercare nella seconda matrice

bull elementi che contengono una sola variabile di giunto

bull coppie di elementi che danno unrsquoespressione in una sola

variabile di giunto quando vengono divisi tra loro

bull elementi o combinazioni di elementi che possono essere

semplificati usando identitagrave trigonometriche

3 Quando si sono identificati questi elementi li si eguagliano ai

corrispondenti elementi della matrice in variabili cartesiane

ottenendo unrsquoequazione la cui soluzione permette di trovare un

Modellizzazione cinematica e dinamica 70

legame fra una variabile di giunto ed elementi della matrice di

trasformazione generale

4 Se non si sono identificati elementi che soddisfano le condizioni al

passo 2 si premoltiplicano entrambi i membri dellrsquoequazione

matriciale per lrsquoinversa della matrice A del primo link si opera

secondo il passo 2 Si itera il procedimento per tutti i link

5 Non sempre egrave possibile trovare elementi che rispettano le

condizioni imposte e riuscire a trovare una soluzione valida

Nella nostra analisi questo metodo egrave stato valido e molto veloce per

trovare il valore del primo angolo spalla ma risulta svantaggioso nel calcolo dei

successivi angoli in cui non si riuscivano a trovare equazioni semplici

=

⎥⎥⎥⎥

⎢⎢⎢⎢

+minusminusminusminus++minusminusminusminusminus++minusminusminusminus

=

10000 2232332332323232

11212321332131321321321321

11212321332131321321321321

SlSClCSlCCSSSCSSSlCSlSSSlCCSlCSSSCCSCSSCCSClCClSSClCCClSCSCSCCSSCCCC

T

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

da cui si ricava

( )( ) 1

1

1223233231

1223233231

CS

lClSSlCClClClSSlCClS

pp

x

y =++minus++minus

= quindi ⎟⎟⎠

⎞⎜⎜⎝

⎛=

x

y

pp

a tan1ϑ

Ersquo stato quindi decisivo per il riscontro del secondo e del terzo angolo

rispettivamente ginocchio e caviglia un approccio geometrico a doc

In questa tipologia di studio di rilevante importanza egrave stata lrsquoestrapolazione

delle coordinate dellrsquoend-effector e la traslazione dellrsquoorigine nel ginocchio al fine

di isolare due piani del moto per ridurre lrsquoanalisi di una dimensione

Modellizzazione cinematica e dinamica 71

Il calcolo della cinematica inversa per un manipolatore a due link risulta

poi di basso carico computazionale applicando regole di trigonometria basilari

Figura 41 Calcolo cinematica inversa attraverso metodo geometrico su un robot

planare a 2gradi di libertagrave

Conoscendo la posizione raggiunta

( )21211 coscos ϑϑϑ ++= llx ( )21211 ϑϑϑ ++= senlsenly

Si applica il teorema di Pitagora nel triangolo indicato

( ) ( ) =sdot+sdotsdotsdot+sdot+=+sdot+=+ 22

22221

22

22

21

222

2221

22 cos2coscos ϑϑϑϑϑ senlllllsenlllyx 221

22

21 cos2 ϑsdotsdotsdot++= llll

E da esso si ricava

21

22

21

22

2 2)(cos

llllyx

sdotsdotminusminus+

=ϑ e quindi ⎥⎦

⎤⎢⎣

⎡sdotsdot

minusminus+=

21

22

21

22

2 2)(

cosll

llyxaϑ

Come si era previsto porta a due soluzioni gomito alto o bassoPer trovare

lrsquoaltro angolo si osserva cha al posto αϑϑ +=∆ 1 si ha

( )xy

=∆ϑtan ( )221

22

costan

ϑϑ

αsdot+

=llsenl

quindi

⎟⎟⎠

⎞⎜⎜⎝

⎛sdot+

minus⎟⎠⎞

⎜⎝⎛= minusminus

221

22111 cos

tantanϑ

ϑϑ

llsenl

xy

Modellizzazione cinematica e dinamica 72

441 Metodo gradiente

Abbiamo utilizzato questo metodo alternativo sperimentale in

concomitanza con il metodo geometrico valutandone successivamente le sue

potenzialitagrave per possibili applicazioni future Esso attraverso semplici calcoli

matematici ci porta al valore dei successivi due giunti della zampa

Figura 42 Baccio a due link

Denomineremo

a angolo del primo giunto

b angolo del secondo giunto

obiettivo stella rossa

errore vettore che punta lrsquoobiettivo

Spostiamo il braccio del robot intorno alla base cambiando gli angoli a e b

Possiamo tracciare un grafico di questo comportamento[34]

Figura 43 Immagine della rappresentazione del gradiente

Modellizzazione cinematica e dinamica 73

Lrsquoasse x rappresenta langolo a mentre lrsquoasse y rappresenta langolo b Lrsquoorigine

egrave nel cento Denomineremo lo spazio di tutti gli orientamenti possibili del braccio

del robot lo spazio di configurazione

Ogni punto sul quadrato contiene una tonalitagrave di grigio che rappresenta la

distanza fra lrsquoend-effector e lobiettivo Le tonalitagrave piugrave chiare sono distanze piugrave

grandi mentre il nero rappresenta zone di avvicinamento allrsquoobiettivo Ci sono

due posti in cui la distanza egrave uguale zero rappresentanti le due configurazioni

(gomito alto e basso) in cui il braccio puograve toccare lobiettivo

Dovrebbe essere evidente arrivare al target significa trovare le parti piugrave

nere del grafico Questi punti bassi sono conosciuti come minimi

4411 Gradient following

Questo metodo risulta essere di grande utilizzo per riuscire a trovari i

minimi in uno spazio bidimensionale

Per trovare i punti piugrave bassi sul grafico si deve semplicemente seguire

punti che portano lrsquoend effector ad una distanza minore dal target

Figura 44 Immagine di esempio

Figura 45 Gafico del Gradiente di esempio

Si guardi questo esempio Figura 44 Lobiettivo egrave la stella rossa In questa

posizioneun movimento del giunto di rotazione a sposteragrave la mano nel senso della

freccia a ed un movimento di b sposteragrave lrsquoend-effector nel senso della freccia b

Modellizzazione cinematica e dinamica 74

Per raggiungere lrsquoobiettivo desideriamo spostare la mano nel senso della freccia t

Spostando solo il giunto A o solo B non otterremo grandi risultati ma serviragrave un

movimento complessivo Ora guardiamo questo in termini di grafico (Figura 45)

Cominciando ad una configurazione casuale del braccio (start) possiamo

guardare i vettori a e b e ruotiamo ogni giunto un po in proporzione a quanto

aiuta per ottenere una migliore posizione rispetto allrsquoobiettivo Si puograve pensare a

questo come esaminare la pendenza locale del grafico Ci si chiede qual egrave il

movimento che li conduce il piugrave velocemente in discesa ci si sposta in quel senso

Si continua a ciclare questo fino ad arrivare ad una distanza dal nostro obiettivo

che concorda con lrsquoapprossimazione da noi desiderata

Vantaggi di questo metodo sono lrsquoapplicazione in tutte le problematiche

con un numero elevato di link Il tempo computazionale non risulta essere oneroso

in quanto ci si riconduce a semplici operazioni matematiche che Matlab riesce ad

eseguire in pochissimi istanti nonostante lrsquoelevato numero di iterazioni

4412 Faster gradient following

Esso egrave unottimizzazione del metodo gradient following che accelera

letteralmente il processo[34] Precedentemente ad ogni ripetizione la pendenza egrave

stata sottratta semplicemente dalla posizione nello spazio di configurazione

spostando la struttura piugrave vicino al minimo Questa volta sottrarremo la pendenza

dalla velocitagrave a cui ci muoviamo attraverso lo spazio di configurazione

Otteniamo come risultato un calcolo molto piugrave rapido in termini di

iterazioni che si riducono fino al 60-75 rispetto al precedente mantenedo

risultati ottimi in base anche allrsquoapprossimazione da noi scelta

Modellizzazione cinematica e dinamica 75

Figura 46 Passi per arrivare al target nel metodo di inseguimento veloce

45 Calcolo delle traiettorie

Vogliamo presentare le modalitagrave di come le traiettorie vengono generate

Tra le diverse disponibili egrave stato scelto il controllo in posizione nello spazio dei

giunti affichegrave il robot riesca a deambulare in un cammino definito Esprimendo le

traiettorie nello spazio dei giunti vengono evitate le conversioni cinematiche

inverse e quindi per la realizzazione delle traiettorie non serve potenza di calcolo

onerosa

Per il controllo delle traiettorie esistono metodi semplici basati sulla

gestione del movimento del singolo link senza che esso venga temporizzato con

tutta la struttura e algoritmi piugrave complessi che fanno uso delle cubiche27 esse

arrivano a un buon compromesso tra quantitagrave di calcolo richiesta e qualitagrave delle

traiettorie ottenute Il cammino da compiere viene specificato mediante punto di

arrivo e punto di stop si vorrebbe che tutti i giunti arrivino al task nello stesso

istante in modo da garantire lrsquoassenza delle discontinuitagrave Si generano traiettorie

nello spazio dei giunti specificando per ogni motore la funzione di moto e

verificando che le posizioni attraversate non siano degeneri28 o singolari29[32]

27 polinomi dal terzo grado a superiore che rappresentano funzioni continue 28 degenere significa non raggiungibile dal robot

Modellizzazione cinematica e dinamica 76

Esistono diversi metodi per calcolare le cubiche di seguito vengono

presentate quelle da noi elaborate e convertite in codice

Movimento da una posizione finale ad una posizione finale in un certo

intervallo di tempo per ogni giunto deve essere trovata una funzione ( )tϑ

continua e con derivata prima continua il cui valore per t=0 sia per t = sia ft fϑ e

che possa essere usata per interpolare i valori dei giunti I vincoli che devono

essere soddisfatti sono

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = 0 Velocitagrave iniziale nulla

( )fϑamp = 0 Velocitagrave finale nulla

Per soddisfare i vincoli egrave necessario un polinomio di terzo grado in cui i

coefficienti saranno scelti per soddisfare i quatto vincoli

( )tϑ = 3

32

210 tatataa sdot+sdot+sdot+

dal polinomio ricaviamo la funzione che rappresenta la velocitagrave

( )tϑamp = 2321 32 tataa sdotsdot+sdotsdot+

e lrsquoaccelerazione

( )tϑampamp = taa sdotsdot+sdot 32 62

sostituendo le equazioni nei vincoli sopra citati troviamo i seguenti valori dei

coefficienti

=0a 0ϑ

29 un punto singolare egrave un punto in cui non egrave possibile calcolare lo jacobiano inverso

Modellizzazione cinematica e dinamica 77

01 =a

( )2

02

3

f

f

ta

ϑϑ minussdot=

( )3

03

2

f

f

ta

ϑϑ minussdotminus=

Con queste equazioni abbiamo ottenuto il metodo piugrave semplice per

connettere due posizioni nello spazio A fronte del consistente numero di

operazioni richieste per il carico grafico questo egrave il metodo da noi utilizzato per

tutto lo sviluppo del simulatore che emula la creazione di un percorso inoltre esso

risulta simile al controllo a noi a disposizione per gli attuatori reali a disposizione

Abbiamo comunque voluto implementare un metodo avanzato per

superare limitazioni presenti che potragrave essere utilizzato anche in un futuro quando

controlli effettivi saranno introdotti per il controllo di velocitagrave e accelerazione dei

motori Esso egrave costituito da un polinomio di quinto grado in cui possono essere

specificate posizioni velocitagrave e accelerazioni nei punti iniziale e finale e puograve

gestire la continuitagrave dellrsquoaccelerazione nei punti di via

Il polinomio studiato risulta essere

( )tϑ = 5

54

43

32

210 tatatatataa sdot+sdot+sdot+sdot+sdot+

( ) =tϑamp 45

34

2321 5432 tatatataa sdotsdot+sdotsdot+sdotsdot+sdotsdot+

( ) =tϑampamp 35

2432 201262 tatataa sdotsdot+sdotsdot+sdotsdot+sdot

imponendo

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = Velocitagrave iniziale 0v

( )fϑamp = Velocitagrave finale fv

Modellizzazione cinematica e dinamica 78

sostituendo i vincoli trovo i seguenti valori dei parametri

tvva fof sdotminussdotminusminussdot= )(3)(6 05 ϑϑ

tvva fof sdotsdotminussdot+minussdotminus= )78()(15 04 ϑϑ

tvva fof sdotsdotminussdotminusminussdot= )46()(10 03 ϑϑ

02 =a

tva sdot= 01

00 va =

46 Modello dinamico Newton-Eulero

Per un analisi realistica e approfondita della camminata non egrave sufficiente

considerare gli effetti della forza di gravitagrave ma diventa necessario introdurre il

modello dinamico che tiene conto di tutti i fattori non trascurabili nei corpi in

movimento

Per completare le formule ricavate nel caso statico vengono calcolate le

singole velocitagrave e accelerazioni dei giunti e link Risulta assai comodo ed

efficiente lrsquoalgoritmo ricorsivo di Newton-Eulero[31] Viene effettuata dapprima

una ricorsione ldquoin avantirdquo per calcolare le velocitagrave e accelerazioni dei giunti e

successivamente una ricorsione ldquoallrsquoindietrordquo per ricavare i valori di forza e

torsione

Nella prima fase dalla base (baricentro) allrsquoend-effector (zampa in

movimento) abbiamo

Velocitagrave angolare del rotore ( )011

1 zR iii

Tii

ii ϑωω amp+= minus

minusminus

Accelerazione angolare del link ( )0110

11

1 zzR iiii

ii

Tii

ii times++= minus

minusminusminus

minus ωϑϑωω ampampampampamp

Accelerazione lineare terna i ( )iii

ii

ii

iii

ii

ii

Tii

ii rrpRp 11

11

1minusminus

minusminus

minus timestimes+times+= ωωωampampampampamp

Modellizzazione cinematica e dinamica 79

Accelerazione lineare baricentro iC ( )iCi

ii

ii

iCi

ii

iiC iii

rrpp timestimes+times+= ωωωampampampampamp

Nella seconda fase dallrsquoend-effector al baricentro le formule diventano

Forza iCi

ii

ii

ii i

pmfRf ampamp+= +++

111

Momento ( )

( )ii

ii

ii

ii

ii

iCi

ii

ii

ii

ii

iCi

iii

ii

ii

II

rfRRrrfii

ωωω

micromicro

times++

times+++timesminus= +++

+++minus

amp

1

111111

Forza generalizzata 0

1 zR Tii

Tiii

minus= microτ

Ai fini di semplificare i calcoli tutti i vettori sono riferiti alla terna corrente

sul link i Si rende quindi necessario moltiplicare per i vettori da trasformare

dalla terna i+1 alla terna i e per i vettori da trasformare dalla terna i-1 alla

terna i In questo modo e diventa possibile

semplificare la formula del tensore drsquoinerzia del link

iiR 1+

TiiR 1minus

[ ]Tz 1000 = costante =iCi i

r

( )

( )( ) ⎥

⎥⎥⎥

⎢⎢⎢⎢

+sdotminussdotminus

sdotminus+sdotminus

sdotminussdotminus+

sdot=

intintintintintintintintint

dVyxdVyzdVxz

dVyzdVzxdVxy

dVxzdVxydVzy

I22

22

22

ρ

Lrsquoinerzia egrave una proprietagrave che dipende dalla massa del corpo e da come tale

massa egrave distribuita I tensori sopra calcolati descrivono lrsquoinerzia del corpo nello

spazio tridimensionale Per i calcoli si sono supposti i link di densitagrave uniforme e a

forma di parallelepipedo tale approssimazione porta ad ottenere risultati

sufficientemente precisi per questo lavoro semplificando i termini del tensore

( )

( )( ) ⎥

⎥⎥

⎢⎢⎢

++

+sdot=

120001200012

22

22

22

yxzx

zymI

Modellizzazione cinematica e dinamica 80

Nelle formule del calcolo della torsione sono stati tralasciati i termini

inerenti alle forze interne dei motori essendo questi di dimensione trascurabile

47 Creazione di una mappa

La navigazione consiste nel dirigere il cammino di un robot

mobile[35][36] mentre esso si muove in un ambiente affincheacute

bull Raggiunga la destinazione

bull Non si perda

bull Non si schianti contro ostacoli fissi o mobili

La navigazione egrave composta dalle seguenti parti

mapping planning rArr driving rArr

costruzione della mappa pianificazione esecuzione

Il mapping consiste nel rappresentare lrsquoambiente in cui il robot si muove

ottimizzando i movimenti del robot per ASGARD lrsquoambiente egrave stato rappresentato

mediante una matrice bidimensionale che rappresenta la sua area di azione

Il planning rappresenta la costruzione di un cammino geometrico nella

mappa Nel nostro lavoro si egrave deciso di dare la possibilitagrave al robot di scegliere il

percorso piugrave adatto che dovragrave intraprendere Come verragrave descritto piugrave in dettaglio

nel prossimo capitolo dopo aver inserito valori di riferimento degli ostacoli

mediante un algoritmo di ricerca saragrave il controllore a fornire le direttive e

scegliere che tipologia di camminata che ASGARD dovragrave affrontare in ogni

singolo istante alla fase di driving saragrave delegato il compito di scegliere il passo

opportuno al fine di velocizzare la camminata

Il goal per il nostro robot egrave il raggiungimento della posizione data come

obiettivo senza urtare ostacoli fissi presenti sul suo cammino Non essendo dotato

Modellizzazione cinematica e dinamica 81

di un sistema odometrico per il calcolo della posizione saragrave lo stesso controllore a

verificare in real-time la corretta posizione del baricentro del robot

Non possedendo nemmeno sensori di visione abbiamo deciso di simulare

e costruire una mappa object oriented30 la mappa conosce le posizioni degli

oggetti diffusi nel mondo e vieta al robot le aree in cui essi sono presenti

La mappa saragrave rappresentata da una matrice in cui per ogni cella avremo

valori che rappresentano la distanza dal goal31 e le distanza dallrsquoostacolo piugrave

vicino un opportuno algoritmo di planning (revisione dellrsquoAlgoritmo di Dijkstra)

attueragrave la ricerca del cammino meno dispendioso e dopo un opportuno controllo

diragrave al robot se attuare un passo di camminata veloce o un passo di correzione

471 Espansione degli ostacoli traformazione delle distanze

Basato sul concetto di propagazione drsquoonda32 il metodo della

trasformazione delle distanze proviene dal meccanismo utilizzato per processare

la forma in immagini binarie Il metodo consiste nella propagazione della distanza

da un insieme di celle poste in uno spazio rappresentato da una griglia

Si calcola lo scheletro dellrsquoimmagine ostacolo e si identificano le celle che

ne conterranno gli spigoli Poi si passa da sinistra a destra e dallrsquoalto al basso le

celle esterne al perimetro identificandole con distanza 1 Si procede per tutte le

celle della matrice quando tutti i passaggi sono completati il risultato egrave una

matrice che contiene la trasformazione delle distanze applicate al perimetro di un

oggetto I punti occupati dallrsquooggetto verranno identificati con valori idealmente

infinito e non saranno mai visitati

30 tipologia di costruzione di una mappa orientata agli oggetti 31 obiettivo 32 dallrsquooggetto considerato centro in tutte le direzioni dello spazio bidimensionale

Modellizzazione cinematica e dinamica 82

4 3 2 2 3 3 2 1 1 2 2 1 1 3 2 1 1 2 4 3 2 2 3

4 3 2 2 3 4 4 5 3 2 1 1 2 3 3 4 2 1 1 2 2 3 3 2 1 1 2 1 1 2 4 3 2 2 1 1 5 4 3 2 1 1 6 5 4 3 2 1 1 2

Figura 47 Propagazione drsquoonda per ostacolo singolo e multiplo

Abbiamo deciso di propagare lrsquoonda non solo dagli ostacoli questo

avviene in tutto lo spazio libero fluendo attorno agli ostacoli e dando unrsquoidea a

ogni cella della distanza dallrsquoobiettivo e della direzione da prendere per potersi

avvicinare

I valori del perimetro degli ostacoli vanno propagati in base alla geometria

del robot per evitare eventuali collisioni Nel nostro lavoro lrsquoespansione egrave stata

necessaria solo per i margini verticali in cui il raggio di elevazione delle zampe

poograve collidere con oggetti fissi durante la camminata longitudinale questo

problema non egrave stato invece riscontrato per lrsquoasse latitudinale

4 3 2 2 3 4 3 2 1 1 2 3

2 2 2 2 3 2 1 1 2 3 3 3 2 2 3 4

Figura 48 Griglia con espansione laterale ostacolo

Modellizzazione cinematica e dinamica 83

48 Scelta di un percorso Algoritmo di Dijkstra

Questo algoritmo egrave stato scelto come ricerca di un cammino minimo

allrsquointerno di un grafo[37] per la sua elegante semplicitagrave e il suo basso carico

computazionale (O(n)33)

Proposto da WDijkstra nel 1959[38] esso visita i nodi del grafo in

maniera simile ad una ricerca in ampiezza o profonditagrave In ogni istante lrsquoinsieme

N dei nodi viene diviso in nodi visitati V nodi frontiera F (che sono i successori34

dei nodi visitati) e i nodi sconosciuti che sono ancora da visitare

Per ogni nodo lrsquoalgoritmo tiene traccia del valore che nel nostro caso

saragrave il valore della distanza dal punto di arrivo e del nodo in cui siamo

Lrsquoalgoritmo consiste nel ripetere il seguente passo

zd

zu

si prende dallrsquoinsieme F un qualsiasi nodo z con minimo si sposta z da

F a V si spostano tutti i successori di z conosciuti in F e per ogni successore w di

z si aggiornano i valori di e

zd

wd wu ( )azww pddd +larr min dove a egrave lrsquoarco che

collega z a w Si sceglie in minore valore tra i successori di z si salva questrsquoultimo

nel vettore u

Alla fine dellrsquoalgoritmo arriviamo ad avere nel vettore u lrsquoinsieme dei nodi

che forniscono il cammino minimo dal punto di start al punto di end35

33 Orine di grandezza dellrsquoalgoritmo 34 Un successore di z egrave un nodo raggiungible lungo un arco uscente da z 35 dalla partenza allrsquoarrivo

Capitolo 5 Sviluppo dellrsquoalgoritmo di camminata

Sviluppo dellrsquoalgoritmo di camminata 85

51 Metodologie di sviluppo

Per lrsquoimplementazione della parte software si egrave scelto di far uso

dellrsquoambiente di sviluppo Matlab progettato appositamente per lavorare con

matrici e formule di notevole complessitagrave

Nel realizzare il modello matematico del robot ai fini di studiarne il

comportamento ci si potrebbe chiedere percheacute non sia stato utilizzato lrsquoambiente

di simulazione MSCADAMS in grado di fornire anche proprietagrave fisiche

direttamente dal modello CAD studiarne la cinematica la dinamica e

lrsquointerazione con il mondo esterno La finalitagrave di questo progetto perograve egrave quella di

creare uno strumento di supporto da poter essere realizzato in real-time

A questo punto Matlab potrebbe venir criticato per le sue prestazioni

inferiori a linguaggi quali il C ma esso mette a disposizione toolbox aggiuntivi

quali simulink36 che permettono un facile interfacciamento con tutti i dispositivi

hardware Ersquo comunque possibile convertire il codice sorgente in eseguibili o

addirittura nello stesso linguaggio C senza comprometterne alcuna funzionalitagrave

52 Progetto di una andatura

Per la creazione di una andatura rilevante al fine pratico abbiamo attuato

notevoli ricerche di analisi parametriche in merito Il principale obiettivo trovato egrave

risultata essere la realizzazione delle fasi di un passo stabile e veloce Ci

proponiamo quindi di massimizzare la componente velocitagrave senza provocare

instabilitagrave nel robot La velocitagrave si calcola secondo lrsquoespressione

impiegatotempomotodeldirezionenellapercorsospaziovelocitagrave

______

=

36 tool di matlab per la creazionedi controlli ad anello di automazione

Sviluppo dellrsquoalgoritmo di camminata 86

Per raggiungere tale scopo occorre concentrarsi su diverse questioni

bull Scelta del ciclo di camminata

bull Spazio decidere gli angoli del movimento di ciascuna zampa

bull Il tempo partire da una postura conveniente che garantisca i piugrave

brevi scostamenti possibili di angoli di giunto

bull La stabilitagrave

bull Le coppie prodotte dagli attuatori

bull La scelta della camminata

Attraverso lrsquoanalisi di alcune tra le possibili andature di quadruped sono

emersi pregi e difetti derivanti dallrsquoutilizzo di un ciclo di camminata con un

ridotto numero di fasi Un vantaggio fondamentale sta nel ridurre il tempo

impiegato e il maggior difetto egrave legato ai problemi di instabilitagrave del robot

Al fine di ridurre la stabilitagrave siamo intervenuti nella modellizzazione di un

opportuna camminata quasi statica che si adatta alla morfologia del nostro robot

Lrsquoidea egrave stata quella di trovare una camminata efficiente ma stabile

Al fine di ridurre lrsquoistabilitagrave sono state introdotte fasi aggiuntive che

garantiscono il poligono di appoggio e si egrave tentata di far assumere ad ASGARD

una postura a baricentro basso

Il trotto egrave stato escuso dalla nostra analisi non solo per il tempo di risposta

ma anche per lrsquoimpossibilitagrave di attuare spinte per il balzo

521 Lo spazio

La domanda che ci siamo posti egrave stata se risultava conveniente avanzare le

zampe attraverso piccoli spostamenti ripetuti o con ampi spostamenti meno

frequenti

Lrsquoavanzamento del robot avviene mediante la combinazione di due

movimenti

Sviluppo dellrsquoalgoritmo di camminata 87

bull lo spostamento delle singole zampe da una postura iniziale a una

finale

bull la spinta simultanea delle quattro zampe che permettono lrsquoeffettivo

movimento del main body37

La fase aerea risulta essere molto piugrave complessa e richiede un tempo di

attuazione maggiore rispetto a quella di spinta del busto

Lo spostamento assoluto della zampa che si solleva egrave la combinazione di

due movimenti quello attivo dipendente dalla traiettoria imposta allrsquoend effector

e quello passivo che si muove per mezzo della spinta offerta dal movimento del

busto i due movimenti sono strettamente correlati

Se lrsquoobiettivo egrave quello di massimizzare la velocitagrave del ciclo di camminata

la scelta egrave di prevedere lo spostamento della zampa piugrave ampio possibile (passo

lungo) Abbiamo comunque ritenuto utile introdurre entrambe le tipologie di

passo lungo e passo correttivo per la minimizzazione della distanza dal target

522 Stabilitagrave

Al fine di garantire la stabilitagrave egrave utile porsi nel caso quasi-statico cioegrave fare

in modo che il baricentro del robot cada sempre allrsquointerno del poligono di

stabilitagrave ciograve non sembra un problema per le fasi intermedie del ciclo di

camminata percheacute tutte e quattro le zampe toccano il terreno Il problema invece

si fa sentire nelle fasi in cui una zampa viene sollevata e un punto di contatto

viene a meno In questo caso abbiamo dovuto scegliere posture in cui il baricentro

cada nella base drsquoappoggio Ersquo indispensabile quindi prevedere tali configurazioni

e definirle in modo corretto

Occorre inoltre evitare che due zampe in appoggio poste sul medesimo

lato si urtino durante il moto infatti spazi di lavoro delle zampe presentano

strutturalmente zone di intersezione non trascurabili

37 corpo o busto del robot

Sviluppo dellrsquoalgoritmo di camminata 88

Un ulteriore accorgimento per migliorare la stabilitagrave risulta essere quello di

cercare di abbassere il baricentro durante la camminata al fine di mantenere

costante lrsquointensitagrave del moto associato alla forza peso del robot calcolato rispetto

ai punti di appoggio

523 Tempo

Un altro punto su cui si egrave posta particolare attenzione risulta essere il

piegamento delle zampe nel senso se decidere se per compiere un movimento egrave

piugrave conveniente (in termini di spostamento) tenere le zampe tese o piegate

In base a valori di test riscontrati si deduce che in genere conviene tenere

le zampe piuttosto tese poicheacute in questo modo lrsquoescursione angolare nonostante

amplifichi il movimento garantisce un corretto riposizionamento nella posizione

finale desiderata e i tempi non subiscono variazioni

53 Andature implementate

Dopo lrsquoanalisi compiuta sulle modellizzazioni naturali e sui parametri di

scelta abbiamo implementato due tipologie di camminata

Considerando la rigiditagrave del busto di ASGARD esso non dispone di spina

dorsale mobileabbiamo implementato uno stile quasi-statico che non altera lrsquoasse

del baricentro Questo ci ha vincolato a muovere una sola zampa alla volta

(motivazione da cercare anche nella alimentazione dei motori) facendolo partire

da una particolare postura in cui entrambe le zampe del lato sinistro del corpo

sono arretrate rispetto al busto e con angolature precisa degli arti

Abbiamo cosigrave creato una scomposizione del movimento in sei fasi

succesive

bull movimento zampa RL

bull movimento zampa RF

Sviluppo dellrsquoalgoritmo di camminata 89

bull spostamento in avanti del baricentro

bull movimento zampa LR

bull movimento zampa LF

bull spostamento in avanti del baricentro per tornare a posizione base

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

In questa tipologia di gait il robot si trova in piena stabilitagrave anche durante

lrsquoalzata di una zampa la proiezione del centro di massa risulta essere centrale al

triangolo drsquoappoggio

Questa tipologia di camminata quasi-statica egrave una alterazione del modello

Crawl38 presente in natura e nei modelli Aibo con lrsquoinnovazione di sfruttare

posture del normale trotto differenziandone e rallentandone le fasi di realizzazione

al fine di maggiorare il triangolo di appoggio in relazione alla struttura fisica del

nostro robot

Il segmento di appoggio dello stile Crawl viene qui espanso ad un

triangolo di stabilitagrave pur mantenendone le caratteristiche di spazio percorso e

velocitagrave

La nostra ricerca ci ha ulteriormente spinti alla creazione di un ulteriore

stile di camminata quasi-dinamico in cui la proiezione del baricentro durante

lrsquoalzata si spinge a coincidere con il lato del poligono di stabilitagrave

Le fasi di camminata diversificano da quelle precedenti per lrsquoangolazione

degli attuatori e lrsquoordine di esecuzione dei movimenti

Il passo risulta essere composto da 5 fasi

bull movimento zampa RF

bull movimento zampa LF

bull spostamento in avanti del baricentro

bull movimento zampa RR

bull movimento zampa LR

38 modello di trotto di Aibo

Sviluppo dellrsquoalgoritmo di camminata 90

Nella nostra analisi essendo ancora precario il controllo sugli attuatori

risulta impossibile realizzare un impulso tale da creare il balzo del robot Le

andature studiate escludono pertanto lrsquoandatura dinamica o trotto

La camminata quasi-statica egrave stata correttamente testata sul campo

ottenendo buoni risultati le tempistiche di risposta del robot no hanno permesso

perograve la completa realizzazione della quasi-dinamica che in alcune prove non viene

portata a termine in tutte le sue fasi a causa di cedimenti in stabilitagrave

Per questa ragione essa egrave stata ampiamente testata a simulatore

Per lrsquoanalisi dei suoi movimenti essi sono stati elaborati ed egrave stata creata

anche una variante che presenta una minimizzazione dellrsquoangolatura del giunto

spalla e riporta il movimento a quasi-stabile (passo correttivo esso sposta infatti il

robot sulllrsquoasse longitudinale solo di 2 cm)

54 Catene cinematiche del robot

Per lrsquoiplementazione a simulatore abbiamo dovuto adattare il nostro robot

ad una analisi cinematica e dinamica posizionando su di esso i sistemi di

riferimento in modo da costruire una catena cinematica aperta

Per semplificare il modello abbiamo deciso di caratterizzare la struttura del

robot in quattro catene cinematiche aventi base coincidente nel baricentro e

facendo coincidere ogni end-effector con la relativa zampa in movimento

La prima catena quindi che ci proponiamo di analizzare risulta quindi

essere la seguente

Sviluppo dellrsquoalgoritmo di camminata 91

z0

x0

y0

z1

x1

y1

y2

y3

y4

x2

x3

x4

Figura 49 Posizionamento dei sistemi di riferimento con D-H sulla zampa reale

Essa egrave stata implementata in Matlab utilizzando il metodo di D-H

precedentemente descritto implementato nel nostro tool di analisi

INIT_ROBOT Funzione di definizione delle componenti del robot allinterno del nostro simulatore In relazione alle componentistiche del nostro robot e alla grafica del simulatore questa funzione si propone di definire le parti fondamentali inserendo opportunatamente i parametri di Denavit Hartemberg Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 Copyright (C) 2003-2004 by Picco Sabrina zampa A clear L definifione allinterno della matrice L i parametri di Denavit Hartemberg sigma= 1 giunto prismatico sigma=0 giunto rotoidale sono stati inseriti due giunti prismatici per motivi di grafica del simulatore nel collegamento con i motori reali tali valori non verranno considerati alpha A theta D sigma L1 = link([0 -01 pi4 0 1] mod) L2 = link([0 -06 -pi4 0 0] mod) L3 = link([0 0 -pi4 0 1] mod)

Sviluppo dellrsquoalgoritmo di camminata 92

L4 = link([-pi2 -0573 0 0 0] mod) L5 = link([0 -0675 0 0 0] mod) L6 = link([0 -0735 0 0 0] mod) zampaa = robot(L zampaa Unimation AKampB) clear L

Nel codice Matlab riportato per la creazione di una zampa i parametri

prismatici introdotti sono utilizzati solamente a scopo grafico e vengono tralasciati

dallrsquoalgoritmo per la creazione dei movimenti e dei comandi da spedire algli

attuatori

Si egrave cercata una rappresentazione in grado di descrivere non soltanto i

giunti e i link ma anche altre caratteristiche fondamentali quali masse e lunghezze

Il passo viene scomposto principalmente in due passaggi movimento in

avanti delle zampe e spostamento del busto Nel secondo passaggio la catena

cinematica costruita deve ldquoinvertirsirdquo in quanto non saragrave piugrave la zampa del robot a

costituire il nostro end-effector ma essa saragrave solidale con il terreno e saragrave il

baricentro a diventare il nostro punto terminale asimulatore infatti non sono

possibili movimenti che sfruttano la semplice forza attrito

La catena cinematica verragrave cosigrave modificata

Creazione di un ulteriore robot per caratterizzare il cambiamento del punto di partenza della catena cinematicamentre per la prima parte del passo lend-effector egrave la zampadopo che questa egrave stata appoggiata lend-effector diventa il baricentro del robottino alpha A theta D sigma L1 = link([0 0 0 065 1] mod) L2 = link([0 0 0 0 0] mod) L3 = link([pi2 0 0 0 0] mod) L4 = link([0 0573 0 0 0] mod) L5 = link([pi2 0675 0 0 0] mod) L6 = link([0 0735 -pi4 0 0] mod) zampaa2 = robot(L zampaa2 Unimation AKampB)

Sviluppo dellrsquoalgoritmo di camminata 93

Figura 50 Fase di movimento delle zampe anteriorila base delle quattro catene

cinematiche egrave identificata con il baricentro di cui viene effettuata la prioezione

Figura 51 Fase di spostamento del baricentro si possono notare le proiezioni delle

basi delle rispettive catene cinematiche che si identificano con le zampe

La parte di codice presentato appartiene al file Init_robotm in cui vengono

definite tutte le catene cinematiche necessarie al movimento

Un ulteriore definizione di notevole importanza egrave la ricerca di tutti i punti

essenziali per il corretto posizionamento del robot durante la camminata

Sviluppo dellrsquoalgoritmo di camminata 94

Nel file DB_Positionm vengono memorizzate le posizione chiave per la

costruzione di un passo

Nel nostro algoritmo un passo egrave rappresentato da una sequenza di

posizioni base opportunatamente scelte in relazione ai parametri utili per

realizzare gait veloci e stabili

Il movimento che trasla tutta la struttura da un punto al successivo viene

definito da un profilo di accelerazione e velocitagrave implementato via software che

permette di ottenere ottenere un controllo efficiente e un movimento fluido che

rispetti certi vincoli di forza e di tempo

La funzione jtrajm infatti implementa al suo interno un polinomio di

quinto grado che permette il controllo in velocitagrave e accellerazine sia nel punto di

partenza che di fine della traiettoria permettendo un movimento ldquodolcerdquo che egrave in

grado di evitare picchi di torsione Purtroppo nella realizzazione pratica questo egrave

risultato fin troppo oneroso in quanto sui motori da noi usati non esiste alcun

controllo in velocitagrave

Al fine di rendere piugrave reale la simulazione abbiamo implementato un

semplice controllo in movimento da una posizione finale ad una posizione finale

in un certo intervallo di tempo Esso egrave costituito da un semplice polinomio di

terzo grado non attua controlli e gestisce il movimento spingendo il servo a

velocitagrave massima per ogni intervallo Presentiamo la parte di codice per la

gestione del calcolo delle traiettorie e le principali caratteristiche

sullrsquoimplementazione dei vincoli che diversificano in relazione al polinomio

utilizzato

FUNZIONE CUBICA_norm Funzione per la generazione di una traiettoria da un punto iniziale q0 ad un punto di arrivo qf in un certo intervallo di tempo tv utilizzando un polinomio di terzo grado parametri in input q0= posizione iniziale qf= posizione finale da raggiungere tv=tempo in cui effettuare lazione

FUNZIONE JTRAJ Funzione per la generazione delle traiettorie da qo a q1I numero di interpolazioni dipende dal valore di tLa costruzione di tale algoritmo di generazione avviene tramite lutilizzo di un polinomio di ordine 5 con condizioni di velocitagrave e accellerazione agli estremi parametri input q0=posizione iniziale

Sviluppo dellrsquoalgoritmo di camminata 95

parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [qtnqdtnqddtn] = cubica_norm(q0qftv) if length(tv) gt 1 controllo sul tempo tscal = max(tv) t = tv()tscal else tscal = 1 t = [0(tv-1)](tv-1) normalizzazione parametrotempo end q0 = q0() qf = qf() qt= a0+ a1t+ a2t^2+ a3t^3 vincoli da soddisfare qdt= a1+ 2a2t+ 3a3t^2 qddt= 2a2+ 6a3t implementazione dei vincoli A=q0 B= zeros(size(A)) C=((3(tscal^2))(qf-q0)) D=(((-2)(tscal^3))(qf-q0)) creazione del polinomio ttpv = [t^3 t^2 t ones(size(t))] p=[D C B A] creazione del vettore velocitagrave qtn = ttpv p

q1= posizione finale da raggiungere tv=tempo in cui effettuare lazione qd0=condizione velocitagrave nellestremo di partenza qd1=condizione velocitagrave nellestremo di arrivo parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 implementazione dei vincoli A = 6(q1 - q0) - 3(qd1+qd0)tscal B = -15(q1 - q0) + (8qd0 + 7qd1)tscal C = 10(q1 - q0) - (6qd0 +4qd1)tscal E = qd0tscal F = q0 creazione del polinomio tt = [t^5 t^4 t^3 t^2 t ones(size(t))] c = [A B C zeros(size(A)) E F] calcolo valore posizione qt = ttc calcolo la velocitagrave c1 = [ zeros(size(A)) 5A 4B 3 C zeros(size(A)) E ] qdt = ttc1tscal calcolo accellerazione c2 = [ zeros(size(A)) zeros(size(A)) 20A 12B 6C zeros(size(A))] qddt = ttc2tscal^2

Per la chiamata di entrambe queste funzioni vengono richieste le posizioni

di partenza di arrivo ed un tempo questrsquoultimo rappresenta il tempo che intercorre

tra un frame e il successivo cioegrave ogni quanto verragrave generato un valore di

posizione Per ottenere quindi un movimento il piugrave possibile continuo dovremo

richiedere la generazione di un elevato numero di frame introducendo un tempo

piccolissimo Ad esempio se vogliamo che lrsquointerpolazione generi 10 posizioni

intermedie e che tutto il movimento sia compiuto in 1 sec dobbiamo dare t=01

Sviluppo dellrsquoalgoritmo di camminata 96

55 Passo statico e dinamico

Finora abbiamo visto come sia possibile simulare il movimento di una

singola zampa o del baricentro del nostro robot per eseguire un passoa

simulatore questi movimenti devono perograve essere coordinati in modo opportuno

per permettere lrsquoesecuzione sequenziale delle fasi che lo compongono

In prima analisi il nostro lavoro si posto come obiettivo di creare un passo

quasi-statico in cui il baricentro del robot egrave strettamente compreso nella base

drsquoappoggio per garantire al robot una discreta stabilitagrave

Lrsquoanalisi delle fasi della camminata quasi-statica da noi introdotta

possono essere cosigrave schematizzate

Figura 52 Le 6 fasi della camminata quasi-statica

Da questo possiamo notare come il passo si divide in 6 movimenti in cui

vengono mosse le zampe sul lato sinistro del corpo si sposta in avanti il busto si

muovono le zampe sul lato destro e si risposta il busto per tornare alla posizione

di partenza

Ersquo da notare come lo spostamento del busto nellrsquoanalisi reale avviene

sfruttando lrsquoattrito delle zampe con il suolo mentre a simulatore egrave richiesta

lrsquoinversione della catena cinematica

La struttura da noi proposta e analizzata tenta di attuare una camminata

stabile e veloce

Il calcolo della stabilitagrave nei movimenti risulta effettivamente coerente con

le nostre aspettative

Sviluppo dellrsquoalgoritmo di camminata 97

Figura 53 Analisi margine di

stabilitagravesolo alzata(sinistra)in

movimento(destra)

Dove

321 ddd == distanza tra baricentro e perimetro

021 ne= ll durante il passo considero solo la distanza sullrsquoasse del moto

Dopo aver raggiunto un discreto livello di camminata quasi-statica il

nostro obiettivo si egrave spostato nella realizzazione di una camminata quasi-

dinamica

Figura 54 Fasi della camminata quasi-dinamica

Come si puograve notare in questa configurazione esistono istanti in cui il

baricentro del nostro robot giace sul perimetro del triangolo drsquoappoggio in questi

istanti servirebbe una risposta immediata degli attuatori per limitare le tempistiche

di movimento e permettere al robot di mantenere lrsquoequilibrio Questo fenomeno

presente anche in natura lo possiamo notare analizzando la corsa di una pantera

quando il suo corpo ondeggia in ampi angoli i suoi movimenti diventani fulminei

per mantenere la stabilitagrave

Il nostro algoritmo presenta la sezione camminata_statm che simula i due

passi e ne mostra le differenze

Sviluppo dellrsquoalgoritmo di camminata 98

Figura 55 Passo Statico vista semi frontale

Figura 56 Passo Statico vista dallrsquoalto

Figura 57 Passo Quasi-Dinamico vista semi

frontale

Figura 58 Passo Quasi-Dinamico vista

dallrsquoalto

Possimo notare anche dalle immagini come egrave posizionato il baricentro del

nostro robot rispetto alla base drsquoappoggio in diverse fasi del passo e come nella

camminata quasi-dinamica si spinge a limiti intollerabili per le caratteristiche

fisiche del nostro progetto attuale

Presentiamo di seguito lo schema a blocchi di analisi della camminata

Sviluppo dellrsquoalgoritmo di camminata 99

Cerca posizione da raggiungere

Calcola traiettoria end-effector tramite cubiche

Traccia poligono drsquoappoggio per laposizione raggiunta

inizio

Fine

Attua movimento

Posizione=target no

si

Figura 59 Schema a blocchi creazione singolo passo

Il codice proposto in appendice egrave stato successivamente opportunamente

modulato ma questo ha portato a ulteriori cali di prestezione Pertanto nella

esecuzione si egrave preferito riutilizzare il file integro Problemi di tempistiche sono

da attribuirsi alla parte grafica e al calcolo matriciale richiesto per ogni

movimento

La sperimentazione dei passi reali sul robot fisico sono stati effettuati

utilizzando array di valori di angoli di giunto estrapolati durante la simulazione

sopra citata

Sviluppo dellrsquoalgoritmo di camminata 100

56 Formule di forza e torsione sui giunti

Uno dei ruoli principali delle zampe egrave quello di sostenere la piattaforma

del robot e di evitare la caduta

A causa di un cedimento strutturale avvenuto durante i primi approcci di

pilotaggio dei motori abbiamo pensato necessario calcolare la forza e la torsione

sui giunti utilizzando le formule di Newton-Eulero viste precedentemente La

risoluzione di tali equazioni richiede una potenza di calcolo non indifferente ma

le tempistiche del nostro simulatore sono causate dalla lentezza nel plottaggio dei

grafici e dei movimenti del robot

Non avendo un diretto valore di velocitagrave dei motori ci egrave sembrato

interessante provare a calcolare effettivamente le tempistiche dei motori

Conoscendo tramite la cinematica diretta la posizione di arrivo per ogni coppia di

valori abbiamo calcolato lo spazio percorso Cronometrando il tempo richiesto

affincheacute i motori si portassero nella posizione voluta egrave stato possibile valutare la

velocitagrave media dei motori

Questa velocitagrave egrave stata successivamente introdotta nellrsquoalgoritmo

Per il calcolo delle formule di Newton-Eulero egrave inoltre da sottolineare

lrsquoimportanza della ripartizione delle masse ci egrave sembrato coerente ipotizzare le

equidistribuzione del peso su tutte e quattro le zampe in quanto la PIC aggiuntiva

non dovrebbe influenzare tale ripartizione

Dallrsquoanalisi svolta si trovano i seguenti valori sui giunti

Sviluppo dellrsquoalgoritmo di camminata 101

Figura 60 Gafici della torsione in un passo quasi-dianmico

Dal grafico possiamo inanzitutto notare come i valori di torsione che ogni

motore subisce sono inferiori al valore massimo possibile dichiarato dalla casa

costruttrice presente in ogni grafico con la linea nera continua

Possiamo vedere che il valore piugrave alto di torsione viene subito

dallrsquoattuatore presente sulla caviglia sul quale ricadono le maggiori sollecitazioni

Un comportamento analogo ma con decisamente meno carico avviene sul

giunto del ginocchio orientato come il precedente che ha la funzione di aiutare la

caviglia nel sostegno del peso

Il giunto della spalla presenta lrsquoasse di rotazione parallelo alla forza peso

di cui per questo motivo non se ne fa carico Le sue piccole perturbazioni sono

causate durante il movimento del busto dalla resistenza della forza di attrito

sfruttata per il movimento e durante lrsquoalzata della zampa dal peso di ogni singola

Sviluppo dellrsquoalgoritmo di camminata 102

articolazione che risulta perograve essere pressocheacute irrilevante rispetto al peso del

busto

Durante il movimento si possono osservare sulle grandezze di ginocchio e

caviglia una serie di oscillazioni tra due valori essi sono causati dalla ripartizione

del peso su tre o quattro zampe in base alle alzate consecutive quando il peso egrave

ripartito su tre zampe ovviamente il carico che ogni singola zampa egrave costretta a

subire cresce

Ovviamente durante lrsquoalzata ogni singola zampa presenta sui giunti

torsioni pressocheacute nulle questi minimi valori sono da attribuirsi alla sola

resistenza di ogni link alla forza di gravitagrave

La parte di codice fondamentale riportata in Appendice B per questa

funzione risulta essere la definizione dei parametri e lrsquoimplementazione delle

formule di andata e di ritorno dei valori Le funzione base viene chiamata

allrsquointerno di una ulteriore funzione NW-EUm che adatta lrsquoanalisi al passo

Esisteragrave nellrsquoalgoritmo una funzione eulerom che effettueragrave i calcoli di

Newton-Eulero anche per la catena cinematica che presenta come end-effector il

baricentro

57 Anello di Controllo

Un ulteriore controllo introdotto egrave il calcolo della cinematica inversa e il

controllo sulla soluzione trovata

A questo anello di controllo egrave stato predisposto il possibile inserimento di

un eventuale errore nel raggiungimento della posizione voluta Questo errore

potrebbe essere rilevato in futuro da sensori di posizione o da un sistema di

stereovisione dellrsquoambiente in grado di percepire la reale posizione di ogni zampa

Per ora viene passato come parametro di input settato da utente

Sviluppo dellrsquoalgoritmo di camminata 103

Figura 61 Anello di controllo cinematica inversa

Diversi approcci sono stati implementati per il calcolo della cinematica

inversa la funzione dagrave la possibilitagrave allrsquoutente settare le equazioni decisionali

quali scegliere il metodo da utilizzare settare lrsquoapprossimazione desiderata nel

caso di metodo del gradiente e la configurazione a gomito alto o basso nel caso di

metodo geometrico

Presentiamo di seguito lo schema a blocchi di sviluppo dellrsquoalgoritmo che

ci permetteragrave una spiegazione piugrave immediata del funzionamento

Sviluppo dellrsquoalgoritmo di camminata 104

Applico formule geometriche Metodo gradiente

Scelta algoritmo

inizio

Metodo inseguimento veloce del gradiente

Calcolo cinematica diretta

Setto parametri decisionali

Calcolo errore

fine

Figura 62 Schema a blocchi calcolo cinematico

Proponiamo successivamente lo pseudo codice in merito la funzione di

inseguimento veloce del gradiente al fine di rendere piugrave chiare e dettagliate le sue

caratteristiche di esecuzione

1 Anticipatamente viene settata la approssimazione desiderata per il

raggiungimento del target e lrsquoincremento dellrsquoangolo

2 Pongo nullo lrsquoincremento iniziale

Sviluppo dellrsquoalgoritmo di camminata 105

3 Pongo nulli i rispettivi valori di gradiente_old dei singoli giunti

4 Calcolo la distanza dal target con le posizioni base

5 Fintantochegrave la distanza non egrave minore dellrsquoapprossimazione introdotta

bull Calcolo i valori dei nuovi gradienti incrementando i singoli angoli

del valore incremento prefissato

bull Confronto il valore del segno del nuovo gradiente del primo giunto

con il corrispettivo gradiente_old

- se segno discorde diminuisco il valore dellrsquoangolo in

funzione el valore del gradiente nuovo e old al fine di

arrivare al punto di colle

- se segno concorde aumento ulteriormente lrsquoangolo del

giunto aggiungendogli un valore proporzionale alla distanza

trovata

bull viene eseguito lo stesso controllo per il secondo giunto

bull incremento la variabile num_iterazioni

bull i nuovi gradienti diventano i gradienti_old

bull Calcolo la distanza con il nuovi valori degli angoli dei due giunti e

torno al punto 5

58 Map-building e scelta del gait

Il nostro scopo egrave quello ricreare un programma che ricevendo in input i

soli valori di dimensione dellrsquoarea di gioco e posizione degli ostacoli fornisca al

robot tutti i comandi per muoversi nellrsquoambiente e arrivare allrsquoobiettivo senza piugrave

intervento esterno A tal fine questa funzione dovragrave comprendere diversi goal

intermedi che possono essere cosigrave schematizzati

Sviluppo dellrsquoalgoritmo di camminata 106

Creazione mappa

Ricerca percorso

Scelgo passi da attuare

inizio

fine

Il programma si divide in tre parti fondamentali

bull creazione della mappa tramite algoritmo di map-building

bull ricerca del percorso

bull decisione del passo da intraprendere per ogni istante e applicazione

del gait oppotuno

581 Costruzione della mappa ed espansione degli ostacoli

Abbiamo elaborato la costruzione di una mappa creando una matrice

bidimensionale in cui ogni cella rappresenta le possibili posizioni del baricentro

del robot nellrsquoambiente Utilizzando valori noti in input per le dimensioni e i

posizionamenti degli oggetti egrave il programma stesso a fornirci la matrice

Un ostacolo viene identificato come un cubetto in cui le coordinate inserite sono

Sviluppo dellrsquoalgoritmo di camminata 107

Xa1Ya1

a

Xa2Ya2

Per ogni cella sono presenti due valori il primo rappresenta la distanza

dallrsquoobiettivo il secondo la distanza dallrsquoostacolo piugrave vicino (se ne esiste piugrave di

uno) Questi valori sono determinati tramite onde di propagazione che partono

dallrsquooggetto in esame e si diffondono in tutte le direzioni allrsquointerno della mappa

Lrsquoonda egrave da considerarsi come una scansione prima orizzontale e poi verticale

dellrsquoambiente che incrementa ad ogni riga i controlli sulla distanza sono

introdotti in seconda analisi il controllo sulla distanza dellrsquoostacolo piugrave imminente

qualora ce ne siano presenti piugrave di uno e il controllo sullrsquoespansione drsquoonda

limitata qualora lrsquoostacolo o la destinazione si trovino ai borbi della mappa

Gli ostacoli presentano una ulteriore onda di espansione orizzontale in

quanto egrave solo lungo questa direzione che possono avvenire collisioni tra il nostro

robot in movimento e gli ostacoli fissi Accorgimenti successivi ci hanno

permesso la costruzione di un ulteriore passo correttivo che puograve essere utilizzato

in un secondo momento per un avvicinamento forzato

Figura 63 Mappa creata vista dallrsquoalto

Sviluppo dellrsquoalgoritmo di camminata 108

Figura 64 Visione della mappa semilaterale si possono vedere i corpi degli ostacoli

Matrice generata

10 3 9 2 109 0 110 0 110 0 109 0 4 2 9 2 8 2 109 0 110 0 110 0 109 0 3 1 8 1 7 1 6 2 5 1 109 0 110 0 110 0

110 0 110 0 109 0 4 2 109 0 110 0 110 0 110 0 110 0 109 0 3 2 2 2 1 1 0 1

Ogni elemento della matrice rappresenta un vertice di intersezione delle

coordinate (xy) della mappa Il primo valore equivalente a 110 rappresenta

lrsquoostacolo il valore 109 la sua espansione in altro caso esso egrave la distanza dalla

destinazione Il secondo valore rappresenta la distanza dallrsquoostacolo piugrave

imminente

582 Algoritmo di ricerca del percorso minimo

Avendo a disposizione una matrice che mi identifica tutto lrsquoambiente che

circonda il robot abbiamo deciso di modificare lrsquoAlgoritmo di Dijkstra

precedentemente descritto al fine di trovare un percorso minimo con bassa

computazionalitagrave di calcolo

Sviluppo dellrsquoalgoritmo di camminata 109

Nella prima fase abbiamo applicato lrsquoalgoritmo di ricerca operativa non su

un grafo ma su una matrice considerando come nodi successori le quatto celle

confinanti (su giugrave dx sx) rispetto a quella in cui ci troviamo Il costo di

movimento o meglio il miglior successore in cui spostarsi per riterare lrsquoanalisi

viene scelto tramite lrsquoimplementazione di un compromesso adeguato tra

minimizzazione della distanza dal target e massimizzazione della distanza dagli

ostacoli

Questa funzione restituisce in output se egrave stato trovato un percorso in caso

affermativo di esso visualizza le coordinate dei punti da attraversare e le

indicazioni in rappresentazione direzionale (destra sinistra avanti indietro)

Direzioni

start Destra Avanti Avanti Destra Destra Avanti Avanti Destra Destra Destra

Coordinate

1 1 1 2 2 2 3 2 3 3 3 4 4 4 5 4 5 5 5 6

5 7

Tabella 2 risultati ricerca percorso

Riportimo il flow-chart che descrive lrsquoalgoritmo di ricerca sopra citato

Sviluppo dellrsquoalgoritmo di camminata 110

pos =partenza migliore=non_valido

Considero 4 successori

Passo ad altro

successore

pos=visitato

pos=v

Stampo percorso in coordinate

Trasformo percorso in direzioni

inizio

Pos = destinazione

Egraversquo pos sul bordo

Considero 32 successori

Insieme successori vuoto

Considero successore v

distanza dest_vltdistanza dest

migliore

distanza ost_vltdistaza ost

migliore

Percorso non trovato

salvo pos in percorso

fine

si no

si

no

si

si

no

no

no

si

Figura 65Schema a blocchi ricerca percorso

Sviluppo dellrsquoalgoritmo di camminata 111

583 Realizzazione del gait

Una volta generato il percorso da seguire segue la parte piugrave dispendiosa in

tempo in quando legata alla grafica

Sono stati implementati per la realizzazione del percorso i seguenti passi

bull in avanti

bull in dietro

bull a destra

bull a sinistra

bull correttivo avanti

bull correttivo indietro

bull correttivi laterali non sono stati introdotti a causa del giagrave minimo

spostamento laterale per ogni passo in quella direzione (2 cm)

La terza parte di algoritmo considera il percorso generato e decide il passo

da mettere in pratica uno spostamento sullrsquoasse verticale del piano implica una

scelta ulteriore per la calibrazione del numero di passi lunghi e dei passi correttivi

Una ampia falcata permette il movimento del robot di 7 cm mentre il passo

correttivo di 2 Il programma in base al percorso ottimizza le tempistiche

effettuando il maggior numero di passi ampi e riassestando la posizione con il

minor numero possibile di passi correttivi dispendiosi in tempo

Saragrave possibile ammirare tutta la camminata del nostro robot in una

immagine che plotta tutti i movimenti del robot

Sviluppo dellrsquoalgoritmo di camminata 112

Figura 66 Robot in movimento nellrsquoambiente

Al raggiungimento dellrsquoobiettivo destinazione sulla mappa appariragrave oltre il

percorso ideale il percorso effettivamente compiuto dal robot dandoci in uscita

anche le approssimazioni al valore reale di destinazione

Figura 67 Immagini del percorso trovatoin verde percorso ideale in blu percorso

effettivo

Tali valori rappresentano la distanza ancora da percorrere e la scelta

dellrsquoulteriore passo da intraprendere per compierla

Sviluppo dellrsquoalgoritmo di camminata 113

SONO ARRIVATO A DISTANZA DALL OBIETTIVO DIX = 35527e-015 Y = -03200 testo = devo fare ancora ans = 16000 testo = passi correttivi indietro

Dopo averci fornito queste informazioni il controllore comanderagrave e faragrave

eseguire al robot i passi correttivi appropriati che gli mancano per il

raggiungimento della destinazione

Schema a blocchi dellrsquoultima parte dellrsquoalgoritmo

Sviluppo dellrsquoalgoritmo di camminata 114

Alzata nello start

Analisi elemento i

Avanti Indietro Passo dx Passo sx

Calcolo avanzamento complessivo

Calcolo num passi lunghi e

corretivi

Esegue passi

Memorizzo pos

Stampa percorso vero e ideale

Calcola distanza dal target

Effettua passi correttivi ancora

possibili

inizio

Esistono elementi in percorso

Calcolo indietreggiamento

complessivo

Esegue passo

fine

no

si

1 -1 2 -2

Figura 68 Schema a blocchi movimento

Capitolo 6 Sperimentazione e analisi dei risultati

Sperimentazione e analisi dei risultati 116

61 Risultati statici

La creazione di file a se stanti contenenti tutte le possibili posture del

nostro robot e la realizzazione di procedure che identificano i passi standard

possono essere in un secondo momento cablati su un chip di controllo diretto

posizionato on-board

Questo darebbe la possibilitagrave reale al robot di deambulare senza

condizionamento con un Pc remoto Il processo di creazione dei percorsi vincola

perograve il movimento in quanto non sono presenti tuttora sensori di visione

Possiamo inoltre affermare che tra gli stili di camminata da noi studiati ha

un ruolo fondamentale la camminata quasi-statica che effettivamente permette il

movimento del robot in ambiente piano la camminata quasi dinamica richiede

ulteriori fasi di analisi soprattutto in merito al miglioramento della risposta dei

motori

Sono state effettuate diverse prove per la realizzazione di movimenti

fluidi il valore riscontrato a simulatore e di 30 frame mentre nella realizzazione

pratica a causa dei tempi di risposta egrave stato raggiunto un valor di soglia frame=8

che permette la realizzazione di movimenti continui

Sperimentazione e analisi dei risultati 117

611 Passo reale effettuato

In prima analisi poniamo le foto delle fasi piugrave significative del passo quasi-

statico compiuto da ASGARD in laboratorio

- 1 - - 2 -

- 3 - - 4 -

- 5 - - 6 -

Sperimentazione e analisi dei risultati 118

- 7 - - 8 -

- 9 - - 10 -

- 11- - 12 -

Tabella 3 Foto del passo quasi ndashstatico eseguito da ASGARD

Le foto rappresentano la sequenza di esecuzione della nostra camminata

quasi-statica nelle viste dallrsquoalto si possono notare le caratteristiche delle posture

assunte dalle zampe e si puograve verificare il poligono drsquoappoggio

Sperimentazione e analisi dei risultati 119

Da porre in particolare evidenza sono gli angoli del giunto che rappresenta

la spalla calibrati al fine di non interferire nel movimento durante il moto

Nelle viste laterali sono da porre in particolare evidenza i momenti di volo

di ogni singola alzata caratterizzandone le tempistiche di movimento

Da notare le immagini 5 6 e 1011 in cui si verifica la spinta del baricentro

in avanti nel primo caso per lrsquoavanzamento a metagrave passo nel secondo caso per

riposizionare le zampe nella posizione iniziale

612 Misurazioni reali della pressione

Durante le prove di laboratorio in merito alla camminata statica del robot

sono stati effettuati rilevamenti dellrsquounico sensore di pressione posto sotto la

zampa anteriore sinistra

Figura 69 Particolare del sensore di pressione da noi costruito (sinistra) e del

posizionamento di esso sotto la zampa anteriore sinistra (destra)

Sperimentazione e analisi dei risultati 120

I dati riscontrati sono

istanti descrizione Valori di resistenza misurati(ohm) media

passi 1 2 3 4 5 ottenuta

1 4 in appoggio 321 287 298 314 306 3052 2 alzo C 233 246 239 253 232 2406 3 appoggio C 266 275 294 278 289 2804 4 alzo B 1271 1232 1244 1262 1251 1252 5 appoggio B 98 90 99 92 87 932 6 sposto busto 311 308 298 301 287 301 7 alzo D 198 209 203 195 211 2032 8 appoggio D 302 319 311 320 301 3106 9 alzo A 180 193 184 192 177 1852

10 appoggio A 268 259 262 270 281 268 11 sposto busto 108 115 127 122 123 119 12

Assestamento

308

305

311

313

299

3072

Tabella 4 Rilevamenti sensore pressione

Da questa tabella abbiamo trasformato i valori di resistenza in forza secondo i

diagrammi di caratteristica del sensore e abbiamo trovato

val resistenza pressione

Ohm

Kg

4 in appoggio 3052 031 alzo C 2406 045

appoggio C 2804 034 alzo B 1252 002

appoggio B 932 15 sposto busto 301 0306

alzo D 2032 049 appoggio D 3106 034

alzo A 1852 055 appoggio A 268 046 sposto busto 119 06 assestamento

3072

033

Tabella 5 Trasformazione in forza dei valori misurati del sensore pressione

Sperimentazione e analisi dei risultati 121

Da cui si puograve ricavare il seguente grafico

Volori di pressione rilevati sperimentalmente

002040608

1121416

0 5 10 15

istanti temporali passo (sec)

pres

sion

e (K

g)

pressione

impatto con il suolo

Alzata

Figura 70 Grafico della pressione

Da questo possiamo notare come effettivamente il sensore rileva le

variazioni di forza peso che agiscono sulla zampa

Le misure sono state effettuate dopo un periodo di assestamento iniziale

quando effettivamente tutte le zampe sono appoggiate il carico risulta essere

minore mentre aumenta alle singole alzate delle altre tre articolazioni Si puograve

inoltre notare dal grafico come dopo lrsquoalzata la zampa subisce un forte impatto

con il terreno istante 5 e non si riposiziona piugrave esattamente corretta aderenza

qusto causa un eccessivo carico solo su alcune parti esterne del piedino (dove egrave

situato il sensore) che andranno ad aggravare le misurazioni durante le successive

alzate

Purtroppo questo incorretto posizionamento egrave causato dalla poca mobilitagrave

del giunto passivo della zampa che puograve essere migliorato solo tramite interventi

alla struttura meccanica Ulteriore vantaggio si potrebbe riscontrare con

lrsquoinserimento di un controllo di velocitagrave che eviti impatti considerevoli con il

terreno

Sperimentazione e analisi dei risultati 122

613 Confronti di cinemetica inversa

Proponiamo alcuni risultati ottenuti con i tre diversi metodi di cinematica

inversa introducendo disturbo nullo

Metodo geometrico

Metodo del gradiente

Inseguimento veloce

del gradiente Approssimazione=25 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 438

Errore in gradi 0 2 2 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3

N= 85

Errore in gradi 0 2 2 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1

Approssimazione=05 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 2030

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

N= 130

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

Tabella 6 Confronto risultati ottenuti conmetodi cinematica inversa

Sperimentazione e analisi dei risultati 123

Da cui si possono ricavare i seguenti andamenti dellrsquoerrore

Errore sul secondo giunto con approssimazione di 25 gradi

01234

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Errore sul terzo giunto con approssimazione di 25 gradi

0

1

2

3

4

0 2 4 6 8

numero angoli

erro

re (g

radi

) metodogeometrico

metodo diinseguimento delgradiente

metodo diinseguimentoveloce

Errore sul secondo giunto con approssimazione di 05 gradi

0

05

1

0 2 4 6 8

nume r o a ngol i

met odo gradient e

met odo diinseguiment o delgradient e

met odo diinsegiument oveloce

Errore sul terzo gionto con approssimazione di 05 gradi

0

05

1

15

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Figura 71 Grafici che rappresentano lrsquoandamento dellrsquoerrore trovato

Sperimentazione e analisi dei risultati 124

I valori degli angoli inseriti sono quelli effettivamente lanciati come

comando ai motori

Vediamo che nonostante il primo metodo sia il migliore in quanto fornisce

ottimi risultati con una sola iterazione ha a monte una oneroso carico di analisi

Il metodo di inseguimento veloce fornisce buoni risultati con una notevole

diminuzione del numero di iterazioni rispetto al metodo del gradiente semplice

essi si sono quindi dimostrati metodi di qualitagrave efficiente per il ritrovamento di

posizioni desiderate Si ricorda che questi metodi sono stati qui analizzati come

banco di prova per possibili applicazioni in robot presenti in laboratorio dotati di

catene cinematiche piugrave complesse (LARP di UScarfogliero[39])

62 Risultati dinamici

Dallrsquoanalisi dei grafici ottenuti tramite le formule di Newton-Eulero

presentati nel capitolo precedente possiamo affermare che i motori utilizzati sono

stati correttamente calibrati in merito di forze e torsioni a cui sono sottoposti

durante il passo

Variando il tempo di esecuzione dei movimenti otteniamoli seguente

grafico

Sperimentazione e analisi dei risultati 125

Figura 72 Grafico torsione con interpolazione limitata a 2 frame

Riducendo di molto il valore di interpolazione come si puograve vedere di

grafici i motori subiscono delle variazioni di carico molto forti in istanti

ravvicinati in quanto come giagrave piugrave volte affermato non esiste un controllo in

accelerazione e velocitagrave Vediamo inoltre come i valori di picco del giunto della

caviglia della zampa b trovati sono in stretta similitudine con i parametri misurati

nei rilevamenti del sensore di pressione posto sotto la zampa stessa I due grafici

simili nellrsquoandamento presentano come unica differenza la misura dellrsquoimpatto

con il suolo nel grafo della pressione viene rilevato mentre la torsione del motore

non evidenzia le forze di repulsione del suolo ma solo le forze i momenti e forza

di gravitagrave sullrsquoasse rotoidale del giunto

Sperimentazione e analisi dei risultati 126

Notiamo comunque che nonostante i picchi subiti i valori rimangono nei

limiti proposti dalla HITEC

Il cedimento strutturale riscontrato egrave stato quindi attribuito a imprecisioni

di laboratorio avvenute per inesperienza iniziale

621 Caratteristiche negative dei motori

6211 Velocitagrave

Una nota negativa nellrsquoutilizzo di questi servo attuatori va perograve apostrofata

in merito alla velocitagrave di rotazione che rimane di gran lunga inferiore a quella

dichiarata dalla casa costruttrice ( 023 sec60deg con carico 018 sec60deg a vuoto)

6212 Alimentazione

Un problema riscontrato durante le prove sul campo riguarda

lrsquoalimentazione I motori vengono alimentati direttamente dalla PIC che genera i

segnali la quale egrave a sua volta alimentata da un trasformatore in grado di fornire

circa 35A alla tensione di utilizzo di 6V Dopo aver riscontrato dei problemi

durante lrsquoutilizzo di piugrave motori in simultanea siamo andati a verificare i valori

effettivi di corrente assorbita a run-time Il valore dichiarato di 900mA (senza

carico) sulle specifiche HITEC [28] consentirebbe il movimento di pressocheacute tutti

i motori in simultanea ma con carico applicato si sono riscontrati valori di picco

di 18A Essendo improbabile che tutti i 12 motori vengano utilizzati in

contemporanea e sotto massimo sforzo non egrave necessario dover fornire

costantemente 216A ma risulta comunque chiaro che in alcuni casi la corrente

fornita non egrave sufficiente e ciograve causa malfunzionamenti alla PIC Oltre alla

necessitagrave di acquistare un trasformatore piugrave potente sarebbe opportuno separare

lrsquoalimentazione dei motori da quella della PIC o perlomeno apportare le

necessarie modifiche affincheacute la corrente fornita al processore non sia

strettamente dipendente da quella assorbita dai motori

Sperimentazione e analisi dei risultati 127

63 Caratteristiche del percorso

Solitamente la deambulazione per sistemi legged richiede al robot di essere

fornito di un considerevole numero di sensori per lrsquoanalisi dellrsquoambiente

La realizzazione di un nuovo algoritmo che facendo cooperare elementi di

cinematica e ricerca matematica permette la camminata fornisce un efficiente

mezzo di analisi

I dati a disposizione ci permettono di affermare che lrsquoalgoritmo di

creazione delle mappe e ricerca di percorsi minimi presenta ottime risposte a

differenti tipologie di ambienti proposti

Tra le principali doti di cui esso dispone ci permettiamo di sottolineare la

velocitagrave computazionele e la semplicitagrave di utilizzo

Inserendo infatti semplicemente le dimensioni dellrsquoarea drsquoazione e la

definizione delle coordinate dellrsquoostacolo esso rileva il percorso minimo che ci

conduce al target in tempistiche ridotte

La parte innovativa di tale algoritmo permette non solo di generare il

percorso ma di delegare al sistema la scelta del passo da intraprendere nel singolo

istante basandosi semplicemente su coordinate geometriche e su un data base di

posizioni possibili

La fase di decisione del passo da intraprendere puograve essere considerato un

buon risultato di ricerca nella creazione della prima attivitagrave celebrale di ASGARD

Sperimentazione e analisi dei risultati 128

Figura 73 Esempi di percorsi provati a simulatore

Capitolo 7 Conclusioni e sviluppi futuri

Conclusioni e sviluppi futuri 130

71 Risultati raggiunti

Il percorso di analisi svolto ci ha permesso di realizzare un prototipo di

robot quadrupede tra i piugrave leggeri presenti nella ricerca Costriuito con materiali

tecnologicamente avanzati che gli garantiscono particolari doti di elasticitagrave e

torsione richiede anche per il movimento semplici attuatori utilizzati

abitualmente nellrsquoambito del modellismo

Queste considerevoli doti pongono ASGARD in una rilevante posizione per

la realizzazione futura di consistenti progetti di Trot gait deambulazione in

ambienti ostili e superamento di ostacoli

Nonostante il nostro robot non sia fornito come GEO (vedi cap3) di una

spina dorsale adattabile la camminata da noi implementata gli fornisce stabili

posture che gli consentono un movimento rapido nellrsquoambiente

Tale innovativa camminata permette infatti al nostro robot tempistiche di

movimento per nulla invidiabili a Patrush o a Tekken (vedi cap3)

Concludendo questo lavoro possiamo affermare di aver realizzato un

potente mezzo di analisi della camminata statica e dinamica dimostrandosi

estremamente utile nelle prime fasi di analisi e nella realizzazione pratica

successiva

Essendo il nostro robot tuttora sprovvisto di sensori ci egrave parso utile

implementare un algoritmo di ricerca del percorso minimo in ambiente con

ostacoli in posizioni note

A tal fine abbiamo pensato di far cooperare diversi settori di ricerca

rielaborando algoritmi di ricerca operativae applicandoli a mappe di ambienti

Il notevole risultato ottenuto permette ad ASGARD di riconoscere

lrsquoambiente nonostante non ottenga feedback dallo stesso Questo algoritmo

rappresenta il primo sostanziale passo per la creazione di un sistema di

apprendimento per rinforzo intelligente per il nostro robot

Conclusioni e sviluppi futuri 131

La comunicazione con i servo motori ha permesso un primo reale

interfacciamento tra macchina e robot e lo studio del movimento ha permesso al

robot di compiere i suoi primi passi

72 Progetti futuri

Attualmente il robot egrave in grado di deambulare in ambiente piano e molte

sono le applicazioni e le migliorieche potrebbero essere aggiunte al controllo del

nostro automa

721 Modifiche meccaniche

Miglioramento del giunto passivo che si trova nella caviglia la fine di

realizzare un sistema mossa-smorzatore[40] che riesce ad attuire gli urti e le

oscillazioni presenti nellrsquoimpatto durante lrsquoappoggio della zampa al terreno

A tal scopo egrave stato realizzato il primo rudimentale progetto di

reingegnerizzazione del giunto ottenendo il seguente risultato

Figura 74 Caratteristiche del progetto di zampa realizzato si possono notare le

torsioni possibili su due assi

Conclusioni e sviluppi futuri 132

In esso si puograve notare come il giunto del piedino sia diventato

completamente mobile regolato solamente dalla costante elastica delle molle che

puograve essere a sua volta regolata dalle viti presenti sulla base del piedino

Il sistema molla-smorzatore egrave in grado di immagazzinare energia durante

lrsquoimpatto con il suolo e di riutilizzarla per il riposizionamento in aderenza

perfetta

Ulteriore miglioria consigliata egrave lrsquoincremento dei sensori al fine di

permettere al robot una conoscenza piugrave vasta e piugrave autonoma dellrsquoambiente

esterno Un ritorno di valori sensoriali inoltre migliorerebbe il programma da noi

realizzato permettendo la reale acquisizione di dati esterni e non forniti da utente

Il sensore fino ad oggi presente ci permette semplicemente di capire i

carichi presenti sulla zampa ma non ci fornisce ulteriori informazioni Ponendo un

sensore su ogni zampa e migliorando la struttura portante di ogni singola

cavigliaverrebbero forniti dati utili nel valutare il corretto posizionamento della

zampa e cioegrave la corretta esecuzione di ogni passo

Al fine di un futuro miglioramento della parte sensoriale egrave stata condotta

una ricerca riguardante i migliori sensori disponibili sul mercato che meglio si

adattano alle nostre problematiche tale ricerca viene presentata in Appendice A

722 Miglioramenti Hardware

Un ulteriore miglioramento egrave richiesto nella comunicazione tra computer e

scheda di comando degli attuatori

Questa scheda non permette tuttora la programmazione della PIC presente

su di essa andrebbe rivisto il circuito presente in modo da sfruttare anche i canali

di ritorno in lettura in modo da sfruttare questi ultimi per feedback sensoriali

Questo miglioramento permetterebbe lrsquoutilizzo della scheda come interfaccia di

inputoutput del robot

Conclusioni e sviluppi futuri 133

Di primaria necessitagrave egrave la differenziazione dellrsquoalimentazione dei motori

dallrsquoalimentazione della scheda per non compromettere il corretto funzionamento

della PIC

723 Miglioramenti Software

Raggiunto lrsquoobiettivo di una buona camminata quasi-statica si puograve pensare

di integrare un controllore on-board aggiungere sistemi di trasmissione wireless e

unrsquoalimentazione autonoma per rendere il robot indipendente dalla postazione

fissa

Come si puograve notare i campi di ricerca sono molto vasti da semplici

migliorie hardware al campo di Intelligenza Artificiale per dotare il robot di

potenzialitagrave che lo rendano il piugrave possibile un emulatore dei comportamenti

naturali di un mammifero

73 Conclusioni finali

A causa della complessitagrave dellrsquoanalisi e delle difficoltagrave implementative

riscontrate alcune parti richiedono ancora un grosso intervento per arrivare a

efficienti strumenti di precisione per lrsquoattuazione dei movimenti

Sono comunque da sottolineare i grandi passi compiuti In quanto in poco

piugrave di un anno il progetto egrave stato creato e messo in pratica riuscendo ad arrivare

ad un passo cruciale per il corretto funzionamento

Il continuo progresso e il continuo impegno potranno portarci in un futuro

non troppo lontano alla creazione di amici elettronici in grado di giocare con noi

e di muoversi come farebbe un normale amico a quattro zampe

Lrsquointroduzione inoltre di sistemi di camminata dinamica intelligente in

qualsiasi ambiente porterebbe evoluzioni significative anche in ambito di bio-

ingegneria ambientale rendendo in questo modo possibile lrsquoacquisizione di dati

Conclusioni e sviluppi futuri 134

provenienti da habitat inaccessibili allrsquouomo quali crateri di vulcani profonditagrave

marine o pianeti del sistema solare permettendo cosigrave una crescita culturale

dellrsquointera umanitagrave

Bibliografia

[1] NDiolaiti ldquoSistemi di navigazione per robot mobili in ambienti sconosciutirdquo

Thesis 2001

[2] J Borenstein e L Feng ldquoMeasurement and correction of systematic odometry

errors in mobile robotsrdquo In IEE Transactions on Robotics and Automation

vol7 NO 12 pag 869-880 1996

[3] KS Chong e L Kleeman ldquoAccurate odometry and error modelling for

mobile robotrdquo In Proceedings of IEEE International Conference on Robotic

and Automation pag 2783-2788 Albuquerque New Mexico 1997

[4] U Gerecke e N Sharkey ldquoQuick and Dirty Localization for a Lost Robotrdquo

University of Sheffield 1999

[5] B Yamauchi A Shultz e W Adams ldquoMobile robot exploration and map-

building with continuous localizationrdquo In Proceedings of IEEE International

Conference on Robotic and Automation pag 3715-370 Leuven Belgium

1998

[6] H TakedaC Facchinetti JC Latombe ldquoPlanning the motions of a mobile

robot in a sensory uncertainty fieldrdquo In IEEE Transactions on Pattern

Analysis and Machine Intelligence pag 1002-1017 oct 1994

[7] JP Laumond editor ldquoRobot Motion Planning and Controlrdquo Published 1999

[8] C Sanitati ldquoAnalisi e implementazione di andature per il robot quadrupede

Sony Aibordquo Thesis 2001

[9] MH Raibert ldquoLegged robots that balancerdquo MIT Press Cambridge

[10] httpmarsroversjplnasagovgalleryspacecraft

Bibliografia 136

[11] AAbourachid ldquoA new way of analysing symmetrical and asymmetrical

gait in quadrupedsrdquoCRBiologiesvol 326pag 625-630May 2003

[12] JAVilenskyJACook ldquoDo quadrupeds require a change in trunk posture

to walk backwardrdquoJournal of Biomechanicsvol33pag 911-916March 2000

[13] Oricom technology ldquoQuadruped Locomotion- Musing about running dogs

and othe 4-legged creaturesrdquo(httpwwworicomtechcomprojectslegshtm)

[14] RKurazumeKYoneda e SHiroseFeedforward and Feedback dynamic

trot gait control for quadruped walking vehicleAutonomous Robotsvol12

pag 157-1722002

[15] H Kimura I Shimoyama e H Miura ldquoDynamics in the dynamic walk of

a quadruped robotrdquo RSJ Advanced Robotics vol4 no3 pp283-301 1990U

(httpwwwkimuraisuecacjpfacultiesColliedynamic-walk-of-quadrupedhtml)

[16] M Raibert H Brown MA Chepponis EF Hastings S Murthy e FC

Wimberly ldquoDynamically Stable Legged Locomotion Second Report to

OARPArdquo Robotics Institute Carnegie Mellon University January 1983

(httpwwwaimiteduprojectsleglabrobotsquadrupedquadrupedhtml)

[17] MH Raibert M Chepponis and H Brown ldquoRunning on Four Legs As

Though They Were Onerdquo IEEE Journal of Robotics and Automation Vol

RA-2 No 2 June 1982 pp 70-82

[18] STalebiIPoulakakisEPapadopoulos e MBuehler ldquoQuadruped robot

running with a bounding gaitrdquoCenter for Intelligent MachinesMcGill

UniversityMontreal

[19] MA Lewis e LS Simo ldquoNeurocore Evolution Development and

Roboticsrdquo Sumitted to IROS 96 Osaka(httpuirvliaiuiucedutlewispicsgeoIIhtml)

[20] Y Fukuoka H Kimura e AH Cohen ldquoAdaptive Dynamic Walking of a

Quadruped Robot on Irregular Terrain based on Biological Conceptsrdquo Int

Journal of Robotics Research Vol22 No3-4 pp187-202 2003

[21] MA Lewis ldquoGait Adaptation in a Quadruped Robotrdquo Autonomous

Robot 2002 in PressIguana RoboticsInc

[22] httpwwwrobocuporg

Bibliografia 137

[23] httpwwwaibo-europecomdownloadsAIBO_Storypdf

[24] LSteel e FKaplan ldquoAibos first wordsThe social learning of language and

meaningrdquo Sony Computer Science laboratory Vub Artificial Intelligent

laboratory

[25] httpwwwopencaeczhwhw_sony-robot_aibohtml

[26] httpprojectspowerhousemuseumcomhscaiboteardownhtm

[27] M Piralli ldquoProgetto quadrupede Politecnico di Milanordquo 2004

[28] HITEC httpwwwhitecrcdcom file HS475HbpdfServomanualpdf

[29] Proprieta chimiche ldquopolicarbonatodocrdquo da

httpwwwedilportalecomedilcatalogo0EdilCatalogo_SchedaProdottoaspI

DProdotto=1897

[30] DCrespi e F Gandola ldquoScheda di interfacciamento per servomotorirdquo2004

[31] L Sciavicco e B Siciliano ldquoRobotica industriale ndash Modellistica e

controllo di Manipolatorirdquo EdMc-Graw-Hill seconda edizione 2000

[32] G Gini e V Caglioti ldquoRoboticardquo Ed Zanichelli 2003

[33] MFolgheraiter ldquoEsempi di cinematica direttainversardquoPolitecnico di

Milano Robotica 2004

[34] HElias ldquoInverse Kinematics - Improved Methodsrdquo2004

httpfreespacevirginnethugoeliasmodelsm_ik2htm

[35] JMinguez e LMontanoNearness Diagram (ND) navigationcollision

avoidance in troublesome scenariosIEEE Transaction on Robotics and

Automationvol 20NO 1 February 2004

[36] AArleoJRMillan e DFloreanoEfficient learning of variable-resolution

cognitive maps for autonomous indoor navigationIEEE Transaction on

Robotics and Automationvol 15NO 6 December 1999ruary 2004

[37] S Vigno ldquoAlgoritmo di Dijkstrardquo 2001

[38] EWDijkstra ldquoA note on two problem in connexion with graphsrdquo

Numeriche Mathematik 1269-271 1959

[39] U Scarfogliero ldquoProgettazione e sviluppo di un robot bipede a dodici

gradi di libertagrave con controllo elastico-reattivordquo Thesis 2004

Bibliografia 138

[40] PRoccoControlloimpedenzaPolitecnico di MilanoRobotica Industriale

2004

Appendice A

Appendice A 140

i Sensori nei robot a zampe disponibili sul mercato

Ersquo stata compiuta una accurata ricerca sui componenti che potrebbero

essere montati su ASGARD per migliorarne le abilitagrave e le reazioni con lrsquoambiente

esterno e su tecniche di utilizzo di semplici sensori per fornire feedback rilevanti

Tra i sensori presenti in commercio egrave stata effettuata una scrematura in

merito a efficienza peso ingombro e prezzo in quanto si ricorda la precaria

stabilitagrave del robot e il fattore sovvenzione scolastica

Forniremo dei principali sensori trovati anche una rapida descrizione del

funzionamento dello stesso per meglio comprendere le migliorie e le potenzialitagrave

che esso potragrave donare al nostro progetto

ii Dead Reckoning Stima della posizione

Dead reckoning deriva da ldquodeduced reckoningrdquo e consiste nellrsquoutilizzare

una procedura matematica per determinare la posizione istantanea di un robot a

partire dalla conoscenza dalle posizioni e velocitagrave precedenti lungo un certo

periodo di tempo Questo sistema ha ovviamente lo svantaggio di accumulare

errori della stima e per questo periodicamente la misura deve essere corretta con i

valori reali o con quelli forniti da qualche altro strumento Spesso la stima della

posizione viene chiamata odometria39[41]

Per fornire la posizione corrente possono essere utilizzate le seguenti

tipologie di sensori

39 Odometry

Appendice A 141

ii1 Encoder Ottici

Gli encoder ottici sono sensori che vengono utilizzati per effettuare misure

di rotazione Possono essere utilizzati sia per robot a ruote per misurarne la

velocitagrave di avanzamento sia per un robot con gambe per misurare lrsquoangolo di

rotazione degli arti artificiali

Si sono sviluppati due diversi tipi di encoder ottici encoder incrementali e

encoder assoluti

Gli encoder ottici incrementali servono principalmente per stabilire la

velocitagrave di rotazione mentre quelli assoluti forniscono istantaneamente lrsquoangolo

di rotazione

ii2 Encoder ottici incrementali

Gli encoder ottici incrementali sono formati da un disco routante solidale

con lrsquoasse di rotazione del sensore da un led e da due sensori ottici (tipicamente

due fotodiodi) Il disco egrave suddiviso in settori trasparenti e settori opachi Il numero

dei settori in genere egrave una potenza di 2 cioegrave 64128256 etc Il led emette una luce

sul lato del disco mentre i due fotodiodi la captano sul lato opposto Grazie alle

regioni opache si ha la possibilitagrave di vedere degli impulsi sul fotodiodo che

permettono di stabilire ad esempio la velocitagrave di rotazione ma non bastano ad

avere una indicazione sul verso della rotazione stessa Per sapere se la rotazione egrave

oraria o antioraria si egrave utilizzato un secondo fotodiodo collegato come in figura

Figura 75 Struttura encoder ottico

Appendice A 142

Come si puograve notare i due fotodiodi avranno unrsquouscita molto simile ma

sfasata causata dalle regioni opache del disco questo sfasamento ci permetteragrave di

capire il verso di rotazione

La velocitagrave di rotazione risulta essere proporzionale in modo inverso alla

larghezza degli impulsi in uscita

Questo tipo di encoder egrave molto economico tanto da essere utilizzato nelle

seconda metagrave degli anni novanta nei mouse da PC

Encoder ottico presente in commercio

ii21 EL30 E-H-I Eltra srl

Serie encoder miniaturizzati Oslash30 per applicazioni ove sia richiesto il

minimo ingombro possibile pur mantendo ottime prestazioni[42]

- Risoluzioni fino a 1000 impgiro con zero

- Varie configurazioni elettroniche disponibili con

alimentazioni fino a 24 Vdc

- Frequenza di esercizio fino a 100 Khz - Uscita

cavo eventuale connettore applicato alla fine del

cavo -

- Velocitagrave di rotazione fino a 3000 rpm - Grado di

protezione fino a IP54tensione di alimentazione 5 V

e peso di 50 g

Figura 76 Encode incrementale

EL 30 E-H-I

ii3 Encoder ottici Assoluti

Gli encoder ottici assoluti a differenza di quelli incrementali forniscono in

uscita direttamente una configurazione di bit che indicano la posizione angolare

Il dispositivo egrave composto di un disco suddiviso sempre in settori ma con

piugrave tracce una sorgente di luce e un numero di sensori di luce pari al numero di

tracce

Appendice A 143

Ad ogni traccia corrisponde un bit e ad ogni settore corrisponde un livello

Il numero di tracce e setori egrave scelto in modo da utilizzare tutte le combinazioni

possibili e quindi i livelli saranno traccenum2

Esistono perograve diversi modi per codificare ogni livello Il metodo piugrave

semplice egrave partire da 0 e incrementare di 1 il numero e utilizzare la normale

codifica binaria

Il sistema risulta essere rischioso quando due livelli consecutivi nella

codifica hanno piugrave di un bit diverso per questo motivo sono state introdotte

diverse codifiche come il codice Gray che riescono ad evitare cosigrave il problema

prima citato

Figura 77 Essempi di disco Figura 78 Struttura di rilevamento

Presenti sul mercato

ii31 Sensori ottici CORRSYS-DATRON

Tipologia a 2 assi (trasversalelongitudinale) per la misura accurata di

velocitagrave distanza percorsa angolo di imbardata[43]

S-CE con integrato giroscopio ottico Come versione S-CE ma con

incorporato un giroscopio a fibra ottica range 200degsec linearitagrave 02 1000 Hz

banda passante per avere maggiori info sul comportamento dinamico del veicolo

SL-R Ultralight Versione ultralight Racing del modello S-CE

SL 200 Sensore ottico biassiale per la misura senza scivolo di dinamiche

trasversali su larghe gamme di funzionamento Il sensore SL-200 egrave caratterizzato

da dimensioni ridottissime (ultra piatto) e per la possibilitagrave di installazione su

piccoli veicoli

Appendice A 144

La serie di encoder assoluti multigiro paralleli EAM[42] sono stati studiati

precisioni anche su esteso sviluppo lineare

sono disponibili con risoluzioni fino a 13 bit e quindi 8192 PosizioniGiro sul giro

e fino

ii32 EAM Parallelo-SSI Eltra srl

per applicazioni che richiedono alte

a risoluzioni di 12 bit 4096 Posizionigiro per i giri Le configurazioni di

uscita sono sia a codice gray che binario e le elettroniche di uscita coprono tutti i

campi di applicazione essendo disponibili in formato NPN NPN OPEN

COLLECTORPNP e PUSH PULL

Figura 79 Encoder assoluto EAM Parallelo ndashSSI

ii4 S

Sensori di grande utilitagrave per la localizzazione di oggetti presenti

un robot sono sensori che sfruttano lrsquoeffetto Doppler

Largamente utilizzati in ambito marino e aeronautico essi misurano la velocitagrave

del me

ensori Dopler

nellrsquoambiente di azione di

zzo in riferimento alla posizione del suolo Lrsquoeffetto doppler si basa sul

principio di funzionamento dello shift di frequenza unrsquoonda che viene ricevuta o

riflessa da una sorgente che si muove rispetto al mezzo In ambito terrestre le

onde spedite e ricevute sono microonde sonore

Appendice A 145

In relazione alla figura riusciamo ricavare le seguenti regole di

funzionamento

αα cos2cos O

DDA F

cFVV ==

Dove

AV = velocitagrave del terreno

DV = misura della velocitagrave tramite il sensore

α = angolo di declinazione

c = velocitagrave della luce

= scostamento in frequenza per effetto Doppler DF

OF = Frequenza emessa

La difficoltagrave di utilizzo di questo sensore diventa consistente nellrsquoutilizzo

su robot mobili in terreni accidentali in quanto gli spostamenti verticali

influiscono sulla misura di e sulla stima di DV AV

Appendice A 146

ii41 Robot Italy SRF04

Figura 80 Sensore SRF04

LSRF04 [44] e un sensore ad

ultrasuoni che unisce delle ottime

prestazioni ad un costo veramente

conveniente utilizza una tecnologia a

ultrasuoni molto semplificata

Questo sensore e dotato di un

microcontrollore che assolve tutte le

funzioni di calcolo ed elaborazione e

sufficiente inviare un impulso e leggere

leco di ritorno per stabilire con facilita

la distanza dellostacolo o delloggetto

che si trova davanti

iii Heading Sensor

Tramite lrsquoutilizzo di questi sensori si riesce in parte a compensare parte le

carenze di odometria Attraverso la stima della posizione ogni piccolo errore si

sommeragrave al precedente nella stima della posizione provocando uno scostamento

via via crescente tra la posizione reale e quella stimata Ersquo di grande aiuto

individuare immediatamente e correggere alcuni di questi errori

iii1 Giroscopio meccanico

Il giroscopio meccanico basato sulla ldquoinerziona di un rotorerdquo egrave conosciuto

giagrave dai primi del 1800 Il primo giroscopio fu costruito in germania 1810 da GC

Bohnenberger Nel 1852 il celebre francese L Foucault mostrograve che il giroscopio egrave

Appendice A 147

in grado di percepire la rotazione terrestre Essa puograve essere scomposta in due

componenti lungo un immaginario asse verticale e lungo un asse tangente alla

superficie Al polo la componente verticale saragrave di 15degora e spostandosi verso

lrsquoequatore diminuiragrave fino ad annullarsi Come per gli encoder ottici anche per i

giroscopi esistono due metodologie per fornire mediante una tensione o una

frequenza lo spostamento istantaneo o lrsquoangolo assoluto di rotazione

Figura 81 Giroscopio meccanico

Vediamo come funziona un giroscopio meccanico il rotore pilotato

elettricamente egrave sospeso ai propri assi da una coppia di cuscinetti con attrito

bassissimo I cuscinetti a loro volta sono montati su un anello ruotante chiamato

anello di sospensione interna (inner gimbal ring) Questo anello gira a sua volta

allrsquointerno di un altro anello (outer gimbal ring) La rotazione dellrsquoanello interno

definisce lrsquoasse x del giroscopio che egrave perpendicolare con lrsquoasse di rotazione del

rotore lrsquoanello esterno definisce lrsquoasse verticale del giroscopio In questa struttura

egrave da notare come lrsquoasse orizzontale saragrave allineato con il meridiano in questo modo

si potragrave calcolare la rotazione orizzontale e verticale in funzione a quella terrestre

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice

FT445533

Nuovo regolatore di giri con la piugrave moderna tecnica microprocessore con

Display LC ad 8 posti Il regolatore di giri GV ndash1 [45] mantiene la testa del rotore

Appendice A 148

in sistema di giri costante Cosigrave diventa possibile un movimento piugrave preciso e

sensibile

Al contrario di altri regolatori il GV-1 controlla anche il numero di giri del

motore Una curva a 3 punti regolabile permette la prescrizione del numero dei

giri tramite un commutatore a tre scatti oppure un canale proporzionale Nel

display viene indicato a scelta il numero di giri del motore o del rotore dove viene

memorizzato il numero di giri massimale e richiamabile in qualsiasi momento

Questo modello risulta compatibile con i servo da noi utilizzati

Programmi

bull Indicazione del numero di giri (rotore oppure

motore)

bull Memoria del numero di giri massimale

bull Messa a punto del rapporto di riduzione

bull Regolazione del punto di attivazione e

disattivazione

bull Impostazione del campo di regolazione del

numero di giri

bull Impostazione del numero di giri massimale

bull Automatica disattivazione a partire

dallacuteimpostazione del numero di giri

bull Messa a punto di una curva di regolazione a tre

punti

bull Messa a punto 3D

bull Curva di messa a punto miscela a 9 punti

bull Test magnetico con indicazione del campo

intensitagrave

bull Misurazione della tensione di batterie

bull Allarme di bassa tensione

bull Messa a punto del servo di gas ATV

Caratteristiche Tecniche

Dimensioni Regolatore 56x305x16 mm

Dimensioni Sensore oslash 10 x 16 (27) mm

Peso Regolatore 34 g

Peso Sensore 4 g

Alimentazione 38 ndash 6 V

Campo di regolazione da 1000 a 21000

girimin

Figura 82 Futaba regolatore di giri

GIVERNOR GV-1

Appendice A 149

iii12 Futaba Giroscopio FP GY 240 AVCS

Grazie allrsquoutilizzo congiunto del nuovo sensore SMM40 e della nuova

tecnica di interruttore altamente integrata SMD41 la Futaba egrave riuscita a costruire

un giroscopio di soli 25g con dimensioni decisamente contenute 27 x 27 x 20

mm

Nonostante questa minima dimensione il giroscopio egrave equipaggiato sia

con il modulo normale che quello AVCS (Heading Hold)[46]

Oltre ai vantaggi rappresentati dalle dimensioni e dal peso questo sensore

non presenta alcuna deriva dovuta alla temperatura ed egrave ampiamente insensibile

alle vibrazioni ed ai colpi

Grazie ad una elaborazione puramente digitale del segnale questo

giroscopio reagisce molto rapidamente

Caratteristiche tecniche Dimensioni

27x27x20 mm PesoWeight

25 g Alimentazione

3-6 V Temperatura d`esercizio

-10degC +50degC Figura 83 Giroscopio FP GY 240 AVCS

iii2 Giro-bussola

Questo dispositivo integra le funzionalitagrave del giroscopio e della bussola per

individuare il Nord Lrsquoindividuazione del nord egrave importante percheacute lrsquoasse di

rotazione del rotore egrave orientato lungo un meridiano lrsquoasse orizzontale del

giroscopio non risente della rotazione terrestre La direzione e lrsquointensitagrave della

40Silicon Micro Machine misure laser posizioni 41 Standar ISO9000

Appendice A 150

misura dipende dallo scostamento tra lrsquoasse del rotore e la direzione dellrsquoasse

terrestre

iii3 Giroscopio-Girobussola a fibre ottiche

Il principio su cui si basa il funzionamento dei giroscopi ottici fu scoperto

dal fisico francese Sagnac nel 1913 ed ha trovato inizialmente una sua

applicazione nella costruzione di interferometri e successivamente nei giroscopi

laser ad anello chiuso (RLG Ring Laser Gyro) Tale principio consiste nello

sdoppiare un unico raggio luminoso in due diversi raggi che viaggiano su un

medesimo percorso ottico ad anello chiuso ma in direzioni opposte un raggio

ruota in senso orario e lrsquoaltro in senso antiorario

Figura 84 Schema di principio di un giroscopio laser ad anello

Nei giroscopi RLG[47] i raggi rimbalzano fra vari specchi come mostrato

in Figura 83 nei giroscopi FOG (a fibre ottiche) i raggi scorrono dentro un fascio

di fibre ottiche lungo anche 5 Km ed avvolte in spire del diametro di alcuni

centimetri

Appendice A 151

Quando un raggio si propaga la sua fase cambia continuamente con la

distanza L percorsa e precisamente di 2π radianti per ogni tratto pari alla

lunghezza drsquoonda λ si ha pertanto

λπα L2

=

con λ = c f dove f egrave la frequenza del raggio luminoso e c egrave la velocitagrave

della luce

Nel caso in cui il giroscopio sia fisso rispetto ad un sistema inerziale i due

raggi percorrono lo stesso cammino anche se in direzioni opposte arrivando nel

ricevitore con la stessa fase Diversa egrave la situazione in cui lrsquointero sistema ruota

attorno ad un asse passante per O (asse sensibile del giroscopio) e con velocitagrave

angolare Ω in tal caso il percorso del raggio concorde con il verso di rotazione

tende ad allungarsi mentre quello dellrsquoaltro raggio tende ad accorciarsi per cui la

differenza di fase Φ dei segnali che arrivano nel ricevitore non egrave piugrave nulla ma

assume la seguente espressione

Ω=∆=Φλ

παcLD2

Dove

L = lunghezza del percorso ottico o delle fibre ottiche nei FOG

D = diametro del percorso o della bobina nei FOG

Ω = velocitagrave angolare del giroscopio attorno al suo asse sensibile

Il fattore davanti alla velocitagrave angolare Ω egrave chiamato fattore di scala ed egrave

un indicatore della sensibilitagrave dello strumento piugrave egrave alto tale fattore piugrave lo

strumento egrave in grado di misurare velocitagrave angolari molto basse come ad esempio

nel caso di quella terrestre Come si vede il fattore dipende dai dati geometrici del

percorso ottico e precisamente nel caso dei FOG dalla lunghezza delle fibre

Appendice A 152

ottiche e dal diametro delle spire Analizzando la precedente espressione si

comprende come a paritagrave di volume i giroscopi a fibre ottiche (FOG) siano molto

piugrave sensibili dei giroscopi laser (RLG)

Figura 85 Schema tipico di un giroscopio a fibre ottiche

iii31 La funzione giroscopica

Il FOG non egrave in grado da solo di indicare la direzione del nord come nei

normali giroscopi di tipo meccanico con sospensione cardanica esso egrave soltanto in

grado di misurare la componente della velocitagrave angolare terrestre lungo il suo asse

di sensibilitagrave

Per ottenere la funzione orientamento desiderata si montano tre giroscopi

disposti lungo una terna di assi cartesiani X Y e Z che puograve coincidere con i tre

assi del robot per definire il piano orizzontale si impiegano inoltre due sensori di

livello La tecnologia utilizzata egrave nota come strapdown ossia con i giroscopi

montati rigidamente su un piano fisso costantemente orientato e parallelo rispetto

ad un piano di riferimento come nella navigazione inerziale di tipo tradizionale

Nel caso di oggetto fermo lrsquounica velocitagrave angolare a cui esso risulta essere

soggetto egrave quella terrestre per cui i tre giroscopi misurerebbero le seguenti

componenti

Appendice A 153

yTx CosPCosϕρρ =

yTy SinPCosϕρρ minus=

ϕρρ Sinz T=

dove egrave facile calcolare lrsquoangolo di prova nel caso siano note la velocitagrave

ρ

yP

Τ e la latitudine ϕ

Nel caso di moto con velocitagrave VN si ha una velocitagrave angolare

supplementare pari a VNRT diretta lungo -y (RT egrave il raggio della Terra) A questa

velocitagrave si sommano inoltre altre velocitagrave angolari continuamente variabili

dovute ai moti attorno ai suoi tre assi e precisamente i moti di rollio di

beccheggio e di imbardata

yyTx CosPCos ρϕρρ +=

oT

NyTy R

VSinPCos ρϕρρ ++minus=

aT Sinz ρϕρρ +=

In realtagrave il problema viene risolto definendo inizialmente alla partenza un

sistema cartesiano di riferimento con gli assi X0 e Y0 situati nel piano orizzontale

e lrsquoasse Z0 che coincide con la verticale In tale situazione i segnali provenienti

dai sensori di livello devono essere nulli

Durante la camminata la continua misura delle tre velocitagrave angolari e

dellrsquoassetto del robot mediante i sensori di livello consentono di definire lrsquoesatto

orientamento della terna cartesiana T (X Y e Z) rispetto alla terna di riferimento

iniziale T0 (X0 Y0 e Z0) Un opportuno calcolatore provvede a convertire gli

Appendice A 154

angoli di sfasamento dovuti allrsquoeffetto Sagnac nelle corrispondenti velocitagrave

angolari integrando le velocitagrave si ottengono gli angoli

dta iii int+=+ ρα1

da cui egrave poi possibile ricavare gli angoli di rollio di beccheggio e di

imbardata Ogni ciclo di calcolo deve avere una durata molto breve inferiore

normalmente al tempo impiegato dai segnali luminosi a percorrere la bobina di

fibre ottiche (∆t = Lc = 3 nsec per L = 1 m)

iii4 Giroscopio piezoelettrico

Utilizzano la forza di Coriolis per misurare la velocitagrave di rotazione

montando tre trasduttori piezoelettrici su un prima triangolare Se uno dei sensori

egrave eccitato alla sua frequenza di risonanza la vibrazione prodotta verragrave percepita in

eguale misura dagli altri due sensori Quando il prisma viene ruotato lungo il suo

asse longitudinale la forza di Coriolis risultante causeragrave una piccola differenza

nellrsquointensitagrave di vibrazione percepita dai due trasduttori la variazione di tensione

risultante egrave direttamente e linearmente proporzionale alla velocitagrave di rotazione

Appendice A 155

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03

Giroscopio miniaturizzato[44] 26x27x11mm per 7grammi di peso Puo

essere utilizzato per bilanciare o per compensare spostamenti indesiderati di

walkers e rover Utile anche per rilevare spostamenti

Figura 86 Modello GWS PG-03 Robot Italy

iii42 Giroscopio Piezoelettrico Enc-03ja

Ersquo componente elettronico di solo 21mm x 8mm[48] Ersquo in grado di

rilevare i cambiamenti nella rotazione pur essendo ultra-piccolo ultra-leggero

con una ultra rapida-risposta e a basso costo Usa il fenomeno della forza di

Coriolis per rilevare i cambiamenti nella velocitagrave angolare di rotazione

Limitazione le girobussole hanno una lettura massima di 300 gradi al secondo e

richiederanno la calibratura

Figura 87 Giroscopio Enc-03ja

Appendice A 156

iv Sensori geomagnetici

Nella stima della posizione inevitabilmente esistono degli errori e questi

vengono misurati durante il tempo e quindi egrave molto importante poter disporre di

una misura assoluta e poter compensare o correggere appunto questi errori

Il piugrave comune sensore di questo tipo egrave la bussola magnetica La

terminologia usualmente utilizzata per misurare un campo magnetico egrave la densitagrave

di flusso magnetico B misurata in Gauss(G) Altre unitagrave di misura sono la Tesla

(T) e gamma (γ ) dove 1 Tesla = Gauss = Gamma Lrsquointensitagrave media del

campo magnetico terrestre egrave 05 G e puograve essere rappresentato come un bipolo che

fluttua sia nel tempo che nello spazio situato a 440 chilometri dal centro e

inclinato di 11deg dallrsquoasse di rotazione terrestre Questa differenza tra il polo

magnetico e il polo terrestre egrave conosciuta come declinazione e varia in funzione

del tempo e della posizione geografica

410 910

I dispositivi che misurano i campi magnetici sono detti magnetometri Per

applicazioni su robot mobili i magnetometri piugrave utilizzati si dividono nelle

seguenti famiglie

bull Bussola magnetica meccanica

bull Bussola a effetto Hall

bull Bussola a magnetoreversiva

Prima di analizzare da vicino ogni singola famiglia va precisato un

problema molto importante il campo magnetico terrestre egrave spesso distorto nelle

vicinanze di strutture metalliche questo rende difficile lrsquoimpiego di tali sensori

allrsquointerno di edifici Tuttavia questo problema egrave possibile aggirarlo utilizzando

con essi ulteriori sensori

Appendice A 157

iv1 Bussola magnetica meccanica

La prima traccia nellrsquouso della bussola risale al 2634 AC Dal XIII secolo

utilizzata in tutto il mondo in campo marittimo W Gilber [1600] fu il primo ad

esporre teorie riguardanti campi magnetici presenti sulla superficie terrestre

Le prime bussole marine consistevano in aghi magnetizzati che

fluttuavano su pezzetti di sughero immersi in acqua Questo dispositivo egrave stato

raffinato fino ad arrivare oggi giorno ad essere composto da un paio di magneti

attaccati ad un disco graduato fluttuante in una composizione di acqua alcol e

glicerina

Lrsquoerrore tra nord magnetico e nord geografico egrave conosciuto come

deviazione della bussola

decdevit CFCFHH plusmnplusmn=

Dove

tH = Direzione giusta

iH = Direzione misurata

devCF = Fattore di correzione per la deviazione della bussola

decCF = Fattore di correzione per la declinazione magnetica

Unrsquoaltra fonte potenziale di errore consiste nel dip magnetico42 dovuto alla

componente verticale del campo magnetico terrestre Questo effetto varia in base

alla latitudine possiamo affermare che le linee di forza che agiscono sono

orizzontali allrsquoequatore e verticali ai poli Per questo motivo sugli aghi delle

bussole a volte sono montati dei pesetti che pessono essere spostati al fine di

contrastare questo effetto

42 Magnetic dip

Appendice A 158

iv2 Bussola a effetto Hall

I sensori ad effetto Hall sono basati sulle osservazioni di Hall(1979) che un

conduttore e un semiconduttore immersi in un campo magnetico mostrano una

differenza di potenziale ai loro capi Il vantaggio di questi sensori egrave la possibilitagrave

di misurare il flusso in modo statico I primi sensori costruiti avevano una

sensibilitagrave e una stabilitagrave paragonabile a quella dei fluxgate43 ma negli ultimi anni

egrave migliorata fino a raggiungere i Gauss e oltre Giagrave nei primi anni 60rsquo la

Marina mostrograve interesse a questo tipo di sensori e la Motorola costruigrave un certo

numero di prototipi per valutarne le potenzialitagrave La bussola della Motorola

montava due sensori ad effetto Hall per limitare gli effetti dovuti alle variazioni di

temperatura Ogni sensore era formato da una barretta di ferro- indio- arsenico di

2 x 2 x 01 millimetri inserito in un concentratore di flusso come si vede in Figura

87

310 minus

Il concentratore di circa 5 cm incrementava la densitagrave di flusso attraverso il

sensore di due ordini di grandezza [Willey 1964] lrsquouscita di tale dispositivo egrave un

treno di impulsi ad ampiezza variabile in cui lrsquoampiezza appunto egrave proporzionale

al valore misurato Fu riscontrata una buona linearitagrave fino a densitagrave di flusso di

0001 Gauss[Willey 1962]

Figura 88 Una coppia di sensori Hall (Lega di Indio-Ferro-Arsenico)

Maenaka allrsquouniversitagrave di tecnologia di Toyohashi in giappone sviluppograve

un sensore al silicio basato su due sensori Hall montati in disposizione ortogonale

43 Bussola fluxgate sfutta campi magnetici generati da spire azionati da corrente continua

Appendice A 159

Purtoppo i risultati di questo esperimento non furono dei migliori in

quanto il sensore costruito forniva un sensibilitagrave di 1 Gauss e il campo terrestre va

da 01 Gauss allrsquoequatore fino a 09 ai poli Di notevole interesse rimane per

lrsquoessere interamente costruito in un integrato e quindi lo rende molto pratico e di

elevato interesse commerciale

iv21 1490 Digital Compass Sensor

Questo sensore[49] fornisce informazioni su scostamenti in otto direzioni

misurando il campo magnetico della terra usando la tecnologia ad effetto Hall Il

sensore 1490 internamente egrave destinato per rispondere a cambiamento direzionale

simile ad una bussola riempita liquida Rinvieragrave al senso indicato da uno

spostamento di 90 gradi in circa 25 secondi senza overswing I 1490 possono

funzionare inclinato fino a 12 gradi con lerrore accettabile Egrave connesso facilmente

a circuiti digitali ed i microprocessori

Caratteristiche Specifiche Alimentazione 5-18 volt di CC 30 mA Uscite Apra il collettore NPN affondi 25 mA per il senso Peso 225 grammi Formato un diametro da 127 millimetri alto 16 millimetri Perni 3 perni da 4 lati sui centri del 050 Temperatura -20 - +85 gradi di C

Figura 89 1490 DCS

iv3 Bussola a magnetoreversiva

Questa tipologia di sensori egrave molto interessante per il range di sensibilitagrave

che coprono ad anello aperto che va da a 50 Gauss e coprono quindi

interamente la regione interessata del flusso terrestre Ad anello chiuso hanno un

210 minus

Appendice A 160

sendibilitagrave approssimativamente di Gauss [Lenz 1990] Presentano

ulteriormente un basso assorbimento di potenza piccole dimensioni che li

posizionano tra i primi posti nella scelta di componenti

610 minus

iv31 Philips bussola AMR

Uno dei primi sensori magneto resistivi impiegati per realizzare una

bussola magnetica egrave il KMZ10B costruito dalla Philips[50] Semiconductors nel

1996 La sensibilitagrave di questo dispositivo (approssimativamente 01 mVAmcon

alimentazione di 5 V DC) comparata con il campo magnetico terrestre massimo

implica che devono essere presi con molta considerazione gli errori dovuti alla

variazione della temperatura e alle variazioni di offset[Patersen1989]Un sistema

per ovviare a questi inconvenienti egrave utilizzare lrsquoeffetto flipping44

iv4 Bussola magnetoelastica

Utilizzare materiali magneto-elastici come materiali fondamentali di

sensori in campo magnetico ad alta precisioneIl principio su cui si basano questa

famiglia di componenti egrave la variazione del modulo di Young[51] in leghe

magnetiche quando introdotte in campo magnetico esternoIl modulo di elasticitagrave

di un materiale egrave semplicemente misurato come

εσ

=E

Dove

E = Modulo di elasticitagrave

σ = Tensione applicata

44 Flipping phenomenon non trattato in questa discussione

Appendice A 161

ε = Deformazione risultante

Se la tensione applicata rimane costante la deformazione egrave inversamente

proporzionale al modulo di elasticitagrave In alcune leghe E egrave molto pronunciato

questo permette al campo magnetico di essere accuratamente determinato

misurando la variazione di lunghezza di una lega opportunatamente sollecitata da

una forza costante Esistono due tecnologie che permettono di realizzare sensori

economici e molto precisi

bull Interferometric

bull Tunneling-trip

iv41 Metglas 2605S2

Metglas[52] egrave una lega di ferro boro silicio e carbonio Il sensore egrave

costituito da un nastro della lega che in presenza di campo magnetico esterno

mostra un certo allungamento (analisi sul nastro di vetro metallico sono avvenute

al laboratorio di SERC Rutherford Appleton) I dati di riflettivitagrave sono stati

analizzati le misure forniscono modelli che hanno permesso una valutazione del

profilo di magnetizzazione vicino alla superficie del nastro In Figura 89 egrave

mostrato il circuito utilizzato per misurare la variazione di lunghezza

dellrsquoelemento magnetoresistivo

Figura 90Circuito per misurare lrsquoallungamento delle striscia magnetoresistiva

Appendice A 162

v Sensori per la modellizzazione dellrsquoambiente

Molti sensori per mappare ambienti interni sono sensori di distanza per

questo motivo verranno esposti in questo testo alcuni tra i piugrave conosciuti

vi Sensori di distanza

Esistono differenti approci per ottenere questo tipo di misura

bull Sensori basati sul tempo di volo (TOF45) di un impulso di energia

emesso che si propaga e che viene riflesso dallrsquoostacolo

bull Sensori basati sulla differenza di fase introdotta sempre nella

riflessione di un segnale ma non impulsivo

bull Sensori basati su radar a modulazione di frequenza

vi1 Sensori basati sul tempo di volo

Il funzionamento consiste nel misurare il tempo di volo di un senale da un

trasmettitore al ricevitore il percorso effettuato mentre il tempo di percorrenza

risulta esserecdT 2

=∆ dove c egrave la velocitagrave della luce

In robotica la velocitagrave della luce non riesce a trovare applicazioni pratiche

e trovano utile impiego le onde acustiche la cui velocitagrave di propagazione egrave

v=340ms I vantaggi che si trovano dallrsquoutilizzo di questo metodo sono che

emettitore e ricevitore possono essere lo stesso oggetto e che le superfici non

devono presentare particolari requisiti Gli svantaggi possono essere fronti di

salita imprecisi durante lrsquoemissione lrsquoattenuazione della radiazione riflessa che

45 Time of Fly

Appendice A 163

puograve essere influenzata da rumore lrsquoinaccuratezza nel circuito che serve a misurare

il tempo e la possibile variazione della velocitagrave di propagazione soprattutto con

onde sonore Il cono di emissione inoltre non ci permette di rilevare la forma

dellrsquooggetto Quando lrsquoonda si riflette su un oggetto si ha un fenomeno chiamato

crosstalk Utilizzando diverse misurazioni con treni di impulsi si riescono ad

avere stime abbastanza precise sullrsquooggetto riuscendo ad arrivare ad avere

precisione anche di 25 mm da una distanza di 30 cm

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502

Campo di misura tra 30 cm e 5 metri[53]

Caratteristiche

- Campo di misura tra 30 cm e 5 m (MS 6502)

-Campo di misura tra 15 cm e 10 m ( MS 6001)

-Alimentazione singola tra 75V e 15V - Gestione degli Echo multipli

- Possibilitagrave di fissaggio del sensore direttamente al circuito stampato

- Sistema di connessione MODU II - Uscita open collector

-Protezione dallrsquoinversione di polaritagrave

Figura 91 Piedinatura modello MS

6501

Figura 92 Sonar Modello MS 6501

Figura 93 Sonar Modello MS 6502

Appendice A 164

Il modulo sonar egrave un dispositivo di basso costo con il quale egrave possibile

gestire direttamente i sensori elettrostatici Polaroid per effettuare misure di

distanza Gli impulsi ad ultrasuoni sono a 499 KHz per entrambi i modelli e

vengono prodotti da un quarzo funzionante alla frequenza di 420 KHzI moduli

soso dotati di un ingresso di inibizione esterna con il quale egrave possibile

unrsquoesclusione selettiva di alcuni echo in modalitagrave di funzionamento echo multiplo

Con il dispositivo proposto egrave possibile distinguere echo di ritorno tra due oggetti

distanti 75 cm circa

Figura 94 Struttura del Mdulo Sonar

Vi sono due modalitagrave di funzionamento del sonar echo singolo e echo

multiplo

Nella funzionalitagrave ad echo singolo la gestione consite nel portare basso il

valore di INIT spedire le onde ultrasoniche e attendere la ricezione del segnale di

echo il tempo tra quando si egrave reso basso il senale di INIT e quello in cui diventa

basso ECHO indica il tempo di volo impiegato per raggiungere il target Ersquo

conveniente attendere circa 80 ms tra una spedizione e lrsquoaltra per evitare onde

ultrasoniche ancora presenti nellrsquoambiente

Nella funzionalitagrave multiplo dopo che si pone basso INIT il trasduttore

viene pilotato da 16 impulsi a frequenza 499 KHz (MS 6501) o 45 KHz (MS

Appendice A 165

6502) e di ampiezza variabile per modello (MS6501 400VMS6502 100V) ciograve

comporta lrsquoinvio di un pacchetto di onde ultrasoniche che si propagano nello

spazio Al fine di evitare lrsquoassestamento del trasduttore (fenomeno ringring) esso

viene oscurato in ricezione per 238 ms Queste tempistiche rendono possibile

lrsquoindividuazione di oggetti a distanza di 40 cm che corrispondono a tempo di volo

di 238 ms

Figura 95 Modalitagrave di funzionamento a

eho singolo

Figura 96 Modalitagrave di funzionamento a

echo multiplo

vi2 Sensore telemetro a sfasamento

Il sensore si basa sul seguente principio si separa lrsquoonda emessa in due

parti una incide lrsquooggetto e torna indietro la seconda viene riflessa su uno

specchio di cui si conosce la posizione Si calcola la differenza temporale tra le

due onde Essendo noto il cammino ottico della luce riflessa dallo specchio si egrave in

grado di determinare il cammino ottico incognito In robotica si misurano distanza

dellrsquoordine di qualche metro quindi lrsquoonda laser emessa λ egrave dellrsquoordine del metro

vi21 LIDAR lsquoLight detection and Rangingrsquo

Utilizzi molto rilevanti in questo tipo di acquisizione dati ci vengono

forniti da progetti NASA per la struttura della morfologia terrestre in particolare

in progetti DSM e DTM (Digital Surface Model e Digital Terrain Model)[54] Si

Appendice A 166

dispone di un raggio lasee di cui si analizza lrsquoecho e la distorsione conoscendo la

velocitagrave di propagazione Le misura proposte vengono elaborate per creare

coordinate 3D Dopo aver puntato su zone giagrave conosciute mediante comunicazioni

con GPRS il sistema scansiona la zona ignota per estrapolare per comparazione i

nuovi valori effettuando una misura di sfasamento tra lrsquoonda modulata emessa e

quella rientrante Analizzando opportunamente lrsquointensitagrave della luce riflessa si

potranno anche dedurre informazioni sulla tipologia del materiale analizzato

Figura 97 Esempio di acquisizione LIDAR

vi3 Triangolazione

Uno dei metodi piugrave semplici utilizzati Il soggetto egrave illuminato da uno

stretto fascio di luce che scandisce la superficie Il movimento di scansione

avviene sul piano definito dalla linea che va dallrsquooggetto al rilevatore e dal

rilevatore alla sorgente Il rilevatore egrave focalizzato su una limitata porzione di

superficie quando il rilevatore vede un piccola macchia di luce la sua distanza d

dalla superficie illuminata viene calcolata con un semplice calcolo geometrico

Appendice A 167

i

sdαtan

=

Dove

iα = angolo tra la sorgente e la linea della base

angolo di massima intensitagrave

s = distanza tra la sorgente e il rilevatore

Questo fornisce la misura di un punto se il sistema sorgente rilevatore

viene mossa su un piano egrave possibile ottenere un insieme di punti facilmente

trasformabili in coordinate tridimensionali che caratterizzano la struttura

dellrsquooggetto esaminato

Appendice A 168

vi31 IFELL Laser e Sistemi Srl

Modello[55] Caratteristiche principali

Figura 987 Serie LK

bull Campi di misura fino a 500 mm bull Tecnologia di fotorivelazione con

CCD Micropunto di lettura (fino a 30 micron)

bull Protezione IP-67 (solo teste) bull Insensibilitagrave alle variazioni di colore bull Elevata precisione anche su materiali

otticamente difficili bull Uscita analogica

Figura 99 Serie ODS

bull Campi di misura fino a 2000 mm bull Tecnologia di fotorivelazione con CCDbull Amplificatore integrato bull Protezione IP-65 bull Uscita analogica e digitale RS-232 bull Ingressouscita di sincronizzazione bull Esecuzione speciale per materiali

trasparenti

Figura 100 Serie M5

bull Campi di misura fino a 400 mm bull Tecnologia di fotorivelazione con PSD bull Protezione IP-64 (solo teste) bull Uscita analogica e digitale (opzione) bull Ingressouscita di sincronizzazione bull Comparatore integrato

Informazioni sui produttori

[41] G Arlanch ldquoSviluppo di un simulatore per il controllo dellrsquoandatura di un

quadrupederdquoThesis 1997

[42] httpwwweltrait

[43] httpwwwcorrsysdatronithomehtml

[44] httpwwwrobot-italycomproduct_infophpproducts_id

[45] httpwwwfutaba-rccomradioaccysfutm1001html

[46] httpwwweuroshop2000itcat159html

[47] MBertolini ldquoGirobussole a fibre otticherdquo ITN Viareggio

[48] httpwwwgyroscopecom

[49] httpwwwdinsmoresensorscom1490spechtm

[50] Philips ldquoKMZ10B Magnetic field sensorrdquo Data sheet 1998

[51] JP Sinnecker ldquoMateriaia magneticos doces e materiaia ferromagneticos

amorfosrdquo Reviat brasileira de Fisicavol 222000

[52] K Ivison N Cowlam MRJ Gibbs J Penfold e C Shackleton ldquoUna

misura diretta della magnetizzazione di superficie di un vetro metallico

ferromagneticordquo Edizione 23 (Il 12 Giugno 1989)

[53] Blautron ldquoModulo sonar 6501pdfrdquo ldquoModulo sonar 6502pdfrdquoItaly 2002

[54] V Adorno ldquoIl DTM e il DSM ad alta risoluzionela tecnologia laser

scanner e lrsquoutilizzo del Lidarrdquo Naturaltech

[55] wwwifelliti_sens_triangi_sens_trianghtm

Appendice B

Appendice B 171

i Manuale drsquouso

Per permettere una rapida visualizzazione dei risultati da noi trovati viene

fornito allrsquoutente un menugrave principale di scelta in cui puograve richiamare le funzioni

generate

Lrsquoutente richiameragrave direttamente dal promt di Matlab la funzione

start_asgrad(x) passando come parametro x un intero da o a 5Ad ognuno di

questi numeri corrisponderagrave una funzione

1 = visualizzazione della differenza tra passo in andatura quasi-stabile e

quasi-dinamica grafica del passo e proiezione del convex hull

2 = calcolo della cinematica e visualizzazione degli errori(in

start_asgradm posso modificare direttamente i valori delle variabili decisionali in

merito alla cinematica inversa)

3 = visualizzazione dei grafici riguardanti la forza e la torsionesui giunti

scegliendo nella funzione stessa il numero di frame da considerare

4 = generazione del movimento in un ambiente noto (per settare i

parametri riferiti allrsquoambiente bisogna modificare il file initm prima dellrsquoavvio

del programma)

5 = permette il movimento reale del robot quadrupede del politecnico di

Milano Questa funzione puograve essere richiamata dopo una serie di accorgimenti per

istaurare un corretto canale di comunicazione (collegare la porta seriale o il

convertitore USB-Seriale e accertarsi che la porta sia denominata COM 1 con

velocitagrave di trasferimento di 14400 bitsec)

Appendice B 172

ii Codice generato

ii1 Menu principale

FUNZIONE START_ASGARD funzione che avvia lesecuzione di tutto il programma permettendo allutente di selezionare la parte di analisi da visualizzare parametri in input val_scelta=valore di scelta 1= confronto passo quasi-staticoquasi-dinamico 2= studio cinematico 3= analisi dinamica 4= scelta del percorso(si ricorda che prima di sceglire questa opzione si devono settare i parametri nella funzione init per la descrizione dellambiente 5= collegamento diretto al robot fisico Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [] = start_asgard(val_scelta) if(val_scelta==1) richiamo della funzione passo_STATICO clearpulizia dello workspace end if(val_scelta==2) angoli_motori2richiamo generatrice angoli da inviare ai motori settaggio parametri funzione met=2 incr=25 g=1 cinematica(ja(28)metincrg) clear end if(val_scelta==3) fr=10setto numero di frame richiamo della funzione NW_EU clear end if(val_scelta==4) richiamo della funzione ambiente_prova

Appendice B 173

clear end if(val_scelta==5) angoli_motori2richiamo generatrice angoli da inviare ai motori n=1inizializzazione numero passi richiamo della funzione camminata_stat clear end

ii2 Confronto andatura quasi-stabile vs quasi-dinamica

FUNZIONE PASSO_STATICO Funzione che permette la comparazione tra il passo statico e il passo quasi-dinamicomostrando per ogni animazione la proiezione del centro di massa e il poligono di appoggio definizione tempistiche per movimento zampa frame=6 definizione punto vista X= 0(090)dallalto Y=90110120)angolata definizione tempo int=1(frame-1) t = [0int1] inizializzazione della figura figure(NamePasso StaticoNumbertitleoff) view(XY) richiamo inizializzazione robot init_robot DB_position posizioni zampe poszero=[0 0 0 0 0 0]posizione impressa nella pic pos_base_A=[0 0 0 -pi4 (-pi4) 0] posizione base delle zampe di destra pos_base_B=[0 0 0 pi4 pi4 0] posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento nel simulatore egrave stato ulteriormente aumentato di un fattore correttivo pos_av_A=[0 (pi4-045) 0 -pi4 -pi4 0] pos_av_B=[0 (-pi4+045) 0 pi4 pi4 0] pos_ind_A=[0 (-pi4+045) 0 -pi4 -pi4 0] pos_ind_B=[0 (pi4-045) 0 pi4 pi4 0] posizioni intermedie=punti di via per le cubiche pos_int_A1=[0 (-pi4+045) 0 0 0 0]

Appendice B 174

pos_int_B2=[0 (pi4-045) 0 0 0 0] ------------------------------------------- calcolo della traiettoria movimento in avanti zampe di sinistra jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_Bt) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint) jb_b=cubica_norm(pos_av_Bpos_base_Bint) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_Apos_base_Aint) jbb=cubica_norm(pos_base_Bpos_ind_Bint) ------------------------------ parte grafica sposto il robot al centro trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) disegno convex hull line([136 46 46][-345 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) muovo prima zampa plot2(zampad jb1) plot(zampad jb2) clf muovo seconda zampa cambia la base dappoggio disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_av_B) line([136 46 46][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jb1) plot(zampab jb2) muovo_baricentro--------------------------------------- posizioni baricentro posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa = [0735 (-pi4+04) pi4 -pi4 -pi4-03 0] posb = [0735 (34pi+04) pi4 -pi4 pi4-03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc = [0735 (3pi4+04) 3pi4 pi4 -pi4+03 0] posd = [0735 (5pi4-04) pi4 -pi4 -pi4+03 0]

Appendice B 175

qposd = [0735 pi pi4 -pi4 -pi4 0] traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -048 -1135]) t2=transl([157 -09 -1135]) t3=transl([-159 045 -1135]) t4=transl([162 0045 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno zampe view(XY) disegno zampe con cinematica da zampa puntata a bar plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposat) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(XY) base di appoggio line([136 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) movimento baricentro plot(zampab2jbarb) plot(zampad2 jbard) plot(zampaa2 jbara) plot(zampac2 jbarc) _______________________________________________________________ riposiziono zampe catena cinemetica diretta r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase tx=transl([0 -042 0]) bara=r1tx barb=r2tx barc=r3tx

Appendice B 176

bard=r4tx zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard clf disegno bas dappoggio e zampe view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_ind_Apos_base_B) line([142 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-288 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo terza zampa plot2(zampac ja1) plot(zampac ja2) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_av_Apos_base_B) line([142 464 464][-335 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-335 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo ultima zampa plot(zampaa ja1) plot(zampaa ja2) ____________________________________ sposto di nuovo il baricentro per tornare alla posizione base posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa_av = [0735 (pi4-04) pi4 -pi4 (-pi4+03) 0] posb_ind = [0735 (54pi-04) pi4 -pi4 pi4+03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc_av = [0735 (5pi4-04) 3pi4 pi4 -pi4-03 0] posd_ind = [0735 (5pi4-04) pi4 -pi4 -pi4+038 0] qposd = [0735 pi pi4 -pi4 -pi4 0] disegna traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -09 -1135]) t2=transl([164 -054 -1135]) t3=transl([-159 003 -1135]) t4=transl([162 041 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc

Appendice B 177

zampad2base=bard disegno zampe view(XY) plot(zampaa2qposa_av) plot(zampab2qposb) plot(zampac2qposc_av) plot(zampad2qposd) generazione traiettorie per baricentro jbara=cubica_norm(qposa_avposat) jbarb=cubica_norm(qposbposb_indt) jbarc=cubica_norm(qposc_av posct) jbard=cubica_norm(qposd posd_indt) clf view(XY) _____________________________- riposiziono zampe base r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -042 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard _____________________________________________ disegno base appoggio e muovo zampe line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) Analisi passo dinamico figure(NamePasso DinamicoNumbertitleoff) t = [0int1] calcolo delle traiettorie

Appendice B 178

jta1 = cubica_norm(qza qpva t) jta2 = cubica_norm(qpva qfa t) jtb1 = cubica_norm(qzb qpvb t) jtb2 = cubica_norm(qpvb qfb t) jtc1 = cubica_norm(qpvc qfc t) jtc2 = cubica_norm(qfc qzc t) jtd1 = cubica_norm(qpvd qfd t) jtd2 = cubica_norm(qfd qzd t) ------------------------------ parte grafica parto da posizione base trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegno robot e base dappoggio disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) line([136 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) view(110120) muovo prima zampa plot2(zampaa jta1) plot(zampaa jta2) clf muovo seconda zampa e cambio base appoggio disegna_robot(zampaazampabzampaczampadqfaqzbqzcqzd) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jtb1) plot(zampab jtb2) baricentro definizione cordinate baricentro posa = [0735 pi4 pi4 -pi4 0 0 ] qposa = [0735 0 pi4 -pi4 -pi4 0] posb = [0735 -pi4 34pi pi4 0 0] qposb = [0735 0 34pi pi4 -pi4 0] posc = [0735 0 pi4 -pi4 pi4 0] qposc = [0735 -pi4 pi4 -pi4 0 0] posd = [0735 0 34pi pi4 pi4 0] qposd = [0735 pi4 34pi pi4 0 0] disegno robot in corretta posizione t1=transl([-13 -13 -1135]) t2=transl([13 -13 -1135]) t3=transl([-16 045 -1135]) t4=transl([16 045 -1135]) b=zampaabasetraslazione nellorigine della zampa bara=bt1 barb= bt2 barc= bt3

Appendice B 179

bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno robot e bae appoggio line([465 428 428][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([428 175 175][-415 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposa t) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(110120) spostamento tramite rivisualizzazione ta1=transl([-029 0 0]) ta2=transl([029 0 0]) bara=ta1zampaa2base barb=ta2zampab2base barc=ta2zampac2base bard=ta1zampad2base zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 17 17][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) line([17 432 432][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) torno al robot con catena cinematica base baricentro r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -078 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb

Appendice B 180

zampacbase=barc zampadbase=bard clf view(110120) disegna_robot(zampaazampabzampaczampadqzaqzbqpvcqpvd) line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) view(110120) sposto terza zampa plot2(zampac jtc1) plot(zampac jtc2) clf disegna_robot(zampaazampabzampaczampadqzaqzbqzcqfd) line([46 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) sposta quarta zampa plot(zampad jtd1) plot(zampad jtd2) line([46 46 45][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 46 46][-324 -324 -324][-1135 -1135 -1135]ColorrLineWidth1)

ii3 Calcolo della cinematica inversa

FUNZIONE CINEMATICA Programma che permette di calcolare la cinemetica diretta ed inversa della zampa del robot in esame simula in modo opportuno lanello cinematico di controllo dando la possibilitagrave allutente di inserire un possibile disturbo esterno che non ha permesso il corretto funzionamento La variabile diturbo potragrave in future evoluzioni assumere i valori di sensori o dometrici la funzione di cinemetica inversa egrave stata implementata con tre differenti metodicalcolo del gradiente e geometrico(studiato ad ok che permette il calcolo in real time) parametri in input vetthheta = vettore degli angoli dei giunti per la cinematica diretta medodo = scelta tra i metodi di calcolo di cinematica inversa 1=geometrico 2=inseguimento del gradiente 3=inseguimento veloce del gradiente incremento_angolo = approssimazione da usare con i metodi del gradiente espressa in gradi

Appendice B 181

gomito = scelta se gomito alto (1) o basso (0) parametri output n = numero di iterazioni per il calcolo della cinematica inversa errore = errore in gradi commesso tra la posizione voluta in input e quella realmente raggiunta Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [nerrore] = cinematica(vetthetametodoincremento_angologomito) metodo=1 incremento_angolo=25 gomito=1 alto vettheta=[-pi4 pi4 pi2] errore=[] incr_ang=incremento_angolo2pi360trasformazione valore in radianti ntheta=size(vettheta) considero ogni singola riga del vettore degli angoli concentro cioegrave lanalisi sui singoli 3 valori degli angoli for(nt=1ntheta) utilizzo variabile locale theta=(vettheta(nt)) theta_i=[] v1=size(theta) for(v=1v1(11)) inizio ciclo per tutti i valori di theta inseriti calcolo CINEMATICA DIRETTA per il calcolo della posizione dellend_effector nello spazio dei giunti considero c1 il baricentro che risulta essere giunto fittizio C2=cos(theta(v1))S2=sin(theta(v1)) C3=cos(theta(v2))S3=sin(theta(v2)) C4=cos(theta(v3))S4=sin(theta(v3)) matrici prodotte dai parametri di Denavit Hartemberg A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A34=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] matrice finale end-effector T=A12A23A34 memorizzo in pos la posizione finale dellend effector calcolata si trova nei primi 3 elementi della quarta colonna della matrice T for(i=13) pos(1i)=T(i4) end pos(14)=1 siamo nelle omogenee p deve avere 4 valori disturbo=[0 0 0 0]introduco valori disturbo quando avremo i sensori avrograve in input valore posizione finale raggiunta diversa da quella calcolata ricalcolo posizione reale raggiunta pos=pos+disturbo

Appendice B 182

dalla nuova posizione calcolo la CINEMATICA INVERSA PRIMO ANGOLOricavato direttamente dalla matrice T z2=pos(12)pos(11) theta_i(11) = atan(z2) ricalcolo l aposizione corretta di intersezione degli assi avendo giagrave calcolato il valore de primo giuntosposto lorigine nel secondo giunto in base alla posizione effettiva del robotsullasse devo fare controlli per calcolare l aposizione dellend-effector rispetto alla nuova origine PIPPO=pos() if (theta_i(11)==0) pos(11)=pos(11)-(cos(theta_i(11))00573) else if pos(13)==0 pos(11)=00675+009 else if (theta_i(11)gt0) pos(11)=(pos(11)cos(theta_i(11)))-00573 else pos(11)=(pos(11)cos(theta_i(11))-00573) end end end PIPPO2=pos() METODO GEOMETRICO if (metodo==1) n=1 unica interazione dist=0 pos(11)=abs(pos(11)) pos(13)=abs(pos(13)) da analisi geometrica B = pos(11)^2+pos(13)^2 c2=(B-00675^2-009^2)(200675009) theta_i(13)=(acos(c2)) delta=atan((pos(13))(pos(11)))considerando i grafici ho valori di x e z invertiti zx=(009sin(theta_i(13))(00675+009cos(theta_i(13)))) alfa = atan(zx) se gomito alto uasato sempre if (gomito==1) theta_i(12)=(delta+alfa) end se gomito basso if (gomito==0) theta_i(12)=(delta-alfa) end calcolo errore tra dato in input e valori trovati err(11)=theta(11)-theta_i(11) err(12)=abs(theta(12))-theta_i(12)+pi2causa inversione di posizionamento motori err(13)=abs(theta(13))-theta_i(13) trasformo errore in gradi errore=[errorefix(err360(2pi))] else METODO ITERATIVO PER CALCOLARE CINEMATICA INVERSA

Appendice B 183

if (metodo==2) METODO GRADIENTE inizializzo var di appoggio a=0 b=0 n=0 dist = Calc_Distanza(abpos(11)pos(13)) calcolo distanza iniziale while (dist gt 0001) 0001 approx al millimetro 001 approx al centimetro calcolo la differenza della distanza dalla pos finale dellend-effector incrementado e decrementando gli angoli verifico se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_angbpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) -Calc_Distanza(a b-incr_angpos(11)pos(13)) a = a - gradient_a creo le nuove pos b = b - gradient_b ricalcolo la distanza e vedo se egrave minore dellapprox dist = Calc_Distanza(abpos(11)pos(13)) n=n+1incremento numero di iterazioni end else if(metodo==3) METODO FASTER GRADIENT FOLLOWING inizializzo var di appoggio a=0 b=0 n=0 speeda=0 speedb=0 dist = Calc_Distanza(abpos(11)pos(13))calcolo distanza da end effector salvo il valore del vecchio gradiente per entrambe le posizioni old_gradient_a = 0 old_gradient_b = 0 while (dist gt 0001) approssimazione al millimetro n=n+1 controllo se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_ang bpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) - Calc_Distanza(a b-incr_angpos(11)pos(13)) controllo se ci siamo gia trovati in questi valori in segno if (sign(old_gradient_a) ~= sign(gradient_a)) se gradiente ha cambiato direzione(salitadiscesa)devo arrestare e modificare valori a = a - speeda old_gradient_a (gradient_a-old_gradient_a) speeda = 0 else speeda =speeda + gradient_a se sto seguendo salita o discesa del gradiente continuo a seguirla if (sign(old_gradient_b) ~= sign(gradient_b))

Appendice B 184

b = b- speeda old_gradient_b (gradient_b-old_gradient_b) speedb = 0 else modifico posizioni raggiunte e velocitagrave speedb =speedb+gradient_b a = a- speeda b = b- speedb end end ricalcolo distanza con nuovi valori dist = Calc_Distanza(a bpos(11)pos(13)) old_gradient_a = gradient_a il grdiente appena calcolato diventa il vecchio old_gradient_b = gradient_b end else testo=inserito metodo errato end end STAMPO VALORI NEL CASO DEI GRADIENTI nstampo il numero di iterazioni che sono servite a calcolare il risultato dist theta_i(12)=a-incr_angvalori corretti sono quelli al passo precedente theta_i(13)=b-incr_ang theta_i esprimo lerrore in gradi err=theta-theta_i errore=[errorefix(err360(2pi))] end end end

ii4 Analisi del modello dinamico

FUNZIONE EULERO_BASE Funzione che effettua il calcolo dei coefficienti di newton eulero sulla singola zampa per ogni singolo giunto dellarticolazione in base alla parametrizzazione di Denavit-Hartemberg La catena cinematica qui analizzata egrave quella che ha per base il baricentro ed end effector il piedeApplicata a parametri di controllo degli attuatori(passo_avanti) parametri input theta=vettore a tre colonne che rappresenta gli angoli dei tre giunti function [forza_gen] = eulero_base(theta) theta=[ pi4 pi4 pi2 pi4 pi4 pi4 0 pi4

Appendice B 185

pi4 pi4 0 pi4 pi4 pi4 0 pi4 pi4 pi4 pi2 pi4 pi4 pi4 pi2 pi4] definizione tempistiche delta=1 [v1 n1]=size(theta) forza_gen=[] massa PESO=1 IN KG massa=[PESO4 002 002 005] gravitagrave g=[0 0 -98] tensore dinerzia del complesso braccio motore espressi in millimetri x=[0026 0003 0003 0009] y=[0054 0020 0020 004] z=[01125 00573 00675 009] I=[] matrice momento dinerzia for(i=13) I=[I (y(i)^2+z(i)^2)12 0 0 0 (x(i)^2+z(i)^2)12 0 0 0 (y(i)^2+z(i)^2)12] end for(v=1v1-1) inizio ciclo per piugrave posizioni successive ris=[] analizzo due istanti temporali successivi per estrapolare la velocitagrave for(j=1n1) ris=[ris (theta(v+1j)-theta(vj))] end d_theta=risdelta espresso in radsec dd_theta=d_thetadeltaespresso in radsec^2 C1=cos(theta(v1))S1=sin(theta(v1)) C2=cos(theta(v2))S2=sin(theta(v2)) C3=cos(theta(v3))S3=sin(theta(v3)) C4=cos(theta(v4))S4=sin(theta(v4)) Ricavo matrice di rotazione tot R=[[C1(1) (-S1(1)) 0 S1(1) C1(1) 0 0 0 1] [C2(1) 0 (-S2(1)) S2(1) 0 -C2(1) 0 1 0] [C3(1) (-S3(1)) 0 S3(1) C3(1) 0 0 0 1] [C4(1) (-S4(1)) 0 S4(1) C4(1) 0 0 0 1]]gestita come 123 cinematica diretta per il calcolo della posizione dellend_effector nello spazio dei giunti A11=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A13=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A14=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T1=A11A12A13A14

Appendice B 186

C1=cos(theta(v+11))S1=sin(theta(v+11)) C2=cos(theta(v+12))S2=sin(theta(v+12)) C3=cos(theta(v+13))S3=sin(theta(v+13)) C4=cos(theta(v+14))S4=sin(theta(v+14)) A21=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A22=[C2 0 (-S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A24=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T2=A21A22A23A24 dalle posizioni successive trovate con cinematica diretta estrapolo la posizione e da essa la velocitagrave for(i=13) pos(1i)=T2(i4)-T1(i4) end vel=posdelta acc_end_eff=veldelta vettore dallorigine della terna(i-1)al baricentro Ci R_iC=[0055125 0 0002865 0 0003375 0 00045 0 0] vettore dallorigine della terna(i)al baricentro Ci RC=[-0055125 0 0-002865 0 0-003375 0 0-0045 0 0] vettore dallorigine della terna(i-1)allorigine della terna (i) R_iI=[01125 0 000573 0 000675 0 0009 0 0] zo=[0 0 1]asse base altri parametri da calcolare velocitagrave lineare del baricentro Ci p_C=[0 0 0] velocitagrave lineare dellorigine della terna (i) p_i=[0 0 0] velocitagrave angolare del braccio omega=[0 0 0] accelerazione lineare del baricentro Ci pp_C=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione lineare dellorigine della terna (i) pp_i=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione angolare del braccio d_omega=[0 0 0] forza esercitata dal braccio (i-1) sul braccio i f=(1)acc_end_eff il primo valore rappresenta su end_effector momento mu=[0 0 0] forza generalizzata tau=[] impongo velocitagrave e accellerazioni per il braccio base inizio algoritmo inserisco formule di Newton-Eulero(vedi teoria) for(i=24) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] omega(i)=(Rot(omega(i-1)+(d_theta(1i-1)zo))) d_omega(i)=(Rot(d_omega(i-1)+(dd_theta(1i-1)zo)+cross(d_theta(1i-1)omega(i-1)zo)))

Appendice B 187

pp_i(i)=(Rotpp_i(i-1))+cross(d_omega(i)R_iI(i-1))+cross(omega(i)(cross(omega(i)R_iI(i-1)))) pp_C(i)=pp_i(i)+cross(d_omega(i)RC(i-1))+cross(omega(i)(cross(omega(i)RC(i-1)))) end TORNO indietro per calcolare le forze e i momenti i=3 r=2indici while(igt=1) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] Iner=[I((i-1)3+1)I((i-1)3+2)I((i-1)3+3)] f(r)=(Rotf(r-1))-massa(1i)pp_C(i)ho sottratto la massa perchegrave la considero forzapeso mu(r)=cross(-f(r)(R_iI(i)+RC(i)))+(Rotmu(r-1))+(Rot(cross(f(r-1)RC(i))))+(Inerd_omega(i))+cross(omega(i)(Ineromega(i))) i=i-1 r=r+1 end n2=size(mu) for(i=2n2) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] tau(i)=mu(i)Rotzo end forza_gen=[forza_gen tau] end forza_gen espressa in Nm forza_gen=(forza_gen100)98 trasformazione in cmKg

ii5 Map building

ii51 Espansione degli ostacoli

FUNZIONE ONDA_DESTINAZIONE funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input matrice= matrice di definizione mappa xend=valore dellascissa della destinazione yend=valore dellordinata della destinazione parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_destinazione(matricexendyend)

Appendice B 188

calcolo dimensioni matrice [dim1dim2] = size(matrice) for(i=1(xend-1))righe superiori ad arrivo for(j=1(dim22))per tutte le colonne matrice(i((j2)-1))=(xend-i)attribuisco valori decrescenti end end for(i=(xend+1)dim1)righe inferiori ad arrivo for(j=1(dim22)) matrice(i((j2)-1))=(i-xend)attribuisco valori a cui devo sottrarre la destinazione end end for(i=1dim1)colonne a sx ad arrivo for(j=1(yend-1))fino a colonna precedente arrivo sottraggo il numero in cui sono matrice(i((j2)-1))=matrice(i((j2)-1))+(yend-j) end end for(i=1dim1)colonne a dx ad arrivo for(j=(yend+1)(dim22))da colonna successiva a fine matrice(i((j2)-1))=matrice(i((j2)-1))+(j-yend)da valore devo sottrarre valore destinazione end end matrix=matrice restituisco matrice modificata FUNZIONE ONDA_OSTACOLOPLUS funzione che inseriscce come secondo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dallstacolo piugrave vicino valutando opportunamente la relazione tra gli ostacoli giagrave presenti parametri in input matrice= matrice di definizione mappa xposa=valore dellascissa iniziale deelostacolo xposb=valore dellascissa di fine deelostacolo yposa=valore dellordinata iniziale deelostacolo yposb=valore dellordinata di fine deelostacolo parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_ostacoloplus(matricexposaxposbyposayposb) funzione per la creazione degli ostacoli ostacolo_par(xaxbyaybc) ostacolo occupa quattro celle xayaxaybxbya xbyb definisco nuova matrice matrice_1=zeros(size(matrice)) creo onda con singolo ostacolo matrice_1=onda_ostacolo(matrice_1xposaxposbyposayposb) [dim1dim2] = size(matrice_1) confonto matrice con singolo ostacolo con matrice con giagrave presenti altri ostacoli e salvo le distanze minime da essi for(i=1dim1) for(j=1(dim22))

Appendice B 189

if(matrice_1(i(j2))ltmatrice(i(j2))) matrice(i(j2))=matrice_1(i(j2)) end end end matrice(xposayposa2)=0valori che identificano lostacolo matrice(xposa((yposa2)-1))=110 matrice(xposayposb2)=0valori che identificano lostacolo matrice(xposa((yposb2)-1))=110 matrice(xposbyposa2)=0valori che identificano lostacolo matrice(xposb((yposa2)-1))=110 matrice(xposbyposb2)=0valori che identificano lostacolo matrice(xposb((yposb2)-1))=110 espansione ostacolo if(yposa ~= 1)se sono sul bordo sinistro matrice(xposa(yposa-1)2)=0valori che identificano lespansione matrice(xposa(((yposa-1)2)-1))=109 matrice(xposb(yposa-1)2)=0valori che identificano lespansione matrice(xposb(((yposa-1)2)-1))=109 end if(yposb ~= (dim22))se sono sul bordo destro matrice(xposa(yposb+1)2)=0valori che identificano lespansione matrice(xposa(((yposb+1)2)-1))=109 matrice(xposb(yposb+1)2)=0valori che identificano lespansione matrice(xposb(((yposb+1)2)-1))=109 end matrix=matriceritorno il valore della matrice modificata

ii52 Calcolo del percorso

FUNZIONE TROVA_PERCORSO funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input xst=valore dellascissa del punto di partenza yst=valore dellordinata del punto di partenza xend=valore dellascissa del punto di arrivo yend=valore dellordinata del punto di arrivo dim1dim2=dimendioni matrice mappa posxa1posxa2posya1posya2=posizione ostacolo 1 posxb1posxb2posyb1posyb2=posizione ostacolo 2 posxc1posxc2posyc1posyc2=posizione ostacolo 3 parametri in output prova1= valori in coordinate cartesiane del percorso trovato strada_per=percorso in rappresentazione direzionale dei passi da percorrere strada_per_uso=percorso espresso in valori singoli(0=Start1=Avanti-1=Indietro-2=Sinistra2=Destra) Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005

Appendice B 190

function [prova1strada_perstrada_per_uso] = trova_percorso(xstystxendyenddim1dim2posxa1posxa2posya1posya2posxb1posxb2posyb1posyb2posxc1posxc2posyc1posyc2) non_val=[100 1 -1 -1]valore non valido 100=dist_da destinazione 1=distanza da ostacolo visitato=[150 0]marca per nodi visitati arr=[0 45]marca arrivo strada=[xst yst]memorizzo coordinate percorso dim1=5 dim2=dim22 matrice_appoggio=eye(dim1dim2) crea una matrice diagonale dim1 x dim2 matrice=zeros(size(matrice_appoggio))creo matrice vuota creo matrice con onde necessarie matrice=onda_destinazione(matricexendyend) matrice=onda_ostacolo(matriceposxa1posxa2posya1posya2) matrice=onda_ostacoloplus(matriceposxb1posxb2posyb1posyb2) matrice=onda_ostacoloplus(matriceposxc1posxc2posyc1posyc2) prova=matriceprova diventa la mia matrice i=xst j=yst parto da sorgente n=dim1dimensioni matrice m=dim22 trovato=0 creo insieme dei successivi del nodo in analisi while(trovato==0) if((igt=1)ampamp(ilt=dim1)ampamp(jgt=1)ampamp(jlt=(dim22))) if(i ~= 1)se sono ai bordi successivi=[matrice(i-1(j2)-1) matrice(i-1(j2)) i-1 j] else successivi=non_val end if(j ~= 1)se sono ai bordi successivi=[successivimatrice(i(((j-1)2)-1)) matrice(i(j-1)2) i (j-1)] else successivi=[successivinon_val] end if(i ~= n) successivi=[successivimatrice(i+1(j2)-1) matrice(i+1(j2)) i+1 j] else successivi=[successivinon_val] end if(j ~= m) successivi=[successivimatrice(i(((j+1)2)-1)) matrice(i(j+1)2) i (j+1)] else successivi=[successivinon_val] end migliore=non_valattribuisco valore enorme a migliore trov=0 scelgo il miglior successivo quello che mi porta piugrave vicino a destinazione for(k=14) if(successivi(k1)lt=migliore(1)) tra due a stessa distanza prendo quello piugrave lontano dallostacolo

Appendice B 191

if((successivi(k1)==migliore(1))ampamp(successivi(k2)ltmigliore(2))) migliore=successivi(k) trov=1 posto=ksalvo la posizione del successivo end migliore=successivi(k) trov=1 posto=k end end matrice(i(j2)-1)=visitato(1)marco percorso giagrave visitato matrice(i(j2))=visitato(2) strada=[stradamigliore(3) migliore(4)]salvo la posizione del migliore trovato se sono arrivato a destinazione ho finito if(migliore(3)==xend)ampamp(migliore(4)==yend) trovato=1 end controllo per il mancato raggiungimento del percorso i=migliore(3)cerco il successivo j=migliore(4) se il migliore tra i successivi egrave o un ostacolo o unespansione sono bloccato if((migliore(1)==150)||(migliore(1)==109)||(migliore(1)==110)) trovato=2non esiste percorso end else trovato=2 end end if(trovato==1) testo=PERCORSO TROVATO end if(trovato==2) testo=PERCORSO NON TROVATO end se ho trovato il percorso if(trovato ~= 2) prova1=stradasalvo la strada in coordinate effettuata [rc] = size(strada) dalle coordinate estrapolo la strada direzionale e una espressa in singolo valore strada_per=[ start] strada_per_uso=[0] for(k=1(r-1)) if((strada(k1)~= strada(k+11))ampamp(strada(k2)== strada(k+12))) ris=strada(k1)- strada(k+11) if (ris==1) strada_per=vertcat(strada_perIndietro) strada_per_uso=[strada_per_uso-1] else strada_per=vertcat(strada_perAvanti ) strada_per_uso=[strada_per_uso1] end

Appendice B 192

else if((strada(k1)== strada(k+11))ampamp(strada(k2)~= strada(k+12))) ris=strada(k2)- strada(k+12) if (ris==1) strada_per=vertcat(strada_perSinistra) strada_per_uso=[strada_per_uso-2] else strada_per=vertcat(strada_perDestra ) strada_per_uso=[strada_per_uso+2] end end end end stampa=strada_per end

ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente

FUNZIONE AMBIENTE_PROVA Algoritmo che richiama la funzione trova_percorso e con i risultati trovati realizza il plottaggio grafico del robot in movimento nellambiente Realizza controlli per la scelta del passo da utilizzare nellistante in esame Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 preparazione dati base figura figure grid on axis([-5 5 -5 5 -2 7]) clf init sfondo(xstartystartxendyend) ASGAR b=transl(000) posiziono il robot nello start t=transl([ystart -xstart 0]) bara=bt barb=bt barc=bt bard=bt zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard center_position(barabarbbarcbard)

Appendice B 193

chiamo la funzione trova_percorso [coord path

path_uso]=trova_percorso(xstartystartxendyenddim1dim2ostxa1ostxa2ostya1ostya2ostxb1ostxb2ostyb1ostyb2ostxc1ostxc2ostyc1ostyc2) [p k]=size(path_uso) v=1 p1=[] cont=[] per ogni elemento del percorso while(vlt=p) in relazione al percorso espresso con singoli valori if (path_uso(v)== 0)start clf alzati7chiamo funzione di alzata del robot clf sfondo(xstartystartxendyend) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) v=v+1 else if (path_uso(v)== -2) cammina_sinistra for(i=04) faccio fare CINQUE passi a sx x spst a sx=02 hold on passo_sx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 2) cammina_destra for(i=04) faccio fare CINQUE passi a dx x spost a dx =02 hold on passo_dx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 1)in avanti c=0 k=v conto per quante celle non varia la x cioegrave qunti elementi devo andare avanti while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1)

Appendice B 194

n_passi=fix(distanza07)trasformo la distanza in passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo per eccesso il rimanente for(s=1n_passi) cammina_avanti con passi lunghi hold on passo_avanti_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_avanti con passi correttivi hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] else if (path_uso(v)==-1)indietro c=0 k=v calcolo x quanti elementi ho camminata indietro while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1) n_passi=fix(distanza07)definisco n_passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo rimanente for(s=1n_passi) cammina_indietro con passi lunghi hold on passo_indietro_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_indietro con passi correttivi hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] end end end end end

Appendice B 195

end axis([-1 7 -8 1 -2 7]) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]salvo percorso fino a prima

della correzione finale correzione finale mi dice quanto sono arrivata lontano dalle destinazione desiderata [m m1]=size(percorso_effettivo) distanza=[] distanza(1)=percorso_effettivo((m-3)4)-(yend) distanza(2)=percorso_effettivo((m-2)4)-(-xend) testo=SONO ARRIVATO A DISTANZA DALL OBIETTIVO DI X=distanza(1) y=distanza(2) in base al valore di distanza mi suggerisce cosa il robot dovrebbe ancora fare if ((distanza(2)gt=02)||(distanza(2)lt=-02)) dist_fin=distanza(2)02 testo=devo fare ancora abs(dist_fin)visualizzo il modulo if(dist_fingt0) testo=passi correttivi avanti else testo=passi correttivi indietro end dopo avermi detto cosa deve fare lo esegue if(dist_finlt0) for(i=0fix(abs(dist_fin))) hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end else for(i=0fix(abs(dist_fin))) hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end end end p1=[p1zampaabase] disegno i due percorsi IDEALE e EFFETTIVO percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]aggiungo la correzione al

percorso [n n1]=size(coord)percorso ideale for(k=1(n-1)) if((coord(k1)~= coord(k+11))ampamp(coord(k2)== coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k+11)][0 0

0]ColorgLineWidth2)

Appendice B 196

else if((coord(k1)== coord(k+11))ampamp(coord(k2)~= coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k1)][0 0

0]ColorgLineWidth2) end end end PERCORSO vero che invece fa il robottino il valore delle coordinate egrave giagrave giusto come segni for(k=0(m4)-2) if((percorso_effettivo((4k)+14) ~=

percorso_effettivo((4(k+1)+1)4))||(percorso_effettivo((4k)+24) == percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4(k+1)+1)4)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo(4k+24)][0 0 0]ColorbLineWidth2) else if((percorso_effettivo((4k)+14) ==

percorso_effettivo((4(k+1)+1)4))ampamp(percorso_effettivo(4k+24) ~= percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4k)+14)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo((4(k+1)+2)4)][0 0 0]ColorbLineWidth2) end end end

ii6 Collegamento diretto con il robot fisico

ii61 Creazione degli angoli da trasmetter agli attuatori

FUNZIONE ANGOLI_MOTORI2 Funzione che crea in output larray theta_motori generando le traiettorie di movimento per il corretto funzionamento dellattuazione dei motori fisici In questa versione gli angoli di movimento risultano essere piugrave accentuati per migliorare la stabilirtagrave Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 INSERIRE NUMERO FRAME AL SECONDO frame=2 con 50 sembra continuo

Appendice B 197

int=1(frame-1)definisco il numero di intervalli in cui scandire il movimento t=[0int1] definizione variabile di controllo x=0 if (int==1) x=1 end poszero=[0 0 0]posizione impressa nella pic pos_base_A=[0 -pi4 (-pi2)]posizione base delle zampe di destra pos_base_B=[0 pi4 (pi2)]posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento pos_av_A=[(pi4-02) -pi4 -pi2] pos_av_A2=[(pi3) -pi4 -pi2] modificata accentuo movimento in avanti pos_av_B=[(-pi4+02) pi4 pi2] pos_av_B2=[(-pi3) pi4 pi2] pos_ind_A=[(-pi4+02) -pi4 -pi2] pos_ind_A2=[(-pi3) -pi4 -pi2] pos_ind_B=[(pi4-02) pi4 pi2] pos_ind_B2=[(pi3) pi4 pi2] posizioni intermedie=punti di via per le cubiche pos_int_A1=[(-pi4+02) 0 0] pos_int_A2=[(-pi3) 0 0] pos_int_B2=[(pi4-02) 0 0] pos_int_B3=[(pi3) 0 0] calcolo dellle traiettorie tramite la cubica da posizione zero a posizione base parta=cubica_norm(poszeropos_base_At) partb=cubica_norm(poszeropos_ind_Bt) partc=cubica_norm(poszeropos_ind_B2t) movimento in avanti zampe di sinistra jc1=cubica_norm(pos_ind_B2pos_int_B3t) jc2=cubica_norm(pos_int_B3pos_av_Bt) jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_B2t) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint+x) jd_b=cubica_norm(pos_base_Apos_ind_A2int+x) jb_b=cubica_norm(pos_av_B2pos_base_Bint+x) jc_b=cubica_norm(pos_av_Bpos_base_Bint+x) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_A2t) jd1=cubica_norm(pos_ind_A2pos_int_A2t) jd2=cubica_norm(pos_int_A2pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_A2pos_base_Aint+x)

Appendice B 198

jdb=cubica_norm(pos_av_Apos_base_Aint+x) jbb=cubica_norm(pos_base_Bpos_ind_Bint+x) jcb=cubica_norm(pos_base_Bpos_ind_B2int+x) costruzione dei vettori di attesa per ogni zampa pos_attesaA=[]attesa della zampa nella posizione base pos_attesaB=[] pos_attindA=[]attesa della zampa nella posizione indietro pos_attindB=[] pos_attavA=[]attesa della zampa nella posizione avanti pos_attavB=[] vettori per le attese dei movimenti delle altre zampe for(i=1(2+2int)int) pos_attesaA=[pos_attesaApos_base_A]attesa zampa in posizione base pos_attesaB=[pos_attesaBpos_base_B] pos_attindA=[pos_attindApos_ind_A]attesa zampa in posizione indietro pos_attindB=[pos_attindBpos_ind_B] pos_attavA=[pos_attavApos_av_A]attesa zampa in posizione avanti pos_attavB=[pos_attavBpos_av_B] end costruzioni vettori composti per la camminata ja=[partapos_attesaApos_attesaAja_bpos_attindAja1ja2jab] jb=[partbpos_attindBjb1jb2jb_bpos_attesaBpos_attesaBjbb] jc=[partcjc1jc2pos_attavBjc_bpos_attesaBpos_attesaBjcb] jd=[partapos_attesaApos_attesaAjd_bjd1jd2pos_attavAjdb] vettore da mandare in output ogni colonna rappresenta un motore in pos 3 4 5 6 7 8 9 10 11 12 13 14 theta_motori=[jb(1) jc(1) jb(2) jb(3) jc(2) jc(3) jd(3) jd(2) ja(3) ja(2) jd(1) ja(1)] costruzione della scala per i valori minimi valori_minimi=(-pi2)ones(112) chiamata di funzione per spedire valori ai motori moveservos_mio(theta_motori0111valori_minimi) ho messo frame 8 e valore tra un valore sparato e laltro 008 va bene

ii62 Coollegamento diretto di comunicazione con la PIC

FUNZIONE MOVESEVOS La funzione che ricevendo in imput il vettore contenente le posizioni dei motori le elabora per trasformarle in valori compatibili con la PIC (0 255)e apre una connessione di comunicazione con essa La PIC che riceveragrave in input i dati tramite la connessione seriale (impostata sulla COM1 alla velocitagrave di 9600) interpreteragrave i dati nel seguente modo

Appendice B 199

- Il primo valore indica la modalitagrave (254 = movimento dei servo) - I successivi 16 valori compresi tra 0 e 255 indicano le posizioni parametri inputpos=la matrice theta costitutita da una o piugrave righe composta da 12 elementi riferiti ai 12 attuatori timestep=indica il tempo di invio tra una sequenza e laltra ovvero il tempo che intercorre tra ogni framerigha della matrice in ingresso(valore minimo 0111) min=vettore contenente i valori min assumibili dai motori per calcolare lo zero delle posizioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 pos egrave il valore della mia theta espressa solo con 12 valori Funzione che invia i valori in output sulla seriale function moveservos_mio(postimestepmin) max_servo_rotation = pi Quanto possono ruotare i motori (pi 2pi) [rowscols] = size(pos) Crea una connessione seriale try s = serial(COM1 BaudRate14400) sByteOrder = littleEndian sTerminator = CR set(s timeout timestep)posso mettere 1 fopen(s) Laperturachiusura della seriale avviene una volta per ogni matrice theta e non ad ogni rigainvio for i=1rows pos_rel = pos(i)-min posizione relativa alla pos minima Vengono aggiunti 4 valori fittizi nulli poichegrave la seriale egrave progettata per gestire 16 motori mentre theta ne contiene 12 theta16 = [0 0 pos_rel(18) 0 pos_rel(1012) pos_rel(9) 0] Converto in valori in valori da 0 a 255 per la PIC I valori inviati compaiono anche nella command line per verifica theta16 = round(theta16255max_servo_rotation) fwrite(s 254 uchar async) readyByte = fread(s 1 uchar) fwrite(stheta16 uchar async) Controlla se la PIC ha ricevuto theta (conferma tramite valore 33) confirmByte = fread(s 1 uchar) if confirmByte ~= 33 msgbox(Errore di invio dei comandi sulla serialeErroreerror) else Valori inviati correttamente sulla seriale end pause(timestep) end

Appendice B 200

fclose(s) clear ans catch Se fallisce la connessione avverti lutente Porta seriale non connessa end

  • Introduzione
    • Unitagrave funzionali di un robot mobile
    • Obiettivo del lavoro
    • Organizzazione della tesi
      • Sistemi di locomozione
        • Scopi di studio della locomozione su zampe
        • Differenze e analogie tra locomozione a zampe e su ruote
        • Analisi Trot gait di quadrupedi
          • Studio andatura quasi-statica
          • Studio andatura quasi-dinamica
          • Studio andatura dinamica trotto
              • Stato dellrsquoarte dei four legged robot
                • Panoramica dei Robot quadrupedi esistenti
                  • Collie-1 e Collie-2
                  • Quadrupede MIT
                  • GEO
                  • Quadrupede Kimura lab
                    • Algoritmi di controllo CPG for four legged robot
                    • Robocup e Sony Aibo
                      • Storia
                      • Descrizione dei sensori di Aibo
                        • Visione della macchina
                        • Riconoscimento audio
                        • Tatto
                        • Movimento e sviluppo
                          • Architettura del robot ASGARD
                            • Configurazione del robot quadrupede
                              • Struttura Meccanica
                              • Attuatori
                              • Materiale Policarbonato
                                • ASGRAD in numeri
                                • Hardware
                                • Software
                                • Stato Attuale
                                  • Modellizzazione cinematica e dinamica
                                    • Convenzioni e simbologia utilizzata
                                    • Sistemi di coordinate e trasformazioni
                                    • Cinemetica diretta
                                      • Definizione dei parametri di Denavit Hartemberg
                                      • Metodo di assegnamento secondo D-H
                                        • Cinematica inversa
                                          • Metodo gradiente
                                            • Gradient following
                                            • Faster gradient following
                                                • Calcolo delle traiettorie
                                                • Modello dinamico Newton-Eulero
                                                • Creazione di una mappa
                                                  • Espansione degli ostacoli traformazione delle distanze
                                                    • Scelta di un percorso Algoritmo di Dijkstra
                                                      • Sviluppo dellrsquoalgoritmo di camminata
                                                        • Metodologie di sviluppo
                                                        • Progetto di una andatura
                                                          • Lo spazio
                                                          • Stabilitagrave
                                                          • Tempo
                                                            • Andature implementate
                                                            • Catene cinematiche del robot
                                                            • Passo statico e dinamico
                                                            • Formule di forza e torsione sui giunti
                                                            • Anello di Controllo
                                                            • Map-building e scelta del gait
                                                              • Costruzione della mappa ed espansione degli ostacoli
                                                              • Algoritmo di ricerca del percorso minimo
                                                              • Realizzazione del gait
                                                                  • Sperimentazione e analisi dei risultati
                                                                    • Risultati statici
                                                                      • Passo reale effettuato
                                                                      • Misurazioni reali della pressione
                                                                      • Confronti di cinemetica inversa
                                                                        • Risultati dinamici
                                                                          • Caratteristiche negative dei motori
                                                                            • Velocitagrave
                                                                            • Alimentazione
                                                                                • Caratteristiche del percorso
                                                                                  • Conclusioni e sviluppi futuri
                                                                                    • Risultati raggiunti
                                                                                    • Progetti futuri
                                                                                      • Modifiche meccaniche
                                                                                      • Miglioramenti Hardware
                                                                                      • Miglioramenti Software
                                                                                        • Conclusioni finali
                                                                                          • Bibliografia
                                                                                          • Appendice A
                                                                                            • i Sensori nei robot a zampe disponibili sul mercato
                                                                                            • ii Dead Reckoning Stima della posizione
                                                                                              • ii1 Encoder Ottici
                                                                                              • ii2 Encoder ottici incrementali
                                                                                                • ii21 EL30 E-H-I Eltra srl
                                                                                                  • ii3 Encoder ottici Assoluti
                                                                                                    • ii31 Sensori ottici CORRSYS-DATRON
                                                                                                    • ii32 EAM Parallelo-SSI Eltra srl
                                                                                                      • ii4 Sensori Dopler
                                                                                                      • ii41 Robot Italy SRF04
                                                                                                        • iii Heading Sensor
                                                                                                          • iii1 Giroscopio meccanico
                                                                                                            • iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codi
                                                                                                            • iii12 Futaba Giroscopio FP GY 240 AVCS
                                                                                                              • iii2 Giro-bussola
                                                                                                              • iii3 Giroscopio-Girobussola a fibre ottiche
                                                                                                                • iii31 La funzione giroscopica
                                                                                                                  • iii4 Giroscopio piezoelettrico
                                                                                                                    • iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03
                                                                                                                    • iii42 Giroscopio Piezoelettrico Enc-03ja
                                                                                                                        • iv Sensori geomagnetici
                                                                                                                          • iv1 Bussola magnetica meccanica
                                                                                                                          • iv2 Bussola a effetto Hall
                                                                                                                            • iv21 1490 Digital Compass Sensor
                                                                                                                              • iv3 Bussola a magnetoreversiva
                                                                                                                                • iv31 Philips bussola AMR
                                                                                                                                  • iv4 Bussola magnetoelastica
                                                                                                                                    • iv41 Metglas 2605S2
                                                                                                                                        • v Sensori per la modellizzazione dellrsquoambiente
                                                                                                                                        • vi Sensori di distanza
                                                                                                                                          • vi1 Sensori basati sul tempo di volo
                                                                                                                                            • vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502
                                                                                                                                              • vi2 Sensore telemetro a sfasamento
                                                                                                                                                • vi21 LIDAR lsquoLight detection and Rangingrsquo
                                                                                                                                                  • vi3 Triangolazione
                                                                                                                                                    • vi31 IFELL Laser e Sistemi Srl
                                                                                                                                                      • Informazioni sui produttori
                                                                                                                                                      • Appendice B
                                                                                                                                                        • i Manuale drsquouso
                                                                                                                                                        • ii Codice generato
                                                                                                                                                          • ii1 Menu principale
                                                                                                                                                          • ii2 Confronto andatura quasi-stabile vs quasi-dinamica
                                                                                                                                                          • ii3 Calcolo della cinematica inversa
                                                                                                                                                          • ii4 Analisi del modello dinamico
                                                                                                                                                          • ii5 Map building
                                                                                                                                                            • ii51 Espansione degli ostacoli
                                                                                                                                                            • ii52 Calcolo del percorso
                                                                                                                                                            • ii53 Definizione dei movimenti per la deambulazione nellrsquoa
                                                                                                                                                              • ii6 Collegamento diretto con il robot fisico
                                                                                                                                                                • ii61 Creazione degli angoli da trasmetter agli attuatori
                                                                                                                                                                • ii62 Coollegamento diretto di comunicazione con la PIC
Page 4: Analisi e sviluppo di un simulatore per gait

Indice 4

312 Attuatori 50 313 Materiale Policarbonato 52

32 ASGRAD in numeri 53

33 Hardware 55

34 Software 56

35 Stato Attuale 57

CAPITOLO 4 MODELLIZZAZIONE CINEMATICA E DINAMICA 58

41 Convenzioni e simbologia utilizzata 59

42 Sistemi di coordinate e trasformazioni 60

43 Cinemetica diretta 62 431 Definizione dei parametri di Denavit Hartemberg 63 432 Metodo di assegnamento secondo D-H 65

44 Cinematica inversa 69 441 Metodo gradiente 72

4411 Gradient following 73 4412 Faster gradient following 74

45 Calcolo delle traiettorie 75

46 Modello dinamico Newton-Eulero 78

47 Creazione di una mappa 80 471 Espansione degli ostacoli traformazione delle distanze 81

48 Scelta di un percorso Algoritmo di Dijkstra 83

CAPITOLO 5 SVILUPPO DELLrsquoALGORITMO DI CAMMINATA 84

51 Metodologie di sviluppo 85

52 Progetto di una andatura 85 521 Lo spazio 86 522 Stabilitagrave 87 523 Tempo 88

53 Andature implementate 88

Indice 5

54 Catene cinematiche del robot 90

55 Passo statico e dinamico 96

56 Formule di forza e torsione sui giunti 100

57 Anello di Controllo 102

58 Map-building e scelta del gait 105 581 Costruzione della mappa ed espansione degli ostacoli 106 582 Algoritmo di ricerca del percorso minimo 108 583 Realizzazione del gait 111

CAPITOLO 6 SPERIMENTAZIONE E ANALISI DEI RISULTATI 115

61 Risultati statici 116 611 Passo reale effettuato 117 612 Misurazioni reali della pressione 119 613 Confronti di cinemetica inversa 122

62 Risultati dinamici 124 621 Caratteristiche negative dei motori 126

6211 Velocitagrave 126 6212 Alimentazione 126

63 Caratteristiche del percorso 127

CAPITOLO 7 CONCLUSIONI E SVILUPPI FUTURI 129

71 Risultati raggiunti 130

72 Progetti futuri 131 721 Modifiche meccaniche 131 722 Miglioramenti Hardware 132 723 Miglioramenti Software 133

73 Conclusioni finali 133

BIBLIOGRAFIA 135

APPENDICE A 139

i Sensori nei robot a zampe disponibili sul mercato 140

Indice 6

ii Dead Reckoning Stima della posizione 140 ii1 Encoder Ottici 141 ii2 Encoder ottici incrementali 141

ii21 EL30 E-H-I Eltra srl 142 ii3 Encoder ottici Assoluti 142

ii31 Sensori ottici CORRSYS-DATRON 143 ii32 EAM Parallelo-SSI Eltra srl 144

ii4 Sensori Dopler 144 ii41 Robot Italy SRF04 146

iii Heading Sensor 146 iii1 Giroscopio meccanico 146

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice FT445533 147 iii12 Futaba Giroscopio FP GY 240 AVCS 149

iii2 Giro-bussola 149 iii3 Giroscopio-Girobussola a fibre ottiche 150

iii31 La funzione giroscopica 152 iii4 Giroscopio piezoelettrico 154

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03 155 iii42 Giroscopio Piezoelettrico Enc-03ja 155

iv Sensori geomagnetici 156 iv1 Bussola magnetica meccanica 157 iv2 Bussola a effetto Hall 158

iv21 1490 Digital Compass Sensor 159 iv3 Bussola a magnetoreversiva 159

iv31 Philips bussola AMR 160 iv4 Bussola magnetoelastica 160

iv41 Metglas 2605S2 161

v Sensori per la modellizzazione dellrsquoambiente 162

vi Sensori di distanza 162 vi1 Sensori basati sul tempo di volo 162

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502 163 vi2 Sensore telemetro a sfasamento 165

vi21 LIDAR lsquoLight detection and Rangingrsquo 165 vi3 Triangolazione 166

vi31 IFELL Laser e Sistemi Srl 168

INFORMAZIONI SUI PRODUTTORI 169

APPENDICE B 170

Indice 7

i Manuale drsquouso 171

ii Codice generato 172 ii1 Menu principale 172 ii2 Confronto andatura quasi-stabile vs quasi-dinamica 173 ii3 Calcolo della cinematica inversa 180 ii4 Analisi del modello dinamico 184 ii5 Map building 187

ii51 Espansione degli ostacoli 187 ii52 Calcolo del percorso 189 ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente 192

ii6 Collegamento diretto con il robot fisico 196 ii61 Creazione degli angoli da trasmetter agli attuatori 196 ii62 Coollegamento diretto di comunicazione con la PIC 198

Introduzione

Introduzione 9

Negli ultimi decenni continue evoluzioni scientifico tecnologiche hanno

portato ad un radicale cambiamento nella vita umana e nella realizzazione di

progetti un tempo considerati utopici Dalle ldquoali di Leonardordquo allrsquoemulazione

della natura lrsquouomo continua ad osservare lrsquoambiente che lo circonda e

analizzandolo accuratamente egrave riuscito a costruire macchine indipendenti che lo

aiutano nelle azioni quotidiane o che semplicemente lo supportano nelle abitudini

della vita di ogni giorno

Anche se lo stato dellrsquoarte della robotica egrave ancora lontano dal realizzare

dispositivi cosigrave complessi il notevole incremento della potenzialitagrave di calcolo

permette oggi la costruzione di robot dotati di un certo grado di autonomia Un

robot puograve essere considerato autonomo tanto piugrave egrave in grado di svolgere attivitagrave

individuali senza ausili esterni e di prendere decisioni proprie di fronte a

problematiche semplici

In tale contesto di ricerca svolge un ruolo essenziale lo studio delle

interazioni tra il robot e lrsquoambiente circostante Le fasi di ricerca e sviluppo si

possono suddividere in tre fasi principali

bull lrsquoosservazione del naturale comportamento dellrsquoanimale in esame e

lo stretto contatto tra le sue abitudini(camminata corsa trotto) e il

suo habitat

bull la costruzione del progetto e lo sviluppo del modello rendendo il

piugrave possibile congruente le caratteristiche fisiche naturali con la

strumentazione a noi disponibile

bull la realizzazione pratica del progetto

Introduzione 10

Figura 1 Fasi di Osservazione Progettazione Realizzazione

Lrsquoemulazione del movimento e la reazione del robot agli impulsi che

dovragrave essere generata deve risultare il piugrave possibile simile al comportamento

naturale

Unitagrave funzionali di un robot mobile

Un primo approccio con un robot mobile ci porta ad individuare le parti

fondamentali che lo compongono Possiamo effettuare una prima distinzione tra

ciograve che deve necessariamente essere on-board1 e ciograve che invece puograve essere svolto

anche da terminale remoto

Oltre ad attuatori e sensori che obbligatoriamente devono trovarsi sul

robot sarebbe importante che anche lrsquounitagrave di controllo si trovi su di esso affinchegrave

1 Posto sulla struttura meccanica del robot

Introduzione 11

i tempi di risposta e le dispersioni nel canale di comunicazione vengano

minimizzate Da notare lrsquoimportanza di encoder2 che permettono una stima

odometrica3 della posizione e chiudono lrsquoanello di retroazione dei motori questo

tipo di controllo egrave chiamato dead-reckoning[1]

Sul nostro robot attualmente sono posizionati solamente i motori di

attuazione e un sensore di pressione posto sotto una delle quattro zampe si

prevederagrave in futuro lrsquoincremento di sensori di cui viene fornita in seguito una

specifica (Apendice A) Questa miglioria sensoriale giagrave prevista nel progetto da

noi svolto permetteragrave la sostituzione di valori finora forzati come inputcon veri e

propri feedback4

Lrsquounitagrave di map-building che ora egrave delegata ad un compiuter remoto ha il

compito di generare le traiettorie e spedire i valori alla Pic di controllo dei

motori5 le sue potenzialitagrave potranno essere incrementate da dati sensoriali di

visione o contatto con lrsquoambiente esterno

Sensori che permettono una corretta scansione dellrsquoambiente possono

essere di molte tipologie tra i piugrave comuni sonar scanner laser telecamere fisse o a

bordo (anche se egrave molto importante tenere in considerazione il peso di tale

dispositivi) Lrsquoutilizzo di sensori differenti e algoritmi di visione richiedono un

grosso apporto di calcolo computazionale che se fatto on-board potrebbe

compromettere il funzionamento real-time6

2 sensori di rilevamento della posizione 3 forniscono posizione in base ai dati sensoriali a disposizione 4 dati sensoriali percepiti dallrsquoambiente e rinviati allrsquounitagrave di controllo 5 scheda di interfacciamento Pc-attuatori 6 reazione in tempi reali agli impulsi

Introduzione 12

Figura 2 Unitagrave funzionali che caratterizzano un robot mobile autonomo

Ulteriore elemento utile in un robot mobile egrave la sua localizzazione che

solitamente richiede calcoli con rilevatori odometrici Nel nostro progetto ci egrave

stato di grande aiuto lo sviluppo con il sistema Matlab che mantenendo in

memoria variabili matriciali ci ha reso possibile il monitoraggio del baricentro nei

singoli movimenti Tramite queste valutazioni siamo riusciti a ricavare i valori

dellrsquoerrore durante lo spostamento nelle mappe locali dellrsquoambiente create[2][3]

Una volta noto lrsquoambiente e la posizione degli ostacoli (consideriamo

lrsquoambiente noto) si passa a pianificare il moto al fine di svolgere i compiti richiesti

dallrsquoutente[4][5] Gli algoritmi di pianificazione si dividono in due grandi

categorie

bull generativi noti lrsquoambiente e la posizione del robot generano

traiettorie che minimizzano i percorsi e i tempi di reazione

aggirando gli ostacoli[6][7]

bull reattivi adattano il moto del robot a nuovi ostacoli

In generale occorre combinare entrambe le tipologie utilizzando un

pianificatore generativo sulla mappa dellrsquoambiente a disposizione e un algoritmo

Introduzione 13

reattivo nella fase di inseguimento della traiettoria per rendere il robot pronto a

reagire a cambiamenti anche improvvisi dellrsquoambiente

Obiettivo del lavoro

Scopo di tale tesi saragrave quello di realizzare algoritmi per la camminata di un

robot quadrupede al fine di permettere la realizzazione di movimenti il piugrave

possibile reali e la creazione di ipotetiche traiettorie che il robot potragrave

intraprendere in ambienti noti a priori

Al fine di testare il corretto funzionamento dei nostri risultati ci siamo

posti come obiettivo la costruzione di ASGARD (Automatic Stable Gait of A Robot

quaDruped) robot quadrupede in progetto al Politecnico di Milano e di effettuare

prove reali sul campo

Robot quadrupedi richiedono una particolare e complessa analisi di

stabilitagrave ed uno studio approfondito sul controllo del movimento Con il nostro

progetto vogliamo garantire stabilitagrave statica e dinamica e controllare lo sforzo

reale dei motori da noi utilizzati Permettere in sintesi ad ASGARD di vedere la

luce e compiere i sui primi passi

Inoltre in questa tesi verranno sviluppati un algoritmo di map-building e il

pianificatore del moto generativo (non avendo a disposizione sensori di feedback

non possiamo implementare il reattivo) utilizzando algoritmi a contenuto calcolo

computazionale che permetteranno al robot di deambulare in un ambiente noto

senza sovraccaricare il sistema ed effettuando movimenti generati dal sistema in

real time scegliendo lrsquoopportuno passo da eseguire

Organizzazione della tesi

In questo lavoro discuteremo i metodi per modellare e analizzare robot

mobili la principale analisi si concentra su robot quadrupedi dotati di arti

Introduzione 14

autonomi fino ad arrivare allrsquoimplementazione di ASGARD (Automatic Stable

Gait of A Robot quaDruped) il robot del Politecnico di Milano Lo scopo egrave fornire

uno strumento di analisi di stabilitagrave statica e dinamica per la realizzazione di una

camminata in un ambiente noto e una prima struttura di algoritmi che in futuro si

occuperanno del controllo e delle iterazioni con il mondo circostante

Tematiche discusse nei successivi capitoli

Capitolo 1

Motivazioni che ci hanno portato alla scelta di costruire un robot

quadrupede e le sue strategie di camminate possibili

Capitolo 2

Una breve panoramica sui robot quadrupedi esistenti enfatizzando le loro

caratteristiche salienti in termini di posture e sensori e i loro algoritmi principali di

controlloal fine di delineare un adeguato quadro entro cui porre il robot del

Politecnico di Milano

Capitolo 3

Analisi delle caratteristiche meccaniche e funzionali di ASGARD

Capitolo 4

Definizione degli obiettivi fissati per il progetto e presentazione della

teoria necessaria per il corretto svolgimento

Capitolo 5

Descrizione della parte di implementazione del progetto dallrsquoapplicazione

della teoria esposta nel capitolo precedente alla scrittura del codice

Introduzione 15

Capitolo 6

Discussione dei risultati e su alcune proveeseguite a simulatore e su altre

misurazioni pratiche realizzate sul robot fisico

Capitolo 7

Migliorie possibili effettuabili in futuro e conclusioni finali dellrsquoautore

Appendice A

Ricerca eseguita su sensori disponibili sul mercato che potranno essere

integrati nel progetto

Appendice B

Presentazione del manuale di utilizzo e parte di codice significativa

generato in linguaggio Matlab 65

Capitolo 1 Sistemi di locomozione

Sistemi di locomozione 17

11 Scopi di studio della locomozione su zampe

Esistono diverse motivazioni che giustificano lo studio di robot su zampe

tre le principali[8] troviamo

bull mobilitagrave fondamentale caratteristica di un robot egrave riuscire a

lavorare e svolgere le sue mansioni in tutte le tipologie di

terreni da quelli lisci ai piugrave ostili in presenza di scale o gradini

e riuscire se possibile ad evitare ostacoli non solo aggirandoli

ma anche scavalcandoli Veicoli a ruote sono la soluzione

adeguata se si pensa a terreni piani o con inclinazioni continue

ma la struttura del nostro pianeta permette il loro utilizzo in

meno della metagrave delle terre emerse Se invece pensiamo alla

crosta terrestre essa egrave quasi completamente raggiungibile da

esseri viventi (uomini animali) dotati di gambe

bull punti di appoggio isolati che ottimizzano il supporto e la

trazione e non richiedono un continuo contatto con il suolo

come succede per le ruote

bull sospensione attiva che disaccoppia la traiettoria delle gambe

da quella del corpo rendendo possibile cioegrave lo spostamento

senza sollecitazioni del carico nonostante pronunciate

sconnessioni del terreno

Queste caratteristiche in molti casi rendono indipendenti le capacitagrave del

robot dallrsquoasperitagrave del percorso dando la possibilitagrave di maggiore efficienza in

velocitagrave anche in ambienti molto ostili

Analizzare le spiccate doti di agilitagrave e mobilitagrave di animali non risulta un

facile compito essi sono in grado di muoversi velocemente e con sicurezza nelle

piugrave svariate condizioni ambientali

Sistemi di locomozione 18

Figura 3 Particolari posture animali in condizioni ambientali ostili

Nostro principio di studio risulta essere cercare metodologie di emulazione

di tali doti e successivamente applicarle a robot quadrupedi cercare i compiti

simili di locomozione e tramite questi risultati percepire problematiche e trovare

soluzioni per la mobilitagrave di strutture artificiali[9]

In particolare un robot su zampe necessita di

bull controllo del movimento dei giunti

bull controllo dellrsquoequilibrio

bull ciclicitagrave dellrsquouso delle zampe

bull punti di appoggio noti

bull calcolo della possibile traiettoria percorribile

I sistemi legged7 risiltano in diversi ambiti molto utili ai settori di ricerca

dallrsquoIntelligenza Artificiale e Sistemi di cooperazione multi-agente a semplici

robottini in grado di svolgere un unico ma non meno significativo task8 come la

pulizia di una superficie la raccolta di un oggetto o la perlustrazione di aree

pericolose con la relativa raccolta dati

7 termine inglese per rappresentare sistemi robotica dotati di quattro zampe 8 compitoincaricoobiettivo da raggiungere

Sistemi di locomozione 19

12 Differenze e analogie tra locomozione a zampe e su ruote

La principale caratteristica che diversifica le due tipologie di robot egrave la

gestione dei movimenti Per i sistemi legged la realizzazione di un passo include

al suo interno un insieme di variabili di controllo per il movimento corretto dei

giunti e la corretta sincronizzazione dei movimenti delle zampe al fine di ottenere

una adeguata andatura

Figura 4 Rover a ruote Figura 5 Rover Spirit sulla superficie di Marte[10]

Durante il passo inoltre bisogna mantenere il controllo sulla stabilitagrave e

sullrsquoequilibrio (controlli del tutto assenti in un robot a ruote) monitorare i valori

di torsione dei singoli motori accertandosi che essi non superino le soglie limite e

valutare il punto di appoggio futuro Una volta costruito un passo il compito

ricade nel continuare a ciclarlo opportunamente al fine di portare a termine il

compito richiesto superando eventuali dissestamenti del terreno o ostacoli

Un robot a ruote invece egrave in grado solo di muoversi su terreni lisci e

richiede un maggior spazio per effettuare semplici manovre Di fronte a ostacoli

anche minimi il robot a ruote dovragrave effettuare la pianificazione di una traiettoria

Sistemi di locomozione 20

per aggirare lrsquoostacolo e impiegheragrave un tempo di reazione maggiore Se un robot

a ruote si troveragrave di fronte ad uno ostacolo saragrave costretto ad attivare calcoli

opportuni che gli permetteranno di costruire una strada alternativa per il

superamento dellrsquoimprevisto Un robot a zampe invece potragrave attivare gli attuatori

al fine di scavalcare se possibile lrsquoostacolo

Figura 6 Diverse strategie per oltrepassare un ostacolo

Altro aspetto di differenziazione tra le due tipologie di robot risulta essere

la mobilitagrave della piattaforma Alcune volte risulta essere utile mantenere il carico

in una inclinazione prestabilita (ad esempio il trasporto di un grave o il

mantenimento del centro ottico di una telecamera) Nei robot a ruote il corpo egrave

solitamente solidale con lrsquoasse delle ruote e si mantiene ad una distanza fissa dal

terreno seguendolo in ogni sua inclinazione Questo risulta essere una

caratteristica utile su terreni pianeggianti ma risulta sconveniente su terreni

curvilinei In questa circostanza risulterebbe utile disaccoppiare la piattaforma con

le ruote motrici al fine di mantenere costante lrsquoinclinazione del corpo principale

Questo disaccoppiamento egrave giagrave presente nella struttura dinamica del robot

a zampe dove la postura della piattaforma risulta essere la somma di due

contributi quali

bull scelta dei punti di appoggio

bull posizione cinematica assunta da ogni singola zampa in riferimento

alle caratteristiche del terreno

Sistemi di locomozione 21

Attraverso cioegrave la posizione delle zampe il robot egrave in grado di

ammortizzare le sconnessioni del terreno e dentro i limiti cinematici e di

mantenere lrsquoasse prescelto

Figura 7 Mobilitagrave della piattaforma

Esistono comunque analogie che accomunano le due strutture di robot

esistenti la principale risulta essere la ciclicitagrave dei movimenti Nei sistemi legged

dopo aver trovato un corretto movimento per la realizzazione di un passo egrave da

ricercare il periodo in cui esso dovragrave ripetersi al fine di ottenere una camminata

con andatura corretta Per un robot a ruote il periodo risulta invece essere

semplicemente la rotazione della ruota attorno al proprio asse A paritagrave di

ripetizione di un ciclo il risultato deve essere il ritorno nella posizione iniziale e

lrsquoincremento dello spazio di lavoro

Ulteriore analogia egrave il sistema odometrico Su ogni robot sono solitamente

posizionati un discreto numero di encoder per il rilevamento della posizione Nei

robot a ruote essi sono posizionati sullrsquoasse delle ruote mentre nei legged essi

sono inseriti nelle articolazioni dove sono posizionati i motori Si possono notare

differenze consistenti a livello di calcoli effettuati ma entrambi forniscono come

risultato la posizione effettivamente raggiunta Di particolare interesse per i

calcoli egrave la sequenza di comandi dati in input al variare di essi varia la postura

finale assunta

Sempre riguardo lrsquoodometria altra caratteristica comune egrave il calcolo

dellrsquoerrore esso viene calcolato in relazione ai valori di feedback dei sensori Si

puograve presentare di due tipologie

Sistemi di locomozione 22

bull sistematico dovuto a caratteristiche proprie meccaniche del robot

bull non sistematico dovuto alle iterazioni con lrsquoambiente circostante

Errori e cause di errori verranno trattati nei capitoli successivi

13 Analisi Trot gait di quadrupedi

Tra gli esseri viventi dotati di zampe presenti in natura[11] la nostra

analisi si concentra su animali che deambulano su 4 arti Essi rappresentano una

classe animale che sfrutta particolari doti fisiche e mentali per regolare la stabilitagrave

del corpo e lrsquoagilitagrave dei movimenti

Vengono presentate di seguito alcuni gait9 di quadrupedi su terreni piani e

lrsquoanalisi dei principali fattori che ne determinano le caratteristiche e le prestazioni

in termini di velocitagrave[12]

Le principali caratteristiche sullo studio di andature sono

bull Periodicitagrave il moto prevede la sequenza ciclica del movimento di

ogni singola zampa (passo)Ogniuna di esse egrave regolata da tre

variabili di giunto ciascuna delle quali segue a sua volta una

traiettoria periodica Complicazioni ulteriori emergono se si

considerano virate o terreni sdrucciolevoli

bull Stabilitagrave caratteristica di maggiore importanza nel caso di

locomozione a zampe essa egrave assicurata quando il baricentro del

robot cade allrsquointerno del poligono di stabilitagrave ovvero quando il

margine di stabilitagrave egrave maggiore di zero Il margine di stabilitagrave

dipende dalla posizione in cui il robot si trova se fermo o in

movimento Se il robot egrave fermo tale margine si calcola come la

distanza piugrave breve dal baricentro al perimetro del poligono di

9 Andatura con passi specifici

Sistemi di locomozione 23

stabilitagrave in qualsiasi direzione durante il moto si considerano solo

le distanze nella direzione del moto (margine di stabilitagrave

longitudinale)

bull Traiettoria della zampa la traiettoria dellrsquoorgano terminale di una

zampa (piedino) si compone di tre fasi principali

bull alzata

bull avanzamento

bull appoggio

la prima ha il compito di sollevare il piede da terra la seconda

permette lrsquoavanzamento della zampa ed infine nella terza il piede

viene riposizionato a terra nella posizione base per reiterare il

procedimento

In relazione al profilo scheletrico di un vertebrato mammifero

generalizzato esso egrave in grado deambulare in diverse andature[13]

Non troppo dissimile dallrsquoarchitettura di cani cavalli o gatti il nostro robot

presenta perograve lrsquoarticolazione della spalla ruotata di 90 gradi rispetto al mammifero

comune questo gli permette di mantenere un notevole grado di stabilitagrave in quanto

incrementa il suo possibile convex hull10 ma ci obbliga a studiare un nuovo tipo

di movimento per il passo base

Inoltre il piede di appoggio risulta essere di notevoli dimensioni rispetto

alla zampa al fine di sopportare ottimamente il peso del corpo sovrastante

In base alla stabilitagrave durante il movimento la andatura di un 4-legged puograve

essere classificata in tre diverse classi principali

bull andatura quasi statica

bull andatura quasi dinamica

bull andatura dinamica

10 poligono che rappresenta la base drsquoappoggio

Sistemi di locomozione 24

131 Studio andatura quasi-statica

Una andatura si dice quasi-statica se il centro di massa della nostra

struttura cade allrsquointerno del poligono di stabilitagrave che si viene a creare

congiungendo i punti di appoggio Con questa tipologia di camminata siamo certi

che il robot assorbiragrave le possibili perturbazioni del moto con un piugrave ampio

margine di stabilitagrave

uesta andatura egrave quella riprodotta in laboratorio sul nostro soggetto le

ragioni che ci hanno portato a questa scelta oltre ai vantaggi precedentemente

citati sono

bull moderata velocitagrave

bull buona risposta in tempo degli attuatori

Per implementare le fasi di camminata abbiamo analizzato ed elaborato il

gait 4-time11 di un mammifero comune essa si basa su quattro movimenti un LF

(di sinistra-anteriore) un RR (di destra-posteriore) una RF (di destra-anteriore)

un LR (di sinistra-posteriore) quindi una ripetizione

In questo movimento si noti che lrsquoequilibrio e il supporto egrave effettuato dal

LR+RF ldquodiagonalerdquo mentre i piedini di RR e di LF sono sospesi [ posizioni 1 2 ]

e dalla diagonale opposta per gli altri 2 piedini [ posizioni 5 6 ]

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

11 Gait 4-time camminata divisa in quattro fasi

Sistemi di locomozione 25

Figura 8 Nei nove diagrammi viene descritta la completa sequenza di camminata

partendo con la zampa sinistra Le posizioni 1 e 2 mostrano la diagonale destra 3 diagonale

destra e anteriore sinistra 4 laterale sinistra 5 e 6 diagonale sinistra 7 diagonale sinistra e

anteriore destra 8 laterale destra 9 ritorno nella posizione di partenza

Questa andatura presenta un tipico movimento sinusoidale del baricentro

del corpo nel piano trasversale

In base alla configurazione del nostro robot esso non presenta una colonna

vertebrale snodabile lrsquoanalisi prodotta ci ha potato alla creazione di una andatura

che non modifica lrsquoasse su cui giace il centro di massa

132 Studio andatura quasi-dinamica

La seconda classe di camminata raggruppa andature per cui la proiezione

del centro di massa cade in alcune fasi del passo sul lato del poligono di stabilitagrave

Sistemi di locomozione 26

In queste situazioni un incorretto posizionamento degli attuatori o una

minima perturbazione potrebbe causare una perdita di stabilitagrave per questo bisogna

intervenire in tempistiche ridotte trovando soluzioni che riducano gli effetti

La velocitagrave che si riesce ad ottenere deriva da un passo di camminata

leggermente piugrave ampio eseguito in un tempo minore di frame12 pur mantenendo

quasi inalterate le fasi di esso

133 Studio andatura dinamica trotto

La classe di andatura dinamica rappresenta invece lrsquoandatura piugrave veloce

presente in natura[14] essa si basa sul concetto di tempo di volo in cui solo due

zampe o addirittura tutto il corpo non tocca il terreno andatura tipica nella corsa

di mammiferiVenendo a mancare il triangolo di appoggio bisogna trovare un

abile compromesso tra inerzia velocitagrave e potenza muscolare al fine di evitare la

perdita di equilibrio e lo slittamento delle zampe sul terreno

12 istanti temporali in cui si attua lrsquoanalisi completa

Sistemi di locomozione 27

Figura 9 Nelle posizioni 1 e 3 vengono mostrate la diagonale destra e sinistra come

supporto al trotto Le posizioni 2 e 4 mostrano il momento di flying trot che egrave raramente

osservabile a causa della velocitagrave dei movimenti Le posizioni 5 e 6 mostrano un passo di

corsa piugrave tranquillo che puograve essere eseguito da un cane stanco o non troppo motivato

Capitolo 2 Stato dellrsquoarte dei four legged robot

Stato dellrsquoarte dei four legged robot 29

21 Panoramica dei Robot quadrupedi esistenti

In questo capitolo verragrave presentata una carrellata dei moderni sviluppi

riguardanti la 4-legged robotics13

Proponiamo i progetti piugrave significativi a cui ci siamo riferiti per lrsquoanalisi e

lo sviluppo della camminata e i robot piugrave moderni che vengono utilizzati come

banchi di prova per progetti di intelligenza artificiale e multi-collaborazione che ci

potranno essere utili per evoluzioni future del nostro ASGARD

211 Collie-1 e Collie-2

Giagrave dalle prime ricerche nellrsquoambito della robotica umanoide la

realizzazione di una camminata naturale egrave stata ampiamente presa in

considerazione Nella seconda metagrave degli anni ottanta abbiamo trovato il primo

utilizzo di DC servos per la realizzazione di prototipi per la camminata dinamica

Collie-1 e la sua evoluzione Collie-2[15] Basandosi sul concetto di camminata

suddivisa come statica e dinamica lo studio ha messo in evidenza come la

camminata dinamica richiede un surplus di energia e una maggior velocitagrave di

esecuzione ponendo particolare interesse ai valori di stabilitagrave velocitagrave massima e

consumo energetico che sono alcuni dei parametri anche da noi presi in

considerazione nel nostro progetto Nello sviluppo di Collie le relazioni tra questi

criteri e i parametri (gait speed period stride length of the leg joint angles etc)

hanno portato alle seguenti deduzioni riguardanti al camminata dinamica

a) Minore egrave il periodo in cui avviene la camminata migliore egrave la stabilitagrave del

quadrupede

Ersquo desiderabile camminare con un lungo periodo e compiendo ampi passi

per riuscire ad accrescere la velocitagrave massima

13 settore della robotica che si occupa di robot a 4 zampe

Stato dellrsquoarte dei four legged robot 30

b) Crsquoegrave un periodo in cui la velocitagrave egrave massima

c) Crsquoegrave un periodo in cui si minimizza il consumo energetico per fornire

velocitagrave

d) Trot gai14t egrave desiderabile quando la prioritagrave egrave in primo piano rispetto al

consumo energetico

Pace gait15 egrave raccomandata quando la prioritagrave energetica egrave al di sopra

della velocitagrave massima

Gli esperimenti per appurare la validitagrave di queste affermazioni sono stati

effettuati con il robot Collie-2 che fisicamente presenta 3 joint16 attorno allrsquoasse di

pitch (beccheggio) e 2 joint attorno allrsquoasse di roll (rollio) per ogni gamba con un

potenziometro montato per ogni gamba e motori DC servos sistemati sui 3 joint

sullrsquoasse trasversale e 1 joint sullrsquoasse sagittale

Figura 10 Collie 2 vista semi

frontale Figura 11 Collie 2 di

fronte

Figura 12 camminata vista

laterale

14 andatura veloce di trotto 15 camminata tranquilla da crocera non veloce 16 giunto

Stato dellrsquoarte dei four legged robot 31

212 Quadrupede MIT

Realizzato al MIT (Massachusset Institute of Technology) negli anni 1984-

1987 [16] egrave composto da un unico grado di libertagrave per zampa a cui si aggiunge un

meccanismo a basso livello di coordinazione del piedino Ersquo stato sviluppato per

esplorare il funzionamento su quatto zampe e le transizioni tra tipologie diverse di

gait quali il trottino (accoppiamento zampe diagonali) pacing (accoppiamento

laterali) bounding (accoppiamento anteriore posteriore) fornendo consistenti

informazioni sulle diverse posture[17]

Figura 13 Immagine laterale camminata

robot dequadrupe del MIT

Figura 14 basato su llo stesso

meccanismo del robot del MIT Scout

prodotto allrsquoumiversitagrave di Monteal

sviluppa ampliamente il concetto di

bounding gait[18]

213 GEO

Iniziata la costruzione del progetto nel 1994 a USC GEO I [19]

presentava due grandi innovazioni una spina dorsale flessibile e zampe

riconfigurabili Queste due caratteristiche permettono al robot di emulare la

camminata di una salamandra cioegrave di far seguire al proprio baricentro un

andamento sinusoidale quando invece una zampa egrave posizionata sotto il corpo il

robot puograve deambulare come un comune mammifero quale ad esempio il cane

Stato dellrsquoarte dei four legged robot 32

Questa particolare possibilitagrave di cambiamento di tipologia di camminata egrave

rimasta nellrsquoevoluzione del modello GEO II che risulta essere molto piugrave leggero

del suo predecessore dotato si sensori di forza nei piedi e possibilitagrave di

interazione con il mondo esterno tramite reti neurali

Figura 15 GEO I nel superamento di un

ostacolo

Figura 16 GEO II in posizione base

214 Quadrupede Kimura lab

Dal Giappone e piugrave precisamente dal laboratorio di Kimura[20]

compaiono i robot piugrave avanzati in grado di camminare su terreni estremi quali

ciottolati erbe sparse o pavimentazioni sconnesse utilizzando sensori di visione I

principali in evoluzione sono Tekken-II azionato da servomotori e pilotato

manuale usando un regolatore radiofonico Futaba Le particolaritagrave di questo robot

sono il giunto della caviglia passivo con il meccanismo molla-smorzatore17 il

posizionamento di un meccanismo della molla intorno al giunto del ginocchio

dellrsquoanca al fine di ridurre il consumo di energia Sul corpo presenta diversi

sensori Tasso-girobussola per 3 ascie e 2 inclinometri per le ascie del rullo e del

passo 1 sensore per il contatto di asse egrave fissato su ogni piedino Della stessa

famiglia adatti perograve a terreni scoscesi e ondulati ricordiamo inoltre Patrush I e

Patrush II rispettivamente degli anni 2000 e 2001

17 principio fisico che attenua le sollecitazioni e incamera energia che puograve essere

successivamente sfruttata

Stato dellrsquoarte dei four legged robot 33

Figura 17 Patrush I vista

semifrontale

Figura 18 Tekken II vista laterale

22 Algoritmi di controllo CPG for four legged robot

Testato successivamente sulle potenzialitagrave di GEO II egrave stato realizzato nel

2002 il modello CPG (Central Pattern Generation)[21] che sostituisce lrsquounitagrave

centrale del controllo del sistema nervoso presente negli animali Esso propone

che lrsquoadattamento di un animale allrsquoambiente circostante puograve essere modellizzato

come un modulo adattativo (AMs Adaptative Modules) che agisce su un sistema

distribuito di oscillazioni chiamate Adaptative Ring Rules (ARRs) che simulano

semplici riflessi Lrsquoutilizzo e la costruzione di questa rete neuronale ha mostrato

come un sistema puograve auto programmarsi attraverso interazioni con lrsquoambiente

Lrsquoadattamento fa emergere spontaneamente alcuni stati discreti come il

movimento del busto la scelta tra un passo corto e la camminata da crociera e le

coordinate per un singolo giunto

Il risultato di questo modello egrave che ha permesso a un quadrupede di

imparare a camminare in pochi minuti

Basandosi su innumerevoli trattati sullo sviluppo degli impulsi del sistema

nervoso dei mammiferi (Bekoff 1985Cohen 1988) Lewis egrave riuscito a riprodurre

una rete che tenta di emulare le fasi standard e principali del comportamento

Stato dellrsquoarte dei four legged robot 34

animale in relazione ad alcuni stimoli esterni e di riuscire a comunicare questi

impulsi nervosi ai relativi attuatori per creare lrsquoazione Tuttora diversi studi sono

ancora in atto per perfezionare questa tecnica introducendo apprendimento per

rinforzo

Si puograve modellizzare il CPG come una rete di unitagrave funzionali chiamate

unit CPGs (uCPGs) Riferendosi alla figura 18 2 uCPGs sono denominate con

Tw+ e Tw- insieme esse producono il coordinamento principale del robot e

giocheranno un ruolo base nellrsquoacquisizione della camminata Alle uCPGs sono

collegati archi che rappresentano il collegamento ai muscoli estensori delle

diverse articolazioni Questi archi rendono possibile quindi il collegamento delle

unitagrave del busto con quelle del ginocchio etc

Lrsquooutput dei muscoli viene trasformato attraverso una funzione di uscita in

comandi di movimento Questi a loro volta sono ricombinati per creare impulsi

compatibili con i servos dellrsquoancae del ginocchio

Sono introdotti nella rete ulteriori parametri che servono per adattare la

rete a diversi robot

Stato dellrsquoarte dei four legged robot 35

Figura 19Organizzazione del sistema di controllo Il sistema di controllo del robot

presenta una rete di uCPG Ogni cerchio presenta un uCPGs Connessionitrasmissione di

informazioni sono visualizzate come freccie Ogni funzione Ψ converte una informazione in

comandi per i motori I comandi dei motori sono combinati insieme per produrre una

sequeza di livelli di posizione per ogni anca e ginocchio Abbreviazioni KFmuscolo flessore

ginocchio KEmuscolo estensore ginocchio HEmuscolo estensore dellrsquoanca HFmuscolo

flessore dellrsquoanca TW+torsione positivo TW-torsione negativo

Per definire meglio il controllo sono stati realizzati schemi che si basano

su controlli di posizione sulla reattivitagrave dei riflessi e sullrsquoadattamento della

torsione al modulo ambiente

Per realizzare lrsquoultimo modello egrave necessario introdurre ARRs cioegrave il

modulo adattativo dellrsquoambiente attraverso un ulteriore unitagrave computazionale

costituita da tre componenti

Stato dellrsquoarte dei four legged robot 36

Figura 20 Lrsquouso di un innato interno modello per lrsquoadattamento di CGPs La figura

mostra i componeti di un AM

Il primo componente egrave il Forward Model il quale usa una efficiente copia

di una uCPGs per predire il feedback sensoriale il secondo il Comparison egrave a tutti

gli effetti un comparatore tra il feedback sensoriale e il feedback atteso il terzo egrave

una regola che utilizza il risultato della comparazione per modulare la uCPGs in

questione

LrsquoARRs genera un segnale di output che viene indirizzato agli attuatori o a

semplici circuiti che seguono per il controllo sensoriale e rimane in attesa di

ricevere un segnale di ritorno proveniente dai sensori Il segnale di output puograve

anche essere emesso nellrsquoambiente come decisone di movimento per eventuali

robot ad esso sottomessi La creazione di movimenti puorsquo cosigrave migliorare

introducendo nuovi modelli di controllo quali adattamento della lunghezza del

busto per il coordinamento delle gambe e fase di aggiustamento

Questi modelli sono stati realizzati su robot che presentano caratteristiche

mostrate nella seguente figura e che possono essere ritrovate in GEO II

Stato dellrsquoarte dei four legged robot 37

Figura 21 Postura dei Principali Rilessi Tre tipi di simmetria sono applicati per la

distribuzione del pesoDiagonal comparazione dei piedi diagonali Anteriore verso posteriore

comparazione dai piedi anteriori ai posteriori e sullo Stesso lato comparazione dei piedi

sulla destra rispetto quelli sulla sinistra Il numero vicino ad ogni piede denota il numero del

piede

La parte per noi piugrave interessante risulta essere la postura dei riflessi statici

I risultati mostrano come viene distribuito il peso del robot sui piedi di appoggio

Inizialmente quando il robot egrave appoggiato completamente al suolo il peso risulta

essere equamente distribuito In altri casi appariranno disturbi causati da carichi

aggiuntivi come posizione del cavo di alimentazione o piugrave semplicemente alzata

della zampa per compiere un passo

Stato dellrsquoarte dei four legged robot 38

Figura 22Postura dei Riflessi Grafico che mostra la distribuzione del peso rulle

zampe del robot

Questo grafo ci rappresenta come la variazione della postura del robot

influenzi i carichi su ciascuna zampa nella nostra analisi ritroveremo un grafico

simile al precedente quando analizzeremo le forze agenti sui motori nel modello

di Newton-Eulero GEO II presenta perograve un vantaggio considerevole durante i

movimenti il robot attua una fase di ldquoaggiustaggiordquo in cui riassesta il busto per

riequilibrare la distribuzione del peso su tutte le zampe non creando scompensi

23 Robocup e Sony Aibo

RoboCup[22] egrave unrsquoiniziativa internazionale di formazione e di ricerca Egrave

un tentativo di promuovere lrsquoAI18 e lrsquoautomatismo intelligente Basati sul concetto

che una squadra di robot giochi a soccer allrsquointerno di ambienti reali o simulati le

tecnologie che vengono coinvolte devono comprendere nei loro progetti i principi

di agenti autonomi collaborazione multi-agente aquisizione di strategie

ragionamento in tempo reale e automatismo

18 Intelligent Agents

Stato dellrsquoarte dei four legged robot 39

Ersquo in RoboCup che si egrave vista la prima squadra fornita di gambe

Largamente utilizzati per la realizzazione di sistemi multiagenti dotati cioegrave di

complessi programmi di intelligenza artificiale sono i famosi Aibo Sony

Figura 23 Robot Aibo Sony durante una partita alla Robocup

Aibo egrave il miglior prodotto della Sony 4-legged robot essa coinvolge le piugrave

moderne tecnologie per concepire un amico completamente autonomo per

accompagnare ed intrattenere lrsquouomo nella vita giornaliera

Il centro di intelligenza artificiale di Aibo egrave il software Mente2 situato su

una memoria stick removibile Esso controlla il suo comportamento le sue abilitagrave

e le relative caratteristiche che possono essere incrementate con un corretto

addestramento da parte dellrsquoutente Aibo infatti implementa al suo interno un

algoritmo di apprendimento per rinforzo

Nella vita giornaliera questo software gli permette di intrattenere e

comunicare con chiunque riconoscendo intelligentemente i volti e le voci dei suoi

padroni

Per le sue particolari proprietagrave quali vedere sentire registrare suoni

oggetti e facce e riflettere una vasta gamma delle emozioni attraverso la relativa

faccia Condur-guidata19 Aibo egrave in grado di familiarizzare con ogni tipo di

ambiente ambiente e trasformarsi in ogni senso in un individuo vero e unico

19 pilotati da software intelligenti diversi led rappresentano espressioni emotive

Stato dellrsquoarte dei four legged robot 40

231 Storia

Ma vediamo come nasce Aibo[23]Le sue radici risalgono agli inizi degli

anni novanta quando gli ambienti tecnologici erano agli albori riguardo la

creazione di applicazioni per lrsquointrattenimento umano Fu Dr Doi il capo dell

Sonyrsquos Digital Creature Lab ad implementare in un unico automa i nuovi

progressi in termini di processori intelligenza artificiale riconoscitori vocali e

tecnologie di visione al fine di creare un robot autonomo

Durante la fase iniziale nel 1992 gli ingegneri della Sony progettarono

alcuni importanti cambiamenti radicali Nei primi anni novanta robot con camere

e ruote erano riprogrammati per ogni attivitagrave o task in cui essi venivano impiegati

I nuovi progetti includevano la capacitagrave di un robot di deambulare su zampe e

lrsquointerazione con programmi di IA capaci di interagire con alcuni organi sensoriali

come il tatto la vista e il suono Solo verso il 1997 il primo prototipo portograve alla

luce gli enormi sforzi di ricerca e sviluppo Dr Doi indirizzograve tutta la sua ricerca

nella costruzione e nel design di un amichevole robot autonomo Il suo primo

prototipo aveva sei gambe ed era il primo passo per la creazione di un robot a

zampe Dopo questo primo rudimentale modello il team Sony studiograve un design

innovativo e analizzograve ciograve che il robot poteva o non poteva fare per incrementare le

potenzialitagrave celebrali ed espandere le funzionalitagrave hardware e software

Lrsquooriginale modello Aibo ERS-110 fu presentato nel 1999 e rapidamente

si diffuse in tutto il mondo con lo slogan di essere un grande compagno di giochi e

intrattenimento entrando anche a far parte del guinnes dei Primati Lrsquo Europa vide

la sua apparizione il 26 Ottobre 1999 Solo un mese dopo dallrsquoenorme successo

riscontrato fu presentato un ulteriore modello ERS-111 per il target mondiale

Nellrsquoottobre del 2000 venne alla luce la seconda generazione di Aibo ERS-

210 che inglobava miglioramenti di mobilitagrave sensori di tatto led facciali

programmi di risposta sensoriale al mondo esterno tramite espressioni visive

funzioni di memorizzazione delle parole e riconoscitore vocale[24]

Stato dellrsquoarte dei four legged robot 41

I modelli LATTE e MACARON (ERS-311 a ERS-312) entrarono a far parte

della famiglia nel Settembre 2001 i loro nomignoli li rendono dolci e adorabili da

coccolare includendo comunque tutte le caratteristiche dei loro predecessori

Lrsquo8 Novembre 2001 egrave nato lrsquoultimo membro della famiglia Sony che

include le piugrave sofisticate performance e capacitagrave Il modello ERS-220 dotato di un

look futuristico presenta al suo interno una moltitudine di azioni altamente

avanzate e un alto numero di luci e sensori che lo fanno diventare il modello piugrave

sofisticato di robot quadrupede sul mercato[25]

Stato dellrsquoarte dei four legged robot 42

Sviluppo dei modelli Aibo dai primi anni novanta a oggi

Robot Sony Aibo modello a sei zampe

Robot Sony Aibo ERS-110

Robot Sony Aibo ERS-111

Robot Sony Aibo ERS-210

Robot Sony Aibo ERS-31x

Robot Sony Aibo ERS-220

Stato dellrsquoarte dei four legged robot 43

Figura 24 Zoom sulle caratteristiche presenti negli ultimi ritrovati

Specifikace

bull Head touch sensor bull Color Camera bull Stereo microphone bull Speaker bull Pause button bull Back sensor bull Lithium ion battery pack bull Tail sensor bull Memory Stick slot for AIBO bull PC card slot ndash bull slot pro PCMCIAPC-kartu

CPU 64-bitovy RISC procesor memory 32MB SDRAM weight - 15 kg ( baterie a Memory Stick (approx33lb)) dimension 152x266x274mm

Stato dellrsquoarte dei four legged robot 44

232 Descrizione dei sensori di Aibo

Il robot egrave stato progettato in modo da assomigliare ad un vero e proprio

essere vivente Esso egrave quindi dotato di svariati sensori mediante i quali puograve

comunicare con lrsquoambiente e reagire agli stimoli esterni[26]

Il sistema di controllo di Aibo utilizza i microprocessori per controllare

lrsquoinput dai dispositivi quali

bull Macchina fotografica del video a colori CCD20

bull microfono stereo

bull sensore termometrico

bull sensore infrarosso

bull sensore giroscopico di accelerazione

2321 Visione della macchina

Aibo ha una macchina fotografica digitale a colori montata nella sezione

ldquotestardquo I dati di immagine da questa macchina fotografica sono vitali nella

generazione dellrsquoesperienza interattiva tra il robot e il mondo Il video input egrave

analizzato per identificare lrsquooggetto o ldquoun punto caldordquo i motori robot spostano la

testa per dare lrsquoapparenza che il Aibo stia osservando Il robot inoltre egrave fornito di

un sensore infrarosso di distanza per rilevare gli ostacoli e per evitare di collidere

con essi

20 Charge Coupled Device attraverso una piastrina di silicio dotata di sensori le immagini

vengono digitalizzate in relazione a posizione colore e intensitagrave

Stato dellrsquoarte dei four legged robot 45

Figura 25 CCD camera a colori

Figura 26 Microfoni montati sugli assi

2322 Riconoscimento audio

Aibo egrave dotato di un accoppiamento di microfoni uno da ogni lato della

calotta cranica Questi generano unrsquoimmagine stereo del suono ricevuto che aiuta

nel localizzare la fonte di emissione Ersquo presente un regolatore di distanza per

permettere al robot di porre limiti per frasi da riconosce come ordini

2323 Tatto

Il rilievo sensibile al tocco sulla parte superiore della testa del Aibo egrave un

altro meccanismo attraverso cui riceveragrave input sensoriali In base a come questo

sensore egrave toccato un Aibo riceve i dati che registrano le risposte positive o

negative rispetto ldquoal suo comportamento precedenterdquo imitando le dimostrazioni

affetto o rimprovero

Stato dellrsquoarte dei four legged robot 46

Figura 27 Il bottone blu egrave uno switch per il sensore di pressione

2324 Movimento e sviluppo

Molti dei movimenti del Aibo sono simili a quelli di un animale domestico

un cane o un gatto Un Aibo accede e fa funzionare algoritmi di movimento che

dettano il moto delle relative membra controllando i motori siti nei piedini nella

testa e nella coda In modo indipendente e autonomo il robot si muove attraverso

parecchie fasi per un periodo di tempo Quando ldquosupportatordquo dal suono (comandi

o musica) riesce ad intraprendere movimenti a lui noti e ad imparare nuove

posture piugrave specializzate come sottoposto ad un vero e proprio addestramento

Figura 28 Particolare coda

Figura 29 Sensori del piedino

Capitolo 3 Architettura del robot ASGARD

Architettura del robot ASGARD 48

31 Configurazione del robot quadrupede

Analizziamo ora le caratteristiche del quadrupede realizzato presso lrsquoAir

Lab21 del Politecnico di Milano Nei paragrafi che seguono verranno descritte le

sue caratteristiche implementative che ne hanno permesso la realizzazione e il

controllo

Il progetto egrave stato avviato di recente di conseguenza il robot presenta

ancora notevoli problematiche di stabilitagrave e attuazione tramite servo attuatori

Hitec

311 Struttura Meccanica

La struttura di ASGARD egrave composta da parti ricavate da lastre di

policarbonato di cui presenteremo le caratteristiche nel paragrafo seguente e

incollate con speciale solvente

Il progetto della struttura di Marco Piralli [27] ha permesso al nostro robot

di avere una struttura simile a diversi esseri naturali

Figura 30 Progetto Robot completo di Pialli (sinistra) e dettaglio dellrsquoarticolazione (destra)

21 Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano sede

Leonardo sito in Lambrate

Architettura del robot ASGARD 49

Esso egrave dotato di 12 gradi di libertagrave tre per ogni zampa simili a quelli di

Aibo eccetto la spalla Questi gradi di libertagrave ci permettono di far compiere al

robot movimenti su tutti e tre gli assi La spalla in particolare ci permette tutti i

movimenti nel piano sagittale (detto anche piano laterale movimento fronte-retro)

Mentre le altre due articolazioni permettono movimenti nel piano frontale

(movimento lato-lato) e in quello trasversale

Questa serie di attuazioni da la possibilitagrave al robot di essere indipendente

nel movimento di ogni singola zampa e un ulteriore grado passivo nella zampa

permette di affrontare le differenti tipologie di terreno

Il collegamento tra attuatori e struttura risulta essere diretta senza cioegrave

lrsquoausili di tendini il rotore del motore egrave direttamente connesso alla articolazione

studiata per alloggiare il motore al suo interno

Figura 31 Particolari sulle locazioni e i sostegni degli attuatori nel giunto di

spalla(sinista) e ginocchio caviglia (destra)

Architettura del robot ASGARD 50

Giunto 9Giunto 12

Giunto 3

Giunto 6

Giunto 1

Giunto 2 Giunto 4

Giunto 5

Giunto 7

Giunto 8 Giunto 11 Giunto 10

Figura 32 Posizionamento dei giunti nel robot reale

312 Attuatori

Come illustrato in Figura 32 gli attuatori necessari al movimento di

ASGARD devono risultare leggeri e disposti in modo da non intralciare gli

eventuali movimenti I singoli attuatori sono costituiti da un motore servo da una

molla torsionale e da uno smorzatore senza essere perograve dotato di encoder

incrementale Con questo sistema non egrave possibile realizzare un preciso controllo

di posizione istante per istante ma egrave possibile ottenere una rigidezza di giunto non

infinita

I motori da noi utilizzati sono da 44 Kg bull cm HITEC HS 475HB Standar

Delux[28] abitualmente utilizzati in ambito di modellismo Le cui caratteristiche

sono qui sotto riportate

Architettura del robot ASGARD 51

Caratteristiche principali HS457 HB

Control system Operatine voltage range Operatine speed Stall torque Idle current Running current Stall current Dimensions Weight

+Pulse width control 1500usec neutral 48 V to 60 V 023 sec60(load) 018 sec60(no load) 44 Kg cm 55 Kg cm 74 mA (stopped) 77 mA(no load) 180 mA60 (load) 160 mA60(no load) 900 mA 388x198x36 mm 40 g

Figura 33 Attuatore HS 475 HB visto in sezione (sinistra) e come si presenta sul

nostro robot (destra)

Architettura del robot ASGARD 52

313 Materiale Policarbonato

Per la realizzazione del robot egrave stato scelto un materiale innovativo

resistente agli urti e alla trazione che puograve in questo modo resistere alle

sollecitazioni esterne e alle vibrazioni causate dalla camminata su terreni aspri

Oltre le potenziali caratteristiche di resistenza ha la dote di essere

estremamente leggero e di riuscire ad assemblarsi tramite apposito solvente

Questo permette alla struttura chimica di una superficie di scomporsi e di legarsi

in modo stabile alla struttura di una ulteriore lastra ricreando una struttura

compatta e indissaldabile

Proprietagrave policarbonato[29]

Carico limite di snervamento Nmmsup2 gt60

Resistenza alla rottura Nmmsup2 gt70

Allungamento a snervamento 6 hellip 8

Allungamento a rottura lt100

Modulo elastico Nmmsup2 2300

PROPRIETA MECCANICHE

Resistenza allrsquourto IZOD con intaglio Jm 700

Peso specifico gcmsup3 120

Indice di rifrazione 159

Assorbimento idrico (24h - 23degC) per immersione

036 PROPRIETA

FISICHE

Permeabilitagrave al vapore drsquoacqua (spessore 01m 24h)

gmsup3 15

Temperatura di resistenza al calore vicat VSTB

degC 145hellip150

Espansione termica lineare 1degC 67 X 10

PROPRIETA TERMICHE

Conducibilitagrave termica WmdegC 021

Architettura del robot ASGARD 53

32 ASGRAD in numeri

Le caratteristiche fisiche di Asgard si possono cosigrave riassumere

Busto

Larghezza 1210 cm

Lunghezza 2290 cm

Zampe

Link num 1 573 cm

Link num 2 675 cm

Link num 3 735 cm

Piede 350 x 415 cm

Spessore 4 mm

Peso

Corpo in policarbonato 660 g

Attuatori 480 g

Scheda Pic 20 g

Peso Complessivo 1180 Kg

Angoli dei giunti nella posizione di riposo

Giunto spalla 0deg

Giunto ginocchio 45deg

Giunto caviglia 45deg

Architettura del robot ASGARD 54

735 573 675

2290 122

121

Figura 34 Specifiche di ASGARD vista dallrsquoalto

1212 cm

Figura 35 Vista frontale di ASGARD

Architettura del robot ASGARD 55

33 Hardware

Attualmente non esiste un vero e proprio controllo on-board in grado di

generare traiettorie ma una PIC [30] sita su di esso il cui scopo egrave quello di

interpretare i segnali di comando in uscita dal nostro codice Matlab e di

trasformarli in impulsi (PWM) da inviare ai motori

Figura 36 Sistema di controllo dei motori Nellrsquoambiente Matlab sono stati inseriti dei comandi manuali di posizionamento il programma gestisce la generazione delle traiettorie e i comandi vengono inviati alla PIC Questa si occupa di generare e inviare ai motori gli impulsi che ne garantiscono il posizionamento

Unitagrave di controllo

Alimentazione

Porta seriale

Max 232

PIC

18F4x28 40L DIP

A T T U A T O R I

Figura 37 Schema a blocchi della PIC di controllo

Architettura del robot ASGARD 56

34 Software

La creazione del nostro algoritmo rappresenta la prima implementazione di

codice in merito al progetto del robot quadrupede in esame

Per il collegamento diretto e il pilotaggio di motori servo tramite la porta

seriale abbiamo usufruito di un codice elaborato precedentemente e implementato

sulla PIC

Questo programma egrave costituito da cicli di attesa da parte della PIC stessa

per la ricezione dei comandi e da un canale di ritorno in cui essa comunica al Pc

la corretta trasmissione dellrsquoimpulso

Una miglioria sullrsquoanalisi implementativi ci ha permesso di spingere la

velocitagrave di comunicazione fino a 14400 bitsec

Il nostro programma di analisi e simulazione dei passi analizza le

caratteristiche fisiche di movimento del nostro robot generando i movimenti

opportuni che gli permetteranno di deambulare stabilmente nellrsquoambiente

Un ulteriore ricerca ci ha portato a realizzare una funzione di calcolo delle

traiettorie in ambiente noto che dagrave la possibilitagrave a ASGARD di decidere in real-

time il passo da intraprendere nel singolo istante

Questo puograve essere considerato il primo passo verso un algoritmo di

Intelligenza Artificiale per il nostro robot

Il sistema di controllo dellrsquoandatura di un robot con zampe si puograve cosigrave

scomporre in tre livelli distinti

Architettura del robot ASGARD 57

SUPERVISORE

bull Traiettoria bull Parametri dellrsquoandatura

COORDINATORE bull Controllo della stabilitagrave bull Traiettoria dellrsquoestremitagrave delle

zampe

LIVELLO DELLE ZAMPE bull Cinematica inversa bull Controllo dinamico bull Comandi agli attuatori

35 Stato Attuale

Allo stato attuale il robot egrave stato completato e dotato di sensore di

pressione posto sotto la zampa anteriore sinistra Le tempistiche di risposta della

scheda PIC presentano non poche difficoltagrave a carattere di controllo I motori da

noi utilizzati ricevono in input solo il valore della posizione ed egrave pertanto

impossibile effettuare controlli su velocitagrave ed accelerazione

Ersquo risultato comunque possibile dopo una attenta analisi di stabilitagrave la

creazione di un ciclo di passi che ha permesso ad ASGARD di compiere la sua

prima camminata

Capitolo 4 Modellizzazione cinematica e dinamica

Modellizzazione cinematica e dinamica 59

41 Convenzioni e simbologia utilizzata

Data la natura del robot saragrave essenziale fornirne una corretta analisi

matematica e robotica per mantenere una certa coerenza e chiarezza verranno

utilizzate le seguenti convenzioni

bull Il pedice indica il numero della grandezza a cui si sta facendo

riferimento indica ad esempio lrsquoelemento n di A Nel caso vi

siano presenti due pedici si fa riferimento ad una grandezza che va

dal primo pedice al secondo indica quindi un vettore da i a k

nA

kiA

bull Lrsquoapice egrave utilizzato per indicare il sistema di riferimento rispetto al

quale la grandezza egrave riferita indica quindi lrsquoelemento n della

grandezza A nel sistema di riferimento i

inA

bull Il simbolo times indica il prodotto vettoriale

bull Il simbolo bull indica il prodotto scalare mentre la T posta come apice

egrave la trasposizione

Nella Tabella 1 vengono mostrate le grandezze fisiche utilizzate e la

simbologia per rappresentarle[31]

Ti

iR 1minus Matrice di rotazione dalla terna i-1 alla terna i (premoltiplicazione)

iiR 1+ Matrice di rotazione dalla terna i+1 alla terna i (postmoltiplicazione)

im Massa del braccio

iir 1minus Vettore dalla terna i-1 alla terna i

iI Tensore drsquoinerzia del braccio

iϑ Posizione angolare del giunto i

iϑamp Velocitagrave angolare del giunto i

Modellizzazione cinematica e dinamica 60

iϑampamp Accelerazione angolare del giunto i

iω Velocitagrave angolare del braccio

iωamp Accelerazione angolare del braccio

ipampamp Accelerazione lineare terna i

iCpampamp Accelerazione lineare baricentro iC

if Forza esercitata sul giunto i

imicro Momento esercitato sul giunto i

iτ Forza generalizzata al giunto i

Tabella 1 Rappresentazione delle grandezze fisiche utilizzate

42 Sistemi di coordinate e trasformazioni

Qualunque punto dello spazio puograve essere rappresentato da coordinate

omogenee che non sono altro che le coordinate cartesiane del punto a meno di un

fattore di proporzionalitagrave

⎥⎥⎥⎥

⎢⎢⎢⎢

=rarr⎥⎥⎥

⎢⎢⎢

⎡=

wzyx

pZYX

p dove wxX =

wyY =

wzZ =

In coordinate omogenee ci sono quattro punti particolari

versore direzione dellrsquoasse X versore direzione dellrsquoasse Y ir

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0001

jr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0010

versore direzione dellrsquoasse Z Origine degli assi kr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0100

Or

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1000

Modellizzazione cinematica e dinamica 61

Questi quattro punti caratterizzano il sistema di riferimento Un sistema di

riferimento puograve essere posto in ogni punto dello spazio per noi saragrave essenziale

porne uno in ogni giunto dei robot[32] Inserito un sistema di riferimento il

passaggio da un sistema al successivo avviene tramite una matrice di

trasformazione che al suo interno ne descrive la rotazione e traslazione

La rotazione pura rispetto ad un sistema fisso di coordinate viene

rappresentata tramite una matrice quadrata 33times Ad esempio una rotazione di un

angolo α attorno allrsquoasse z viene descritta con

( )⎥⎥⎥

⎢⎢⎢

⎡ minus=

1000cossin0cos

αααα

αsen

Rz

La matrice A di rototraslazione egrave rappresentata in generale come

composizione degli spostamenti rotatorio e traslatorio

( ) ( )

[ ] ⎥⎦

⎤⎢⎣

⎡ timestimes=

10001333 TraslRot

A

La matrice egrave costituita da una parte di rotazione una di traslazione lungo i

tre assi e una riga i cui valori indicano la ldquoscalardquo e la ldquoprospettivardquo (non utilizzati

in questo ambito) In analisi piugrave approfondita

Modellizzazione cinematica e dinamica 62

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

A

possiamo vedere come le prime tre colonne rappresentano i versori del

sistema di partenza mentre lrsquoultime rappresenta la posizione di arrivo in

coordinate omogenee dellrsquoorigine in cui egrave posizionato il sistema di riferimento

43 Cinemetica diretta

In questo ambito ci proponiamo di illustrare i modelli matematici che ci

hanno permesso di analizzare ASGARD Partiamo da alcune definizione basilari

Un robot manipolatore egrave una catena cinematica sequenziale22 aperta23 o

catena parallela composta da corpi rigidi (link) uniti da giunti

Lrsquointeresse principale egrave rivolto alla mano o end-effector del robot che

possa raggiungere ogni posizione con qualunque orientamento senza bisogno di

resettare fisicamente il sistema

La cinematica studia il legame tra le variabili indipendenti dei giunti e le

posizioni e orientamento cartesiane raggiunte dal robot Questo egrave chiaramente un

problema cruciale per le applicazioni Il problema si suddivide in due parti

cinematica diretta = passaggi dalle variabili di giunto24 alle variabili

cartesiane25

cinematica inversa = passaggio dalle variabili cartesiane alle variabili di

giunto

22 sequenziale significa che non ci sono diramazioni nella catena 23 aperta una delle due estremitagrave (mano=end-effector) egrave libera 24 valori degli angoli di ogni singolo giunto 25 valore della posizione espresso in coordinate nel di riferimento considerato

Modellizzazione cinematica e dinamica 63

La dinamica studia le equazioni che caratterizzano il moto del robot intese

come velocitagrave accelerazioni tenendo conto non solo delle posizioni iniziali e

finali ma di tutte le caratteristiche del moto la nostra analisi si egrave concentrata sulle

forze e le torsioni agenti sui motori studiate con il metodo di Newton-Eulero

Il calcolo delle traiettorie consiste nel determinare un modo per fornire al

controllore del robot lrsquoinsieme dei punti (variabili di giunto) per spostarsi da una

posizione allrsquoaltra con opportune velocitagrave e accelerazioni

Il problema del controllo consiste invece nel trovare modalitagrave efficienti per

far compiere al robot il piugrave fedelmente possibile le traiettorie determinate

431 Definizione dei parametri di Denavit Hartemberg

Elaborare i valori delle variabili di giunto fino a trovare i valori delle

coordinate cartesiane riferite alla posizione dellrsquoend-effector non egrave di facile

carico computazionale soprattutto quando il robot risulta complesso26

Sviluppare metodi a doc ottimi per la cinematica inversa risultano

scomodi e onerosi se riferiti alla cinematica diretta

Un metodo generale e applicabile a qualsiasi tipologia di manipolatore egrave

stato sviluppato negli anni cinquanta da Denavit e Hartenberg (D-H)

Esso consiste nel fissare sistemi di riferimento sui giunti per poterne

determinare i parametri caratteristici Tramite lrsquouso di matrici di rototraslazione

dei sistemi di riferimento egrave possibile trovare un legame tra i parametri dei giunti e

la posizione e lrsquoorientamento dellrsquoend-effector Con questa scelta ogni singola

trasformazione da un sistema di riferimento al successivo saragrave descritta da una

matrice definita da quattro parametri lrsquoangolo del giuntonnA 1minus ϑ lrsquoangolo di twist

α e le due distanze d e l

Identificata la struttura giuntilink del robot egrave necessario fissare i sistemi di

riferimento nel seguente modo

26 complesso con piugrave di due gradi di libertagrave

Modellizzazione cinematica e dinamica 64

bull Scegliere lrsquoasse giacente lrsquoungo lrsquoasse del giunto i+1 iz

bull Individuare allrsquointersezione dellrsquoasse con la normale comune

agli assi e con

iO iz

1minusiz iz iOprime si indica lrsquointersezione della normale

comune con 1minusiz

bull Si assume lrsquoasse diretto lungo la normale comune agli assi

e con verso positivo dal giunto i al giunto i+1

ix 1minusiz

iz

bull Si sceglie lrsquoasse in modo tale da completare una terna levogira iy

Figura 38 Parametri cinematici di Denavit-Hartenberg

Fissate le terne solidali si ha che

ia = distanza da a iO iOprime

id = coordinata su di 1minusiz iOprime

iα = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

ix 1minusiz iz

iϑ = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

1minusiz 1minusix ix

Modellizzazione cinematica e dinamica 65

Nella nostra analisi essendo tutti giunti rotoidali lrsquounica variabile risulta

essere iϑ indicante la posizione in gradiradianti del giunto Nello sviluppo della

parte grafica per caratteristiche proprie del tool utilizzato sono stati introdotti

ulteriori due giunti traslazionali che nellrsquoanalisi non vengono perograve presi in

considerazione come variabili

La matrice di trasformazione complessiva viene costruita nel modo

seguente

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡minus

minus

=minus

1000cos0

coscoscoscoscoscos

1

iii

iiiiiii

iiiiiii

ii dsen

senasensenasensensen

Aαα

ϑαϑαϑϑϑαϑαϑϑ

432 Metodo di assegnamento secondo D-H

Per ricavare velocemente le matrici di trasformazione secondo la

convenzione di D-H si utilizza la seguente procedura operativa

1 Individuare e numerare consecutivamente gli assi dei giunti

assegnare rispettivamente le direzioni agli assi hellip 0z 1minusnz

2 Fissare la terna base posizionandone lrsquoorigine sullrsquoasse gli assi

e sono scelti in maniera tale da ottenere una terna levogira

0z

0x 0y

Eseguire i passi da 3 a 5 per i = 1 hellip n

3 Individuare lrsquoorigine allrsquointersezione di con la normale comune agli assi e Se gli assi e sono paralleli posizionare in modo da annullare

iO iz

1minusiz iz 1minusiz iz

iO id4 Fissare lrsquoasse diretto lungo la normale comune agli assi e

con verso positivo dal giunto i al giunto i+1 ix 1minusiz

iz5 Fissare lrsquoasse in modo da ottenere una terna levogira iy

Per completare

Modellizzazione cinematica e dinamica 66

1 Fissare la terna n allineando lungo la direzione di nz 1minusnz

2 Costruire per i = 1 hellip n la tabella dei parametri ia id iα iϑ

3 Calcolare sulla base dei parametri di cui al punto 7 le matrici di

trasformazione omogenea ( )iii qA 1minus per i = 1 hellip n

La posizione e lrsquoorientamento di un qualsiasi giunto della catena rispetto il

sistema base egrave ora calcolabile premoltiplicando i valori nel sistema corrente per

tutte le matrici di trasformazione precedenti a tale sistema

11

121

010

0 minusminussdotsdotsdot== n

nnn AAAAT

In ASGARD si egrave attuata una doppia analisi

la prima consiste nellrsquoalzata del piede e il suo riposizionamento nelle

coordinate desiderate in questo caso lrsquoorigine del robot risulta essere solidale con

il baricentro del corpo e lrsquoend-effector risulta coincidere con la zampa mobile

Figura 39 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nel baricentro e end-effector coincidente con la zampa mobile

Modellizzazione cinematica e dinamica 67

I parametri di D-H calcolati risultano essere

link ϑ α a d

1 deg45 0 1l 0

2 2ϑ deg90 2l 0

3 3ϑ 0 3l 0

4 0 4l 0 4ϑ

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

1111

1111

010

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdot

=

10000010

00

2222

2222

121

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

3333

3333

232

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

44441

4444

343

SlCSClSC

A

e la matrice T contenente i valori in coordinate cartesiane della posizione

della zampa egrave calcolata come 3

432

321

210

1004 AAAAAT sdotsdotsdot==

la seconda analisi consiste nellrsquoavanzamento del corpo non essendo il

nostro robot dotato di uno scheletro mobile e flessibile durante la camminata si ha

la necessitagrave di spostare il baricentro sfruttando lrsquoattrito delle zampe con il terreno

In questa situazione le zampe puntate a terra risultano essere lrsquoorigine e il

baricentro della nostra struttura egrave la parte terminale libera

Modellizzazione cinematica e dinamica 68

Figura 40 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nella zampa di appoggio e end-effector coincidente con il baricentro

In questo caso i parametri di D-H subiscono la seguente modifica

link ϑ α a d

1 1ϑ degminus 90 0 0 2 2ϑ 0 2l 0 3 3ϑ degminus 90 3l 0 4 0 0 4l 0

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

11

11

010

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ minus

=

100001000000

22

22

121

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

33

33

232

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000010000100001

343A

La matrice T per il calcolo della posizione finale non subisce invece

modifiche nella sua formula rimane invariata 343

232

121

010

0 AAAAAT n sdotsdotsdot==

Modellizzazione cinematica e dinamica 69

44 Cinematica inversa

Data una posizione e un orientamento nello spazio cartesiano egrave possibile

trovare una configurazione del nostro manipolatore affincheacute essa possa essere

raggiunta Questo egrave il problema di cinematica inverso

Nel calcolo di tale problema non egrave garantita neacute lrsquoesistenza neacute lrsquounicitagrave

della soluzione cercata La posizione se appartenente allo spazio di destrezza del

manipolatore (spazio in cui egrave garantita lrsquoesistenza della soluzione) non egrave detto che

possa essere raggiunta con unrsquounica sequenza di variabili di giunto

Metodi di analisi ammissibili per il nostro robot risultano essere il metodo

di Paul[33] e quello geometrico non essendo rispettati i vincoli per il metodo di

Pieper (tre giunti rotoidali consecutivi con assi paralleli)

Il metodo di Paul consente di determinare le soluzioni mediante

premoltiplicazioni o postmoltiplicazioni con matrici di trasformazione ortogonali

egrave un metodo euristico per la ricerca di soluzioni in forma chiusa

Lrsquoalgoritmo egrave il seguente

1 Uguagliare la matrice di trasformazione generale T espressa in

termini di variabili cartesiane alla matrice di trasformazione del

manipolatore espressa in termini di variabili di giunto

2 Cercare nella seconda matrice

bull elementi che contengono una sola variabile di giunto

bull coppie di elementi che danno unrsquoespressione in una sola

variabile di giunto quando vengono divisi tra loro

bull elementi o combinazioni di elementi che possono essere

semplificati usando identitagrave trigonometriche

3 Quando si sono identificati questi elementi li si eguagliano ai

corrispondenti elementi della matrice in variabili cartesiane

ottenendo unrsquoequazione la cui soluzione permette di trovare un

Modellizzazione cinematica e dinamica 70

legame fra una variabile di giunto ed elementi della matrice di

trasformazione generale

4 Se non si sono identificati elementi che soddisfano le condizioni al

passo 2 si premoltiplicano entrambi i membri dellrsquoequazione

matriciale per lrsquoinversa della matrice A del primo link si opera

secondo il passo 2 Si itera il procedimento per tutti i link

5 Non sempre egrave possibile trovare elementi che rispettano le

condizioni imposte e riuscire a trovare una soluzione valida

Nella nostra analisi questo metodo egrave stato valido e molto veloce per

trovare il valore del primo angolo spalla ma risulta svantaggioso nel calcolo dei

successivi angoli in cui non si riuscivano a trovare equazioni semplici

=

⎥⎥⎥⎥

⎢⎢⎢⎢

+minusminusminusminus++minusminusminusminusminus++minusminusminusminus

=

10000 2232332332323232

11212321332131321321321321

11212321332131321321321321

SlSClCSlCCSSSCSSSlCSlSSSlCCSlCSSSCCSCSSCCSClCClSSClCCClSCSCSCCSSCCCC

T

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

da cui si ricava

( )( ) 1

1

1223233231

1223233231

CS

lClSSlCClClClSSlCClS

pp

x

y =++minus++minus

= quindi ⎟⎟⎠

⎞⎜⎜⎝

⎛=

x

y

pp

a tan1ϑ

Ersquo stato quindi decisivo per il riscontro del secondo e del terzo angolo

rispettivamente ginocchio e caviglia un approccio geometrico a doc

In questa tipologia di studio di rilevante importanza egrave stata lrsquoestrapolazione

delle coordinate dellrsquoend-effector e la traslazione dellrsquoorigine nel ginocchio al fine

di isolare due piani del moto per ridurre lrsquoanalisi di una dimensione

Modellizzazione cinematica e dinamica 71

Il calcolo della cinematica inversa per un manipolatore a due link risulta

poi di basso carico computazionale applicando regole di trigonometria basilari

Figura 41 Calcolo cinematica inversa attraverso metodo geometrico su un robot

planare a 2gradi di libertagrave

Conoscendo la posizione raggiunta

( )21211 coscos ϑϑϑ ++= llx ( )21211 ϑϑϑ ++= senlsenly

Si applica il teorema di Pitagora nel triangolo indicato

( ) ( ) =sdot+sdotsdotsdot+sdot+=+sdot+=+ 22

22221

22

22

21

222

2221

22 cos2coscos ϑϑϑϑϑ senlllllsenlllyx 221

22

21 cos2 ϑsdotsdotsdot++= llll

E da esso si ricava

21

22

21

22

2 2)(cos

llllyx

sdotsdotminusminus+

=ϑ e quindi ⎥⎦

⎤⎢⎣

⎡sdotsdot

minusminus+=

21

22

21

22

2 2)(

cosll

llyxaϑ

Come si era previsto porta a due soluzioni gomito alto o bassoPer trovare

lrsquoaltro angolo si osserva cha al posto αϑϑ +=∆ 1 si ha

( )xy

=∆ϑtan ( )221

22

costan

ϑϑ

αsdot+

=llsenl

quindi

⎟⎟⎠

⎞⎜⎜⎝

⎛sdot+

minus⎟⎠⎞

⎜⎝⎛= minusminus

221

22111 cos

tantanϑ

ϑϑ

llsenl

xy

Modellizzazione cinematica e dinamica 72

441 Metodo gradiente

Abbiamo utilizzato questo metodo alternativo sperimentale in

concomitanza con il metodo geometrico valutandone successivamente le sue

potenzialitagrave per possibili applicazioni future Esso attraverso semplici calcoli

matematici ci porta al valore dei successivi due giunti della zampa

Figura 42 Baccio a due link

Denomineremo

a angolo del primo giunto

b angolo del secondo giunto

obiettivo stella rossa

errore vettore che punta lrsquoobiettivo

Spostiamo il braccio del robot intorno alla base cambiando gli angoli a e b

Possiamo tracciare un grafico di questo comportamento[34]

Figura 43 Immagine della rappresentazione del gradiente

Modellizzazione cinematica e dinamica 73

Lrsquoasse x rappresenta langolo a mentre lrsquoasse y rappresenta langolo b Lrsquoorigine

egrave nel cento Denomineremo lo spazio di tutti gli orientamenti possibili del braccio

del robot lo spazio di configurazione

Ogni punto sul quadrato contiene una tonalitagrave di grigio che rappresenta la

distanza fra lrsquoend-effector e lobiettivo Le tonalitagrave piugrave chiare sono distanze piugrave

grandi mentre il nero rappresenta zone di avvicinamento allrsquoobiettivo Ci sono

due posti in cui la distanza egrave uguale zero rappresentanti le due configurazioni

(gomito alto e basso) in cui il braccio puograve toccare lobiettivo

Dovrebbe essere evidente arrivare al target significa trovare le parti piugrave

nere del grafico Questi punti bassi sono conosciuti come minimi

4411 Gradient following

Questo metodo risulta essere di grande utilizzo per riuscire a trovari i

minimi in uno spazio bidimensionale

Per trovare i punti piugrave bassi sul grafico si deve semplicemente seguire

punti che portano lrsquoend effector ad una distanza minore dal target

Figura 44 Immagine di esempio

Figura 45 Gafico del Gradiente di esempio

Si guardi questo esempio Figura 44 Lobiettivo egrave la stella rossa In questa

posizioneun movimento del giunto di rotazione a sposteragrave la mano nel senso della

freccia a ed un movimento di b sposteragrave lrsquoend-effector nel senso della freccia b

Modellizzazione cinematica e dinamica 74

Per raggiungere lrsquoobiettivo desideriamo spostare la mano nel senso della freccia t

Spostando solo il giunto A o solo B non otterremo grandi risultati ma serviragrave un

movimento complessivo Ora guardiamo questo in termini di grafico (Figura 45)

Cominciando ad una configurazione casuale del braccio (start) possiamo

guardare i vettori a e b e ruotiamo ogni giunto un po in proporzione a quanto

aiuta per ottenere una migliore posizione rispetto allrsquoobiettivo Si puograve pensare a

questo come esaminare la pendenza locale del grafico Ci si chiede qual egrave il

movimento che li conduce il piugrave velocemente in discesa ci si sposta in quel senso

Si continua a ciclare questo fino ad arrivare ad una distanza dal nostro obiettivo

che concorda con lrsquoapprossimazione da noi desiderata

Vantaggi di questo metodo sono lrsquoapplicazione in tutte le problematiche

con un numero elevato di link Il tempo computazionale non risulta essere oneroso

in quanto ci si riconduce a semplici operazioni matematiche che Matlab riesce ad

eseguire in pochissimi istanti nonostante lrsquoelevato numero di iterazioni

4412 Faster gradient following

Esso egrave unottimizzazione del metodo gradient following che accelera

letteralmente il processo[34] Precedentemente ad ogni ripetizione la pendenza egrave

stata sottratta semplicemente dalla posizione nello spazio di configurazione

spostando la struttura piugrave vicino al minimo Questa volta sottrarremo la pendenza

dalla velocitagrave a cui ci muoviamo attraverso lo spazio di configurazione

Otteniamo come risultato un calcolo molto piugrave rapido in termini di

iterazioni che si riducono fino al 60-75 rispetto al precedente mantenedo

risultati ottimi in base anche allrsquoapprossimazione da noi scelta

Modellizzazione cinematica e dinamica 75

Figura 46 Passi per arrivare al target nel metodo di inseguimento veloce

45 Calcolo delle traiettorie

Vogliamo presentare le modalitagrave di come le traiettorie vengono generate

Tra le diverse disponibili egrave stato scelto il controllo in posizione nello spazio dei

giunti affichegrave il robot riesca a deambulare in un cammino definito Esprimendo le

traiettorie nello spazio dei giunti vengono evitate le conversioni cinematiche

inverse e quindi per la realizzazione delle traiettorie non serve potenza di calcolo

onerosa

Per il controllo delle traiettorie esistono metodi semplici basati sulla

gestione del movimento del singolo link senza che esso venga temporizzato con

tutta la struttura e algoritmi piugrave complessi che fanno uso delle cubiche27 esse

arrivano a un buon compromesso tra quantitagrave di calcolo richiesta e qualitagrave delle

traiettorie ottenute Il cammino da compiere viene specificato mediante punto di

arrivo e punto di stop si vorrebbe che tutti i giunti arrivino al task nello stesso

istante in modo da garantire lrsquoassenza delle discontinuitagrave Si generano traiettorie

nello spazio dei giunti specificando per ogni motore la funzione di moto e

verificando che le posizioni attraversate non siano degeneri28 o singolari29[32]

27 polinomi dal terzo grado a superiore che rappresentano funzioni continue 28 degenere significa non raggiungibile dal robot

Modellizzazione cinematica e dinamica 76

Esistono diversi metodi per calcolare le cubiche di seguito vengono

presentate quelle da noi elaborate e convertite in codice

Movimento da una posizione finale ad una posizione finale in un certo

intervallo di tempo per ogni giunto deve essere trovata una funzione ( )tϑ

continua e con derivata prima continua il cui valore per t=0 sia per t = sia ft fϑ e

che possa essere usata per interpolare i valori dei giunti I vincoli che devono

essere soddisfatti sono

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = 0 Velocitagrave iniziale nulla

( )fϑamp = 0 Velocitagrave finale nulla

Per soddisfare i vincoli egrave necessario un polinomio di terzo grado in cui i

coefficienti saranno scelti per soddisfare i quatto vincoli

( )tϑ = 3

32

210 tatataa sdot+sdot+sdot+

dal polinomio ricaviamo la funzione che rappresenta la velocitagrave

( )tϑamp = 2321 32 tataa sdotsdot+sdotsdot+

e lrsquoaccelerazione

( )tϑampamp = taa sdotsdot+sdot 32 62

sostituendo le equazioni nei vincoli sopra citati troviamo i seguenti valori dei

coefficienti

=0a 0ϑ

29 un punto singolare egrave un punto in cui non egrave possibile calcolare lo jacobiano inverso

Modellizzazione cinematica e dinamica 77

01 =a

( )2

02

3

f

f

ta

ϑϑ minussdot=

( )3

03

2

f

f

ta

ϑϑ minussdotminus=

Con queste equazioni abbiamo ottenuto il metodo piugrave semplice per

connettere due posizioni nello spazio A fronte del consistente numero di

operazioni richieste per il carico grafico questo egrave il metodo da noi utilizzato per

tutto lo sviluppo del simulatore che emula la creazione di un percorso inoltre esso

risulta simile al controllo a noi a disposizione per gli attuatori reali a disposizione

Abbiamo comunque voluto implementare un metodo avanzato per

superare limitazioni presenti che potragrave essere utilizzato anche in un futuro quando

controlli effettivi saranno introdotti per il controllo di velocitagrave e accelerazione dei

motori Esso egrave costituito da un polinomio di quinto grado in cui possono essere

specificate posizioni velocitagrave e accelerazioni nei punti iniziale e finale e puograve

gestire la continuitagrave dellrsquoaccelerazione nei punti di via

Il polinomio studiato risulta essere

( )tϑ = 5

54

43

32

210 tatatatataa sdot+sdot+sdot+sdot+sdot+

( ) =tϑamp 45

34

2321 5432 tatatataa sdotsdot+sdotsdot+sdotsdot+sdotsdot+

( ) =tϑampamp 35

2432 201262 tatataa sdotsdot+sdotsdot+sdotsdot+sdot

imponendo

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = Velocitagrave iniziale 0v

( )fϑamp = Velocitagrave finale fv

Modellizzazione cinematica e dinamica 78

sostituendo i vincoli trovo i seguenti valori dei parametri

tvva fof sdotminussdotminusminussdot= )(3)(6 05 ϑϑ

tvva fof sdotsdotminussdot+minussdotminus= )78()(15 04 ϑϑ

tvva fof sdotsdotminussdotminusminussdot= )46()(10 03 ϑϑ

02 =a

tva sdot= 01

00 va =

46 Modello dinamico Newton-Eulero

Per un analisi realistica e approfondita della camminata non egrave sufficiente

considerare gli effetti della forza di gravitagrave ma diventa necessario introdurre il

modello dinamico che tiene conto di tutti i fattori non trascurabili nei corpi in

movimento

Per completare le formule ricavate nel caso statico vengono calcolate le

singole velocitagrave e accelerazioni dei giunti e link Risulta assai comodo ed

efficiente lrsquoalgoritmo ricorsivo di Newton-Eulero[31] Viene effettuata dapprima

una ricorsione ldquoin avantirdquo per calcolare le velocitagrave e accelerazioni dei giunti e

successivamente una ricorsione ldquoallrsquoindietrordquo per ricavare i valori di forza e

torsione

Nella prima fase dalla base (baricentro) allrsquoend-effector (zampa in

movimento) abbiamo

Velocitagrave angolare del rotore ( )011

1 zR iii

Tii

ii ϑωω amp+= minus

minusminus

Accelerazione angolare del link ( )0110

11

1 zzR iiii

ii

Tii

ii times++= minus

minusminusminus

minus ωϑϑωω ampampampampamp

Accelerazione lineare terna i ( )iii

ii

ii

iii

ii

ii

Tii

ii rrpRp 11

11

1minusminus

minusminus

minus timestimes+times+= ωωωampampampampamp

Modellizzazione cinematica e dinamica 79

Accelerazione lineare baricentro iC ( )iCi

ii

ii

iCi

ii

iiC iii

rrpp timestimes+times+= ωωωampampampampamp

Nella seconda fase dallrsquoend-effector al baricentro le formule diventano

Forza iCi

ii

ii

ii i

pmfRf ampamp+= +++

111

Momento ( )

( )ii

ii

ii

ii

ii

iCi

ii

ii

ii

ii

iCi

iii

ii

ii

II

rfRRrrfii

ωωω

micromicro

times++

times+++timesminus= +++

+++minus

amp

1

111111

Forza generalizzata 0

1 zR Tii

Tiii

minus= microτ

Ai fini di semplificare i calcoli tutti i vettori sono riferiti alla terna corrente

sul link i Si rende quindi necessario moltiplicare per i vettori da trasformare

dalla terna i+1 alla terna i e per i vettori da trasformare dalla terna i-1 alla

terna i In questo modo e diventa possibile

semplificare la formula del tensore drsquoinerzia del link

iiR 1+

TiiR 1minus

[ ]Tz 1000 = costante =iCi i

r

( )

( )( ) ⎥

⎥⎥⎥

⎢⎢⎢⎢

+sdotminussdotminus

sdotminus+sdotminus

sdotminussdotminus+

sdot=

intintintintintintintintint

dVyxdVyzdVxz

dVyzdVzxdVxy

dVxzdVxydVzy

I22

22

22

ρ

Lrsquoinerzia egrave una proprietagrave che dipende dalla massa del corpo e da come tale

massa egrave distribuita I tensori sopra calcolati descrivono lrsquoinerzia del corpo nello

spazio tridimensionale Per i calcoli si sono supposti i link di densitagrave uniforme e a

forma di parallelepipedo tale approssimazione porta ad ottenere risultati

sufficientemente precisi per questo lavoro semplificando i termini del tensore

( )

( )( ) ⎥

⎥⎥

⎢⎢⎢

++

+sdot=

120001200012

22

22

22

yxzx

zymI

Modellizzazione cinematica e dinamica 80

Nelle formule del calcolo della torsione sono stati tralasciati i termini

inerenti alle forze interne dei motori essendo questi di dimensione trascurabile

47 Creazione di una mappa

La navigazione consiste nel dirigere il cammino di un robot

mobile[35][36] mentre esso si muove in un ambiente affincheacute

bull Raggiunga la destinazione

bull Non si perda

bull Non si schianti contro ostacoli fissi o mobili

La navigazione egrave composta dalle seguenti parti

mapping planning rArr driving rArr

costruzione della mappa pianificazione esecuzione

Il mapping consiste nel rappresentare lrsquoambiente in cui il robot si muove

ottimizzando i movimenti del robot per ASGARD lrsquoambiente egrave stato rappresentato

mediante una matrice bidimensionale che rappresenta la sua area di azione

Il planning rappresenta la costruzione di un cammino geometrico nella

mappa Nel nostro lavoro si egrave deciso di dare la possibilitagrave al robot di scegliere il

percorso piugrave adatto che dovragrave intraprendere Come verragrave descritto piugrave in dettaglio

nel prossimo capitolo dopo aver inserito valori di riferimento degli ostacoli

mediante un algoritmo di ricerca saragrave il controllore a fornire le direttive e

scegliere che tipologia di camminata che ASGARD dovragrave affrontare in ogni

singolo istante alla fase di driving saragrave delegato il compito di scegliere il passo

opportuno al fine di velocizzare la camminata

Il goal per il nostro robot egrave il raggiungimento della posizione data come

obiettivo senza urtare ostacoli fissi presenti sul suo cammino Non essendo dotato

Modellizzazione cinematica e dinamica 81

di un sistema odometrico per il calcolo della posizione saragrave lo stesso controllore a

verificare in real-time la corretta posizione del baricentro del robot

Non possedendo nemmeno sensori di visione abbiamo deciso di simulare

e costruire una mappa object oriented30 la mappa conosce le posizioni degli

oggetti diffusi nel mondo e vieta al robot le aree in cui essi sono presenti

La mappa saragrave rappresentata da una matrice in cui per ogni cella avremo

valori che rappresentano la distanza dal goal31 e le distanza dallrsquoostacolo piugrave

vicino un opportuno algoritmo di planning (revisione dellrsquoAlgoritmo di Dijkstra)

attueragrave la ricerca del cammino meno dispendioso e dopo un opportuno controllo

diragrave al robot se attuare un passo di camminata veloce o un passo di correzione

471 Espansione degli ostacoli traformazione delle distanze

Basato sul concetto di propagazione drsquoonda32 il metodo della

trasformazione delle distanze proviene dal meccanismo utilizzato per processare

la forma in immagini binarie Il metodo consiste nella propagazione della distanza

da un insieme di celle poste in uno spazio rappresentato da una griglia

Si calcola lo scheletro dellrsquoimmagine ostacolo e si identificano le celle che

ne conterranno gli spigoli Poi si passa da sinistra a destra e dallrsquoalto al basso le

celle esterne al perimetro identificandole con distanza 1 Si procede per tutte le

celle della matrice quando tutti i passaggi sono completati il risultato egrave una

matrice che contiene la trasformazione delle distanze applicate al perimetro di un

oggetto I punti occupati dallrsquooggetto verranno identificati con valori idealmente

infinito e non saranno mai visitati

30 tipologia di costruzione di una mappa orientata agli oggetti 31 obiettivo 32 dallrsquooggetto considerato centro in tutte le direzioni dello spazio bidimensionale

Modellizzazione cinematica e dinamica 82

4 3 2 2 3 3 2 1 1 2 2 1 1 3 2 1 1 2 4 3 2 2 3

4 3 2 2 3 4 4 5 3 2 1 1 2 3 3 4 2 1 1 2 2 3 3 2 1 1 2 1 1 2 4 3 2 2 1 1 5 4 3 2 1 1 6 5 4 3 2 1 1 2

Figura 47 Propagazione drsquoonda per ostacolo singolo e multiplo

Abbiamo deciso di propagare lrsquoonda non solo dagli ostacoli questo

avviene in tutto lo spazio libero fluendo attorno agli ostacoli e dando unrsquoidea a

ogni cella della distanza dallrsquoobiettivo e della direzione da prendere per potersi

avvicinare

I valori del perimetro degli ostacoli vanno propagati in base alla geometria

del robot per evitare eventuali collisioni Nel nostro lavoro lrsquoespansione egrave stata

necessaria solo per i margini verticali in cui il raggio di elevazione delle zampe

poograve collidere con oggetti fissi durante la camminata longitudinale questo

problema non egrave stato invece riscontrato per lrsquoasse latitudinale

4 3 2 2 3 4 3 2 1 1 2 3

2 2 2 2 3 2 1 1 2 3 3 3 2 2 3 4

Figura 48 Griglia con espansione laterale ostacolo

Modellizzazione cinematica e dinamica 83

48 Scelta di un percorso Algoritmo di Dijkstra

Questo algoritmo egrave stato scelto come ricerca di un cammino minimo

allrsquointerno di un grafo[37] per la sua elegante semplicitagrave e il suo basso carico

computazionale (O(n)33)

Proposto da WDijkstra nel 1959[38] esso visita i nodi del grafo in

maniera simile ad una ricerca in ampiezza o profonditagrave In ogni istante lrsquoinsieme

N dei nodi viene diviso in nodi visitati V nodi frontiera F (che sono i successori34

dei nodi visitati) e i nodi sconosciuti che sono ancora da visitare

Per ogni nodo lrsquoalgoritmo tiene traccia del valore che nel nostro caso

saragrave il valore della distanza dal punto di arrivo e del nodo in cui siamo

Lrsquoalgoritmo consiste nel ripetere il seguente passo

zd

zu

si prende dallrsquoinsieme F un qualsiasi nodo z con minimo si sposta z da

F a V si spostano tutti i successori di z conosciuti in F e per ogni successore w di

z si aggiornano i valori di e

zd

wd wu ( )azww pddd +larr min dove a egrave lrsquoarco che

collega z a w Si sceglie in minore valore tra i successori di z si salva questrsquoultimo

nel vettore u

Alla fine dellrsquoalgoritmo arriviamo ad avere nel vettore u lrsquoinsieme dei nodi

che forniscono il cammino minimo dal punto di start al punto di end35

33 Orine di grandezza dellrsquoalgoritmo 34 Un successore di z egrave un nodo raggiungible lungo un arco uscente da z 35 dalla partenza allrsquoarrivo

Capitolo 5 Sviluppo dellrsquoalgoritmo di camminata

Sviluppo dellrsquoalgoritmo di camminata 85

51 Metodologie di sviluppo

Per lrsquoimplementazione della parte software si egrave scelto di far uso

dellrsquoambiente di sviluppo Matlab progettato appositamente per lavorare con

matrici e formule di notevole complessitagrave

Nel realizzare il modello matematico del robot ai fini di studiarne il

comportamento ci si potrebbe chiedere percheacute non sia stato utilizzato lrsquoambiente

di simulazione MSCADAMS in grado di fornire anche proprietagrave fisiche

direttamente dal modello CAD studiarne la cinematica la dinamica e

lrsquointerazione con il mondo esterno La finalitagrave di questo progetto perograve egrave quella di

creare uno strumento di supporto da poter essere realizzato in real-time

A questo punto Matlab potrebbe venir criticato per le sue prestazioni

inferiori a linguaggi quali il C ma esso mette a disposizione toolbox aggiuntivi

quali simulink36 che permettono un facile interfacciamento con tutti i dispositivi

hardware Ersquo comunque possibile convertire il codice sorgente in eseguibili o

addirittura nello stesso linguaggio C senza comprometterne alcuna funzionalitagrave

52 Progetto di una andatura

Per la creazione di una andatura rilevante al fine pratico abbiamo attuato

notevoli ricerche di analisi parametriche in merito Il principale obiettivo trovato egrave

risultata essere la realizzazione delle fasi di un passo stabile e veloce Ci

proponiamo quindi di massimizzare la componente velocitagrave senza provocare

instabilitagrave nel robot La velocitagrave si calcola secondo lrsquoespressione

impiegatotempomotodeldirezionenellapercorsospaziovelocitagrave

______

=

36 tool di matlab per la creazionedi controlli ad anello di automazione

Sviluppo dellrsquoalgoritmo di camminata 86

Per raggiungere tale scopo occorre concentrarsi su diverse questioni

bull Scelta del ciclo di camminata

bull Spazio decidere gli angoli del movimento di ciascuna zampa

bull Il tempo partire da una postura conveniente che garantisca i piugrave

brevi scostamenti possibili di angoli di giunto

bull La stabilitagrave

bull Le coppie prodotte dagli attuatori

bull La scelta della camminata

Attraverso lrsquoanalisi di alcune tra le possibili andature di quadruped sono

emersi pregi e difetti derivanti dallrsquoutilizzo di un ciclo di camminata con un

ridotto numero di fasi Un vantaggio fondamentale sta nel ridurre il tempo

impiegato e il maggior difetto egrave legato ai problemi di instabilitagrave del robot

Al fine di ridurre la stabilitagrave siamo intervenuti nella modellizzazione di un

opportuna camminata quasi statica che si adatta alla morfologia del nostro robot

Lrsquoidea egrave stata quella di trovare una camminata efficiente ma stabile

Al fine di ridurre lrsquoistabilitagrave sono state introdotte fasi aggiuntive che

garantiscono il poligono di appoggio e si egrave tentata di far assumere ad ASGARD

una postura a baricentro basso

Il trotto egrave stato escuso dalla nostra analisi non solo per il tempo di risposta

ma anche per lrsquoimpossibilitagrave di attuare spinte per il balzo

521 Lo spazio

La domanda che ci siamo posti egrave stata se risultava conveniente avanzare le

zampe attraverso piccoli spostamenti ripetuti o con ampi spostamenti meno

frequenti

Lrsquoavanzamento del robot avviene mediante la combinazione di due

movimenti

Sviluppo dellrsquoalgoritmo di camminata 87

bull lo spostamento delle singole zampe da una postura iniziale a una

finale

bull la spinta simultanea delle quattro zampe che permettono lrsquoeffettivo

movimento del main body37

La fase aerea risulta essere molto piugrave complessa e richiede un tempo di

attuazione maggiore rispetto a quella di spinta del busto

Lo spostamento assoluto della zampa che si solleva egrave la combinazione di

due movimenti quello attivo dipendente dalla traiettoria imposta allrsquoend effector

e quello passivo che si muove per mezzo della spinta offerta dal movimento del

busto i due movimenti sono strettamente correlati

Se lrsquoobiettivo egrave quello di massimizzare la velocitagrave del ciclo di camminata

la scelta egrave di prevedere lo spostamento della zampa piugrave ampio possibile (passo

lungo) Abbiamo comunque ritenuto utile introdurre entrambe le tipologie di

passo lungo e passo correttivo per la minimizzazione della distanza dal target

522 Stabilitagrave

Al fine di garantire la stabilitagrave egrave utile porsi nel caso quasi-statico cioegrave fare

in modo che il baricentro del robot cada sempre allrsquointerno del poligono di

stabilitagrave ciograve non sembra un problema per le fasi intermedie del ciclo di

camminata percheacute tutte e quattro le zampe toccano il terreno Il problema invece

si fa sentire nelle fasi in cui una zampa viene sollevata e un punto di contatto

viene a meno In questo caso abbiamo dovuto scegliere posture in cui il baricentro

cada nella base drsquoappoggio Ersquo indispensabile quindi prevedere tali configurazioni

e definirle in modo corretto

Occorre inoltre evitare che due zampe in appoggio poste sul medesimo

lato si urtino durante il moto infatti spazi di lavoro delle zampe presentano

strutturalmente zone di intersezione non trascurabili

37 corpo o busto del robot

Sviluppo dellrsquoalgoritmo di camminata 88

Un ulteriore accorgimento per migliorare la stabilitagrave risulta essere quello di

cercare di abbassere il baricentro durante la camminata al fine di mantenere

costante lrsquointensitagrave del moto associato alla forza peso del robot calcolato rispetto

ai punti di appoggio

523 Tempo

Un altro punto su cui si egrave posta particolare attenzione risulta essere il

piegamento delle zampe nel senso se decidere se per compiere un movimento egrave

piugrave conveniente (in termini di spostamento) tenere le zampe tese o piegate

In base a valori di test riscontrati si deduce che in genere conviene tenere

le zampe piuttosto tese poicheacute in questo modo lrsquoescursione angolare nonostante

amplifichi il movimento garantisce un corretto riposizionamento nella posizione

finale desiderata e i tempi non subiscono variazioni

53 Andature implementate

Dopo lrsquoanalisi compiuta sulle modellizzazioni naturali e sui parametri di

scelta abbiamo implementato due tipologie di camminata

Considerando la rigiditagrave del busto di ASGARD esso non dispone di spina

dorsale mobileabbiamo implementato uno stile quasi-statico che non altera lrsquoasse

del baricentro Questo ci ha vincolato a muovere una sola zampa alla volta

(motivazione da cercare anche nella alimentazione dei motori) facendolo partire

da una particolare postura in cui entrambe le zampe del lato sinistro del corpo

sono arretrate rispetto al busto e con angolature precisa degli arti

Abbiamo cosigrave creato una scomposizione del movimento in sei fasi

succesive

bull movimento zampa RL

bull movimento zampa RF

Sviluppo dellrsquoalgoritmo di camminata 89

bull spostamento in avanti del baricentro

bull movimento zampa LR

bull movimento zampa LF

bull spostamento in avanti del baricentro per tornare a posizione base

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

In questa tipologia di gait il robot si trova in piena stabilitagrave anche durante

lrsquoalzata di una zampa la proiezione del centro di massa risulta essere centrale al

triangolo drsquoappoggio

Questa tipologia di camminata quasi-statica egrave una alterazione del modello

Crawl38 presente in natura e nei modelli Aibo con lrsquoinnovazione di sfruttare

posture del normale trotto differenziandone e rallentandone le fasi di realizzazione

al fine di maggiorare il triangolo di appoggio in relazione alla struttura fisica del

nostro robot

Il segmento di appoggio dello stile Crawl viene qui espanso ad un

triangolo di stabilitagrave pur mantenendone le caratteristiche di spazio percorso e

velocitagrave

La nostra ricerca ci ha ulteriormente spinti alla creazione di un ulteriore

stile di camminata quasi-dinamico in cui la proiezione del baricentro durante

lrsquoalzata si spinge a coincidere con il lato del poligono di stabilitagrave

Le fasi di camminata diversificano da quelle precedenti per lrsquoangolazione

degli attuatori e lrsquoordine di esecuzione dei movimenti

Il passo risulta essere composto da 5 fasi

bull movimento zampa RF

bull movimento zampa LF

bull spostamento in avanti del baricentro

bull movimento zampa RR

bull movimento zampa LR

38 modello di trotto di Aibo

Sviluppo dellrsquoalgoritmo di camminata 90

Nella nostra analisi essendo ancora precario il controllo sugli attuatori

risulta impossibile realizzare un impulso tale da creare il balzo del robot Le

andature studiate escludono pertanto lrsquoandatura dinamica o trotto

La camminata quasi-statica egrave stata correttamente testata sul campo

ottenendo buoni risultati le tempistiche di risposta del robot no hanno permesso

perograve la completa realizzazione della quasi-dinamica che in alcune prove non viene

portata a termine in tutte le sue fasi a causa di cedimenti in stabilitagrave

Per questa ragione essa egrave stata ampiamente testata a simulatore

Per lrsquoanalisi dei suoi movimenti essi sono stati elaborati ed egrave stata creata

anche una variante che presenta una minimizzazione dellrsquoangolatura del giunto

spalla e riporta il movimento a quasi-stabile (passo correttivo esso sposta infatti il

robot sulllrsquoasse longitudinale solo di 2 cm)

54 Catene cinematiche del robot

Per lrsquoiplementazione a simulatore abbiamo dovuto adattare il nostro robot

ad una analisi cinematica e dinamica posizionando su di esso i sistemi di

riferimento in modo da costruire una catena cinematica aperta

Per semplificare il modello abbiamo deciso di caratterizzare la struttura del

robot in quattro catene cinematiche aventi base coincidente nel baricentro e

facendo coincidere ogni end-effector con la relativa zampa in movimento

La prima catena quindi che ci proponiamo di analizzare risulta quindi

essere la seguente

Sviluppo dellrsquoalgoritmo di camminata 91

z0

x0

y0

z1

x1

y1

y2

y3

y4

x2

x3

x4

Figura 49 Posizionamento dei sistemi di riferimento con D-H sulla zampa reale

Essa egrave stata implementata in Matlab utilizzando il metodo di D-H

precedentemente descritto implementato nel nostro tool di analisi

INIT_ROBOT Funzione di definizione delle componenti del robot allinterno del nostro simulatore In relazione alle componentistiche del nostro robot e alla grafica del simulatore questa funzione si propone di definire le parti fondamentali inserendo opportunatamente i parametri di Denavit Hartemberg Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 Copyright (C) 2003-2004 by Picco Sabrina zampa A clear L definifione allinterno della matrice L i parametri di Denavit Hartemberg sigma= 1 giunto prismatico sigma=0 giunto rotoidale sono stati inseriti due giunti prismatici per motivi di grafica del simulatore nel collegamento con i motori reali tali valori non verranno considerati alpha A theta D sigma L1 = link([0 -01 pi4 0 1] mod) L2 = link([0 -06 -pi4 0 0] mod) L3 = link([0 0 -pi4 0 1] mod)

Sviluppo dellrsquoalgoritmo di camminata 92

L4 = link([-pi2 -0573 0 0 0] mod) L5 = link([0 -0675 0 0 0] mod) L6 = link([0 -0735 0 0 0] mod) zampaa = robot(L zampaa Unimation AKampB) clear L

Nel codice Matlab riportato per la creazione di una zampa i parametri

prismatici introdotti sono utilizzati solamente a scopo grafico e vengono tralasciati

dallrsquoalgoritmo per la creazione dei movimenti e dei comandi da spedire algli

attuatori

Si egrave cercata una rappresentazione in grado di descrivere non soltanto i

giunti e i link ma anche altre caratteristiche fondamentali quali masse e lunghezze

Il passo viene scomposto principalmente in due passaggi movimento in

avanti delle zampe e spostamento del busto Nel secondo passaggio la catena

cinematica costruita deve ldquoinvertirsirdquo in quanto non saragrave piugrave la zampa del robot a

costituire il nostro end-effector ma essa saragrave solidale con il terreno e saragrave il

baricentro a diventare il nostro punto terminale asimulatore infatti non sono

possibili movimenti che sfruttano la semplice forza attrito

La catena cinematica verragrave cosigrave modificata

Creazione di un ulteriore robot per caratterizzare il cambiamento del punto di partenza della catena cinematicamentre per la prima parte del passo lend-effector egrave la zampadopo che questa egrave stata appoggiata lend-effector diventa il baricentro del robottino alpha A theta D sigma L1 = link([0 0 0 065 1] mod) L2 = link([0 0 0 0 0] mod) L3 = link([pi2 0 0 0 0] mod) L4 = link([0 0573 0 0 0] mod) L5 = link([pi2 0675 0 0 0] mod) L6 = link([0 0735 -pi4 0 0] mod) zampaa2 = robot(L zampaa2 Unimation AKampB)

Sviluppo dellrsquoalgoritmo di camminata 93

Figura 50 Fase di movimento delle zampe anteriorila base delle quattro catene

cinematiche egrave identificata con il baricentro di cui viene effettuata la prioezione

Figura 51 Fase di spostamento del baricentro si possono notare le proiezioni delle

basi delle rispettive catene cinematiche che si identificano con le zampe

La parte di codice presentato appartiene al file Init_robotm in cui vengono

definite tutte le catene cinematiche necessarie al movimento

Un ulteriore definizione di notevole importanza egrave la ricerca di tutti i punti

essenziali per il corretto posizionamento del robot durante la camminata

Sviluppo dellrsquoalgoritmo di camminata 94

Nel file DB_Positionm vengono memorizzate le posizione chiave per la

costruzione di un passo

Nel nostro algoritmo un passo egrave rappresentato da una sequenza di

posizioni base opportunatamente scelte in relazione ai parametri utili per

realizzare gait veloci e stabili

Il movimento che trasla tutta la struttura da un punto al successivo viene

definito da un profilo di accelerazione e velocitagrave implementato via software che

permette di ottenere ottenere un controllo efficiente e un movimento fluido che

rispetti certi vincoli di forza e di tempo

La funzione jtrajm infatti implementa al suo interno un polinomio di

quinto grado che permette il controllo in velocitagrave e accellerazine sia nel punto di

partenza che di fine della traiettoria permettendo un movimento ldquodolcerdquo che egrave in

grado di evitare picchi di torsione Purtroppo nella realizzazione pratica questo egrave

risultato fin troppo oneroso in quanto sui motori da noi usati non esiste alcun

controllo in velocitagrave

Al fine di rendere piugrave reale la simulazione abbiamo implementato un

semplice controllo in movimento da una posizione finale ad una posizione finale

in un certo intervallo di tempo Esso egrave costituito da un semplice polinomio di

terzo grado non attua controlli e gestisce il movimento spingendo il servo a

velocitagrave massima per ogni intervallo Presentiamo la parte di codice per la

gestione del calcolo delle traiettorie e le principali caratteristiche

sullrsquoimplementazione dei vincoli che diversificano in relazione al polinomio

utilizzato

FUNZIONE CUBICA_norm Funzione per la generazione di una traiettoria da un punto iniziale q0 ad un punto di arrivo qf in un certo intervallo di tempo tv utilizzando un polinomio di terzo grado parametri in input q0= posizione iniziale qf= posizione finale da raggiungere tv=tempo in cui effettuare lazione

FUNZIONE JTRAJ Funzione per la generazione delle traiettorie da qo a q1I numero di interpolazioni dipende dal valore di tLa costruzione di tale algoritmo di generazione avviene tramite lutilizzo di un polinomio di ordine 5 con condizioni di velocitagrave e accellerazione agli estremi parametri input q0=posizione iniziale

Sviluppo dellrsquoalgoritmo di camminata 95

parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [qtnqdtnqddtn] = cubica_norm(q0qftv) if length(tv) gt 1 controllo sul tempo tscal = max(tv) t = tv()tscal else tscal = 1 t = [0(tv-1)](tv-1) normalizzazione parametrotempo end q0 = q0() qf = qf() qt= a0+ a1t+ a2t^2+ a3t^3 vincoli da soddisfare qdt= a1+ 2a2t+ 3a3t^2 qddt= 2a2+ 6a3t implementazione dei vincoli A=q0 B= zeros(size(A)) C=((3(tscal^2))(qf-q0)) D=(((-2)(tscal^3))(qf-q0)) creazione del polinomio ttpv = [t^3 t^2 t ones(size(t))] p=[D C B A] creazione del vettore velocitagrave qtn = ttpv p

q1= posizione finale da raggiungere tv=tempo in cui effettuare lazione qd0=condizione velocitagrave nellestremo di partenza qd1=condizione velocitagrave nellestremo di arrivo parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 implementazione dei vincoli A = 6(q1 - q0) - 3(qd1+qd0)tscal B = -15(q1 - q0) + (8qd0 + 7qd1)tscal C = 10(q1 - q0) - (6qd0 +4qd1)tscal E = qd0tscal F = q0 creazione del polinomio tt = [t^5 t^4 t^3 t^2 t ones(size(t))] c = [A B C zeros(size(A)) E F] calcolo valore posizione qt = ttc calcolo la velocitagrave c1 = [ zeros(size(A)) 5A 4B 3 C zeros(size(A)) E ] qdt = ttc1tscal calcolo accellerazione c2 = [ zeros(size(A)) zeros(size(A)) 20A 12B 6C zeros(size(A))] qddt = ttc2tscal^2

Per la chiamata di entrambe queste funzioni vengono richieste le posizioni

di partenza di arrivo ed un tempo questrsquoultimo rappresenta il tempo che intercorre

tra un frame e il successivo cioegrave ogni quanto verragrave generato un valore di

posizione Per ottenere quindi un movimento il piugrave possibile continuo dovremo

richiedere la generazione di un elevato numero di frame introducendo un tempo

piccolissimo Ad esempio se vogliamo che lrsquointerpolazione generi 10 posizioni

intermedie e che tutto il movimento sia compiuto in 1 sec dobbiamo dare t=01

Sviluppo dellrsquoalgoritmo di camminata 96

55 Passo statico e dinamico

Finora abbiamo visto come sia possibile simulare il movimento di una

singola zampa o del baricentro del nostro robot per eseguire un passoa

simulatore questi movimenti devono perograve essere coordinati in modo opportuno

per permettere lrsquoesecuzione sequenziale delle fasi che lo compongono

In prima analisi il nostro lavoro si posto come obiettivo di creare un passo

quasi-statico in cui il baricentro del robot egrave strettamente compreso nella base

drsquoappoggio per garantire al robot una discreta stabilitagrave

Lrsquoanalisi delle fasi della camminata quasi-statica da noi introdotta

possono essere cosigrave schematizzate

Figura 52 Le 6 fasi della camminata quasi-statica

Da questo possiamo notare come il passo si divide in 6 movimenti in cui

vengono mosse le zampe sul lato sinistro del corpo si sposta in avanti il busto si

muovono le zampe sul lato destro e si risposta il busto per tornare alla posizione

di partenza

Ersquo da notare come lo spostamento del busto nellrsquoanalisi reale avviene

sfruttando lrsquoattrito delle zampe con il suolo mentre a simulatore egrave richiesta

lrsquoinversione della catena cinematica

La struttura da noi proposta e analizzata tenta di attuare una camminata

stabile e veloce

Il calcolo della stabilitagrave nei movimenti risulta effettivamente coerente con

le nostre aspettative

Sviluppo dellrsquoalgoritmo di camminata 97

Figura 53 Analisi margine di

stabilitagravesolo alzata(sinistra)in

movimento(destra)

Dove

321 ddd == distanza tra baricentro e perimetro

021 ne= ll durante il passo considero solo la distanza sullrsquoasse del moto

Dopo aver raggiunto un discreto livello di camminata quasi-statica il

nostro obiettivo si egrave spostato nella realizzazione di una camminata quasi-

dinamica

Figura 54 Fasi della camminata quasi-dinamica

Come si puograve notare in questa configurazione esistono istanti in cui il

baricentro del nostro robot giace sul perimetro del triangolo drsquoappoggio in questi

istanti servirebbe una risposta immediata degli attuatori per limitare le tempistiche

di movimento e permettere al robot di mantenere lrsquoequilibrio Questo fenomeno

presente anche in natura lo possiamo notare analizzando la corsa di una pantera

quando il suo corpo ondeggia in ampi angoli i suoi movimenti diventani fulminei

per mantenere la stabilitagrave

Il nostro algoritmo presenta la sezione camminata_statm che simula i due

passi e ne mostra le differenze

Sviluppo dellrsquoalgoritmo di camminata 98

Figura 55 Passo Statico vista semi frontale

Figura 56 Passo Statico vista dallrsquoalto

Figura 57 Passo Quasi-Dinamico vista semi

frontale

Figura 58 Passo Quasi-Dinamico vista

dallrsquoalto

Possimo notare anche dalle immagini come egrave posizionato il baricentro del

nostro robot rispetto alla base drsquoappoggio in diverse fasi del passo e come nella

camminata quasi-dinamica si spinge a limiti intollerabili per le caratteristiche

fisiche del nostro progetto attuale

Presentiamo di seguito lo schema a blocchi di analisi della camminata

Sviluppo dellrsquoalgoritmo di camminata 99

Cerca posizione da raggiungere

Calcola traiettoria end-effector tramite cubiche

Traccia poligono drsquoappoggio per laposizione raggiunta

inizio

Fine

Attua movimento

Posizione=target no

si

Figura 59 Schema a blocchi creazione singolo passo

Il codice proposto in appendice egrave stato successivamente opportunamente

modulato ma questo ha portato a ulteriori cali di prestezione Pertanto nella

esecuzione si egrave preferito riutilizzare il file integro Problemi di tempistiche sono

da attribuirsi alla parte grafica e al calcolo matriciale richiesto per ogni

movimento

La sperimentazione dei passi reali sul robot fisico sono stati effettuati

utilizzando array di valori di angoli di giunto estrapolati durante la simulazione

sopra citata

Sviluppo dellrsquoalgoritmo di camminata 100

56 Formule di forza e torsione sui giunti

Uno dei ruoli principali delle zampe egrave quello di sostenere la piattaforma

del robot e di evitare la caduta

A causa di un cedimento strutturale avvenuto durante i primi approcci di

pilotaggio dei motori abbiamo pensato necessario calcolare la forza e la torsione

sui giunti utilizzando le formule di Newton-Eulero viste precedentemente La

risoluzione di tali equazioni richiede una potenza di calcolo non indifferente ma

le tempistiche del nostro simulatore sono causate dalla lentezza nel plottaggio dei

grafici e dei movimenti del robot

Non avendo un diretto valore di velocitagrave dei motori ci egrave sembrato

interessante provare a calcolare effettivamente le tempistiche dei motori

Conoscendo tramite la cinematica diretta la posizione di arrivo per ogni coppia di

valori abbiamo calcolato lo spazio percorso Cronometrando il tempo richiesto

affincheacute i motori si portassero nella posizione voluta egrave stato possibile valutare la

velocitagrave media dei motori

Questa velocitagrave egrave stata successivamente introdotta nellrsquoalgoritmo

Per il calcolo delle formule di Newton-Eulero egrave inoltre da sottolineare

lrsquoimportanza della ripartizione delle masse ci egrave sembrato coerente ipotizzare le

equidistribuzione del peso su tutte e quattro le zampe in quanto la PIC aggiuntiva

non dovrebbe influenzare tale ripartizione

Dallrsquoanalisi svolta si trovano i seguenti valori sui giunti

Sviluppo dellrsquoalgoritmo di camminata 101

Figura 60 Gafici della torsione in un passo quasi-dianmico

Dal grafico possiamo inanzitutto notare come i valori di torsione che ogni

motore subisce sono inferiori al valore massimo possibile dichiarato dalla casa

costruttrice presente in ogni grafico con la linea nera continua

Possiamo vedere che il valore piugrave alto di torsione viene subito

dallrsquoattuatore presente sulla caviglia sul quale ricadono le maggiori sollecitazioni

Un comportamento analogo ma con decisamente meno carico avviene sul

giunto del ginocchio orientato come il precedente che ha la funzione di aiutare la

caviglia nel sostegno del peso

Il giunto della spalla presenta lrsquoasse di rotazione parallelo alla forza peso

di cui per questo motivo non se ne fa carico Le sue piccole perturbazioni sono

causate durante il movimento del busto dalla resistenza della forza di attrito

sfruttata per il movimento e durante lrsquoalzata della zampa dal peso di ogni singola

Sviluppo dellrsquoalgoritmo di camminata 102

articolazione che risulta perograve essere pressocheacute irrilevante rispetto al peso del

busto

Durante il movimento si possono osservare sulle grandezze di ginocchio e

caviglia una serie di oscillazioni tra due valori essi sono causati dalla ripartizione

del peso su tre o quattro zampe in base alle alzate consecutive quando il peso egrave

ripartito su tre zampe ovviamente il carico che ogni singola zampa egrave costretta a

subire cresce

Ovviamente durante lrsquoalzata ogni singola zampa presenta sui giunti

torsioni pressocheacute nulle questi minimi valori sono da attribuirsi alla sola

resistenza di ogni link alla forza di gravitagrave

La parte di codice fondamentale riportata in Appendice B per questa

funzione risulta essere la definizione dei parametri e lrsquoimplementazione delle

formule di andata e di ritorno dei valori Le funzione base viene chiamata

allrsquointerno di una ulteriore funzione NW-EUm che adatta lrsquoanalisi al passo

Esisteragrave nellrsquoalgoritmo una funzione eulerom che effettueragrave i calcoli di

Newton-Eulero anche per la catena cinematica che presenta come end-effector il

baricentro

57 Anello di Controllo

Un ulteriore controllo introdotto egrave il calcolo della cinematica inversa e il

controllo sulla soluzione trovata

A questo anello di controllo egrave stato predisposto il possibile inserimento di

un eventuale errore nel raggiungimento della posizione voluta Questo errore

potrebbe essere rilevato in futuro da sensori di posizione o da un sistema di

stereovisione dellrsquoambiente in grado di percepire la reale posizione di ogni zampa

Per ora viene passato come parametro di input settato da utente

Sviluppo dellrsquoalgoritmo di camminata 103

Figura 61 Anello di controllo cinematica inversa

Diversi approcci sono stati implementati per il calcolo della cinematica

inversa la funzione dagrave la possibilitagrave allrsquoutente settare le equazioni decisionali

quali scegliere il metodo da utilizzare settare lrsquoapprossimazione desiderata nel

caso di metodo del gradiente e la configurazione a gomito alto o basso nel caso di

metodo geometrico

Presentiamo di seguito lo schema a blocchi di sviluppo dellrsquoalgoritmo che

ci permetteragrave una spiegazione piugrave immediata del funzionamento

Sviluppo dellrsquoalgoritmo di camminata 104

Applico formule geometriche Metodo gradiente

Scelta algoritmo

inizio

Metodo inseguimento veloce del gradiente

Calcolo cinematica diretta

Setto parametri decisionali

Calcolo errore

fine

Figura 62 Schema a blocchi calcolo cinematico

Proponiamo successivamente lo pseudo codice in merito la funzione di

inseguimento veloce del gradiente al fine di rendere piugrave chiare e dettagliate le sue

caratteristiche di esecuzione

1 Anticipatamente viene settata la approssimazione desiderata per il

raggiungimento del target e lrsquoincremento dellrsquoangolo

2 Pongo nullo lrsquoincremento iniziale

Sviluppo dellrsquoalgoritmo di camminata 105

3 Pongo nulli i rispettivi valori di gradiente_old dei singoli giunti

4 Calcolo la distanza dal target con le posizioni base

5 Fintantochegrave la distanza non egrave minore dellrsquoapprossimazione introdotta

bull Calcolo i valori dei nuovi gradienti incrementando i singoli angoli

del valore incremento prefissato

bull Confronto il valore del segno del nuovo gradiente del primo giunto

con il corrispettivo gradiente_old

- se segno discorde diminuisco il valore dellrsquoangolo in

funzione el valore del gradiente nuovo e old al fine di

arrivare al punto di colle

- se segno concorde aumento ulteriormente lrsquoangolo del

giunto aggiungendogli un valore proporzionale alla distanza

trovata

bull viene eseguito lo stesso controllo per il secondo giunto

bull incremento la variabile num_iterazioni

bull i nuovi gradienti diventano i gradienti_old

bull Calcolo la distanza con il nuovi valori degli angoli dei due giunti e

torno al punto 5

58 Map-building e scelta del gait

Il nostro scopo egrave quello ricreare un programma che ricevendo in input i

soli valori di dimensione dellrsquoarea di gioco e posizione degli ostacoli fornisca al

robot tutti i comandi per muoversi nellrsquoambiente e arrivare allrsquoobiettivo senza piugrave

intervento esterno A tal fine questa funzione dovragrave comprendere diversi goal

intermedi che possono essere cosigrave schematizzati

Sviluppo dellrsquoalgoritmo di camminata 106

Creazione mappa

Ricerca percorso

Scelgo passi da attuare

inizio

fine

Il programma si divide in tre parti fondamentali

bull creazione della mappa tramite algoritmo di map-building

bull ricerca del percorso

bull decisione del passo da intraprendere per ogni istante e applicazione

del gait oppotuno

581 Costruzione della mappa ed espansione degli ostacoli

Abbiamo elaborato la costruzione di una mappa creando una matrice

bidimensionale in cui ogni cella rappresenta le possibili posizioni del baricentro

del robot nellrsquoambiente Utilizzando valori noti in input per le dimensioni e i

posizionamenti degli oggetti egrave il programma stesso a fornirci la matrice

Un ostacolo viene identificato come un cubetto in cui le coordinate inserite sono

Sviluppo dellrsquoalgoritmo di camminata 107

Xa1Ya1

a

Xa2Ya2

Per ogni cella sono presenti due valori il primo rappresenta la distanza

dallrsquoobiettivo il secondo la distanza dallrsquoostacolo piugrave vicino (se ne esiste piugrave di

uno) Questi valori sono determinati tramite onde di propagazione che partono

dallrsquooggetto in esame e si diffondono in tutte le direzioni allrsquointerno della mappa

Lrsquoonda egrave da considerarsi come una scansione prima orizzontale e poi verticale

dellrsquoambiente che incrementa ad ogni riga i controlli sulla distanza sono

introdotti in seconda analisi il controllo sulla distanza dellrsquoostacolo piugrave imminente

qualora ce ne siano presenti piugrave di uno e il controllo sullrsquoespansione drsquoonda

limitata qualora lrsquoostacolo o la destinazione si trovino ai borbi della mappa

Gli ostacoli presentano una ulteriore onda di espansione orizzontale in

quanto egrave solo lungo questa direzione che possono avvenire collisioni tra il nostro

robot in movimento e gli ostacoli fissi Accorgimenti successivi ci hanno

permesso la costruzione di un ulteriore passo correttivo che puograve essere utilizzato

in un secondo momento per un avvicinamento forzato

Figura 63 Mappa creata vista dallrsquoalto

Sviluppo dellrsquoalgoritmo di camminata 108

Figura 64 Visione della mappa semilaterale si possono vedere i corpi degli ostacoli

Matrice generata

10 3 9 2 109 0 110 0 110 0 109 0 4 2 9 2 8 2 109 0 110 0 110 0 109 0 3 1 8 1 7 1 6 2 5 1 109 0 110 0 110 0

110 0 110 0 109 0 4 2 109 0 110 0 110 0 110 0 110 0 109 0 3 2 2 2 1 1 0 1

Ogni elemento della matrice rappresenta un vertice di intersezione delle

coordinate (xy) della mappa Il primo valore equivalente a 110 rappresenta

lrsquoostacolo il valore 109 la sua espansione in altro caso esso egrave la distanza dalla

destinazione Il secondo valore rappresenta la distanza dallrsquoostacolo piugrave

imminente

582 Algoritmo di ricerca del percorso minimo

Avendo a disposizione una matrice che mi identifica tutto lrsquoambiente che

circonda il robot abbiamo deciso di modificare lrsquoAlgoritmo di Dijkstra

precedentemente descritto al fine di trovare un percorso minimo con bassa

computazionalitagrave di calcolo

Sviluppo dellrsquoalgoritmo di camminata 109

Nella prima fase abbiamo applicato lrsquoalgoritmo di ricerca operativa non su

un grafo ma su una matrice considerando come nodi successori le quatto celle

confinanti (su giugrave dx sx) rispetto a quella in cui ci troviamo Il costo di

movimento o meglio il miglior successore in cui spostarsi per riterare lrsquoanalisi

viene scelto tramite lrsquoimplementazione di un compromesso adeguato tra

minimizzazione della distanza dal target e massimizzazione della distanza dagli

ostacoli

Questa funzione restituisce in output se egrave stato trovato un percorso in caso

affermativo di esso visualizza le coordinate dei punti da attraversare e le

indicazioni in rappresentazione direzionale (destra sinistra avanti indietro)

Direzioni

start Destra Avanti Avanti Destra Destra Avanti Avanti Destra Destra Destra

Coordinate

1 1 1 2 2 2 3 2 3 3 3 4 4 4 5 4 5 5 5 6

5 7

Tabella 2 risultati ricerca percorso

Riportimo il flow-chart che descrive lrsquoalgoritmo di ricerca sopra citato

Sviluppo dellrsquoalgoritmo di camminata 110

pos =partenza migliore=non_valido

Considero 4 successori

Passo ad altro

successore

pos=visitato

pos=v

Stampo percorso in coordinate

Trasformo percorso in direzioni

inizio

Pos = destinazione

Egraversquo pos sul bordo

Considero 32 successori

Insieme successori vuoto

Considero successore v

distanza dest_vltdistanza dest

migliore

distanza ost_vltdistaza ost

migliore

Percorso non trovato

salvo pos in percorso

fine

si no

si

no

si

si

no

no

no

si

Figura 65Schema a blocchi ricerca percorso

Sviluppo dellrsquoalgoritmo di camminata 111

583 Realizzazione del gait

Una volta generato il percorso da seguire segue la parte piugrave dispendiosa in

tempo in quando legata alla grafica

Sono stati implementati per la realizzazione del percorso i seguenti passi

bull in avanti

bull in dietro

bull a destra

bull a sinistra

bull correttivo avanti

bull correttivo indietro

bull correttivi laterali non sono stati introdotti a causa del giagrave minimo

spostamento laterale per ogni passo in quella direzione (2 cm)

La terza parte di algoritmo considera il percorso generato e decide il passo

da mettere in pratica uno spostamento sullrsquoasse verticale del piano implica una

scelta ulteriore per la calibrazione del numero di passi lunghi e dei passi correttivi

Una ampia falcata permette il movimento del robot di 7 cm mentre il passo

correttivo di 2 Il programma in base al percorso ottimizza le tempistiche

effettuando il maggior numero di passi ampi e riassestando la posizione con il

minor numero possibile di passi correttivi dispendiosi in tempo

Saragrave possibile ammirare tutta la camminata del nostro robot in una

immagine che plotta tutti i movimenti del robot

Sviluppo dellrsquoalgoritmo di camminata 112

Figura 66 Robot in movimento nellrsquoambiente

Al raggiungimento dellrsquoobiettivo destinazione sulla mappa appariragrave oltre il

percorso ideale il percorso effettivamente compiuto dal robot dandoci in uscita

anche le approssimazioni al valore reale di destinazione

Figura 67 Immagini del percorso trovatoin verde percorso ideale in blu percorso

effettivo

Tali valori rappresentano la distanza ancora da percorrere e la scelta

dellrsquoulteriore passo da intraprendere per compierla

Sviluppo dellrsquoalgoritmo di camminata 113

SONO ARRIVATO A DISTANZA DALL OBIETTIVO DIX = 35527e-015 Y = -03200 testo = devo fare ancora ans = 16000 testo = passi correttivi indietro

Dopo averci fornito queste informazioni il controllore comanderagrave e faragrave

eseguire al robot i passi correttivi appropriati che gli mancano per il

raggiungimento della destinazione

Schema a blocchi dellrsquoultima parte dellrsquoalgoritmo

Sviluppo dellrsquoalgoritmo di camminata 114

Alzata nello start

Analisi elemento i

Avanti Indietro Passo dx Passo sx

Calcolo avanzamento complessivo

Calcolo num passi lunghi e

corretivi

Esegue passi

Memorizzo pos

Stampa percorso vero e ideale

Calcola distanza dal target

Effettua passi correttivi ancora

possibili

inizio

Esistono elementi in percorso

Calcolo indietreggiamento

complessivo

Esegue passo

fine

no

si

1 -1 2 -2

Figura 68 Schema a blocchi movimento

Capitolo 6 Sperimentazione e analisi dei risultati

Sperimentazione e analisi dei risultati 116

61 Risultati statici

La creazione di file a se stanti contenenti tutte le possibili posture del

nostro robot e la realizzazione di procedure che identificano i passi standard

possono essere in un secondo momento cablati su un chip di controllo diretto

posizionato on-board

Questo darebbe la possibilitagrave reale al robot di deambulare senza

condizionamento con un Pc remoto Il processo di creazione dei percorsi vincola

perograve il movimento in quanto non sono presenti tuttora sensori di visione

Possiamo inoltre affermare che tra gli stili di camminata da noi studiati ha

un ruolo fondamentale la camminata quasi-statica che effettivamente permette il

movimento del robot in ambiente piano la camminata quasi dinamica richiede

ulteriori fasi di analisi soprattutto in merito al miglioramento della risposta dei

motori

Sono state effettuate diverse prove per la realizzazione di movimenti

fluidi il valore riscontrato a simulatore e di 30 frame mentre nella realizzazione

pratica a causa dei tempi di risposta egrave stato raggiunto un valor di soglia frame=8

che permette la realizzazione di movimenti continui

Sperimentazione e analisi dei risultati 117

611 Passo reale effettuato

In prima analisi poniamo le foto delle fasi piugrave significative del passo quasi-

statico compiuto da ASGARD in laboratorio

- 1 - - 2 -

- 3 - - 4 -

- 5 - - 6 -

Sperimentazione e analisi dei risultati 118

- 7 - - 8 -

- 9 - - 10 -

- 11- - 12 -

Tabella 3 Foto del passo quasi ndashstatico eseguito da ASGARD

Le foto rappresentano la sequenza di esecuzione della nostra camminata

quasi-statica nelle viste dallrsquoalto si possono notare le caratteristiche delle posture

assunte dalle zampe e si puograve verificare il poligono drsquoappoggio

Sperimentazione e analisi dei risultati 119

Da porre in particolare evidenza sono gli angoli del giunto che rappresenta

la spalla calibrati al fine di non interferire nel movimento durante il moto

Nelle viste laterali sono da porre in particolare evidenza i momenti di volo

di ogni singola alzata caratterizzandone le tempistiche di movimento

Da notare le immagini 5 6 e 1011 in cui si verifica la spinta del baricentro

in avanti nel primo caso per lrsquoavanzamento a metagrave passo nel secondo caso per

riposizionare le zampe nella posizione iniziale

612 Misurazioni reali della pressione

Durante le prove di laboratorio in merito alla camminata statica del robot

sono stati effettuati rilevamenti dellrsquounico sensore di pressione posto sotto la

zampa anteriore sinistra

Figura 69 Particolare del sensore di pressione da noi costruito (sinistra) e del

posizionamento di esso sotto la zampa anteriore sinistra (destra)

Sperimentazione e analisi dei risultati 120

I dati riscontrati sono

istanti descrizione Valori di resistenza misurati(ohm) media

passi 1 2 3 4 5 ottenuta

1 4 in appoggio 321 287 298 314 306 3052 2 alzo C 233 246 239 253 232 2406 3 appoggio C 266 275 294 278 289 2804 4 alzo B 1271 1232 1244 1262 1251 1252 5 appoggio B 98 90 99 92 87 932 6 sposto busto 311 308 298 301 287 301 7 alzo D 198 209 203 195 211 2032 8 appoggio D 302 319 311 320 301 3106 9 alzo A 180 193 184 192 177 1852

10 appoggio A 268 259 262 270 281 268 11 sposto busto 108 115 127 122 123 119 12

Assestamento

308

305

311

313

299

3072

Tabella 4 Rilevamenti sensore pressione

Da questa tabella abbiamo trasformato i valori di resistenza in forza secondo i

diagrammi di caratteristica del sensore e abbiamo trovato

val resistenza pressione

Ohm

Kg

4 in appoggio 3052 031 alzo C 2406 045

appoggio C 2804 034 alzo B 1252 002

appoggio B 932 15 sposto busto 301 0306

alzo D 2032 049 appoggio D 3106 034

alzo A 1852 055 appoggio A 268 046 sposto busto 119 06 assestamento

3072

033

Tabella 5 Trasformazione in forza dei valori misurati del sensore pressione

Sperimentazione e analisi dei risultati 121

Da cui si puograve ricavare il seguente grafico

Volori di pressione rilevati sperimentalmente

002040608

1121416

0 5 10 15

istanti temporali passo (sec)

pres

sion

e (K

g)

pressione

impatto con il suolo

Alzata

Figura 70 Grafico della pressione

Da questo possiamo notare come effettivamente il sensore rileva le

variazioni di forza peso che agiscono sulla zampa

Le misure sono state effettuate dopo un periodo di assestamento iniziale

quando effettivamente tutte le zampe sono appoggiate il carico risulta essere

minore mentre aumenta alle singole alzate delle altre tre articolazioni Si puograve

inoltre notare dal grafico come dopo lrsquoalzata la zampa subisce un forte impatto

con il terreno istante 5 e non si riposiziona piugrave esattamente corretta aderenza

qusto causa un eccessivo carico solo su alcune parti esterne del piedino (dove egrave

situato il sensore) che andranno ad aggravare le misurazioni durante le successive

alzate

Purtroppo questo incorretto posizionamento egrave causato dalla poca mobilitagrave

del giunto passivo della zampa che puograve essere migliorato solo tramite interventi

alla struttura meccanica Ulteriore vantaggio si potrebbe riscontrare con

lrsquoinserimento di un controllo di velocitagrave che eviti impatti considerevoli con il

terreno

Sperimentazione e analisi dei risultati 122

613 Confronti di cinemetica inversa

Proponiamo alcuni risultati ottenuti con i tre diversi metodi di cinematica

inversa introducendo disturbo nullo

Metodo geometrico

Metodo del gradiente

Inseguimento veloce

del gradiente Approssimazione=25 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 438

Errore in gradi 0 2 2 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3

N= 85

Errore in gradi 0 2 2 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1

Approssimazione=05 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 2030

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

N= 130

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

Tabella 6 Confronto risultati ottenuti conmetodi cinematica inversa

Sperimentazione e analisi dei risultati 123

Da cui si possono ricavare i seguenti andamenti dellrsquoerrore

Errore sul secondo giunto con approssimazione di 25 gradi

01234

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Errore sul terzo giunto con approssimazione di 25 gradi

0

1

2

3

4

0 2 4 6 8

numero angoli

erro

re (g

radi

) metodogeometrico

metodo diinseguimento delgradiente

metodo diinseguimentoveloce

Errore sul secondo giunto con approssimazione di 05 gradi

0

05

1

0 2 4 6 8

nume r o a ngol i

met odo gradient e

met odo diinseguiment o delgradient e

met odo diinsegiument oveloce

Errore sul terzo gionto con approssimazione di 05 gradi

0

05

1

15

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Figura 71 Grafici che rappresentano lrsquoandamento dellrsquoerrore trovato

Sperimentazione e analisi dei risultati 124

I valori degli angoli inseriti sono quelli effettivamente lanciati come

comando ai motori

Vediamo che nonostante il primo metodo sia il migliore in quanto fornisce

ottimi risultati con una sola iterazione ha a monte una oneroso carico di analisi

Il metodo di inseguimento veloce fornisce buoni risultati con una notevole

diminuzione del numero di iterazioni rispetto al metodo del gradiente semplice

essi si sono quindi dimostrati metodi di qualitagrave efficiente per il ritrovamento di

posizioni desiderate Si ricorda che questi metodi sono stati qui analizzati come

banco di prova per possibili applicazioni in robot presenti in laboratorio dotati di

catene cinematiche piugrave complesse (LARP di UScarfogliero[39])

62 Risultati dinamici

Dallrsquoanalisi dei grafici ottenuti tramite le formule di Newton-Eulero

presentati nel capitolo precedente possiamo affermare che i motori utilizzati sono

stati correttamente calibrati in merito di forze e torsioni a cui sono sottoposti

durante il passo

Variando il tempo di esecuzione dei movimenti otteniamoli seguente

grafico

Sperimentazione e analisi dei risultati 125

Figura 72 Grafico torsione con interpolazione limitata a 2 frame

Riducendo di molto il valore di interpolazione come si puograve vedere di

grafici i motori subiscono delle variazioni di carico molto forti in istanti

ravvicinati in quanto come giagrave piugrave volte affermato non esiste un controllo in

accelerazione e velocitagrave Vediamo inoltre come i valori di picco del giunto della

caviglia della zampa b trovati sono in stretta similitudine con i parametri misurati

nei rilevamenti del sensore di pressione posto sotto la zampa stessa I due grafici

simili nellrsquoandamento presentano come unica differenza la misura dellrsquoimpatto

con il suolo nel grafo della pressione viene rilevato mentre la torsione del motore

non evidenzia le forze di repulsione del suolo ma solo le forze i momenti e forza

di gravitagrave sullrsquoasse rotoidale del giunto

Sperimentazione e analisi dei risultati 126

Notiamo comunque che nonostante i picchi subiti i valori rimangono nei

limiti proposti dalla HITEC

Il cedimento strutturale riscontrato egrave stato quindi attribuito a imprecisioni

di laboratorio avvenute per inesperienza iniziale

621 Caratteristiche negative dei motori

6211 Velocitagrave

Una nota negativa nellrsquoutilizzo di questi servo attuatori va perograve apostrofata

in merito alla velocitagrave di rotazione che rimane di gran lunga inferiore a quella

dichiarata dalla casa costruttrice ( 023 sec60deg con carico 018 sec60deg a vuoto)

6212 Alimentazione

Un problema riscontrato durante le prove sul campo riguarda

lrsquoalimentazione I motori vengono alimentati direttamente dalla PIC che genera i

segnali la quale egrave a sua volta alimentata da un trasformatore in grado di fornire

circa 35A alla tensione di utilizzo di 6V Dopo aver riscontrato dei problemi

durante lrsquoutilizzo di piugrave motori in simultanea siamo andati a verificare i valori

effettivi di corrente assorbita a run-time Il valore dichiarato di 900mA (senza

carico) sulle specifiche HITEC [28] consentirebbe il movimento di pressocheacute tutti

i motori in simultanea ma con carico applicato si sono riscontrati valori di picco

di 18A Essendo improbabile che tutti i 12 motori vengano utilizzati in

contemporanea e sotto massimo sforzo non egrave necessario dover fornire

costantemente 216A ma risulta comunque chiaro che in alcuni casi la corrente

fornita non egrave sufficiente e ciograve causa malfunzionamenti alla PIC Oltre alla

necessitagrave di acquistare un trasformatore piugrave potente sarebbe opportuno separare

lrsquoalimentazione dei motori da quella della PIC o perlomeno apportare le

necessarie modifiche affincheacute la corrente fornita al processore non sia

strettamente dipendente da quella assorbita dai motori

Sperimentazione e analisi dei risultati 127

63 Caratteristiche del percorso

Solitamente la deambulazione per sistemi legged richiede al robot di essere

fornito di un considerevole numero di sensori per lrsquoanalisi dellrsquoambiente

La realizzazione di un nuovo algoritmo che facendo cooperare elementi di

cinematica e ricerca matematica permette la camminata fornisce un efficiente

mezzo di analisi

I dati a disposizione ci permettono di affermare che lrsquoalgoritmo di

creazione delle mappe e ricerca di percorsi minimi presenta ottime risposte a

differenti tipologie di ambienti proposti

Tra le principali doti di cui esso dispone ci permettiamo di sottolineare la

velocitagrave computazionele e la semplicitagrave di utilizzo

Inserendo infatti semplicemente le dimensioni dellrsquoarea drsquoazione e la

definizione delle coordinate dellrsquoostacolo esso rileva il percorso minimo che ci

conduce al target in tempistiche ridotte

La parte innovativa di tale algoritmo permette non solo di generare il

percorso ma di delegare al sistema la scelta del passo da intraprendere nel singolo

istante basandosi semplicemente su coordinate geometriche e su un data base di

posizioni possibili

La fase di decisione del passo da intraprendere puograve essere considerato un

buon risultato di ricerca nella creazione della prima attivitagrave celebrale di ASGARD

Sperimentazione e analisi dei risultati 128

Figura 73 Esempi di percorsi provati a simulatore

Capitolo 7 Conclusioni e sviluppi futuri

Conclusioni e sviluppi futuri 130

71 Risultati raggiunti

Il percorso di analisi svolto ci ha permesso di realizzare un prototipo di

robot quadrupede tra i piugrave leggeri presenti nella ricerca Costriuito con materiali

tecnologicamente avanzati che gli garantiscono particolari doti di elasticitagrave e

torsione richiede anche per il movimento semplici attuatori utilizzati

abitualmente nellrsquoambito del modellismo

Queste considerevoli doti pongono ASGARD in una rilevante posizione per

la realizzazione futura di consistenti progetti di Trot gait deambulazione in

ambienti ostili e superamento di ostacoli

Nonostante il nostro robot non sia fornito come GEO (vedi cap3) di una

spina dorsale adattabile la camminata da noi implementata gli fornisce stabili

posture che gli consentono un movimento rapido nellrsquoambiente

Tale innovativa camminata permette infatti al nostro robot tempistiche di

movimento per nulla invidiabili a Patrush o a Tekken (vedi cap3)

Concludendo questo lavoro possiamo affermare di aver realizzato un

potente mezzo di analisi della camminata statica e dinamica dimostrandosi

estremamente utile nelle prime fasi di analisi e nella realizzazione pratica

successiva

Essendo il nostro robot tuttora sprovvisto di sensori ci egrave parso utile

implementare un algoritmo di ricerca del percorso minimo in ambiente con

ostacoli in posizioni note

A tal fine abbiamo pensato di far cooperare diversi settori di ricerca

rielaborando algoritmi di ricerca operativae applicandoli a mappe di ambienti

Il notevole risultato ottenuto permette ad ASGARD di riconoscere

lrsquoambiente nonostante non ottenga feedback dallo stesso Questo algoritmo

rappresenta il primo sostanziale passo per la creazione di un sistema di

apprendimento per rinforzo intelligente per il nostro robot

Conclusioni e sviluppi futuri 131

La comunicazione con i servo motori ha permesso un primo reale

interfacciamento tra macchina e robot e lo studio del movimento ha permesso al

robot di compiere i suoi primi passi

72 Progetti futuri

Attualmente il robot egrave in grado di deambulare in ambiente piano e molte

sono le applicazioni e le migliorieche potrebbero essere aggiunte al controllo del

nostro automa

721 Modifiche meccaniche

Miglioramento del giunto passivo che si trova nella caviglia la fine di

realizzare un sistema mossa-smorzatore[40] che riesce ad attuire gli urti e le

oscillazioni presenti nellrsquoimpatto durante lrsquoappoggio della zampa al terreno

A tal scopo egrave stato realizzato il primo rudimentale progetto di

reingegnerizzazione del giunto ottenendo il seguente risultato

Figura 74 Caratteristiche del progetto di zampa realizzato si possono notare le

torsioni possibili su due assi

Conclusioni e sviluppi futuri 132

In esso si puograve notare come il giunto del piedino sia diventato

completamente mobile regolato solamente dalla costante elastica delle molle che

puograve essere a sua volta regolata dalle viti presenti sulla base del piedino

Il sistema molla-smorzatore egrave in grado di immagazzinare energia durante

lrsquoimpatto con il suolo e di riutilizzarla per il riposizionamento in aderenza

perfetta

Ulteriore miglioria consigliata egrave lrsquoincremento dei sensori al fine di

permettere al robot una conoscenza piugrave vasta e piugrave autonoma dellrsquoambiente

esterno Un ritorno di valori sensoriali inoltre migliorerebbe il programma da noi

realizzato permettendo la reale acquisizione di dati esterni e non forniti da utente

Il sensore fino ad oggi presente ci permette semplicemente di capire i

carichi presenti sulla zampa ma non ci fornisce ulteriori informazioni Ponendo un

sensore su ogni zampa e migliorando la struttura portante di ogni singola

cavigliaverrebbero forniti dati utili nel valutare il corretto posizionamento della

zampa e cioegrave la corretta esecuzione di ogni passo

Al fine di un futuro miglioramento della parte sensoriale egrave stata condotta

una ricerca riguardante i migliori sensori disponibili sul mercato che meglio si

adattano alle nostre problematiche tale ricerca viene presentata in Appendice A

722 Miglioramenti Hardware

Un ulteriore miglioramento egrave richiesto nella comunicazione tra computer e

scheda di comando degli attuatori

Questa scheda non permette tuttora la programmazione della PIC presente

su di essa andrebbe rivisto il circuito presente in modo da sfruttare anche i canali

di ritorno in lettura in modo da sfruttare questi ultimi per feedback sensoriali

Questo miglioramento permetterebbe lrsquoutilizzo della scheda come interfaccia di

inputoutput del robot

Conclusioni e sviluppi futuri 133

Di primaria necessitagrave egrave la differenziazione dellrsquoalimentazione dei motori

dallrsquoalimentazione della scheda per non compromettere il corretto funzionamento

della PIC

723 Miglioramenti Software

Raggiunto lrsquoobiettivo di una buona camminata quasi-statica si puograve pensare

di integrare un controllore on-board aggiungere sistemi di trasmissione wireless e

unrsquoalimentazione autonoma per rendere il robot indipendente dalla postazione

fissa

Come si puograve notare i campi di ricerca sono molto vasti da semplici

migliorie hardware al campo di Intelligenza Artificiale per dotare il robot di

potenzialitagrave che lo rendano il piugrave possibile un emulatore dei comportamenti

naturali di un mammifero

73 Conclusioni finali

A causa della complessitagrave dellrsquoanalisi e delle difficoltagrave implementative

riscontrate alcune parti richiedono ancora un grosso intervento per arrivare a

efficienti strumenti di precisione per lrsquoattuazione dei movimenti

Sono comunque da sottolineare i grandi passi compiuti In quanto in poco

piugrave di un anno il progetto egrave stato creato e messo in pratica riuscendo ad arrivare

ad un passo cruciale per il corretto funzionamento

Il continuo progresso e il continuo impegno potranno portarci in un futuro

non troppo lontano alla creazione di amici elettronici in grado di giocare con noi

e di muoversi come farebbe un normale amico a quattro zampe

Lrsquointroduzione inoltre di sistemi di camminata dinamica intelligente in

qualsiasi ambiente porterebbe evoluzioni significative anche in ambito di bio-

ingegneria ambientale rendendo in questo modo possibile lrsquoacquisizione di dati

Conclusioni e sviluppi futuri 134

provenienti da habitat inaccessibili allrsquouomo quali crateri di vulcani profonditagrave

marine o pianeti del sistema solare permettendo cosigrave una crescita culturale

dellrsquointera umanitagrave

Bibliografia

[1] NDiolaiti ldquoSistemi di navigazione per robot mobili in ambienti sconosciutirdquo

Thesis 2001

[2] J Borenstein e L Feng ldquoMeasurement and correction of systematic odometry

errors in mobile robotsrdquo In IEE Transactions on Robotics and Automation

vol7 NO 12 pag 869-880 1996

[3] KS Chong e L Kleeman ldquoAccurate odometry and error modelling for

mobile robotrdquo In Proceedings of IEEE International Conference on Robotic

and Automation pag 2783-2788 Albuquerque New Mexico 1997

[4] U Gerecke e N Sharkey ldquoQuick and Dirty Localization for a Lost Robotrdquo

University of Sheffield 1999

[5] B Yamauchi A Shultz e W Adams ldquoMobile robot exploration and map-

building with continuous localizationrdquo In Proceedings of IEEE International

Conference on Robotic and Automation pag 3715-370 Leuven Belgium

1998

[6] H TakedaC Facchinetti JC Latombe ldquoPlanning the motions of a mobile

robot in a sensory uncertainty fieldrdquo In IEEE Transactions on Pattern

Analysis and Machine Intelligence pag 1002-1017 oct 1994

[7] JP Laumond editor ldquoRobot Motion Planning and Controlrdquo Published 1999

[8] C Sanitati ldquoAnalisi e implementazione di andature per il robot quadrupede

Sony Aibordquo Thesis 2001

[9] MH Raibert ldquoLegged robots that balancerdquo MIT Press Cambridge

[10] httpmarsroversjplnasagovgalleryspacecraft

Bibliografia 136

[11] AAbourachid ldquoA new way of analysing symmetrical and asymmetrical

gait in quadrupedsrdquoCRBiologiesvol 326pag 625-630May 2003

[12] JAVilenskyJACook ldquoDo quadrupeds require a change in trunk posture

to walk backwardrdquoJournal of Biomechanicsvol33pag 911-916March 2000

[13] Oricom technology ldquoQuadruped Locomotion- Musing about running dogs

and othe 4-legged creaturesrdquo(httpwwworicomtechcomprojectslegshtm)

[14] RKurazumeKYoneda e SHiroseFeedforward and Feedback dynamic

trot gait control for quadruped walking vehicleAutonomous Robotsvol12

pag 157-1722002

[15] H Kimura I Shimoyama e H Miura ldquoDynamics in the dynamic walk of

a quadruped robotrdquo RSJ Advanced Robotics vol4 no3 pp283-301 1990U

(httpwwwkimuraisuecacjpfacultiesColliedynamic-walk-of-quadrupedhtml)

[16] M Raibert H Brown MA Chepponis EF Hastings S Murthy e FC

Wimberly ldquoDynamically Stable Legged Locomotion Second Report to

OARPArdquo Robotics Institute Carnegie Mellon University January 1983

(httpwwwaimiteduprojectsleglabrobotsquadrupedquadrupedhtml)

[17] MH Raibert M Chepponis and H Brown ldquoRunning on Four Legs As

Though They Were Onerdquo IEEE Journal of Robotics and Automation Vol

RA-2 No 2 June 1982 pp 70-82

[18] STalebiIPoulakakisEPapadopoulos e MBuehler ldquoQuadruped robot

running with a bounding gaitrdquoCenter for Intelligent MachinesMcGill

UniversityMontreal

[19] MA Lewis e LS Simo ldquoNeurocore Evolution Development and

Roboticsrdquo Sumitted to IROS 96 Osaka(httpuirvliaiuiucedutlewispicsgeoIIhtml)

[20] Y Fukuoka H Kimura e AH Cohen ldquoAdaptive Dynamic Walking of a

Quadruped Robot on Irregular Terrain based on Biological Conceptsrdquo Int

Journal of Robotics Research Vol22 No3-4 pp187-202 2003

[21] MA Lewis ldquoGait Adaptation in a Quadruped Robotrdquo Autonomous

Robot 2002 in PressIguana RoboticsInc

[22] httpwwwrobocuporg

Bibliografia 137

[23] httpwwwaibo-europecomdownloadsAIBO_Storypdf

[24] LSteel e FKaplan ldquoAibos first wordsThe social learning of language and

meaningrdquo Sony Computer Science laboratory Vub Artificial Intelligent

laboratory

[25] httpwwwopencaeczhwhw_sony-robot_aibohtml

[26] httpprojectspowerhousemuseumcomhscaiboteardownhtm

[27] M Piralli ldquoProgetto quadrupede Politecnico di Milanordquo 2004

[28] HITEC httpwwwhitecrcdcom file HS475HbpdfServomanualpdf

[29] Proprieta chimiche ldquopolicarbonatodocrdquo da

httpwwwedilportalecomedilcatalogo0EdilCatalogo_SchedaProdottoaspI

DProdotto=1897

[30] DCrespi e F Gandola ldquoScheda di interfacciamento per servomotorirdquo2004

[31] L Sciavicco e B Siciliano ldquoRobotica industriale ndash Modellistica e

controllo di Manipolatorirdquo EdMc-Graw-Hill seconda edizione 2000

[32] G Gini e V Caglioti ldquoRoboticardquo Ed Zanichelli 2003

[33] MFolgheraiter ldquoEsempi di cinematica direttainversardquoPolitecnico di

Milano Robotica 2004

[34] HElias ldquoInverse Kinematics - Improved Methodsrdquo2004

httpfreespacevirginnethugoeliasmodelsm_ik2htm

[35] JMinguez e LMontanoNearness Diagram (ND) navigationcollision

avoidance in troublesome scenariosIEEE Transaction on Robotics and

Automationvol 20NO 1 February 2004

[36] AArleoJRMillan e DFloreanoEfficient learning of variable-resolution

cognitive maps for autonomous indoor navigationIEEE Transaction on

Robotics and Automationvol 15NO 6 December 1999ruary 2004

[37] S Vigno ldquoAlgoritmo di Dijkstrardquo 2001

[38] EWDijkstra ldquoA note on two problem in connexion with graphsrdquo

Numeriche Mathematik 1269-271 1959

[39] U Scarfogliero ldquoProgettazione e sviluppo di un robot bipede a dodici

gradi di libertagrave con controllo elastico-reattivordquo Thesis 2004

Bibliografia 138

[40] PRoccoControlloimpedenzaPolitecnico di MilanoRobotica Industriale

2004

Appendice A

Appendice A 140

i Sensori nei robot a zampe disponibili sul mercato

Ersquo stata compiuta una accurata ricerca sui componenti che potrebbero

essere montati su ASGARD per migliorarne le abilitagrave e le reazioni con lrsquoambiente

esterno e su tecniche di utilizzo di semplici sensori per fornire feedback rilevanti

Tra i sensori presenti in commercio egrave stata effettuata una scrematura in

merito a efficienza peso ingombro e prezzo in quanto si ricorda la precaria

stabilitagrave del robot e il fattore sovvenzione scolastica

Forniremo dei principali sensori trovati anche una rapida descrizione del

funzionamento dello stesso per meglio comprendere le migliorie e le potenzialitagrave

che esso potragrave donare al nostro progetto

ii Dead Reckoning Stima della posizione

Dead reckoning deriva da ldquodeduced reckoningrdquo e consiste nellrsquoutilizzare

una procedura matematica per determinare la posizione istantanea di un robot a

partire dalla conoscenza dalle posizioni e velocitagrave precedenti lungo un certo

periodo di tempo Questo sistema ha ovviamente lo svantaggio di accumulare

errori della stima e per questo periodicamente la misura deve essere corretta con i

valori reali o con quelli forniti da qualche altro strumento Spesso la stima della

posizione viene chiamata odometria39[41]

Per fornire la posizione corrente possono essere utilizzate le seguenti

tipologie di sensori

39 Odometry

Appendice A 141

ii1 Encoder Ottici

Gli encoder ottici sono sensori che vengono utilizzati per effettuare misure

di rotazione Possono essere utilizzati sia per robot a ruote per misurarne la

velocitagrave di avanzamento sia per un robot con gambe per misurare lrsquoangolo di

rotazione degli arti artificiali

Si sono sviluppati due diversi tipi di encoder ottici encoder incrementali e

encoder assoluti

Gli encoder ottici incrementali servono principalmente per stabilire la

velocitagrave di rotazione mentre quelli assoluti forniscono istantaneamente lrsquoangolo

di rotazione

ii2 Encoder ottici incrementali

Gli encoder ottici incrementali sono formati da un disco routante solidale

con lrsquoasse di rotazione del sensore da un led e da due sensori ottici (tipicamente

due fotodiodi) Il disco egrave suddiviso in settori trasparenti e settori opachi Il numero

dei settori in genere egrave una potenza di 2 cioegrave 64128256 etc Il led emette una luce

sul lato del disco mentre i due fotodiodi la captano sul lato opposto Grazie alle

regioni opache si ha la possibilitagrave di vedere degli impulsi sul fotodiodo che

permettono di stabilire ad esempio la velocitagrave di rotazione ma non bastano ad

avere una indicazione sul verso della rotazione stessa Per sapere se la rotazione egrave

oraria o antioraria si egrave utilizzato un secondo fotodiodo collegato come in figura

Figura 75 Struttura encoder ottico

Appendice A 142

Come si puograve notare i due fotodiodi avranno unrsquouscita molto simile ma

sfasata causata dalle regioni opache del disco questo sfasamento ci permetteragrave di

capire il verso di rotazione

La velocitagrave di rotazione risulta essere proporzionale in modo inverso alla

larghezza degli impulsi in uscita

Questo tipo di encoder egrave molto economico tanto da essere utilizzato nelle

seconda metagrave degli anni novanta nei mouse da PC

Encoder ottico presente in commercio

ii21 EL30 E-H-I Eltra srl

Serie encoder miniaturizzati Oslash30 per applicazioni ove sia richiesto il

minimo ingombro possibile pur mantendo ottime prestazioni[42]

- Risoluzioni fino a 1000 impgiro con zero

- Varie configurazioni elettroniche disponibili con

alimentazioni fino a 24 Vdc

- Frequenza di esercizio fino a 100 Khz - Uscita

cavo eventuale connettore applicato alla fine del

cavo -

- Velocitagrave di rotazione fino a 3000 rpm - Grado di

protezione fino a IP54tensione di alimentazione 5 V

e peso di 50 g

Figura 76 Encode incrementale

EL 30 E-H-I

ii3 Encoder ottici Assoluti

Gli encoder ottici assoluti a differenza di quelli incrementali forniscono in

uscita direttamente una configurazione di bit che indicano la posizione angolare

Il dispositivo egrave composto di un disco suddiviso sempre in settori ma con

piugrave tracce una sorgente di luce e un numero di sensori di luce pari al numero di

tracce

Appendice A 143

Ad ogni traccia corrisponde un bit e ad ogni settore corrisponde un livello

Il numero di tracce e setori egrave scelto in modo da utilizzare tutte le combinazioni

possibili e quindi i livelli saranno traccenum2

Esistono perograve diversi modi per codificare ogni livello Il metodo piugrave

semplice egrave partire da 0 e incrementare di 1 il numero e utilizzare la normale

codifica binaria

Il sistema risulta essere rischioso quando due livelli consecutivi nella

codifica hanno piugrave di un bit diverso per questo motivo sono state introdotte

diverse codifiche come il codice Gray che riescono ad evitare cosigrave il problema

prima citato

Figura 77 Essempi di disco Figura 78 Struttura di rilevamento

Presenti sul mercato

ii31 Sensori ottici CORRSYS-DATRON

Tipologia a 2 assi (trasversalelongitudinale) per la misura accurata di

velocitagrave distanza percorsa angolo di imbardata[43]

S-CE con integrato giroscopio ottico Come versione S-CE ma con

incorporato un giroscopio a fibra ottica range 200degsec linearitagrave 02 1000 Hz

banda passante per avere maggiori info sul comportamento dinamico del veicolo

SL-R Ultralight Versione ultralight Racing del modello S-CE

SL 200 Sensore ottico biassiale per la misura senza scivolo di dinamiche

trasversali su larghe gamme di funzionamento Il sensore SL-200 egrave caratterizzato

da dimensioni ridottissime (ultra piatto) e per la possibilitagrave di installazione su

piccoli veicoli

Appendice A 144

La serie di encoder assoluti multigiro paralleli EAM[42] sono stati studiati

precisioni anche su esteso sviluppo lineare

sono disponibili con risoluzioni fino a 13 bit e quindi 8192 PosizioniGiro sul giro

e fino

ii32 EAM Parallelo-SSI Eltra srl

per applicazioni che richiedono alte

a risoluzioni di 12 bit 4096 Posizionigiro per i giri Le configurazioni di

uscita sono sia a codice gray che binario e le elettroniche di uscita coprono tutti i

campi di applicazione essendo disponibili in formato NPN NPN OPEN

COLLECTORPNP e PUSH PULL

Figura 79 Encoder assoluto EAM Parallelo ndashSSI

ii4 S

Sensori di grande utilitagrave per la localizzazione di oggetti presenti

un robot sono sensori che sfruttano lrsquoeffetto Doppler

Largamente utilizzati in ambito marino e aeronautico essi misurano la velocitagrave

del me

ensori Dopler

nellrsquoambiente di azione di

zzo in riferimento alla posizione del suolo Lrsquoeffetto doppler si basa sul

principio di funzionamento dello shift di frequenza unrsquoonda che viene ricevuta o

riflessa da una sorgente che si muove rispetto al mezzo In ambito terrestre le

onde spedite e ricevute sono microonde sonore

Appendice A 145

In relazione alla figura riusciamo ricavare le seguenti regole di

funzionamento

αα cos2cos O

DDA F

cFVV ==

Dove

AV = velocitagrave del terreno

DV = misura della velocitagrave tramite il sensore

α = angolo di declinazione

c = velocitagrave della luce

= scostamento in frequenza per effetto Doppler DF

OF = Frequenza emessa

La difficoltagrave di utilizzo di questo sensore diventa consistente nellrsquoutilizzo

su robot mobili in terreni accidentali in quanto gli spostamenti verticali

influiscono sulla misura di e sulla stima di DV AV

Appendice A 146

ii41 Robot Italy SRF04

Figura 80 Sensore SRF04

LSRF04 [44] e un sensore ad

ultrasuoni che unisce delle ottime

prestazioni ad un costo veramente

conveniente utilizza una tecnologia a

ultrasuoni molto semplificata

Questo sensore e dotato di un

microcontrollore che assolve tutte le

funzioni di calcolo ed elaborazione e

sufficiente inviare un impulso e leggere

leco di ritorno per stabilire con facilita

la distanza dellostacolo o delloggetto

che si trova davanti

iii Heading Sensor

Tramite lrsquoutilizzo di questi sensori si riesce in parte a compensare parte le

carenze di odometria Attraverso la stima della posizione ogni piccolo errore si

sommeragrave al precedente nella stima della posizione provocando uno scostamento

via via crescente tra la posizione reale e quella stimata Ersquo di grande aiuto

individuare immediatamente e correggere alcuni di questi errori

iii1 Giroscopio meccanico

Il giroscopio meccanico basato sulla ldquoinerziona di un rotorerdquo egrave conosciuto

giagrave dai primi del 1800 Il primo giroscopio fu costruito in germania 1810 da GC

Bohnenberger Nel 1852 il celebre francese L Foucault mostrograve che il giroscopio egrave

Appendice A 147

in grado di percepire la rotazione terrestre Essa puograve essere scomposta in due

componenti lungo un immaginario asse verticale e lungo un asse tangente alla

superficie Al polo la componente verticale saragrave di 15degora e spostandosi verso

lrsquoequatore diminuiragrave fino ad annullarsi Come per gli encoder ottici anche per i

giroscopi esistono due metodologie per fornire mediante una tensione o una

frequenza lo spostamento istantaneo o lrsquoangolo assoluto di rotazione

Figura 81 Giroscopio meccanico

Vediamo come funziona un giroscopio meccanico il rotore pilotato

elettricamente egrave sospeso ai propri assi da una coppia di cuscinetti con attrito

bassissimo I cuscinetti a loro volta sono montati su un anello ruotante chiamato

anello di sospensione interna (inner gimbal ring) Questo anello gira a sua volta

allrsquointerno di un altro anello (outer gimbal ring) La rotazione dellrsquoanello interno

definisce lrsquoasse x del giroscopio che egrave perpendicolare con lrsquoasse di rotazione del

rotore lrsquoanello esterno definisce lrsquoasse verticale del giroscopio In questa struttura

egrave da notare come lrsquoasse orizzontale saragrave allineato con il meridiano in questo modo

si potragrave calcolare la rotazione orizzontale e verticale in funzione a quella terrestre

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice

FT445533

Nuovo regolatore di giri con la piugrave moderna tecnica microprocessore con

Display LC ad 8 posti Il regolatore di giri GV ndash1 [45] mantiene la testa del rotore

Appendice A 148

in sistema di giri costante Cosigrave diventa possibile un movimento piugrave preciso e

sensibile

Al contrario di altri regolatori il GV-1 controlla anche il numero di giri del

motore Una curva a 3 punti regolabile permette la prescrizione del numero dei

giri tramite un commutatore a tre scatti oppure un canale proporzionale Nel

display viene indicato a scelta il numero di giri del motore o del rotore dove viene

memorizzato il numero di giri massimale e richiamabile in qualsiasi momento

Questo modello risulta compatibile con i servo da noi utilizzati

Programmi

bull Indicazione del numero di giri (rotore oppure

motore)

bull Memoria del numero di giri massimale

bull Messa a punto del rapporto di riduzione

bull Regolazione del punto di attivazione e

disattivazione

bull Impostazione del campo di regolazione del

numero di giri

bull Impostazione del numero di giri massimale

bull Automatica disattivazione a partire

dallacuteimpostazione del numero di giri

bull Messa a punto di una curva di regolazione a tre

punti

bull Messa a punto 3D

bull Curva di messa a punto miscela a 9 punti

bull Test magnetico con indicazione del campo

intensitagrave

bull Misurazione della tensione di batterie

bull Allarme di bassa tensione

bull Messa a punto del servo di gas ATV

Caratteristiche Tecniche

Dimensioni Regolatore 56x305x16 mm

Dimensioni Sensore oslash 10 x 16 (27) mm

Peso Regolatore 34 g

Peso Sensore 4 g

Alimentazione 38 ndash 6 V

Campo di regolazione da 1000 a 21000

girimin

Figura 82 Futaba regolatore di giri

GIVERNOR GV-1

Appendice A 149

iii12 Futaba Giroscopio FP GY 240 AVCS

Grazie allrsquoutilizzo congiunto del nuovo sensore SMM40 e della nuova

tecnica di interruttore altamente integrata SMD41 la Futaba egrave riuscita a costruire

un giroscopio di soli 25g con dimensioni decisamente contenute 27 x 27 x 20

mm

Nonostante questa minima dimensione il giroscopio egrave equipaggiato sia

con il modulo normale che quello AVCS (Heading Hold)[46]

Oltre ai vantaggi rappresentati dalle dimensioni e dal peso questo sensore

non presenta alcuna deriva dovuta alla temperatura ed egrave ampiamente insensibile

alle vibrazioni ed ai colpi

Grazie ad una elaborazione puramente digitale del segnale questo

giroscopio reagisce molto rapidamente

Caratteristiche tecniche Dimensioni

27x27x20 mm PesoWeight

25 g Alimentazione

3-6 V Temperatura d`esercizio

-10degC +50degC Figura 83 Giroscopio FP GY 240 AVCS

iii2 Giro-bussola

Questo dispositivo integra le funzionalitagrave del giroscopio e della bussola per

individuare il Nord Lrsquoindividuazione del nord egrave importante percheacute lrsquoasse di

rotazione del rotore egrave orientato lungo un meridiano lrsquoasse orizzontale del

giroscopio non risente della rotazione terrestre La direzione e lrsquointensitagrave della

40Silicon Micro Machine misure laser posizioni 41 Standar ISO9000

Appendice A 150

misura dipende dallo scostamento tra lrsquoasse del rotore e la direzione dellrsquoasse

terrestre

iii3 Giroscopio-Girobussola a fibre ottiche

Il principio su cui si basa il funzionamento dei giroscopi ottici fu scoperto

dal fisico francese Sagnac nel 1913 ed ha trovato inizialmente una sua

applicazione nella costruzione di interferometri e successivamente nei giroscopi

laser ad anello chiuso (RLG Ring Laser Gyro) Tale principio consiste nello

sdoppiare un unico raggio luminoso in due diversi raggi che viaggiano su un

medesimo percorso ottico ad anello chiuso ma in direzioni opposte un raggio

ruota in senso orario e lrsquoaltro in senso antiorario

Figura 84 Schema di principio di un giroscopio laser ad anello

Nei giroscopi RLG[47] i raggi rimbalzano fra vari specchi come mostrato

in Figura 83 nei giroscopi FOG (a fibre ottiche) i raggi scorrono dentro un fascio

di fibre ottiche lungo anche 5 Km ed avvolte in spire del diametro di alcuni

centimetri

Appendice A 151

Quando un raggio si propaga la sua fase cambia continuamente con la

distanza L percorsa e precisamente di 2π radianti per ogni tratto pari alla

lunghezza drsquoonda λ si ha pertanto

λπα L2

=

con λ = c f dove f egrave la frequenza del raggio luminoso e c egrave la velocitagrave

della luce

Nel caso in cui il giroscopio sia fisso rispetto ad un sistema inerziale i due

raggi percorrono lo stesso cammino anche se in direzioni opposte arrivando nel

ricevitore con la stessa fase Diversa egrave la situazione in cui lrsquointero sistema ruota

attorno ad un asse passante per O (asse sensibile del giroscopio) e con velocitagrave

angolare Ω in tal caso il percorso del raggio concorde con il verso di rotazione

tende ad allungarsi mentre quello dellrsquoaltro raggio tende ad accorciarsi per cui la

differenza di fase Φ dei segnali che arrivano nel ricevitore non egrave piugrave nulla ma

assume la seguente espressione

Ω=∆=Φλ

παcLD2

Dove

L = lunghezza del percorso ottico o delle fibre ottiche nei FOG

D = diametro del percorso o della bobina nei FOG

Ω = velocitagrave angolare del giroscopio attorno al suo asse sensibile

Il fattore davanti alla velocitagrave angolare Ω egrave chiamato fattore di scala ed egrave

un indicatore della sensibilitagrave dello strumento piugrave egrave alto tale fattore piugrave lo

strumento egrave in grado di misurare velocitagrave angolari molto basse come ad esempio

nel caso di quella terrestre Come si vede il fattore dipende dai dati geometrici del

percorso ottico e precisamente nel caso dei FOG dalla lunghezza delle fibre

Appendice A 152

ottiche e dal diametro delle spire Analizzando la precedente espressione si

comprende come a paritagrave di volume i giroscopi a fibre ottiche (FOG) siano molto

piugrave sensibili dei giroscopi laser (RLG)

Figura 85 Schema tipico di un giroscopio a fibre ottiche

iii31 La funzione giroscopica

Il FOG non egrave in grado da solo di indicare la direzione del nord come nei

normali giroscopi di tipo meccanico con sospensione cardanica esso egrave soltanto in

grado di misurare la componente della velocitagrave angolare terrestre lungo il suo asse

di sensibilitagrave

Per ottenere la funzione orientamento desiderata si montano tre giroscopi

disposti lungo una terna di assi cartesiani X Y e Z che puograve coincidere con i tre

assi del robot per definire il piano orizzontale si impiegano inoltre due sensori di

livello La tecnologia utilizzata egrave nota come strapdown ossia con i giroscopi

montati rigidamente su un piano fisso costantemente orientato e parallelo rispetto

ad un piano di riferimento come nella navigazione inerziale di tipo tradizionale

Nel caso di oggetto fermo lrsquounica velocitagrave angolare a cui esso risulta essere

soggetto egrave quella terrestre per cui i tre giroscopi misurerebbero le seguenti

componenti

Appendice A 153

yTx CosPCosϕρρ =

yTy SinPCosϕρρ minus=

ϕρρ Sinz T=

dove egrave facile calcolare lrsquoangolo di prova nel caso siano note la velocitagrave

ρ

yP

Τ e la latitudine ϕ

Nel caso di moto con velocitagrave VN si ha una velocitagrave angolare

supplementare pari a VNRT diretta lungo -y (RT egrave il raggio della Terra) A questa

velocitagrave si sommano inoltre altre velocitagrave angolari continuamente variabili

dovute ai moti attorno ai suoi tre assi e precisamente i moti di rollio di

beccheggio e di imbardata

yyTx CosPCos ρϕρρ +=

oT

NyTy R

VSinPCos ρϕρρ ++minus=

aT Sinz ρϕρρ +=

In realtagrave il problema viene risolto definendo inizialmente alla partenza un

sistema cartesiano di riferimento con gli assi X0 e Y0 situati nel piano orizzontale

e lrsquoasse Z0 che coincide con la verticale In tale situazione i segnali provenienti

dai sensori di livello devono essere nulli

Durante la camminata la continua misura delle tre velocitagrave angolari e

dellrsquoassetto del robot mediante i sensori di livello consentono di definire lrsquoesatto

orientamento della terna cartesiana T (X Y e Z) rispetto alla terna di riferimento

iniziale T0 (X0 Y0 e Z0) Un opportuno calcolatore provvede a convertire gli

Appendice A 154

angoli di sfasamento dovuti allrsquoeffetto Sagnac nelle corrispondenti velocitagrave

angolari integrando le velocitagrave si ottengono gli angoli

dta iii int+=+ ρα1

da cui egrave poi possibile ricavare gli angoli di rollio di beccheggio e di

imbardata Ogni ciclo di calcolo deve avere una durata molto breve inferiore

normalmente al tempo impiegato dai segnali luminosi a percorrere la bobina di

fibre ottiche (∆t = Lc = 3 nsec per L = 1 m)

iii4 Giroscopio piezoelettrico

Utilizzano la forza di Coriolis per misurare la velocitagrave di rotazione

montando tre trasduttori piezoelettrici su un prima triangolare Se uno dei sensori

egrave eccitato alla sua frequenza di risonanza la vibrazione prodotta verragrave percepita in

eguale misura dagli altri due sensori Quando il prisma viene ruotato lungo il suo

asse longitudinale la forza di Coriolis risultante causeragrave una piccola differenza

nellrsquointensitagrave di vibrazione percepita dai due trasduttori la variazione di tensione

risultante egrave direttamente e linearmente proporzionale alla velocitagrave di rotazione

Appendice A 155

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03

Giroscopio miniaturizzato[44] 26x27x11mm per 7grammi di peso Puo

essere utilizzato per bilanciare o per compensare spostamenti indesiderati di

walkers e rover Utile anche per rilevare spostamenti

Figura 86 Modello GWS PG-03 Robot Italy

iii42 Giroscopio Piezoelettrico Enc-03ja

Ersquo componente elettronico di solo 21mm x 8mm[48] Ersquo in grado di

rilevare i cambiamenti nella rotazione pur essendo ultra-piccolo ultra-leggero

con una ultra rapida-risposta e a basso costo Usa il fenomeno della forza di

Coriolis per rilevare i cambiamenti nella velocitagrave angolare di rotazione

Limitazione le girobussole hanno una lettura massima di 300 gradi al secondo e

richiederanno la calibratura

Figura 87 Giroscopio Enc-03ja

Appendice A 156

iv Sensori geomagnetici

Nella stima della posizione inevitabilmente esistono degli errori e questi

vengono misurati durante il tempo e quindi egrave molto importante poter disporre di

una misura assoluta e poter compensare o correggere appunto questi errori

Il piugrave comune sensore di questo tipo egrave la bussola magnetica La

terminologia usualmente utilizzata per misurare un campo magnetico egrave la densitagrave

di flusso magnetico B misurata in Gauss(G) Altre unitagrave di misura sono la Tesla

(T) e gamma (γ ) dove 1 Tesla = Gauss = Gamma Lrsquointensitagrave media del

campo magnetico terrestre egrave 05 G e puograve essere rappresentato come un bipolo che

fluttua sia nel tempo che nello spazio situato a 440 chilometri dal centro e

inclinato di 11deg dallrsquoasse di rotazione terrestre Questa differenza tra il polo

magnetico e il polo terrestre egrave conosciuta come declinazione e varia in funzione

del tempo e della posizione geografica

410 910

I dispositivi che misurano i campi magnetici sono detti magnetometri Per

applicazioni su robot mobili i magnetometri piugrave utilizzati si dividono nelle

seguenti famiglie

bull Bussola magnetica meccanica

bull Bussola a effetto Hall

bull Bussola a magnetoreversiva

Prima di analizzare da vicino ogni singola famiglia va precisato un

problema molto importante il campo magnetico terrestre egrave spesso distorto nelle

vicinanze di strutture metalliche questo rende difficile lrsquoimpiego di tali sensori

allrsquointerno di edifici Tuttavia questo problema egrave possibile aggirarlo utilizzando

con essi ulteriori sensori

Appendice A 157

iv1 Bussola magnetica meccanica

La prima traccia nellrsquouso della bussola risale al 2634 AC Dal XIII secolo

utilizzata in tutto il mondo in campo marittimo W Gilber [1600] fu il primo ad

esporre teorie riguardanti campi magnetici presenti sulla superficie terrestre

Le prime bussole marine consistevano in aghi magnetizzati che

fluttuavano su pezzetti di sughero immersi in acqua Questo dispositivo egrave stato

raffinato fino ad arrivare oggi giorno ad essere composto da un paio di magneti

attaccati ad un disco graduato fluttuante in una composizione di acqua alcol e

glicerina

Lrsquoerrore tra nord magnetico e nord geografico egrave conosciuto come

deviazione della bussola

decdevit CFCFHH plusmnplusmn=

Dove

tH = Direzione giusta

iH = Direzione misurata

devCF = Fattore di correzione per la deviazione della bussola

decCF = Fattore di correzione per la declinazione magnetica

Unrsquoaltra fonte potenziale di errore consiste nel dip magnetico42 dovuto alla

componente verticale del campo magnetico terrestre Questo effetto varia in base

alla latitudine possiamo affermare che le linee di forza che agiscono sono

orizzontali allrsquoequatore e verticali ai poli Per questo motivo sugli aghi delle

bussole a volte sono montati dei pesetti che pessono essere spostati al fine di

contrastare questo effetto

42 Magnetic dip

Appendice A 158

iv2 Bussola a effetto Hall

I sensori ad effetto Hall sono basati sulle osservazioni di Hall(1979) che un

conduttore e un semiconduttore immersi in un campo magnetico mostrano una

differenza di potenziale ai loro capi Il vantaggio di questi sensori egrave la possibilitagrave

di misurare il flusso in modo statico I primi sensori costruiti avevano una

sensibilitagrave e una stabilitagrave paragonabile a quella dei fluxgate43 ma negli ultimi anni

egrave migliorata fino a raggiungere i Gauss e oltre Giagrave nei primi anni 60rsquo la

Marina mostrograve interesse a questo tipo di sensori e la Motorola costruigrave un certo

numero di prototipi per valutarne le potenzialitagrave La bussola della Motorola

montava due sensori ad effetto Hall per limitare gli effetti dovuti alle variazioni di

temperatura Ogni sensore era formato da una barretta di ferro- indio- arsenico di

2 x 2 x 01 millimetri inserito in un concentratore di flusso come si vede in Figura

87

310 minus

Il concentratore di circa 5 cm incrementava la densitagrave di flusso attraverso il

sensore di due ordini di grandezza [Willey 1964] lrsquouscita di tale dispositivo egrave un

treno di impulsi ad ampiezza variabile in cui lrsquoampiezza appunto egrave proporzionale

al valore misurato Fu riscontrata una buona linearitagrave fino a densitagrave di flusso di

0001 Gauss[Willey 1962]

Figura 88 Una coppia di sensori Hall (Lega di Indio-Ferro-Arsenico)

Maenaka allrsquouniversitagrave di tecnologia di Toyohashi in giappone sviluppograve

un sensore al silicio basato su due sensori Hall montati in disposizione ortogonale

43 Bussola fluxgate sfutta campi magnetici generati da spire azionati da corrente continua

Appendice A 159

Purtoppo i risultati di questo esperimento non furono dei migliori in

quanto il sensore costruito forniva un sensibilitagrave di 1 Gauss e il campo terrestre va

da 01 Gauss allrsquoequatore fino a 09 ai poli Di notevole interesse rimane per

lrsquoessere interamente costruito in un integrato e quindi lo rende molto pratico e di

elevato interesse commerciale

iv21 1490 Digital Compass Sensor

Questo sensore[49] fornisce informazioni su scostamenti in otto direzioni

misurando il campo magnetico della terra usando la tecnologia ad effetto Hall Il

sensore 1490 internamente egrave destinato per rispondere a cambiamento direzionale

simile ad una bussola riempita liquida Rinvieragrave al senso indicato da uno

spostamento di 90 gradi in circa 25 secondi senza overswing I 1490 possono

funzionare inclinato fino a 12 gradi con lerrore accettabile Egrave connesso facilmente

a circuiti digitali ed i microprocessori

Caratteristiche Specifiche Alimentazione 5-18 volt di CC 30 mA Uscite Apra il collettore NPN affondi 25 mA per il senso Peso 225 grammi Formato un diametro da 127 millimetri alto 16 millimetri Perni 3 perni da 4 lati sui centri del 050 Temperatura -20 - +85 gradi di C

Figura 89 1490 DCS

iv3 Bussola a magnetoreversiva

Questa tipologia di sensori egrave molto interessante per il range di sensibilitagrave

che coprono ad anello aperto che va da a 50 Gauss e coprono quindi

interamente la regione interessata del flusso terrestre Ad anello chiuso hanno un

210 minus

Appendice A 160

sendibilitagrave approssimativamente di Gauss [Lenz 1990] Presentano

ulteriormente un basso assorbimento di potenza piccole dimensioni che li

posizionano tra i primi posti nella scelta di componenti

610 minus

iv31 Philips bussola AMR

Uno dei primi sensori magneto resistivi impiegati per realizzare una

bussola magnetica egrave il KMZ10B costruito dalla Philips[50] Semiconductors nel

1996 La sensibilitagrave di questo dispositivo (approssimativamente 01 mVAmcon

alimentazione di 5 V DC) comparata con il campo magnetico terrestre massimo

implica che devono essere presi con molta considerazione gli errori dovuti alla

variazione della temperatura e alle variazioni di offset[Patersen1989]Un sistema

per ovviare a questi inconvenienti egrave utilizzare lrsquoeffetto flipping44

iv4 Bussola magnetoelastica

Utilizzare materiali magneto-elastici come materiali fondamentali di

sensori in campo magnetico ad alta precisioneIl principio su cui si basano questa

famiglia di componenti egrave la variazione del modulo di Young[51] in leghe

magnetiche quando introdotte in campo magnetico esternoIl modulo di elasticitagrave

di un materiale egrave semplicemente misurato come

εσ

=E

Dove

E = Modulo di elasticitagrave

σ = Tensione applicata

44 Flipping phenomenon non trattato in questa discussione

Appendice A 161

ε = Deformazione risultante

Se la tensione applicata rimane costante la deformazione egrave inversamente

proporzionale al modulo di elasticitagrave In alcune leghe E egrave molto pronunciato

questo permette al campo magnetico di essere accuratamente determinato

misurando la variazione di lunghezza di una lega opportunatamente sollecitata da

una forza costante Esistono due tecnologie che permettono di realizzare sensori

economici e molto precisi

bull Interferometric

bull Tunneling-trip

iv41 Metglas 2605S2

Metglas[52] egrave una lega di ferro boro silicio e carbonio Il sensore egrave

costituito da un nastro della lega che in presenza di campo magnetico esterno

mostra un certo allungamento (analisi sul nastro di vetro metallico sono avvenute

al laboratorio di SERC Rutherford Appleton) I dati di riflettivitagrave sono stati

analizzati le misure forniscono modelli che hanno permesso una valutazione del

profilo di magnetizzazione vicino alla superficie del nastro In Figura 89 egrave

mostrato il circuito utilizzato per misurare la variazione di lunghezza

dellrsquoelemento magnetoresistivo

Figura 90Circuito per misurare lrsquoallungamento delle striscia magnetoresistiva

Appendice A 162

v Sensori per la modellizzazione dellrsquoambiente

Molti sensori per mappare ambienti interni sono sensori di distanza per

questo motivo verranno esposti in questo testo alcuni tra i piugrave conosciuti

vi Sensori di distanza

Esistono differenti approci per ottenere questo tipo di misura

bull Sensori basati sul tempo di volo (TOF45) di un impulso di energia

emesso che si propaga e che viene riflesso dallrsquoostacolo

bull Sensori basati sulla differenza di fase introdotta sempre nella

riflessione di un segnale ma non impulsivo

bull Sensori basati su radar a modulazione di frequenza

vi1 Sensori basati sul tempo di volo

Il funzionamento consiste nel misurare il tempo di volo di un senale da un

trasmettitore al ricevitore il percorso effettuato mentre il tempo di percorrenza

risulta esserecdT 2

=∆ dove c egrave la velocitagrave della luce

In robotica la velocitagrave della luce non riesce a trovare applicazioni pratiche

e trovano utile impiego le onde acustiche la cui velocitagrave di propagazione egrave

v=340ms I vantaggi che si trovano dallrsquoutilizzo di questo metodo sono che

emettitore e ricevitore possono essere lo stesso oggetto e che le superfici non

devono presentare particolari requisiti Gli svantaggi possono essere fronti di

salita imprecisi durante lrsquoemissione lrsquoattenuazione della radiazione riflessa che

45 Time of Fly

Appendice A 163

puograve essere influenzata da rumore lrsquoinaccuratezza nel circuito che serve a misurare

il tempo e la possibile variazione della velocitagrave di propagazione soprattutto con

onde sonore Il cono di emissione inoltre non ci permette di rilevare la forma

dellrsquooggetto Quando lrsquoonda si riflette su un oggetto si ha un fenomeno chiamato

crosstalk Utilizzando diverse misurazioni con treni di impulsi si riescono ad

avere stime abbastanza precise sullrsquooggetto riuscendo ad arrivare ad avere

precisione anche di 25 mm da una distanza di 30 cm

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502

Campo di misura tra 30 cm e 5 metri[53]

Caratteristiche

- Campo di misura tra 30 cm e 5 m (MS 6502)

-Campo di misura tra 15 cm e 10 m ( MS 6001)

-Alimentazione singola tra 75V e 15V - Gestione degli Echo multipli

- Possibilitagrave di fissaggio del sensore direttamente al circuito stampato

- Sistema di connessione MODU II - Uscita open collector

-Protezione dallrsquoinversione di polaritagrave

Figura 91 Piedinatura modello MS

6501

Figura 92 Sonar Modello MS 6501

Figura 93 Sonar Modello MS 6502

Appendice A 164

Il modulo sonar egrave un dispositivo di basso costo con il quale egrave possibile

gestire direttamente i sensori elettrostatici Polaroid per effettuare misure di

distanza Gli impulsi ad ultrasuoni sono a 499 KHz per entrambi i modelli e

vengono prodotti da un quarzo funzionante alla frequenza di 420 KHzI moduli

soso dotati di un ingresso di inibizione esterna con il quale egrave possibile

unrsquoesclusione selettiva di alcuni echo in modalitagrave di funzionamento echo multiplo

Con il dispositivo proposto egrave possibile distinguere echo di ritorno tra due oggetti

distanti 75 cm circa

Figura 94 Struttura del Mdulo Sonar

Vi sono due modalitagrave di funzionamento del sonar echo singolo e echo

multiplo

Nella funzionalitagrave ad echo singolo la gestione consite nel portare basso il

valore di INIT spedire le onde ultrasoniche e attendere la ricezione del segnale di

echo il tempo tra quando si egrave reso basso il senale di INIT e quello in cui diventa

basso ECHO indica il tempo di volo impiegato per raggiungere il target Ersquo

conveniente attendere circa 80 ms tra una spedizione e lrsquoaltra per evitare onde

ultrasoniche ancora presenti nellrsquoambiente

Nella funzionalitagrave multiplo dopo che si pone basso INIT il trasduttore

viene pilotato da 16 impulsi a frequenza 499 KHz (MS 6501) o 45 KHz (MS

Appendice A 165

6502) e di ampiezza variabile per modello (MS6501 400VMS6502 100V) ciograve

comporta lrsquoinvio di un pacchetto di onde ultrasoniche che si propagano nello

spazio Al fine di evitare lrsquoassestamento del trasduttore (fenomeno ringring) esso

viene oscurato in ricezione per 238 ms Queste tempistiche rendono possibile

lrsquoindividuazione di oggetti a distanza di 40 cm che corrispondono a tempo di volo

di 238 ms

Figura 95 Modalitagrave di funzionamento a

eho singolo

Figura 96 Modalitagrave di funzionamento a

echo multiplo

vi2 Sensore telemetro a sfasamento

Il sensore si basa sul seguente principio si separa lrsquoonda emessa in due

parti una incide lrsquooggetto e torna indietro la seconda viene riflessa su uno

specchio di cui si conosce la posizione Si calcola la differenza temporale tra le

due onde Essendo noto il cammino ottico della luce riflessa dallo specchio si egrave in

grado di determinare il cammino ottico incognito In robotica si misurano distanza

dellrsquoordine di qualche metro quindi lrsquoonda laser emessa λ egrave dellrsquoordine del metro

vi21 LIDAR lsquoLight detection and Rangingrsquo

Utilizzi molto rilevanti in questo tipo di acquisizione dati ci vengono

forniti da progetti NASA per la struttura della morfologia terrestre in particolare

in progetti DSM e DTM (Digital Surface Model e Digital Terrain Model)[54] Si

Appendice A 166

dispone di un raggio lasee di cui si analizza lrsquoecho e la distorsione conoscendo la

velocitagrave di propagazione Le misura proposte vengono elaborate per creare

coordinate 3D Dopo aver puntato su zone giagrave conosciute mediante comunicazioni

con GPRS il sistema scansiona la zona ignota per estrapolare per comparazione i

nuovi valori effettuando una misura di sfasamento tra lrsquoonda modulata emessa e

quella rientrante Analizzando opportunamente lrsquointensitagrave della luce riflessa si

potranno anche dedurre informazioni sulla tipologia del materiale analizzato

Figura 97 Esempio di acquisizione LIDAR

vi3 Triangolazione

Uno dei metodi piugrave semplici utilizzati Il soggetto egrave illuminato da uno

stretto fascio di luce che scandisce la superficie Il movimento di scansione

avviene sul piano definito dalla linea che va dallrsquooggetto al rilevatore e dal

rilevatore alla sorgente Il rilevatore egrave focalizzato su una limitata porzione di

superficie quando il rilevatore vede un piccola macchia di luce la sua distanza d

dalla superficie illuminata viene calcolata con un semplice calcolo geometrico

Appendice A 167

i

sdαtan

=

Dove

iα = angolo tra la sorgente e la linea della base

angolo di massima intensitagrave

s = distanza tra la sorgente e il rilevatore

Questo fornisce la misura di un punto se il sistema sorgente rilevatore

viene mossa su un piano egrave possibile ottenere un insieme di punti facilmente

trasformabili in coordinate tridimensionali che caratterizzano la struttura

dellrsquooggetto esaminato

Appendice A 168

vi31 IFELL Laser e Sistemi Srl

Modello[55] Caratteristiche principali

Figura 987 Serie LK

bull Campi di misura fino a 500 mm bull Tecnologia di fotorivelazione con

CCD Micropunto di lettura (fino a 30 micron)

bull Protezione IP-67 (solo teste) bull Insensibilitagrave alle variazioni di colore bull Elevata precisione anche su materiali

otticamente difficili bull Uscita analogica

Figura 99 Serie ODS

bull Campi di misura fino a 2000 mm bull Tecnologia di fotorivelazione con CCDbull Amplificatore integrato bull Protezione IP-65 bull Uscita analogica e digitale RS-232 bull Ingressouscita di sincronizzazione bull Esecuzione speciale per materiali

trasparenti

Figura 100 Serie M5

bull Campi di misura fino a 400 mm bull Tecnologia di fotorivelazione con PSD bull Protezione IP-64 (solo teste) bull Uscita analogica e digitale (opzione) bull Ingressouscita di sincronizzazione bull Comparatore integrato

Informazioni sui produttori

[41] G Arlanch ldquoSviluppo di un simulatore per il controllo dellrsquoandatura di un

quadrupederdquoThesis 1997

[42] httpwwweltrait

[43] httpwwwcorrsysdatronithomehtml

[44] httpwwwrobot-italycomproduct_infophpproducts_id

[45] httpwwwfutaba-rccomradioaccysfutm1001html

[46] httpwwweuroshop2000itcat159html

[47] MBertolini ldquoGirobussole a fibre otticherdquo ITN Viareggio

[48] httpwwwgyroscopecom

[49] httpwwwdinsmoresensorscom1490spechtm

[50] Philips ldquoKMZ10B Magnetic field sensorrdquo Data sheet 1998

[51] JP Sinnecker ldquoMateriaia magneticos doces e materiaia ferromagneticos

amorfosrdquo Reviat brasileira de Fisicavol 222000

[52] K Ivison N Cowlam MRJ Gibbs J Penfold e C Shackleton ldquoUna

misura diretta della magnetizzazione di superficie di un vetro metallico

ferromagneticordquo Edizione 23 (Il 12 Giugno 1989)

[53] Blautron ldquoModulo sonar 6501pdfrdquo ldquoModulo sonar 6502pdfrdquoItaly 2002

[54] V Adorno ldquoIl DTM e il DSM ad alta risoluzionela tecnologia laser

scanner e lrsquoutilizzo del Lidarrdquo Naturaltech

[55] wwwifelliti_sens_triangi_sens_trianghtm

Appendice B

Appendice B 171

i Manuale drsquouso

Per permettere una rapida visualizzazione dei risultati da noi trovati viene

fornito allrsquoutente un menugrave principale di scelta in cui puograve richiamare le funzioni

generate

Lrsquoutente richiameragrave direttamente dal promt di Matlab la funzione

start_asgrad(x) passando come parametro x un intero da o a 5Ad ognuno di

questi numeri corrisponderagrave una funzione

1 = visualizzazione della differenza tra passo in andatura quasi-stabile e

quasi-dinamica grafica del passo e proiezione del convex hull

2 = calcolo della cinematica e visualizzazione degli errori(in

start_asgradm posso modificare direttamente i valori delle variabili decisionali in

merito alla cinematica inversa)

3 = visualizzazione dei grafici riguardanti la forza e la torsionesui giunti

scegliendo nella funzione stessa il numero di frame da considerare

4 = generazione del movimento in un ambiente noto (per settare i

parametri riferiti allrsquoambiente bisogna modificare il file initm prima dellrsquoavvio

del programma)

5 = permette il movimento reale del robot quadrupede del politecnico di

Milano Questa funzione puograve essere richiamata dopo una serie di accorgimenti per

istaurare un corretto canale di comunicazione (collegare la porta seriale o il

convertitore USB-Seriale e accertarsi che la porta sia denominata COM 1 con

velocitagrave di trasferimento di 14400 bitsec)

Appendice B 172

ii Codice generato

ii1 Menu principale

FUNZIONE START_ASGARD funzione che avvia lesecuzione di tutto il programma permettendo allutente di selezionare la parte di analisi da visualizzare parametri in input val_scelta=valore di scelta 1= confronto passo quasi-staticoquasi-dinamico 2= studio cinematico 3= analisi dinamica 4= scelta del percorso(si ricorda che prima di sceglire questa opzione si devono settare i parametri nella funzione init per la descrizione dellambiente 5= collegamento diretto al robot fisico Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [] = start_asgard(val_scelta) if(val_scelta==1) richiamo della funzione passo_STATICO clearpulizia dello workspace end if(val_scelta==2) angoli_motori2richiamo generatrice angoli da inviare ai motori settaggio parametri funzione met=2 incr=25 g=1 cinematica(ja(28)metincrg) clear end if(val_scelta==3) fr=10setto numero di frame richiamo della funzione NW_EU clear end if(val_scelta==4) richiamo della funzione ambiente_prova

Appendice B 173

clear end if(val_scelta==5) angoli_motori2richiamo generatrice angoli da inviare ai motori n=1inizializzazione numero passi richiamo della funzione camminata_stat clear end

ii2 Confronto andatura quasi-stabile vs quasi-dinamica

FUNZIONE PASSO_STATICO Funzione che permette la comparazione tra il passo statico e il passo quasi-dinamicomostrando per ogni animazione la proiezione del centro di massa e il poligono di appoggio definizione tempistiche per movimento zampa frame=6 definizione punto vista X= 0(090)dallalto Y=90110120)angolata definizione tempo int=1(frame-1) t = [0int1] inizializzazione della figura figure(NamePasso StaticoNumbertitleoff) view(XY) richiamo inizializzazione robot init_robot DB_position posizioni zampe poszero=[0 0 0 0 0 0]posizione impressa nella pic pos_base_A=[0 0 0 -pi4 (-pi4) 0] posizione base delle zampe di destra pos_base_B=[0 0 0 pi4 pi4 0] posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento nel simulatore egrave stato ulteriormente aumentato di un fattore correttivo pos_av_A=[0 (pi4-045) 0 -pi4 -pi4 0] pos_av_B=[0 (-pi4+045) 0 pi4 pi4 0] pos_ind_A=[0 (-pi4+045) 0 -pi4 -pi4 0] pos_ind_B=[0 (pi4-045) 0 pi4 pi4 0] posizioni intermedie=punti di via per le cubiche pos_int_A1=[0 (-pi4+045) 0 0 0 0]

Appendice B 174

pos_int_B2=[0 (pi4-045) 0 0 0 0] ------------------------------------------- calcolo della traiettoria movimento in avanti zampe di sinistra jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_Bt) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint) jb_b=cubica_norm(pos_av_Bpos_base_Bint) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_Apos_base_Aint) jbb=cubica_norm(pos_base_Bpos_ind_Bint) ------------------------------ parte grafica sposto il robot al centro trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) disegno convex hull line([136 46 46][-345 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) muovo prima zampa plot2(zampad jb1) plot(zampad jb2) clf muovo seconda zampa cambia la base dappoggio disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_av_B) line([136 46 46][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jb1) plot(zampab jb2) muovo_baricentro--------------------------------------- posizioni baricentro posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa = [0735 (-pi4+04) pi4 -pi4 -pi4-03 0] posb = [0735 (34pi+04) pi4 -pi4 pi4-03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc = [0735 (3pi4+04) 3pi4 pi4 -pi4+03 0] posd = [0735 (5pi4-04) pi4 -pi4 -pi4+03 0]

Appendice B 175

qposd = [0735 pi pi4 -pi4 -pi4 0] traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -048 -1135]) t2=transl([157 -09 -1135]) t3=transl([-159 045 -1135]) t4=transl([162 0045 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno zampe view(XY) disegno zampe con cinematica da zampa puntata a bar plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposat) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(XY) base di appoggio line([136 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) movimento baricentro plot(zampab2jbarb) plot(zampad2 jbard) plot(zampaa2 jbara) plot(zampac2 jbarc) _______________________________________________________________ riposiziono zampe catena cinemetica diretta r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase tx=transl([0 -042 0]) bara=r1tx barb=r2tx barc=r3tx

Appendice B 176

bard=r4tx zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard clf disegno bas dappoggio e zampe view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_ind_Apos_base_B) line([142 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-288 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo terza zampa plot2(zampac ja1) plot(zampac ja2) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_av_Apos_base_B) line([142 464 464][-335 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-335 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo ultima zampa plot(zampaa ja1) plot(zampaa ja2) ____________________________________ sposto di nuovo il baricentro per tornare alla posizione base posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa_av = [0735 (pi4-04) pi4 -pi4 (-pi4+03) 0] posb_ind = [0735 (54pi-04) pi4 -pi4 pi4+03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc_av = [0735 (5pi4-04) 3pi4 pi4 -pi4-03 0] posd_ind = [0735 (5pi4-04) pi4 -pi4 -pi4+038 0] qposd = [0735 pi pi4 -pi4 -pi4 0] disegna traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -09 -1135]) t2=transl([164 -054 -1135]) t3=transl([-159 003 -1135]) t4=transl([162 041 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc

Appendice B 177

zampad2base=bard disegno zampe view(XY) plot(zampaa2qposa_av) plot(zampab2qposb) plot(zampac2qposc_av) plot(zampad2qposd) generazione traiettorie per baricentro jbara=cubica_norm(qposa_avposat) jbarb=cubica_norm(qposbposb_indt) jbarc=cubica_norm(qposc_av posct) jbard=cubica_norm(qposd posd_indt) clf view(XY) _____________________________- riposiziono zampe base r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -042 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard _____________________________________________ disegno base appoggio e muovo zampe line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) Analisi passo dinamico figure(NamePasso DinamicoNumbertitleoff) t = [0int1] calcolo delle traiettorie

Appendice B 178

jta1 = cubica_norm(qza qpva t) jta2 = cubica_norm(qpva qfa t) jtb1 = cubica_norm(qzb qpvb t) jtb2 = cubica_norm(qpvb qfb t) jtc1 = cubica_norm(qpvc qfc t) jtc2 = cubica_norm(qfc qzc t) jtd1 = cubica_norm(qpvd qfd t) jtd2 = cubica_norm(qfd qzd t) ------------------------------ parte grafica parto da posizione base trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegno robot e base dappoggio disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) line([136 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) view(110120) muovo prima zampa plot2(zampaa jta1) plot(zampaa jta2) clf muovo seconda zampa e cambio base appoggio disegna_robot(zampaazampabzampaczampadqfaqzbqzcqzd) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jtb1) plot(zampab jtb2) baricentro definizione cordinate baricentro posa = [0735 pi4 pi4 -pi4 0 0 ] qposa = [0735 0 pi4 -pi4 -pi4 0] posb = [0735 -pi4 34pi pi4 0 0] qposb = [0735 0 34pi pi4 -pi4 0] posc = [0735 0 pi4 -pi4 pi4 0] qposc = [0735 -pi4 pi4 -pi4 0 0] posd = [0735 0 34pi pi4 pi4 0] qposd = [0735 pi4 34pi pi4 0 0] disegno robot in corretta posizione t1=transl([-13 -13 -1135]) t2=transl([13 -13 -1135]) t3=transl([-16 045 -1135]) t4=transl([16 045 -1135]) b=zampaabasetraslazione nellorigine della zampa bara=bt1 barb= bt2 barc= bt3

Appendice B 179

bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno robot e bae appoggio line([465 428 428][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([428 175 175][-415 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposa t) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(110120) spostamento tramite rivisualizzazione ta1=transl([-029 0 0]) ta2=transl([029 0 0]) bara=ta1zampaa2base barb=ta2zampab2base barc=ta2zampac2base bard=ta1zampad2base zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 17 17][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) line([17 432 432][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) torno al robot con catena cinematica base baricentro r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -078 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb

Appendice B 180

zampacbase=barc zampadbase=bard clf view(110120) disegna_robot(zampaazampabzampaczampadqzaqzbqpvcqpvd) line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) view(110120) sposto terza zampa plot2(zampac jtc1) plot(zampac jtc2) clf disegna_robot(zampaazampabzampaczampadqzaqzbqzcqfd) line([46 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) sposta quarta zampa plot(zampad jtd1) plot(zampad jtd2) line([46 46 45][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 46 46][-324 -324 -324][-1135 -1135 -1135]ColorrLineWidth1)

ii3 Calcolo della cinematica inversa

FUNZIONE CINEMATICA Programma che permette di calcolare la cinemetica diretta ed inversa della zampa del robot in esame simula in modo opportuno lanello cinematico di controllo dando la possibilitagrave allutente di inserire un possibile disturbo esterno che non ha permesso il corretto funzionamento La variabile diturbo potragrave in future evoluzioni assumere i valori di sensori o dometrici la funzione di cinemetica inversa egrave stata implementata con tre differenti metodicalcolo del gradiente e geometrico(studiato ad ok che permette il calcolo in real time) parametri in input vetthheta = vettore degli angoli dei giunti per la cinematica diretta medodo = scelta tra i metodi di calcolo di cinematica inversa 1=geometrico 2=inseguimento del gradiente 3=inseguimento veloce del gradiente incremento_angolo = approssimazione da usare con i metodi del gradiente espressa in gradi

Appendice B 181

gomito = scelta se gomito alto (1) o basso (0) parametri output n = numero di iterazioni per il calcolo della cinematica inversa errore = errore in gradi commesso tra la posizione voluta in input e quella realmente raggiunta Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [nerrore] = cinematica(vetthetametodoincremento_angologomito) metodo=1 incremento_angolo=25 gomito=1 alto vettheta=[-pi4 pi4 pi2] errore=[] incr_ang=incremento_angolo2pi360trasformazione valore in radianti ntheta=size(vettheta) considero ogni singola riga del vettore degli angoli concentro cioegrave lanalisi sui singoli 3 valori degli angoli for(nt=1ntheta) utilizzo variabile locale theta=(vettheta(nt)) theta_i=[] v1=size(theta) for(v=1v1(11)) inizio ciclo per tutti i valori di theta inseriti calcolo CINEMATICA DIRETTA per il calcolo della posizione dellend_effector nello spazio dei giunti considero c1 il baricentro che risulta essere giunto fittizio C2=cos(theta(v1))S2=sin(theta(v1)) C3=cos(theta(v2))S3=sin(theta(v2)) C4=cos(theta(v3))S4=sin(theta(v3)) matrici prodotte dai parametri di Denavit Hartemberg A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A34=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] matrice finale end-effector T=A12A23A34 memorizzo in pos la posizione finale dellend effector calcolata si trova nei primi 3 elementi della quarta colonna della matrice T for(i=13) pos(1i)=T(i4) end pos(14)=1 siamo nelle omogenee p deve avere 4 valori disturbo=[0 0 0 0]introduco valori disturbo quando avremo i sensori avrograve in input valore posizione finale raggiunta diversa da quella calcolata ricalcolo posizione reale raggiunta pos=pos+disturbo

Appendice B 182

dalla nuova posizione calcolo la CINEMATICA INVERSA PRIMO ANGOLOricavato direttamente dalla matrice T z2=pos(12)pos(11) theta_i(11) = atan(z2) ricalcolo l aposizione corretta di intersezione degli assi avendo giagrave calcolato il valore de primo giuntosposto lorigine nel secondo giunto in base alla posizione effettiva del robotsullasse devo fare controlli per calcolare l aposizione dellend-effector rispetto alla nuova origine PIPPO=pos() if (theta_i(11)==0) pos(11)=pos(11)-(cos(theta_i(11))00573) else if pos(13)==0 pos(11)=00675+009 else if (theta_i(11)gt0) pos(11)=(pos(11)cos(theta_i(11)))-00573 else pos(11)=(pos(11)cos(theta_i(11))-00573) end end end PIPPO2=pos() METODO GEOMETRICO if (metodo==1) n=1 unica interazione dist=0 pos(11)=abs(pos(11)) pos(13)=abs(pos(13)) da analisi geometrica B = pos(11)^2+pos(13)^2 c2=(B-00675^2-009^2)(200675009) theta_i(13)=(acos(c2)) delta=atan((pos(13))(pos(11)))considerando i grafici ho valori di x e z invertiti zx=(009sin(theta_i(13))(00675+009cos(theta_i(13)))) alfa = atan(zx) se gomito alto uasato sempre if (gomito==1) theta_i(12)=(delta+alfa) end se gomito basso if (gomito==0) theta_i(12)=(delta-alfa) end calcolo errore tra dato in input e valori trovati err(11)=theta(11)-theta_i(11) err(12)=abs(theta(12))-theta_i(12)+pi2causa inversione di posizionamento motori err(13)=abs(theta(13))-theta_i(13) trasformo errore in gradi errore=[errorefix(err360(2pi))] else METODO ITERATIVO PER CALCOLARE CINEMATICA INVERSA

Appendice B 183

if (metodo==2) METODO GRADIENTE inizializzo var di appoggio a=0 b=0 n=0 dist = Calc_Distanza(abpos(11)pos(13)) calcolo distanza iniziale while (dist gt 0001) 0001 approx al millimetro 001 approx al centimetro calcolo la differenza della distanza dalla pos finale dellend-effector incrementado e decrementando gli angoli verifico se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_angbpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) -Calc_Distanza(a b-incr_angpos(11)pos(13)) a = a - gradient_a creo le nuove pos b = b - gradient_b ricalcolo la distanza e vedo se egrave minore dellapprox dist = Calc_Distanza(abpos(11)pos(13)) n=n+1incremento numero di iterazioni end else if(metodo==3) METODO FASTER GRADIENT FOLLOWING inizializzo var di appoggio a=0 b=0 n=0 speeda=0 speedb=0 dist = Calc_Distanza(abpos(11)pos(13))calcolo distanza da end effector salvo il valore del vecchio gradiente per entrambe le posizioni old_gradient_a = 0 old_gradient_b = 0 while (dist gt 0001) approssimazione al millimetro n=n+1 controllo se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_ang bpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) - Calc_Distanza(a b-incr_angpos(11)pos(13)) controllo se ci siamo gia trovati in questi valori in segno if (sign(old_gradient_a) ~= sign(gradient_a)) se gradiente ha cambiato direzione(salitadiscesa)devo arrestare e modificare valori a = a - speeda old_gradient_a (gradient_a-old_gradient_a) speeda = 0 else speeda =speeda + gradient_a se sto seguendo salita o discesa del gradiente continuo a seguirla if (sign(old_gradient_b) ~= sign(gradient_b))

Appendice B 184

b = b- speeda old_gradient_b (gradient_b-old_gradient_b) speedb = 0 else modifico posizioni raggiunte e velocitagrave speedb =speedb+gradient_b a = a- speeda b = b- speedb end end ricalcolo distanza con nuovi valori dist = Calc_Distanza(a bpos(11)pos(13)) old_gradient_a = gradient_a il grdiente appena calcolato diventa il vecchio old_gradient_b = gradient_b end else testo=inserito metodo errato end end STAMPO VALORI NEL CASO DEI GRADIENTI nstampo il numero di iterazioni che sono servite a calcolare il risultato dist theta_i(12)=a-incr_angvalori corretti sono quelli al passo precedente theta_i(13)=b-incr_ang theta_i esprimo lerrore in gradi err=theta-theta_i errore=[errorefix(err360(2pi))] end end end

ii4 Analisi del modello dinamico

FUNZIONE EULERO_BASE Funzione che effettua il calcolo dei coefficienti di newton eulero sulla singola zampa per ogni singolo giunto dellarticolazione in base alla parametrizzazione di Denavit-Hartemberg La catena cinematica qui analizzata egrave quella che ha per base il baricentro ed end effector il piedeApplicata a parametri di controllo degli attuatori(passo_avanti) parametri input theta=vettore a tre colonne che rappresenta gli angoli dei tre giunti function [forza_gen] = eulero_base(theta) theta=[ pi4 pi4 pi2 pi4 pi4 pi4 0 pi4

Appendice B 185

pi4 pi4 0 pi4 pi4 pi4 0 pi4 pi4 pi4 pi2 pi4 pi4 pi4 pi2 pi4] definizione tempistiche delta=1 [v1 n1]=size(theta) forza_gen=[] massa PESO=1 IN KG massa=[PESO4 002 002 005] gravitagrave g=[0 0 -98] tensore dinerzia del complesso braccio motore espressi in millimetri x=[0026 0003 0003 0009] y=[0054 0020 0020 004] z=[01125 00573 00675 009] I=[] matrice momento dinerzia for(i=13) I=[I (y(i)^2+z(i)^2)12 0 0 0 (x(i)^2+z(i)^2)12 0 0 0 (y(i)^2+z(i)^2)12] end for(v=1v1-1) inizio ciclo per piugrave posizioni successive ris=[] analizzo due istanti temporali successivi per estrapolare la velocitagrave for(j=1n1) ris=[ris (theta(v+1j)-theta(vj))] end d_theta=risdelta espresso in radsec dd_theta=d_thetadeltaespresso in radsec^2 C1=cos(theta(v1))S1=sin(theta(v1)) C2=cos(theta(v2))S2=sin(theta(v2)) C3=cos(theta(v3))S3=sin(theta(v3)) C4=cos(theta(v4))S4=sin(theta(v4)) Ricavo matrice di rotazione tot R=[[C1(1) (-S1(1)) 0 S1(1) C1(1) 0 0 0 1] [C2(1) 0 (-S2(1)) S2(1) 0 -C2(1) 0 1 0] [C3(1) (-S3(1)) 0 S3(1) C3(1) 0 0 0 1] [C4(1) (-S4(1)) 0 S4(1) C4(1) 0 0 0 1]]gestita come 123 cinematica diretta per il calcolo della posizione dellend_effector nello spazio dei giunti A11=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A13=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A14=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T1=A11A12A13A14

Appendice B 186

C1=cos(theta(v+11))S1=sin(theta(v+11)) C2=cos(theta(v+12))S2=sin(theta(v+12)) C3=cos(theta(v+13))S3=sin(theta(v+13)) C4=cos(theta(v+14))S4=sin(theta(v+14)) A21=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A22=[C2 0 (-S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A24=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T2=A21A22A23A24 dalle posizioni successive trovate con cinematica diretta estrapolo la posizione e da essa la velocitagrave for(i=13) pos(1i)=T2(i4)-T1(i4) end vel=posdelta acc_end_eff=veldelta vettore dallorigine della terna(i-1)al baricentro Ci R_iC=[0055125 0 0002865 0 0003375 0 00045 0 0] vettore dallorigine della terna(i)al baricentro Ci RC=[-0055125 0 0-002865 0 0-003375 0 0-0045 0 0] vettore dallorigine della terna(i-1)allorigine della terna (i) R_iI=[01125 0 000573 0 000675 0 0009 0 0] zo=[0 0 1]asse base altri parametri da calcolare velocitagrave lineare del baricentro Ci p_C=[0 0 0] velocitagrave lineare dellorigine della terna (i) p_i=[0 0 0] velocitagrave angolare del braccio omega=[0 0 0] accelerazione lineare del baricentro Ci pp_C=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione lineare dellorigine della terna (i) pp_i=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione angolare del braccio d_omega=[0 0 0] forza esercitata dal braccio (i-1) sul braccio i f=(1)acc_end_eff il primo valore rappresenta su end_effector momento mu=[0 0 0] forza generalizzata tau=[] impongo velocitagrave e accellerazioni per il braccio base inizio algoritmo inserisco formule di Newton-Eulero(vedi teoria) for(i=24) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] omega(i)=(Rot(omega(i-1)+(d_theta(1i-1)zo))) d_omega(i)=(Rot(d_omega(i-1)+(dd_theta(1i-1)zo)+cross(d_theta(1i-1)omega(i-1)zo)))

Appendice B 187

pp_i(i)=(Rotpp_i(i-1))+cross(d_omega(i)R_iI(i-1))+cross(omega(i)(cross(omega(i)R_iI(i-1)))) pp_C(i)=pp_i(i)+cross(d_omega(i)RC(i-1))+cross(omega(i)(cross(omega(i)RC(i-1)))) end TORNO indietro per calcolare le forze e i momenti i=3 r=2indici while(igt=1) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] Iner=[I((i-1)3+1)I((i-1)3+2)I((i-1)3+3)] f(r)=(Rotf(r-1))-massa(1i)pp_C(i)ho sottratto la massa perchegrave la considero forzapeso mu(r)=cross(-f(r)(R_iI(i)+RC(i)))+(Rotmu(r-1))+(Rot(cross(f(r-1)RC(i))))+(Inerd_omega(i))+cross(omega(i)(Ineromega(i))) i=i-1 r=r+1 end n2=size(mu) for(i=2n2) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] tau(i)=mu(i)Rotzo end forza_gen=[forza_gen tau] end forza_gen espressa in Nm forza_gen=(forza_gen100)98 trasformazione in cmKg

ii5 Map building

ii51 Espansione degli ostacoli

FUNZIONE ONDA_DESTINAZIONE funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input matrice= matrice di definizione mappa xend=valore dellascissa della destinazione yend=valore dellordinata della destinazione parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_destinazione(matricexendyend)

Appendice B 188

calcolo dimensioni matrice [dim1dim2] = size(matrice) for(i=1(xend-1))righe superiori ad arrivo for(j=1(dim22))per tutte le colonne matrice(i((j2)-1))=(xend-i)attribuisco valori decrescenti end end for(i=(xend+1)dim1)righe inferiori ad arrivo for(j=1(dim22)) matrice(i((j2)-1))=(i-xend)attribuisco valori a cui devo sottrarre la destinazione end end for(i=1dim1)colonne a sx ad arrivo for(j=1(yend-1))fino a colonna precedente arrivo sottraggo il numero in cui sono matrice(i((j2)-1))=matrice(i((j2)-1))+(yend-j) end end for(i=1dim1)colonne a dx ad arrivo for(j=(yend+1)(dim22))da colonna successiva a fine matrice(i((j2)-1))=matrice(i((j2)-1))+(j-yend)da valore devo sottrarre valore destinazione end end matrix=matrice restituisco matrice modificata FUNZIONE ONDA_OSTACOLOPLUS funzione che inseriscce come secondo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dallstacolo piugrave vicino valutando opportunamente la relazione tra gli ostacoli giagrave presenti parametri in input matrice= matrice di definizione mappa xposa=valore dellascissa iniziale deelostacolo xposb=valore dellascissa di fine deelostacolo yposa=valore dellordinata iniziale deelostacolo yposb=valore dellordinata di fine deelostacolo parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_ostacoloplus(matricexposaxposbyposayposb) funzione per la creazione degli ostacoli ostacolo_par(xaxbyaybc) ostacolo occupa quattro celle xayaxaybxbya xbyb definisco nuova matrice matrice_1=zeros(size(matrice)) creo onda con singolo ostacolo matrice_1=onda_ostacolo(matrice_1xposaxposbyposayposb) [dim1dim2] = size(matrice_1) confonto matrice con singolo ostacolo con matrice con giagrave presenti altri ostacoli e salvo le distanze minime da essi for(i=1dim1) for(j=1(dim22))

Appendice B 189

if(matrice_1(i(j2))ltmatrice(i(j2))) matrice(i(j2))=matrice_1(i(j2)) end end end matrice(xposayposa2)=0valori che identificano lostacolo matrice(xposa((yposa2)-1))=110 matrice(xposayposb2)=0valori che identificano lostacolo matrice(xposa((yposb2)-1))=110 matrice(xposbyposa2)=0valori che identificano lostacolo matrice(xposb((yposa2)-1))=110 matrice(xposbyposb2)=0valori che identificano lostacolo matrice(xposb((yposb2)-1))=110 espansione ostacolo if(yposa ~= 1)se sono sul bordo sinistro matrice(xposa(yposa-1)2)=0valori che identificano lespansione matrice(xposa(((yposa-1)2)-1))=109 matrice(xposb(yposa-1)2)=0valori che identificano lespansione matrice(xposb(((yposa-1)2)-1))=109 end if(yposb ~= (dim22))se sono sul bordo destro matrice(xposa(yposb+1)2)=0valori che identificano lespansione matrice(xposa(((yposb+1)2)-1))=109 matrice(xposb(yposb+1)2)=0valori che identificano lespansione matrice(xposb(((yposb+1)2)-1))=109 end matrix=matriceritorno il valore della matrice modificata

ii52 Calcolo del percorso

FUNZIONE TROVA_PERCORSO funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input xst=valore dellascissa del punto di partenza yst=valore dellordinata del punto di partenza xend=valore dellascissa del punto di arrivo yend=valore dellordinata del punto di arrivo dim1dim2=dimendioni matrice mappa posxa1posxa2posya1posya2=posizione ostacolo 1 posxb1posxb2posyb1posyb2=posizione ostacolo 2 posxc1posxc2posyc1posyc2=posizione ostacolo 3 parametri in output prova1= valori in coordinate cartesiane del percorso trovato strada_per=percorso in rappresentazione direzionale dei passi da percorrere strada_per_uso=percorso espresso in valori singoli(0=Start1=Avanti-1=Indietro-2=Sinistra2=Destra) Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005

Appendice B 190

function [prova1strada_perstrada_per_uso] = trova_percorso(xstystxendyenddim1dim2posxa1posxa2posya1posya2posxb1posxb2posyb1posyb2posxc1posxc2posyc1posyc2) non_val=[100 1 -1 -1]valore non valido 100=dist_da destinazione 1=distanza da ostacolo visitato=[150 0]marca per nodi visitati arr=[0 45]marca arrivo strada=[xst yst]memorizzo coordinate percorso dim1=5 dim2=dim22 matrice_appoggio=eye(dim1dim2) crea una matrice diagonale dim1 x dim2 matrice=zeros(size(matrice_appoggio))creo matrice vuota creo matrice con onde necessarie matrice=onda_destinazione(matricexendyend) matrice=onda_ostacolo(matriceposxa1posxa2posya1posya2) matrice=onda_ostacoloplus(matriceposxb1posxb2posyb1posyb2) matrice=onda_ostacoloplus(matriceposxc1posxc2posyc1posyc2) prova=matriceprova diventa la mia matrice i=xst j=yst parto da sorgente n=dim1dimensioni matrice m=dim22 trovato=0 creo insieme dei successivi del nodo in analisi while(trovato==0) if((igt=1)ampamp(ilt=dim1)ampamp(jgt=1)ampamp(jlt=(dim22))) if(i ~= 1)se sono ai bordi successivi=[matrice(i-1(j2)-1) matrice(i-1(j2)) i-1 j] else successivi=non_val end if(j ~= 1)se sono ai bordi successivi=[successivimatrice(i(((j-1)2)-1)) matrice(i(j-1)2) i (j-1)] else successivi=[successivinon_val] end if(i ~= n) successivi=[successivimatrice(i+1(j2)-1) matrice(i+1(j2)) i+1 j] else successivi=[successivinon_val] end if(j ~= m) successivi=[successivimatrice(i(((j+1)2)-1)) matrice(i(j+1)2) i (j+1)] else successivi=[successivinon_val] end migliore=non_valattribuisco valore enorme a migliore trov=0 scelgo il miglior successivo quello che mi porta piugrave vicino a destinazione for(k=14) if(successivi(k1)lt=migliore(1)) tra due a stessa distanza prendo quello piugrave lontano dallostacolo

Appendice B 191

if((successivi(k1)==migliore(1))ampamp(successivi(k2)ltmigliore(2))) migliore=successivi(k) trov=1 posto=ksalvo la posizione del successivo end migliore=successivi(k) trov=1 posto=k end end matrice(i(j2)-1)=visitato(1)marco percorso giagrave visitato matrice(i(j2))=visitato(2) strada=[stradamigliore(3) migliore(4)]salvo la posizione del migliore trovato se sono arrivato a destinazione ho finito if(migliore(3)==xend)ampamp(migliore(4)==yend) trovato=1 end controllo per il mancato raggiungimento del percorso i=migliore(3)cerco il successivo j=migliore(4) se il migliore tra i successivi egrave o un ostacolo o unespansione sono bloccato if((migliore(1)==150)||(migliore(1)==109)||(migliore(1)==110)) trovato=2non esiste percorso end else trovato=2 end end if(trovato==1) testo=PERCORSO TROVATO end if(trovato==2) testo=PERCORSO NON TROVATO end se ho trovato il percorso if(trovato ~= 2) prova1=stradasalvo la strada in coordinate effettuata [rc] = size(strada) dalle coordinate estrapolo la strada direzionale e una espressa in singolo valore strada_per=[ start] strada_per_uso=[0] for(k=1(r-1)) if((strada(k1)~= strada(k+11))ampamp(strada(k2)== strada(k+12))) ris=strada(k1)- strada(k+11) if (ris==1) strada_per=vertcat(strada_perIndietro) strada_per_uso=[strada_per_uso-1] else strada_per=vertcat(strada_perAvanti ) strada_per_uso=[strada_per_uso1] end

Appendice B 192

else if((strada(k1)== strada(k+11))ampamp(strada(k2)~= strada(k+12))) ris=strada(k2)- strada(k+12) if (ris==1) strada_per=vertcat(strada_perSinistra) strada_per_uso=[strada_per_uso-2] else strada_per=vertcat(strada_perDestra ) strada_per_uso=[strada_per_uso+2] end end end end stampa=strada_per end

ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente

FUNZIONE AMBIENTE_PROVA Algoritmo che richiama la funzione trova_percorso e con i risultati trovati realizza il plottaggio grafico del robot in movimento nellambiente Realizza controlli per la scelta del passo da utilizzare nellistante in esame Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 preparazione dati base figura figure grid on axis([-5 5 -5 5 -2 7]) clf init sfondo(xstartystartxendyend) ASGAR b=transl(000) posiziono il robot nello start t=transl([ystart -xstart 0]) bara=bt barb=bt barc=bt bard=bt zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard center_position(barabarbbarcbard)

Appendice B 193

chiamo la funzione trova_percorso [coord path

path_uso]=trova_percorso(xstartystartxendyenddim1dim2ostxa1ostxa2ostya1ostya2ostxb1ostxb2ostyb1ostyb2ostxc1ostxc2ostyc1ostyc2) [p k]=size(path_uso) v=1 p1=[] cont=[] per ogni elemento del percorso while(vlt=p) in relazione al percorso espresso con singoli valori if (path_uso(v)== 0)start clf alzati7chiamo funzione di alzata del robot clf sfondo(xstartystartxendyend) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) v=v+1 else if (path_uso(v)== -2) cammina_sinistra for(i=04) faccio fare CINQUE passi a sx x spst a sx=02 hold on passo_sx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 2) cammina_destra for(i=04) faccio fare CINQUE passi a dx x spost a dx =02 hold on passo_dx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 1)in avanti c=0 k=v conto per quante celle non varia la x cioegrave qunti elementi devo andare avanti while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1)

Appendice B 194

n_passi=fix(distanza07)trasformo la distanza in passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo per eccesso il rimanente for(s=1n_passi) cammina_avanti con passi lunghi hold on passo_avanti_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_avanti con passi correttivi hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] else if (path_uso(v)==-1)indietro c=0 k=v calcolo x quanti elementi ho camminata indietro while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1) n_passi=fix(distanza07)definisco n_passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo rimanente for(s=1n_passi) cammina_indietro con passi lunghi hold on passo_indietro_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_indietro con passi correttivi hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] end end end end end

Appendice B 195

end axis([-1 7 -8 1 -2 7]) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]salvo percorso fino a prima

della correzione finale correzione finale mi dice quanto sono arrivata lontano dalle destinazione desiderata [m m1]=size(percorso_effettivo) distanza=[] distanza(1)=percorso_effettivo((m-3)4)-(yend) distanza(2)=percorso_effettivo((m-2)4)-(-xend) testo=SONO ARRIVATO A DISTANZA DALL OBIETTIVO DI X=distanza(1) y=distanza(2) in base al valore di distanza mi suggerisce cosa il robot dovrebbe ancora fare if ((distanza(2)gt=02)||(distanza(2)lt=-02)) dist_fin=distanza(2)02 testo=devo fare ancora abs(dist_fin)visualizzo il modulo if(dist_fingt0) testo=passi correttivi avanti else testo=passi correttivi indietro end dopo avermi detto cosa deve fare lo esegue if(dist_finlt0) for(i=0fix(abs(dist_fin))) hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end else for(i=0fix(abs(dist_fin))) hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end end end p1=[p1zampaabase] disegno i due percorsi IDEALE e EFFETTIVO percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]aggiungo la correzione al

percorso [n n1]=size(coord)percorso ideale for(k=1(n-1)) if((coord(k1)~= coord(k+11))ampamp(coord(k2)== coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k+11)][0 0

0]ColorgLineWidth2)

Appendice B 196

else if((coord(k1)== coord(k+11))ampamp(coord(k2)~= coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k1)][0 0

0]ColorgLineWidth2) end end end PERCORSO vero che invece fa il robottino il valore delle coordinate egrave giagrave giusto come segni for(k=0(m4)-2) if((percorso_effettivo((4k)+14) ~=

percorso_effettivo((4(k+1)+1)4))||(percorso_effettivo((4k)+24) == percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4(k+1)+1)4)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo(4k+24)][0 0 0]ColorbLineWidth2) else if((percorso_effettivo((4k)+14) ==

percorso_effettivo((4(k+1)+1)4))ampamp(percorso_effettivo(4k+24) ~= percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4k)+14)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo((4(k+1)+2)4)][0 0 0]ColorbLineWidth2) end end end

ii6 Collegamento diretto con il robot fisico

ii61 Creazione degli angoli da trasmetter agli attuatori

FUNZIONE ANGOLI_MOTORI2 Funzione che crea in output larray theta_motori generando le traiettorie di movimento per il corretto funzionamento dellattuazione dei motori fisici In questa versione gli angoli di movimento risultano essere piugrave accentuati per migliorare la stabilirtagrave Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 INSERIRE NUMERO FRAME AL SECONDO frame=2 con 50 sembra continuo

Appendice B 197

int=1(frame-1)definisco il numero di intervalli in cui scandire il movimento t=[0int1] definizione variabile di controllo x=0 if (int==1) x=1 end poszero=[0 0 0]posizione impressa nella pic pos_base_A=[0 -pi4 (-pi2)]posizione base delle zampe di destra pos_base_B=[0 pi4 (pi2)]posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento pos_av_A=[(pi4-02) -pi4 -pi2] pos_av_A2=[(pi3) -pi4 -pi2] modificata accentuo movimento in avanti pos_av_B=[(-pi4+02) pi4 pi2] pos_av_B2=[(-pi3) pi4 pi2] pos_ind_A=[(-pi4+02) -pi4 -pi2] pos_ind_A2=[(-pi3) -pi4 -pi2] pos_ind_B=[(pi4-02) pi4 pi2] pos_ind_B2=[(pi3) pi4 pi2] posizioni intermedie=punti di via per le cubiche pos_int_A1=[(-pi4+02) 0 0] pos_int_A2=[(-pi3) 0 0] pos_int_B2=[(pi4-02) 0 0] pos_int_B3=[(pi3) 0 0] calcolo dellle traiettorie tramite la cubica da posizione zero a posizione base parta=cubica_norm(poszeropos_base_At) partb=cubica_norm(poszeropos_ind_Bt) partc=cubica_norm(poszeropos_ind_B2t) movimento in avanti zampe di sinistra jc1=cubica_norm(pos_ind_B2pos_int_B3t) jc2=cubica_norm(pos_int_B3pos_av_Bt) jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_B2t) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint+x) jd_b=cubica_norm(pos_base_Apos_ind_A2int+x) jb_b=cubica_norm(pos_av_B2pos_base_Bint+x) jc_b=cubica_norm(pos_av_Bpos_base_Bint+x) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_A2t) jd1=cubica_norm(pos_ind_A2pos_int_A2t) jd2=cubica_norm(pos_int_A2pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_A2pos_base_Aint+x)

Appendice B 198

jdb=cubica_norm(pos_av_Apos_base_Aint+x) jbb=cubica_norm(pos_base_Bpos_ind_Bint+x) jcb=cubica_norm(pos_base_Bpos_ind_B2int+x) costruzione dei vettori di attesa per ogni zampa pos_attesaA=[]attesa della zampa nella posizione base pos_attesaB=[] pos_attindA=[]attesa della zampa nella posizione indietro pos_attindB=[] pos_attavA=[]attesa della zampa nella posizione avanti pos_attavB=[] vettori per le attese dei movimenti delle altre zampe for(i=1(2+2int)int) pos_attesaA=[pos_attesaApos_base_A]attesa zampa in posizione base pos_attesaB=[pos_attesaBpos_base_B] pos_attindA=[pos_attindApos_ind_A]attesa zampa in posizione indietro pos_attindB=[pos_attindBpos_ind_B] pos_attavA=[pos_attavApos_av_A]attesa zampa in posizione avanti pos_attavB=[pos_attavBpos_av_B] end costruzioni vettori composti per la camminata ja=[partapos_attesaApos_attesaAja_bpos_attindAja1ja2jab] jb=[partbpos_attindBjb1jb2jb_bpos_attesaBpos_attesaBjbb] jc=[partcjc1jc2pos_attavBjc_bpos_attesaBpos_attesaBjcb] jd=[partapos_attesaApos_attesaAjd_bjd1jd2pos_attavAjdb] vettore da mandare in output ogni colonna rappresenta un motore in pos 3 4 5 6 7 8 9 10 11 12 13 14 theta_motori=[jb(1) jc(1) jb(2) jb(3) jc(2) jc(3) jd(3) jd(2) ja(3) ja(2) jd(1) ja(1)] costruzione della scala per i valori minimi valori_minimi=(-pi2)ones(112) chiamata di funzione per spedire valori ai motori moveservos_mio(theta_motori0111valori_minimi) ho messo frame 8 e valore tra un valore sparato e laltro 008 va bene

ii62 Coollegamento diretto di comunicazione con la PIC

FUNZIONE MOVESEVOS La funzione che ricevendo in imput il vettore contenente le posizioni dei motori le elabora per trasformarle in valori compatibili con la PIC (0 255)e apre una connessione di comunicazione con essa La PIC che riceveragrave in input i dati tramite la connessione seriale (impostata sulla COM1 alla velocitagrave di 9600) interpreteragrave i dati nel seguente modo

Appendice B 199

- Il primo valore indica la modalitagrave (254 = movimento dei servo) - I successivi 16 valori compresi tra 0 e 255 indicano le posizioni parametri inputpos=la matrice theta costitutita da una o piugrave righe composta da 12 elementi riferiti ai 12 attuatori timestep=indica il tempo di invio tra una sequenza e laltra ovvero il tempo che intercorre tra ogni framerigha della matrice in ingresso(valore minimo 0111) min=vettore contenente i valori min assumibili dai motori per calcolare lo zero delle posizioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 pos egrave il valore della mia theta espressa solo con 12 valori Funzione che invia i valori in output sulla seriale function moveservos_mio(postimestepmin) max_servo_rotation = pi Quanto possono ruotare i motori (pi 2pi) [rowscols] = size(pos) Crea una connessione seriale try s = serial(COM1 BaudRate14400) sByteOrder = littleEndian sTerminator = CR set(s timeout timestep)posso mettere 1 fopen(s) Laperturachiusura della seriale avviene una volta per ogni matrice theta e non ad ogni rigainvio for i=1rows pos_rel = pos(i)-min posizione relativa alla pos minima Vengono aggiunti 4 valori fittizi nulli poichegrave la seriale egrave progettata per gestire 16 motori mentre theta ne contiene 12 theta16 = [0 0 pos_rel(18) 0 pos_rel(1012) pos_rel(9) 0] Converto in valori in valori da 0 a 255 per la PIC I valori inviati compaiono anche nella command line per verifica theta16 = round(theta16255max_servo_rotation) fwrite(s 254 uchar async) readyByte = fread(s 1 uchar) fwrite(stheta16 uchar async) Controlla se la PIC ha ricevuto theta (conferma tramite valore 33) confirmByte = fread(s 1 uchar) if confirmByte ~= 33 msgbox(Errore di invio dei comandi sulla serialeErroreerror) else Valori inviati correttamente sulla seriale end pause(timestep) end

Appendice B 200

fclose(s) clear ans catch Se fallisce la connessione avverti lutente Porta seriale non connessa end

  • Introduzione
    • Unitagrave funzionali di un robot mobile
    • Obiettivo del lavoro
    • Organizzazione della tesi
      • Sistemi di locomozione
        • Scopi di studio della locomozione su zampe
        • Differenze e analogie tra locomozione a zampe e su ruote
        • Analisi Trot gait di quadrupedi
          • Studio andatura quasi-statica
          • Studio andatura quasi-dinamica
          • Studio andatura dinamica trotto
              • Stato dellrsquoarte dei four legged robot
                • Panoramica dei Robot quadrupedi esistenti
                  • Collie-1 e Collie-2
                  • Quadrupede MIT
                  • GEO
                  • Quadrupede Kimura lab
                    • Algoritmi di controllo CPG for four legged robot
                    • Robocup e Sony Aibo
                      • Storia
                      • Descrizione dei sensori di Aibo
                        • Visione della macchina
                        • Riconoscimento audio
                        • Tatto
                        • Movimento e sviluppo
                          • Architettura del robot ASGARD
                            • Configurazione del robot quadrupede
                              • Struttura Meccanica
                              • Attuatori
                              • Materiale Policarbonato
                                • ASGRAD in numeri
                                • Hardware
                                • Software
                                • Stato Attuale
                                  • Modellizzazione cinematica e dinamica
                                    • Convenzioni e simbologia utilizzata
                                    • Sistemi di coordinate e trasformazioni
                                    • Cinemetica diretta
                                      • Definizione dei parametri di Denavit Hartemberg
                                      • Metodo di assegnamento secondo D-H
                                        • Cinematica inversa
                                          • Metodo gradiente
                                            • Gradient following
                                            • Faster gradient following
                                                • Calcolo delle traiettorie
                                                • Modello dinamico Newton-Eulero
                                                • Creazione di una mappa
                                                  • Espansione degli ostacoli traformazione delle distanze
                                                    • Scelta di un percorso Algoritmo di Dijkstra
                                                      • Sviluppo dellrsquoalgoritmo di camminata
                                                        • Metodologie di sviluppo
                                                        • Progetto di una andatura
                                                          • Lo spazio
                                                          • Stabilitagrave
                                                          • Tempo
                                                            • Andature implementate
                                                            • Catene cinematiche del robot
                                                            • Passo statico e dinamico
                                                            • Formule di forza e torsione sui giunti
                                                            • Anello di Controllo
                                                            • Map-building e scelta del gait
                                                              • Costruzione della mappa ed espansione degli ostacoli
                                                              • Algoritmo di ricerca del percorso minimo
                                                              • Realizzazione del gait
                                                                  • Sperimentazione e analisi dei risultati
                                                                    • Risultati statici
                                                                      • Passo reale effettuato
                                                                      • Misurazioni reali della pressione
                                                                      • Confronti di cinemetica inversa
                                                                        • Risultati dinamici
                                                                          • Caratteristiche negative dei motori
                                                                            • Velocitagrave
                                                                            • Alimentazione
                                                                                • Caratteristiche del percorso
                                                                                  • Conclusioni e sviluppi futuri
                                                                                    • Risultati raggiunti
                                                                                    • Progetti futuri
                                                                                      • Modifiche meccaniche
                                                                                      • Miglioramenti Hardware
                                                                                      • Miglioramenti Software
                                                                                        • Conclusioni finali
                                                                                          • Bibliografia
                                                                                          • Appendice A
                                                                                            • i Sensori nei robot a zampe disponibili sul mercato
                                                                                            • ii Dead Reckoning Stima della posizione
                                                                                              • ii1 Encoder Ottici
                                                                                              • ii2 Encoder ottici incrementali
                                                                                                • ii21 EL30 E-H-I Eltra srl
                                                                                                  • ii3 Encoder ottici Assoluti
                                                                                                    • ii31 Sensori ottici CORRSYS-DATRON
                                                                                                    • ii32 EAM Parallelo-SSI Eltra srl
                                                                                                      • ii4 Sensori Dopler
                                                                                                      • ii41 Robot Italy SRF04
                                                                                                        • iii Heading Sensor
                                                                                                          • iii1 Giroscopio meccanico
                                                                                                            • iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codi
                                                                                                            • iii12 Futaba Giroscopio FP GY 240 AVCS
                                                                                                              • iii2 Giro-bussola
                                                                                                              • iii3 Giroscopio-Girobussola a fibre ottiche
                                                                                                                • iii31 La funzione giroscopica
                                                                                                                  • iii4 Giroscopio piezoelettrico
                                                                                                                    • iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03
                                                                                                                    • iii42 Giroscopio Piezoelettrico Enc-03ja
                                                                                                                        • iv Sensori geomagnetici
                                                                                                                          • iv1 Bussola magnetica meccanica
                                                                                                                          • iv2 Bussola a effetto Hall
                                                                                                                            • iv21 1490 Digital Compass Sensor
                                                                                                                              • iv3 Bussola a magnetoreversiva
                                                                                                                                • iv31 Philips bussola AMR
                                                                                                                                  • iv4 Bussola magnetoelastica
                                                                                                                                    • iv41 Metglas 2605S2
                                                                                                                                        • v Sensori per la modellizzazione dellrsquoambiente
                                                                                                                                        • vi Sensori di distanza
                                                                                                                                          • vi1 Sensori basati sul tempo di volo
                                                                                                                                            • vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502
                                                                                                                                              • vi2 Sensore telemetro a sfasamento
                                                                                                                                                • vi21 LIDAR lsquoLight detection and Rangingrsquo
                                                                                                                                                  • vi3 Triangolazione
                                                                                                                                                    • vi31 IFELL Laser e Sistemi Srl
                                                                                                                                                      • Informazioni sui produttori
                                                                                                                                                      • Appendice B
                                                                                                                                                        • i Manuale drsquouso
                                                                                                                                                        • ii Codice generato
                                                                                                                                                          • ii1 Menu principale
                                                                                                                                                          • ii2 Confronto andatura quasi-stabile vs quasi-dinamica
                                                                                                                                                          • ii3 Calcolo della cinematica inversa
                                                                                                                                                          • ii4 Analisi del modello dinamico
                                                                                                                                                          • ii5 Map building
                                                                                                                                                            • ii51 Espansione degli ostacoli
                                                                                                                                                            • ii52 Calcolo del percorso
                                                                                                                                                            • ii53 Definizione dei movimenti per la deambulazione nellrsquoa
                                                                                                                                                              • ii6 Collegamento diretto con il robot fisico
                                                                                                                                                                • ii61 Creazione degli angoli da trasmetter agli attuatori
                                                                                                                                                                • ii62 Coollegamento diretto di comunicazione con la PIC
Page 5: Analisi e sviluppo di un simulatore per gait

Indice 5

54 Catene cinematiche del robot 90

55 Passo statico e dinamico 96

56 Formule di forza e torsione sui giunti 100

57 Anello di Controllo 102

58 Map-building e scelta del gait 105 581 Costruzione della mappa ed espansione degli ostacoli 106 582 Algoritmo di ricerca del percorso minimo 108 583 Realizzazione del gait 111

CAPITOLO 6 SPERIMENTAZIONE E ANALISI DEI RISULTATI 115

61 Risultati statici 116 611 Passo reale effettuato 117 612 Misurazioni reali della pressione 119 613 Confronti di cinemetica inversa 122

62 Risultati dinamici 124 621 Caratteristiche negative dei motori 126

6211 Velocitagrave 126 6212 Alimentazione 126

63 Caratteristiche del percorso 127

CAPITOLO 7 CONCLUSIONI E SVILUPPI FUTURI 129

71 Risultati raggiunti 130

72 Progetti futuri 131 721 Modifiche meccaniche 131 722 Miglioramenti Hardware 132 723 Miglioramenti Software 133

73 Conclusioni finali 133

BIBLIOGRAFIA 135

APPENDICE A 139

i Sensori nei robot a zampe disponibili sul mercato 140

Indice 6

ii Dead Reckoning Stima della posizione 140 ii1 Encoder Ottici 141 ii2 Encoder ottici incrementali 141

ii21 EL30 E-H-I Eltra srl 142 ii3 Encoder ottici Assoluti 142

ii31 Sensori ottici CORRSYS-DATRON 143 ii32 EAM Parallelo-SSI Eltra srl 144

ii4 Sensori Dopler 144 ii41 Robot Italy SRF04 146

iii Heading Sensor 146 iii1 Giroscopio meccanico 146

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice FT445533 147 iii12 Futaba Giroscopio FP GY 240 AVCS 149

iii2 Giro-bussola 149 iii3 Giroscopio-Girobussola a fibre ottiche 150

iii31 La funzione giroscopica 152 iii4 Giroscopio piezoelettrico 154

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03 155 iii42 Giroscopio Piezoelettrico Enc-03ja 155

iv Sensori geomagnetici 156 iv1 Bussola magnetica meccanica 157 iv2 Bussola a effetto Hall 158

iv21 1490 Digital Compass Sensor 159 iv3 Bussola a magnetoreversiva 159

iv31 Philips bussola AMR 160 iv4 Bussola magnetoelastica 160

iv41 Metglas 2605S2 161

v Sensori per la modellizzazione dellrsquoambiente 162

vi Sensori di distanza 162 vi1 Sensori basati sul tempo di volo 162

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502 163 vi2 Sensore telemetro a sfasamento 165

vi21 LIDAR lsquoLight detection and Rangingrsquo 165 vi3 Triangolazione 166

vi31 IFELL Laser e Sistemi Srl 168

INFORMAZIONI SUI PRODUTTORI 169

APPENDICE B 170

Indice 7

i Manuale drsquouso 171

ii Codice generato 172 ii1 Menu principale 172 ii2 Confronto andatura quasi-stabile vs quasi-dinamica 173 ii3 Calcolo della cinematica inversa 180 ii4 Analisi del modello dinamico 184 ii5 Map building 187

ii51 Espansione degli ostacoli 187 ii52 Calcolo del percorso 189 ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente 192

ii6 Collegamento diretto con il robot fisico 196 ii61 Creazione degli angoli da trasmetter agli attuatori 196 ii62 Coollegamento diretto di comunicazione con la PIC 198

Introduzione

Introduzione 9

Negli ultimi decenni continue evoluzioni scientifico tecnologiche hanno

portato ad un radicale cambiamento nella vita umana e nella realizzazione di

progetti un tempo considerati utopici Dalle ldquoali di Leonardordquo allrsquoemulazione

della natura lrsquouomo continua ad osservare lrsquoambiente che lo circonda e

analizzandolo accuratamente egrave riuscito a costruire macchine indipendenti che lo

aiutano nelle azioni quotidiane o che semplicemente lo supportano nelle abitudini

della vita di ogni giorno

Anche se lo stato dellrsquoarte della robotica egrave ancora lontano dal realizzare

dispositivi cosigrave complessi il notevole incremento della potenzialitagrave di calcolo

permette oggi la costruzione di robot dotati di un certo grado di autonomia Un

robot puograve essere considerato autonomo tanto piugrave egrave in grado di svolgere attivitagrave

individuali senza ausili esterni e di prendere decisioni proprie di fronte a

problematiche semplici

In tale contesto di ricerca svolge un ruolo essenziale lo studio delle

interazioni tra il robot e lrsquoambiente circostante Le fasi di ricerca e sviluppo si

possono suddividere in tre fasi principali

bull lrsquoosservazione del naturale comportamento dellrsquoanimale in esame e

lo stretto contatto tra le sue abitudini(camminata corsa trotto) e il

suo habitat

bull la costruzione del progetto e lo sviluppo del modello rendendo il

piugrave possibile congruente le caratteristiche fisiche naturali con la

strumentazione a noi disponibile

bull la realizzazione pratica del progetto

Introduzione 10

Figura 1 Fasi di Osservazione Progettazione Realizzazione

Lrsquoemulazione del movimento e la reazione del robot agli impulsi che

dovragrave essere generata deve risultare il piugrave possibile simile al comportamento

naturale

Unitagrave funzionali di un robot mobile

Un primo approccio con un robot mobile ci porta ad individuare le parti

fondamentali che lo compongono Possiamo effettuare una prima distinzione tra

ciograve che deve necessariamente essere on-board1 e ciograve che invece puograve essere svolto

anche da terminale remoto

Oltre ad attuatori e sensori che obbligatoriamente devono trovarsi sul

robot sarebbe importante che anche lrsquounitagrave di controllo si trovi su di esso affinchegrave

1 Posto sulla struttura meccanica del robot

Introduzione 11

i tempi di risposta e le dispersioni nel canale di comunicazione vengano

minimizzate Da notare lrsquoimportanza di encoder2 che permettono una stima

odometrica3 della posizione e chiudono lrsquoanello di retroazione dei motori questo

tipo di controllo egrave chiamato dead-reckoning[1]

Sul nostro robot attualmente sono posizionati solamente i motori di

attuazione e un sensore di pressione posto sotto una delle quattro zampe si

prevederagrave in futuro lrsquoincremento di sensori di cui viene fornita in seguito una

specifica (Apendice A) Questa miglioria sensoriale giagrave prevista nel progetto da

noi svolto permetteragrave la sostituzione di valori finora forzati come inputcon veri e

propri feedback4

Lrsquounitagrave di map-building che ora egrave delegata ad un compiuter remoto ha il

compito di generare le traiettorie e spedire i valori alla Pic di controllo dei

motori5 le sue potenzialitagrave potranno essere incrementate da dati sensoriali di

visione o contatto con lrsquoambiente esterno

Sensori che permettono una corretta scansione dellrsquoambiente possono

essere di molte tipologie tra i piugrave comuni sonar scanner laser telecamere fisse o a

bordo (anche se egrave molto importante tenere in considerazione il peso di tale

dispositivi) Lrsquoutilizzo di sensori differenti e algoritmi di visione richiedono un

grosso apporto di calcolo computazionale che se fatto on-board potrebbe

compromettere il funzionamento real-time6

2 sensori di rilevamento della posizione 3 forniscono posizione in base ai dati sensoriali a disposizione 4 dati sensoriali percepiti dallrsquoambiente e rinviati allrsquounitagrave di controllo 5 scheda di interfacciamento Pc-attuatori 6 reazione in tempi reali agli impulsi

Introduzione 12

Figura 2 Unitagrave funzionali che caratterizzano un robot mobile autonomo

Ulteriore elemento utile in un robot mobile egrave la sua localizzazione che

solitamente richiede calcoli con rilevatori odometrici Nel nostro progetto ci egrave

stato di grande aiuto lo sviluppo con il sistema Matlab che mantenendo in

memoria variabili matriciali ci ha reso possibile il monitoraggio del baricentro nei

singoli movimenti Tramite queste valutazioni siamo riusciti a ricavare i valori

dellrsquoerrore durante lo spostamento nelle mappe locali dellrsquoambiente create[2][3]

Una volta noto lrsquoambiente e la posizione degli ostacoli (consideriamo

lrsquoambiente noto) si passa a pianificare il moto al fine di svolgere i compiti richiesti

dallrsquoutente[4][5] Gli algoritmi di pianificazione si dividono in due grandi

categorie

bull generativi noti lrsquoambiente e la posizione del robot generano

traiettorie che minimizzano i percorsi e i tempi di reazione

aggirando gli ostacoli[6][7]

bull reattivi adattano il moto del robot a nuovi ostacoli

In generale occorre combinare entrambe le tipologie utilizzando un

pianificatore generativo sulla mappa dellrsquoambiente a disposizione e un algoritmo

Introduzione 13

reattivo nella fase di inseguimento della traiettoria per rendere il robot pronto a

reagire a cambiamenti anche improvvisi dellrsquoambiente

Obiettivo del lavoro

Scopo di tale tesi saragrave quello di realizzare algoritmi per la camminata di un

robot quadrupede al fine di permettere la realizzazione di movimenti il piugrave

possibile reali e la creazione di ipotetiche traiettorie che il robot potragrave

intraprendere in ambienti noti a priori

Al fine di testare il corretto funzionamento dei nostri risultati ci siamo

posti come obiettivo la costruzione di ASGARD (Automatic Stable Gait of A Robot

quaDruped) robot quadrupede in progetto al Politecnico di Milano e di effettuare

prove reali sul campo

Robot quadrupedi richiedono una particolare e complessa analisi di

stabilitagrave ed uno studio approfondito sul controllo del movimento Con il nostro

progetto vogliamo garantire stabilitagrave statica e dinamica e controllare lo sforzo

reale dei motori da noi utilizzati Permettere in sintesi ad ASGARD di vedere la

luce e compiere i sui primi passi

Inoltre in questa tesi verranno sviluppati un algoritmo di map-building e il

pianificatore del moto generativo (non avendo a disposizione sensori di feedback

non possiamo implementare il reattivo) utilizzando algoritmi a contenuto calcolo

computazionale che permetteranno al robot di deambulare in un ambiente noto

senza sovraccaricare il sistema ed effettuando movimenti generati dal sistema in

real time scegliendo lrsquoopportuno passo da eseguire

Organizzazione della tesi

In questo lavoro discuteremo i metodi per modellare e analizzare robot

mobili la principale analisi si concentra su robot quadrupedi dotati di arti

Introduzione 14

autonomi fino ad arrivare allrsquoimplementazione di ASGARD (Automatic Stable

Gait of A Robot quaDruped) il robot del Politecnico di Milano Lo scopo egrave fornire

uno strumento di analisi di stabilitagrave statica e dinamica per la realizzazione di una

camminata in un ambiente noto e una prima struttura di algoritmi che in futuro si

occuperanno del controllo e delle iterazioni con il mondo circostante

Tematiche discusse nei successivi capitoli

Capitolo 1

Motivazioni che ci hanno portato alla scelta di costruire un robot

quadrupede e le sue strategie di camminate possibili

Capitolo 2

Una breve panoramica sui robot quadrupedi esistenti enfatizzando le loro

caratteristiche salienti in termini di posture e sensori e i loro algoritmi principali di

controlloal fine di delineare un adeguato quadro entro cui porre il robot del

Politecnico di Milano

Capitolo 3

Analisi delle caratteristiche meccaniche e funzionali di ASGARD

Capitolo 4

Definizione degli obiettivi fissati per il progetto e presentazione della

teoria necessaria per il corretto svolgimento

Capitolo 5

Descrizione della parte di implementazione del progetto dallrsquoapplicazione

della teoria esposta nel capitolo precedente alla scrittura del codice

Introduzione 15

Capitolo 6

Discussione dei risultati e su alcune proveeseguite a simulatore e su altre

misurazioni pratiche realizzate sul robot fisico

Capitolo 7

Migliorie possibili effettuabili in futuro e conclusioni finali dellrsquoautore

Appendice A

Ricerca eseguita su sensori disponibili sul mercato che potranno essere

integrati nel progetto

Appendice B

Presentazione del manuale di utilizzo e parte di codice significativa

generato in linguaggio Matlab 65

Capitolo 1 Sistemi di locomozione

Sistemi di locomozione 17

11 Scopi di studio della locomozione su zampe

Esistono diverse motivazioni che giustificano lo studio di robot su zampe

tre le principali[8] troviamo

bull mobilitagrave fondamentale caratteristica di un robot egrave riuscire a

lavorare e svolgere le sue mansioni in tutte le tipologie di

terreni da quelli lisci ai piugrave ostili in presenza di scale o gradini

e riuscire se possibile ad evitare ostacoli non solo aggirandoli

ma anche scavalcandoli Veicoli a ruote sono la soluzione

adeguata se si pensa a terreni piani o con inclinazioni continue

ma la struttura del nostro pianeta permette il loro utilizzo in

meno della metagrave delle terre emerse Se invece pensiamo alla

crosta terrestre essa egrave quasi completamente raggiungibile da

esseri viventi (uomini animali) dotati di gambe

bull punti di appoggio isolati che ottimizzano il supporto e la

trazione e non richiedono un continuo contatto con il suolo

come succede per le ruote

bull sospensione attiva che disaccoppia la traiettoria delle gambe

da quella del corpo rendendo possibile cioegrave lo spostamento

senza sollecitazioni del carico nonostante pronunciate

sconnessioni del terreno

Queste caratteristiche in molti casi rendono indipendenti le capacitagrave del

robot dallrsquoasperitagrave del percorso dando la possibilitagrave di maggiore efficienza in

velocitagrave anche in ambienti molto ostili

Analizzare le spiccate doti di agilitagrave e mobilitagrave di animali non risulta un

facile compito essi sono in grado di muoversi velocemente e con sicurezza nelle

piugrave svariate condizioni ambientali

Sistemi di locomozione 18

Figura 3 Particolari posture animali in condizioni ambientali ostili

Nostro principio di studio risulta essere cercare metodologie di emulazione

di tali doti e successivamente applicarle a robot quadrupedi cercare i compiti

simili di locomozione e tramite questi risultati percepire problematiche e trovare

soluzioni per la mobilitagrave di strutture artificiali[9]

In particolare un robot su zampe necessita di

bull controllo del movimento dei giunti

bull controllo dellrsquoequilibrio

bull ciclicitagrave dellrsquouso delle zampe

bull punti di appoggio noti

bull calcolo della possibile traiettoria percorribile

I sistemi legged7 risiltano in diversi ambiti molto utili ai settori di ricerca

dallrsquoIntelligenza Artificiale e Sistemi di cooperazione multi-agente a semplici

robottini in grado di svolgere un unico ma non meno significativo task8 come la

pulizia di una superficie la raccolta di un oggetto o la perlustrazione di aree

pericolose con la relativa raccolta dati

7 termine inglese per rappresentare sistemi robotica dotati di quattro zampe 8 compitoincaricoobiettivo da raggiungere

Sistemi di locomozione 19

12 Differenze e analogie tra locomozione a zampe e su ruote

La principale caratteristica che diversifica le due tipologie di robot egrave la

gestione dei movimenti Per i sistemi legged la realizzazione di un passo include

al suo interno un insieme di variabili di controllo per il movimento corretto dei

giunti e la corretta sincronizzazione dei movimenti delle zampe al fine di ottenere

una adeguata andatura

Figura 4 Rover a ruote Figura 5 Rover Spirit sulla superficie di Marte[10]

Durante il passo inoltre bisogna mantenere il controllo sulla stabilitagrave e

sullrsquoequilibrio (controlli del tutto assenti in un robot a ruote) monitorare i valori

di torsione dei singoli motori accertandosi che essi non superino le soglie limite e

valutare il punto di appoggio futuro Una volta costruito un passo il compito

ricade nel continuare a ciclarlo opportunamente al fine di portare a termine il

compito richiesto superando eventuali dissestamenti del terreno o ostacoli

Un robot a ruote invece egrave in grado solo di muoversi su terreni lisci e

richiede un maggior spazio per effettuare semplici manovre Di fronte a ostacoli

anche minimi il robot a ruote dovragrave effettuare la pianificazione di una traiettoria

Sistemi di locomozione 20

per aggirare lrsquoostacolo e impiegheragrave un tempo di reazione maggiore Se un robot

a ruote si troveragrave di fronte ad uno ostacolo saragrave costretto ad attivare calcoli

opportuni che gli permetteranno di costruire una strada alternativa per il

superamento dellrsquoimprevisto Un robot a zampe invece potragrave attivare gli attuatori

al fine di scavalcare se possibile lrsquoostacolo

Figura 6 Diverse strategie per oltrepassare un ostacolo

Altro aspetto di differenziazione tra le due tipologie di robot risulta essere

la mobilitagrave della piattaforma Alcune volte risulta essere utile mantenere il carico

in una inclinazione prestabilita (ad esempio il trasporto di un grave o il

mantenimento del centro ottico di una telecamera) Nei robot a ruote il corpo egrave

solitamente solidale con lrsquoasse delle ruote e si mantiene ad una distanza fissa dal

terreno seguendolo in ogni sua inclinazione Questo risulta essere una

caratteristica utile su terreni pianeggianti ma risulta sconveniente su terreni

curvilinei In questa circostanza risulterebbe utile disaccoppiare la piattaforma con

le ruote motrici al fine di mantenere costante lrsquoinclinazione del corpo principale

Questo disaccoppiamento egrave giagrave presente nella struttura dinamica del robot

a zampe dove la postura della piattaforma risulta essere la somma di due

contributi quali

bull scelta dei punti di appoggio

bull posizione cinematica assunta da ogni singola zampa in riferimento

alle caratteristiche del terreno

Sistemi di locomozione 21

Attraverso cioegrave la posizione delle zampe il robot egrave in grado di

ammortizzare le sconnessioni del terreno e dentro i limiti cinematici e di

mantenere lrsquoasse prescelto

Figura 7 Mobilitagrave della piattaforma

Esistono comunque analogie che accomunano le due strutture di robot

esistenti la principale risulta essere la ciclicitagrave dei movimenti Nei sistemi legged

dopo aver trovato un corretto movimento per la realizzazione di un passo egrave da

ricercare il periodo in cui esso dovragrave ripetersi al fine di ottenere una camminata

con andatura corretta Per un robot a ruote il periodo risulta invece essere

semplicemente la rotazione della ruota attorno al proprio asse A paritagrave di

ripetizione di un ciclo il risultato deve essere il ritorno nella posizione iniziale e

lrsquoincremento dello spazio di lavoro

Ulteriore analogia egrave il sistema odometrico Su ogni robot sono solitamente

posizionati un discreto numero di encoder per il rilevamento della posizione Nei

robot a ruote essi sono posizionati sullrsquoasse delle ruote mentre nei legged essi

sono inseriti nelle articolazioni dove sono posizionati i motori Si possono notare

differenze consistenti a livello di calcoli effettuati ma entrambi forniscono come

risultato la posizione effettivamente raggiunta Di particolare interesse per i

calcoli egrave la sequenza di comandi dati in input al variare di essi varia la postura

finale assunta

Sempre riguardo lrsquoodometria altra caratteristica comune egrave il calcolo

dellrsquoerrore esso viene calcolato in relazione ai valori di feedback dei sensori Si

puograve presentare di due tipologie

Sistemi di locomozione 22

bull sistematico dovuto a caratteristiche proprie meccaniche del robot

bull non sistematico dovuto alle iterazioni con lrsquoambiente circostante

Errori e cause di errori verranno trattati nei capitoli successivi

13 Analisi Trot gait di quadrupedi

Tra gli esseri viventi dotati di zampe presenti in natura[11] la nostra

analisi si concentra su animali che deambulano su 4 arti Essi rappresentano una

classe animale che sfrutta particolari doti fisiche e mentali per regolare la stabilitagrave

del corpo e lrsquoagilitagrave dei movimenti

Vengono presentate di seguito alcuni gait9 di quadrupedi su terreni piani e

lrsquoanalisi dei principali fattori che ne determinano le caratteristiche e le prestazioni

in termini di velocitagrave[12]

Le principali caratteristiche sullo studio di andature sono

bull Periodicitagrave il moto prevede la sequenza ciclica del movimento di

ogni singola zampa (passo)Ogniuna di esse egrave regolata da tre

variabili di giunto ciascuna delle quali segue a sua volta una

traiettoria periodica Complicazioni ulteriori emergono se si

considerano virate o terreni sdrucciolevoli

bull Stabilitagrave caratteristica di maggiore importanza nel caso di

locomozione a zampe essa egrave assicurata quando il baricentro del

robot cade allrsquointerno del poligono di stabilitagrave ovvero quando il

margine di stabilitagrave egrave maggiore di zero Il margine di stabilitagrave

dipende dalla posizione in cui il robot si trova se fermo o in

movimento Se il robot egrave fermo tale margine si calcola come la

distanza piugrave breve dal baricentro al perimetro del poligono di

9 Andatura con passi specifici

Sistemi di locomozione 23

stabilitagrave in qualsiasi direzione durante il moto si considerano solo

le distanze nella direzione del moto (margine di stabilitagrave

longitudinale)

bull Traiettoria della zampa la traiettoria dellrsquoorgano terminale di una

zampa (piedino) si compone di tre fasi principali

bull alzata

bull avanzamento

bull appoggio

la prima ha il compito di sollevare il piede da terra la seconda

permette lrsquoavanzamento della zampa ed infine nella terza il piede

viene riposizionato a terra nella posizione base per reiterare il

procedimento

In relazione al profilo scheletrico di un vertebrato mammifero

generalizzato esso egrave in grado deambulare in diverse andature[13]

Non troppo dissimile dallrsquoarchitettura di cani cavalli o gatti il nostro robot

presenta perograve lrsquoarticolazione della spalla ruotata di 90 gradi rispetto al mammifero

comune questo gli permette di mantenere un notevole grado di stabilitagrave in quanto

incrementa il suo possibile convex hull10 ma ci obbliga a studiare un nuovo tipo

di movimento per il passo base

Inoltre il piede di appoggio risulta essere di notevoli dimensioni rispetto

alla zampa al fine di sopportare ottimamente il peso del corpo sovrastante

In base alla stabilitagrave durante il movimento la andatura di un 4-legged puograve

essere classificata in tre diverse classi principali

bull andatura quasi statica

bull andatura quasi dinamica

bull andatura dinamica

10 poligono che rappresenta la base drsquoappoggio

Sistemi di locomozione 24

131 Studio andatura quasi-statica

Una andatura si dice quasi-statica se il centro di massa della nostra

struttura cade allrsquointerno del poligono di stabilitagrave che si viene a creare

congiungendo i punti di appoggio Con questa tipologia di camminata siamo certi

che il robot assorbiragrave le possibili perturbazioni del moto con un piugrave ampio

margine di stabilitagrave

uesta andatura egrave quella riprodotta in laboratorio sul nostro soggetto le

ragioni che ci hanno portato a questa scelta oltre ai vantaggi precedentemente

citati sono

bull moderata velocitagrave

bull buona risposta in tempo degli attuatori

Per implementare le fasi di camminata abbiamo analizzato ed elaborato il

gait 4-time11 di un mammifero comune essa si basa su quattro movimenti un LF

(di sinistra-anteriore) un RR (di destra-posteriore) una RF (di destra-anteriore)

un LR (di sinistra-posteriore) quindi una ripetizione

In questo movimento si noti che lrsquoequilibrio e il supporto egrave effettuato dal

LR+RF ldquodiagonalerdquo mentre i piedini di RR e di LF sono sospesi [ posizioni 1 2 ]

e dalla diagonale opposta per gli altri 2 piedini [ posizioni 5 6 ]

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

11 Gait 4-time camminata divisa in quattro fasi

Sistemi di locomozione 25

Figura 8 Nei nove diagrammi viene descritta la completa sequenza di camminata

partendo con la zampa sinistra Le posizioni 1 e 2 mostrano la diagonale destra 3 diagonale

destra e anteriore sinistra 4 laterale sinistra 5 e 6 diagonale sinistra 7 diagonale sinistra e

anteriore destra 8 laterale destra 9 ritorno nella posizione di partenza

Questa andatura presenta un tipico movimento sinusoidale del baricentro

del corpo nel piano trasversale

In base alla configurazione del nostro robot esso non presenta una colonna

vertebrale snodabile lrsquoanalisi prodotta ci ha potato alla creazione di una andatura

che non modifica lrsquoasse su cui giace il centro di massa

132 Studio andatura quasi-dinamica

La seconda classe di camminata raggruppa andature per cui la proiezione

del centro di massa cade in alcune fasi del passo sul lato del poligono di stabilitagrave

Sistemi di locomozione 26

In queste situazioni un incorretto posizionamento degli attuatori o una

minima perturbazione potrebbe causare una perdita di stabilitagrave per questo bisogna

intervenire in tempistiche ridotte trovando soluzioni che riducano gli effetti

La velocitagrave che si riesce ad ottenere deriva da un passo di camminata

leggermente piugrave ampio eseguito in un tempo minore di frame12 pur mantenendo

quasi inalterate le fasi di esso

133 Studio andatura dinamica trotto

La classe di andatura dinamica rappresenta invece lrsquoandatura piugrave veloce

presente in natura[14] essa si basa sul concetto di tempo di volo in cui solo due

zampe o addirittura tutto il corpo non tocca il terreno andatura tipica nella corsa

di mammiferiVenendo a mancare il triangolo di appoggio bisogna trovare un

abile compromesso tra inerzia velocitagrave e potenza muscolare al fine di evitare la

perdita di equilibrio e lo slittamento delle zampe sul terreno

12 istanti temporali in cui si attua lrsquoanalisi completa

Sistemi di locomozione 27

Figura 9 Nelle posizioni 1 e 3 vengono mostrate la diagonale destra e sinistra come

supporto al trotto Le posizioni 2 e 4 mostrano il momento di flying trot che egrave raramente

osservabile a causa della velocitagrave dei movimenti Le posizioni 5 e 6 mostrano un passo di

corsa piugrave tranquillo che puograve essere eseguito da un cane stanco o non troppo motivato

Capitolo 2 Stato dellrsquoarte dei four legged robot

Stato dellrsquoarte dei four legged robot 29

21 Panoramica dei Robot quadrupedi esistenti

In questo capitolo verragrave presentata una carrellata dei moderni sviluppi

riguardanti la 4-legged robotics13

Proponiamo i progetti piugrave significativi a cui ci siamo riferiti per lrsquoanalisi e

lo sviluppo della camminata e i robot piugrave moderni che vengono utilizzati come

banchi di prova per progetti di intelligenza artificiale e multi-collaborazione che ci

potranno essere utili per evoluzioni future del nostro ASGARD

211 Collie-1 e Collie-2

Giagrave dalle prime ricerche nellrsquoambito della robotica umanoide la

realizzazione di una camminata naturale egrave stata ampiamente presa in

considerazione Nella seconda metagrave degli anni ottanta abbiamo trovato il primo

utilizzo di DC servos per la realizzazione di prototipi per la camminata dinamica

Collie-1 e la sua evoluzione Collie-2[15] Basandosi sul concetto di camminata

suddivisa come statica e dinamica lo studio ha messo in evidenza come la

camminata dinamica richiede un surplus di energia e una maggior velocitagrave di

esecuzione ponendo particolare interesse ai valori di stabilitagrave velocitagrave massima e

consumo energetico che sono alcuni dei parametri anche da noi presi in

considerazione nel nostro progetto Nello sviluppo di Collie le relazioni tra questi

criteri e i parametri (gait speed period stride length of the leg joint angles etc)

hanno portato alle seguenti deduzioni riguardanti al camminata dinamica

a) Minore egrave il periodo in cui avviene la camminata migliore egrave la stabilitagrave del

quadrupede

Ersquo desiderabile camminare con un lungo periodo e compiendo ampi passi

per riuscire ad accrescere la velocitagrave massima

13 settore della robotica che si occupa di robot a 4 zampe

Stato dellrsquoarte dei four legged robot 30

b) Crsquoegrave un periodo in cui la velocitagrave egrave massima

c) Crsquoegrave un periodo in cui si minimizza il consumo energetico per fornire

velocitagrave

d) Trot gai14t egrave desiderabile quando la prioritagrave egrave in primo piano rispetto al

consumo energetico

Pace gait15 egrave raccomandata quando la prioritagrave energetica egrave al di sopra

della velocitagrave massima

Gli esperimenti per appurare la validitagrave di queste affermazioni sono stati

effettuati con il robot Collie-2 che fisicamente presenta 3 joint16 attorno allrsquoasse di

pitch (beccheggio) e 2 joint attorno allrsquoasse di roll (rollio) per ogni gamba con un

potenziometro montato per ogni gamba e motori DC servos sistemati sui 3 joint

sullrsquoasse trasversale e 1 joint sullrsquoasse sagittale

Figura 10 Collie 2 vista semi

frontale Figura 11 Collie 2 di

fronte

Figura 12 camminata vista

laterale

14 andatura veloce di trotto 15 camminata tranquilla da crocera non veloce 16 giunto

Stato dellrsquoarte dei four legged robot 31

212 Quadrupede MIT

Realizzato al MIT (Massachusset Institute of Technology) negli anni 1984-

1987 [16] egrave composto da un unico grado di libertagrave per zampa a cui si aggiunge un

meccanismo a basso livello di coordinazione del piedino Ersquo stato sviluppato per

esplorare il funzionamento su quatto zampe e le transizioni tra tipologie diverse di

gait quali il trottino (accoppiamento zampe diagonali) pacing (accoppiamento

laterali) bounding (accoppiamento anteriore posteriore) fornendo consistenti

informazioni sulle diverse posture[17]

Figura 13 Immagine laterale camminata

robot dequadrupe del MIT

Figura 14 basato su llo stesso

meccanismo del robot del MIT Scout

prodotto allrsquoumiversitagrave di Monteal

sviluppa ampliamente il concetto di

bounding gait[18]

213 GEO

Iniziata la costruzione del progetto nel 1994 a USC GEO I [19]

presentava due grandi innovazioni una spina dorsale flessibile e zampe

riconfigurabili Queste due caratteristiche permettono al robot di emulare la

camminata di una salamandra cioegrave di far seguire al proprio baricentro un

andamento sinusoidale quando invece una zampa egrave posizionata sotto il corpo il

robot puograve deambulare come un comune mammifero quale ad esempio il cane

Stato dellrsquoarte dei four legged robot 32

Questa particolare possibilitagrave di cambiamento di tipologia di camminata egrave

rimasta nellrsquoevoluzione del modello GEO II che risulta essere molto piugrave leggero

del suo predecessore dotato si sensori di forza nei piedi e possibilitagrave di

interazione con il mondo esterno tramite reti neurali

Figura 15 GEO I nel superamento di un

ostacolo

Figura 16 GEO II in posizione base

214 Quadrupede Kimura lab

Dal Giappone e piugrave precisamente dal laboratorio di Kimura[20]

compaiono i robot piugrave avanzati in grado di camminare su terreni estremi quali

ciottolati erbe sparse o pavimentazioni sconnesse utilizzando sensori di visione I

principali in evoluzione sono Tekken-II azionato da servomotori e pilotato

manuale usando un regolatore radiofonico Futaba Le particolaritagrave di questo robot

sono il giunto della caviglia passivo con il meccanismo molla-smorzatore17 il

posizionamento di un meccanismo della molla intorno al giunto del ginocchio

dellrsquoanca al fine di ridurre il consumo di energia Sul corpo presenta diversi

sensori Tasso-girobussola per 3 ascie e 2 inclinometri per le ascie del rullo e del

passo 1 sensore per il contatto di asse egrave fissato su ogni piedino Della stessa

famiglia adatti perograve a terreni scoscesi e ondulati ricordiamo inoltre Patrush I e

Patrush II rispettivamente degli anni 2000 e 2001

17 principio fisico che attenua le sollecitazioni e incamera energia che puograve essere

successivamente sfruttata

Stato dellrsquoarte dei four legged robot 33

Figura 17 Patrush I vista

semifrontale

Figura 18 Tekken II vista laterale

22 Algoritmi di controllo CPG for four legged robot

Testato successivamente sulle potenzialitagrave di GEO II egrave stato realizzato nel

2002 il modello CPG (Central Pattern Generation)[21] che sostituisce lrsquounitagrave

centrale del controllo del sistema nervoso presente negli animali Esso propone

che lrsquoadattamento di un animale allrsquoambiente circostante puograve essere modellizzato

come un modulo adattativo (AMs Adaptative Modules) che agisce su un sistema

distribuito di oscillazioni chiamate Adaptative Ring Rules (ARRs) che simulano

semplici riflessi Lrsquoutilizzo e la costruzione di questa rete neuronale ha mostrato

come un sistema puograve auto programmarsi attraverso interazioni con lrsquoambiente

Lrsquoadattamento fa emergere spontaneamente alcuni stati discreti come il

movimento del busto la scelta tra un passo corto e la camminata da crociera e le

coordinate per un singolo giunto

Il risultato di questo modello egrave che ha permesso a un quadrupede di

imparare a camminare in pochi minuti

Basandosi su innumerevoli trattati sullo sviluppo degli impulsi del sistema

nervoso dei mammiferi (Bekoff 1985Cohen 1988) Lewis egrave riuscito a riprodurre

una rete che tenta di emulare le fasi standard e principali del comportamento

Stato dellrsquoarte dei four legged robot 34

animale in relazione ad alcuni stimoli esterni e di riuscire a comunicare questi

impulsi nervosi ai relativi attuatori per creare lrsquoazione Tuttora diversi studi sono

ancora in atto per perfezionare questa tecnica introducendo apprendimento per

rinforzo

Si puograve modellizzare il CPG come una rete di unitagrave funzionali chiamate

unit CPGs (uCPGs) Riferendosi alla figura 18 2 uCPGs sono denominate con

Tw+ e Tw- insieme esse producono il coordinamento principale del robot e

giocheranno un ruolo base nellrsquoacquisizione della camminata Alle uCPGs sono

collegati archi che rappresentano il collegamento ai muscoli estensori delle

diverse articolazioni Questi archi rendono possibile quindi il collegamento delle

unitagrave del busto con quelle del ginocchio etc

Lrsquooutput dei muscoli viene trasformato attraverso una funzione di uscita in

comandi di movimento Questi a loro volta sono ricombinati per creare impulsi

compatibili con i servos dellrsquoancae del ginocchio

Sono introdotti nella rete ulteriori parametri che servono per adattare la

rete a diversi robot

Stato dellrsquoarte dei four legged robot 35

Figura 19Organizzazione del sistema di controllo Il sistema di controllo del robot

presenta una rete di uCPG Ogni cerchio presenta un uCPGs Connessionitrasmissione di

informazioni sono visualizzate come freccie Ogni funzione Ψ converte una informazione in

comandi per i motori I comandi dei motori sono combinati insieme per produrre una

sequeza di livelli di posizione per ogni anca e ginocchio Abbreviazioni KFmuscolo flessore

ginocchio KEmuscolo estensore ginocchio HEmuscolo estensore dellrsquoanca HFmuscolo

flessore dellrsquoanca TW+torsione positivo TW-torsione negativo

Per definire meglio il controllo sono stati realizzati schemi che si basano

su controlli di posizione sulla reattivitagrave dei riflessi e sullrsquoadattamento della

torsione al modulo ambiente

Per realizzare lrsquoultimo modello egrave necessario introdurre ARRs cioegrave il

modulo adattativo dellrsquoambiente attraverso un ulteriore unitagrave computazionale

costituita da tre componenti

Stato dellrsquoarte dei four legged robot 36

Figura 20 Lrsquouso di un innato interno modello per lrsquoadattamento di CGPs La figura

mostra i componeti di un AM

Il primo componente egrave il Forward Model il quale usa una efficiente copia

di una uCPGs per predire il feedback sensoriale il secondo il Comparison egrave a tutti

gli effetti un comparatore tra il feedback sensoriale e il feedback atteso il terzo egrave

una regola che utilizza il risultato della comparazione per modulare la uCPGs in

questione

LrsquoARRs genera un segnale di output che viene indirizzato agli attuatori o a

semplici circuiti che seguono per il controllo sensoriale e rimane in attesa di

ricevere un segnale di ritorno proveniente dai sensori Il segnale di output puograve

anche essere emesso nellrsquoambiente come decisone di movimento per eventuali

robot ad esso sottomessi La creazione di movimenti puorsquo cosigrave migliorare

introducendo nuovi modelli di controllo quali adattamento della lunghezza del

busto per il coordinamento delle gambe e fase di aggiustamento

Questi modelli sono stati realizzati su robot che presentano caratteristiche

mostrate nella seguente figura e che possono essere ritrovate in GEO II

Stato dellrsquoarte dei four legged robot 37

Figura 21 Postura dei Principali Rilessi Tre tipi di simmetria sono applicati per la

distribuzione del pesoDiagonal comparazione dei piedi diagonali Anteriore verso posteriore

comparazione dai piedi anteriori ai posteriori e sullo Stesso lato comparazione dei piedi

sulla destra rispetto quelli sulla sinistra Il numero vicino ad ogni piede denota il numero del

piede

La parte per noi piugrave interessante risulta essere la postura dei riflessi statici

I risultati mostrano come viene distribuito il peso del robot sui piedi di appoggio

Inizialmente quando il robot egrave appoggiato completamente al suolo il peso risulta

essere equamente distribuito In altri casi appariranno disturbi causati da carichi

aggiuntivi come posizione del cavo di alimentazione o piugrave semplicemente alzata

della zampa per compiere un passo

Stato dellrsquoarte dei four legged robot 38

Figura 22Postura dei Riflessi Grafico che mostra la distribuzione del peso rulle

zampe del robot

Questo grafo ci rappresenta come la variazione della postura del robot

influenzi i carichi su ciascuna zampa nella nostra analisi ritroveremo un grafico

simile al precedente quando analizzeremo le forze agenti sui motori nel modello

di Newton-Eulero GEO II presenta perograve un vantaggio considerevole durante i

movimenti il robot attua una fase di ldquoaggiustaggiordquo in cui riassesta il busto per

riequilibrare la distribuzione del peso su tutte le zampe non creando scompensi

23 Robocup e Sony Aibo

RoboCup[22] egrave unrsquoiniziativa internazionale di formazione e di ricerca Egrave

un tentativo di promuovere lrsquoAI18 e lrsquoautomatismo intelligente Basati sul concetto

che una squadra di robot giochi a soccer allrsquointerno di ambienti reali o simulati le

tecnologie che vengono coinvolte devono comprendere nei loro progetti i principi

di agenti autonomi collaborazione multi-agente aquisizione di strategie

ragionamento in tempo reale e automatismo

18 Intelligent Agents

Stato dellrsquoarte dei four legged robot 39

Ersquo in RoboCup che si egrave vista la prima squadra fornita di gambe

Largamente utilizzati per la realizzazione di sistemi multiagenti dotati cioegrave di

complessi programmi di intelligenza artificiale sono i famosi Aibo Sony

Figura 23 Robot Aibo Sony durante una partita alla Robocup

Aibo egrave il miglior prodotto della Sony 4-legged robot essa coinvolge le piugrave

moderne tecnologie per concepire un amico completamente autonomo per

accompagnare ed intrattenere lrsquouomo nella vita giornaliera

Il centro di intelligenza artificiale di Aibo egrave il software Mente2 situato su

una memoria stick removibile Esso controlla il suo comportamento le sue abilitagrave

e le relative caratteristiche che possono essere incrementate con un corretto

addestramento da parte dellrsquoutente Aibo infatti implementa al suo interno un

algoritmo di apprendimento per rinforzo

Nella vita giornaliera questo software gli permette di intrattenere e

comunicare con chiunque riconoscendo intelligentemente i volti e le voci dei suoi

padroni

Per le sue particolari proprietagrave quali vedere sentire registrare suoni

oggetti e facce e riflettere una vasta gamma delle emozioni attraverso la relativa

faccia Condur-guidata19 Aibo egrave in grado di familiarizzare con ogni tipo di

ambiente ambiente e trasformarsi in ogni senso in un individuo vero e unico

19 pilotati da software intelligenti diversi led rappresentano espressioni emotive

Stato dellrsquoarte dei four legged robot 40

231 Storia

Ma vediamo come nasce Aibo[23]Le sue radici risalgono agli inizi degli

anni novanta quando gli ambienti tecnologici erano agli albori riguardo la

creazione di applicazioni per lrsquointrattenimento umano Fu Dr Doi il capo dell

Sonyrsquos Digital Creature Lab ad implementare in un unico automa i nuovi

progressi in termini di processori intelligenza artificiale riconoscitori vocali e

tecnologie di visione al fine di creare un robot autonomo

Durante la fase iniziale nel 1992 gli ingegneri della Sony progettarono

alcuni importanti cambiamenti radicali Nei primi anni novanta robot con camere

e ruote erano riprogrammati per ogni attivitagrave o task in cui essi venivano impiegati

I nuovi progetti includevano la capacitagrave di un robot di deambulare su zampe e

lrsquointerazione con programmi di IA capaci di interagire con alcuni organi sensoriali

come il tatto la vista e il suono Solo verso il 1997 il primo prototipo portograve alla

luce gli enormi sforzi di ricerca e sviluppo Dr Doi indirizzograve tutta la sua ricerca

nella costruzione e nel design di un amichevole robot autonomo Il suo primo

prototipo aveva sei gambe ed era il primo passo per la creazione di un robot a

zampe Dopo questo primo rudimentale modello il team Sony studiograve un design

innovativo e analizzograve ciograve che il robot poteva o non poteva fare per incrementare le

potenzialitagrave celebrali ed espandere le funzionalitagrave hardware e software

Lrsquooriginale modello Aibo ERS-110 fu presentato nel 1999 e rapidamente

si diffuse in tutto il mondo con lo slogan di essere un grande compagno di giochi e

intrattenimento entrando anche a far parte del guinnes dei Primati Lrsquo Europa vide

la sua apparizione il 26 Ottobre 1999 Solo un mese dopo dallrsquoenorme successo

riscontrato fu presentato un ulteriore modello ERS-111 per il target mondiale

Nellrsquoottobre del 2000 venne alla luce la seconda generazione di Aibo ERS-

210 che inglobava miglioramenti di mobilitagrave sensori di tatto led facciali

programmi di risposta sensoriale al mondo esterno tramite espressioni visive

funzioni di memorizzazione delle parole e riconoscitore vocale[24]

Stato dellrsquoarte dei four legged robot 41

I modelli LATTE e MACARON (ERS-311 a ERS-312) entrarono a far parte

della famiglia nel Settembre 2001 i loro nomignoli li rendono dolci e adorabili da

coccolare includendo comunque tutte le caratteristiche dei loro predecessori

Lrsquo8 Novembre 2001 egrave nato lrsquoultimo membro della famiglia Sony che

include le piugrave sofisticate performance e capacitagrave Il modello ERS-220 dotato di un

look futuristico presenta al suo interno una moltitudine di azioni altamente

avanzate e un alto numero di luci e sensori che lo fanno diventare il modello piugrave

sofisticato di robot quadrupede sul mercato[25]

Stato dellrsquoarte dei four legged robot 42

Sviluppo dei modelli Aibo dai primi anni novanta a oggi

Robot Sony Aibo modello a sei zampe

Robot Sony Aibo ERS-110

Robot Sony Aibo ERS-111

Robot Sony Aibo ERS-210

Robot Sony Aibo ERS-31x

Robot Sony Aibo ERS-220

Stato dellrsquoarte dei four legged robot 43

Figura 24 Zoom sulle caratteristiche presenti negli ultimi ritrovati

Specifikace

bull Head touch sensor bull Color Camera bull Stereo microphone bull Speaker bull Pause button bull Back sensor bull Lithium ion battery pack bull Tail sensor bull Memory Stick slot for AIBO bull PC card slot ndash bull slot pro PCMCIAPC-kartu

CPU 64-bitovy RISC procesor memory 32MB SDRAM weight - 15 kg ( baterie a Memory Stick (approx33lb)) dimension 152x266x274mm

Stato dellrsquoarte dei four legged robot 44

232 Descrizione dei sensori di Aibo

Il robot egrave stato progettato in modo da assomigliare ad un vero e proprio

essere vivente Esso egrave quindi dotato di svariati sensori mediante i quali puograve

comunicare con lrsquoambiente e reagire agli stimoli esterni[26]

Il sistema di controllo di Aibo utilizza i microprocessori per controllare

lrsquoinput dai dispositivi quali

bull Macchina fotografica del video a colori CCD20

bull microfono stereo

bull sensore termometrico

bull sensore infrarosso

bull sensore giroscopico di accelerazione

2321 Visione della macchina

Aibo ha una macchina fotografica digitale a colori montata nella sezione

ldquotestardquo I dati di immagine da questa macchina fotografica sono vitali nella

generazione dellrsquoesperienza interattiva tra il robot e il mondo Il video input egrave

analizzato per identificare lrsquooggetto o ldquoun punto caldordquo i motori robot spostano la

testa per dare lrsquoapparenza che il Aibo stia osservando Il robot inoltre egrave fornito di

un sensore infrarosso di distanza per rilevare gli ostacoli e per evitare di collidere

con essi

20 Charge Coupled Device attraverso una piastrina di silicio dotata di sensori le immagini

vengono digitalizzate in relazione a posizione colore e intensitagrave

Stato dellrsquoarte dei four legged robot 45

Figura 25 CCD camera a colori

Figura 26 Microfoni montati sugli assi

2322 Riconoscimento audio

Aibo egrave dotato di un accoppiamento di microfoni uno da ogni lato della

calotta cranica Questi generano unrsquoimmagine stereo del suono ricevuto che aiuta

nel localizzare la fonte di emissione Ersquo presente un regolatore di distanza per

permettere al robot di porre limiti per frasi da riconosce come ordini

2323 Tatto

Il rilievo sensibile al tocco sulla parte superiore della testa del Aibo egrave un

altro meccanismo attraverso cui riceveragrave input sensoriali In base a come questo

sensore egrave toccato un Aibo riceve i dati che registrano le risposte positive o

negative rispetto ldquoal suo comportamento precedenterdquo imitando le dimostrazioni

affetto o rimprovero

Stato dellrsquoarte dei four legged robot 46

Figura 27 Il bottone blu egrave uno switch per il sensore di pressione

2324 Movimento e sviluppo

Molti dei movimenti del Aibo sono simili a quelli di un animale domestico

un cane o un gatto Un Aibo accede e fa funzionare algoritmi di movimento che

dettano il moto delle relative membra controllando i motori siti nei piedini nella

testa e nella coda In modo indipendente e autonomo il robot si muove attraverso

parecchie fasi per un periodo di tempo Quando ldquosupportatordquo dal suono (comandi

o musica) riesce ad intraprendere movimenti a lui noti e ad imparare nuove

posture piugrave specializzate come sottoposto ad un vero e proprio addestramento

Figura 28 Particolare coda

Figura 29 Sensori del piedino

Capitolo 3 Architettura del robot ASGARD

Architettura del robot ASGARD 48

31 Configurazione del robot quadrupede

Analizziamo ora le caratteristiche del quadrupede realizzato presso lrsquoAir

Lab21 del Politecnico di Milano Nei paragrafi che seguono verranno descritte le

sue caratteristiche implementative che ne hanno permesso la realizzazione e il

controllo

Il progetto egrave stato avviato di recente di conseguenza il robot presenta

ancora notevoli problematiche di stabilitagrave e attuazione tramite servo attuatori

Hitec

311 Struttura Meccanica

La struttura di ASGARD egrave composta da parti ricavate da lastre di

policarbonato di cui presenteremo le caratteristiche nel paragrafo seguente e

incollate con speciale solvente

Il progetto della struttura di Marco Piralli [27] ha permesso al nostro robot

di avere una struttura simile a diversi esseri naturali

Figura 30 Progetto Robot completo di Pialli (sinistra) e dettaglio dellrsquoarticolazione (destra)

21 Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano sede

Leonardo sito in Lambrate

Architettura del robot ASGARD 49

Esso egrave dotato di 12 gradi di libertagrave tre per ogni zampa simili a quelli di

Aibo eccetto la spalla Questi gradi di libertagrave ci permettono di far compiere al

robot movimenti su tutti e tre gli assi La spalla in particolare ci permette tutti i

movimenti nel piano sagittale (detto anche piano laterale movimento fronte-retro)

Mentre le altre due articolazioni permettono movimenti nel piano frontale

(movimento lato-lato) e in quello trasversale

Questa serie di attuazioni da la possibilitagrave al robot di essere indipendente

nel movimento di ogni singola zampa e un ulteriore grado passivo nella zampa

permette di affrontare le differenti tipologie di terreno

Il collegamento tra attuatori e struttura risulta essere diretta senza cioegrave

lrsquoausili di tendini il rotore del motore egrave direttamente connesso alla articolazione

studiata per alloggiare il motore al suo interno

Figura 31 Particolari sulle locazioni e i sostegni degli attuatori nel giunto di

spalla(sinista) e ginocchio caviglia (destra)

Architettura del robot ASGARD 50

Giunto 9Giunto 12

Giunto 3

Giunto 6

Giunto 1

Giunto 2 Giunto 4

Giunto 5

Giunto 7

Giunto 8 Giunto 11 Giunto 10

Figura 32 Posizionamento dei giunti nel robot reale

312 Attuatori

Come illustrato in Figura 32 gli attuatori necessari al movimento di

ASGARD devono risultare leggeri e disposti in modo da non intralciare gli

eventuali movimenti I singoli attuatori sono costituiti da un motore servo da una

molla torsionale e da uno smorzatore senza essere perograve dotato di encoder

incrementale Con questo sistema non egrave possibile realizzare un preciso controllo

di posizione istante per istante ma egrave possibile ottenere una rigidezza di giunto non

infinita

I motori da noi utilizzati sono da 44 Kg bull cm HITEC HS 475HB Standar

Delux[28] abitualmente utilizzati in ambito di modellismo Le cui caratteristiche

sono qui sotto riportate

Architettura del robot ASGARD 51

Caratteristiche principali HS457 HB

Control system Operatine voltage range Operatine speed Stall torque Idle current Running current Stall current Dimensions Weight

+Pulse width control 1500usec neutral 48 V to 60 V 023 sec60(load) 018 sec60(no load) 44 Kg cm 55 Kg cm 74 mA (stopped) 77 mA(no load) 180 mA60 (load) 160 mA60(no load) 900 mA 388x198x36 mm 40 g

Figura 33 Attuatore HS 475 HB visto in sezione (sinistra) e come si presenta sul

nostro robot (destra)

Architettura del robot ASGARD 52

313 Materiale Policarbonato

Per la realizzazione del robot egrave stato scelto un materiale innovativo

resistente agli urti e alla trazione che puograve in questo modo resistere alle

sollecitazioni esterne e alle vibrazioni causate dalla camminata su terreni aspri

Oltre le potenziali caratteristiche di resistenza ha la dote di essere

estremamente leggero e di riuscire ad assemblarsi tramite apposito solvente

Questo permette alla struttura chimica di una superficie di scomporsi e di legarsi

in modo stabile alla struttura di una ulteriore lastra ricreando una struttura

compatta e indissaldabile

Proprietagrave policarbonato[29]

Carico limite di snervamento Nmmsup2 gt60

Resistenza alla rottura Nmmsup2 gt70

Allungamento a snervamento 6 hellip 8

Allungamento a rottura lt100

Modulo elastico Nmmsup2 2300

PROPRIETA MECCANICHE

Resistenza allrsquourto IZOD con intaglio Jm 700

Peso specifico gcmsup3 120

Indice di rifrazione 159

Assorbimento idrico (24h - 23degC) per immersione

036 PROPRIETA

FISICHE

Permeabilitagrave al vapore drsquoacqua (spessore 01m 24h)

gmsup3 15

Temperatura di resistenza al calore vicat VSTB

degC 145hellip150

Espansione termica lineare 1degC 67 X 10

PROPRIETA TERMICHE

Conducibilitagrave termica WmdegC 021

Architettura del robot ASGARD 53

32 ASGRAD in numeri

Le caratteristiche fisiche di Asgard si possono cosigrave riassumere

Busto

Larghezza 1210 cm

Lunghezza 2290 cm

Zampe

Link num 1 573 cm

Link num 2 675 cm

Link num 3 735 cm

Piede 350 x 415 cm

Spessore 4 mm

Peso

Corpo in policarbonato 660 g

Attuatori 480 g

Scheda Pic 20 g

Peso Complessivo 1180 Kg

Angoli dei giunti nella posizione di riposo

Giunto spalla 0deg

Giunto ginocchio 45deg

Giunto caviglia 45deg

Architettura del robot ASGARD 54

735 573 675

2290 122

121

Figura 34 Specifiche di ASGARD vista dallrsquoalto

1212 cm

Figura 35 Vista frontale di ASGARD

Architettura del robot ASGARD 55

33 Hardware

Attualmente non esiste un vero e proprio controllo on-board in grado di

generare traiettorie ma una PIC [30] sita su di esso il cui scopo egrave quello di

interpretare i segnali di comando in uscita dal nostro codice Matlab e di

trasformarli in impulsi (PWM) da inviare ai motori

Figura 36 Sistema di controllo dei motori Nellrsquoambiente Matlab sono stati inseriti dei comandi manuali di posizionamento il programma gestisce la generazione delle traiettorie e i comandi vengono inviati alla PIC Questa si occupa di generare e inviare ai motori gli impulsi che ne garantiscono il posizionamento

Unitagrave di controllo

Alimentazione

Porta seriale

Max 232

PIC

18F4x28 40L DIP

A T T U A T O R I

Figura 37 Schema a blocchi della PIC di controllo

Architettura del robot ASGARD 56

34 Software

La creazione del nostro algoritmo rappresenta la prima implementazione di

codice in merito al progetto del robot quadrupede in esame

Per il collegamento diretto e il pilotaggio di motori servo tramite la porta

seriale abbiamo usufruito di un codice elaborato precedentemente e implementato

sulla PIC

Questo programma egrave costituito da cicli di attesa da parte della PIC stessa

per la ricezione dei comandi e da un canale di ritorno in cui essa comunica al Pc

la corretta trasmissione dellrsquoimpulso

Una miglioria sullrsquoanalisi implementativi ci ha permesso di spingere la

velocitagrave di comunicazione fino a 14400 bitsec

Il nostro programma di analisi e simulazione dei passi analizza le

caratteristiche fisiche di movimento del nostro robot generando i movimenti

opportuni che gli permetteranno di deambulare stabilmente nellrsquoambiente

Un ulteriore ricerca ci ha portato a realizzare una funzione di calcolo delle

traiettorie in ambiente noto che dagrave la possibilitagrave a ASGARD di decidere in real-

time il passo da intraprendere nel singolo istante

Questo puograve essere considerato il primo passo verso un algoritmo di

Intelligenza Artificiale per il nostro robot

Il sistema di controllo dellrsquoandatura di un robot con zampe si puograve cosigrave

scomporre in tre livelli distinti

Architettura del robot ASGARD 57

SUPERVISORE

bull Traiettoria bull Parametri dellrsquoandatura

COORDINATORE bull Controllo della stabilitagrave bull Traiettoria dellrsquoestremitagrave delle

zampe

LIVELLO DELLE ZAMPE bull Cinematica inversa bull Controllo dinamico bull Comandi agli attuatori

35 Stato Attuale

Allo stato attuale il robot egrave stato completato e dotato di sensore di

pressione posto sotto la zampa anteriore sinistra Le tempistiche di risposta della

scheda PIC presentano non poche difficoltagrave a carattere di controllo I motori da

noi utilizzati ricevono in input solo il valore della posizione ed egrave pertanto

impossibile effettuare controlli su velocitagrave ed accelerazione

Ersquo risultato comunque possibile dopo una attenta analisi di stabilitagrave la

creazione di un ciclo di passi che ha permesso ad ASGARD di compiere la sua

prima camminata

Capitolo 4 Modellizzazione cinematica e dinamica

Modellizzazione cinematica e dinamica 59

41 Convenzioni e simbologia utilizzata

Data la natura del robot saragrave essenziale fornirne una corretta analisi

matematica e robotica per mantenere una certa coerenza e chiarezza verranno

utilizzate le seguenti convenzioni

bull Il pedice indica il numero della grandezza a cui si sta facendo

riferimento indica ad esempio lrsquoelemento n di A Nel caso vi

siano presenti due pedici si fa riferimento ad una grandezza che va

dal primo pedice al secondo indica quindi un vettore da i a k

nA

kiA

bull Lrsquoapice egrave utilizzato per indicare il sistema di riferimento rispetto al

quale la grandezza egrave riferita indica quindi lrsquoelemento n della

grandezza A nel sistema di riferimento i

inA

bull Il simbolo times indica il prodotto vettoriale

bull Il simbolo bull indica il prodotto scalare mentre la T posta come apice

egrave la trasposizione

Nella Tabella 1 vengono mostrate le grandezze fisiche utilizzate e la

simbologia per rappresentarle[31]

Ti

iR 1minus Matrice di rotazione dalla terna i-1 alla terna i (premoltiplicazione)

iiR 1+ Matrice di rotazione dalla terna i+1 alla terna i (postmoltiplicazione)

im Massa del braccio

iir 1minus Vettore dalla terna i-1 alla terna i

iI Tensore drsquoinerzia del braccio

iϑ Posizione angolare del giunto i

iϑamp Velocitagrave angolare del giunto i

Modellizzazione cinematica e dinamica 60

iϑampamp Accelerazione angolare del giunto i

iω Velocitagrave angolare del braccio

iωamp Accelerazione angolare del braccio

ipampamp Accelerazione lineare terna i

iCpampamp Accelerazione lineare baricentro iC

if Forza esercitata sul giunto i

imicro Momento esercitato sul giunto i

iτ Forza generalizzata al giunto i

Tabella 1 Rappresentazione delle grandezze fisiche utilizzate

42 Sistemi di coordinate e trasformazioni

Qualunque punto dello spazio puograve essere rappresentato da coordinate

omogenee che non sono altro che le coordinate cartesiane del punto a meno di un

fattore di proporzionalitagrave

⎥⎥⎥⎥

⎢⎢⎢⎢

=rarr⎥⎥⎥

⎢⎢⎢

⎡=

wzyx

pZYX

p dove wxX =

wyY =

wzZ =

In coordinate omogenee ci sono quattro punti particolari

versore direzione dellrsquoasse X versore direzione dellrsquoasse Y ir

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0001

jr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0010

versore direzione dellrsquoasse Z Origine degli assi kr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0100

Or

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1000

Modellizzazione cinematica e dinamica 61

Questi quattro punti caratterizzano il sistema di riferimento Un sistema di

riferimento puograve essere posto in ogni punto dello spazio per noi saragrave essenziale

porne uno in ogni giunto dei robot[32] Inserito un sistema di riferimento il

passaggio da un sistema al successivo avviene tramite una matrice di

trasformazione che al suo interno ne descrive la rotazione e traslazione

La rotazione pura rispetto ad un sistema fisso di coordinate viene

rappresentata tramite una matrice quadrata 33times Ad esempio una rotazione di un

angolo α attorno allrsquoasse z viene descritta con

( )⎥⎥⎥

⎢⎢⎢

⎡ minus=

1000cossin0cos

αααα

αsen

Rz

La matrice A di rototraslazione egrave rappresentata in generale come

composizione degli spostamenti rotatorio e traslatorio

( ) ( )

[ ] ⎥⎦

⎤⎢⎣

⎡ timestimes=

10001333 TraslRot

A

La matrice egrave costituita da una parte di rotazione una di traslazione lungo i

tre assi e una riga i cui valori indicano la ldquoscalardquo e la ldquoprospettivardquo (non utilizzati

in questo ambito) In analisi piugrave approfondita

Modellizzazione cinematica e dinamica 62

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

A

possiamo vedere come le prime tre colonne rappresentano i versori del

sistema di partenza mentre lrsquoultime rappresenta la posizione di arrivo in

coordinate omogenee dellrsquoorigine in cui egrave posizionato il sistema di riferimento

43 Cinemetica diretta

In questo ambito ci proponiamo di illustrare i modelli matematici che ci

hanno permesso di analizzare ASGARD Partiamo da alcune definizione basilari

Un robot manipolatore egrave una catena cinematica sequenziale22 aperta23 o

catena parallela composta da corpi rigidi (link) uniti da giunti

Lrsquointeresse principale egrave rivolto alla mano o end-effector del robot che

possa raggiungere ogni posizione con qualunque orientamento senza bisogno di

resettare fisicamente il sistema

La cinematica studia il legame tra le variabili indipendenti dei giunti e le

posizioni e orientamento cartesiane raggiunte dal robot Questo egrave chiaramente un

problema cruciale per le applicazioni Il problema si suddivide in due parti

cinematica diretta = passaggi dalle variabili di giunto24 alle variabili

cartesiane25

cinematica inversa = passaggio dalle variabili cartesiane alle variabili di

giunto

22 sequenziale significa che non ci sono diramazioni nella catena 23 aperta una delle due estremitagrave (mano=end-effector) egrave libera 24 valori degli angoli di ogni singolo giunto 25 valore della posizione espresso in coordinate nel di riferimento considerato

Modellizzazione cinematica e dinamica 63

La dinamica studia le equazioni che caratterizzano il moto del robot intese

come velocitagrave accelerazioni tenendo conto non solo delle posizioni iniziali e

finali ma di tutte le caratteristiche del moto la nostra analisi si egrave concentrata sulle

forze e le torsioni agenti sui motori studiate con il metodo di Newton-Eulero

Il calcolo delle traiettorie consiste nel determinare un modo per fornire al

controllore del robot lrsquoinsieme dei punti (variabili di giunto) per spostarsi da una

posizione allrsquoaltra con opportune velocitagrave e accelerazioni

Il problema del controllo consiste invece nel trovare modalitagrave efficienti per

far compiere al robot il piugrave fedelmente possibile le traiettorie determinate

431 Definizione dei parametri di Denavit Hartemberg

Elaborare i valori delle variabili di giunto fino a trovare i valori delle

coordinate cartesiane riferite alla posizione dellrsquoend-effector non egrave di facile

carico computazionale soprattutto quando il robot risulta complesso26

Sviluppare metodi a doc ottimi per la cinematica inversa risultano

scomodi e onerosi se riferiti alla cinematica diretta

Un metodo generale e applicabile a qualsiasi tipologia di manipolatore egrave

stato sviluppato negli anni cinquanta da Denavit e Hartenberg (D-H)

Esso consiste nel fissare sistemi di riferimento sui giunti per poterne

determinare i parametri caratteristici Tramite lrsquouso di matrici di rototraslazione

dei sistemi di riferimento egrave possibile trovare un legame tra i parametri dei giunti e

la posizione e lrsquoorientamento dellrsquoend-effector Con questa scelta ogni singola

trasformazione da un sistema di riferimento al successivo saragrave descritta da una

matrice definita da quattro parametri lrsquoangolo del giuntonnA 1minus ϑ lrsquoangolo di twist

α e le due distanze d e l

Identificata la struttura giuntilink del robot egrave necessario fissare i sistemi di

riferimento nel seguente modo

26 complesso con piugrave di due gradi di libertagrave

Modellizzazione cinematica e dinamica 64

bull Scegliere lrsquoasse giacente lrsquoungo lrsquoasse del giunto i+1 iz

bull Individuare allrsquointersezione dellrsquoasse con la normale comune

agli assi e con

iO iz

1minusiz iz iOprime si indica lrsquointersezione della normale

comune con 1minusiz

bull Si assume lrsquoasse diretto lungo la normale comune agli assi

e con verso positivo dal giunto i al giunto i+1

ix 1minusiz

iz

bull Si sceglie lrsquoasse in modo tale da completare una terna levogira iy

Figura 38 Parametri cinematici di Denavit-Hartenberg

Fissate le terne solidali si ha che

ia = distanza da a iO iOprime

id = coordinata su di 1minusiz iOprime

iα = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

ix 1minusiz iz

iϑ = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

1minusiz 1minusix ix

Modellizzazione cinematica e dinamica 65

Nella nostra analisi essendo tutti giunti rotoidali lrsquounica variabile risulta

essere iϑ indicante la posizione in gradiradianti del giunto Nello sviluppo della

parte grafica per caratteristiche proprie del tool utilizzato sono stati introdotti

ulteriori due giunti traslazionali che nellrsquoanalisi non vengono perograve presi in

considerazione come variabili

La matrice di trasformazione complessiva viene costruita nel modo

seguente

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡minus

minus

=minus

1000cos0

coscoscoscoscoscos

1

iii

iiiiiii

iiiiiii

ii dsen

senasensenasensensen

Aαα

ϑαϑαϑϑϑαϑαϑϑ

432 Metodo di assegnamento secondo D-H

Per ricavare velocemente le matrici di trasformazione secondo la

convenzione di D-H si utilizza la seguente procedura operativa

1 Individuare e numerare consecutivamente gli assi dei giunti

assegnare rispettivamente le direzioni agli assi hellip 0z 1minusnz

2 Fissare la terna base posizionandone lrsquoorigine sullrsquoasse gli assi

e sono scelti in maniera tale da ottenere una terna levogira

0z

0x 0y

Eseguire i passi da 3 a 5 per i = 1 hellip n

3 Individuare lrsquoorigine allrsquointersezione di con la normale comune agli assi e Se gli assi e sono paralleli posizionare in modo da annullare

iO iz

1minusiz iz 1minusiz iz

iO id4 Fissare lrsquoasse diretto lungo la normale comune agli assi e

con verso positivo dal giunto i al giunto i+1 ix 1minusiz

iz5 Fissare lrsquoasse in modo da ottenere una terna levogira iy

Per completare

Modellizzazione cinematica e dinamica 66

1 Fissare la terna n allineando lungo la direzione di nz 1minusnz

2 Costruire per i = 1 hellip n la tabella dei parametri ia id iα iϑ

3 Calcolare sulla base dei parametri di cui al punto 7 le matrici di

trasformazione omogenea ( )iii qA 1minus per i = 1 hellip n

La posizione e lrsquoorientamento di un qualsiasi giunto della catena rispetto il

sistema base egrave ora calcolabile premoltiplicando i valori nel sistema corrente per

tutte le matrici di trasformazione precedenti a tale sistema

11

121

010

0 minusminussdotsdotsdot== n

nnn AAAAT

In ASGARD si egrave attuata una doppia analisi

la prima consiste nellrsquoalzata del piede e il suo riposizionamento nelle

coordinate desiderate in questo caso lrsquoorigine del robot risulta essere solidale con

il baricentro del corpo e lrsquoend-effector risulta coincidere con la zampa mobile

Figura 39 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nel baricentro e end-effector coincidente con la zampa mobile

Modellizzazione cinematica e dinamica 67

I parametri di D-H calcolati risultano essere

link ϑ α a d

1 deg45 0 1l 0

2 2ϑ deg90 2l 0

3 3ϑ 0 3l 0

4 0 4l 0 4ϑ

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

1111

1111

010

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdot

=

10000010

00

2222

2222

121

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

3333

3333

232

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

44441

4444

343

SlCSClSC

A

e la matrice T contenente i valori in coordinate cartesiane della posizione

della zampa egrave calcolata come 3

432

321

210

1004 AAAAAT sdotsdotsdot==

la seconda analisi consiste nellrsquoavanzamento del corpo non essendo il

nostro robot dotato di uno scheletro mobile e flessibile durante la camminata si ha

la necessitagrave di spostare il baricentro sfruttando lrsquoattrito delle zampe con il terreno

In questa situazione le zampe puntate a terra risultano essere lrsquoorigine e il

baricentro della nostra struttura egrave la parte terminale libera

Modellizzazione cinematica e dinamica 68

Figura 40 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nella zampa di appoggio e end-effector coincidente con il baricentro

In questo caso i parametri di D-H subiscono la seguente modifica

link ϑ α a d

1 1ϑ degminus 90 0 0 2 2ϑ 0 2l 0 3 3ϑ degminus 90 3l 0 4 0 0 4l 0

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

11

11

010

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ minus

=

100001000000

22

22

121

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

33

33

232

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000010000100001

343A

La matrice T per il calcolo della posizione finale non subisce invece

modifiche nella sua formula rimane invariata 343

232

121

010

0 AAAAAT n sdotsdotsdot==

Modellizzazione cinematica e dinamica 69

44 Cinematica inversa

Data una posizione e un orientamento nello spazio cartesiano egrave possibile

trovare una configurazione del nostro manipolatore affincheacute essa possa essere

raggiunta Questo egrave il problema di cinematica inverso

Nel calcolo di tale problema non egrave garantita neacute lrsquoesistenza neacute lrsquounicitagrave

della soluzione cercata La posizione se appartenente allo spazio di destrezza del

manipolatore (spazio in cui egrave garantita lrsquoesistenza della soluzione) non egrave detto che

possa essere raggiunta con unrsquounica sequenza di variabili di giunto

Metodi di analisi ammissibili per il nostro robot risultano essere il metodo

di Paul[33] e quello geometrico non essendo rispettati i vincoli per il metodo di

Pieper (tre giunti rotoidali consecutivi con assi paralleli)

Il metodo di Paul consente di determinare le soluzioni mediante

premoltiplicazioni o postmoltiplicazioni con matrici di trasformazione ortogonali

egrave un metodo euristico per la ricerca di soluzioni in forma chiusa

Lrsquoalgoritmo egrave il seguente

1 Uguagliare la matrice di trasformazione generale T espressa in

termini di variabili cartesiane alla matrice di trasformazione del

manipolatore espressa in termini di variabili di giunto

2 Cercare nella seconda matrice

bull elementi che contengono una sola variabile di giunto

bull coppie di elementi che danno unrsquoespressione in una sola

variabile di giunto quando vengono divisi tra loro

bull elementi o combinazioni di elementi che possono essere

semplificati usando identitagrave trigonometriche

3 Quando si sono identificati questi elementi li si eguagliano ai

corrispondenti elementi della matrice in variabili cartesiane

ottenendo unrsquoequazione la cui soluzione permette di trovare un

Modellizzazione cinematica e dinamica 70

legame fra una variabile di giunto ed elementi della matrice di

trasformazione generale

4 Se non si sono identificati elementi che soddisfano le condizioni al

passo 2 si premoltiplicano entrambi i membri dellrsquoequazione

matriciale per lrsquoinversa della matrice A del primo link si opera

secondo il passo 2 Si itera il procedimento per tutti i link

5 Non sempre egrave possibile trovare elementi che rispettano le

condizioni imposte e riuscire a trovare una soluzione valida

Nella nostra analisi questo metodo egrave stato valido e molto veloce per

trovare il valore del primo angolo spalla ma risulta svantaggioso nel calcolo dei

successivi angoli in cui non si riuscivano a trovare equazioni semplici

=

⎥⎥⎥⎥

⎢⎢⎢⎢

+minusminusminusminus++minusminusminusminusminus++minusminusminusminus

=

10000 2232332332323232

11212321332131321321321321

11212321332131321321321321

SlSClCSlCCSSSCSSSlCSlSSSlCCSlCSSSCCSCSSCCSClCClSSClCCClSCSCSCCSSCCCC

T

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

da cui si ricava

( )( ) 1

1

1223233231

1223233231

CS

lClSSlCClClClSSlCClS

pp

x

y =++minus++minus

= quindi ⎟⎟⎠

⎞⎜⎜⎝

⎛=

x

y

pp

a tan1ϑ

Ersquo stato quindi decisivo per il riscontro del secondo e del terzo angolo

rispettivamente ginocchio e caviglia un approccio geometrico a doc

In questa tipologia di studio di rilevante importanza egrave stata lrsquoestrapolazione

delle coordinate dellrsquoend-effector e la traslazione dellrsquoorigine nel ginocchio al fine

di isolare due piani del moto per ridurre lrsquoanalisi di una dimensione

Modellizzazione cinematica e dinamica 71

Il calcolo della cinematica inversa per un manipolatore a due link risulta

poi di basso carico computazionale applicando regole di trigonometria basilari

Figura 41 Calcolo cinematica inversa attraverso metodo geometrico su un robot

planare a 2gradi di libertagrave

Conoscendo la posizione raggiunta

( )21211 coscos ϑϑϑ ++= llx ( )21211 ϑϑϑ ++= senlsenly

Si applica il teorema di Pitagora nel triangolo indicato

( ) ( ) =sdot+sdotsdotsdot+sdot+=+sdot+=+ 22

22221

22

22

21

222

2221

22 cos2coscos ϑϑϑϑϑ senlllllsenlllyx 221

22

21 cos2 ϑsdotsdotsdot++= llll

E da esso si ricava

21

22

21

22

2 2)(cos

llllyx

sdotsdotminusminus+

=ϑ e quindi ⎥⎦

⎤⎢⎣

⎡sdotsdot

minusminus+=

21

22

21

22

2 2)(

cosll

llyxaϑ

Come si era previsto porta a due soluzioni gomito alto o bassoPer trovare

lrsquoaltro angolo si osserva cha al posto αϑϑ +=∆ 1 si ha

( )xy

=∆ϑtan ( )221

22

costan

ϑϑ

αsdot+

=llsenl

quindi

⎟⎟⎠

⎞⎜⎜⎝

⎛sdot+

minus⎟⎠⎞

⎜⎝⎛= minusminus

221

22111 cos

tantanϑ

ϑϑ

llsenl

xy

Modellizzazione cinematica e dinamica 72

441 Metodo gradiente

Abbiamo utilizzato questo metodo alternativo sperimentale in

concomitanza con il metodo geometrico valutandone successivamente le sue

potenzialitagrave per possibili applicazioni future Esso attraverso semplici calcoli

matematici ci porta al valore dei successivi due giunti della zampa

Figura 42 Baccio a due link

Denomineremo

a angolo del primo giunto

b angolo del secondo giunto

obiettivo stella rossa

errore vettore che punta lrsquoobiettivo

Spostiamo il braccio del robot intorno alla base cambiando gli angoli a e b

Possiamo tracciare un grafico di questo comportamento[34]

Figura 43 Immagine della rappresentazione del gradiente

Modellizzazione cinematica e dinamica 73

Lrsquoasse x rappresenta langolo a mentre lrsquoasse y rappresenta langolo b Lrsquoorigine

egrave nel cento Denomineremo lo spazio di tutti gli orientamenti possibili del braccio

del robot lo spazio di configurazione

Ogni punto sul quadrato contiene una tonalitagrave di grigio che rappresenta la

distanza fra lrsquoend-effector e lobiettivo Le tonalitagrave piugrave chiare sono distanze piugrave

grandi mentre il nero rappresenta zone di avvicinamento allrsquoobiettivo Ci sono

due posti in cui la distanza egrave uguale zero rappresentanti le due configurazioni

(gomito alto e basso) in cui il braccio puograve toccare lobiettivo

Dovrebbe essere evidente arrivare al target significa trovare le parti piugrave

nere del grafico Questi punti bassi sono conosciuti come minimi

4411 Gradient following

Questo metodo risulta essere di grande utilizzo per riuscire a trovari i

minimi in uno spazio bidimensionale

Per trovare i punti piugrave bassi sul grafico si deve semplicemente seguire

punti che portano lrsquoend effector ad una distanza minore dal target

Figura 44 Immagine di esempio

Figura 45 Gafico del Gradiente di esempio

Si guardi questo esempio Figura 44 Lobiettivo egrave la stella rossa In questa

posizioneun movimento del giunto di rotazione a sposteragrave la mano nel senso della

freccia a ed un movimento di b sposteragrave lrsquoend-effector nel senso della freccia b

Modellizzazione cinematica e dinamica 74

Per raggiungere lrsquoobiettivo desideriamo spostare la mano nel senso della freccia t

Spostando solo il giunto A o solo B non otterremo grandi risultati ma serviragrave un

movimento complessivo Ora guardiamo questo in termini di grafico (Figura 45)

Cominciando ad una configurazione casuale del braccio (start) possiamo

guardare i vettori a e b e ruotiamo ogni giunto un po in proporzione a quanto

aiuta per ottenere una migliore posizione rispetto allrsquoobiettivo Si puograve pensare a

questo come esaminare la pendenza locale del grafico Ci si chiede qual egrave il

movimento che li conduce il piugrave velocemente in discesa ci si sposta in quel senso

Si continua a ciclare questo fino ad arrivare ad una distanza dal nostro obiettivo

che concorda con lrsquoapprossimazione da noi desiderata

Vantaggi di questo metodo sono lrsquoapplicazione in tutte le problematiche

con un numero elevato di link Il tempo computazionale non risulta essere oneroso

in quanto ci si riconduce a semplici operazioni matematiche che Matlab riesce ad

eseguire in pochissimi istanti nonostante lrsquoelevato numero di iterazioni

4412 Faster gradient following

Esso egrave unottimizzazione del metodo gradient following che accelera

letteralmente il processo[34] Precedentemente ad ogni ripetizione la pendenza egrave

stata sottratta semplicemente dalla posizione nello spazio di configurazione

spostando la struttura piugrave vicino al minimo Questa volta sottrarremo la pendenza

dalla velocitagrave a cui ci muoviamo attraverso lo spazio di configurazione

Otteniamo come risultato un calcolo molto piugrave rapido in termini di

iterazioni che si riducono fino al 60-75 rispetto al precedente mantenedo

risultati ottimi in base anche allrsquoapprossimazione da noi scelta

Modellizzazione cinematica e dinamica 75

Figura 46 Passi per arrivare al target nel metodo di inseguimento veloce

45 Calcolo delle traiettorie

Vogliamo presentare le modalitagrave di come le traiettorie vengono generate

Tra le diverse disponibili egrave stato scelto il controllo in posizione nello spazio dei

giunti affichegrave il robot riesca a deambulare in un cammino definito Esprimendo le

traiettorie nello spazio dei giunti vengono evitate le conversioni cinematiche

inverse e quindi per la realizzazione delle traiettorie non serve potenza di calcolo

onerosa

Per il controllo delle traiettorie esistono metodi semplici basati sulla

gestione del movimento del singolo link senza che esso venga temporizzato con

tutta la struttura e algoritmi piugrave complessi che fanno uso delle cubiche27 esse

arrivano a un buon compromesso tra quantitagrave di calcolo richiesta e qualitagrave delle

traiettorie ottenute Il cammino da compiere viene specificato mediante punto di

arrivo e punto di stop si vorrebbe che tutti i giunti arrivino al task nello stesso

istante in modo da garantire lrsquoassenza delle discontinuitagrave Si generano traiettorie

nello spazio dei giunti specificando per ogni motore la funzione di moto e

verificando che le posizioni attraversate non siano degeneri28 o singolari29[32]

27 polinomi dal terzo grado a superiore che rappresentano funzioni continue 28 degenere significa non raggiungibile dal robot

Modellizzazione cinematica e dinamica 76

Esistono diversi metodi per calcolare le cubiche di seguito vengono

presentate quelle da noi elaborate e convertite in codice

Movimento da una posizione finale ad una posizione finale in un certo

intervallo di tempo per ogni giunto deve essere trovata una funzione ( )tϑ

continua e con derivata prima continua il cui valore per t=0 sia per t = sia ft fϑ e

che possa essere usata per interpolare i valori dei giunti I vincoli che devono

essere soddisfatti sono

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = 0 Velocitagrave iniziale nulla

( )fϑamp = 0 Velocitagrave finale nulla

Per soddisfare i vincoli egrave necessario un polinomio di terzo grado in cui i

coefficienti saranno scelti per soddisfare i quatto vincoli

( )tϑ = 3

32

210 tatataa sdot+sdot+sdot+

dal polinomio ricaviamo la funzione che rappresenta la velocitagrave

( )tϑamp = 2321 32 tataa sdotsdot+sdotsdot+

e lrsquoaccelerazione

( )tϑampamp = taa sdotsdot+sdot 32 62

sostituendo le equazioni nei vincoli sopra citati troviamo i seguenti valori dei

coefficienti

=0a 0ϑ

29 un punto singolare egrave un punto in cui non egrave possibile calcolare lo jacobiano inverso

Modellizzazione cinematica e dinamica 77

01 =a

( )2

02

3

f

f

ta

ϑϑ minussdot=

( )3

03

2

f

f

ta

ϑϑ minussdotminus=

Con queste equazioni abbiamo ottenuto il metodo piugrave semplice per

connettere due posizioni nello spazio A fronte del consistente numero di

operazioni richieste per il carico grafico questo egrave il metodo da noi utilizzato per

tutto lo sviluppo del simulatore che emula la creazione di un percorso inoltre esso

risulta simile al controllo a noi a disposizione per gli attuatori reali a disposizione

Abbiamo comunque voluto implementare un metodo avanzato per

superare limitazioni presenti che potragrave essere utilizzato anche in un futuro quando

controlli effettivi saranno introdotti per il controllo di velocitagrave e accelerazione dei

motori Esso egrave costituito da un polinomio di quinto grado in cui possono essere

specificate posizioni velocitagrave e accelerazioni nei punti iniziale e finale e puograve

gestire la continuitagrave dellrsquoaccelerazione nei punti di via

Il polinomio studiato risulta essere

( )tϑ = 5

54

43

32

210 tatatatataa sdot+sdot+sdot+sdot+sdot+

( ) =tϑamp 45

34

2321 5432 tatatataa sdotsdot+sdotsdot+sdotsdot+sdotsdot+

( ) =tϑampamp 35

2432 201262 tatataa sdotsdot+sdotsdot+sdotsdot+sdot

imponendo

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = Velocitagrave iniziale 0v

( )fϑamp = Velocitagrave finale fv

Modellizzazione cinematica e dinamica 78

sostituendo i vincoli trovo i seguenti valori dei parametri

tvva fof sdotminussdotminusminussdot= )(3)(6 05 ϑϑ

tvva fof sdotsdotminussdot+minussdotminus= )78()(15 04 ϑϑ

tvva fof sdotsdotminussdotminusminussdot= )46()(10 03 ϑϑ

02 =a

tva sdot= 01

00 va =

46 Modello dinamico Newton-Eulero

Per un analisi realistica e approfondita della camminata non egrave sufficiente

considerare gli effetti della forza di gravitagrave ma diventa necessario introdurre il

modello dinamico che tiene conto di tutti i fattori non trascurabili nei corpi in

movimento

Per completare le formule ricavate nel caso statico vengono calcolate le

singole velocitagrave e accelerazioni dei giunti e link Risulta assai comodo ed

efficiente lrsquoalgoritmo ricorsivo di Newton-Eulero[31] Viene effettuata dapprima

una ricorsione ldquoin avantirdquo per calcolare le velocitagrave e accelerazioni dei giunti e

successivamente una ricorsione ldquoallrsquoindietrordquo per ricavare i valori di forza e

torsione

Nella prima fase dalla base (baricentro) allrsquoend-effector (zampa in

movimento) abbiamo

Velocitagrave angolare del rotore ( )011

1 zR iii

Tii

ii ϑωω amp+= minus

minusminus

Accelerazione angolare del link ( )0110

11

1 zzR iiii

ii

Tii

ii times++= minus

minusminusminus

minus ωϑϑωω ampampampampamp

Accelerazione lineare terna i ( )iii

ii

ii

iii

ii

ii

Tii

ii rrpRp 11

11

1minusminus

minusminus

minus timestimes+times+= ωωωampampampampamp

Modellizzazione cinematica e dinamica 79

Accelerazione lineare baricentro iC ( )iCi

ii

ii

iCi

ii

iiC iii

rrpp timestimes+times+= ωωωampampampampamp

Nella seconda fase dallrsquoend-effector al baricentro le formule diventano

Forza iCi

ii

ii

ii i

pmfRf ampamp+= +++

111

Momento ( )

( )ii

ii

ii

ii

ii

iCi

ii

ii

ii

ii

iCi

iii

ii

ii

II

rfRRrrfii

ωωω

micromicro

times++

times+++timesminus= +++

+++minus

amp

1

111111

Forza generalizzata 0

1 zR Tii

Tiii

minus= microτ

Ai fini di semplificare i calcoli tutti i vettori sono riferiti alla terna corrente

sul link i Si rende quindi necessario moltiplicare per i vettori da trasformare

dalla terna i+1 alla terna i e per i vettori da trasformare dalla terna i-1 alla

terna i In questo modo e diventa possibile

semplificare la formula del tensore drsquoinerzia del link

iiR 1+

TiiR 1minus

[ ]Tz 1000 = costante =iCi i

r

( )

( )( ) ⎥

⎥⎥⎥

⎢⎢⎢⎢

+sdotminussdotminus

sdotminus+sdotminus

sdotminussdotminus+

sdot=

intintintintintintintintint

dVyxdVyzdVxz

dVyzdVzxdVxy

dVxzdVxydVzy

I22

22

22

ρ

Lrsquoinerzia egrave una proprietagrave che dipende dalla massa del corpo e da come tale

massa egrave distribuita I tensori sopra calcolati descrivono lrsquoinerzia del corpo nello

spazio tridimensionale Per i calcoli si sono supposti i link di densitagrave uniforme e a

forma di parallelepipedo tale approssimazione porta ad ottenere risultati

sufficientemente precisi per questo lavoro semplificando i termini del tensore

( )

( )( ) ⎥

⎥⎥

⎢⎢⎢

++

+sdot=

120001200012

22

22

22

yxzx

zymI

Modellizzazione cinematica e dinamica 80

Nelle formule del calcolo della torsione sono stati tralasciati i termini

inerenti alle forze interne dei motori essendo questi di dimensione trascurabile

47 Creazione di una mappa

La navigazione consiste nel dirigere il cammino di un robot

mobile[35][36] mentre esso si muove in un ambiente affincheacute

bull Raggiunga la destinazione

bull Non si perda

bull Non si schianti contro ostacoli fissi o mobili

La navigazione egrave composta dalle seguenti parti

mapping planning rArr driving rArr

costruzione della mappa pianificazione esecuzione

Il mapping consiste nel rappresentare lrsquoambiente in cui il robot si muove

ottimizzando i movimenti del robot per ASGARD lrsquoambiente egrave stato rappresentato

mediante una matrice bidimensionale che rappresenta la sua area di azione

Il planning rappresenta la costruzione di un cammino geometrico nella

mappa Nel nostro lavoro si egrave deciso di dare la possibilitagrave al robot di scegliere il

percorso piugrave adatto che dovragrave intraprendere Come verragrave descritto piugrave in dettaglio

nel prossimo capitolo dopo aver inserito valori di riferimento degli ostacoli

mediante un algoritmo di ricerca saragrave il controllore a fornire le direttive e

scegliere che tipologia di camminata che ASGARD dovragrave affrontare in ogni

singolo istante alla fase di driving saragrave delegato il compito di scegliere il passo

opportuno al fine di velocizzare la camminata

Il goal per il nostro robot egrave il raggiungimento della posizione data come

obiettivo senza urtare ostacoli fissi presenti sul suo cammino Non essendo dotato

Modellizzazione cinematica e dinamica 81

di un sistema odometrico per il calcolo della posizione saragrave lo stesso controllore a

verificare in real-time la corretta posizione del baricentro del robot

Non possedendo nemmeno sensori di visione abbiamo deciso di simulare

e costruire una mappa object oriented30 la mappa conosce le posizioni degli

oggetti diffusi nel mondo e vieta al robot le aree in cui essi sono presenti

La mappa saragrave rappresentata da una matrice in cui per ogni cella avremo

valori che rappresentano la distanza dal goal31 e le distanza dallrsquoostacolo piugrave

vicino un opportuno algoritmo di planning (revisione dellrsquoAlgoritmo di Dijkstra)

attueragrave la ricerca del cammino meno dispendioso e dopo un opportuno controllo

diragrave al robot se attuare un passo di camminata veloce o un passo di correzione

471 Espansione degli ostacoli traformazione delle distanze

Basato sul concetto di propagazione drsquoonda32 il metodo della

trasformazione delle distanze proviene dal meccanismo utilizzato per processare

la forma in immagini binarie Il metodo consiste nella propagazione della distanza

da un insieme di celle poste in uno spazio rappresentato da una griglia

Si calcola lo scheletro dellrsquoimmagine ostacolo e si identificano le celle che

ne conterranno gli spigoli Poi si passa da sinistra a destra e dallrsquoalto al basso le

celle esterne al perimetro identificandole con distanza 1 Si procede per tutte le

celle della matrice quando tutti i passaggi sono completati il risultato egrave una

matrice che contiene la trasformazione delle distanze applicate al perimetro di un

oggetto I punti occupati dallrsquooggetto verranno identificati con valori idealmente

infinito e non saranno mai visitati

30 tipologia di costruzione di una mappa orientata agli oggetti 31 obiettivo 32 dallrsquooggetto considerato centro in tutte le direzioni dello spazio bidimensionale

Modellizzazione cinematica e dinamica 82

4 3 2 2 3 3 2 1 1 2 2 1 1 3 2 1 1 2 4 3 2 2 3

4 3 2 2 3 4 4 5 3 2 1 1 2 3 3 4 2 1 1 2 2 3 3 2 1 1 2 1 1 2 4 3 2 2 1 1 5 4 3 2 1 1 6 5 4 3 2 1 1 2

Figura 47 Propagazione drsquoonda per ostacolo singolo e multiplo

Abbiamo deciso di propagare lrsquoonda non solo dagli ostacoli questo

avviene in tutto lo spazio libero fluendo attorno agli ostacoli e dando unrsquoidea a

ogni cella della distanza dallrsquoobiettivo e della direzione da prendere per potersi

avvicinare

I valori del perimetro degli ostacoli vanno propagati in base alla geometria

del robot per evitare eventuali collisioni Nel nostro lavoro lrsquoespansione egrave stata

necessaria solo per i margini verticali in cui il raggio di elevazione delle zampe

poograve collidere con oggetti fissi durante la camminata longitudinale questo

problema non egrave stato invece riscontrato per lrsquoasse latitudinale

4 3 2 2 3 4 3 2 1 1 2 3

2 2 2 2 3 2 1 1 2 3 3 3 2 2 3 4

Figura 48 Griglia con espansione laterale ostacolo

Modellizzazione cinematica e dinamica 83

48 Scelta di un percorso Algoritmo di Dijkstra

Questo algoritmo egrave stato scelto come ricerca di un cammino minimo

allrsquointerno di un grafo[37] per la sua elegante semplicitagrave e il suo basso carico

computazionale (O(n)33)

Proposto da WDijkstra nel 1959[38] esso visita i nodi del grafo in

maniera simile ad una ricerca in ampiezza o profonditagrave In ogni istante lrsquoinsieme

N dei nodi viene diviso in nodi visitati V nodi frontiera F (che sono i successori34

dei nodi visitati) e i nodi sconosciuti che sono ancora da visitare

Per ogni nodo lrsquoalgoritmo tiene traccia del valore che nel nostro caso

saragrave il valore della distanza dal punto di arrivo e del nodo in cui siamo

Lrsquoalgoritmo consiste nel ripetere il seguente passo

zd

zu

si prende dallrsquoinsieme F un qualsiasi nodo z con minimo si sposta z da

F a V si spostano tutti i successori di z conosciuti in F e per ogni successore w di

z si aggiornano i valori di e

zd

wd wu ( )azww pddd +larr min dove a egrave lrsquoarco che

collega z a w Si sceglie in minore valore tra i successori di z si salva questrsquoultimo

nel vettore u

Alla fine dellrsquoalgoritmo arriviamo ad avere nel vettore u lrsquoinsieme dei nodi

che forniscono il cammino minimo dal punto di start al punto di end35

33 Orine di grandezza dellrsquoalgoritmo 34 Un successore di z egrave un nodo raggiungible lungo un arco uscente da z 35 dalla partenza allrsquoarrivo

Capitolo 5 Sviluppo dellrsquoalgoritmo di camminata

Sviluppo dellrsquoalgoritmo di camminata 85

51 Metodologie di sviluppo

Per lrsquoimplementazione della parte software si egrave scelto di far uso

dellrsquoambiente di sviluppo Matlab progettato appositamente per lavorare con

matrici e formule di notevole complessitagrave

Nel realizzare il modello matematico del robot ai fini di studiarne il

comportamento ci si potrebbe chiedere percheacute non sia stato utilizzato lrsquoambiente

di simulazione MSCADAMS in grado di fornire anche proprietagrave fisiche

direttamente dal modello CAD studiarne la cinematica la dinamica e

lrsquointerazione con il mondo esterno La finalitagrave di questo progetto perograve egrave quella di

creare uno strumento di supporto da poter essere realizzato in real-time

A questo punto Matlab potrebbe venir criticato per le sue prestazioni

inferiori a linguaggi quali il C ma esso mette a disposizione toolbox aggiuntivi

quali simulink36 che permettono un facile interfacciamento con tutti i dispositivi

hardware Ersquo comunque possibile convertire il codice sorgente in eseguibili o

addirittura nello stesso linguaggio C senza comprometterne alcuna funzionalitagrave

52 Progetto di una andatura

Per la creazione di una andatura rilevante al fine pratico abbiamo attuato

notevoli ricerche di analisi parametriche in merito Il principale obiettivo trovato egrave

risultata essere la realizzazione delle fasi di un passo stabile e veloce Ci

proponiamo quindi di massimizzare la componente velocitagrave senza provocare

instabilitagrave nel robot La velocitagrave si calcola secondo lrsquoespressione

impiegatotempomotodeldirezionenellapercorsospaziovelocitagrave

______

=

36 tool di matlab per la creazionedi controlli ad anello di automazione

Sviluppo dellrsquoalgoritmo di camminata 86

Per raggiungere tale scopo occorre concentrarsi su diverse questioni

bull Scelta del ciclo di camminata

bull Spazio decidere gli angoli del movimento di ciascuna zampa

bull Il tempo partire da una postura conveniente che garantisca i piugrave

brevi scostamenti possibili di angoli di giunto

bull La stabilitagrave

bull Le coppie prodotte dagli attuatori

bull La scelta della camminata

Attraverso lrsquoanalisi di alcune tra le possibili andature di quadruped sono

emersi pregi e difetti derivanti dallrsquoutilizzo di un ciclo di camminata con un

ridotto numero di fasi Un vantaggio fondamentale sta nel ridurre il tempo

impiegato e il maggior difetto egrave legato ai problemi di instabilitagrave del robot

Al fine di ridurre la stabilitagrave siamo intervenuti nella modellizzazione di un

opportuna camminata quasi statica che si adatta alla morfologia del nostro robot

Lrsquoidea egrave stata quella di trovare una camminata efficiente ma stabile

Al fine di ridurre lrsquoistabilitagrave sono state introdotte fasi aggiuntive che

garantiscono il poligono di appoggio e si egrave tentata di far assumere ad ASGARD

una postura a baricentro basso

Il trotto egrave stato escuso dalla nostra analisi non solo per il tempo di risposta

ma anche per lrsquoimpossibilitagrave di attuare spinte per il balzo

521 Lo spazio

La domanda che ci siamo posti egrave stata se risultava conveniente avanzare le

zampe attraverso piccoli spostamenti ripetuti o con ampi spostamenti meno

frequenti

Lrsquoavanzamento del robot avviene mediante la combinazione di due

movimenti

Sviluppo dellrsquoalgoritmo di camminata 87

bull lo spostamento delle singole zampe da una postura iniziale a una

finale

bull la spinta simultanea delle quattro zampe che permettono lrsquoeffettivo

movimento del main body37

La fase aerea risulta essere molto piugrave complessa e richiede un tempo di

attuazione maggiore rispetto a quella di spinta del busto

Lo spostamento assoluto della zampa che si solleva egrave la combinazione di

due movimenti quello attivo dipendente dalla traiettoria imposta allrsquoend effector

e quello passivo che si muove per mezzo della spinta offerta dal movimento del

busto i due movimenti sono strettamente correlati

Se lrsquoobiettivo egrave quello di massimizzare la velocitagrave del ciclo di camminata

la scelta egrave di prevedere lo spostamento della zampa piugrave ampio possibile (passo

lungo) Abbiamo comunque ritenuto utile introdurre entrambe le tipologie di

passo lungo e passo correttivo per la minimizzazione della distanza dal target

522 Stabilitagrave

Al fine di garantire la stabilitagrave egrave utile porsi nel caso quasi-statico cioegrave fare

in modo che il baricentro del robot cada sempre allrsquointerno del poligono di

stabilitagrave ciograve non sembra un problema per le fasi intermedie del ciclo di

camminata percheacute tutte e quattro le zampe toccano il terreno Il problema invece

si fa sentire nelle fasi in cui una zampa viene sollevata e un punto di contatto

viene a meno In questo caso abbiamo dovuto scegliere posture in cui il baricentro

cada nella base drsquoappoggio Ersquo indispensabile quindi prevedere tali configurazioni

e definirle in modo corretto

Occorre inoltre evitare che due zampe in appoggio poste sul medesimo

lato si urtino durante il moto infatti spazi di lavoro delle zampe presentano

strutturalmente zone di intersezione non trascurabili

37 corpo o busto del robot

Sviluppo dellrsquoalgoritmo di camminata 88

Un ulteriore accorgimento per migliorare la stabilitagrave risulta essere quello di

cercare di abbassere il baricentro durante la camminata al fine di mantenere

costante lrsquointensitagrave del moto associato alla forza peso del robot calcolato rispetto

ai punti di appoggio

523 Tempo

Un altro punto su cui si egrave posta particolare attenzione risulta essere il

piegamento delle zampe nel senso se decidere se per compiere un movimento egrave

piugrave conveniente (in termini di spostamento) tenere le zampe tese o piegate

In base a valori di test riscontrati si deduce che in genere conviene tenere

le zampe piuttosto tese poicheacute in questo modo lrsquoescursione angolare nonostante

amplifichi il movimento garantisce un corretto riposizionamento nella posizione

finale desiderata e i tempi non subiscono variazioni

53 Andature implementate

Dopo lrsquoanalisi compiuta sulle modellizzazioni naturali e sui parametri di

scelta abbiamo implementato due tipologie di camminata

Considerando la rigiditagrave del busto di ASGARD esso non dispone di spina

dorsale mobileabbiamo implementato uno stile quasi-statico che non altera lrsquoasse

del baricentro Questo ci ha vincolato a muovere una sola zampa alla volta

(motivazione da cercare anche nella alimentazione dei motori) facendolo partire

da una particolare postura in cui entrambe le zampe del lato sinistro del corpo

sono arretrate rispetto al busto e con angolature precisa degli arti

Abbiamo cosigrave creato una scomposizione del movimento in sei fasi

succesive

bull movimento zampa RL

bull movimento zampa RF

Sviluppo dellrsquoalgoritmo di camminata 89

bull spostamento in avanti del baricentro

bull movimento zampa LR

bull movimento zampa LF

bull spostamento in avanti del baricentro per tornare a posizione base

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

In questa tipologia di gait il robot si trova in piena stabilitagrave anche durante

lrsquoalzata di una zampa la proiezione del centro di massa risulta essere centrale al

triangolo drsquoappoggio

Questa tipologia di camminata quasi-statica egrave una alterazione del modello

Crawl38 presente in natura e nei modelli Aibo con lrsquoinnovazione di sfruttare

posture del normale trotto differenziandone e rallentandone le fasi di realizzazione

al fine di maggiorare il triangolo di appoggio in relazione alla struttura fisica del

nostro robot

Il segmento di appoggio dello stile Crawl viene qui espanso ad un

triangolo di stabilitagrave pur mantenendone le caratteristiche di spazio percorso e

velocitagrave

La nostra ricerca ci ha ulteriormente spinti alla creazione di un ulteriore

stile di camminata quasi-dinamico in cui la proiezione del baricentro durante

lrsquoalzata si spinge a coincidere con il lato del poligono di stabilitagrave

Le fasi di camminata diversificano da quelle precedenti per lrsquoangolazione

degli attuatori e lrsquoordine di esecuzione dei movimenti

Il passo risulta essere composto da 5 fasi

bull movimento zampa RF

bull movimento zampa LF

bull spostamento in avanti del baricentro

bull movimento zampa RR

bull movimento zampa LR

38 modello di trotto di Aibo

Sviluppo dellrsquoalgoritmo di camminata 90

Nella nostra analisi essendo ancora precario il controllo sugli attuatori

risulta impossibile realizzare un impulso tale da creare il balzo del robot Le

andature studiate escludono pertanto lrsquoandatura dinamica o trotto

La camminata quasi-statica egrave stata correttamente testata sul campo

ottenendo buoni risultati le tempistiche di risposta del robot no hanno permesso

perograve la completa realizzazione della quasi-dinamica che in alcune prove non viene

portata a termine in tutte le sue fasi a causa di cedimenti in stabilitagrave

Per questa ragione essa egrave stata ampiamente testata a simulatore

Per lrsquoanalisi dei suoi movimenti essi sono stati elaborati ed egrave stata creata

anche una variante che presenta una minimizzazione dellrsquoangolatura del giunto

spalla e riporta il movimento a quasi-stabile (passo correttivo esso sposta infatti il

robot sulllrsquoasse longitudinale solo di 2 cm)

54 Catene cinematiche del robot

Per lrsquoiplementazione a simulatore abbiamo dovuto adattare il nostro robot

ad una analisi cinematica e dinamica posizionando su di esso i sistemi di

riferimento in modo da costruire una catena cinematica aperta

Per semplificare il modello abbiamo deciso di caratterizzare la struttura del

robot in quattro catene cinematiche aventi base coincidente nel baricentro e

facendo coincidere ogni end-effector con la relativa zampa in movimento

La prima catena quindi che ci proponiamo di analizzare risulta quindi

essere la seguente

Sviluppo dellrsquoalgoritmo di camminata 91

z0

x0

y0

z1

x1

y1

y2

y3

y4

x2

x3

x4

Figura 49 Posizionamento dei sistemi di riferimento con D-H sulla zampa reale

Essa egrave stata implementata in Matlab utilizzando il metodo di D-H

precedentemente descritto implementato nel nostro tool di analisi

INIT_ROBOT Funzione di definizione delle componenti del robot allinterno del nostro simulatore In relazione alle componentistiche del nostro robot e alla grafica del simulatore questa funzione si propone di definire le parti fondamentali inserendo opportunatamente i parametri di Denavit Hartemberg Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 Copyright (C) 2003-2004 by Picco Sabrina zampa A clear L definifione allinterno della matrice L i parametri di Denavit Hartemberg sigma= 1 giunto prismatico sigma=0 giunto rotoidale sono stati inseriti due giunti prismatici per motivi di grafica del simulatore nel collegamento con i motori reali tali valori non verranno considerati alpha A theta D sigma L1 = link([0 -01 pi4 0 1] mod) L2 = link([0 -06 -pi4 0 0] mod) L3 = link([0 0 -pi4 0 1] mod)

Sviluppo dellrsquoalgoritmo di camminata 92

L4 = link([-pi2 -0573 0 0 0] mod) L5 = link([0 -0675 0 0 0] mod) L6 = link([0 -0735 0 0 0] mod) zampaa = robot(L zampaa Unimation AKampB) clear L

Nel codice Matlab riportato per la creazione di una zampa i parametri

prismatici introdotti sono utilizzati solamente a scopo grafico e vengono tralasciati

dallrsquoalgoritmo per la creazione dei movimenti e dei comandi da spedire algli

attuatori

Si egrave cercata una rappresentazione in grado di descrivere non soltanto i

giunti e i link ma anche altre caratteristiche fondamentali quali masse e lunghezze

Il passo viene scomposto principalmente in due passaggi movimento in

avanti delle zampe e spostamento del busto Nel secondo passaggio la catena

cinematica costruita deve ldquoinvertirsirdquo in quanto non saragrave piugrave la zampa del robot a

costituire il nostro end-effector ma essa saragrave solidale con il terreno e saragrave il

baricentro a diventare il nostro punto terminale asimulatore infatti non sono

possibili movimenti che sfruttano la semplice forza attrito

La catena cinematica verragrave cosigrave modificata

Creazione di un ulteriore robot per caratterizzare il cambiamento del punto di partenza della catena cinematicamentre per la prima parte del passo lend-effector egrave la zampadopo che questa egrave stata appoggiata lend-effector diventa il baricentro del robottino alpha A theta D sigma L1 = link([0 0 0 065 1] mod) L2 = link([0 0 0 0 0] mod) L3 = link([pi2 0 0 0 0] mod) L4 = link([0 0573 0 0 0] mod) L5 = link([pi2 0675 0 0 0] mod) L6 = link([0 0735 -pi4 0 0] mod) zampaa2 = robot(L zampaa2 Unimation AKampB)

Sviluppo dellrsquoalgoritmo di camminata 93

Figura 50 Fase di movimento delle zampe anteriorila base delle quattro catene

cinematiche egrave identificata con il baricentro di cui viene effettuata la prioezione

Figura 51 Fase di spostamento del baricentro si possono notare le proiezioni delle

basi delle rispettive catene cinematiche che si identificano con le zampe

La parte di codice presentato appartiene al file Init_robotm in cui vengono

definite tutte le catene cinematiche necessarie al movimento

Un ulteriore definizione di notevole importanza egrave la ricerca di tutti i punti

essenziali per il corretto posizionamento del robot durante la camminata

Sviluppo dellrsquoalgoritmo di camminata 94

Nel file DB_Positionm vengono memorizzate le posizione chiave per la

costruzione di un passo

Nel nostro algoritmo un passo egrave rappresentato da una sequenza di

posizioni base opportunatamente scelte in relazione ai parametri utili per

realizzare gait veloci e stabili

Il movimento che trasla tutta la struttura da un punto al successivo viene

definito da un profilo di accelerazione e velocitagrave implementato via software che

permette di ottenere ottenere un controllo efficiente e un movimento fluido che

rispetti certi vincoli di forza e di tempo

La funzione jtrajm infatti implementa al suo interno un polinomio di

quinto grado che permette il controllo in velocitagrave e accellerazine sia nel punto di

partenza che di fine della traiettoria permettendo un movimento ldquodolcerdquo che egrave in

grado di evitare picchi di torsione Purtroppo nella realizzazione pratica questo egrave

risultato fin troppo oneroso in quanto sui motori da noi usati non esiste alcun

controllo in velocitagrave

Al fine di rendere piugrave reale la simulazione abbiamo implementato un

semplice controllo in movimento da una posizione finale ad una posizione finale

in un certo intervallo di tempo Esso egrave costituito da un semplice polinomio di

terzo grado non attua controlli e gestisce il movimento spingendo il servo a

velocitagrave massima per ogni intervallo Presentiamo la parte di codice per la

gestione del calcolo delle traiettorie e le principali caratteristiche

sullrsquoimplementazione dei vincoli che diversificano in relazione al polinomio

utilizzato

FUNZIONE CUBICA_norm Funzione per la generazione di una traiettoria da un punto iniziale q0 ad un punto di arrivo qf in un certo intervallo di tempo tv utilizzando un polinomio di terzo grado parametri in input q0= posizione iniziale qf= posizione finale da raggiungere tv=tempo in cui effettuare lazione

FUNZIONE JTRAJ Funzione per la generazione delle traiettorie da qo a q1I numero di interpolazioni dipende dal valore di tLa costruzione di tale algoritmo di generazione avviene tramite lutilizzo di un polinomio di ordine 5 con condizioni di velocitagrave e accellerazione agli estremi parametri input q0=posizione iniziale

Sviluppo dellrsquoalgoritmo di camminata 95

parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [qtnqdtnqddtn] = cubica_norm(q0qftv) if length(tv) gt 1 controllo sul tempo tscal = max(tv) t = tv()tscal else tscal = 1 t = [0(tv-1)](tv-1) normalizzazione parametrotempo end q0 = q0() qf = qf() qt= a0+ a1t+ a2t^2+ a3t^3 vincoli da soddisfare qdt= a1+ 2a2t+ 3a3t^2 qddt= 2a2+ 6a3t implementazione dei vincoli A=q0 B= zeros(size(A)) C=((3(tscal^2))(qf-q0)) D=(((-2)(tscal^3))(qf-q0)) creazione del polinomio ttpv = [t^3 t^2 t ones(size(t))] p=[D C B A] creazione del vettore velocitagrave qtn = ttpv p

q1= posizione finale da raggiungere tv=tempo in cui effettuare lazione qd0=condizione velocitagrave nellestremo di partenza qd1=condizione velocitagrave nellestremo di arrivo parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 implementazione dei vincoli A = 6(q1 - q0) - 3(qd1+qd0)tscal B = -15(q1 - q0) + (8qd0 + 7qd1)tscal C = 10(q1 - q0) - (6qd0 +4qd1)tscal E = qd0tscal F = q0 creazione del polinomio tt = [t^5 t^4 t^3 t^2 t ones(size(t))] c = [A B C zeros(size(A)) E F] calcolo valore posizione qt = ttc calcolo la velocitagrave c1 = [ zeros(size(A)) 5A 4B 3 C zeros(size(A)) E ] qdt = ttc1tscal calcolo accellerazione c2 = [ zeros(size(A)) zeros(size(A)) 20A 12B 6C zeros(size(A))] qddt = ttc2tscal^2

Per la chiamata di entrambe queste funzioni vengono richieste le posizioni

di partenza di arrivo ed un tempo questrsquoultimo rappresenta il tempo che intercorre

tra un frame e il successivo cioegrave ogni quanto verragrave generato un valore di

posizione Per ottenere quindi un movimento il piugrave possibile continuo dovremo

richiedere la generazione di un elevato numero di frame introducendo un tempo

piccolissimo Ad esempio se vogliamo che lrsquointerpolazione generi 10 posizioni

intermedie e che tutto il movimento sia compiuto in 1 sec dobbiamo dare t=01

Sviluppo dellrsquoalgoritmo di camminata 96

55 Passo statico e dinamico

Finora abbiamo visto come sia possibile simulare il movimento di una

singola zampa o del baricentro del nostro robot per eseguire un passoa

simulatore questi movimenti devono perograve essere coordinati in modo opportuno

per permettere lrsquoesecuzione sequenziale delle fasi che lo compongono

In prima analisi il nostro lavoro si posto come obiettivo di creare un passo

quasi-statico in cui il baricentro del robot egrave strettamente compreso nella base

drsquoappoggio per garantire al robot una discreta stabilitagrave

Lrsquoanalisi delle fasi della camminata quasi-statica da noi introdotta

possono essere cosigrave schematizzate

Figura 52 Le 6 fasi della camminata quasi-statica

Da questo possiamo notare come il passo si divide in 6 movimenti in cui

vengono mosse le zampe sul lato sinistro del corpo si sposta in avanti il busto si

muovono le zampe sul lato destro e si risposta il busto per tornare alla posizione

di partenza

Ersquo da notare come lo spostamento del busto nellrsquoanalisi reale avviene

sfruttando lrsquoattrito delle zampe con il suolo mentre a simulatore egrave richiesta

lrsquoinversione della catena cinematica

La struttura da noi proposta e analizzata tenta di attuare una camminata

stabile e veloce

Il calcolo della stabilitagrave nei movimenti risulta effettivamente coerente con

le nostre aspettative

Sviluppo dellrsquoalgoritmo di camminata 97

Figura 53 Analisi margine di

stabilitagravesolo alzata(sinistra)in

movimento(destra)

Dove

321 ddd == distanza tra baricentro e perimetro

021 ne= ll durante il passo considero solo la distanza sullrsquoasse del moto

Dopo aver raggiunto un discreto livello di camminata quasi-statica il

nostro obiettivo si egrave spostato nella realizzazione di una camminata quasi-

dinamica

Figura 54 Fasi della camminata quasi-dinamica

Come si puograve notare in questa configurazione esistono istanti in cui il

baricentro del nostro robot giace sul perimetro del triangolo drsquoappoggio in questi

istanti servirebbe una risposta immediata degli attuatori per limitare le tempistiche

di movimento e permettere al robot di mantenere lrsquoequilibrio Questo fenomeno

presente anche in natura lo possiamo notare analizzando la corsa di una pantera

quando il suo corpo ondeggia in ampi angoli i suoi movimenti diventani fulminei

per mantenere la stabilitagrave

Il nostro algoritmo presenta la sezione camminata_statm che simula i due

passi e ne mostra le differenze

Sviluppo dellrsquoalgoritmo di camminata 98

Figura 55 Passo Statico vista semi frontale

Figura 56 Passo Statico vista dallrsquoalto

Figura 57 Passo Quasi-Dinamico vista semi

frontale

Figura 58 Passo Quasi-Dinamico vista

dallrsquoalto

Possimo notare anche dalle immagini come egrave posizionato il baricentro del

nostro robot rispetto alla base drsquoappoggio in diverse fasi del passo e come nella

camminata quasi-dinamica si spinge a limiti intollerabili per le caratteristiche

fisiche del nostro progetto attuale

Presentiamo di seguito lo schema a blocchi di analisi della camminata

Sviluppo dellrsquoalgoritmo di camminata 99

Cerca posizione da raggiungere

Calcola traiettoria end-effector tramite cubiche

Traccia poligono drsquoappoggio per laposizione raggiunta

inizio

Fine

Attua movimento

Posizione=target no

si

Figura 59 Schema a blocchi creazione singolo passo

Il codice proposto in appendice egrave stato successivamente opportunamente

modulato ma questo ha portato a ulteriori cali di prestezione Pertanto nella

esecuzione si egrave preferito riutilizzare il file integro Problemi di tempistiche sono

da attribuirsi alla parte grafica e al calcolo matriciale richiesto per ogni

movimento

La sperimentazione dei passi reali sul robot fisico sono stati effettuati

utilizzando array di valori di angoli di giunto estrapolati durante la simulazione

sopra citata

Sviluppo dellrsquoalgoritmo di camminata 100

56 Formule di forza e torsione sui giunti

Uno dei ruoli principali delle zampe egrave quello di sostenere la piattaforma

del robot e di evitare la caduta

A causa di un cedimento strutturale avvenuto durante i primi approcci di

pilotaggio dei motori abbiamo pensato necessario calcolare la forza e la torsione

sui giunti utilizzando le formule di Newton-Eulero viste precedentemente La

risoluzione di tali equazioni richiede una potenza di calcolo non indifferente ma

le tempistiche del nostro simulatore sono causate dalla lentezza nel plottaggio dei

grafici e dei movimenti del robot

Non avendo un diretto valore di velocitagrave dei motori ci egrave sembrato

interessante provare a calcolare effettivamente le tempistiche dei motori

Conoscendo tramite la cinematica diretta la posizione di arrivo per ogni coppia di

valori abbiamo calcolato lo spazio percorso Cronometrando il tempo richiesto

affincheacute i motori si portassero nella posizione voluta egrave stato possibile valutare la

velocitagrave media dei motori

Questa velocitagrave egrave stata successivamente introdotta nellrsquoalgoritmo

Per il calcolo delle formule di Newton-Eulero egrave inoltre da sottolineare

lrsquoimportanza della ripartizione delle masse ci egrave sembrato coerente ipotizzare le

equidistribuzione del peso su tutte e quattro le zampe in quanto la PIC aggiuntiva

non dovrebbe influenzare tale ripartizione

Dallrsquoanalisi svolta si trovano i seguenti valori sui giunti

Sviluppo dellrsquoalgoritmo di camminata 101

Figura 60 Gafici della torsione in un passo quasi-dianmico

Dal grafico possiamo inanzitutto notare come i valori di torsione che ogni

motore subisce sono inferiori al valore massimo possibile dichiarato dalla casa

costruttrice presente in ogni grafico con la linea nera continua

Possiamo vedere che il valore piugrave alto di torsione viene subito

dallrsquoattuatore presente sulla caviglia sul quale ricadono le maggiori sollecitazioni

Un comportamento analogo ma con decisamente meno carico avviene sul

giunto del ginocchio orientato come il precedente che ha la funzione di aiutare la

caviglia nel sostegno del peso

Il giunto della spalla presenta lrsquoasse di rotazione parallelo alla forza peso

di cui per questo motivo non se ne fa carico Le sue piccole perturbazioni sono

causate durante il movimento del busto dalla resistenza della forza di attrito

sfruttata per il movimento e durante lrsquoalzata della zampa dal peso di ogni singola

Sviluppo dellrsquoalgoritmo di camminata 102

articolazione che risulta perograve essere pressocheacute irrilevante rispetto al peso del

busto

Durante il movimento si possono osservare sulle grandezze di ginocchio e

caviglia una serie di oscillazioni tra due valori essi sono causati dalla ripartizione

del peso su tre o quattro zampe in base alle alzate consecutive quando il peso egrave

ripartito su tre zampe ovviamente il carico che ogni singola zampa egrave costretta a

subire cresce

Ovviamente durante lrsquoalzata ogni singola zampa presenta sui giunti

torsioni pressocheacute nulle questi minimi valori sono da attribuirsi alla sola

resistenza di ogni link alla forza di gravitagrave

La parte di codice fondamentale riportata in Appendice B per questa

funzione risulta essere la definizione dei parametri e lrsquoimplementazione delle

formule di andata e di ritorno dei valori Le funzione base viene chiamata

allrsquointerno di una ulteriore funzione NW-EUm che adatta lrsquoanalisi al passo

Esisteragrave nellrsquoalgoritmo una funzione eulerom che effettueragrave i calcoli di

Newton-Eulero anche per la catena cinematica che presenta come end-effector il

baricentro

57 Anello di Controllo

Un ulteriore controllo introdotto egrave il calcolo della cinematica inversa e il

controllo sulla soluzione trovata

A questo anello di controllo egrave stato predisposto il possibile inserimento di

un eventuale errore nel raggiungimento della posizione voluta Questo errore

potrebbe essere rilevato in futuro da sensori di posizione o da un sistema di

stereovisione dellrsquoambiente in grado di percepire la reale posizione di ogni zampa

Per ora viene passato come parametro di input settato da utente

Sviluppo dellrsquoalgoritmo di camminata 103

Figura 61 Anello di controllo cinematica inversa

Diversi approcci sono stati implementati per il calcolo della cinematica

inversa la funzione dagrave la possibilitagrave allrsquoutente settare le equazioni decisionali

quali scegliere il metodo da utilizzare settare lrsquoapprossimazione desiderata nel

caso di metodo del gradiente e la configurazione a gomito alto o basso nel caso di

metodo geometrico

Presentiamo di seguito lo schema a blocchi di sviluppo dellrsquoalgoritmo che

ci permetteragrave una spiegazione piugrave immediata del funzionamento

Sviluppo dellrsquoalgoritmo di camminata 104

Applico formule geometriche Metodo gradiente

Scelta algoritmo

inizio

Metodo inseguimento veloce del gradiente

Calcolo cinematica diretta

Setto parametri decisionali

Calcolo errore

fine

Figura 62 Schema a blocchi calcolo cinematico

Proponiamo successivamente lo pseudo codice in merito la funzione di

inseguimento veloce del gradiente al fine di rendere piugrave chiare e dettagliate le sue

caratteristiche di esecuzione

1 Anticipatamente viene settata la approssimazione desiderata per il

raggiungimento del target e lrsquoincremento dellrsquoangolo

2 Pongo nullo lrsquoincremento iniziale

Sviluppo dellrsquoalgoritmo di camminata 105

3 Pongo nulli i rispettivi valori di gradiente_old dei singoli giunti

4 Calcolo la distanza dal target con le posizioni base

5 Fintantochegrave la distanza non egrave minore dellrsquoapprossimazione introdotta

bull Calcolo i valori dei nuovi gradienti incrementando i singoli angoli

del valore incremento prefissato

bull Confronto il valore del segno del nuovo gradiente del primo giunto

con il corrispettivo gradiente_old

- se segno discorde diminuisco il valore dellrsquoangolo in

funzione el valore del gradiente nuovo e old al fine di

arrivare al punto di colle

- se segno concorde aumento ulteriormente lrsquoangolo del

giunto aggiungendogli un valore proporzionale alla distanza

trovata

bull viene eseguito lo stesso controllo per il secondo giunto

bull incremento la variabile num_iterazioni

bull i nuovi gradienti diventano i gradienti_old

bull Calcolo la distanza con il nuovi valori degli angoli dei due giunti e

torno al punto 5

58 Map-building e scelta del gait

Il nostro scopo egrave quello ricreare un programma che ricevendo in input i

soli valori di dimensione dellrsquoarea di gioco e posizione degli ostacoli fornisca al

robot tutti i comandi per muoversi nellrsquoambiente e arrivare allrsquoobiettivo senza piugrave

intervento esterno A tal fine questa funzione dovragrave comprendere diversi goal

intermedi che possono essere cosigrave schematizzati

Sviluppo dellrsquoalgoritmo di camminata 106

Creazione mappa

Ricerca percorso

Scelgo passi da attuare

inizio

fine

Il programma si divide in tre parti fondamentali

bull creazione della mappa tramite algoritmo di map-building

bull ricerca del percorso

bull decisione del passo da intraprendere per ogni istante e applicazione

del gait oppotuno

581 Costruzione della mappa ed espansione degli ostacoli

Abbiamo elaborato la costruzione di una mappa creando una matrice

bidimensionale in cui ogni cella rappresenta le possibili posizioni del baricentro

del robot nellrsquoambiente Utilizzando valori noti in input per le dimensioni e i

posizionamenti degli oggetti egrave il programma stesso a fornirci la matrice

Un ostacolo viene identificato come un cubetto in cui le coordinate inserite sono

Sviluppo dellrsquoalgoritmo di camminata 107

Xa1Ya1

a

Xa2Ya2

Per ogni cella sono presenti due valori il primo rappresenta la distanza

dallrsquoobiettivo il secondo la distanza dallrsquoostacolo piugrave vicino (se ne esiste piugrave di

uno) Questi valori sono determinati tramite onde di propagazione che partono

dallrsquooggetto in esame e si diffondono in tutte le direzioni allrsquointerno della mappa

Lrsquoonda egrave da considerarsi come una scansione prima orizzontale e poi verticale

dellrsquoambiente che incrementa ad ogni riga i controlli sulla distanza sono

introdotti in seconda analisi il controllo sulla distanza dellrsquoostacolo piugrave imminente

qualora ce ne siano presenti piugrave di uno e il controllo sullrsquoespansione drsquoonda

limitata qualora lrsquoostacolo o la destinazione si trovino ai borbi della mappa

Gli ostacoli presentano una ulteriore onda di espansione orizzontale in

quanto egrave solo lungo questa direzione che possono avvenire collisioni tra il nostro

robot in movimento e gli ostacoli fissi Accorgimenti successivi ci hanno

permesso la costruzione di un ulteriore passo correttivo che puograve essere utilizzato

in un secondo momento per un avvicinamento forzato

Figura 63 Mappa creata vista dallrsquoalto

Sviluppo dellrsquoalgoritmo di camminata 108

Figura 64 Visione della mappa semilaterale si possono vedere i corpi degli ostacoli

Matrice generata

10 3 9 2 109 0 110 0 110 0 109 0 4 2 9 2 8 2 109 0 110 0 110 0 109 0 3 1 8 1 7 1 6 2 5 1 109 0 110 0 110 0

110 0 110 0 109 0 4 2 109 0 110 0 110 0 110 0 110 0 109 0 3 2 2 2 1 1 0 1

Ogni elemento della matrice rappresenta un vertice di intersezione delle

coordinate (xy) della mappa Il primo valore equivalente a 110 rappresenta

lrsquoostacolo il valore 109 la sua espansione in altro caso esso egrave la distanza dalla

destinazione Il secondo valore rappresenta la distanza dallrsquoostacolo piugrave

imminente

582 Algoritmo di ricerca del percorso minimo

Avendo a disposizione una matrice che mi identifica tutto lrsquoambiente che

circonda il robot abbiamo deciso di modificare lrsquoAlgoritmo di Dijkstra

precedentemente descritto al fine di trovare un percorso minimo con bassa

computazionalitagrave di calcolo

Sviluppo dellrsquoalgoritmo di camminata 109

Nella prima fase abbiamo applicato lrsquoalgoritmo di ricerca operativa non su

un grafo ma su una matrice considerando come nodi successori le quatto celle

confinanti (su giugrave dx sx) rispetto a quella in cui ci troviamo Il costo di

movimento o meglio il miglior successore in cui spostarsi per riterare lrsquoanalisi

viene scelto tramite lrsquoimplementazione di un compromesso adeguato tra

minimizzazione della distanza dal target e massimizzazione della distanza dagli

ostacoli

Questa funzione restituisce in output se egrave stato trovato un percorso in caso

affermativo di esso visualizza le coordinate dei punti da attraversare e le

indicazioni in rappresentazione direzionale (destra sinistra avanti indietro)

Direzioni

start Destra Avanti Avanti Destra Destra Avanti Avanti Destra Destra Destra

Coordinate

1 1 1 2 2 2 3 2 3 3 3 4 4 4 5 4 5 5 5 6

5 7

Tabella 2 risultati ricerca percorso

Riportimo il flow-chart che descrive lrsquoalgoritmo di ricerca sopra citato

Sviluppo dellrsquoalgoritmo di camminata 110

pos =partenza migliore=non_valido

Considero 4 successori

Passo ad altro

successore

pos=visitato

pos=v

Stampo percorso in coordinate

Trasformo percorso in direzioni

inizio

Pos = destinazione

Egraversquo pos sul bordo

Considero 32 successori

Insieme successori vuoto

Considero successore v

distanza dest_vltdistanza dest

migliore

distanza ost_vltdistaza ost

migliore

Percorso non trovato

salvo pos in percorso

fine

si no

si

no

si

si

no

no

no

si

Figura 65Schema a blocchi ricerca percorso

Sviluppo dellrsquoalgoritmo di camminata 111

583 Realizzazione del gait

Una volta generato il percorso da seguire segue la parte piugrave dispendiosa in

tempo in quando legata alla grafica

Sono stati implementati per la realizzazione del percorso i seguenti passi

bull in avanti

bull in dietro

bull a destra

bull a sinistra

bull correttivo avanti

bull correttivo indietro

bull correttivi laterali non sono stati introdotti a causa del giagrave minimo

spostamento laterale per ogni passo in quella direzione (2 cm)

La terza parte di algoritmo considera il percorso generato e decide il passo

da mettere in pratica uno spostamento sullrsquoasse verticale del piano implica una

scelta ulteriore per la calibrazione del numero di passi lunghi e dei passi correttivi

Una ampia falcata permette il movimento del robot di 7 cm mentre il passo

correttivo di 2 Il programma in base al percorso ottimizza le tempistiche

effettuando il maggior numero di passi ampi e riassestando la posizione con il

minor numero possibile di passi correttivi dispendiosi in tempo

Saragrave possibile ammirare tutta la camminata del nostro robot in una

immagine che plotta tutti i movimenti del robot

Sviluppo dellrsquoalgoritmo di camminata 112

Figura 66 Robot in movimento nellrsquoambiente

Al raggiungimento dellrsquoobiettivo destinazione sulla mappa appariragrave oltre il

percorso ideale il percorso effettivamente compiuto dal robot dandoci in uscita

anche le approssimazioni al valore reale di destinazione

Figura 67 Immagini del percorso trovatoin verde percorso ideale in blu percorso

effettivo

Tali valori rappresentano la distanza ancora da percorrere e la scelta

dellrsquoulteriore passo da intraprendere per compierla

Sviluppo dellrsquoalgoritmo di camminata 113

SONO ARRIVATO A DISTANZA DALL OBIETTIVO DIX = 35527e-015 Y = -03200 testo = devo fare ancora ans = 16000 testo = passi correttivi indietro

Dopo averci fornito queste informazioni il controllore comanderagrave e faragrave

eseguire al robot i passi correttivi appropriati che gli mancano per il

raggiungimento della destinazione

Schema a blocchi dellrsquoultima parte dellrsquoalgoritmo

Sviluppo dellrsquoalgoritmo di camminata 114

Alzata nello start

Analisi elemento i

Avanti Indietro Passo dx Passo sx

Calcolo avanzamento complessivo

Calcolo num passi lunghi e

corretivi

Esegue passi

Memorizzo pos

Stampa percorso vero e ideale

Calcola distanza dal target

Effettua passi correttivi ancora

possibili

inizio

Esistono elementi in percorso

Calcolo indietreggiamento

complessivo

Esegue passo

fine

no

si

1 -1 2 -2

Figura 68 Schema a blocchi movimento

Capitolo 6 Sperimentazione e analisi dei risultati

Sperimentazione e analisi dei risultati 116

61 Risultati statici

La creazione di file a se stanti contenenti tutte le possibili posture del

nostro robot e la realizzazione di procedure che identificano i passi standard

possono essere in un secondo momento cablati su un chip di controllo diretto

posizionato on-board

Questo darebbe la possibilitagrave reale al robot di deambulare senza

condizionamento con un Pc remoto Il processo di creazione dei percorsi vincola

perograve il movimento in quanto non sono presenti tuttora sensori di visione

Possiamo inoltre affermare che tra gli stili di camminata da noi studiati ha

un ruolo fondamentale la camminata quasi-statica che effettivamente permette il

movimento del robot in ambiente piano la camminata quasi dinamica richiede

ulteriori fasi di analisi soprattutto in merito al miglioramento della risposta dei

motori

Sono state effettuate diverse prove per la realizzazione di movimenti

fluidi il valore riscontrato a simulatore e di 30 frame mentre nella realizzazione

pratica a causa dei tempi di risposta egrave stato raggiunto un valor di soglia frame=8

che permette la realizzazione di movimenti continui

Sperimentazione e analisi dei risultati 117

611 Passo reale effettuato

In prima analisi poniamo le foto delle fasi piugrave significative del passo quasi-

statico compiuto da ASGARD in laboratorio

- 1 - - 2 -

- 3 - - 4 -

- 5 - - 6 -

Sperimentazione e analisi dei risultati 118

- 7 - - 8 -

- 9 - - 10 -

- 11- - 12 -

Tabella 3 Foto del passo quasi ndashstatico eseguito da ASGARD

Le foto rappresentano la sequenza di esecuzione della nostra camminata

quasi-statica nelle viste dallrsquoalto si possono notare le caratteristiche delle posture

assunte dalle zampe e si puograve verificare il poligono drsquoappoggio

Sperimentazione e analisi dei risultati 119

Da porre in particolare evidenza sono gli angoli del giunto che rappresenta

la spalla calibrati al fine di non interferire nel movimento durante il moto

Nelle viste laterali sono da porre in particolare evidenza i momenti di volo

di ogni singola alzata caratterizzandone le tempistiche di movimento

Da notare le immagini 5 6 e 1011 in cui si verifica la spinta del baricentro

in avanti nel primo caso per lrsquoavanzamento a metagrave passo nel secondo caso per

riposizionare le zampe nella posizione iniziale

612 Misurazioni reali della pressione

Durante le prove di laboratorio in merito alla camminata statica del robot

sono stati effettuati rilevamenti dellrsquounico sensore di pressione posto sotto la

zampa anteriore sinistra

Figura 69 Particolare del sensore di pressione da noi costruito (sinistra) e del

posizionamento di esso sotto la zampa anteriore sinistra (destra)

Sperimentazione e analisi dei risultati 120

I dati riscontrati sono

istanti descrizione Valori di resistenza misurati(ohm) media

passi 1 2 3 4 5 ottenuta

1 4 in appoggio 321 287 298 314 306 3052 2 alzo C 233 246 239 253 232 2406 3 appoggio C 266 275 294 278 289 2804 4 alzo B 1271 1232 1244 1262 1251 1252 5 appoggio B 98 90 99 92 87 932 6 sposto busto 311 308 298 301 287 301 7 alzo D 198 209 203 195 211 2032 8 appoggio D 302 319 311 320 301 3106 9 alzo A 180 193 184 192 177 1852

10 appoggio A 268 259 262 270 281 268 11 sposto busto 108 115 127 122 123 119 12

Assestamento

308

305

311

313

299

3072

Tabella 4 Rilevamenti sensore pressione

Da questa tabella abbiamo trasformato i valori di resistenza in forza secondo i

diagrammi di caratteristica del sensore e abbiamo trovato

val resistenza pressione

Ohm

Kg

4 in appoggio 3052 031 alzo C 2406 045

appoggio C 2804 034 alzo B 1252 002

appoggio B 932 15 sposto busto 301 0306

alzo D 2032 049 appoggio D 3106 034

alzo A 1852 055 appoggio A 268 046 sposto busto 119 06 assestamento

3072

033

Tabella 5 Trasformazione in forza dei valori misurati del sensore pressione

Sperimentazione e analisi dei risultati 121

Da cui si puograve ricavare il seguente grafico

Volori di pressione rilevati sperimentalmente

002040608

1121416

0 5 10 15

istanti temporali passo (sec)

pres

sion

e (K

g)

pressione

impatto con il suolo

Alzata

Figura 70 Grafico della pressione

Da questo possiamo notare come effettivamente il sensore rileva le

variazioni di forza peso che agiscono sulla zampa

Le misure sono state effettuate dopo un periodo di assestamento iniziale

quando effettivamente tutte le zampe sono appoggiate il carico risulta essere

minore mentre aumenta alle singole alzate delle altre tre articolazioni Si puograve

inoltre notare dal grafico come dopo lrsquoalzata la zampa subisce un forte impatto

con il terreno istante 5 e non si riposiziona piugrave esattamente corretta aderenza

qusto causa un eccessivo carico solo su alcune parti esterne del piedino (dove egrave

situato il sensore) che andranno ad aggravare le misurazioni durante le successive

alzate

Purtroppo questo incorretto posizionamento egrave causato dalla poca mobilitagrave

del giunto passivo della zampa che puograve essere migliorato solo tramite interventi

alla struttura meccanica Ulteriore vantaggio si potrebbe riscontrare con

lrsquoinserimento di un controllo di velocitagrave che eviti impatti considerevoli con il

terreno

Sperimentazione e analisi dei risultati 122

613 Confronti di cinemetica inversa

Proponiamo alcuni risultati ottenuti con i tre diversi metodi di cinematica

inversa introducendo disturbo nullo

Metodo geometrico

Metodo del gradiente

Inseguimento veloce

del gradiente Approssimazione=25 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 438

Errore in gradi 0 2 2 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3

N= 85

Errore in gradi 0 2 2 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1

Approssimazione=05 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 2030

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

N= 130

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

Tabella 6 Confronto risultati ottenuti conmetodi cinematica inversa

Sperimentazione e analisi dei risultati 123

Da cui si possono ricavare i seguenti andamenti dellrsquoerrore

Errore sul secondo giunto con approssimazione di 25 gradi

01234

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Errore sul terzo giunto con approssimazione di 25 gradi

0

1

2

3

4

0 2 4 6 8

numero angoli

erro

re (g

radi

) metodogeometrico

metodo diinseguimento delgradiente

metodo diinseguimentoveloce

Errore sul secondo giunto con approssimazione di 05 gradi

0

05

1

0 2 4 6 8

nume r o a ngol i

met odo gradient e

met odo diinseguiment o delgradient e

met odo diinsegiument oveloce

Errore sul terzo gionto con approssimazione di 05 gradi

0

05

1

15

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Figura 71 Grafici che rappresentano lrsquoandamento dellrsquoerrore trovato

Sperimentazione e analisi dei risultati 124

I valori degli angoli inseriti sono quelli effettivamente lanciati come

comando ai motori

Vediamo che nonostante il primo metodo sia il migliore in quanto fornisce

ottimi risultati con una sola iterazione ha a monte una oneroso carico di analisi

Il metodo di inseguimento veloce fornisce buoni risultati con una notevole

diminuzione del numero di iterazioni rispetto al metodo del gradiente semplice

essi si sono quindi dimostrati metodi di qualitagrave efficiente per il ritrovamento di

posizioni desiderate Si ricorda che questi metodi sono stati qui analizzati come

banco di prova per possibili applicazioni in robot presenti in laboratorio dotati di

catene cinematiche piugrave complesse (LARP di UScarfogliero[39])

62 Risultati dinamici

Dallrsquoanalisi dei grafici ottenuti tramite le formule di Newton-Eulero

presentati nel capitolo precedente possiamo affermare che i motori utilizzati sono

stati correttamente calibrati in merito di forze e torsioni a cui sono sottoposti

durante il passo

Variando il tempo di esecuzione dei movimenti otteniamoli seguente

grafico

Sperimentazione e analisi dei risultati 125

Figura 72 Grafico torsione con interpolazione limitata a 2 frame

Riducendo di molto il valore di interpolazione come si puograve vedere di

grafici i motori subiscono delle variazioni di carico molto forti in istanti

ravvicinati in quanto come giagrave piugrave volte affermato non esiste un controllo in

accelerazione e velocitagrave Vediamo inoltre come i valori di picco del giunto della

caviglia della zampa b trovati sono in stretta similitudine con i parametri misurati

nei rilevamenti del sensore di pressione posto sotto la zampa stessa I due grafici

simili nellrsquoandamento presentano come unica differenza la misura dellrsquoimpatto

con il suolo nel grafo della pressione viene rilevato mentre la torsione del motore

non evidenzia le forze di repulsione del suolo ma solo le forze i momenti e forza

di gravitagrave sullrsquoasse rotoidale del giunto

Sperimentazione e analisi dei risultati 126

Notiamo comunque che nonostante i picchi subiti i valori rimangono nei

limiti proposti dalla HITEC

Il cedimento strutturale riscontrato egrave stato quindi attribuito a imprecisioni

di laboratorio avvenute per inesperienza iniziale

621 Caratteristiche negative dei motori

6211 Velocitagrave

Una nota negativa nellrsquoutilizzo di questi servo attuatori va perograve apostrofata

in merito alla velocitagrave di rotazione che rimane di gran lunga inferiore a quella

dichiarata dalla casa costruttrice ( 023 sec60deg con carico 018 sec60deg a vuoto)

6212 Alimentazione

Un problema riscontrato durante le prove sul campo riguarda

lrsquoalimentazione I motori vengono alimentati direttamente dalla PIC che genera i

segnali la quale egrave a sua volta alimentata da un trasformatore in grado di fornire

circa 35A alla tensione di utilizzo di 6V Dopo aver riscontrato dei problemi

durante lrsquoutilizzo di piugrave motori in simultanea siamo andati a verificare i valori

effettivi di corrente assorbita a run-time Il valore dichiarato di 900mA (senza

carico) sulle specifiche HITEC [28] consentirebbe il movimento di pressocheacute tutti

i motori in simultanea ma con carico applicato si sono riscontrati valori di picco

di 18A Essendo improbabile che tutti i 12 motori vengano utilizzati in

contemporanea e sotto massimo sforzo non egrave necessario dover fornire

costantemente 216A ma risulta comunque chiaro che in alcuni casi la corrente

fornita non egrave sufficiente e ciograve causa malfunzionamenti alla PIC Oltre alla

necessitagrave di acquistare un trasformatore piugrave potente sarebbe opportuno separare

lrsquoalimentazione dei motori da quella della PIC o perlomeno apportare le

necessarie modifiche affincheacute la corrente fornita al processore non sia

strettamente dipendente da quella assorbita dai motori

Sperimentazione e analisi dei risultati 127

63 Caratteristiche del percorso

Solitamente la deambulazione per sistemi legged richiede al robot di essere

fornito di un considerevole numero di sensori per lrsquoanalisi dellrsquoambiente

La realizzazione di un nuovo algoritmo che facendo cooperare elementi di

cinematica e ricerca matematica permette la camminata fornisce un efficiente

mezzo di analisi

I dati a disposizione ci permettono di affermare che lrsquoalgoritmo di

creazione delle mappe e ricerca di percorsi minimi presenta ottime risposte a

differenti tipologie di ambienti proposti

Tra le principali doti di cui esso dispone ci permettiamo di sottolineare la

velocitagrave computazionele e la semplicitagrave di utilizzo

Inserendo infatti semplicemente le dimensioni dellrsquoarea drsquoazione e la

definizione delle coordinate dellrsquoostacolo esso rileva il percorso minimo che ci

conduce al target in tempistiche ridotte

La parte innovativa di tale algoritmo permette non solo di generare il

percorso ma di delegare al sistema la scelta del passo da intraprendere nel singolo

istante basandosi semplicemente su coordinate geometriche e su un data base di

posizioni possibili

La fase di decisione del passo da intraprendere puograve essere considerato un

buon risultato di ricerca nella creazione della prima attivitagrave celebrale di ASGARD

Sperimentazione e analisi dei risultati 128

Figura 73 Esempi di percorsi provati a simulatore

Capitolo 7 Conclusioni e sviluppi futuri

Conclusioni e sviluppi futuri 130

71 Risultati raggiunti

Il percorso di analisi svolto ci ha permesso di realizzare un prototipo di

robot quadrupede tra i piugrave leggeri presenti nella ricerca Costriuito con materiali

tecnologicamente avanzati che gli garantiscono particolari doti di elasticitagrave e

torsione richiede anche per il movimento semplici attuatori utilizzati

abitualmente nellrsquoambito del modellismo

Queste considerevoli doti pongono ASGARD in una rilevante posizione per

la realizzazione futura di consistenti progetti di Trot gait deambulazione in

ambienti ostili e superamento di ostacoli

Nonostante il nostro robot non sia fornito come GEO (vedi cap3) di una

spina dorsale adattabile la camminata da noi implementata gli fornisce stabili

posture che gli consentono un movimento rapido nellrsquoambiente

Tale innovativa camminata permette infatti al nostro robot tempistiche di

movimento per nulla invidiabili a Patrush o a Tekken (vedi cap3)

Concludendo questo lavoro possiamo affermare di aver realizzato un

potente mezzo di analisi della camminata statica e dinamica dimostrandosi

estremamente utile nelle prime fasi di analisi e nella realizzazione pratica

successiva

Essendo il nostro robot tuttora sprovvisto di sensori ci egrave parso utile

implementare un algoritmo di ricerca del percorso minimo in ambiente con

ostacoli in posizioni note

A tal fine abbiamo pensato di far cooperare diversi settori di ricerca

rielaborando algoritmi di ricerca operativae applicandoli a mappe di ambienti

Il notevole risultato ottenuto permette ad ASGARD di riconoscere

lrsquoambiente nonostante non ottenga feedback dallo stesso Questo algoritmo

rappresenta il primo sostanziale passo per la creazione di un sistema di

apprendimento per rinforzo intelligente per il nostro robot

Conclusioni e sviluppi futuri 131

La comunicazione con i servo motori ha permesso un primo reale

interfacciamento tra macchina e robot e lo studio del movimento ha permesso al

robot di compiere i suoi primi passi

72 Progetti futuri

Attualmente il robot egrave in grado di deambulare in ambiente piano e molte

sono le applicazioni e le migliorieche potrebbero essere aggiunte al controllo del

nostro automa

721 Modifiche meccaniche

Miglioramento del giunto passivo che si trova nella caviglia la fine di

realizzare un sistema mossa-smorzatore[40] che riesce ad attuire gli urti e le

oscillazioni presenti nellrsquoimpatto durante lrsquoappoggio della zampa al terreno

A tal scopo egrave stato realizzato il primo rudimentale progetto di

reingegnerizzazione del giunto ottenendo il seguente risultato

Figura 74 Caratteristiche del progetto di zampa realizzato si possono notare le

torsioni possibili su due assi

Conclusioni e sviluppi futuri 132

In esso si puograve notare come il giunto del piedino sia diventato

completamente mobile regolato solamente dalla costante elastica delle molle che

puograve essere a sua volta regolata dalle viti presenti sulla base del piedino

Il sistema molla-smorzatore egrave in grado di immagazzinare energia durante

lrsquoimpatto con il suolo e di riutilizzarla per il riposizionamento in aderenza

perfetta

Ulteriore miglioria consigliata egrave lrsquoincremento dei sensori al fine di

permettere al robot una conoscenza piugrave vasta e piugrave autonoma dellrsquoambiente

esterno Un ritorno di valori sensoriali inoltre migliorerebbe il programma da noi

realizzato permettendo la reale acquisizione di dati esterni e non forniti da utente

Il sensore fino ad oggi presente ci permette semplicemente di capire i

carichi presenti sulla zampa ma non ci fornisce ulteriori informazioni Ponendo un

sensore su ogni zampa e migliorando la struttura portante di ogni singola

cavigliaverrebbero forniti dati utili nel valutare il corretto posizionamento della

zampa e cioegrave la corretta esecuzione di ogni passo

Al fine di un futuro miglioramento della parte sensoriale egrave stata condotta

una ricerca riguardante i migliori sensori disponibili sul mercato che meglio si

adattano alle nostre problematiche tale ricerca viene presentata in Appendice A

722 Miglioramenti Hardware

Un ulteriore miglioramento egrave richiesto nella comunicazione tra computer e

scheda di comando degli attuatori

Questa scheda non permette tuttora la programmazione della PIC presente

su di essa andrebbe rivisto il circuito presente in modo da sfruttare anche i canali

di ritorno in lettura in modo da sfruttare questi ultimi per feedback sensoriali

Questo miglioramento permetterebbe lrsquoutilizzo della scheda come interfaccia di

inputoutput del robot

Conclusioni e sviluppi futuri 133

Di primaria necessitagrave egrave la differenziazione dellrsquoalimentazione dei motori

dallrsquoalimentazione della scheda per non compromettere il corretto funzionamento

della PIC

723 Miglioramenti Software

Raggiunto lrsquoobiettivo di una buona camminata quasi-statica si puograve pensare

di integrare un controllore on-board aggiungere sistemi di trasmissione wireless e

unrsquoalimentazione autonoma per rendere il robot indipendente dalla postazione

fissa

Come si puograve notare i campi di ricerca sono molto vasti da semplici

migliorie hardware al campo di Intelligenza Artificiale per dotare il robot di

potenzialitagrave che lo rendano il piugrave possibile un emulatore dei comportamenti

naturali di un mammifero

73 Conclusioni finali

A causa della complessitagrave dellrsquoanalisi e delle difficoltagrave implementative

riscontrate alcune parti richiedono ancora un grosso intervento per arrivare a

efficienti strumenti di precisione per lrsquoattuazione dei movimenti

Sono comunque da sottolineare i grandi passi compiuti In quanto in poco

piugrave di un anno il progetto egrave stato creato e messo in pratica riuscendo ad arrivare

ad un passo cruciale per il corretto funzionamento

Il continuo progresso e il continuo impegno potranno portarci in un futuro

non troppo lontano alla creazione di amici elettronici in grado di giocare con noi

e di muoversi come farebbe un normale amico a quattro zampe

Lrsquointroduzione inoltre di sistemi di camminata dinamica intelligente in

qualsiasi ambiente porterebbe evoluzioni significative anche in ambito di bio-

ingegneria ambientale rendendo in questo modo possibile lrsquoacquisizione di dati

Conclusioni e sviluppi futuri 134

provenienti da habitat inaccessibili allrsquouomo quali crateri di vulcani profonditagrave

marine o pianeti del sistema solare permettendo cosigrave una crescita culturale

dellrsquointera umanitagrave

Bibliografia

[1] NDiolaiti ldquoSistemi di navigazione per robot mobili in ambienti sconosciutirdquo

Thesis 2001

[2] J Borenstein e L Feng ldquoMeasurement and correction of systematic odometry

errors in mobile robotsrdquo In IEE Transactions on Robotics and Automation

vol7 NO 12 pag 869-880 1996

[3] KS Chong e L Kleeman ldquoAccurate odometry and error modelling for

mobile robotrdquo In Proceedings of IEEE International Conference on Robotic

and Automation pag 2783-2788 Albuquerque New Mexico 1997

[4] U Gerecke e N Sharkey ldquoQuick and Dirty Localization for a Lost Robotrdquo

University of Sheffield 1999

[5] B Yamauchi A Shultz e W Adams ldquoMobile robot exploration and map-

building with continuous localizationrdquo In Proceedings of IEEE International

Conference on Robotic and Automation pag 3715-370 Leuven Belgium

1998

[6] H TakedaC Facchinetti JC Latombe ldquoPlanning the motions of a mobile

robot in a sensory uncertainty fieldrdquo In IEEE Transactions on Pattern

Analysis and Machine Intelligence pag 1002-1017 oct 1994

[7] JP Laumond editor ldquoRobot Motion Planning and Controlrdquo Published 1999

[8] C Sanitati ldquoAnalisi e implementazione di andature per il robot quadrupede

Sony Aibordquo Thesis 2001

[9] MH Raibert ldquoLegged robots that balancerdquo MIT Press Cambridge

[10] httpmarsroversjplnasagovgalleryspacecraft

Bibliografia 136

[11] AAbourachid ldquoA new way of analysing symmetrical and asymmetrical

gait in quadrupedsrdquoCRBiologiesvol 326pag 625-630May 2003

[12] JAVilenskyJACook ldquoDo quadrupeds require a change in trunk posture

to walk backwardrdquoJournal of Biomechanicsvol33pag 911-916March 2000

[13] Oricom technology ldquoQuadruped Locomotion- Musing about running dogs

and othe 4-legged creaturesrdquo(httpwwworicomtechcomprojectslegshtm)

[14] RKurazumeKYoneda e SHiroseFeedforward and Feedback dynamic

trot gait control for quadruped walking vehicleAutonomous Robotsvol12

pag 157-1722002

[15] H Kimura I Shimoyama e H Miura ldquoDynamics in the dynamic walk of

a quadruped robotrdquo RSJ Advanced Robotics vol4 no3 pp283-301 1990U

(httpwwwkimuraisuecacjpfacultiesColliedynamic-walk-of-quadrupedhtml)

[16] M Raibert H Brown MA Chepponis EF Hastings S Murthy e FC

Wimberly ldquoDynamically Stable Legged Locomotion Second Report to

OARPArdquo Robotics Institute Carnegie Mellon University January 1983

(httpwwwaimiteduprojectsleglabrobotsquadrupedquadrupedhtml)

[17] MH Raibert M Chepponis and H Brown ldquoRunning on Four Legs As

Though They Were Onerdquo IEEE Journal of Robotics and Automation Vol

RA-2 No 2 June 1982 pp 70-82

[18] STalebiIPoulakakisEPapadopoulos e MBuehler ldquoQuadruped robot

running with a bounding gaitrdquoCenter for Intelligent MachinesMcGill

UniversityMontreal

[19] MA Lewis e LS Simo ldquoNeurocore Evolution Development and

Roboticsrdquo Sumitted to IROS 96 Osaka(httpuirvliaiuiucedutlewispicsgeoIIhtml)

[20] Y Fukuoka H Kimura e AH Cohen ldquoAdaptive Dynamic Walking of a

Quadruped Robot on Irregular Terrain based on Biological Conceptsrdquo Int

Journal of Robotics Research Vol22 No3-4 pp187-202 2003

[21] MA Lewis ldquoGait Adaptation in a Quadruped Robotrdquo Autonomous

Robot 2002 in PressIguana RoboticsInc

[22] httpwwwrobocuporg

Bibliografia 137

[23] httpwwwaibo-europecomdownloadsAIBO_Storypdf

[24] LSteel e FKaplan ldquoAibos first wordsThe social learning of language and

meaningrdquo Sony Computer Science laboratory Vub Artificial Intelligent

laboratory

[25] httpwwwopencaeczhwhw_sony-robot_aibohtml

[26] httpprojectspowerhousemuseumcomhscaiboteardownhtm

[27] M Piralli ldquoProgetto quadrupede Politecnico di Milanordquo 2004

[28] HITEC httpwwwhitecrcdcom file HS475HbpdfServomanualpdf

[29] Proprieta chimiche ldquopolicarbonatodocrdquo da

httpwwwedilportalecomedilcatalogo0EdilCatalogo_SchedaProdottoaspI

DProdotto=1897

[30] DCrespi e F Gandola ldquoScheda di interfacciamento per servomotorirdquo2004

[31] L Sciavicco e B Siciliano ldquoRobotica industriale ndash Modellistica e

controllo di Manipolatorirdquo EdMc-Graw-Hill seconda edizione 2000

[32] G Gini e V Caglioti ldquoRoboticardquo Ed Zanichelli 2003

[33] MFolgheraiter ldquoEsempi di cinematica direttainversardquoPolitecnico di

Milano Robotica 2004

[34] HElias ldquoInverse Kinematics - Improved Methodsrdquo2004

httpfreespacevirginnethugoeliasmodelsm_ik2htm

[35] JMinguez e LMontanoNearness Diagram (ND) navigationcollision

avoidance in troublesome scenariosIEEE Transaction on Robotics and

Automationvol 20NO 1 February 2004

[36] AArleoJRMillan e DFloreanoEfficient learning of variable-resolution

cognitive maps for autonomous indoor navigationIEEE Transaction on

Robotics and Automationvol 15NO 6 December 1999ruary 2004

[37] S Vigno ldquoAlgoritmo di Dijkstrardquo 2001

[38] EWDijkstra ldquoA note on two problem in connexion with graphsrdquo

Numeriche Mathematik 1269-271 1959

[39] U Scarfogliero ldquoProgettazione e sviluppo di un robot bipede a dodici

gradi di libertagrave con controllo elastico-reattivordquo Thesis 2004

Bibliografia 138

[40] PRoccoControlloimpedenzaPolitecnico di MilanoRobotica Industriale

2004

Appendice A

Appendice A 140

i Sensori nei robot a zampe disponibili sul mercato

Ersquo stata compiuta una accurata ricerca sui componenti che potrebbero

essere montati su ASGARD per migliorarne le abilitagrave e le reazioni con lrsquoambiente

esterno e su tecniche di utilizzo di semplici sensori per fornire feedback rilevanti

Tra i sensori presenti in commercio egrave stata effettuata una scrematura in

merito a efficienza peso ingombro e prezzo in quanto si ricorda la precaria

stabilitagrave del robot e il fattore sovvenzione scolastica

Forniremo dei principali sensori trovati anche una rapida descrizione del

funzionamento dello stesso per meglio comprendere le migliorie e le potenzialitagrave

che esso potragrave donare al nostro progetto

ii Dead Reckoning Stima della posizione

Dead reckoning deriva da ldquodeduced reckoningrdquo e consiste nellrsquoutilizzare

una procedura matematica per determinare la posizione istantanea di un robot a

partire dalla conoscenza dalle posizioni e velocitagrave precedenti lungo un certo

periodo di tempo Questo sistema ha ovviamente lo svantaggio di accumulare

errori della stima e per questo periodicamente la misura deve essere corretta con i

valori reali o con quelli forniti da qualche altro strumento Spesso la stima della

posizione viene chiamata odometria39[41]

Per fornire la posizione corrente possono essere utilizzate le seguenti

tipologie di sensori

39 Odometry

Appendice A 141

ii1 Encoder Ottici

Gli encoder ottici sono sensori che vengono utilizzati per effettuare misure

di rotazione Possono essere utilizzati sia per robot a ruote per misurarne la

velocitagrave di avanzamento sia per un robot con gambe per misurare lrsquoangolo di

rotazione degli arti artificiali

Si sono sviluppati due diversi tipi di encoder ottici encoder incrementali e

encoder assoluti

Gli encoder ottici incrementali servono principalmente per stabilire la

velocitagrave di rotazione mentre quelli assoluti forniscono istantaneamente lrsquoangolo

di rotazione

ii2 Encoder ottici incrementali

Gli encoder ottici incrementali sono formati da un disco routante solidale

con lrsquoasse di rotazione del sensore da un led e da due sensori ottici (tipicamente

due fotodiodi) Il disco egrave suddiviso in settori trasparenti e settori opachi Il numero

dei settori in genere egrave una potenza di 2 cioegrave 64128256 etc Il led emette una luce

sul lato del disco mentre i due fotodiodi la captano sul lato opposto Grazie alle

regioni opache si ha la possibilitagrave di vedere degli impulsi sul fotodiodo che

permettono di stabilire ad esempio la velocitagrave di rotazione ma non bastano ad

avere una indicazione sul verso della rotazione stessa Per sapere se la rotazione egrave

oraria o antioraria si egrave utilizzato un secondo fotodiodo collegato come in figura

Figura 75 Struttura encoder ottico

Appendice A 142

Come si puograve notare i due fotodiodi avranno unrsquouscita molto simile ma

sfasata causata dalle regioni opache del disco questo sfasamento ci permetteragrave di

capire il verso di rotazione

La velocitagrave di rotazione risulta essere proporzionale in modo inverso alla

larghezza degli impulsi in uscita

Questo tipo di encoder egrave molto economico tanto da essere utilizzato nelle

seconda metagrave degli anni novanta nei mouse da PC

Encoder ottico presente in commercio

ii21 EL30 E-H-I Eltra srl

Serie encoder miniaturizzati Oslash30 per applicazioni ove sia richiesto il

minimo ingombro possibile pur mantendo ottime prestazioni[42]

- Risoluzioni fino a 1000 impgiro con zero

- Varie configurazioni elettroniche disponibili con

alimentazioni fino a 24 Vdc

- Frequenza di esercizio fino a 100 Khz - Uscita

cavo eventuale connettore applicato alla fine del

cavo -

- Velocitagrave di rotazione fino a 3000 rpm - Grado di

protezione fino a IP54tensione di alimentazione 5 V

e peso di 50 g

Figura 76 Encode incrementale

EL 30 E-H-I

ii3 Encoder ottici Assoluti

Gli encoder ottici assoluti a differenza di quelli incrementali forniscono in

uscita direttamente una configurazione di bit che indicano la posizione angolare

Il dispositivo egrave composto di un disco suddiviso sempre in settori ma con

piugrave tracce una sorgente di luce e un numero di sensori di luce pari al numero di

tracce

Appendice A 143

Ad ogni traccia corrisponde un bit e ad ogni settore corrisponde un livello

Il numero di tracce e setori egrave scelto in modo da utilizzare tutte le combinazioni

possibili e quindi i livelli saranno traccenum2

Esistono perograve diversi modi per codificare ogni livello Il metodo piugrave

semplice egrave partire da 0 e incrementare di 1 il numero e utilizzare la normale

codifica binaria

Il sistema risulta essere rischioso quando due livelli consecutivi nella

codifica hanno piugrave di un bit diverso per questo motivo sono state introdotte

diverse codifiche come il codice Gray che riescono ad evitare cosigrave il problema

prima citato

Figura 77 Essempi di disco Figura 78 Struttura di rilevamento

Presenti sul mercato

ii31 Sensori ottici CORRSYS-DATRON

Tipologia a 2 assi (trasversalelongitudinale) per la misura accurata di

velocitagrave distanza percorsa angolo di imbardata[43]

S-CE con integrato giroscopio ottico Come versione S-CE ma con

incorporato un giroscopio a fibra ottica range 200degsec linearitagrave 02 1000 Hz

banda passante per avere maggiori info sul comportamento dinamico del veicolo

SL-R Ultralight Versione ultralight Racing del modello S-CE

SL 200 Sensore ottico biassiale per la misura senza scivolo di dinamiche

trasversali su larghe gamme di funzionamento Il sensore SL-200 egrave caratterizzato

da dimensioni ridottissime (ultra piatto) e per la possibilitagrave di installazione su

piccoli veicoli

Appendice A 144

La serie di encoder assoluti multigiro paralleli EAM[42] sono stati studiati

precisioni anche su esteso sviluppo lineare

sono disponibili con risoluzioni fino a 13 bit e quindi 8192 PosizioniGiro sul giro

e fino

ii32 EAM Parallelo-SSI Eltra srl

per applicazioni che richiedono alte

a risoluzioni di 12 bit 4096 Posizionigiro per i giri Le configurazioni di

uscita sono sia a codice gray che binario e le elettroniche di uscita coprono tutti i

campi di applicazione essendo disponibili in formato NPN NPN OPEN

COLLECTORPNP e PUSH PULL

Figura 79 Encoder assoluto EAM Parallelo ndashSSI

ii4 S

Sensori di grande utilitagrave per la localizzazione di oggetti presenti

un robot sono sensori che sfruttano lrsquoeffetto Doppler

Largamente utilizzati in ambito marino e aeronautico essi misurano la velocitagrave

del me

ensori Dopler

nellrsquoambiente di azione di

zzo in riferimento alla posizione del suolo Lrsquoeffetto doppler si basa sul

principio di funzionamento dello shift di frequenza unrsquoonda che viene ricevuta o

riflessa da una sorgente che si muove rispetto al mezzo In ambito terrestre le

onde spedite e ricevute sono microonde sonore

Appendice A 145

In relazione alla figura riusciamo ricavare le seguenti regole di

funzionamento

αα cos2cos O

DDA F

cFVV ==

Dove

AV = velocitagrave del terreno

DV = misura della velocitagrave tramite il sensore

α = angolo di declinazione

c = velocitagrave della luce

= scostamento in frequenza per effetto Doppler DF

OF = Frequenza emessa

La difficoltagrave di utilizzo di questo sensore diventa consistente nellrsquoutilizzo

su robot mobili in terreni accidentali in quanto gli spostamenti verticali

influiscono sulla misura di e sulla stima di DV AV

Appendice A 146

ii41 Robot Italy SRF04

Figura 80 Sensore SRF04

LSRF04 [44] e un sensore ad

ultrasuoni che unisce delle ottime

prestazioni ad un costo veramente

conveniente utilizza una tecnologia a

ultrasuoni molto semplificata

Questo sensore e dotato di un

microcontrollore che assolve tutte le

funzioni di calcolo ed elaborazione e

sufficiente inviare un impulso e leggere

leco di ritorno per stabilire con facilita

la distanza dellostacolo o delloggetto

che si trova davanti

iii Heading Sensor

Tramite lrsquoutilizzo di questi sensori si riesce in parte a compensare parte le

carenze di odometria Attraverso la stima della posizione ogni piccolo errore si

sommeragrave al precedente nella stima della posizione provocando uno scostamento

via via crescente tra la posizione reale e quella stimata Ersquo di grande aiuto

individuare immediatamente e correggere alcuni di questi errori

iii1 Giroscopio meccanico

Il giroscopio meccanico basato sulla ldquoinerziona di un rotorerdquo egrave conosciuto

giagrave dai primi del 1800 Il primo giroscopio fu costruito in germania 1810 da GC

Bohnenberger Nel 1852 il celebre francese L Foucault mostrograve che il giroscopio egrave

Appendice A 147

in grado di percepire la rotazione terrestre Essa puograve essere scomposta in due

componenti lungo un immaginario asse verticale e lungo un asse tangente alla

superficie Al polo la componente verticale saragrave di 15degora e spostandosi verso

lrsquoequatore diminuiragrave fino ad annullarsi Come per gli encoder ottici anche per i

giroscopi esistono due metodologie per fornire mediante una tensione o una

frequenza lo spostamento istantaneo o lrsquoangolo assoluto di rotazione

Figura 81 Giroscopio meccanico

Vediamo come funziona un giroscopio meccanico il rotore pilotato

elettricamente egrave sospeso ai propri assi da una coppia di cuscinetti con attrito

bassissimo I cuscinetti a loro volta sono montati su un anello ruotante chiamato

anello di sospensione interna (inner gimbal ring) Questo anello gira a sua volta

allrsquointerno di un altro anello (outer gimbal ring) La rotazione dellrsquoanello interno

definisce lrsquoasse x del giroscopio che egrave perpendicolare con lrsquoasse di rotazione del

rotore lrsquoanello esterno definisce lrsquoasse verticale del giroscopio In questa struttura

egrave da notare come lrsquoasse orizzontale saragrave allineato con il meridiano in questo modo

si potragrave calcolare la rotazione orizzontale e verticale in funzione a quella terrestre

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice

FT445533

Nuovo regolatore di giri con la piugrave moderna tecnica microprocessore con

Display LC ad 8 posti Il regolatore di giri GV ndash1 [45] mantiene la testa del rotore

Appendice A 148

in sistema di giri costante Cosigrave diventa possibile un movimento piugrave preciso e

sensibile

Al contrario di altri regolatori il GV-1 controlla anche il numero di giri del

motore Una curva a 3 punti regolabile permette la prescrizione del numero dei

giri tramite un commutatore a tre scatti oppure un canale proporzionale Nel

display viene indicato a scelta il numero di giri del motore o del rotore dove viene

memorizzato il numero di giri massimale e richiamabile in qualsiasi momento

Questo modello risulta compatibile con i servo da noi utilizzati

Programmi

bull Indicazione del numero di giri (rotore oppure

motore)

bull Memoria del numero di giri massimale

bull Messa a punto del rapporto di riduzione

bull Regolazione del punto di attivazione e

disattivazione

bull Impostazione del campo di regolazione del

numero di giri

bull Impostazione del numero di giri massimale

bull Automatica disattivazione a partire

dallacuteimpostazione del numero di giri

bull Messa a punto di una curva di regolazione a tre

punti

bull Messa a punto 3D

bull Curva di messa a punto miscela a 9 punti

bull Test magnetico con indicazione del campo

intensitagrave

bull Misurazione della tensione di batterie

bull Allarme di bassa tensione

bull Messa a punto del servo di gas ATV

Caratteristiche Tecniche

Dimensioni Regolatore 56x305x16 mm

Dimensioni Sensore oslash 10 x 16 (27) mm

Peso Regolatore 34 g

Peso Sensore 4 g

Alimentazione 38 ndash 6 V

Campo di regolazione da 1000 a 21000

girimin

Figura 82 Futaba regolatore di giri

GIVERNOR GV-1

Appendice A 149

iii12 Futaba Giroscopio FP GY 240 AVCS

Grazie allrsquoutilizzo congiunto del nuovo sensore SMM40 e della nuova

tecnica di interruttore altamente integrata SMD41 la Futaba egrave riuscita a costruire

un giroscopio di soli 25g con dimensioni decisamente contenute 27 x 27 x 20

mm

Nonostante questa minima dimensione il giroscopio egrave equipaggiato sia

con il modulo normale che quello AVCS (Heading Hold)[46]

Oltre ai vantaggi rappresentati dalle dimensioni e dal peso questo sensore

non presenta alcuna deriva dovuta alla temperatura ed egrave ampiamente insensibile

alle vibrazioni ed ai colpi

Grazie ad una elaborazione puramente digitale del segnale questo

giroscopio reagisce molto rapidamente

Caratteristiche tecniche Dimensioni

27x27x20 mm PesoWeight

25 g Alimentazione

3-6 V Temperatura d`esercizio

-10degC +50degC Figura 83 Giroscopio FP GY 240 AVCS

iii2 Giro-bussola

Questo dispositivo integra le funzionalitagrave del giroscopio e della bussola per

individuare il Nord Lrsquoindividuazione del nord egrave importante percheacute lrsquoasse di

rotazione del rotore egrave orientato lungo un meridiano lrsquoasse orizzontale del

giroscopio non risente della rotazione terrestre La direzione e lrsquointensitagrave della

40Silicon Micro Machine misure laser posizioni 41 Standar ISO9000

Appendice A 150

misura dipende dallo scostamento tra lrsquoasse del rotore e la direzione dellrsquoasse

terrestre

iii3 Giroscopio-Girobussola a fibre ottiche

Il principio su cui si basa il funzionamento dei giroscopi ottici fu scoperto

dal fisico francese Sagnac nel 1913 ed ha trovato inizialmente una sua

applicazione nella costruzione di interferometri e successivamente nei giroscopi

laser ad anello chiuso (RLG Ring Laser Gyro) Tale principio consiste nello

sdoppiare un unico raggio luminoso in due diversi raggi che viaggiano su un

medesimo percorso ottico ad anello chiuso ma in direzioni opposte un raggio

ruota in senso orario e lrsquoaltro in senso antiorario

Figura 84 Schema di principio di un giroscopio laser ad anello

Nei giroscopi RLG[47] i raggi rimbalzano fra vari specchi come mostrato

in Figura 83 nei giroscopi FOG (a fibre ottiche) i raggi scorrono dentro un fascio

di fibre ottiche lungo anche 5 Km ed avvolte in spire del diametro di alcuni

centimetri

Appendice A 151

Quando un raggio si propaga la sua fase cambia continuamente con la

distanza L percorsa e precisamente di 2π radianti per ogni tratto pari alla

lunghezza drsquoonda λ si ha pertanto

λπα L2

=

con λ = c f dove f egrave la frequenza del raggio luminoso e c egrave la velocitagrave

della luce

Nel caso in cui il giroscopio sia fisso rispetto ad un sistema inerziale i due

raggi percorrono lo stesso cammino anche se in direzioni opposte arrivando nel

ricevitore con la stessa fase Diversa egrave la situazione in cui lrsquointero sistema ruota

attorno ad un asse passante per O (asse sensibile del giroscopio) e con velocitagrave

angolare Ω in tal caso il percorso del raggio concorde con il verso di rotazione

tende ad allungarsi mentre quello dellrsquoaltro raggio tende ad accorciarsi per cui la

differenza di fase Φ dei segnali che arrivano nel ricevitore non egrave piugrave nulla ma

assume la seguente espressione

Ω=∆=Φλ

παcLD2

Dove

L = lunghezza del percorso ottico o delle fibre ottiche nei FOG

D = diametro del percorso o della bobina nei FOG

Ω = velocitagrave angolare del giroscopio attorno al suo asse sensibile

Il fattore davanti alla velocitagrave angolare Ω egrave chiamato fattore di scala ed egrave

un indicatore della sensibilitagrave dello strumento piugrave egrave alto tale fattore piugrave lo

strumento egrave in grado di misurare velocitagrave angolari molto basse come ad esempio

nel caso di quella terrestre Come si vede il fattore dipende dai dati geometrici del

percorso ottico e precisamente nel caso dei FOG dalla lunghezza delle fibre

Appendice A 152

ottiche e dal diametro delle spire Analizzando la precedente espressione si

comprende come a paritagrave di volume i giroscopi a fibre ottiche (FOG) siano molto

piugrave sensibili dei giroscopi laser (RLG)

Figura 85 Schema tipico di un giroscopio a fibre ottiche

iii31 La funzione giroscopica

Il FOG non egrave in grado da solo di indicare la direzione del nord come nei

normali giroscopi di tipo meccanico con sospensione cardanica esso egrave soltanto in

grado di misurare la componente della velocitagrave angolare terrestre lungo il suo asse

di sensibilitagrave

Per ottenere la funzione orientamento desiderata si montano tre giroscopi

disposti lungo una terna di assi cartesiani X Y e Z che puograve coincidere con i tre

assi del robot per definire il piano orizzontale si impiegano inoltre due sensori di

livello La tecnologia utilizzata egrave nota come strapdown ossia con i giroscopi

montati rigidamente su un piano fisso costantemente orientato e parallelo rispetto

ad un piano di riferimento come nella navigazione inerziale di tipo tradizionale

Nel caso di oggetto fermo lrsquounica velocitagrave angolare a cui esso risulta essere

soggetto egrave quella terrestre per cui i tre giroscopi misurerebbero le seguenti

componenti

Appendice A 153

yTx CosPCosϕρρ =

yTy SinPCosϕρρ minus=

ϕρρ Sinz T=

dove egrave facile calcolare lrsquoangolo di prova nel caso siano note la velocitagrave

ρ

yP

Τ e la latitudine ϕ

Nel caso di moto con velocitagrave VN si ha una velocitagrave angolare

supplementare pari a VNRT diretta lungo -y (RT egrave il raggio della Terra) A questa

velocitagrave si sommano inoltre altre velocitagrave angolari continuamente variabili

dovute ai moti attorno ai suoi tre assi e precisamente i moti di rollio di

beccheggio e di imbardata

yyTx CosPCos ρϕρρ +=

oT

NyTy R

VSinPCos ρϕρρ ++minus=

aT Sinz ρϕρρ +=

In realtagrave il problema viene risolto definendo inizialmente alla partenza un

sistema cartesiano di riferimento con gli assi X0 e Y0 situati nel piano orizzontale

e lrsquoasse Z0 che coincide con la verticale In tale situazione i segnali provenienti

dai sensori di livello devono essere nulli

Durante la camminata la continua misura delle tre velocitagrave angolari e

dellrsquoassetto del robot mediante i sensori di livello consentono di definire lrsquoesatto

orientamento della terna cartesiana T (X Y e Z) rispetto alla terna di riferimento

iniziale T0 (X0 Y0 e Z0) Un opportuno calcolatore provvede a convertire gli

Appendice A 154

angoli di sfasamento dovuti allrsquoeffetto Sagnac nelle corrispondenti velocitagrave

angolari integrando le velocitagrave si ottengono gli angoli

dta iii int+=+ ρα1

da cui egrave poi possibile ricavare gli angoli di rollio di beccheggio e di

imbardata Ogni ciclo di calcolo deve avere una durata molto breve inferiore

normalmente al tempo impiegato dai segnali luminosi a percorrere la bobina di

fibre ottiche (∆t = Lc = 3 nsec per L = 1 m)

iii4 Giroscopio piezoelettrico

Utilizzano la forza di Coriolis per misurare la velocitagrave di rotazione

montando tre trasduttori piezoelettrici su un prima triangolare Se uno dei sensori

egrave eccitato alla sua frequenza di risonanza la vibrazione prodotta verragrave percepita in

eguale misura dagli altri due sensori Quando il prisma viene ruotato lungo il suo

asse longitudinale la forza di Coriolis risultante causeragrave una piccola differenza

nellrsquointensitagrave di vibrazione percepita dai due trasduttori la variazione di tensione

risultante egrave direttamente e linearmente proporzionale alla velocitagrave di rotazione

Appendice A 155

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03

Giroscopio miniaturizzato[44] 26x27x11mm per 7grammi di peso Puo

essere utilizzato per bilanciare o per compensare spostamenti indesiderati di

walkers e rover Utile anche per rilevare spostamenti

Figura 86 Modello GWS PG-03 Robot Italy

iii42 Giroscopio Piezoelettrico Enc-03ja

Ersquo componente elettronico di solo 21mm x 8mm[48] Ersquo in grado di

rilevare i cambiamenti nella rotazione pur essendo ultra-piccolo ultra-leggero

con una ultra rapida-risposta e a basso costo Usa il fenomeno della forza di

Coriolis per rilevare i cambiamenti nella velocitagrave angolare di rotazione

Limitazione le girobussole hanno una lettura massima di 300 gradi al secondo e

richiederanno la calibratura

Figura 87 Giroscopio Enc-03ja

Appendice A 156

iv Sensori geomagnetici

Nella stima della posizione inevitabilmente esistono degli errori e questi

vengono misurati durante il tempo e quindi egrave molto importante poter disporre di

una misura assoluta e poter compensare o correggere appunto questi errori

Il piugrave comune sensore di questo tipo egrave la bussola magnetica La

terminologia usualmente utilizzata per misurare un campo magnetico egrave la densitagrave

di flusso magnetico B misurata in Gauss(G) Altre unitagrave di misura sono la Tesla

(T) e gamma (γ ) dove 1 Tesla = Gauss = Gamma Lrsquointensitagrave media del

campo magnetico terrestre egrave 05 G e puograve essere rappresentato come un bipolo che

fluttua sia nel tempo che nello spazio situato a 440 chilometri dal centro e

inclinato di 11deg dallrsquoasse di rotazione terrestre Questa differenza tra il polo

magnetico e il polo terrestre egrave conosciuta come declinazione e varia in funzione

del tempo e della posizione geografica

410 910

I dispositivi che misurano i campi magnetici sono detti magnetometri Per

applicazioni su robot mobili i magnetometri piugrave utilizzati si dividono nelle

seguenti famiglie

bull Bussola magnetica meccanica

bull Bussola a effetto Hall

bull Bussola a magnetoreversiva

Prima di analizzare da vicino ogni singola famiglia va precisato un

problema molto importante il campo magnetico terrestre egrave spesso distorto nelle

vicinanze di strutture metalliche questo rende difficile lrsquoimpiego di tali sensori

allrsquointerno di edifici Tuttavia questo problema egrave possibile aggirarlo utilizzando

con essi ulteriori sensori

Appendice A 157

iv1 Bussola magnetica meccanica

La prima traccia nellrsquouso della bussola risale al 2634 AC Dal XIII secolo

utilizzata in tutto il mondo in campo marittimo W Gilber [1600] fu il primo ad

esporre teorie riguardanti campi magnetici presenti sulla superficie terrestre

Le prime bussole marine consistevano in aghi magnetizzati che

fluttuavano su pezzetti di sughero immersi in acqua Questo dispositivo egrave stato

raffinato fino ad arrivare oggi giorno ad essere composto da un paio di magneti

attaccati ad un disco graduato fluttuante in una composizione di acqua alcol e

glicerina

Lrsquoerrore tra nord magnetico e nord geografico egrave conosciuto come

deviazione della bussola

decdevit CFCFHH plusmnplusmn=

Dove

tH = Direzione giusta

iH = Direzione misurata

devCF = Fattore di correzione per la deviazione della bussola

decCF = Fattore di correzione per la declinazione magnetica

Unrsquoaltra fonte potenziale di errore consiste nel dip magnetico42 dovuto alla

componente verticale del campo magnetico terrestre Questo effetto varia in base

alla latitudine possiamo affermare che le linee di forza che agiscono sono

orizzontali allrsquoequatore e verticali ai poli Per questo motivo sugli aghi delle

bussole a volte sono montati dei pesetti che pessono essere spostati al fine di

contrastare questo effetto

42 Magnetic dip

Appendice A 158

iv2 Bussola a effetto Hall

I sensori ad effetto Hall sono basati sulle osservazioni di Hall(1979) che un

conduttore e un semiconduttore immersi in un campo magnetico mostrano una

differenza di potenziale ai loro capi Il vantaggio di questi sensori egrave la possibilitagrave

di misurare il flusso in modo statico I primi sensori costruiti avevano una

sensibilitagrave e una stabilitagrave paragonabile a quella dei fluxgate43 ma negli ultimi anni

egrave migliorata fino a raggiungere i Gauss e oltre Giagrave nei primi anni 60rsquo la

Marina mostrograve interesse a questo tipo di sensori e la Motorola costruigrave un certo

numero di prototipi per valutarne le potenzialitagrave La bussola della Motorola

montava due sensori ad effetto Hall per limitare gli effetti dovuti alle variazioni di

temperatura Ogni sensore era formato da una barretta di ferro- indio- arsenico di

2 x 2 x 01 millimetri inserito in un concentratore di flusso come si vede in Figura

87

310 minus

Il concentratore di circa 5 cm incrementava la densitagrave di flusso attraverso il

sensore di due ordini di grandezza [Willey 1964] lrsquouscita di tale dispositivo egrave un

treno di impulsi ad ampiezza variabile in cui lrsquoampiezza appunto egrave proporzionale

al valore misurato Fu riscontrata una buona linearitagrave fino a densitagrave di flusso di

0001 Gauss[Willey 1962]

Figura 88 Una coppia di sensori Hall (Lega di Indio-Ferro-Arsenico)

Maenaka allrsquouniversitagrave di tecnologia di Toyohashi in giappone sviluppograve

un sensore al silicio basato su due sensori Hall montati in disposizione ortogonale

43 Bussola fluxgate sfutta campi magnetici generati da spire azionati da corrente continua

Appendice A 159

Purtoppo i risultati di questo esperimento non furono dei migliori in

quanto il sensore costruito forniva un sensibilitagrave di 1 Gauss e il campo terrestre va

da 01 Gauss allrsquoequatore fino a 09 ai poli Di notevole interesse rimane per

lrsquoessere interamente costruito in un integrato e quindi lo rende molto pratico e di

elevato interesse commerciale

iv21 1490 Digital Compass Sensor

Questo sensore[49] fornisce informazioni su scostamenti in otto direzioni

misurando il campo magnetico della terra usando la tecnologia ad effetto Hall Il

sensore 1490 internamente egrave destinato per rispondere a cambiamento direzionale

simile ad una bussola riempita liquida Rinvieragrave al senso indicato da uno

spostamento di 90 gradi in circa 25 secondi senza overswing I 1490 possono

funzionare inclinato fino a 12 gradi con lerrore accettabile Egrave connesso facilmente

a circuiti digitali ed i microprocessori

Caratteristiche Specifiche Alimentazione 5-18 volt di CC 30 mA Uscite Apra il collettore NPN affondi 25 mA per il senso Peso 225 grammi Formato un diametro da 127 millimetri alto 16 millimetri Perni 3 perni da 4 lati sui centri del 050 Temperatura -20 - +85 gradi di C

Figura 89 1490 DCS

iv3 Bussola a magnetoreversiva

Questa tipologia di sensori egrave molto interessante per il range di sensibilitagrave

che coprono ad anello aperto che va da a 50 Gauss e coprono quindi

interamente la regione interessata del flusso terrestre Ad anello chiuso hanno un

210 minus

Appendice A 160

sendibilitagrave approssimativamente di Gauss [Lenz 1990] Presentano

ulteriormente un basso assorbimento di potenza piccole dimensioni che li

posizionano tra i primi posti nella scelta di componenti

610 minus

iv31 Philips bussola AMR

Uno dei primi sensori magneto resistivi impiegati per realizzare una

bussola magnetica egrave il KMZ10B costruito dalla Philips[50] Semiconductors nel

1996 La sensibilitagrave di questo dispositivo (approssimativamente 01 mVAmcon

alimentazione di 5 V DC) comparata con il campo magnetico terrestre massimo

implica che devono essere presi con molta considerazione gli errori dovuti alla

variazione della temperatura e alle variazioni di offset[Patersen1989]Un sistema

per ovviare a questi inconvenienti egrave utilizzare lrsquoeffetto flipping44

iv4 Bussola magnetoelastica

Utilizzare materiali magneto-elastici come materiali fondamentali di

sensori in campo magnetico ad alta precisioneIl principio su cui si basano questa

famiglia di componenti egrave la variazione del modulo di Young[51] in leghe

magnetiche quando introdotte in campo magnetico esternoIl modulo di elasticitagrave

di un materiale egrave semplicemente misurato come

εσ

=E

Dove

E = Modulo di elasticitagrave

σ = Tensione applicata

44 Flipping phenomenon non trattato in questa discussione

Appendice A 161

ε = Deformazione risultante

Se la tensione applicata rimane costante la deformazione egrave inversamente

proporzionale al modulo di elasticitagrave In alcune leghe E egrave molto pronunciato

questo permette al campo magnetico di essere accuratamente determinato

misurando la variazione di lunghezza di una lega opportunatamente sollecitata da

una forza costante Esistono due tecnologie che permettono di realizzare sensori

economici e molto precisi

bull Interferometric

bull Tunneling-trip

iv41 Metglas 2605S2

Metglas[52] egrave una lega di ferro boro silicio e carbonio Il sensore egrave

costituito da un nastro della lega che in presenza di campo magnetico esterno

mostra un certo allungamento (analisi sul nastro di vetro metallico sono avvenute

al laboratorio di SERC Rutherford Appleton) I dati di riflettivitagrave sono stati

analizzati le misure forniscono modelli che hanno permesso una valutazione del

profilo di magnetizzazione vicino alla superficie del nastro In Figura 89 egrave

mostrato il circuito utilizzato per misurare la variazione di lunghezza

dellrsquoelemento magnetoresistivo

Figura 90Circuito per misurare lrsquoallungamento delle striscia magnetoresistiva

Appendice A 162

v Sensori per la modellizzazione dellrsquoambiente

Molti sensori per mappare ambienti interni sono sensori di distanza per

questo motivo verranno esposti in questo testo alcuni tra i piugrave conosciuti

vi Sensori di distanza

Esistono differenti approci per ottenere questo tipo di misura

bull Sensori basati sul tempo di volo (TOF45) di un impulso di energia

emesso che si propaga e che viene riflesso dallrsquoostacolo

bull Sensori basati sulla differenza di fase introdotta sempre nella

riflessione di un segnale ma non impulsivo

bull Sensori basati su radar a modulazione di frequenza

vi1 Sensori basati sul tempo di volo

Il funzionamento consiste nel misurare il tempo di volo di un senale da un

trasmettitore al ricevitore il percorso effettuato mentre il tempo di percorrenza

risulta esserecdT 2

=∆ dove c egrave la velocitagrave della luce

In robotica la velocitagrave della luce non riesce a trovare applicazioni pratiche

e trovano utile impiego le onde acustiche la cui velocitagrave di propagazione egrave

v=340ms I vantaggi che si trovano dallrsquoutilizzo di questo metodo sono che

emettitore e ricevitore possono essere lo stesso oggetto e che le superfici non

devono presentare particolari requisiti Gli svantaggi possono essere fronti di

salita imprecisi durante lrsquoemissione lrsquoattenuazione della radiazione riflessa che

45 Time of Fly

Appendice A 163

puograve essere influenzata da rumore lrsquoinaccuratezza nel circuito che serve a misurare

il tempo e la possibile variazione della velocitagrave di propagazione soprattutto con

onde sonore Il cono di emissione inoltre non ci permette di rilevare la forma

dellrsquooggetto Quando lrsquoonda si riflette su un oggetto si ha un fenomeno chiamato

crosstalk Utilizzando diverse misurazioni con treni di impulsi si riescono ad

avere stime abbastanza precise sullrsquooggetto riuscendo ad arrivare ad avere

precisione anche di 25 mm da una distanza di 30 cm

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502

Campo di misura tra 30 cm e 5 metri[53]

Caratteristiche

- Campo di misura tra 30 cm e 5 m (MS 6502)

-Campo di misura tra 15 cm e 10 m ( MS 6001)

-Alimentazione singola tra 75V e 15V - Gestione degli Echo multipli

- Possibilitagrave di fissaggio del sensore direttamente al circuito stampato

- Sistema di connessione MODU II - Uscita open collector

-Protezione dallrsquoinversione di polaritagrave

Figura 91 Piedinatura modello MS

6501

Figura 92 Sonar Modello MS 6501

Figura 93 Sonar Modello MS 6502

Appendice A 164

Il modulo sonar egrave un dispositivo di basso costo con il quale egrave possibile

gestire direttamente i sensori elettrostatici Polaroid per effettuare misure di

distanza Gli impulsi ad ultrasuoni sono a 499 KHz per entrambi i modelli e

vengono prodotti da un quarzo funzionante alla frequenza di 420 KHzI moduli

soso dotati di un ingresso di inibizione esterna con il quale egrave possibile

unrsquoesclusione selettiva di alcuni echo in modalitagrave di funzionamento echo multiplo

Con il dispositivo proposto egrave possibile distinguere echo di ritorno tra due oggetti

distanti 75 cm circa

Figura 94 Struttura del Mdulo Sonar

Vi sono due modalitagrave di funzionamento del sonar echo singolo e echo

multiplo

Nella funzionalitagrave ad echo singolo la gestione consite nel portare basso il

valore di INIT spedire le onde ultrasoniche e attendere la ricezione del segnale di

echo il tempo tra quando si egrave reso basso il senale di INIT e quello in cui diventa

basso ECHO indica il tempo di volo impiegato per raggiungere il target Ersquo

conveniente attendere circa 80 ms tra una spedizione e lrsquoaltra per evitare onde

ultrasoniche ancora presenti nellrsquoambiente

Nella funzionalitagrave multiplo dopo che si pone basso INIT il trasduttore

viene pilotato da 16 impulsi a frequenza 499 KHz (MS 6501) o 45 KHz (MS

Appendice A 165

6502) e di ampiezza variabile per modello (MS6501 400VMS6502 100V) ciograve

comporta lrsquoinvio di un pacchetto di onde ultrasoniche che si propagano nello

spazio Al fine di evitare lrsquoassestamento del trasduttore (fenomeno ringring) esso

viene oscurato in ricezione per 238 ms Queste tempistiche rendono possibile

lrsquoindividuazione di oggetti a distanza di 40 cm che corrispondono a tempo di volo

di 238 ms

Figura 95 Modalitagrave di funzionamento a

eho singolo

Figura 96 Modalitagrave di funzionamento a

echo multiplo

vi2 Sensore telemetro a sfasamento

Il sensore si basa sul seguente principio si separa lrsquoonda emessa in due

parti una incide lrsquooggetto e torna indietro la seconda viene riflessa su uno

specchio di cui si conosce la posizione Si calcola la differenza temporale tra le

due onde Essendo noto il cammino ottico della luce riflessa dallo specchio si egrave in

grado di determinare il cammino ottico incognito In robotica si misurano distanza

dellrsquoordine di qualche metro quindi lrsquoonda laser emessa λ egrave dellrsquoordine del metro

vi21 LIDAR lsquoLight detection and Rangingrsquo

Utilizzi molto rilevanti in questo tipo di acquisizione dati ci vengono

forniti da progetti NASA per la struttura della morfologia terrestre in particolare

in progetti DSM e DTM (Digital Surface Model e Digital Terrain Model)[54] Si

Appendice A 166

dispone di un raggio lasee di cui si analizza lrsquoecho e la distorsione conoscendo la

velocitagrave di propagazione Le misura proposte vengono elaborate per creare

coordinate 3D Dopo aver puntato su zone giagrave conosciute mediante comunicazioni

con GPRS il sistema scansiona la zona ignota per estrapolare per comparazione i

nuovi valori effettuando una misura di sfasamento tra lrsquoonda modulata emessa e

quella rientrante Analizzando opportunamente lrsquointensitagrave della luce riflessa si

potranno anche dedurre informazioni sulla tipologia del materiale analizzato

Figura 97 Esempio di acquisizione LIDAR

vi3 Triangolazione

Uno dei metodi piugrave semplici utilizzati Il soggetto egrave illuminato da uno

stretto fascio di luce che scandisce la superficie Il movimento di scansione

avviene sul piano definito dalla linea che va dallrsquooggetto al rilevatore e dal

rilevatore alla sorgente Il rilevatore egrave focalizzato su una limitata porzione di

superficie quando il rilevatore vede un piccola macchia di luce la sua distanza d

dalla superficie illuminata viene calcolata con un semplice calcolo geometrico

Appendice A 167

i

sdαtan

=

Dove

iα = angolo tra la sorgente e la linea della base

angolo di massima intensitagrave

s = distanza tra la sorgente e il rilevatore

Questo fornisce la misura di un punto se il sistema sorgente rilevatore

viene mossa su un piano egrave possibile ottenere un insieme di punti facilmente

trasformabili in coordinate tridimensionali che caratterizzano la struttura

dellrsquooggetto esaminato

Appendice A 168

vi31 IFELL Laser e Sistemi Srl

Modello[55] Caratteristiche principali

Figura 987 Serie LK

bull Campi di misura fino a 500 mm bull Tecnologia di fotorivelazione con

CCD Micropunto di lettura (fino a 30 micron)

bull Protezione IP-67 (solo teste) bull Insensibilitagrave alle variazioni di colore bull Elevata precisione anche su materiali

otticamente difficili bull Uscita analogica

Figura 99 Serie ODS

bull Campi di misura fino a 2000 mm bull Tecnologia di fotorivelazione con CCDbull Amplificatore integrato bull Protezione IP-65 bull Uscita analogica e digitale RS-232 bull Ingressouscita di sincronizzazione bull Esecuzione speciale per materiali

trasparenti

Figura 100 Serie M5

bull Campi di misura fino a 400 mm bull Tecnologia di fotorivelazione con PSD bull Protezione IP-64 (solo teste) bull Uscita analogica e digitale (opzione) bull Ingressouscita di sincronizzazione bull Comparatore integrato

Informazioni sui produttori

[41] G Arlanch ldquoSviluppo di un simulatore per il controllo dellrsquoandatura di un

quadrupederdquoThesis 1997

[42] httpwwweltrait

[43] httpwwwcorrsysdatronithomehtml

[44] httpwwwrobot-italycomproduct_infophpproducts_id

[45] httpwwwfutaba-rccomradioaccysfutm1001html

[46] httpwwweuroshop2000itcat159html

[47] MBertolini ldquoGirobussole a fibre otticherdquo ITN Viareggio

[48] httpwwwgyroscopecom

[49] httpwwwdinsmoresensorscom1490spechtm

[50] Philips ldquoKMZ10B Magnetic field sensorrdquo Data sheet 1998

[51] JP Sinnecker ldquoMateriaia magneticos doces e materiaia ferromagneticos

amorfosrdquo Reviat brasileira de Fisicavol 222000

[52] K Ivison N Cowlam MRJ Gibbs J Penfold e C Shackleton ldquoUna

misura diretta della magnetizzazione di superficie di un vetro metallico

ferromagneticordquo Edizione 23 (Il 12 Giugno 1989)

[53] Blautron ldquoModulo sonar 6501pdfrdquo ldquoModulo sonar 6502pdfrdquoItaly 2002

[54] V Adorno ldquoIl DTM e il DSM ad alta risoluzionela tecnologia laser

scanner e lrsquoutilizzo del Lidarrdquo Naturaltech

[55] wwwifelliti_sens_triangi_sens_trianghtm

Appendice B

Appendice B 171

i Manuale drsquouso

Per permettere una rapida visualizzazione dei risultati da noi trovati viene

fornito allrsquoutente un menugrave principale di scelta in cui puograve richiamare le funzioni

generate

Lrsquoutente richiameragrave direttamente dal promt di Matlab la funzione

start_asgrad(x) passando come parametro x un intero da o a 5Ad ognuno di

questi numeri corrisponderagrave una funzione

1 = visualizzazione della differenza tra passo in andatura quasi-stabile e

quasi-dinamica grafica del passo e proiezione del convex hull

2 = calcolo della cinematica e visualizzazione degli errori(in

start_asgradm posso modificare direttamente i valori delle variabili decisionali in

merito alla cinematica inversa)

3 = visualizzazione dei grafici riguardanti la forza e la torsionesui giunti

scegliendo nella funzione stessa il numero di frame da considerare

4 = generazione del movimento in un ambiente noto (per settare i

parametri riferiti allrsquoambiente bisogna modificare il file initm prima dellrsquoavvio

del programma)

5 = permette il movimento reale del robot quadrupede del politecnico di

Milano Questa funzione puograve essere richiamata dopo una serie di accorgimenti per

istaurare un corretto canale di comunicazione (collegare la porta seriale o il

convertitore USB-Seriale e accertarsi che la porta sia denominata COM 1 con

velocitagrave di trasferimento di 14400 bitsec)

Appendice B 172

ii Codice generato

ii1 Menu principale

FUNZIONE START_ASGARD funzione che avvia lesecuzione di tutto il programma permettendo allutente di selezionare la parte di analisi da visualizzare parametri in input val_scelta=valore di scelta 1= confronto passo quasi-staticoquasi-dinamico 2= studio cinematico 3= analisi dinamica 4= scelta del percorso(si ricorda che prima di sceglire questa opzione si devono settare i parametri nella funzione init per la descrizione dellambiente 5= collegamento diretto al robot fisico Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [] = start_asgard(val_scelta) if(val_scelta==1) richiamo della funzione passo_STATICO clearpulizia dello workspace end if(val_scelta==2) angoli_motori2richiamo generatrice angoli da inviare ai motori settaggio parametri funzione met=2 incr=25 g=1 cinematica(ja(28)metincrg) clear end if(val_scelta==3) fr=10setto numero di frame richiamo della funzione NW_EU clear end if(val_scelta==4) richiamo della funzione ambiente_prova

Appendice B 173

clear end if(val_scelta==5) angoli_motori2richiamo generatrice angoli da inviare ai motori n=1inizializzazione numero passi richiamo della funzione camminata_stat clear end

ii2 Confronto andatura quasi-stabile vs quasi-dinamica

FUNZIONE PASSO_STATICO Funzione che permette la comparazione tra il passo statico e il passo quasi-dinamicomostrando per ogni animazione la proiezione del centro di massa e il poligono di appoggio definizione tempistiche per movimento zampa frame=6 definizione punto vista X= 0(090)dallalto Y=90110120)angolata definizione tempo int=1(frame-1) t = [0int1] inizializzazione della figura figure(NamePasso StaticoNumbertitleoff) view(XY) richiamo inizializzazione robot init_robot DB_position posizioni zampe poszero=[0 0 0 0 0 0]posizione impressa nella pic pos_base_A=[0 0 0 -pi4 (-pi4) 0] posizione base delle zampe di destra pos_base_B=[0 0 0 pi4 pi4 0] posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento nel simulatore egrave stato ulteriormente aumentato di un fattore correttivo pos_av_A=[0 (pi4-045) 0 -pi4 -pi4 0] pos_av_B=[0 (-pi4+045) 0 pi4 pi4 0] pos_ind_A=[0 (-pi4+045) 0 -pi4 -pi4 0] pos_ind_B=[0 (pi4-045) 0 pi4 pi4 0] posizioni intermedie=punti di via per le cubiche pos_int_A1=[0 (-pi4+045) 0 0 0 0]

Appendice B 174

pos_int_B2=[0 (pi4-045) 0 0 0 0] ------------------------------------------- calcolo della traiettoria movimento in avanti zampe di sinistra jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_Bt) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint) jb_b=cubica_norm(pos_av_Bpos_base_Bint) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_Apos_base_Aint) jbb=cubica_norm(pos_base_Bpos_ind_Bint) ------------------------------ parte grafica sposto il robot al centro trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) disegno convex hull line([136 46 46][-345 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) muovo prima zampa plot2(zampad jb1) plot(zampad jb2) clf muovo seconda zampa cambia la base dappoggio disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_av_B) line([136 46 46][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jb1) plot(zampab jb2) muovo_baricentro--------------------------------------- posizioni baricentro posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa = [0735 (-pi4+04) pi4 -pi4 -pi4-03 0] posb = [0735 (34pi+04) pi4 -pi4 pi4-03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc = [0735 (3pi4+04) 3pi4 pi4 -pi4+03 0] posd = [0735 (5pi4-04) pi4 -pi4 -pi4+03 0]

Appendice B 175

qposd = [0735 pi pi4 -pi4 -pi4 0] traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -048 -1135]) t2=transl([157 -09 -1135]) t3=transl([-159 045 -1135]) t4=transl([162 0045 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno zampe view(XY) disegno zampe con cinematica da zampa puntata a bar plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposat) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(XY) base di appoggio line([136 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) movimento baricentro plot(zampab2jbarb) plot(zampad2 jbard) plot(zampaa2 jbara) plot(zampac2 jbarc) _______________________________________________________________ riposiziono zampe catena cinemetica diretta r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase tx=transl([0 -042 0]) bara=r1tx barb=r2tx barc=r3tx

Appendice B 176

bard=r4tx zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard clf disegno bas dappoggio e zampe view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_ind_Apos_base_B) line([142 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-288 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo terza zampa plot2(zampac ja1) plot(zampac ja2) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_av_Apos_base_B) line([142 464 464][-335 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-335 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo ultima zampa plot(zampaa ja1) plot(zampaa ja2) ____________________________________ sposto di nuovo il baricentro per tornare alla posizione base posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa_av = [0735 (pi4-04) pi4 -pi4 (-pi4+03) 0] posb_ind = [0735 (54pi-04) pi4 -pi4 pi4+03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc_av = [0735 (5pi4-04) 3pi4 pi4 -pi4-03 0] posd_ind = [0735 (5pi4-04) pi4 -pi4 -pi4+038 0] qposd = [0735 pi pi4 -pi4 -pi4 0] disegna traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -09 -1135]) t2=transl([164 -054 -1135]) t3=transl([-159 003 -1135]) t4=transl([162 041 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc

Appendice B 177

zampad2base=bard disegno zampe view(XY) plot(zampaa2qposa_av) plot(zampab2qposb) plot(zampac2qposc_av) plot(zampad2qposd) generazione traiettorie per baricentro jbara=cubica_norm(qposa_avposat) jbarb=cubica_norm(qposbposb_indt) jbarc=cubica_norm(qposc_av posct) jbard=cubica_norm(qposd posd_indt) clf view(XY) _____________________________- riposiziono zampe base r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -042 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard _____________________________________________ disegno base appoggio e muovo zampe line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) Analisi passo dinamico figure(NamePasso DinamicoNumbertitleoff) t = [0int1] calcolo delle traiettorie

Appendice B 178

jta1 = cubica_norm(qza qpva t) jta2 = cubica_norm(qpva qfa t) jtb1 = cubica_norm(qzb qpvb t) jtb2 = cubica_norm(qpvb qfb t) jtc1 = cubica_norm(qpvc qfc t) jtc2 = cubica_norm(qfc qzc t) jtd1 = cubica_norm(qpvd qfd t) jtd2 = cubica_norm(qfd qzd t) ------------------------------ parte grafica parto da posizione base trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegno robot e base dappoggio disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) line([136 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) view(110120) muovo prima zampa plot2(zampaa jta1) plot(zampaa jta2) clf muovo seconda zampa e cambio base appoggio disegna_robot(zampaazampabzampaczampadqfaqzbqzcqzd) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jtb1) plot(zampab jtb2) baricentro definizione cordinate baricentro posa = [0735 pi4 pi4 -pi4 0 0 ] qposa = [0735 0 pi4 -pi4 -pi4 0] posb = [0735 -pi4 34pi pi4 0 0] qposb = [0735 0 34pi pi4 -pi4 0] posc = [0735 0 pi4 -pi4 pi4 0] qposc = [0735 -pi4 pi4 -pi4 0 0] posd = [0735 0 34pi pi4 pi4 0] qposd = [0735 pi4 34pi pi4 0 0] disegno robot in corretta posizione t1=transl([-13 -13 -1135]) t2=transl([13 -13 -1135]) t3=transl([-16 045 -1135]) t4=transl([16 045 -1135]) b=zampaabasetraslazione nellorigine della zampa bara=bt1 barb= bt2 barc= bt3

Appendice B 179

bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno robot e bae appoggio line([465 428 428][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([428 175 175][-415 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposa t) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(110120) spostamento tramite rivisualizzazione ta1=transl([-029 0 0]) ta2=transl([029 0 0]) bara=ta1zampaa2base barb=ta2zampab2base barc=ta2zampac2base bard=ta1zampad2base zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 17 17][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) line([17 432 432][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) torno al robot con catena cinematica base baricentro r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -078 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb

Appendice B 180

zampacbase=barc zampadbase=bard clf view(110120) disegna_robot(zampaazampabzampaczampadqzaqzbqpvcqpvd) line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) view(110120) sposto terza zampa plot2(zampac jtc1) plot(zampac jtc2) clf disegna_robot(zampaazampabzampaczampadqzaqzbqzcqfd) line([46 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) sposta quarta zampa plot(zampad jtd1) plot(zampad jtd2) line([46 46 45][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 46 46][-324 -324 -324][-1135 -1135 -1135]ColorrLineWidth1)

ii3 Calcolo della cinematica inversa

FUNZIONE CINEMATICA Programma che permette di calcolare la cinemetica diretta ed inversa della zampa del robot in esame simula in modo opportuno lanello cinematico di controllo dando la possibilitagrave allutente di inserire un possibile disturbo esterno che non ha permesso il corretto funzionamento La variabile diturbo potragrave in future evoluzioni assumere i valori di sensori o dometrici la funzione di cinemetica inversa egrave stata implementata con tre differenti metodicalcolo del gradiente e geometrico(studiato ad ok che permette il calcolo in real time) parametri in input vetthheta = vettore degli angoli dei giunti per la cinematica diretta medodo = scelta tra i metodi di calcolo di cinematica inversa 1=geometrico 2=inseguimento del gradiente 3=inseguimento veloce del gradiente incremento_angolo = approssimazione da usare con i metodi del gradiente espressa in gradi

Appendice B 181

gomito = scelta se gomito alto (1) o basso (0) parametri output n = numero di iterazioni per il calcolo della cinematica inversa errore = errore in gradi commesso tra la posizione voluta in input e quella realmente raggiunta Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [nerrore] = cinematica(vetthetametodoincremento_angologomito) metodo=1 incremento_angolo=25 gomito=1 alto vettheta=[-pi4 pi4 pi2] errore=[] incr_ang=incremento_angolo2pi360trasformazione valore in radianti ntheta=size(vettheta) considero ogni singola riga del vettore degli angoli concentro cioegrave lanalisi sui singoli 3 valori degli angoli for(nt=1ntheta) utilizzo variabile locale theta=(vettheta(nt)) theta_i=[] v1=size(theta) for(v=1v1(11)) inizio ciclo per tutti i valori di theta inseriti calcolo CINEMATICA DIRETTA per il calcolo della posizione dellend_effector nello spazio dei giunti considero c1 il baricentro che risulta essere giunto fittizio C2=cos(theta(v1))S2=sin(theta(v1)) C3=cos(theta(v2))S3=sin(theta(v2)) C4=cos(theta(v3))S4=sin(theta(v3)) matrici prodotte dai parametri di Denavit Hartemberg A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A34=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] matrice finale end-effector T=A12A23A34 memorizzo in pos la posizione finale dellend effector calcolata si trova nei primi 3 elementi della quarta colonna della matrice T for(i=13) pos(1i)=T(i4) end pos(14)=1 siamo nelle omogenee p deve avere 4 valori disturbo=[0 0 0 0]introduco valori disturbo quando avremo i sensori avrograve in input valore posizione finale raggiunta diversa da quella calcolata ricalcolo posizione reale raggiunta pos=pos+disturbo

Appendice B 182

dalla nuova posizione calcolo la CINEMATICA INVERSA PRIMO ANGOLOricavato direttamente dalla matrice T z2=pos(12)pos(11) theta_i(11) = atan(z2) ricalcolo l aposizione corretta di intersezione degli assi avendo giagrave calcolato il valore de primo giuntosposto lorigine nel secondo giunto in base alla posizione effettiva del robotsullasse devo fare controlli per calcolare l aposizione dellend-effector rispetto alla nuova origine PIPPO=pos() if (theta_i(11)==0) pos(11)=pos(11)-(cos(theta_i(11))00573) else if pos(13)==0 pos(11)=00675+009 else if (theta_i(11)gt0) pos(11)=(pos(11)cos(theta_i(11)))-00573 else pos(11)=(pos(11)cos(theta_i(11))-00573) end end end PIPPO2=pos() METODO GEOMETRICO if (metodo==1) n=1 unica interazione dist=0 pos(11)=abs(pos(11)) pos(13)=abs(pos(13)) da analisi geometrica B = pos(11)^2+pos(13)^2 c2=(B-00675^2-009^2)(200675009) theta_i(13)=(acos(c2)) delta=atan((pos(13))(pos(11)))considerando i grafici ho valori di x e z invertiti zx=(009sin(theta_i(13))(00675+009cos(theta_i(13)))) alfa = atan(zx) se gomito alto uasato sempre if (gomito==1) theta_i(12)=(delta+alfa) end se gomito basso if (gomito==0) theta_i(12)=(delta-alfa) end calcolo errore tra dato in input e valori trovati err(11)=theta(11)-theta_i(11) err(12)=abs(theta(12))-theta_i(12)+pi2causa inversione di posizionamento motori err(13)=abs(theta(13))-theta_i(13) trasformo errore in gradi errore=[errorefix(err360(2pi))] else METODO ITERATIVO PER CALCOLARE CINEMATICA INVERSA

Appendice B 183

if (metodo==2) METODO GRADIENTE inizializzo var di appoggio a=0 b=0 n=0 dist = Calc_Distanza(abpos(11)pos(13)) calcolo distanza iniziale while (dist gt 0001) 0001 approx al millimetro 001 approx al centimetro calcolo la differenza della distanza dalla pos finale dellend-effector incrementado e decrementando gli angoli verifico se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_angbpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) -Calc_Distanza(a b-incr_angpos(11)pos(13)) a = a - gradient_a creo le nuove pos b = b - gradient_b ricalcolo la distanza e vedo se egrave minore dellapprox dist = Calc_Distanza(abpos(11)pos(13)) n=n+1incremento numero di iterazioni end else if(metodo==3) METODO FASTER GRADIENT FOLLOWING inizializzo var di appoggio a=0 b=0 n=0 speeda=0 speedb=0 dist = Calc_Distanza(abpos(11)pos(13))calcolo distanza da end effector salvo il valore del vecchio gradiente per entrambe le posizioni old_gradient_a = 0 old_gradient_b = 0 while (dist gt 0001) approssimazione al millimetro n=n+1 controllo se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_ang bpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) - Calc_Distanza(a b-incr_angpos(11)pos(13)) controllo se ci siamo gia trovati in questi valori in segno if (sign(old_gradient_a) ~= sign(gradient_a)) se gradiente ha cambiato direzione(salitadiscesa)devo arrestare e modificare valori a = a - speeda old_gradient_a (gradient_a-old_gradient_a) speeda = 0 else speeda =speeda + gradient_a se sto seguendo salita o discesa del gradiente continuo a seguirla if (sign(old_gradient_b) ~= sign(gradient_b))

Appendice B 184

b = b- speeda old_gradient_b (gradient_b-old_gradient_b) speedb = 0 else modifico posizioni raggiunte e velocitagrave speedb =speedb+gradient_b a = a- speeda b = b- speedb end end ricalcolo distanza con nuovi valori dist = Calc_Distanza(a bpos(11)pos(13)) old_gradient_a = gradient_a il grdiente appena calcolato diventa il vecchio old_gradient_b = gradient_b end else testo=inserito metodo errato end end STAMPO VALORI NEL CASO DEI GRADIENTI nstampo il numero di iterazioni che sono servite a calcolare il risultato dist theta_i(12)=a-incr_angvalori corretti sono quelli al passo precedente theta_i(13)=b-incr_ang theta_i esprimo lerrore in gradi err=theta-theta_i errore=[errorefix(err360(2pi))] end end end

ii4 Analisi del modello dinamico

FUNZIONE EULERO_BASE Funzione che effettua il calcolo dei coefficienti di newton eulero sulla singola zampa per ogni singolo giunto dellarticolazione in base alla parametrizzazione di Denavit-Hartemberg La catena cinematica qui analizzata egrave quella che ha per base il baricentro ed end effector il piedeApplicata a parametri di controllo degli attuatori(passo_avanti) parametri input theta=vettore a tre colonne che rappresenta gli angoli dei tre giunti function [forza_gen] = eulero_base(theta) theta=[ pi4 pi4 pi2 pi4 pi4 pi4 0 pi4

Appendice B 185

pi4 pi4 0 pi4 pi4 pi4 0 pi4 pi4 pi4 pi2 pi4 pi4 pi4 pi2 pi4] definizione tempistiche delta=1 [v1 n1]=size(theta) forza_gen=[] massa PESO=1 IN KG massa=[PESO4 002 002 005] gravitagrave g=[0 0 -98] tensore dinerzia del complesso braccio motore espressi in millimetri x=[0026 0003 0003 0009] y=[0054 0020 0020 004] z=[01125 00573 00675 009] I=[] matrice momento dinerzia for(i=13) I=[I (y(i)^2+z(i)^2)12 0 0 0 (x(i)^2+z(i)^2)12 0 0 0 (y(i)^2+z(i)^2)12] end for(v=1v1-1) inizio ciclo per piugrave posizioni successive ris=[] analizzo due istanti temporali successivi per estrapolare la velocitagrave for(j=1n1) ris=[ris (theta(v+1j)-theta(vj))] end d_theta=risdelta espresso in radsec dd_theta=d_thetadeltaespresso in radsec^2 C1=cos(theta(v1))S1=sin(theta(v1)) C2=cos(theta(v2))S2=sin(theta(v2)) C3=cos(theta(v3))S3=sin(theta(v3)) C4=cos(theta(v4))S4=sin(theta(v4)) Ricavo matrice di rotazione tot R=[[C1(1) (-S1(1)) 0 S1(1) C1(1) 0 0 0 1] [C2(1) 0 (-S2(1)) S2(1) 0 -C2(1) 0 1 0] [C3(1) (-S3(1)) 0 S3(1) C3(1) 0 0 0 1] [C4(1) (-S4(1)) 0 S4(1) C4(1) 0 0 0 1]]gestita come 123 cinematica diretta per il calcolo della posizione dellend_effector nello spazio dei giunti A11=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A13=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A14=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T1=A11A12A13A14

Appendice B 186

C1=cos(theta(v+11))S1=sin(theta(v+11)) C2=cos(theta(v+12))S2=sin(theta(v+12)) C3=cos(theta(v+13))S3=sin(theta(v+13)) C4=cos(theta(v+14))S4=sin(theta(v+14)) A21=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A22=[C2 0 (-S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A24=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T2=A21A22A23A24 dalle posizioni successive trovate con cinematica diretta estrapolo la posizione e da essa la velocitagrave for(i=13) pos(1i)=T2(i4)-T1(i4) end vel=posdelta acc_end_eff=veldelta vettore dallorigine della terna(i-1)al baricentro Ci R_iC=[0055125 0 0002865 0 0003375 0 00045 0 0] vettore dallorigine della terna(i)al baricentro Ci RC=[-0055125 0 0-002865 0 0-003375 0 0-0045 0 0] vettore dallorigine della terna(i-1)allorigine della terna (i) R_iI=[01125 0 000573 0 000675 0 0009 0 0] zo=[0 0 1]asse base altri parametri da calcolare velocitagrave lineare del baricentro Ci p_C=[0 0 0] velocitagrave lineare dellorigine della terna (i) p_i=[0 0 0] velocitagrave angolare del braccio omega=[0 0 0] accelerazione lineare del baricentro Ci pp_C=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione lineare dellorigine della terna (i) pp_i=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione angolare del braccio d_omega=[0 0 0] forza esercitata dal braccio (i-1) sul braccio i f=(1)acc_end_eff il primo valore rappresenta su end_effector momento mu=[0 0 0] forza generalizzata tau=[] impongo velocitagrave e accellerazioni per il braccio base inizio algoritmo inserisco formule di Newton-Eulero(vedi teoria) for(i=24) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] omega(i)=(Rot(omega(i-1)+(d_theta(1i-1)zo))) d_omega(i)=(Rot(d_omega(i-1)+(dd_theta(1i-1)zo)+cross(d_theta(1i-1)omega(i-1)zo)))

Appendice B 187

pp_i(i)=(Rotpp_i(i-1))+cross(d_omega(i)R_iI(i-1))+cross(omega(i)(cross(omega(i)R_iI(i-1)))) pp_C(i)=pp_i(i)+cross(d_omega(i)RC(i-1))+cross(omega(i)(cross(omega(i)RC(i-1)))) end TORNO indietro per calcolare le forze e i momenti i=3 r=2indici while(igt=1) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] Iner=[I((i-1)3+1)I((i-1)3+2)I((i-1)3+3)] f(r)=(Rotf(r-1))-massa(1i)pp_C(i)ho sottratto la massa perchegrave la considero forzapeso mu(r)=cross(-f(r)(R_iI(i)+RC(i)))+(Rotmu(r-1))+(Rot(cross(f(r-1)RC(i))))+(Inerd_omega(i))+cross(omega(i)(Ineromega(i))) i=i-1 r=r+1 end n2=size(mu) for(i=2n2) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] tau(i)=mu(i)Rotzo end forza_gen=[forza_gen tau] end forza_gen espressa in Nm forza_gen=(forza_gen100)98 trasformazione in cmKg

ii5 Map building

ii51 Espansione degli ostacoli

FUNZIONE ONDA_DESTINAZIONE funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input matrice= matrice di definizione mappa xend=valore dellascissa della destinazione yend=valore dellordinata della destinazione parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_destinazione(matricexendyend)

Appendice B 188

calcolo dimensioni matrice [dim1dim2] = size(matrice) for(i=1(xend-1))righe superiori ad arrivo for(j=1(dim22))per tutte le colonne matrice(i((j2)-1))=(xend-i)attribuisco valori decrescenti end end for(i=(xend+1)dim1)righe inferiori ad arrivo for(j=1(dim22)) matrice(i((j2)-1))=(i-xend)attribuisco valori a cui devo sottrarre la destinazione end end for(i=1dim1)colonne a sx ad arrivo for(j=1(yend-1))fino a colonna precedente arrivo sottraggo il numero in cui sono matrice(i((j2)-1))=matrice(i((j2)-1))+(yend-j) end end for(i=1dim1)colonne a dx ad arrivo for(j=(yend+1)(dim22))da colonna successiva a fine matrice(i((j2)-1))=matrice(i((j2)-1))+(j-yend)da valore devo sottrarre valore destinazione end end matrix=matrice restituisco matrice modificata FUNZIONE ONDA_OSTACOLOPLUS funzione che inseriscce come secondo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dallstacolo piugrave vicino valutando opportunamente la relazione tra gli ostacoli giagrave presenti parametri in input matrice= matrice di definizione mappa xposa=valore dellascissa iniziale deelostacolo xposb=valore dellascissa di fine deelostacolo yposa=valore dellordinata iniziale deelostacolo yposb=valore dellordinata di fine deelostacolo parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_ostacoloplus(matricexposaxposbyposayposb) funzione per la creazione degli ostacoli ostacolo_par(xaxbyaybc) ostacolo occupa quattro celle xayaxaybxbya xbyb definisco nuova matrice matrice_1=zeros(size(matrice)) creo onda con singolo ostacolo matrice_1=onda_ostacolo(matrice_1xposaxposbyposayposb) [dim1dim2] = size(matrice_1) confonto matrice con singolo ostacolo con matrice con giagrave presenti altri ostacoli e salvo le distanze minime da essi for(i=1dim1) for(j=1(dim22))

Appendice B 189

if(matrice_1(i(j2))ltmatrice(i(j2))) matrice(i(j2))=matrice_1(i(j2)) end end end matrice(xposayposa2)=0valori che identificano lostacolo matrice(xposa((yposa2)-1))=110 matrice(xposayposb2)=0valori che identificano lostacolo matrice(xposa((yposb2)-1))=110 matrice(xposbyposa2)=0valori che identificano lostacolo matrice(xposb((yposa2)-1))=110 matrice(xposbyposb2)=0valori che identificano lostacolo matrice(xposb((yposb2)-1))=110 espansione ostacolo if(yposa ~= 1)se sono sul bordo sinistro matrice(xposa(yposa-1)2)=0valori che identificano lespansione matrice(xposa(((yposa-1)2)-1))=109 matrice(xposb(yposa-1)2)=0valori che identificano lespansione matrice(xposb(((yposa-1)2)-1))=109 end if(yposb ~= (dim22))se sono sul bordo destro matrice(xposa(yposb+1)2)=0valori che identificano lespansione matrice(xposa(((yposb+1)2)-1))=109 matrice(xposb(yposb+1)2)=0valori che identificano lespansione matrice(xposb(((yposb+1)2)-1))=109 end matrix=matriceritorno il valore della matrice modificata

ii52 Calcolo del percorso

FUNZIONE TROVA_PERCORSO funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input xst=valore dellascissa del punto di partenza yst=valore dellordinata del punto di partenza xend=valore dellascissa del punto di arrivo yend=valore dellordinata del punto di arrivo dim1dim2=dimendioni matrice mappa posxa1posxa2posya1posya2=posizione ostacolo 1 posxb1posxb2posyb1posyb2=posizione ostacolo 2 posxc1posxc2posyc1posyc2=posizione ostacolo 3 parametri in output prova1= valori in coordinate cartesiane del percorso trovato strada_per=percorso in rappresentazione direzionale dei passi da percorrere strada_per_uso=percorso espresso in valori singoli(0=Start1=Avanti-1=Indietro-2=Sinistra2=Destra) Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005

Appendice B 190

function [prova1strada_perstrada_per_uso] = trova_percorso(xstystxendyenddim1dim2posxa1posxa2posya1posya2posxb1posxb2posyb1posyb2posxc1posxc2posyc1posyc2) non_val=[100 1 -1 -1]valore non valido 100=dist_da destinazione 1=distanza da ostacolo visitato=[150 0]marca per nodi visitati arr=[0 45]marca arrivo strada=[xst yst]memorizzo coordinate percorso dim1=5 dim2=dim22 matrice_appoggio=eye(dim1dim2) crea una matrice diagonale dim1 x dim2 matrice=zeros(size(matrice_appoggio))creo matrice vuota creo matrice con onde necessarie matrice=onda_destinazione(matricexendyend) matrice=onda_ostacolo(matriceposxa1posxa2posya1posya2) matrice=onda_ostacoloplus(matriceposxb1posxb2posyb1posyb2) matrice=onda_ostacoloplus(matriceposxc1posxc2posyc1posyc2) prova=matriceprova diventa la mia matrice i=xst j=yst parto da sorgente n=dim1dimensioni matrice m=dim22 trovato=0 creo insieme dei successivi del nodo in analisi while(trovato==0) if((igt=1)ampamp(ilt=dim1)ampamp(jgt=1)ampamp(jlt=(dim22))) if(i ~= 1)se sono ai bordi successivi=[matrice(i-1(j2)-1) matrice(i-1(j2)) i-1 j] else successivi=non_val end if(j ~= 1)se sono ai bordi successivi=[successivimatrice(i(((j-1)2)-1)) matrice(i(j-1)2) i (j-1)] else successivi=[successivinon_val] end if(i ~= n) successivi=[successivimatrice(i+1(j2)-1) matrice(i+1(j2)) i+1 j] else successivi=[successivinon_val] end if(j ~= m) successivi=[successivimatrice(i(((j+1)2)-1)) matrice(i(j+1)2) i (j+1)] else successivi=[successivinon_val] end migliore=non_valattribuisco valore enorme a migliore trov=0 scelgo il miglior successivo quello che mi porta piugrave vicino a destinazione for(k=14) if(successivi(k1)lt=migliore(1)) tra due a stessa distanza prendo quello piugrave lontano dallostacolo

Appendice B 191

if((successivi(k1)==migliore(1))ampamp(successivi(k2)ltmigliore(2))) migliore=successivi(k) trov=1 posto=ksalvo la posizione del successivo end migliore=successivi(k) trov=1 posto=k end end matrice(i(j2)-1)=visitato(1)marco percorso giagrave visitato matrice(i(j2))=visitato(2) strada=[stradamigliore(3) migliore(4)]salvo la posizione del migliore trovato se sono arrivato a destinazione ho finito if(migliore(3)==xend)ampamp(migliore(4)==yend) trovato=1 end controllo per il mancato raggiungimento del percorso i=migliore(3)cerco il successivo j=migliore(4) se il migliore tra i successivi egrave o un ostacolo o unespansione sono bloccato if((migliore(1)==150)||(migliore(1)==109)||(migliore(1)==110)) trovato=2non esiste percorso end else trovato=2 end end if(trovato==1) testo=PERCORSO TROVATO end if(trovato==2) testo=PERCORSO NON TROVATO end se ho trovato il percorso if(trovato ~= 2) prova1=stradasalvo la strada in coordinate effettuata [rc] = size(strada) dalle coordinate estrapolo la strada direzionale e una espressa in singolo valore strada_per=[ start] strada_per_uso=[0] for(k=1(r-1)) if((strada(k1)~= strada(k+11))ampamp(strada(k2)== strada(k+12))) ris=strada(k1)- strada(k+11) if (ris==1) strada_per=vertcat(strada_perIndietro) strada_per_uso=[strada_per_uso-1] else strada_per=vertcat(strada_perAvanti ) strada_per_uso=[strada_per_uso1] end

Appendice B 192

else if((strada(k1)== strada(k+11))ampamp(strada(k2)~= strada(k+12))) ris=strada(k2)- strada(k+12) if (ris==1) strada_per=vertcat(strada_perSinistra) strada_per_uso=[strada_per_uso-2] else strada_per=vertcat(strada_perDestra ) strada_per_uso=[strada_per_uso+2] end end end end stampa=strada_per end

ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente

FUNZIONE AMBIENTE_PROVA Algoritmo che richiama la funzione trova_percorso e con i risultati trovati realizza il plottaggio grafico del robot in movimento nellambiente Realizza controlli per la scelta del passo da utilizzare nellistante in esame Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 preparazione dati base figura figure grid on axis([-5 5 -5 5 -2 7]) clf init sfondo(xstartystartxendyend) ASGAR b=transl(000) posiziono il robot nello start t=transl([ystart -xstart 0]) bara=bt barb=bt barc=bt bard=bt zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard center_position(barabarbbarcbard)

Appendice B 193

chiamo la funzione trova_percorso [coord path

path_uso]=trova_percorso(xstartystartxendyenddim1dim2ostxa1ostxa2ostya1ostya2ostxb1ostxb2ostyb1ostyb2ostxc1ostxc2ostyc1ostyc2) [p k]=size(path_uso) v=1 p1=[] cont=[] per ogni elemento del percorso while(vlt=p) in relazione al percorso espresso con singoli valori if (path_uso(v)== 0)start clf alzati7chiamo funzione di alzata del robot clf sfondo(xstartystartxendyend) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) v=v+1 else if (path_uso(v)== -2) cammina_sinistra for(i=04) faccio fare CINQUE passi a sx x spst a sx=02 hold on passo_sx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 2) cammina_destra for(i=04) faccio fare CINQUE passi a dx x spost a dx =02 hold on passo_dx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 1)in avanti c=0 k=v conto per quante celle non varia la x cioegrave qunti elementi devo andare avanti while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1)

Appendice B 194

n_passi=fix(distanza07)trasformo la distanza in passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo per eccesso il rimanente for(s=1n_passi) cammina_avanti con passi lunghi hold on passo_avanti_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_avanti con passi correttivi hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] else if (path_uso(v)==-1)indietro c=0 k=v calcolo x quanti elementi ho camminata indietro while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1) n_passi=fix(distanza07)definisco n_passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo rimanente for(s=1n_passi) cammina_indietro con passi lunghi hold on passo_indietro_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_indietro con passi correttivi hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] end end end end end

Appendice B 195

end axis([-1 7 -8 1 -2 7]) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]salvo percorso fino a prima

della correzione finale correzione finale mi dice quanto sono arrivata lontano dalle destinazione desiderata [m m1]=size(percorso_effettivo) distanza=[] distanza(1)=percorso_effettivo((m-3)4)-(yend) distanza(2)=percorso_effettivo((m-2)4)-(-xend) testo=SONO ARRIVATO A DISTANZA DALL OBIETTIVO DI X=distanza(1) y=distanza(2) in base al valore di distanza mi suggerisce cosa il robot dovrebbe ancora fare if ((distanza(2)gt=02)||(distanza(2)lt=-02)) dist_fin=distanza(2)02 testo=devo fare ancora abs(dist_fin)visualizzo il modulo if(dist_fingt0) testo=passi correttivi avanti else testo=passi correttivi indietro end dopo avermi detto cosa deve fare lo esegue if(dist_finlt0) for(i=0fix(abs(dist_fin))) hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end else for(i=0fix(abs(dist_fin))) hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end end end p1=[p1zampaabase] disegno i due percorsi IDEALE e EFFETTIVO percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]aggiungo la correzione al

percorso [n n1]=size(coord)percorso ideale for(k=1(n-1)) if((coord(k1)~= coord(k+11))ampamp(coord(k2)== coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k+11)][0 0

0]ColorgLineWidth2)

Appendice B 196

else if((coord(k1)== coord(k+11))ampamp(coord(k2)~= coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k1)][0 0

0]ColorgLineWidth2) end end end PERCORSO vero che invece fa il robottino il valore delle coordinate egrave giagrave giusto come segni for(k=0(m4)-2) if((percorso_effettivo((4k)+14) ~=

percorso_effettivo((4(k+1)+1)4))||(percorso_effettivo((4k)+24) == percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4(k+1)+1)4)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo(4k+24)][0 0 0]ColorbLineWidth2) else if((percorso_effettivo((4k)+14) ==

percorso_effettivo((4(k+1)+1)4))ampamp(percorso_effettivo(4k+24) ~= percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4k)+14)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo((4(k+1)+2)4)][0 0 0]ColorbLineWidth2) end end end

ii6 Collegamento diretto con il robot fisico

ii61 Creazione degli angoli da trasmetter agli attuatori

FUNZIONE ANGOLI_MOTORI2 Funzione che crea in output larray theta_motori generando le traiettorie di movimento per il corretto funzionamento dellattuazione dei motori fisici In questa versione gli angoli di movimento risultano essere piugrave accentuati per migliorare la stabilirtagrave Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 INSERIRE NUMERO FRAME AL SECONDO frame=2 con 50 sembra continuo

Appendice B 197

int=1(frame-1)definisco il numero di intervalli in cui scandire il movimento t=[0int1] definizione variabile di controllo x=0 if (int==1) x=1 end poszero=[0 0 0]posizione impressa nella pic pos_base_A=[0 -pi4 (-pi2)]posizione base delle zampe di destra pos_base_B=[0 pi4 (pi2)]posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento pos_av_A=[(pi4-02) -pi4 -pi2] pos_av_A2=[(pi3) -pi4 -pi2] modificata accentuo movimento in avanti pos_av_B=[(-pi4+02) pi4 pi2] pos_av_B2=[(-pi3) pi4 pi2] pos_ind_A=[(-pi4+02) -pi4 -pi2] pos_ind_A2=[(-pi3) -pi4 -pi2] pos_ind_B=[(pi4-02) pi4 pi2] pos_ind_B2=[(pi3) pi4 pi2] posizioni intermedie=punti di via per le cubiche pos_int_A1=[(-pi4+02) 0 0] pos_int_A2=[(-pi3) 0 0] pos_int_B2=[(pi4-02) 0 0] pos_int_B3=[(pi3) 0 0] calcolo dellle traiettorie tramite la cubica da posizione zero a posizione base parta=cubica_norm(poszeropos_base_At) partb=cubica_norm(poszeropos_ind_Bt) partc=cubica_norm(poszeropos_ind_B2t) movimento in avanti zampe di sinistra jc1=cubica_norm(pos_ind_B2pos_int_B3t) jc2=cubica_norm(pos_int_B3pos_av_Bt) jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_B2t) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint+x) jd_b=cubica_norm(pos_base_Apos_ind_A2int+x) jb_b=cubica_norm(pos_av_B2pos_base_Bint+x) jc_b=cubica_norm(pos_av_Bpos_base_Bint+x) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_A2t) jd1=cubica_norm(pos_ind_A2pos_int_A2t) jd2=cubica_norm(pos_int_A2pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_A2pos_base_Aint+x)

Appendice B 198

jdb=cubica_norm(pos_av_Apos_base_Aint+x) jbb=cubica_norm(pos_base_Bpos_ind_Bint+x) jcb=cubica_norm(pos_base_Bpos_ind_B2int+x) costruzione dei vettori di attesa per ogni zampa pos_attesaA=[]attesa della zampa nella posizione base pos_attesaB=[] pos_attindA=[]attesa della zampa nella posizione indietro pos_attindB=[] pos_attavA=[]attesa della zampa nella posizione avanti pos_attavB=[] vettori per le attese dei movimenti delle altre zampe for(i=1(2+2int)int) pos_attesaA=[pos_attesaApos_base_A]attesa zampa in posizione base pos_attesaB=[pos_attesaBpos_base_B] pos_attindA=[pos_attindApos_ind_A]attesa zampa in posizione indietro pos_attindB=[pos_attindBpos_ind_B] pos_attavA=[pos_attavApos_av_A]attesa zampa in posizione avanti pos_attavB=[pos_attavBpos_av_B] end costruzioni vettori composti per la camminata ja=[partapos_attesaApos_attesaAja_bpos_attindAja1ja2jab] jb=[partbpos_attindBjb1jb2jb_bpos_attesaBpos_attesaBjbb] jc=[partcjc1jc2pos_attavBjc_bpos_attesaBpos_attesaBjcb] jd=[partapos_attesaApos_attesaAjd_bjd1jd2pos_attavAjdb] vettore da mandare in output ogni colonna rappresenta un motore in pos 3 4 5 6 7 8 9 10 11 12 13 14 theta_motori=[jb(1) jc(1) jb(2) jb(3) jc(2) jc(3) jd(3) jd(2) ja(3) ja(2) jd(1) ja(1)] costruzione della scala per i valori minimi valori_minimi=(-pi2)ones(112) chiamata di funzione per spedire valori ai motori moveservos_mio(theta_motori0111valori_minimi) ho messo frame 8 e valore tra un valore sparato e laltro 008 va bene

ii62 Coollegamento diretto di comunicazione con la PIC

FUNZIONE MOVESEVOS La funzione che ricevendo in imput il vettore contenente le posizioni dei motori le elabora per trasformarle in valori compatibili con la PIC (0 255)e apre una connessione di comunicazione con essa La PIC che riceveragrave in input i dati tramite la connessione seriale (impostata sulla COM1 alla velocitagrave di 9600) interpreteragrave i dati nel seguente modo

Appendice B 199

- Il primo valore indica la modalitagrave (254 = movimento dei servo) - I successivi 16 valori compresi tra 0 e 255 indicano le posizioni parametri inputpos=la matrice theta costitutita da una o piugrave righe composta da 12 elementi riferiti ai 12 attuatori timestep=indica il tempo di invio tra una sequenza e laltra ovvero il tempo che intercorre tra ogni framerigha della matrice in ingresso(valore minimo 0111) min=vettore contenente i valori min assumibili dai motori per calcolare lo zero delle posizioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 pos egrave il valore della mia theta espressa solo con 12 valori Funzione che invia i valori in output sulla seriale function moveservos_mio(postimestepmin) max_servo_rotation = pi Quanto possono ruotare i motori (pi 2pi) [rowscols] = size(pos) Crea una connessione seriale try s = serial(COM1 BaudRate14400) sByteOrder = littleEndian sTerminator = CR set(s timeout timestep)posso mettere 1 fopen(s) Laperturachiusura della seriale avviene una volta per ogni matrice theta e non ad ogni rigainvio for i=1rows pos_rel = pos(i)-min posizione relativa alla pos minima Vengono aggiunti 4 valori fittizi nulli poichegrave la seriale egrave progettata per gestire 16 motori mentre theta ne contiene 12 theta16 = [0 0 pos_rel(18) 0 pos_rel(1012) pos_rel(9) 0] Converto in valori in valori da 0 a 255 per la PIC I valori inviati compaiono anche nella command line per verifica theta16 = round(theta16255max_servo_rotation) fwrite(s 254 uchar async) readyByte = fread(s 1 uchar) fwrite(stheta16 uchar async) Controlla se la PIC ha ricevuto theta (conferma tramite valore 33) confirmByte = fread(s 1 uchar) if confirmByte ~= 33 msgbox(Errore di invio dei comandi sulla serialeErroreerror) else Valori inviati correttamente sulla seriale end pause(timestep) end

Appendice B 200

fclose(s) clear ans catch Se fallisce la connessione avverti lutente Porta seriale non connessa end

  • Introduzione
    • Unitagrave funzionali di un robot mobile
    • Obiettivo del lavoro
    • Organizzazione della tesi
      • Sistemi di locomozione
        • Scopi di studio della locomozione su zampe
        • Differenze e analogie tra locomozione a zampe e su ruote
        • Analisi Trot gait di quadrupedi
          • Studio andatura quasi-statica
          • Studio andatura quasi-dinamica
          • Studio andatura dinamica trotto
              • Stato dellrsquoarte dei four legged robot
                • Panoramica dei Robot quadrupedi esistenti
                  • Collie-1 e Collie-2
                  • Quadrupede MIT
                  • GEO
                  • Quadrupede Kimura lab
                    • Algoritmi di controllo CPG for four legged robot
                    • Robocup e Sony Aibo
                      • Storia
                      • Descrizione dei sensori di Aibo
                        • Visione della macchina
                        • Riconoscimento audio
                        • Tatto
                        • Movimento e sviluppo
                          • Architettura del robot ASGARD
                            • Configurazione del robot quadrupede
                              • Struttura Meccanica
                              • Attuatori
                              • Materiale Policarbonato
                                • ASGRAD in numeri
                                • Hardware
                                • Software
                                • Stato Attuale
                                  • Modellizzazione cinematica e dinamica
                                    • Convenzioni e simbologia utilizzata
                                    • Sistemi di coordinate e trasformazioni
                                    • Cinemetica diretta
                                      • Definizione dei parametri di Denavit Hartemberg
                                      • Metodo di assegnamento secondo D-H
                                        • Cinematica inversa
                                          • Metodo gradiente
                                            • Gradient following
                                            • Faster gradient following
                                                • Calcolo delle traiettorie
                                                • Modello dinamico Newton-Eulero
                                                • Creazione di una mappa
                                                  • Espansione degli ostacoli traformazione delle distanze
                                                    • Scelta di un percorso Algoritmo di Dijkstra
                                                      • Sviluppo dellrsquoalgoritmo di camminata
                                                        • Metodologie di sviluppo
                                                        • Progetto di una andatura
                                                          • Lo spazio
                                                          • Stabilitagrave
                                                          • Tempo
                                                            • Andature implementate
                                                            • Catene cinematiche del robot
                                                            • Passo statico e dinamico
                                                            • Formule di forza e torsione sui giunti
                                                            • Anello di Controllo
                                                            • Map-building e scelta del gait
                                                              • Costruzione della mappa ed espansione degli ostacoli
                                                              • Algoritmo di ricerca del percorso minimo
                                                              • Realizzazione del gait
                                                                  • Sperimentazione e analisi dei risultati
                                                                    • Risultati statici
                                                                      • Passo reale effettuato
                                                                      • Misurazioni reali della pressione
                                                                      • Confronti di cinemetica inversa
                                                                        • Risultati dinamici
                                                                          • Caratteristiche negative dei motori
                                                                            • Velocitagrave
                                                                            • Alimentazione
                                                                                • Caratteristiche del percorso
                                                                                  • Conclusioni e sviluppi futuri
                                                                                    • Risultati raggiunti
                                                                                    • Progetti futuri
                                                                                      • Modifiche meccaniche
                                                                                      • Miglioramenti Hardware
                                                                                      • Miglioramenti Software
                                                                                        • Conclusioni finali
                                                                                          • Bibliografia
                                                                                          • Appendice A
                                                                                            • i Sensori nei robot a zampe disponibili sul mercato
                                                                                            • ii Dead Reckoning Stima della posizione
                                                                                              • ii1 Encoder Ottici
                                                                                              • ii2 Encoder ottici incrementali
                                                                                                • ii21 EL30 E-H-I Eltra srl
                                                                                                  • ii3 Encoder ottici Assoluti
                                                                                                    • ii31 Sensori ottici CORRSYS-DATRON
                                                                                                    • ii32 EAM Parallelo-SSI Eltra srl
                                                                                                      • ii4 Sensori Dopler
                                                                                                      • ii41 Robot Italy SRF04
                                                                                                        • iii Heading Sensor
                                                                                                          • iii1 Giroscopio meccanico
                                                                                                            • iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codi
                                                                                                            • iii12 Futaba Giroscopio FP GY 240 AVCS
                                                                                                              • iii2 Giro-bussola
                                                                                                              • iii3 Giroscopio-Girobussola a fibre ottiche
                                                                                                                • iii31 La funzione giroscopica
                                                                                                                  • iii4 Giroscopio piezoelettrico
                                                                                                                    • iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03
                                                                                                                    • iii42 Giroscopio Piezoelettrico Enc-03ja
                                                                                                                        • iv Sensori geomagnetici
                                                                                                                          • iv1 Bussola magnetica meccanica
                                                                                                                          • iv2 Bussola a effetto Hall
                                                                                                                            • iv21 1490 Digital Compass Sensor
                                                                                                                              • iv3 Bussola a magnetoreversiva
                                                                                                                                • iv31 Philips bussola AMR
                                                                                                                                  • iv4 Bussola magnetoelastica
                                                                                                                                    • iv41 Metglas 2605S2
                                                                                                                                        • v Sensori per la modellizzazione dellrsquoambiente
                                                                                                                                        • vi Sensori di distanza
                                                                                                                                          • vi1 Sensori basati sul tempo di volo
                                                                                                                                            • vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502
                                                                                                                                              • vi2 Sensore telemetro a sfasamento
                                                                                                                                                • vi21 LIDAR lsquoLight detection and Rangingrsquo
                                                                                                                                                  • vi3 Triangolazione
                                                                                                                                                    • vi31 IFELL Laser e Sistemi Srl
                                                                                                                                                      • Informazioni sui produttori
                                                                                                                                                      • Appendice B
                                                                                                                                                        • i Manuale drsquouso
                                                                                                                                                        • ii Codice generato
                                                                                                                                                          • ii1 Menu principale
                                                                                                                                                          • ii2 Confronto andatura quasi-stabile vs quasi-dinamica
                                                                                                                                                          • ii3 Calcolo della cinematica inversa
                                                                                                                                                          • ii4 Analisi del modello dinamico
                                                                                                                                                          • ii5 Map building
                                                                                                                                                            • ii51 Espansione degli ostacoli
                                                                                                                                                            • ii52 Calcolo del percorso
                                                                                                                                                            • ii53 Definizione dei movimenti per la deambulazione nellrsquoa
                                                                                                                                                              • ii6 Collegamento diretto con il robot fisico
                                                                                                                                                                • ii61 Creazione degli angoli da trasmetter agli attuatori
                                                                                                                                                                • ii62 Coollegamento diretto di comunicazione con la PIC
Page 6: Analisi e sviluppo di un simulatore per gait

Indice 6

ii Dead Reckoning Stima della posizione 140 ii1 Encoder Ottici 141 ii2 Encoder ottici incrementali 141

ii21 EL30 E-H-I Eltra srl 142 ii3 Encoder ottici Assoluti 142

ii31 Sensori ottici CORRSYS-DATRON 143 ii32 EAM Parallelo-SSI Eltra srl 144

ii4 Sensori Dopler 144 ii41 Robot Italy SRF04 146

iii Heading Sensor 146 iii1 Giroscopio meccanico 146

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice FT445533 147 iii12 Futaba Giroscopio FP GY 240 AVCS 149

iii2 Giro-bussola 149 iii3 Giroscopio-Girobussola a fibre ottiche 150

iii31 La funzione giroscopica 152 iii4 Giroscopio piezoelettrico 154

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03 155 iii42 Giroscopio Piezoelettrico Enc-03ja 155

iv Sensori geomagnetici 156 iv1 Bussola magnetica meccanica 157 iv2 Bussola a effetto Hall 158

iv21 1490 Digital Compass Sensor 159 iv3 Bussola a magnetoreversiva 159

iv31 Philips bussola AMR 160 iv4 Bussola magnetoelastica 160

iv41 Metglas 2605S2 161

v Sensori per la modellizzazione dellrsquoambiente 162

vi Sensori di distanza 162 vi1 Sensori basati sul tempo di volo 162

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502 163 vi2 Sensore telemetro a sfasamento 165

vi21 LIDAR lsquoLight detection and Rangingrsquo 165 vi3 Triangolazione 166

vi31 IFELL Laser e Sistemi Srl 168

INFORMAZIONI SUI PRODUTTORI 169

APPENDICE B 170

Indice 7

i Manuale drsquouso 171

ii Codice generato 172 ii1 Menu principale 172 ii2 Confronto andatura quasi-stabile vs quasi-dinamica 173 ii3 Calcolo della cinematica inversa 180 ii4 Analisi del modello dinamico 184 ii5 Map building 187

ii51 Espansione degli ostacoli 187 ii52 Calcolo del percorso 189 ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente 192

ii6 Collegamento diretto con il robot fisico 196 ii61 Creazione degli angoli da trasmetter agli attuatori 196 ii62 Coollegamento diretto di comunicazione con la PIC 198

Introduzione

Introduzione 9

Negli ultimi decenni continue evoluzioni scientifico tecnologiche hanno

portato ad un radicale cambiamento nella vita umana e nella realizzazione di

progetti un tempo considerati utopici Dalle ldquoali di Leonardordquo allrsquoemulazione

della natura lrsquouomo continua ad osservare lrsquoambiente che lo circonda e

analizzandolo accuratamente egrave riuscito a costruire macchine indipendenti che lo

aiutano nelle azioni quotidiane o che semplicemente lo supportano nelle abitudini

della vita di ogni giorno

Anche se lo stato dellrsquoarte della robotica egrave ancora lontano dal realizzare

dispositivi cosigrave complessi il notevole incremento della potenzialitagrave di calcolo

permette oggi la costruzione di robot dotati di un certo grado di autonomia Un

robot puograve essere considerato autonomo tanto piugrave egrave in grado di svolgere attivitagrave

individuali senza ausili esterni e di prendere decisioni proprie di fronte a

problematiche semplici

In tale contesto di ricerca svolge un ruolo essenziale lo studio delle

interazioni tra il robot e lrsquoambiente circostante Le fasi di ricerca e sviluppo si

possono suddividere in tre fasi principali

bull lrsquoosservazione del naturale comportamento dellrsquoanimale in esame e

lo stretto contatto tra le sue abitudini(camminata corsa trotto) e il

suo habitat

bull la costruzione del progetto e lo sviluppo del modello rendendo il

piugrave possibile congruente le caratteristiche fisiche naturali con la

strumentazione a noi disponibile

bull la realizzazione pratica del progetto

Introduzione 10

Figura 1 Fasi di Osservazione Progettazione Realizzazione

Lrsquoemulazione del movimento e la reazione del robot agli impulsi che

dovragrave essere generata deve risultare il piugrave possibile simile al comportamento

naturale

Unitagrave funzionali di un robot mobile

Un primo approccio con un robot mobile ci porta ad individuare le parti

fondamentali che lo compongono Possiamo effettuare una prima distinzione tra

ciograve che deve necessariamente essere on-board1 e ciograve che invece puograve essere svolto

anche da terminale remoto

Oltre ad attuatori e sensori che obbligatoriamente devono trovarsi sul

robot sarebbe importante che anche lrsquounitagrave di controllo si trovi su di esso affinchegrave

1 Posto sulla struttura meccanica del robot

Introduzione 11

i tempi di risposta e le dispersioni nel canale di comunicazione vengano

minimizzate Da notare lrsquoimportanza di encoder2 che permettono una stima

odometrica3 della posizione e chiudono lrsquoanello di retroazione dei motori questo

tipo di controllo egrave chiamato dead-reckoning[1]

Sul nostro robot attualmente sono posizionati solamente i motori di

attuazione e un sensore di pressione posto sotto una delle quattro zampe si

prevederagrave in futuro lrsquoincremento di sensori di cui viene fornita in seguito una

specifica (Apendice A) Questa miglioria sensoriale giagrave prevista nel progetto da

noi svolto permetteragrave la sostituzione di valori finora forzati come inputcon veri e

propri feedback4

Lrsquounitagrave di map-building che ora egrave delegata ad un compiuter remoto ha il

compito di generare le traiettorie e spedire i valori alla Pic di controllo dei

motori5 le sue potenzialitagrave potranno essere incrementate da dati sensoriali di

visione o contatto con lrsquoambiente esterno

Sensori che permettono una corretta scansione dellrsquoambiente possono

essere di molte tipologie tra i piugrave comuni sonar scanner laser telecamere fisse o a

bordo (anche se egrave molto importante tenere in considerazione il peso di tale

dispositivi) Lrsquoutilizzo di sensori differenti e algoritmi di visione richiedono un

grosso apporto di calcolo computazionale che se fatto on-board potrebbe

compromettere il funzionamento real-time6

2 sensori di rilevamento della posizione 3 forniscono posizione in base ai dati sensoriali a disposizione 4 dati sensoriali percepiti dallrsquoambiente e rinviati allrsquounitagrave di controllo 5 scheda di interfacciamento Pc-attuatori 6 reazione in tempi reali agli impulsi

Introduzione 12

Figura 2 Unitagrave funzionali che caratterizzano un robot mobile autonomo

Ulteriore elemento utile in un robot mobile egrave la sua localizzazione che

solitamente richiede calcoli con rilevatori odometrici Nel nostro progetto ci egrave

stato di grande aiuto lo sviluppo con il sistema Matlab che mantenendo in

memoria variabili matriciali ci ha reso possibile il monitoraggio del baricentro nei

singoli movimenti Tramite queste valutazioni siamo riusciti a ricavare i valori

dellrsquoerrore durante lo spostamento nelle mappe locali dellrsquoambiente create[2][3]

Una volta noto lrsquoambiente e la posizione degli ostacoli (consideriamo

lrsquoambiente noto) si passa a pianificare il moto al fine di svolgere i compiti richiesti

dallrsquoutente[4][5] Gli algoritmi di pianificazione si dividono in due grandi

categorie

bull generativi noti lrsquoambiente e la posizione del robot generano

traiettorie che minimizzano i percorsi e i tempi di reazione

aggirando gli ostacoli[6][7]

bull reattivi adattano il moto del robot a nuovi ostacoli

In generale occorre combinare entrambe le tipologie utilizzando un

pianificatore generativo sulla mappa dellrsquoambiente a disposizione e un algoritmo

Introduzione 13

reattivo nella fase di inseguimento della traiettoria per rendere il robot pronto a

reagire a cambiamenti anche improvvisi dellrsquoambiente

Obiettivo del lavoro

Scopo di tale tesi saragrave quello di realizzare algoritmi per la camminata di un

robot quadrupede al fine di permettere la realizzazione di movimenti il piugrave

possibile reali e la creazione di ipotetiche traiettorie che il robot potragrave

intraprendere in ambienti noti a priori

Al fine di testare il corretto funzionamento dei nostri risultati ci siamo

posti come obiettivo la costruzione di ASGARD (Automatic Stable Gait of A Robot

quaDruped) robot quadrupede in progetto al Politecnico di Milano e di effettuare

prove reali sul campo

Robot quadrupedi richiedono una particolare e complessa analisi di

stabilitagrave ed uno studio approfondito sul controllo del movimento Con il nostro

progetto vogliamo garantire stabilitagrave statica e dinamica e controllare lo sforzo

reale dei motori da noi utilizzati Permettere in sintesi ad ASGARD di vedere la

luce e compiere i sui primi passi

Inoltre in questa tesi verranno sviluppati un algoritmo di map-building e il

pianificatore del moto generativo (non avendo a disposizione sensori di feedback

non possiamo implementare il reattivo) utilizzando algoritmi a contenuto calcolo

computazionale che permetteranno al robot di deambulare in un ambiente noto

senza sovraccaricare il sistema ed effettuando movimenti generati dal sistema in

real time scegliendo lrsquoopportuno passo da eseguire

Organizzazione della tesi

In questo lavoro discuteremo i metodi per modellare e analizzare robot

mobili la principale analisi si concentra su robot quadrupedi dotati di arti

Introduzione 14

autonomi fino ad arrivare allrsquoimplementazione di ASGARD (Automatic Stable

Gait of A Robot quaDruped) il robot del Politecnico di Milano Lo scopo egrave fornire

uno strumento di analisi di stabilitagrave statica e dinamica per la realizzazione di una

camminata in un ambiente noto e una prima struttura di algoritmi che in futuro si

occuperanno del controllo e delle iterazioni con il mondo circostante

Tematiche discusse nei successivi capitoli

Capitolo 1

Motivazioni che ci hanno portato alla scelta di costruire un robot

quadrupede e le sue strategie di camminate possibili

Capitolo 2

Una breve panoramica sui robot quadrupedi esistenti enfatizzando le loro

caratteristiche salienti in termini di posture e sensori e i loro algoritmi principali di

controlloal fine di delineare un adeguato quadro entro cui porre il robot del

Politecnico di Milano

Capitolo 3

Analisi delle caratteristiche meccaniche e funzionali di ASGARD

Capitolo 4

Definizione degli obiettivi fissati per il progetto e presentazione della

teoria necessaria per il corretto svolgimento

Capitolo 5

Descrizione della parte di implementazione del progetto dallrsquoapplicazione

della teoria esposta nel capitolo precedente alla scrittura del codice

Introduzione 15

Capitolo 6

Discussione dei risultati e su alcune proveeseguite a simulatore e su altre

misurazioni pratiche realizzate sul robot fisico

Capitolo 7

Migliorie possibili effettuabili in futuro e conclusioni finali dellrsquoautore

Appendice A

Ricerca eseguita su sensori disponibili sul mercato che potranno essere

integrati nel progetto

Appendice B

Presentazione del manuale di utilizzo e parte di codice significativa

generato in linguaggio Matlab 65

Capitolo 1 Sistemi di locomozione

Sistemi di locomozione 17

11 Scopi di studio della locomozione su zampe

Esistono diverse motivazioni che giustificano lo studio di robot su zampe

tre le principali[8] troviamo

bull mobilitagrave fondamentale caratteristica di un robot egrave riuscire a

lavorare e svolgere le sue mansioni in tutte le tipologie di

terreni da quelli lisci ai piugrave ostili in presenza di scale o gradini

e riuscire se possibile ad evitare ostacoli non solo aggirandoli

ma anche scavalcandoli Veicoli a ruote sono la soluzione

adeguata se si pensa a terreni piani o con inclinazioni continue

ma la struttura del nostro pianeta permette il loro utilizzo in

meno della metagrave delle terre emerse Se invece pensiamo alla

crosta terrestre essa egrave quasi completamente raggiungibile da

esseri viventi (uomini animali) dotati di gambe

bull punti di appoggio isolati che ottimizzano il supporto e la

trazione e non richiedono un continuo contatto con il suolo

come succede per le ruote

bull sospensione attiva che disaccoppia la traiettoria delle gambe

da quella del corpo rendendo possibile cioegrave lo spostamento

senza sollecitazioni del carico nonostante pronunciate

sconnessioni del terreno

Queste caratteristiche in molti casi rendono indipendenti le capacitagrave del

robot dallrsquoasperitagrave del percorso dando la possibilitagrave di maggiore efficienza in

velocitagrave anche in ambienti molto ostili

Analizzare le spiccate doti di agilitagrave e mobilitagrave di animali non risulta un

facile compito essi sono in grado di muoversi velocemente e con sicurezza nelle

piugrave svariate condizioni ambientali

Sistemi di locomozione 18

Figura 3 Particolari posture animali in condizioni ambientali ostili

Nostro principio di studio risulta essere cercare metodologie di emulazione

di tali doti e successivamente applicarle a robot quadrupedi cercare i compiti

simili di locomozione e tramite questi risultati percepire problematiche e trovare

soluzioni per la mobilitagrave di strutture artificiali[9]

In particolare un robot su zampe necessita di

bull controllo del movimento dei giunti

bull controllo dellrsquoequilibrio

bull ciclicitagrave dellrsquouso delle zampe

bull punti di appoggio noti

bull calcolo della possibile traiettoria percorribile

I sistemi legged7 risiltano in diversi ambiti molto utili ai settori di ricerca

dallrsquoIntelligenza Artificiale e Sistemi di cooperazione multi-agente a semplici

robottini in grado di svolgere un unico ma non meno significativo task8 come la

pulizia di una superficie la raccolta di un oggetto o la perlustrazione di aree

pericolose con la relativa raccolta dati

7 termine inglese per rappresentare sistemi robotica dotati di quattro zampe 8 compitoincaricoobiettivo da raggiungere

Sistemi di locomozione 19

12 Differenze e analogie tra locomozione a zampe e su ruote

La principale caratteristica che diversifica le due tipologie di robot egrave la

gestione dei movimenti Per i sistemi legged la realizzazione di un passo include

al suo interno un insieme di variabili di controllo per il movimento corretto dei

giunti e la corretta sincronizzazione dei movimenti delle zampe al fine di ottenere

una adeguata andatura

Figura 4 Rover a ruote Figura 5 Rover Spirit sulla superficie di Marte[10]

Durante il passo inoltre bisogna mantenere il controllo sulla stabilitagrave e

sullrsquoequilibrio (controlli del tutto assenti in un robot a ruote) monitorare i valori

di torsione dei singoli motori accertandosi che essi non superino le soglie limite e

valutare il punto di appoggio futuro Una volta costruito un passo il compito

ricade nel continuare a ciclarlo opportunamente al fine di portare a termine il

compito richiesto superando eventuali dissestamenti del terreno o ostacoli

Un robot a ruote invece egrave in grado solo di muoversi su terreni lisci e

richiede un maggior spazio per effettuare semplici manovre Di fronte a ostacoli

anche minimi il robot a ruote dovragrave effettuare la pianificazione di una traiettoria

Sistemi di locomozione 20

per aggirare lrsquoostacolo e impiegheragrave un tempo di reazione maggiore Se un robot

a ruote si troveragrave di fronte ad uno ostacolo saragrave costretto ad attivare calcoli

opportuni che gli permetteranno di costruire una strada alternativa per il

superamento dellrsquoimprevisto Un robot a zampe invece potragrave attivare gli attuatori

al fine di scavalcare se possibile lrsquoostacolo

Figura 6 Diverse strategie per oltrepassare un ostacolo

Altro aspetto di differenziazione tra le due tipologie di robot risulta essere

la mobilitagrave della piattaforma Alcune volte risulta essere utile mantenere il carico

in una inclinazione prestabilita (ad esempio il trasporto di un grave o il

mantenimento del centro ottico di una telecamera) Nei robot a ruote il corpo egrave

solitamente solidale con lrsquoasse delle ruote e si mantiene ad una distanza fissa dal

terreno seguendolo in ogni sua inclinazione Questo risulta essere una

caratteristica utile su terreni pianeggianti ma risulta sconveniente su terreni

curvilinei In questa circostanza risulterebbe utile disaccoppiare la piattaforma con

le ruote motrici al fine di mantenere costante lrsquoinclinazione del corpo principale

Questo disaccoppiamento egrave giagrave presente nella struttura dinamica del robot

a zampe dove la postura della piattaforma risulta essere la somma di due

contributi quali

bull scelta dei punti di appoggio

bull posizione cinematica assunta da ogni singola zampa in riferimento

alle caratteristiche del terreno

Sistemi di locomozione 21

Attraverso cioegrave la posizione delle zampe il robot egrave in grado di

ammortizzare le sconnessioni del terreno e dentro i limiti cinematici e di

mantenere lrsquoasse prescelto

Figura 7 Mobilitagrave della piattaforma

Esistono comunque analogie che accomunano le due strutture di robot

esistenti la principale risulta essere la ciclicitagrave dei movimenti Nei sistemi legged

dopo aver trovato un corretto movimento per la realizzazione di un passo egrave da

ricercare il periodo in cui esso dovragrave ripetersi al fine di ottenere una camminata

con andatura corretta Per un robot a ruote il periodo risulta invece essere

semplicemente la rotazione della ruota attorno al proprio asse A paritagrave di

ripetizione di un ciclo il risultato deve essere il ritorno nella posizione iniziale e

lrsquoincremento dello spazio di lavoro

Ulteriore analogia egrave il sistema odometrico Su ogni robot sono solitamente

posizionati un discreto numero di encoder per il rilevamento della posizione Nei

robot a ruote essi sono posizionati sullrsquoasse delle ruote mentre nei legged essi

sono inseriti nelle articolazioni dove sono posizionati i motori Si possono notare

differenze consistenti a livello di calcoli effettuati ma entrambi forniscono come

risultato la posizione effettivamente raggiunta Di particolare interesse per i

calcoli egrave la sequenza di comandi dati in input al variare di essi varia la postura

finale assunta

Sempre riguardo lrsquoodometria altra caratteristica comune egrave il calcolo

dellrsquoerrore esso viene calcolato in relazione ai valori di feedback dei sensori Si

puograve presentare di due tipologie

Sistemi di locomozione 22

bull sistematico dovuto a caratteristiche proprie meccaniche del robot

bull non sistematico dovuto alle iterazioni con lrsquoambiente circostante

Errori e cause di errori verranno trattati nei capitoli successivi

13 Analisi Trot gait di quadrupedi

Tra gli esseri viventi dotati di zampe presenti in natura[11] la nostra

analisi si concentra su animali che deambulano su 4 arti Essi rappresentano una

classe animale che sfrutta particolari doti fisiche e mentali per regolare la stabilitagrave

del corpo e lrsquoagilitagrave dei movimenti

Vengono presentate di seguito alcuni gait9 di quadrupedi su terreni piani e

lrsquoanalisi dei principali fattori che ne determinano le caratteristiche e le prestazioni

in termini di velocitagrave[12]

Le principali caratteristiche sullo studio di andature sono

bull Periodicitagrave il moto prevede la sequenza ciclica del movimento di

ogni singola zampa (passo)Ogniuna di esse egrave regolata da tre

variabili di giunto ciascuna delle quali segue a sua volta una

traiettoria periodica Complicazioni ulteriori emergono se si

considerano virate o terreni sdrucciolevoli

bull Stabilitagrave caratteristica di maggiore importanza nel caso di

locomozione a zampe essa egrave assicurata quando il baricentro del

robot cade allrsquointerno del poligono di stabilitagrave ovvero quando il

margine di stabilitagrave egrave maggiore di zero Il margine di stabilitagrave

dipende dalla posizione in cui il robot si trova se fermo o in

movimento Se il robot egrave fermo tale margine si calcola come la

distanza piugrave breve dal baricentro al perimetro del poligono di

9 Andatura con passi specifici

Sistemi di locomozione 23

stabilitagrave in qualsiasi direzione durante il moto si considerano solo

le distanze nella direzione del moto (margine di stabilitagrave

longitudinale)

bull Traiettoria della zampa la traiettoria dellrsquoorgano terminale di una

zampa (piedino) si compone di tre fasi principali

bull alzata

bull avanzamento

bull appoggio

la prima ha il compito di sollevare il piede da terra la seconda

permette lrsquoavanzamento della zampa ed infine nella terza il piede

viene riposizionato a terra nella posizione base per reiterare il

procedimento

In relazione al profilo scheletrico di un vertebrato mammifero

generalizzato esso egrave in grado deambulare in diverse andature[13]

Non troppo dissimile dallrsquoarchitettura di cani cavalli o gatti il nostro robot

presenta perograve lrsquoarticolazione della spalla ruotata di 90 gradi rispetto al mammifero

comune questo gli permette di mantenere un notevole grado di stabilitagrave in quanto

incrementa il suo possibile convex hull10 ma ci obbliga a studiare un nuovo tipo

di movimento per il passo base

Inoltre il piede di appoggio risulta essere di notevoli dimensioni rispetto

alla zampa al fine di sopportare ottimamente il peso del corpo sovrastante

In base alla stabilitagrave durante il movimento la andatura di un 4-legged puograve

essere classificata in tre diverse classi principali

bull andatura quasi statica

bull andatura quasi dinamica

bull andatura dinamica

10 poligono che rappresenta la base drsquoappoggio

Sistemi di locomozione 24

131 Studio andatura quasi-statica

Una andatura si dice quasi-statica se il centro di massa della nostra

struttura cade allrsquointerno del poligono di stabilitagrave che si viene a creare

congiungendo i punti di appoggio Con questa tipologia di camminata siamo certi

che il robot assorbiragrave le possibili perturbazioni del moto con un piugrave ampio

margine di stabilitagrave

uesta andatura egrave quella riprodotta in laboratorio sul nostro soggetto le

ragioni che ci hanno portato a questa scelta oltre ai vantaggi precedentemente

citati sono

bull moderata velocitagrave

bull buona risposta in tempo degli attuatori

Per implementare le fasi di camminata abbiamo analizzato ed elaborato il

gait 4-time11 di un mammifero comune essa si basa su quattro movimenti un LF

(di sinistra-anteriore) un RR (di destra-posteriore) una RF (di destra-anteriore)

un LR (di sinistra-posteriore) quindi una ripetizione

In questo movimento si noti che lrsquoequilibrio e il supporto egrave effettuato dal

LR+RF ldquodiagonalerdquo mentre i piedini di RR e di LF sono sospesi [ posizioni 1 2 ]

e dalla diagonale opposta per gli altri 2 piedini [ posizioni 5 6 ]

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

11 Gait 4-time camminata divisa in quattro fasi

Sistemi di locomozione 25

Figura 8 Nei nove diagrammi viene descritta la completa sequenza di camminata

partendo con la zampa sinistra Le posizioni 1 e 2 mostrano la diagonale destra 3 diagonale

destra e anteriore sinistra 4 laterale sinistra 5 e 6 diagonale sinistra 7 diagonale sinistra e

anteriore destra 8 laterale destra 9 ritorno nella posizione di partenza

Questa andatura presenta un tipico movimento sinusoidale del baricentro

del corpo nel piano trasversale

In base alla configurazione del nostro robot esso non presenta una colonna

vertebrale snodabile lrsquoanalisi prodotta ci ha potato alla creazione di una andatura

che non modifica lrsquoasse su cui giace il centro di massa

132 Studio andatura quasi-dinamica

La seconda classe di camminata raggruppa andature per cui la proiezione

del centro di massa cade in alcune fasi del passo sul lato del poligono di stabilitagrave

Sistemi di locomozione 26

In queste situazioni un incorretto posizionamento degli attuatori o una

minima perturbazione potrebbe causare una perdita di stabilitagrave per questo bisogna

intervenire in tempistiche ridotte trovando soluzioni che riducano gli effetti

La velocitagrave che si riesce ad ottenere deriva da un passo di camminata

leggermente piugrave ampio eseguito in un tempo minore di frame12 pur mantenendo

quasi inalterate le fasi di esso

133 Studio andatura dinamica trotto

La classe di andatura dinamica rappresenta invece lrsquoandatura piugrave veloce

presente in natura[14] essa si basa sul concetto di tempo di volo in cui solo due

zampe o addirittura tutto il corpo non tocca il terreno andatura tipica nella corsa

di mammiferiVenendo a mancare il triangolo di appoggio bisogna trovare un

abile compromesso tra inerzia velocitagrave e potenza muscolare al fine di evitare la

perdita di equilibrio e lo slittamento delle zampe sul terreno

12 istanti temporali in cui si attua lrsquoanalisi completa

Sistemi di locomozione 27

Figura 9 Nelle posizioni 1 e 3 vengono mostrate la diagonale destra e sinistra come

supporto al trotto Le posizioni 2 e 4 mostrano il momento di flying trot che egrave raramente

osservabile a causa della velocitagrave dei movimenti Le posizioni 5 e 6 mostrano un passo di

corsa piugrave tranquillo che puograve essere eseguito da un cane stanco o non troppo motivato

Capitolo 2 Stato dellrsquoarte dei four legged robot

Stato dellrsquoarte dei four legged robot 29

21 Panoramica dei Robot quadrupedi esistenti

In questo capitolo verragrave presentata una carrellata dei moderni sviluppi

riguardanti la 4-legged robotics13

Proponiamo i progetti piugrave significativi a cui ci siamo riferiti per lrsquoanalisi e

lo sviluppo della camminata e i robot piugrave moderni che vengono utilizzati come

banchi di prova per progetti di intelligenza artificiale e multi-collaborazione che ci

potranno essere utili per evoluzioni future del nostro ASGARD

211 Collie-1 e Collie-2

Giagrave dalle prime ricerche nellrsquoambito della robotica umanoide la

realizzazione di una camminata naturale egrave stata ampiamente presa in

considerazione Nella seconda metagrave degli anni ottanta abbiamo trovato il primo

utilizzo di DC servos per la realizzazione di prototipi per la camminata dinamica

Collie-1 e la sua evoluzione Collie-2[15] Basandosi sul concetto di camminata

suddivisa come statica e dinamica lo studio ha messo in evidenza come la

camminata dinamica richiede un surplus di energia e una maggior velocitagrave di

esecuzione ponendo particolare interesse ai valori di stabilitagrave velocitagrave massima e

consumo energetico che sono alcuni dei parametri anche da noi presi in

considerazione nel nostro progetto Nello sviluppo di Collie le relazioni tra questi

criteri e i parametri (gait speed period stride length of the leg joint angles etc)

hanno portato alle seguenti deduzioni riguardanti al camminata dinamica

a) Minore egrave il periodo in cui avviene la camminata migliore egrave la stabilitagrave del

quadrupede

Ersquo desiderabile camminare con un lungo periodo e compiendo ampi passi

per riuscire ad accrescere la velocitagrave massima

13 settore della robotica che si occupa di robot a 4 zampe

Stato dellrsquoarte dei four legged robot 30

b) Crsquoegrave un periodo in cui la velocitagrave egrave massima

c) Crsquoegrave un periodo in cui si minimizza il consumo energetico per fornire

velocitagrave

d) Trot gai14t egrave desiderabile quando la prioritagrave egrave in primo piano rispetto al

consumo energetico

Pace gait15 egrave raccomandata quando la prioritagrave energetica egrave al di sopra

della velocitagrave massima

Gli esperimenti per appurare la validitagrave di queste affermazioni sono stati

effettuati con il robot Collie-2 che fisicamente presenta 3 joint16 attorno allrsquoasse di

pitch (beccheggio) e 2 joint attorno allrsquoasse di roll (rollio) per ogni gamba con un

potenziometro montato per ogni gamba e motori DC servos sistemati sui 3 joint

sullrsquoasse trasversale e 1 joint sullrsquoasse sagittale

Figura 10 Collie 2 vista semi

frontale Figura 11 Collie 2 di

fronte

Figura 12 camminata vista

laterale

14 andatura veloce di trotto 15 camminata tranquilla da crocera non veloce 16 giunto

Stato dellrsquoarte dei four legged robot 31

212 Quadrupede MIT

Realizzato al MIT (Massachusset Institute of Technology) negli anni 1984-

1987 [16] egrave composto da un unico grado di libertagrave per zampa a cui si aggiunge un

meccanismo a basso livello di coordinazione del piedino Ersquo stato sviluppato per

esplorare il funzionamento su quatto zampe e le transizioni tra tipologie diverse di

gait quali il trottino (accoppiamento zampe diagonali) pacing (accoppiamento

laterali) bounding (accoppiamento anteriore posteriore) fornendo consistenti

informazioni sulle diverse posture[17]

Figura 13 Immagine laterale camminata

robot dequadrupe del MIT

Figura 14 basato su llo stesso

meccanismo del robot del MIT Scout

prodotto allrsquoumiversitagrave di Monteal

sviluppa ampliamente il concetto di

bounding gait[18]

213 GEO

Iniziata la costruzione del progetto nel 1994 a USC GEO I [19]

presentava due grandi innovazioni una spina dorsale flessibile e zampe

riconfigurabili Queste due caratteristiche permettono al robot di emulare la

camminata di una salamandra cioegrave di far seguire al proprio baricentro un

andamento sinusoidale quando invece una zampa egrave posizionata sotto il corpo il

robot puograve deambulare come un comune mammifero quale ad esempio il cane

Stato dellrsquoarte dei four legged robot 32

Questa particolare possibilitagrave di cambiamento di tipologia di camminata egrave

rimasta nellrsquoevoluzione del modello GEO II che risulta essere molto piugrave leggero

del suo predecessore dotato si sensori di forza nei piedi e possibilitagrave di

interazione con il mondo esterno tramite reti neurali

Figura 15 GEO I nel superamento di un

ostacolo

Figura 16 GEO II in posizione base

214 Quadrupede Kimura lab

Dal Giappone e piugrave precisamente dal laboratorio di Kimura[20]

compaiono i robot piugrave avanzati in grado di camminare su terreni estremi quali

ciottolati erbe sparse o pavimentazioni sconnesse utilizzando sensori di visione I

principali in evoluzione sono Tekken-II azionato da servomotori e pilotato

manuale usando un regolatore radiofonico Futaba Le particolaritagrave di questo robot

sono il giunto della caviglia passivo con il meccanismo molla-smorzatore17 il

posizionamento di un meccanismo della molla intorno al giunto del ginocchio

dellrsquoanca al fine di ridurre il consumo di energia Sul corpo presenta diversi

sensori Tasso-girobussola per 3 ascie e 2 inclinometri per le ascie del rullo e del

passo 1 sensore per il contatto di asse egrave fissato su ogni piedino Della stessa

famiglia adatti perograve a terreni scoscesi e ondulati ricordiamo inoltre Patrush I e

Patrush II rispettivamente degli anni 2000 e 2001

17 principio fisico che attenua le sollecitazioni e incamera energia che puograve essere

successivamente sfruttata

Stato dellrsquoarte dei four legged robot 33

Figura 17 Patrush I vista

semifrontale

Figura 18 Tekken II vista laterale

22 Algoritmi di controllo CPG for four legged robot

Testato successivamente sulle potenzialitagrave di GEO II egrave stato realizzato nel

2002 il modello CPG (Central Pattern Generation)[21] che sostituisce lrsquounitagrave

centrale del controllo del sistema nervoso presente negli animali Esso propone

che lrsquoadattamento di un animale allrsquoambiente circostante puograve essere modellizzato

come un modulo adattativo (AMs Adaptative Modules) che agisce su un sistema

distribuito di oscillazioni chiamate Adaptative Ring Rules (ARRs) che simulano

semplici riflessi Lrsquoutilizzo e la costruzione di questa rete neuronale ha mostrato

come un sistema puograve auto programmarsi attraverso interazioni con lrsquoambiente

Lrsquoadattamento fa emergere spontaneamente alcuni stati discreti come il

movimento del busto la scelta tra un passo corto e la camminata da crociera e le

coordinate per un singolo giunto

Il risultato di questo modello egrave che ha permesso a un quadrupede di

imparare a camminare in pochi minuti

Basandosi su innumerevoli trattati sullo sviluppo degli impulsi del sistema

nervoso dei mammiferi (Bekoff 1985Cohen 1988) Lewis egrave riuscito a riprodurre

una rete che tenta di emulare le fasi standard e principali del comportamento

Stato dellrsquoarte dei four legged robot 34

animale in relazione ad alcuni stimoli esterni e di riuscire a comunicare questi

impulsi nervosi ai relativi attuatori per creare lrsquoazione Tuttora diversi studi sono

ancora in atto per perfezionare questa tecnica introducendo apprendimento per

rinforzo

Si puograve modellizzare il CPG come una rete di unitagrave funzionali chiamate

unit CPGs (uCPGs) Riferendosi alla figura 18 2 uCPGs sono denominate con

Tw+ e Tw- insieme esse producono il coordinamento principale del robot e

giocheranno un ruolo base nellrsquoacquisizione della camminata Alle uCPGs sono

collegati archi che rappresentano il collegamento ai muscoli estensori delle

diverse articolazioni Questi archi rendono possibile quindi il collegamento delle

unitagrave del busto con quelle del ginocchio etc

Lrsquooutput dei muscoli viene trasformato attraverso una funzione di uscita in

comandi di movimento Questi a loro volta sono ricombinati per creare impulsi

compatibili con i servos dellrsquoancae del ginocchio

Sono introdotti nella rete ulteriori parametri che servono per adattare la

rete a diversi robot

Stato dellrsquoarte dei four legged robot 35

Figura 19Organizzazione del sistema di controllo Il sistema di controllo del robot

presenta una rete di uCPG Ogni cerchio presenta un uCPGs Connessionitrasmissione di

informazioni sono visualizzate come freccie Ogni funzione Ψ converte una informazione in

comandi per i motori I comandi dei motori sono combinati insieme per produrre una

sequeza di livelli di posizione per ogni anca e ginocchio Abbreviazioni KFmuscolo flessore

ginocchio KEmuscolo estensore ginocchio HEmuscolo estensore dellrsquoanca HFmuscolo

flessore dellrsquoanca TW+torsione positivo TW-torsione negativo

Per definire meglio il controllo sono stati realizzati schemi che si basano

su controlli di posizione sulla reattivitagrave dei riflessi e sullrsquoadattamento della

torsione al modulo ambiente

Per realizzare lrsquoultimo modello egrave necessario introdurre ARRs cioegrave il

modulo adattativo dellrsquoambiente attraverso un ulteriore unitagrave computazionale

costituita da tre componenti

Stato dellrsquoarte dei four legged robot 36

Figura 20 Lrsquouso di un innato interno modello per lrsquoadattamento di CGPs La figura

mostra i componeti di un AM

Il primo componente egrave il Forward Model il quale usa una efficiente copia

di una uCPGs per predire il feedback sensoriale il secondo il Comparison egrave a tutti

gli effetti un comparatore tra il feedback sensoriale e il feedback atteso il terzo egrave

una regola che utilizza il risultato della comparazione per modulare la uCPGs in

questione

LrsquoARRs genera un segnale di output che viene indirizzato agli attuatori o a

semplici circuiti che seguono per il controllo sensoriale e rimane in attesa di

ricevere un segnale di ritorno proveniente dai sensori Il segnale di output puograve

anche essere emesso nellrsquoambiente come decisone di movimento per eventuali

robot ad esso sottomessi La creazione di movimenti puorsquo cosigrave migliorare

introducendo nuovi modelli di controllo quali adattamento della lunghezza del

busto per il coordinamento delle gambe e fase di aggiustamento

Questi modelli sono stati realizzati su robot che presentano caratteristiche

mostrate nella seguente figura e che possono essere ritrovate in GEO II

Stato dellrsquoarte dei four legged robot 37

Figura 21 Postura dei Principali Rilessi Tre tipi di simmetria sono applicati per la

distribuzione del pesoDiagonal comparazione dei piedi diagonali Anteriore verso posteriore

comparazione dai piedi anteriori ai posteriori e sullo Stesso lato comparazione dei piedi

sulla destra rispetto quelli sulla sinistra Il numero vicino ad ogni piede denota il numero del

piede

La parte per noi piugrave interessante risulta essere la postura dei riflessi statici

I risultati mostrano come viene distribuito il peso del robot sui piedi di appoggio

Inizialmente quando il robot egrave appoggiato completamente al suolo il peso risulta

essere equamente distribuito In altri casi appariranno disturbi causati da carichi

aggiuntivi come posizione del cavo di alimentazione o piugrave semplicemente alzata

della zampa per compiere un passo

Stato dellrsquoarte dei four legged robot 38

Figura 22Postura dei Riflessi Grafico che mostra la distribuzione del peso rulle

zampe del robot

Questo grafo ci rappresenta come la variazione della postura del robot

influenzi i carichi su ciascuna zampa nella nostra analisi ritroveremo un grafico

simile al precedente quando analizzeremo le forze agenti sui motori nel modello

di Newton-Eulero GEO II presenta perograve un vantaggio considerevole durante i

movimenti il robot attua una fase di ldquoaggiustaggiordquo in cui riassesta il busto per

riequilibrare la distribuzione del peso su tutte le zampe non creando scompensi

23 Robocup e Sony Aibo

RoboCup[22] egrave unrsquoiniziativa internazionale di formazione e di ricerca Egrave

un tentativo di promuovere lrsquoAI18 e lrsquoautomatismo intelligente Basati sul concetto

che una squadra di robot giochi a soccer allrsquointerno di ambienti reali o simulati le

tecnologie che vengono coinvolte devono comprendere nei loro progetti i principi

di agenti autonomi collaborazione multi-agente aquisizione di strategie

ragionamento in tempo reale e automatismo

18 Intelligent Agents

Stato dellrsquoarte dei four legged robot 39

Ersquo in RoboCup che si egrave vista la prima squadra fornita di gambe

Largamente utilizzati per la realizzazione di sistemi multiagenti dotati cioegrave di

complessi programmi di intelligenza artificiale sono i famosi Aibo Sony

Figura 23 Robot Aibo Sony durante una partita alla Robocup

Aibo egrave il miglior prodotto della Sony 4-legged robot essa coinvolge le piugrave

moderne tecnologie per concepire un amico completamente autonomo per

accompagnare ed intrattenere lrsquouomo nella vita giornaliera

Il centro di intelligenza artificiale di Aibo egrave il software Mente2 situato su

una memoria stick removibile Esso controlla il suo comportamento le sue abilitagrave

e le relative caratteristiche che possono essere incrementate con un corretto

addestramento da parte dellrsquoutente Aibo infatti implementa al suo interno un

algoritmo di apprendimento per rinforzo

Nella vita giornaliera questo software gli permette di intrattenere e

comunicare con chiunque riconoscendo intelligentemente i volti e le voci dei suoi

padroni

Per le sue particolari proprietagrave quali vedere sentire registrare suoni

oggetti e facce e riflettere una vasta gamma delle emozioni attraverso la relativa

faccia Condur-guidata19 Aibo egrave in grado di familiarizzare con ogni tipo di

ambiente ambiente e trasformarsi in ogni senso in un individuo vero e unico

19 pilotati da software intelligenti diversi led rappresentano espressioni emotive

Stato dellrsquoarte dei four legged robot 40

231 Storia

Ma vediamo come nasce Aibo[23]Le sue radici risalgono agli inizi degli

anni novanta quando gli ambienti tecnologici erano agli albori riguardo la

creazione di applicazioni per lrsquointrattenimento umano Fu Dr Doi il capo dell

Sonyrsquos Digital Creature Lab ad implementare in un unico automa i nuovi

progressi in termini di processori intelligenza artificiale riconoscitori vocali e

tecnologie di visione al fine di creare un robot autonomo

Durante la fase iniziale nel 1992 gli ingegneri della Sony progettarono

alcuni importanti cambiamenti radicali Nei primi anni novanta robot con camere

e ruote erano riprogrammati per ogni attivitagrave o task in cui essi venivano impiegati

I nuovi progetti includevano la capacitagrave di un robot di deambulare su zampe e

lrsquointerazione con programmi di IA capaci di interagire con alcuni organi sensoriali

come il tatto la vista e il suono Solo verso il 1997 il primo prototipo portograve alla

luce gli enormi sforzi di ricerca e sviluppo Dr Doi indirizzograve tutta la sua ricerca

nella costruzione e nel design di un amichevole robot autonomo Il suo primo

prototipo aveva sei gambe ed era il primo passo per la creazione di un robot a

zampe Dopo questo primo rudimentale modello il team Sony studiograve un design

innovativo e analizzograve ciograve che il robot poteva o non poteva fare per incrementare le

potenzialitagrave celebrali ed espandere le funzionalitagrave hardware e software

Lrsquooriginale modello Aibo ERS-110 fu presentato nel 1999 e rapidamente

si diffuse in tutto il mondo con lo slogan di essere un grande compagno di giochi e

intrattenimento entrando anche a far parte del guinnes dei Primati Lrsquo Europa vide

la sua apparizione il 26 Ottobre 1999 Solo un mese dopo dallrsquoenorme successo

riscontrato fu presentato un ulteriore modello ERS-111 per il target mondiale

Nellrsquoottobre del 2000 venne alla luce la seconda generazione di Aibo ERS-

210 che inglobava miglioramenti di mobilitagrave sensori di tatto led facciali

programmi di risposta sensoriale al mondo esterno tramite espressioni visive

funzioni di memorizzazione delle parole e riconoscitore vocale[24]

Stato dellrsquoarte dei four legged robot 41

I modelli LATTE e MACARON (ERS-311 a ERS-312) entrarono a far parte

della famiglia nel Settembre 2001 i loro nomignoli li rendono dolci e adorabili da

coccolare includendo comunque tutte le caratteristiche dei loro predecessori

Lrsquo8 Novembre 2001 egrave nato lrsquoultimo membro della famiglia Sony che

include le piugrave sofisticate performance e capacitagrave Il modello ERS-220 dotato di un

look futuristico presenta al suo interno una moltitudine di azioni altamente

avanzate e un alto numero di luci e sensori che lo fanno diventare il modello piugrave

sofisticato di robot quadrupede sul mercato[25]

Stato dellrsquoarte dei four legged robot 42

Sviluppo dei modelli Aibo dai primi anni novanta a oggi

Robot Sony Aibo modello a sei zampe

Robot Sony Aibo ERS-110

Robot Sony Aibo ERS-111

Robot Sony Aibo ERS-210

Robot Sony Aibo ERS-31x

Robot Sony Aibo ERS-220

Stato dellrsquoarte dei four legged robot 43

Figura 24 Zoom sulle caratteristiche presenti negli ultimi ritrovati

Specifikace

bull Head touch sensor bull Color Camera bull Stereo microphone bull Speaker bull Pause button bull Back sensor bull Lithium ion battery pack bull Tail sensor bull Memory Stick slot for AIBO bull PC card slot ndash bull slot pro PCMCIAPC-kartu

CPU 64-bitovy RISC procesor memory 32MB SDRAM weight - 15 kg ( baterie a Memory Stick (approx33lb)) dimension 152x266x274mm

Stato dellrsquoarte dei four legged robot 44

232 Descrizione dei sensori di Aibo

Il robot egrave stato progettato in modo da assomigliare ad un vero e proprio

essere vivente Esso egrave quindi dotato di svariati sensori mediante i quali puograve

comunicare con lrsquoambiente e reagire agli stimoli esterni[26]

Il sistema di controllo di Aibo utilizza i microprocessori per controllare

lrsquoinput dai dispositivi quali

bull Macchina fotografica del video a colori CCD20

bull microfono stereo

bull sensore termometrico

bull sensore infrarosso

bull sensore giroscopico di accelerazione

2321 Visione della macchina

Aibo ha una macchina fotografica digitale a colori montata nella sezione

ldquotestardquo I dati di immagine da questa macchina fotografica sono vitali nella

generazione dellrsquoesperienza interattiva tra il robot e il mondo Il video input egrave

analizzato per identificare lrsquooggetto o ldquoun punto caldordquo i motori robot spostano la

testa per dare lrsquoapparenza che il Aibo stia osservando Il robot inoltre egrave fornito di

un sensore infrarosso di distanza per rilevare gli ostacoli e per evitare di collidere

con essi

20 Charge Coupled Device attraverso una piastrina di silicio dotata di sensori le immagini

vengono digitalizzate in relazione a posizione colore e intensitagrave

Stato dellrsquoarte dei four legged robot 45

Figura 25 CCD camera a colori

Figura 26 Microfoni montati sugli assi

2322 Riconoscimento audio

Aibo egrave dotato di un accoppiamento di microfoni uno da ogni lato della

calotta cranica Questi generano unrsquoimmagine stereo del suono ricevuto che aiuta

nel localizzare la fonte di emissione Ersquo presente un regolatore di distanza per

permettere al robot di porre limiti per frasi da riconosce come ordini

2323 Tatto

Il rilievo sensibile al tocco sulla parte superiore della testa del Aibo egrave un

altro meccanismo attraverso cui riceveragrave input sensoriali In base a come questo

sensore egrave toccato un Aibo riceve i dati che registrano le risposte positive o

negative rispetto ldquoal suo comportamento precedenterdquo imitando le dimostrazioni

affetto o rimprovero

Stato dellrsquoarte dei four legged robot 46

Figura 27 Il bottone blu egrave uno switch per il sensore di pressione

2324 Movimento e sviluppo

Molti dei movimenti del Aibo sono simili a quelli di un animale domestico

un cane o un gatto Un Aibo accede e fa funzionare algoritmi di movimento che

dettano il moto delle relative membra controllando i motori siti nei piedini nella

testa e nella coda In modo indipendente e autonomo il robot si muove attraverso

parecchie fasi per un periodo di tempo Quando ldquosupportatordquo dal suono (comandi

o musica) riesce ad intraprendere movimenti a lui noti e ad imparare nuove

posture piugrave specializzate come sottoposto ad un vero e proprio addestramento

Figura 28 Particolare coda

Figura 29 Sensori del piedino

Capitolo 3 Architettura del robot ASGARD

Architettura del robot ASGARD 48

31 Configurazione del robot quadrupede

Analizziamo ora le caratteristiche del quadrupede realizzato presso lrsquoAir

Lab21 del Politecnico di Milano Nei paragrafi che seguono verranno descritte le

sue caratteristiche implementative che ne hanno permesso la realizzazione e il

controllo

Il progetto egrave stato avviato di recente di conseguenza il robot presenta

ancora notevoli problematiche di stabilitagrave e attuazione tramite servo attuatori

Hitec

311 Struttura Meccanica

La struttura di ASGARD egrave composta da parti ricavate da lastre di

policarbonato di cui presenteremo le caratteristiche nel paragrafo seguente e

incollate con speciale solvente

Il progetto della struttura di Marco Piralli [27] ha permesso al nostro robot

di avere una struttura simile a diversi esseri naturali

Figura 30 Progetto Robot completo di Pialli (sinistra) e dettaglio dellrsquoarticolazione (destra)

21 Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano sede

Leonardo sito in Lambrate

Architettura del robot ASGARD 49

Esso egrave dotato di 12 gradi di libertagrave tre per ogni zampa simili a quelli di

Aibo eccetto la spalla Questi gradi di libertagrave ci permettono di far compiere al

robot movimenti su tutti e tre gli assi La spalla in particolare ci permette tutti i

movimenti nel piano sagittale (detto anche piano laterale movimento fronte-retro)

Mentre le altre due articolazioni permettono movimenti nel piano frontale

(movimento lato-lato) e in quello trasversale

Questa serie di attuazioni da la possibilitagrave al robot di essere indipendente

nel movimento di ogni singola zampa e un ulteriore grado passivo nella zampa

permette di affrontare le differenti tipologie di terreno

Il collegamento tra attuatori e struttura risulta essere diretta senza cioegrave

lrsquoausili di tendini il rotore del motore egrave direttamente connesso alla articolazione

studiata per alloggiare il motore al suo interno

Figura 31 Particolari sulle locazioni e i sostegni degli attuatori nel giunto di

spalla(sinista) e ginocchio caviglia (destra)

Architettura del robot ASGARD 50

Giunto 9Giunto 12

Giunto 3

Giunto 6

Giunto 1

Giunto 2 Giunto 4

Giunto 5

Giunto 7

Giunto 8 Giunto 11 Giunto 10

Figura 32 Posizionamento dei giunti nel robot reale

312 Attuatori

Come illustrato in Figura 32 gli attuatori necessari al movimento di

ASGARD devono risultare leggeri e disposti in modo da non intralciare gli

eventuali movimenti I singoli attuatori sono costituiti da un motore servo da una

molla torsionale e da uno smorzatore senza essere perograve dotato di encoder

incrementale Con questo sistema non egrave possibile realizzare un preciso controllo

di posizione istante per istante ma egrave possibile ottenere una rigidezza di giunto non

infinita

I motori da noi utilizzati sono da 44 Kg bull cm HITEC HS 475HB Standar

Delux[28] abitualmente utilizzati in ambito di modellismo Le cui caratteristiche

sono qui sotto riportate

Architettura del robot ASGARD 51

Caratteristiche principali HS457 HB

Control system Operatine voltage range Operatine speed Stall torque Idle current Running current Stall current Dimensions Weight

+Pulse width control 1500usec neutral 48 V to 60 V 023 sec60(load) 018 sec60(no load) 44 Kg cm 55 Kg cm 74 mA (stopped) 77 mA(no load) 180 mA60 (load) 160 mA60(no load) 900 mA 388x198x36 mm 40 g

Figura 33 Attuatore HS 475 HB visto in sezione (sinistra) e come si presenta sul

nostro robot (destra)

Architettura del robot ASGARD 52

313 Materiale Policarbonato

Per la realizzazione del robot egrave stato scelto un materiale innovativo

resistente agli urti e alla trazione che puograve in questo modo resistere alle

sollecitazioni esterne e alle vibrazioni causate dalla camminata su terreni aspri

Oltre le potenziali caratteristiche di resistenza ha la dote di essere

estremamente leggero e di riuscire ad assemblarsi tramite apposito solvente

Questo permette alla struttura chimica di una superficie di scomporsi e di legarsi

in modo stabile alla struttura di una ulteriore lastra ricreando una struttura

compatta e indissaldabile

Proprietagrave policarbonato[29]

Carico limite di snervamento Nmmsup2 gt60

Resistenza alla rottura Nmmsup2 gt70

Allungamento a snervamento 6 hellip 8

Allungamento a rottura lt100

Modulo elastico Nmmsup2 2300

PROPRIETA MECCANICHE

Resistenza allrsquourto IZOD con intaglio Jm 700

Peso specifico gcmsup3 120

Indice di rifrazione 159

Assorbimento idrico (24h - 23degC) per immersione

036 PROPRIETA

FISICHE

Permeabilitagrave al vapore drsquoacqua (spessore 01m 24h)

gmsup3 15

Temperatura di resistenza al calore vicat VSTB

degC 145hellip150

Espansione termica lineare 1degC 67 X 10

PROPRIETA TERMICHE

Conducibilitagrave termica WmdegC 021

Architettura del robot ASGARD 53

32 ASGRAD in numeri

Le caratteristiche fisiche di Asgard si possono cosigrave riassumere

Busto

Larghezza 1210 cm

Lunghezza 2290 cm

Zampe

Link num 1 573 cm

Link num 2 675 cm

Link num 3 735 cm

Piede 350 x 415 cm

Spessore 4 mm

Peso

Corpo in policarbonato 660 g

Attuatori 480 g

Scheda Pic 20 g

Peso Complessivo 1180 Kg

Angoli dei giunti nella posizione di riposo

Giunto spalla 0deg

Giunto ginocchio 45deg

Giunto caviglia 45deg

Architettura del robot ASGARD 54

735 573 675

2290 122

121

Figura 34 Specifiche di ASGARD vista dallrsquoalto

1212 cm

Figura 35 Vista frontale di ASGARD

Architettura del robot ASGARD 55

33 Hardware

Attualmente non esiste un vero e proprio controllo on-board in grado di

generare traiettorie ma una PIC [30] sita su di esso il cui scopo egrave quello di

interpretare i segnali di comando in uscita dal nostro codice Matlab e di

trasformarli in impulsi (PWM) da inviare ai motori

Figura 36 Sistema di controllo dei motori Nellrsquoambiente Matlab sono stati inseriti dei comandi manuali di posizionamento il programma gestisce la generazione delle traiettorie e i comandi vengono inviati alla PIC Questa si occupa di generare e inviare ai motori gli impulsi che ne garantiscono il posizionamento

Unitagrave di controllo

Alimentazione

Porta seriale

Max 232

PIC

18F4x28 40L DIP

A T T U A T O R I

Figura 37 Schema a blocchi della PIC di controllo

Architettura del robot ASGARD 56

34 Software

La creazione del nostro algoritmo rappresenta la prima implementazione di

codice in merito al progetto del robot quadrupede in esame

Per il collegamento diretto e il pilotaggio di motori servo tramite la porta

seriale abbiamo usufruito di un codice elaborato precedentemente e implementato

sulla PIC

Questo programma egrave costituito da cicli di attesa da parte della PIC stessa

per la ricezione dei comandi e da un canale di ritorno in cui essa comunica al Pc

la corretta trasmissione dellrsquoimpulso

Una miglioria sullrsquoanalisi implementativi ci ha permesso di spingere la

velocitagrave di comunicazione fino a 14400 bitsec

Il nostro programma di analisi e simulazione dei passi analizza le

caratteristiche fisiche di movimento del nostro robot generando i movimenti

opportuni che gli permetteranno di deambulare stabilmente nellrsquoambiente

Un ulteriore ricerca ci ha portato a realizzare una funzione di calcolo delle

traiettorie in ambiente noto che dagrave la possibilitagrave a ASGARD di decidere in real-

time il passo da intraprendere nel singolo istante

Questo puograve essere considerato il primo passo verso un algoritmo di

Intelligenza Artificiale per il nostro robot

Il sistema di controllo dellrsquoandatura di un robot con zampe si puograve cosigrave

scomporre in tre livelli distinti

Architettura del robot ASGARD 57

SUPERVISORE

bull Traiettoria bull Parametri dellrsquoandatura

COORDINATORE bull Controllo della stabilitagrave bull Traiettoria dellrsquoestremitagrave delle

zampe

LIVELLO DELLE ZAMPE bull Cinematica inversa bull Controllo dinamico bull Comandi agli attuatori

35 Stato Attuale

Allo stato attuale il robot egrave stato completato e dotato di sensore di

pressione posto sotto la zampa anteriore sinistra Le tempistiche di risposta della

scheda PIC presentano non poche difficoltagrave a carattere di controllo I motori da

noi utilizzati ricevono in input solo il valore della posizione ed egrave pertanto

impossibile effettuare controlli su velocitagrave ed accelerazione

Ersquo risultato comunque possibile dopo una attenta analisi di stabilitagrave la

creazione di un ciclo di passi che ha permesso ad ASGARD di compiere la sua

prima camminata

Capitolo 4 Modellizzazione cinematica e dinamica

Modellizzazione cinematica e dinamica 59

41 Convenzioni e simbologia utilizzata

Data la natura del robot saragrave essenziale fornirne una corretta analisi

matematica e robotica per mantenere una certa coerenza e chiarezza verranno

utilizzate le seguenti convenzioni

bull Il pedice indica il numero della grandezza a cui si sta facendo

riferimento indica ad esempio lrsquoelemento n di A Nel caso vi

siano presenti due pedici si fa riferimento ad una grandezza che va

dal primo pedice al secondo indica quindi un vettore da i a k

nA

kiA

bull Lrsquoapice egrave utilizzato per indicare il sistema di riferimento rispetto al

quale la grandezza egrave riferita indica quindi lrsquoelemento n della

grandezza A nel sistema di riferimento i

inA

bull Il simbolo times indica il prodotto vettoriale

bull Il simbolo bull indica il prodotto scalare mentre la T posta come apice

egrave la trasposizione

Nella Tabella 1 vengono mostrate le grandezze fisiche utilizzate e la

simbologia per rappresentarle[31]

Ti

iR 1minus Matrice di rotazione dalla terna i-1 alla terna i (premoltiplicazione)

iiR 1+ Matrice di rotazione dalla terna i+1 alla terna i (postmoltiplicazione)

im Massa del braccio

iir 1minus Vettore dalla terna i-1 alla terna i

iI Tensore drsquoinerzia del braccio

iϑ Posizione angolare del giunto i

iϑamp Velocitagrave angolare del giunto i

Modellizzazione cinematica e dinamica 60

iϑampamp Accelerazione angolare del giunto i

iω Velocitagrave angolare del braccio

iωamp Accelerazione angolare del braccio

ipampamp Accelerazione lineare terna i

iCpampamp Accelerazione lineare baricentro iC

if Forza esercitata sul giunto i

imicro Momento esercitato sul giunto i

iτ Forza generalizzata al giunto i

Tabella 1 Rappresentazione delle grandezze fisiche utilizzate

42 Sistemi di coordinate e trasformazioni

Qualunque punto dello spazio puograve essere rappresentato da coordinate

omogenee che non sono altro che le coordinate cartesiane del punto a meno di un

fattore di proporzionalitagrave

⎥⎥⎥⎥

⎢⎢⎢⎢

=rarr⎥⎥⎥

⎢⎢⎢

⎡=

wzyx

pZYX

p dove wxX =

wyY =

wzZ =

In coordinate omogenee ci sono quattro punti particolari

versore direzione dellrsquoasse X versore direzione dellrsquoasse Y ir

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0001

jr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0010

versore direzione dellrsquoasse Z Origine degli assi kr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0100

Or

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1000

Modellizzazione cinematica e dinamica 61

Questi quattro punti caratterizzano il sistema di riferimento Un sistema di

riferimento puograve essere posto in ogni punto dello spazio per noi saragrave essenziale

porne uno in ogni giunto dei robot[32] Inserito un sistema di riferimento il

passaggio da un sistema al successivo avviene tramite una matrice di

trasformazione che al suo interno ne descrive la rotazione e traslazione

La rotazione pura rispetto ad un sistema fisso di coordinate viene

rappresentata tramite una matrice quadrata 33times Ad esempio una rotazione di un

angolo α attorno allrsquoasse z viene descritta con

( )⎥⎥⎥

⎢⎢⎢

⎡ minus=

1000cossin0cos

αααα

αsen

Rz

La matrice A di rototraslazione egrave rappresentata in generale come

composizione degli spostamenti rotatorio e traslatorio

( ) ( )

[ ] ⎥⎦

⎤⎢⎣

⎡ timestimes=

10001333 TraslRot

A

La matrice egrave costituita da una parte di rotazione una di traslazione lungo i

tre assi e una riga i cui valori indicano la ldquoscalardquo e la ldquoprospettivardquo (non utilizzati

in questo ambito) In analisi piugrave approfondita

Modellizzazione cinematica e dinamica 62

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

A

possiamo vedere come le prime tre colonne rappresentano i versori del

sistema di partenza mentre lrsquoultime rappresenta la posizione di arrivo in

coordinate omogenee dellrsquoorigine in cui egrave posizionato il sistema di riferimento

43 Cinemetica diretta

In questo ambito ci proponiamo di illustrare i modelli matematici che ci

hanno permesso di analizzare ASGARD Partiamo da alcune definizione basilari

Un robot manipolatore egrave una catena cinematica sequenziale22 aperta23 o

catena parallela composta da corpi rigidi (link) uniti da giunti

Lrsquointeresse principale egrave rivolto alla mano o end-effector del robot che

possa raggiungere ogni posizione con qualunque orientamento senza bisogno di

resettare fisicamente il sistema

La cinematica studia il legame tra le variabili indipendenti dei giunti e le

posizioni e orientamento cartesiane raggiunte dal robot Questo egrave chiaramente un

problema cruciale per le applicazioni Il problema si suddivide in due parti

cinematica diretta = passaggi dalle variabili di giunto24 alle variabili

cartesiane25

cinematica inversa = passaggio dalle variabili cartesiane alle variabili di

giunto

22 sequenziale significa che non ci sono diramazioni nella catena 23 aperta una delle due estremitagrave (mano=end-effector) egrave libera 24 valori degli angoli di ogni singolo giunto 25 valore della posizione espresso in coordinate nel di riferimento considerato

Modellizzazione cinematica e dinamica 63

La dinamica studia le equazioni che caratterizzano il moto del robot intese

come velocitagrave accelerazioni tenendo conto non solo delle posizioni iniziali e

finali ma di tutte le caratteristiche del moto la nostra analisi si egrave concentrata sulle

forze e le torsioni agenti sui motori studiate con il metodo di Newton-Eulero

Il calcolo delle traiettorie consiste nel determinare un modo per fornire al

controllore del robot lrsquoinsieme dei punti (variabili di giunto) per spostarsi da una

posizione allrsquoaltra con opportune velocitagrave e accelerazioni

Il problema del controllo consiste invece nel trovare modalitagrave efficienti per

far compiere al robot il piugrave fedelmente possibile le traiettorie determinate

431 Definizione dei parametri di Denavit Hartemberg

Elaborare i valori delle variabili di giunto fino a trovare i valori delle

coordinate cartesiane riferite alla posizione dellrsquoend-effector non egrave di facile

carico computazionale soprattutto quando il robot risulta complesso26

Sviluppare metodi a doc ottimi per la cinematica inversa risultano

scomodi e onerosi se riferiti alla cinematica diretta

Un metodo generale e applicabile a qualsiasi tipologia di manipolatore egrave

stato sviluppato negli anni cinquanta da Denavit e Hartenberg (D-H)

Esso consiste nel fissare sistemi di riferimento sui giunti per poterne

determinare i parametri caratteristici Tramite lrsquouso di matrici di rototraslazione

dei sistemi di riferimento egrave possibile trovare un legame tra i parametri dei giunti e

la posizione e lrsquoorientamento dellrsquoend-effector Con questa scelta ogni singola

trasformazione da un sistema di riferimento al successivo saragrave descritta da una

matrice definita da quattro parametri lrsquoangolo del giuntonnA 1minus ϑ lrsquoangolo di twist

α e le due distanze d e l

Identificata la struttura giuntilink del robot egrave necessario fissare i sistemi di

riferimento nel seguente modo

26 complesso con piugrave di due gradi di libertagrave

Modellizzazione cinematica e dinamica 64

bull Scegliere lrsquoasse giacente lrsquoungo lrsquoasse del giunto i+1 iz

bull Individuare allrsquointersezione dellrsquoasse con la normale comune

agli assi e con

iO iz

1minusiz iz iOprime si indica lrsquointersezione della normale

comune con 1minusiz

bull Si assume lrsquoasse diretto lungo la normale comune agli assi

e con verso positivo dal giunto i al giunto i+1

ix 1minusiz

iz

bull Si sceglie lrsquoasse in modo tale da completare una terna levogira iy

Figura 38 Parametri cinematici di Denavit-Hartenberg

Fissate le terne solidali si ha che

ia = distanza da a iO iOprime

id = coordinata su di 1minusiz iOprime

iα = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

ix 1minusiz iz

iϑ = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

1minusiz 1minusix ix

Modellizzazione cinematica e dinamica 65

Nella nostra analisi essendo tutti giunti rotoidali lrsquounica variabile risulta

essere iϑ indicante la posizione in gradiradianti del giunto Nello sviluppo della

parte grafica per caratteristiche proprie del tool utilizzato sono stati introdotti

ulteriori due giunti traslazionali che nellrsquoanalisi non vengono perograve presi in

considerazione come variabili

La matrice di trasformazione complessiva viene costruita nel modo

seguente

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡minus

minus

=minus

1000cos0

coscoscoscoscoscos

1

iii

iiiiiii

iiiiiii

ii dsen

senasensenasensensen

Aαα

ϑαϑαϑϑϑαϑαϑϑ

432 Metodo di assegnamento secondo D-H

Per ricavare velocemente le matrici di trasformazione secondo la

convenzione di D-H si utilizza la seguente procedura operativa

1 Individuare e numerare consecutivamente gli assi dei giunti

assegnare rispettivamente le direzioni agli assi hellip 0z 1minusnz

2 Fissare la terna base posizionandone lrsquoorigine sullrsquoasse gli assi

e sono scelti in maniera tale da ottenere una terna levogira

0z

0x 0y

Eseguire i passi da 3 a 5 per i = 1 hellip n

3 Individuare lrsquoorigine allrsquointersezione di con la normale comune agli assi e Se gli assi e sono paralleli posizionare in modo da annullare

iO iz

1minusiz iz 1minusiz iz

iO id4 Fissare lrsquoasse diretto lungo la normale comune agli assi e

con verso positivo dal giunto i al giunto i+1 ix 1minusiz

iz5 Fissare lrsquoasse in modo da ottenere una terna levogira iy

Per completare

Modellizzazione cinematica e dinamica 66

1 Fissare la terna n allineando lungo la direzione di nz 1minusnz

2 Costruire per i = 1 hellip n la tabella dei parametri ia id iα iϑ

3 Calcolare sulla base dei parametri di cui al punto 7 le matrici di

trasformazione omogenea ( )iii qA 1minus per i = 1 hellip n

La posizione e lrsquoorientamento di un qualsiasi giunto della catena rispetto il

sistema base egrave ora calcolabile premoltiplicando i valori nel sistema corrente per

tutte le matrici di trasformazione precedenti a tale sistema

11

121

010

0 minusminussdotsdotsdot== n

nnn AAAAT

In ASGARD si egrave attuata una doppia analisi

la prima consiste nellrsquoalzata del piede e il suo riposizionamento nelle

coordinate desiderate in questo caso lrsquoorigine del robot risulta essere solidale con

il baricentro del corpo e lrsquoend-effector risulta coincidere con la zampa mobile

Figura 39 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nel baricentro e end-effector coincidente con la zampa mobile

Modellizzazione cinematica e dinamica 67

I parametri di D-H calcolati risultano essere

link ϑ α a d

1 deg45 0 1l 0

2 2ϑ deg90 2l 0

3 3ϑ 0 3l 0

4 0 4l 0 4ϑ

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

1111

1111

010

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdot

=

10000010

00

2222

2222

121

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

3333

3333

232

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

44441

4444

343

SlCSClSC

A

e la matrice T contenente i valori in coordinate cartesiane della posizione

della zampa egrave calcolata come 3

432

321

210

1004 AAAAAT sdotsdotsdot==

la seconda analisi consiste nellrsquoavanzamento del corpo non essendo il

nostro robot dotato di uno scheletro mobile e flessibile durante la camminata si ha

la necessitagrave di spostare il baricentro sfruttando lrsquoattrito delle zampe con il terreno

In questa situazione le zampe puntate a terra risultano essere lrsquoorigine e il

baricentro della nostra struttura egrave la parte terminale libera

Modellizzazione cinematica e dinamica 68

Figura 40 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nella zampa di appoggio e end-effector coincidente con il baricentro

In questo caso i parametri di D-H subiscono la seguente modifica

link ϑ α a d

1 1ϑ degminus 90 0 0 2 2ϑ 0 2l 0 3 3ϑ degminus 90 3l 0 4 0 0 4l 0

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

11

11

010

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ minus

=

100001000000

22

22

121

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

33

33

232

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000010000100001

343A

La matrice T per il calcolo della posizione finale non subisce invece

modifiche nella sua formula rimane invariata 343

232

121

010

0 AAAAAT n sdotsdotsdot==

Modellizzazione cinematica e dinamica 69

44 Cinematica inversa

Data una posizione e un orientamento nello spazio cartesiano egrave possibile

trovare una configurazione del nostro manipolatore affincheacute essa possa essere

raggiunta Questo egrave il problema di cinematica inverso

Nel calcolo di tale problema non egrave garantita neacute lrsquoesistenza neacute lrsquounicitagrave

della soluzione cercata La posizione se appartenente allo spazio di destrezza del

manipolatore (spazio in cui egrave garantita lrsquoesistenza della soluzione) non egrave detto che

possa essere raggiunta con unrsquounica sequenza di variabili di giunto

Metodi di analisi ammissibili per il nostro robot risultano essere il metodo

di Paul[33] e quello geometrico non essendo rispettati i vincoli per il metodo di

Pieper (tre giunti rotoidali consecutivi con assi paralleli)

Il metodo di Paul consente di determinare le soluzioni mediante

premoltiplicazioni o postmoltiplicazioni con matrici di trasformazione ortogonali

egrave un metodo euristico per la ricerca di soluzioni in forma chiusa

Lrsquoalgoritmo egrave il seguente

1 Uguagliare la matrice di trasformazione generale T espressa in

termini di variabili cartesiane alla matrice di trasformazione del

manipolatore espressa in termini di variabili di giunto

2 Cercare nella seconda matrice

bull elementi che contengono una sola variabile di giunto

bull coppie di elementi che danno unrsquoespressione in una sola

variabile di giunto quando vengono divisi tra loro

bull elementi o combinazioni di elementi che possono essere

semplificati usando identitagrave trigonometriche

3 Quando si sono identificati questi elementi li si eguagliano ai

corrispondenti elementi della matrice in variabili cartesiane

ottenendo unrsquoequazione la cui soluzione permette di trovare un

Modellizzazione cinematica e dinamica 70

legame fra una variabile di giunto ed elementi della matrice di

trasformazione generale

4 Se non si sono identificati elementi che soddisfano le condizioni al

passo 2 si premoltiplicano entrambi i membri dellrsquoequazione

matriciale per lrsquoinversa della matrice A del primo link si opera

secondo il passo 2 Si itera il procedimento per tutti i link

5 Non sempre egrave possibile trovare elementi che rispettano le

condizioni imposte e riuscire a trovare una soluzione valida

Nella nostra analisi questo metodo egrave stato valido e molto veloce per

trovare il valore del primo angolo spalla ma risulta svantaggioso nel calcolo dei

successivi angoli in cui non si riuscivano a trovare equazioni semplici

=

⎥⎥⎥⎥

⎢⎢⎢⎢

+minusminusminusminus++minusminusminusminusminus++minusminusminusminus

=

10000 2232332332323232

11212321332131321321321321

11212321332131321321321321

SlSClCSlCCSSSCSSSlCSlSSSlCCSlCSSSCCSCSSCCSClCClSSClCCClSCSCSCCSSCCCC

T

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

da cui si ricava

( )( ) 1

1

1223233231

1223233231

CS

lClSSlCClClClSSlCClS

pp

x

y =++minus++minus

= quindi ⎟⎟⎠

⎞⎜⎜⎝

⎛=

x

y

pp

a tan1ϑ

Ersquo stato quindi decisivo per il riscontro del secondo e del terzo angolo

rispettivamente ginocchio e caviglia un approccio geometrico a doc

In questa tipologia di studio di rilevante importanza egrave stata lrsquoestrapolazione

delle coordinate dellrsquoend-effector e la traslazione dellrsquoorigine nel ginocchio al fine

di isolare due piani del moto per ridurre lrsquoanalisi di una dimensione

Modellizzazione cinematica e dinamica 71

Il calcolo della cinematica inversa per un manipolatore a due link risulta

poi di basso carico computazionale applicando regole di trigonometria basilari

Figura 41 Calcolo cinematica inversa attraverso metodo geometrico su un robot

planare a 2gradi di libertagrave

Conoscendo la posizione raggiunta

( )21211 coscos ϑϑϑ ++= llx ( )21211 ϑϑϑ ++= senlsenly

Si applica il teorema di Pitagora nel triangolo indicato

( ) ( ) =sdot+sdotsdotsdot+sdot+=+sdot+=+ 22

22221

22

22

21

222

2221

22 cos2coscos ϑϑϑϑϑ senlllllsenlllyx 221

22

21 cos2 ϑsdotsdotsdot++= llll

E da esso si ricava

21

22

21

22

2 2)(cos

llllyx

sdotsdotminusminus+

=ϑ e quindi ⎥⎦

⎤⎢⎣

⎡sdotsdot

minusminus+=

21

22

21

22

2 2)(

cosll

llyxaϑ

Come si era previsto porta a due soluzioni gomito alto o bassoPer trovare

lrsquoaltro angolo si osserva cha al posto αϑϑ +=∆ 1 si ha

( )xy

=∆ϑtan ( )221

22

costan

ϑϑ

αsdot+

=llsenl

quindi

⎟⎟⎠

⎞⎜⎜⎝

⎛sdot+

minus⎟⎠⎞

⎜⎝⎛= minusminus

221

22111 cos

tantanϑ

ϑϑ

llsenl

xy

Modellizzazione cinematica e dinamica 72

441 Metodo gradiente

Abbiamo utilizzato questo metodo alternativo sperimentale in

concomitanza con il metodo geometrico valutandone successivamente le sue

potenzialitagrave per possibili applicazioni future Esso attraverso semplici calcoli

matematici ci porta al valore dei successivi due giunti della zampa

Figura 42 Baccio a due link

Denomineremo

a angolo del primo giunto

b angolo del secondo giunto

obiettivo stella rossa

errore vettore che punta lrsquoobiettivo

Spostiamo il braccio del robot intorno alla base cambiando gli angoli a e b

Possiamo tracciare un grafico di questo comportamento[34]

Figura 43 Immagine della rappresentazione del gradiente

Modellizzazione cinematica e dinamica 73

Lrsquoasse x rappresenta langolo a mentre lrsquoasse y rappresenta langolo b Lrsquoorigine

egrave nel cento Denomineremo lo spazio di tutti gli orientamenti possibili del braccio

del robot lo spazio di configurazione

Ogni punto sul quadrato contiene una tonalitagrave di grigio che rappresenta la

distanza fra lrsquoend-effector e lobiettivo Le tonalitagrave piugrave chiare sono distanze piugrave

grandi mentre il nero rappresenta zone di avvicinamento allrsquoobiettivo Ci sono

due posti in cui la distanza egrave uguale zero rappresentanti le due configurazioni

(gomito alto e basso) in cui il braccio puograve toccare lobiettivo

Dovrebbe essere evidente arrivare al target significa trovare le parti piugrave

nere del grafico Questi punti bassi sono conosciuti come minimi

4411 Gradient following

Questo metodo risulta essere di grande utilizzo per riuscire a trovari i

minimi in uno spazio bidimensionale

Per trovare i punti piugrave bassi sul grafico si deve semplicemente seguire

punti che portano lrsquoend effector ad una distanza minore dal target

Figura 44 Immagine di esempio

Figura 45 Gafico del Gradiente di esempio

Si guardi questo esempio Figura 44 Lobiettivo egrave la stella rossa In questa

posizioneun movimento del giunto di rotazione a sposteragrave la mano nel senso della

freccia a ed un movimento di b sposteragrave lrsquoend-effector nel senso della freccia b

Modellizzazione cinematica e dinamica 74

Per raggiungere lrsquoobiettivo desideriamo spostare la mano nel senso della freccia t

Spostando solo il giunto A o solo B non otterremo grandi risultati ma serviragrave un

movimento complessivo Ora guardiamo questo in termini di grafico (Figura 45)

Cominciando ad una configurazione casuale del braccio (start) possiamo

guardare i vettori a e b e ruotiamo ogni giunto un po in proporzione a quanto

aiuta per ottenere una migliore posizione rispetto allrsquoobiettivo Si puograve pensare a

questo come esaminare la pendenza locale del grafico Ci si chiede qual egrave il

movimento che li conduce il piugrave velocemente in discesa ci si sposta in quel senso

Si continua a ciclare questo fino ad arrivare ad una distanza dal nostro obiettivo

che concorda con lrsquoapprossimazione da noi desiderata

Vantaggi di questo metodo sono lrsquoapplicazione in tutte le problematiche

con un numero elevato di link Il tempo computazionale non risulta essere oneroso

in quanto ci si riconduce a semplici operazioni matematiche che Matlab riesce ad

eseguire in pochissimi istanti nonostante lrsquoelevato numero di iterazioni

4412 Faster gradient following

Esso egrave unottimizzazione del metodo gradient following che accelera

letteralmente il processo[34] Precedentemente ad ogni ripetizione la pendenza egrave

stata sottratta semplicemente dalla posizione nello spazio di configurazione

spostando la struttura piugrave vicino al minimo Questa volta sottrarremo la pendenza

dalla velocitagrave a cui ci muoviamo attraverso lo spazio di configurazione

Otteniamo come risultato un calcolo molto piugrave rapido in termini di

iterazioni che si riducono fino al 60-75 rispetto al precedente mantenedo

risultati ottimi in base anche allrsquoapprossimazione da noi scelta

Modellizzazione cinematica e dinamica 75

Figura 46 Passi per arrivare al target nel metodo di inseguimento veloce

45 Calcolo delle traiettorie

Vogliamo presentare le modalitagrave di come le traiettorie vengono generate

Tra le diverse disponibili egrave stato scelto il controllo in posizione nello spazio dei

giunti affichegrave il robot riesca a deambulare in un cammino definito Esprimendo le

traiettorie nello spazio dei giunti vengono evitate le conversioni cinematiche

inverse e quindi per la realizzazione delle traiettorie non serve potenza di calcolo

onerosa

Per il controllo delle traiettorie esistono metodi semplici basati sulla

gestione del movimento del singolo link senza che esso venga temporizzato con

tutta la struttura e algoritmi piugrave complessi che fanno uso delle cubiche27 esse

arrivano a un buon compromesso tra quantitagrave di calcolo richiesta e qualitagrave delle

traiettorie ottenute Il cammino da compiere viene specificato mediante punto di

arrivo e punto di stop si vorrebbe che tutti i giunti arrivino al task nello stesso

istante in modo da garantire lrsquoassenza delle discontinuitagrave Si generano traiettorie

nello spazio dei giunti specificando per ogni motore la funzione di moto e

verificando che le posizioni attraversate non siano degeneri28 o singolari29[32]

27 polinomi dal terzo grado a superiore che rappresentano funzioni continue 28 degenere significa non raggiungibile dal robot

Modellizzazione cinematica e dinamica 76

Esistono diversi metodi per calcolare le cubiche di seguito vengono

presentate quelle da noi elaborate e convertite in codice

Movimento da una posizione finale ad una posizione finale in un certo

intervallo di tempo per ogni giunto deve essere trovata una funzione ( )tϑ

continua e con derivata prima continua il cui valore per t=0 sia per t = sia ft fϑ e

che possa essere usata per interpolare i valori dei giunti I vincoli che devono

essere soddisfatti sono

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = 0 Velocitagrave iniziale nulla

( )fϑamp = 0 Velocitagrave finale nulla

Per soddisfare i vincoli egrave necessario un polinomio di terzo grado in cui i

coefficienti saranno scelti per soddisfare i quatto vincoli

( )tϑ = 3

32

210 tatataa sdot+sdot+sdot+

dal polinomio ricaviamo la funzione che rappresenta la velocitagrave

( )tϑamp = 2321 32 tataa sdotsdot+sdotsdot+

e lrsquoaccelerazione

( )tϑampamp = taa sdotsdot+sdot 32 62

sostituendo le equazioni nei vincoli sopra citati troviamo i seguenti valori dei

coefficienti

=0a 0ϑ

29 un punto singolare egrave un punto in cui non egrave possibile calcolare lo jacobiano inverso

Modellizzazione cinematica e dinamica 77

01 =a

( )2

02

3

f

f

ta

ϑϑ minussdot=

( )3

03

2

f

f

ta

ϑϑ minussdotminus=

Con queste equazioni abbiamo ottenuto il metodo piugrave semplice per

connettere due posizioni nello spazio A fronte del consistente numero di

operazioni richieste per il carico grafico questo egrave il metodo da noi utilizzato per

tutto lo sviluppo del simulatore che emula la creazione di un percorso inoltre esso

risulta simile al controllo a noi a disposizione per gli attuatori reali a disposizione

Abbiamo comunque voluto implementare un metodo avanzato per

superare limitazioni presenti che potragrave essere utilizzato anche in un futuro quando

controlli effettivi saranno introdotti per il controllo di velocitagrave e accelerazione dei

motori Esso egrave costituito da un polinomio di quinto grado in cui possono essere

specificate posizioni velocitagrave e accelerazioni nei punti iniziale e finale e puograve

gestire la continuitagrave dellrsquoaccelerazione nei punti di via

Il polinomio studiato risulta essere

( )tϑ = 5

54

43

32

210 tatatatataa sdot+sdot+sdot+sdot+sdot+

( ) =tϑamp 45

34

2321 5432 tatatataa sdotsdot+sdotsdot+sdotsdot+sdotsdot+

( ) =tϑampamp 35

2432 201262 tatataa sdotsdot+sdotsdot+sdotsdot+sdot

imponendo

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = Velocitagrave iniziale 0v

( )fϑamp = Velocitagrave finale fv

Modellizzazione cinematica e dinamica 78

sostituendo i vincoli trovo i seguenti valori dei parametri

tvva fof sdotminussdotminusminussdot= )(3)(6 05 ϑϑ

tvva fof sdotsdotminussdot+minussdotminus= )78()(15 04 ϑϑ

tvva fof sdotsdotminussdotminusminussdot= )46()(10 03 ϑϑ

02 =a

tva sdot= 01

00 va =

46 Modello dinamico Newton-Eulero

Per un analisi realistica e approfondita della camminata non egrave sufficiente

considerare gli effetti della forza di gravitagrave ma diventa necessario introdurre il

modello dinamico che tiene conto di tutti i fattori non trascurabili nei corpi in

movimento

Per completare le formule ricavate nel caso statico vengono calcolate le

singole velocitagrave e accelerazioni dei giunti e link Risulta assai comodo ed

efficiente lrsquoalgoritmo ricorsivo di Newton-Eulero[31] Viene effettuata dapprima

una ricorsione ldquoin avantirdquo per calcolare le velocitagrave e accelerazioni dei giunti e

successivamente una ricorsione ldquoallrsquoindietrordquo per ricavare i valori di forza e

torsione

Nella prima fase dalla base (baricentro) allrsquoend-effector (zampa in

movimento) abbiamo

Velocitagrave angolare del rotore ( )011

1 zR iii

Tii

ii ϑωω amp+= minus

minusminus

Accelerazione angolare del link ( )0110

11

1 zzR iiii

ii

Tii

ii times++= minus

minusminusminus

minus ωϑϑωω ampampampampamp

Accelerazione lineare terna i ( )iii

ii

ii

iii

ii

ii

Tii

ii rrpRp 11

11

1minusminus

minusminus

minus timestimes+times+= ωωωampampampampamp

Modellizzazione cinematica e dinamica 79

Accelerazione lineare baricentro iC ( )iCi

ii

ii

iCi

ii

iiC iii

rrpp timestimes+times+= ωωωampampampampamp

Nella seconda fase dallrsquoend-effector al baricentro le formule diventano

Forza iCi

ii

ii

ii i

pmfRf ampamp+= +++

111

Momento ( )

( )ii

ii

ii

ii

ii

iCi

ii

ii

ii

ii

iCi

iii

ii

ii

II

rfRRrrfii

ωωω

micromicro

times++

times+++timesminus= +++

+++minus

amp

1

111111

Forza generalizzata 0

1 zR Tii

Tiii

minus= microτ

Ai fini di semplificare i calcoli tutti i vettori sono riferiti alla terna corrente

sul link i Si rende quindi necessario moltiplicare per i vettori da trasformare

dalla terna i+1 alla terna i e per i vettori da trasformare dalla terna i-1 alla

terna i In questo modo e diventa possibile

semplificare la formula del tensore drsquoinerzia del link

iiR 1+

TiiR 1minus

[ ]Tz 1000 = costante =iCi i

r

( )

( )( ) ⎥

⎥⎥⎥

⎢⎢⎢⎢

+sdotminussdotminus

sdotminus+sdotminus

sdotminussdotminus+

sdot=

intintintintintintintintint

dVyxdVyzdVxz

dVyzdVzxdVxy

dVxzdVxydVzy

I22

22

22

ρ

Lrsquoinerzia egrave una proprietagrave che dipende dalla massa del corpo e da come tale

massa egrave distribuita I tensori sopra calcolati descrivono lrsquoinerzia del corpo nello

spazio tridimensionale Per i calcoli si sono supposti i link di densitagrave uniforme e a

forma di parallelepipedo tale approssimazione porta ad ottenere risultati

sufficientemente precisi per questo lavoro semplificando i termini del tensore

( )

( )( ) ⎥

⎥⎥

⎢⎢⎢

++

+sdot=

120001200012

22

22

22

yxzx

zymI

Modellizzazione cinematica e dinamica 80

Nelle formule del calcolo della torsione sono stati tralasciati i termini

inerenti alle forze interne dei motori essendo questi di dimensione trascurabile

47 Creazione di una mappa

La navigazione consiste nel dirigere il cammino di un robot

mobile[35][36] mentre esso si muove in un ambiente affincheacute

bull Raggiunga la destinazione

bull Non si perda

bull Non si schianti contro ostacoli fissi o mobili

La navigazione egrave composta dalle seguenti parti

mapping planning rArr driving rArr

costruzione della mappa pianificazione esecuzione

Il mapping consiste nel rappresentare lrsquoambiente in cui il robot si muove

ottimizzando i movimenti del robot per ASGARD lrsquoambiente egrave stato rappresentato

mediante una matrice bidimensionale che rappresenta la sua area di azione

Il planning rappresenta la costruzione di un cammino geometrico nella

mappa Nel nostro lavoro si egrave deciso di dare la possibilitagrave al robot di scegliere il

percorso piugrave adatto che dovragrave intraprendere Come verragrave descritto piugrave in dettaglio

nel prossimo capitolo dopo aver inserito valori di riferimento degli ostacoli

mediante un algoritmo di ricerca saragrave il controllore a fornire le direttive e

scegliere che tipologia di camminata che ASGARD dovragrave affrontare in ogni

singolo istante alla fase di driving saragrave delegato il compito di scegliere il passo

opportuno al fine di velocizzare la camminata

Il goal per il nostro robot egrave il raggiungimento della posizione data come

obiettivo senza urtare ostacoli fissi presenti sul suo cammino Non essendo dotato

Modellizzazione cinematica e dinamica 81

di un sistema odometrico per il calcolo della posizione saragrave lo stesso controllore a

verificare in real-time la corretta posizione del baricentro del robot

Non possedendo nemmeno sensori di visione abbiamo deciso di simulare

e costruire una mappa object oriented30 la mappa conosce le posizioni degli

oggetti diffusi nel mondo e vieta al robot le aree in cui essi sono presenti

La mappa saragrave rappresentata da una matrice in cui per ogni cella avremo

valori che rappresentano la distanza dal goal31 e le distanza dallrsquoostacolo piugrave

vicino un opportuno algoritmo di planning (revisione dellrsquoAlgoritmo di Dijkstra)

attueragrave la ricerca del cammino meno dispendioso e dopo un opportuno controllo

diragrave al robot se attuare un passo di camminata veloce o un passo di correzione

471 Espansione degli ostacoli traformazione delle distanze

Basato sul concetto di propagazione drsquoonda32 il metodo della

trasformazione delle distanze proviene dal meccanismo utilizzato per processare

la forma in immagini binarie Il metodo consiste nella propagazione della distanza

da un insieme di celle poste in uno spazio rappresentato da una griglia

Si calcola lo scheletro dellrsquoimmagine ostacolo e si identificano le celle che

ne conterranno gli spigoli Poi si passa da sinistra a destra e dallrsquoalto al basso le

celle esterne al perimetro identificandole con distanza 1 Si procede per tutte le

celle della matrice quando tutti i passaggi sono completati il risultato egrave una

matrice che contiene la trasformazione delle distanze applicate al perimetro di un

oggetto I punti occupati dallrsquooggetto verranno identificati con valori idealmente

infinito e non saranno mai visitati

30 tipologia di costruzione di una mappa orientata agli oggetti 31 obiettivo 32 dallrsquooggetto considerato centro in tutte le direzioni dello spazio bidimensionale

Modellizzazione cinematica e dinamica 82

4 3 2 2 3 3 2 1 1 2 2 1 1 3 2 1 1 2 4 3 2 2 3

4 3 2 2 3 4 4 5 3 2 1 1 2 3 3 4 2 1 1 2 2 3 3 2 1 1 2 1 1 2 4 3 2 2 1 1 5 4 3 2 1 1 6 5 4 3 2 1 1 2

Figura 47 Propagazione drsquoonda per ostacolo singolo e multiplo

Abbiamo deciso di propagare lrsquoonda non solo dagli ostacoli questo

avviene in tutto lo spazio libero fluendo attorno agli ostacoli e dando unrsquoidea a

ogni cella della distanza dallrsquoobiettivo e della direzione da prendere per potersi

avvicinare

I valori del perimetro degli ostacoli vanno propagati in base alla geometria

del robot per evitare eventuali collisioni Nel nostro lavoro lrsquoespansione egrave stata

necessaria solo per i margini verticali in cui il raggio di elevazione delle zampe

poograve collidere con oggetti fissi durante la camminata longitudinale questo

problema non egrave stato invece riscontrato per lrsquoasse latitudinale

4 3 2 2 3 4 3 2 1 1 2 3

2 2 2 2 3 2 1 1 2 3 3 3 2 2 3 4

Figura 48 Griglia con espansione laterale ostacolo

Modellizzazione cinematica e dinamica 83

48 Scelta di un percorso Algoritmo di Dijkstra

Questo algoritmo egrave stato scelto come ricerca di un cammino minimo

allrsquointerno di un grafo[37] per la sua elegante semplicitagrave e il suo basso carico

computazionale (O(n)33)

Proposto da WDijkstra nel 1959[38] esso visita i nodi del grafo in

maniera simile ad una ricerca in ampiezza o profonditagrave In ogni istante lrsquoinsieme

N dei nodi viene diviso in nodi visitati V nodi frontiera F (che sono i successori34

dei nodi visitati) e i nodi sconosciuti che sono ancora da visitare

Per ogni nodo lrsquoalgoritmo tiene traccia del valore che nel nostro caso

saragrave il valore della distanza dal punto di arrivo e del nodo in cui siamo

Lrsquoalgoritmo consiste nel ripetere il seguente passo

zd

zu

si prende dallrsquoinsieme F un qualsiasi nodo z con minimo si sposta z da

F a V si spostano tutti i successori di z conosciuti in F e per ogni successore w di

z si aggiornano i valori di e

zd

wd wu ( )azww pddd +larr min dove a egrave lrsquoarco che

collega z a w Si sceglie in minore valore tra i successori di z si salva questrsquoultimo

nel vettore u

Alla fine dellrsquoalgoritmo arriviamo ad avere nel vettore u lrsquoinsieme dei nodi

che forniscono il cammino minimo dal punto di start al punto di end35

33 Orine di grandezza dellrsquoalgoritmo 34 Un successore di z egrave un nodo raggiungible lungo un arco uscente da z 35 dalla partenza allrsquoarrivo

Capitolo 5 Sviluppo dellrsquoalgoritmo di camminata

Sviluppo dellrsquoalgoritmo di camminata 85

51 Metodologie di sviluppo

Per lrsquoimplementazione della parte software si egrave scelto di far uso

dellrsquoambiente di sviluppo Matlab progettato appositamente per lavorare con

matrici e formule di notevole complessitagrave

Nel realizzare il modello matematico del robot ai fini di studiarne il

comportamento ci si potrebbe chiedere percheacute non sia stato utilizzato lrsquoambiente

di simulazione MSCADAMS in grado di fornire anche proprietagrave fisiche

direttamente dal modello CAD studiarne la cinematica la dinamica e

lrsquointerazione con il mondo esterno La finalitagrave di questo progetto perograve egrave quella di

creare uno strumento di supporto da poter essere realizzato in real-time

A questo punto Matlab potrebbe venir criticato per le sue prestazioni

inferiori a linguaggi quali il C ma esso mette a disposizione toolbox aggiuntivi

quali simulink36 che permettono un facile interfacciamento con tutti i dispositivi

hardware Ersquo comunque possibile convertire il codice sorgente in eseguibili o

addirittura nello stesso linguaggio C senza comprometterne alcuna funzionalitagrave

52 Progetto di una andatura

Per la creazione di una andatura rilevante al fine pratico abbiamo attuato

notevoli ricerche di analisi parametriche in merito Il principale obiettivo trovato egrave

risultata essere la realizzazione delle fasi di un passo stabile e veloce Ci

proponiamo quindi di massimizzare la componente velocitagrave senza provocare

instabilitagrave nel robot La velocitagrave si calcola secondo lrsquoespressione

impiegatotempomotodeldirezionenellapercorsospaziovelocitagrave

______

=

36 tool di matlab per la creazionedi controlli ad anello di automazione

Sviluppo dellrsquoalgoritmo di camminata 86

Per raggiungere tale scopo occorre concentrarsi su diverse questioni

bull Scelta del ciclo di camminata

bull Spazio decidere gli angoli del movimento di ciascuna zampa

bull Il tempo partire da una postura conveniente che garantisca i piugrave

brevi scostamenti possibili di angoli di giunto

bull La stabilitagrave

bull Le coppie prodotte dagli attuatori

bull La scelta della camminata

Attraverso lrsquoanalisi di alcune tra le possibili andature di quadruped sono

emersi pregi e difetti derivanti dallrsquoutilizzo di un ciclo di camminata con un

ridotto numero di fasi Un vantaggio fondamentale sta nel ridurre il tempo

impiegato e il maggior difetto egrave legato ai problemi di instabilitagrave del robot

Al fine di ridurre la stabilitagrave siamo intervenuti nella modellizzazione di un

opportuna camminata quasi statica che si adatta alla morfologia del nostro robot

Lrsquoidea egrave stata quella di trovare una camminata efficiente ma stabile

Al fine di ridurre lrsquoistabilitagrave sono state introdotte fasi aggiuntive che

garantiscono il poligono di appoggio e si egrave tentata di far assumere ad ASGARD

una postura a baricentro basso

Il trotto egrave stato escuso dalla nostra analisi non solo per il tempo di risposta

ma anche per lrsquoimpossibilitagrave di attuare spinte per il balzo

521 Lo spazio

La domanda che ci siamo posti egrave stata se risultava conveniente avanzare le

zampe attraverso piccoli spostamenti ripetuti o con ampi spostamenti meno

frequenti

Lrsquoavanzamento del robot avviene mediante la combinazione di due

movimenti

Sviluppo dellrsquoalgoritmo di camminata 87

bull lo spostamento delle singole zampe da una postura iniziale a una

finale

bull la spinta simultanea delle quattro zampe che permettono lrsquoeffettivo

movimento del main body37

La fase aerea risulta essere molto piugrave complessa e richiede un tempo di

attuazione maggiore rispetto a quella di spinta del busto

Lo spostamento assoluto della zampa che si solleva egrave la combinazione di

due movimenti quello attivo dipendente dalla traiettoria imposta allrsquoend effector

e quello passivo che si muove per mezzo della spinta offerta dal movimento del

busto i due movimenti sono strettamente correlati

Se lrsquoobiettivo egrave quello di massimizzare la velocitagrave del ciclo di camminata

la scelta egrave di prevedere lo spostamento della zampa piugrave ampio possibile (passo

lungo) Abbiamo comunque ritenuto utile introdurre entrambe le tipologie di

passo lungo e passo correttivo per la minimizzazione della distanza dal target

522 Stabilitagrave

Al fine di garantire la stabilitagrave egrave utile porsi nel caso quasi-statico cioegrave fare

in modo che il baricentro del robot cada sempre allrsquointerno del poligono di

stabilitagrave ciograve non sembra un problema per le fasi intermedie del ciclo di

camminata percheacute tutte e quattro le zampe toccano il terreno Il problema invece

si fa sentire nelle fasi in cui una zampa viene sollevata e un punto di contatto

viene a meno In questo caso abbiamo dovuto scegliere posture in cui il baricentro

cada nella base drsquoappoggio Ersquo indispensabile quindi prevedere tali configurazioni

e definirle in modo corretto

Occorre inoltre evitare che due zampe in appoggio poste sul medesimo

lato si urtino durante il moto infatti spazi di lavoro delle zampe presentano

strutturalmente zone di intersezione non trascurabili

37 corpo o busto del robot

Sviluppo dellrsquoalgoritmo di camminata 88

Un ulteriore accorgimento per migliorare la stabilitagrave risulta essere quello di

cercare di abbassere il baricentro durante la camminata al fine di mantenere

costante lrsquointensitagrave del moto associato alla forza peso del robot calcolato rispetto

ai punti di appoggio

523 Tempo

Un altro punto su cui si egrave posta particolare attenzione risulta essere il

piegamento delle zampe nel senso se decidere se per compiere un movimento egrave

piugrave conveniente (in termini di spostamento) tenere le zampe tese o piegate

In base a valori di test riscontrati si deduce che in genere conviene tenere

le zampe piuttosto tese poicheacute in questo modo lrsquoescursione angolare nonostante

amplifichi il movimento garantisce un corretto riposizionamento nella posizione

finale desiderata e i tempi non subiscono variazioni

53 Andature implementate

Dopo lrsquoanalisi compiuta sulle modellizzazioni naturali e sui parametri di

scelta abbiamo implementato due tipologie di camminata

Considerando la rigiditagrave del busto di ASGARD esso non dispone di spina

dorsale mobileabbiamo implementato uno stile quasi-statico che non altera lrsquoasse

del baricentro Questo ci ha vincolato a muovere una sola zampa alla volta

(motivazione da cercare anche nella alimentazione dei motori) facendolo partire

da una particolare postura in cui entrambe le zampe del lato sinistro del corpo

sono arretrate rispetto al busto e con angolature precisa degli arti

Abbiamo cosigrave creato una scomposizione del movimento in sei fasi

succesive

bull movimento zampa RL

bull movimento zampa RF

Sviluppo dellrsquoalgoritmo di camminata 89

bull spostamento in avanti del baricentro

bull movimento zampa LR

bull movimento zampa LF

bull spostamento in avanti del baricentro per tornare a posizione base

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

In questa tipologia di gait il robot si trova in piena stabilitagrave anche durante

lrsquoalzata di una zampa la proiezione del centro di massa risulta essere centrale al

triangolo drsquoappoggio

Questa tipologia di camminata quasi-statica egrave una alterazione del modello

Crawl38 presente in natura e nei modelli Aibo con lrsquoinnovazione di sfruttare

posture del normale trotto differenziandone e rallentandone le fasi di realizzazione

al fine di maggiorare il triangolo di appoggio in relazione alla struttura fisica del

nostro robot

Il segmento di appoggio dello stile Crawl viene qui espanso ad un

triangolo di stabilitagrave pur mantenendone le caratteristiche di spazio percorso e

velocitagrave

La nostra ricerca ci ha ulteriormente spinti alla creazione di un ulteriore

stile di camminata quasi-dinamico in cui la proiezione del baricentro durante

lrsquoalzata si spinge a coincidere con il lato del poligono di stabilitagrave

Le fasi di camminata diversificano da quelle precedenti per lrsquoangolazione

degli attuatori e lrsquoordine di esecuzione dei movimenti

Il passo risulta essere composto da 5 fasi

bull movimento zampa RF

bull movimento zampa LF

bull spostamento in avanti del baricentro

bull movimento zampa RR

bull movimento zampa LR

38 modello di trotto di Aibo

Sviluppo dellrsquoalgoritmo di camminata 90

Nella nostra analisi essendo ancora precario il controllo sugli attuatori

risulta impossibile realizzare un impulso tale da creare il balzo del robot Le

andature studiate escludono pertanto lrsquoandatura dinamica o trotto

La camminata quasi-statica egrave stata correttamente testata sul campo

ottenendo buoni risultati le tempistiche di risposta del robot no hanno permesso

perograve la completa realizzazione della quasi-dinamica che in alcune prove non viene

portata a termine in tutte le sue fasi a causa di cedimenti in stabilitagrave

Per questa ragione essa egrave stata ampiamente testata a simulatore

Per lrsquoanalisi dei suoi movimenti essi sono stati elaborati ed egrave stata creata

anche una variante che presenta una minimizzazione dellrsquoangolatura del giunto

spalla e riporta il movimento a quasi-stabile (passo correttivo esso sposta infatti il

robot sulllrsquoasse longitudinale solo di 2 cm)

54 Catene cinematiche del robot

Per lrsquoiplementazione a simulatore abbiamo dovuto adattare il nostro robot

ad una analisi cinematica e dinamica posizionando su di esso i sistemi di

riferimento in modo da costruire una catena cinematica aperta

Per semplificare il modello abbiamo deciso di caratterizzare la struttura del

robot in quattro catene cinematiche aventi base coincidente nel baricentro e

facendo coincidere ogni end-effector con la relativa zampa in movimento

La prima catena quindi che ci proponiamo di analizzare risulta quindi

essere la seguente

Sviluppo dellrsquoalgoritmo di camminata 91

z0

x0

y0

z1

x1

y1

y2

y3

y4

x2

x3

x4

Figura 49 Posizionamento dei sistemi di riferimento con D-H sulla zampa reale

Essa egrave stata implementata in Matlab utilizzando il metodo di D-H

precedentemente descritto implementato nel nostro tool di analisi

INIT_ROBOT Funzione di definizione delle componenti del robot allinterno del nostro simulatore In relazione alle componentistiche del nostro robot e alla grafica del simulatore questa funzione si propone di definire le parti fondamentali inserendo opportunatamente i parametri di Denavit Hartemberg Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 Copyright (C) 2003-2004 by Picco Sabrina zampa A clear L definifione allinterno della matrice L i parametri di Denavit Hartemberg sigma= 1 giunto prismatico sigma=0 giunto rotoidale sono stati inseriti due giunti prismatici per motivi di grafica del simulatore nel collegamento con i motori reali tali valori non verranno considerati alpha A theta D sigma L1 = link([0 -01 pi4 0 1] mod) L2 = link([0 -06 -pi4 0 0] mod) L3 = link([0 0 -pi4 0 1] mod)

Sviluppo dellrsquoalgoritmo di camminata 92

L4 = link([-pi2 -0573 0 0 0] mod) L5 = link([0 -0675 0 0 0] mod) L6 = link([0 -0735 0 0 0] mod) zampaa = robot(L zampaa Unimation AKampB) clear L

Nel codice Matlab riportato per la creazione di una zampa i parametri

prismatici introdotti sono utilizzati solamente a scopo grafico e vengono tralasciati

dallrsquoalgoritmo per la creazione dei movimenti e dei comandi da spedire algli

attuatori

Si egrave cercata una rappresentazione in grado di descrivere non soltanto i

giunti e i link ma anche altre caratteristiche fondamentali quali masse e lunghezze

Il passo viene scomposto principalmente in due passaggi movimento in

avanti delle zampe e spostamento del busto Nel secondo passaggio la catena

cinematica costruita deve ldquoinvertirsirdquo in quanto non saragrave piugrave la zampa del robot a

costituire il nostro end-effector ma essa saragrave solidale con il terreno e saragrave il

baricentro a diventare il nostro punto terminale asimulatore infatti non sono

possibili movimenti che sfruttano la semplice forza attrito

La catena cinematica verragrave cosigrave modificata

Creazione di un ulteriore robot per caratterizzare il cambiamento del punto di partenza della catena cinematicamentre per la prima parte del passo lend-effector egrave la zampadopo che questa egrave stata appoggiata lend-effector diventa il baricentro del robottino alpha A theta D sigma L1 = link([0 0 0 065 1] mod) L2 = link([0 0 0 0 0] mod) L3 = link([pi2 0 0 0 0] mod) L4 = link([0 0573 0 0 0] mod) L5 = link([pi2 0675 0 0 0] mod) L6 = link([0 0735 -pi4 0 0] mod) zampaa2 = robot(L zampaa2 Unimation AKampB)

Sviluppo dellrsquoalgoritmo di camminata 93

Figura 50 Fase di movimento delle zampe anteriorila base delle quattro catene

cinematiche egrave identificata con il baricentro di cui viene effettuata la prioezione

Figura 51 Fase di spostamento del baricentro si possono notare le proiezioni delle

basi delle rispettive catene cinematiche che si identificano con le zampe

La parte di codice presentato appartiene al file Init_robotm in cui vengono

definite tutte le catene cinematiche necessarie al movimento

Un ulteriore definizione di notevole importanza egrave la ricerca di tutti i punti

essenziali per il corretto posizionamento del robot durante la camminata

Sviluppo dellrsquoalgoritmo di camminata 94

Nel file DB_Positionm vengono memorizzate le posizione chiave per la

costruzione di un passo

Nel nostro algoritmo un passo egrave rappresentato da una sequenza di

posizioni base opportunatamente scelte in relazione ai parametri utili per

realizzare gait veloci e stabili

Il movimento che trasla tutta la struttura da un punto al successivo viene

definito da un profilo di accelerazione e velocitagrave implementato via software che

permette di ottenere ottenere un controllo efficiente e un movimento fluido che

rispetti certi vincoli di forza e di tempo

La funzione jtrajm infatti implementa al suo interno un polinomio di

quinto grado che permette il controllo in velocitagrave e accellerazine sia nel punto di

partenza che di fine della traiettoria permettendo un movimento ldquodolcerdquo che egrave in

grado di evitare picchi di torsione Purtroppo nella realizzazione pratica questo egrave

risultato fin troppo oneroso in quanto sui motori da noi usati non esiste alcun

controllo in velocitagrave

Al fine di rendere piugrave reale la simulazione abbiamo implementato un

semplice controllo in movimento da una posizione finale ad una posizione finale

in un certo intervallo di tempo Esso egrave costituito da un semplice polinomio di

terzo grado non attua controlli e gestisce il movimento spingendo il servo a

velocitagrave massima per ogni intervallo Presentiamo la parte di codice per la

gestione del calcolo delle traiettorie e le principali caratteristiche

sullrsquoimplementazione dei vincoli che diversificano in relazione al polinomio

utilizzato

FUNZIONE CUBICA_norm Funzione per la generazione di una traiettoria da un punto iniziale q0 ad un punto di arrivo qf in un certo intervallo di tempo tv utilizzando un polinomio di terzo grado parametri in input q0= posizione iniziale qf= posizione finale da raggiungere tv=tempo in cui effettuare lazione

FUNZIONE JTRAJ Funzione per la generazione delle traiettorie da qo a q1I numero di interpolazioni dipende dal valore di tLa costruzione di tale algoritmo di generazione avviene tramite lutilizzo di un polinomio di ordine 5 con condizioni di velocitagrave e accellerazione agli estremi parametri input q0=posizione iniziale

Sviluppo dellrsquoalgoritmo di camminata 95

parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [qtnqdtnqddtn] = cubica_norm(q0qftv) if length(tv) gt 1 controllo sul tempo tscal = max(tv) t = tv()tscal else tscal = 1 t = [0(tv-1)](tv-1) normalizzazione parametrotempo end q0 = q0() qf = qf() qt= a0+ a1t+ a2t^2+ a3t^3 vincoli da soddisfare qdt= a1+ 2a2t+ 3a3t^2 qddt= 2a2+ 6a3t implementazione dei vincoli A=q0 B= zeros(size(A)) C=((3(tscal^2))(qf-q0)) D=(((-2)(tscal^3))(qf-q0)) creazione del polinomio ttpv = [t^3 t^2 t ones(size(t))] p=[D C B A] creazione del vettore velocitagrave qtn = ttpv p

q1= posizione finale da raggiungere tv=tempo in cui effettuare lazione qd0=condizione velocitagrave nellestremo di partenza qd1=condizione velocitagrave nellestremo di arrivo parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 implementazione dei vincoli A = 6(q1 - q0) - 3(qd1+qd0)tscal B = -15(q1 - q0) + (8qd0 + 7qd1)tscal C = 10(q1 - q0) - (6qd0 +4qd1)tscal E = qd0tscal F = q0 creazione del polinomio tt = [t^5 t^4 t^3 t^2 t ones(size(t))] c = [A B C zeros(size(A)) E F] calcolo valore posizione qt = ttc calcolo la velocitagrave c1 = [ zeros(size(A)) 5A 4B 3 C zeros(size(A)) E ] qdt = ttc1tscal calcolo accellerazione c2 = [ zeros(size(A)) zeros(size(A)) 20A 12B 6C zeros(size(A))] qddt = ttc2tscal^2

Per la chiamata di entrambe queste funzioni vengono richieste le posizioni

di partenza di arrivo ed un tempo questrsquoultimo rappresenta il tempo che intercorre

tra un frame e il successivo cioegrave ogni quanto verragrave generato un valore di

posizione Per ottenere quindi un movimento il piugrave possibile continuo dovremo

richiedere la generazione di un elevato numero di frame introducendo un tempo

piccolissimo Ad esempio se vogliamo che lrsquointerpolazione generi 10 posizioni

intermedie e che tutto il movimento sia compiuto in 1 sec dobbiamo dare t=01

Sviluppo dellrsquoalgoritmo di camminata 96

55 Passo statico e dinamico

Finora abbiamo visto come sia possibile simulare il movimento di una

singola zampa o del baricentro del nostro robot per eseguire un passoa

simulatore questi movimenti devono perograve essere coordinati in modo opportuno

per permettere lrsquoesecuzione sequenziale delle fasi che lo compongono

In prima analisi il nostro lavoro si posto come obiettivo di creare un passo

quasi-statico in cui il baricentro del robot egrave strettamente compreso nella base

drsquoappoggio per garantire al robot una discreta stabilitagrave

Lrsquoanalisi delle fasi della camminata quasi-statica da noi introdotta

possono essere cosigrave schematizzate

Figura 52 Le 6 fasi della camminata quasi-statica

Da questo possiamo notare come il passo si divide in 6 movimenti in cui

vengono mosse le zampe sul lato sinistro del corpo si sposta in avanti il busto si

muovono le zampe sul lato destro e si risposta il busto per tornare alla posizione

di partenza

Ersquo da notare come lo spostamento del busto nellrsquoanalisi reale avviene

sfruttando lrsquoattrito delle zampe con il suolo mentre a simulatore egrave richiesta

lrsquoinversione della catena cinematica

La struttura da noi proposta e analizzata tenta di attuare una camminata

stabile e veloce

Il calcolo della stabilitagrave nei movimenti risulta effettivamente coerente con

le nostre aspettative

Sviluppo dellrsquoalgoritmo di camminata 97

Figura 53 Analisi margine di

stabilitagravesolo alzata(sinistra)in

movimento(destra)

Dove

321 ddd == distanza tra baricentro e perimetro

021 ne= ll durante il passo considero solo la distanza sullrsquoasse del moto

Dopo aver raggiunto un discreto livello di camminata quasi-statica il

nostro obiettivo si egrave spostato nella realizzazione di una camminata quasi-

dinamica

Figura 54 Fasi della camminata quasi-dinamica

Come si puograve notare in questa configurazione esistono istanti in cui il

baricentro del nostro robot giace sul perimetro del triangolo drsquoappoggio in questi

istanti servirebbe una risposta immediata degli attuatori per limitare le tempistiche

di movimento e permettere al robot di mantenere lrsquoequilibrio Questo fenomeno

presente anche in natura lo possiamo notare analizzando la corsa di una pantera

quando il suo corpo ondeggia in ampi angoli i suoi movimenti diventani fulminei

per mantenere la stabilitagrave

Il nostro algoritmo presenta la sezione camminata_statm che simula i due

passi e ne mostra le differenze

Sviluppo dellrsquoalgoritmo di camminata 98

Figura 55 Passo Statico vista semi frontale

Figura 56 Passo Statico vista dallrsquoalto

Figura 57 Passo Quasi-Dinamico vista semi

frontale

Figura 58 Passo Quasi-Dinamico vista

dallrsquoalto

Possimo notare anche dalle immagini come egrave posizionato il baricentro del

nostro robot rispetto alla base drsquoappoggio in diverse fasi del passo e come nella

camminata quasi-dinamica si spinge a limiti intollerabili per le caratteristiche

fisiche del nostro progetto attuale

Presentiamo di seguito lo schema a blocchi di analisi della camminata

Sviluppo dellrsquoalgoritmo di camminata 99

Cerca posizione da raggiungere

Calcola traiettoria end-effector tramite cubiche

Traccia poligono drsquoappoggio per laposizione raggiunta

inizio

Fine

Attua movimento

Posizione=target no

si

Figura 59 Schema a blocchi creazione singolo passo

Il codice proposto in appendice egrave stato successivamente opportunamente

modulato ma questo ha portato a ulteriori cali di prestezione Pertanto nella

esecuzione si egrave preferito riutilizzare il file integro Problemi di tempistiche sono

da attribuirsi alla parte grafica e al calcolo matriciale richiesto per ogni

movimento

La sperimentazione dei passi reali sul robot fisico sono stati effettuati

utilizzando array di valori di angoli di giunto estrapolati durante la simulazione

sopra citata

Sviluppo dellrsquoalgoritmo di camminata 100

56 Formule di forza e torsione sui giunti

Uno dei ruoli principali delle zampe egrave quello di sostenere la piattaforma

del robot e di evitare la caduta

A causa di un cedimento strutturale avvenuto durante i primi approcci di

pilotaggio dei motori abbiamo pensato necessario calcolare la forza e la torsione

sui giunti utilizzando le formule di Newton-Eulero viste precedentemente La

risoluzione di tali equazioni richiede una potenza di calcolo non indifferente ma

le tempistiche del nostro simulatore sono causate dalla lentezza nel plottaggio dei

grafici e dei movimenti del robot

Non avendo un diretto valore di velocitagrave dei motori ci egrave sembrato

interessante provare a calcolare effettivamente le tempistiche dei motori

Conoscendo tramite la cinematica diretta la posizione di arrivo per ogni coppia di

valori abbiamo calcolato lo spazio percorso Cronometrando il tempo richiesto

affincheacute i motori si portassero nella posizione voluta egrave stato possibile valutare la

velocitagrave media dei motori

Questa velocitagrave egrave stata successivamente introdotta nellrsquoalgoritmo

Per il calcolo delle formule di Newton-Eulero egrave inoltre da sottolineare

lrsquoimportanza della ripartizione delle masse ci egrave sembrato coerente ipotizzare le

equidistribuzione del peso su tutte e quattro le zampe in quanto la PIC aggiuntiva

non dovrebbe influenzare tale ripartizione

Dallrsquoanalisi svolta si trovano i seguenti valori sui giunti

Sviluppo dellrsquoalgoritmo di camminata 101

Figura 60 Gafici della torsione in un passo quasi-dianmico

Dal grafico possiamo inanzitutto notare come i valori di torsione che ogni

motore subisce sono inferiori al valore massimo possibile dichiarato dalla casa

costruttrice presente in ogni grafico con la linea nera continua

Possiamo vedere che il valore piugrave alto di torsione viene subito

dallrsquoattuatore presente sulla caviglia sul quale ricadono le maggiori sollecitazioni

Un comportamento analogo ma con decisamente meno carico avviene sul

giunto del ginocchio orientato come il precedente che ha la funzione di aiutare la

caviglia nel sostegno del peso

Il giunto della spalla presenta lrsquoasse di rotazione parallelo alla forza peso

di cui per questo motivo non se ne fa carico Le sue piccole perturbazioni sono

causate durante il movimento del busto dalla resistenza della forza di attrito

sfruttata per il movimento e durante lrsquoalzata della zampa dal peso di ogni singola

Sviluppo dellrsquoalgoritmo di camminata 102

articolazione che risulta perograve essere pressocheacute irrilevante rispetto al peso del

busto

Durante il movimento si possono osservare sulle grandezze di ginocchio e

caviglia una serie di oscillazioni tra due valori essi sono causati dalla ripartizione

del peso su tre o quattro zampe in base alle alzate consecutive quando il peso egrave

ripartito su tre zampe ovviamente il carico che ogni singola zampa egrave costretta a

subire cresce

Ovviamente durante lrsquoalzata ogni singola zampa presenta sui giunti

torsioni pressocheacute nulle questi minimi valori sono da attribuirsi alla sola

resistenza di ogni link alla forza di gravitagrave

La parte di codice fondamentale riportata in Appendice B per questa

funzione risulta essere la definizione dei parametri e lrsquoimplementazione delle

formule di andata e di ritorno dei valori Le funzione base viene chiamata

allrsquointerno di una ulteriore funzione NW-EUm che adatta lrsquoanalisi al passo

Esisteragrave nellrsquoalgoritmo una funzione eulerom che effettueragrave i calcoli di

Newton-Eulero anche per la catena cinematica che presenta come end-effector il

baricentro

57 Anello di Controllo

Un ulteriore controllo introdotto egrave il calcolo della cinematica inversa e il

controllo sulla soluzione trovata

A questo anello di controllo egrave stato predisposto il possibile inserimento di

un eventuale errore nel raggiungimento della posizione voluta Questo errore

potrebbe essere rilevato in futuro da sensori di posizione o da un sistema di

stereovisione dellrsquoambiente in grado di percepire la reale posizione di ogni zampa

Per ora viene passato come parametro di input settato da utente

Sviluppo dellrsquoalgoritmo di camminata 103

Figura 61 Anello di controllo cinematica inversa

Diversi approcci sono stati implementati per il calcolo della cinematica

inversa la funzione dagrave la possibilitagrave allrsquoutente settare le equazioni decisionali

quali scegliere il metodo da utilizzare settare lrsquoapprossimazione desiderata nel

caso di metodo del gradiente e la configurazione a gomito alto o basso nel caso di

metodo geometrico

Presentiamo di seguito lo schema a blocchi di sviluppo dellrsquoalgoritmo che

ci permetteragrave una spiegazione piugrave immediata del funzionamento

Sviluppo dellrsquoalgoritmo di camminata 104

Applico formule geometriche Metodo gradiente

Scelta algoritmo

inizio

Metodo inseguimento veloce del gradiente

Calcolo cinematica diretta

Setto parametri decisionali

Calcolo errore

fine

Figura 62 Schema a blocchi calcolo cinematico

Proponiamo successivamente lo pseudo codice in merito la funzione di

inseguimento veloce del gradiente al fine di rendere piugrave chiare e dettagliate le sue

caratteristiche di esecuzione

1 Anticipatamente viene settata la approssimazione desiderata per il

raggiungimento del target e lrsquoincremento dellrsquoangolo

2 Pongo nullo lrsquoincremento iniziale

Sviluppo dellrsquoalgoritmo di camminata 105

3 Pongo nulli i rispettivi valori di gradiente_old dei singoli giunti

4 Calcolo la distanza dal target con le posizioni base

5 Fintantochegrave la distanza non egrave minore dellrsquoapprossimazione introdotta

bull Calcolo i valori dei nuovi gradienti incrementando i singoli angoli

del valore incremento prefissato

bull Confronto il valore del segno del nuovo gradiente del primo giunto

con il corrispettivo gradiente_old

- se segno discorde diminuisco il valore dellrsquoangolo in

funzione el valore del gradiente nuovo e old al fine di

arrivare al punto di colle

- se segno concorde aumento ulteriormente lrsquoangolo del

giunto aggiungendogli un valore proporzionale alla distanza

trovata

bull viene eseguito lo stesso controllo per il secondo giunto

bull incremento la variabile num_iterazioni

bull i nuovi gradienti diventano i gradienti_old

bull Calcolo la distanza con il nuovi valori degli angoli dei due giunti e

torno al punto 5

58 Map-building e scelta del gait

Il nostro scopo egrave quello ricreare un programma che ricevendo in input i

soli valori di dimensione dellrsquoarea di gioco e posizione degli ostacoli fornisca al

robot tutti i comandi per muoversi nellrsquoambiente e arrivare allrsquoobiettivo senza piugrave

intervento esterno A tal fine questa funzione dovragrave comprendere diversi goal

intermedi che possono essere cosigrave schematizzati

Sviluppo dellrsquoalgoritmo di camminata 106

Creazione mappa

Ricerca percorso

Scelgo passi da attuare

inizio

fine

Il programma si divide in tre parti fondamentali

bull creazione della mappa tramite algoritmo di map-building

bull ricerca del percorso

bull decisione del passo da intraprendere per ogni istante e applicazione

del gait oppotuno

581 Costruzione della mappa ed espansione degli ostacoli

Abbiamo elaborato la costruzione di una mappa creando una matrice

bidimensionale in cui ogni cella rappresenta le possibili posizioni del baricentro

del robot nellrsquoambiente Utilizzando valori noti in input per le dimensioni e i

posizionamenti degli oggetti egrave il programma stesso a fornirci la matrice

Un ostacolo viene identificato come un cubetto in cui le coordinate inserite sono

Sviluppo dellrsquoalgoritmo di camminata 107

Xa1Ya1

a

Xa2Ya2

Per ogni cella sono presenti due valori il primo rappresenta la distanza

dallrsquoobiettivo il secondo la distanza dallrsquoostacolo piugrave vicino (se ne esiste piugrave di

uno) Questi valori sono determinati tramite onde di propagazione che partono

dallrsquooggetto in esame e si diffondono in tutte le direzioni allrsquointerno della mappa

Lrsquoonda egrave da considerarsi come una scansione prima orizzontale e poi verticale

dellrsquoambiente che incrementa ad ogni riga i controlli sulla distanza sono

introdotti in seconda analisi il controllo sulla distanza dellrsquoostacolo piugrave imminente

qualora ce ne siano presenti piugrave di uno e il controllo sullrsquoespansione drsquoonda

limitata qualora lrsquoostacolo o la destinazione si trovino ai borbi della mappa

Gli ostacoli presentano una ulteriore onda di espansione orizzontale in

quanto egrave solo lungo questa direzione che possono avvenire collisioni tra il nostro

robot in movimento e gli ostacoli fissi Accorgimenti successivi ci hanno

permesso la costruzione di un ulteriore passo correttivo che puograve essere utilizzato

in un secondo momento per un avvicinamento forzato

Figura 63 Mappa creata vista dallrsquoalto

Sviluppo dellrsquoalgoritmo di camminata 108

Figura 64 Visione della mappa semilaterale si possono vedere i corpi degli ostacoli

Matrice generata

10 3 9 2 109 0 110 0 110 0 109 0 4 2 9 2 8 2 109 0 110 0 110 0 109 0 3 1 8 1 7 1 6 2 5 1 109 0 110 0 110 0

110 0 110 0 109 0 4 2 109 0 110 0 110 0 110 0 110 0 109 0 3 2 2 2 1 1 0 1

Ogni elemento della matrice rappresenta un vertice di intersezione delle

coordinate (xy) della mappa Il primo valore equivalente a 110 rappresenta

lrsquoostacolo il valore 109 la sua espansione in altro caso esso egrave la distanza dalla

destinazione Il secondo valore rappresenta la distanza dallrsquoostacolo piugrave

imminente

582 Algoritmo di ricerca del percorso minimo

Avendo a disposizione una matrice che mi identifica tutto lrsquoambiente che

circonda il robot abbiamo deciso di modificare lrsquoAlgoritmo di Dijkstra

precedentemente descritto al fine di trovare un percorso minimo con bassa

computazionalitagrave di calcolo

Sviluppo dellrsquoalgoritmo di camminata 109

Nella prima fase abbiamo applicato lrsquoalgoritmo di ricerca operativa non su

un grafo ma su una matrice considerando come nodi successori le quatto celle

confinanti (su giugrave dx sx) rispetto a quella in cui ci troviamo Il costo di

movimento o meglio il miglior successore in cui spostarsi per riterare lrsquoanalisi

viene scelto tramite lrsquoimplementazione di un compromesso adeguato tra

minimizzazione della distanza dal target e massimizzazione della distanza dagli

ostacoli

Questa funzione restituisce in output se egrave stato trovato un percorso in caso

affermativo di esso visualizza le coordinate dei punti da attraversare e le

indicazioni in rappresentazione direzionale (destra sinistra avanti indietro)

Direzioni

start Destra Avanti Avanti Destra Destra Avanti Avanti Destra Destra Destra

Coordinate

1 1 1 2 2 2 3 2 3 3 3 4 4 4 5 4 5 5 5 6

5 7

Tabella 2 risultati ricerca percorso

Riportimo il flow-chart che descrive lrsquoalgoritmo di ricerca sopra citato

Sviluppo dellrsquoalgoritmo di camminata 110

pos =partenza migliore=non_valido

Considero 4 successori

Passo ad altro

successore

pos=visitato

pos=v

Stampo percorso in coordinate

Trasformo percorso in direzioni

inizio

Pos = destinazione

Egraversquo pos sul bordo

Considero 32 successori

Insieme successori vuoto

Considero successore v

distanza dest_vltdistanza dest

migliore

distanza ost_vltdistaza ost

migliore

Percorso non trovato

salvo pos in percorso

fine

si no

si

no

si

si

no

no

no

si

Figura 65Schema a blocchi ricerca percorso

Sviluppo dellrsquoalgoritmo di camminata 111

583 Realizzazione del gait

Una volta generato il percorso da seguire segue la parte piugrave dispendiosa in

tempo in quando legata alla grafica

Sono stati implementati per la realizzazione del percorso i seguenti passi

bull in avanti

bull in dietro

bull a destra

bull a sinistra

bull correttivo avanti

bull correttivo indietro

bull correttivi laterali non sono stati introdotti a causa del giagrave minimo

spostamento laterale per ogni passo in quella direzione (2 cm)

La terza parte di algoritmo considera il percorso generato e decide il passo

da mettere in pratica uno spostamento sullrsquoasse verticale del piano implica una

scelta ulteriore per la calibrazione del numero di passi lunghi e dei passi correttivi

Una ampia falcata permette il movimento del robot di 7 cm mentre il passo

correttivo di 2 Il programma in base al percorso ottimizza le tempistiche

effettuando il maggior numero di passi ampi e riassestando la posizione con il

minor numero possibile di passi correttivi dispendiosi in tempo

Saragrave possibile ammirare tutta la camminata del nostro robot in una

immagine che plotta tutti i movimenti del robot

Sviluppo dellrsquoalgoritmo di camminata 112

Figura 66 Robot in movimento nellrsquoambiente

Al raggiungimento dellrsquoobiettivo destinazione sulla mappa appariragrave oltre il

percorso ideale il percorso effettivamente compiuto dal robot dandoci in uscita

anche le approssimazioni al valore reale di destinazione

Figura 67 Immagini del percorso trovatoin verde percorso ideale in blu percorso

effettivo

Tali valori rappresentano la distanza ancora da percorrere e la scelta

dellrsquoulteriore passo da intraprendere per compierla

Sviluppo dellrsquoalgoritmo di camminata 113

SONO ARRIVATO A DISTANZA DALL OBIETTIVO DIX = 35527e-015 Y = -03200 testo = devo fare ancora ans = 16000 testo = passi correttivi indietro

Dopo averci fornito queste informazioni il controllore comanderagrave e faragrave

eseguire al robot i passi correttivi appropriati che gli mancano per il

raggiungimento della destinazione

Schema a blocchi dellrsquoultima parte dellrsquoalgoritmo

Sviluppo dellrsquoalgoritmo di camminata 114

Alzata nello start

Analisi elemento i

Avanti Indietro Passo dx Passo sx

Calcolo avanzamento complessivo

Calcolo num passi lunghi e

corretivi

Esegue passi

Memorizzo pos

Stampa percorso vero e ideale

Calcola distanza dal target

Effettua passi correttivi ancora

possibili

inizio

Esistono elementi in percorso

Calcolo indietreggiamento

complessivo

Esegue passo

fine

no

si

1 -1 2 -2

Figura 68 Schema a blocchi movimento

Capitolo 6 Sperimentazione e analisi dei risultati

Sperimentazione e analisi dei risultati 116

61 Risultati statici

La creazione di file a se stanti contenenti tutte le possibili posture del

nostro robot e la realizzazione di procedure che identificano i passi standard

possono essere in un secondo momento cablati su un chip di controllo diretto

posizionato on-board

Questo darebbe la possibilitagrave reale al robot di deambulare senza

condizionamento con un Pc remoto Il processo di creazione dei percorsi vincola

perograve il movimento in quanto non sono presenti tuttora sensori di visione

Possiamo inoltre affermare che tra gli stili di camminata da noi studiati ha

un ruolo fondamentale la camminata quasi-statica che effettivamente permette il

movimento del robot in ambiente piano la camminata quasi dinamica richiede

ulteriori fasi di analisi soprattutto in merito al miglioramento della risposta dei

motori

Sono state effettuate diverse prove per la realizzazione di movimenti

fluidi il valore riscontrato a simulatore e di 30 frame mentre nella realizzazione

pratica a causa dei tempi di risposta egrave stato raggiunto un valor di soglia frame=8

che permette la realizzazione di movimenti continui

Sperimentazione e analisi dei risultati 117

611 Passo reale effettuato

In prima analisi poniamo le foto delle fasi piugrave significative del passo quasi-

statico compiuto da ASGARD in laboratorio

- 1 - - 2 -

- 3 - - 4 -

- 5 - - 6 -

Sperimentazione e analisi dei risultati 118

- 7 - - 8 -

- 9 - - 10 -

- 11- - 12 -

Tabella 3 Foto del passo quasi ndashstatico eseguito da ASGARD

Le foto rappresentano la sequenza di esecuzione della nostra camminata

quasi-statica nelle viste dallrsquoalto si possono notare le caratteristiche delle posture

assunte dalle zampe e si puograve verificare il poligono drsquoappoggio

Sperimentazione e analisi dei risultati 119

Da porre in particolare evidenza sono gli angoli del giunto che rappresenta

la spalla calibrati al fine di non interferire nel movimento durante il moto

Nelle viste laterali sono da porre in particolare evidenza i momenti di volo

di ogni singola alzata caratterizzandone le tempistiche di movimento

Da notare le immagini 5 6 e 1011 in cui si verifica la spinta del baricentro

in avanti nel primo caso per lrsquoavanzamento a metagrave passo nel secondo caso per

riposizionare le zampe nella posizione iniziale

612 Misurazioni reali della pressione

Durante le prove di laboratorio in merito alla camminata statica del robot

sono stati effettuati rilevamenti dellrsquounico sensore di pressione posto sotto la

zampa anteriore sinistra

Figura 69 Particolare del sensore di pressione da noi costruito (sinistra) e del

posizionamento di esso sotto la zampa anteriore sinistra (destra)

Sperimentazione e analisi dei risultati 120

I dati riscontrati sono

istanti descrizione Valori di resistenza misurati(ohm) media

passi 1 2 3 4 5 ottenuta

1 4 in appoggio 321 287 298 314 306 3052 2 alzo C 233 246 239 253 232 2406 3 appoggio C 266 275 294 278 289 2804 4 alzo B 1271 1232 1244 1262 1251 1252 5 appoggio B 98 90 99 92 87 932 6 sposto busto 311 308 298 301 287 301 7 alzo D 198 209 203 195 211 2032 8 appoggio D 302 319 311 320 301 3106 9 alzo A 180 193 184 192 177 1852

10 appoggio A 268 259 262 270 281 268 11 sposto busto 108 115 127 122 123 119 12

Assestamento

308

305

311

313

299

3072

Tabella 4 Rilevamenti sensore pressione

Da questa tabella abbiamo trasformato i valori di resistenza in forza secondo i

diagrammi di caratteristica del sensore e abbiamo trovato

val resistenza pressione

Ohm

Kg

4 in appoggio 3052 031 alzo C 2406 045

appoggio C 2804 034 alzo B 1252 002

appoggio B 932 15 sposto busto 301 0306

alzo D 2032 049 appoggio D 3106 034

alzo A 1852 055 appoggio A 268 046 sposto busto 119 06 assestamento

3072

033

Tabella 5 Trasformazione in forza dei valori misurati del sensore pressione

Sperimentazione e analisi dei risultati 121

Da cui si puograve ricavare il seguente grafico

Volori di pressione rilevati sperimentalmente

002040608

1121416

0 5 10 15

istanti temporali passo (sec)

pres

sion

e (K

g)

pressione

impatto con il suolo

Alzata

Figura 70 Grafico della pressione

Da questo possiamo notare come effettivamente il sensore rileva le

variazioni di forza peso che agiscono sulla zampa

Le misure sono state effettuate dopo un periodo di assestamento iniziale

quando effettivamente tutte le zampe sono appoggiate il carico risulta essere

minore mentre aumenta alle singole alzate delle altre tre articolazioni Si puograve

inoltre notare dal grafico come dopo lrsquoalzata la zampa subisce un forte impatto

con il terreno istante 5 e non si riposiziona piugrave esattamente corretta aderenza

qusto causa un eccessivo carico solo su alcune parti esterne del piedino (dove egrave

situato il sensore) che andranno ad aggravare le misurazioni durante le successive

alzate

Purtroppo questo incorretto posizionamento egrave causato dalla poca mobilitagrave

del giunto passivo della zampa che puograve essere migliorato solo tramite interventi

alla struttura meccanica Ulteriore vantaggio si potrebbe riscontrare con

lrsquoinserimento di un controllo di velocitagrave che eviti impatti considerevoli con il

terreno

Sperimentazione e analisi dei risultati 122

613 Confronti di cinemetica inversa

Proponiamo alcuni risultati ottenuti con i tre diversi metodi di cinematica

inversa introducendo disturbo nullo

Metodo geometrico

Metodo del gradiente

Inseguimento veloce

del gradiente Approssimazione=25 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 438

Errore in gradi 0 2 2 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3

N= 85

Errore in gradi 0 2 2 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1

Approssimazione=05 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 2030

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

N= 130

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

Tabella 6 Confronto risultati ottenuti conmetodi cinematica inversa

Sperimentazione e analisi dei risultati 123

Da cui si possono ricavare i seguenti andamenti dellrsquoerrore

Errore sul secondo giunto con approssimazione di 25 gradi

01234

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Errore sul terzo giunto con approssimazione di 25 gradi

0

1

2

3

4

0 2 4 6 8

numero angoli

erro

re (g

radi

) metodogeometrico

metodo diinseguimento delgradiente

metodo diinseguimentoveloce

Errore sul secondo giunto con approssimazione di 05 gradi

0

05

1

0 2 4 6 8

nume r o a ngol i

met odo gradient e

met odo diinseguiment o delgradient e

met odo diinsegiument oveloce

Errore sul terzo gionto con approssimazione di 05 gradi

0

05

1

15

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Figura 71 Grafici che rappresentano lrsquoandamento dellrsquoerrore trovato

Sperimentazione e analisi dei risultati 124

I valori degli angoli inseriti sono quelli effettivamente lanciati come

comando ai motori

Vediamo che nonostante il primo metodo sia il migliore in quanto fornisce

ottimi risultati con una sola iterazione ha a monte una oneroso carico di analisi

Il metodo di inseguimento veloce fornisce buoni risultati con una notevole

diminuzione del numero di iterazioni rispetto al metodo del gradiente semplice

essi si sono quindi dimostrati metodi di qualitagrave efficiente per il ritrovamento di

posizioni desiderate Si ricorda che questi metodi sono stati qui analizzati come

banco di prova per possibili applicazioni in robot presenti in laboratorio dotati di

catene cinematiche piugrave complesse (LARP di UScarfogliero[39])

62 Risultati dinamici

Dallrsquoanalisi dei grafici ottenuti tramite le formule di Newton-Eulero

presentati nel capitolo precedente possiamo affermare che i motori utilizzati sono

stati correttamente calibrati in merito di forze e torsioni a cui sono sottoposti

durante il passo

Variando il tempo di esecuzione dei movimenti otteniamoli seguente

grafico

Sperimentazione e analisi dei risultati 125

Figura 72 Grafico torsione con interpolazione limitata a 2 frame

Riducendo di molto il valore di interpolazione come si puograve vedere di

grafici i motori subiscono delle variazioni di carico molto forti in istanti

ravvicinati in quanto come giagrave piugrave volte affermato non esiste un controllo in

accelerazione e velocitagrave Vediamo inoltre come i valori di picco del giunto della

caviglia della zampa b trovati sono in stretta similitudine con i parametri misurati

nei rilevamenti del sensore di pressione posto sotto la zampa stessa I due grafici

simili nellrsquoandamento presentano come unica differenza la misura dellrsquoimpatto

con il suolo nel grafo della pressione viene rilevato mentre la torsione del motore

non evidenzia le forze di repulsione del suolo ma solo le forze i momenti e forza

di gravitagrave sullrsquoasse rotoidale del giunto

Sperimentazione e analisi dei risultati 126

Notiamo comunque che nonostante i picchi subiti i valori rimangono nei

limiti proposti dalla HITEC

Il cedimento strutturale riscontrato egrave stato quindi attribuito a imprecisioni

di laboratorio avvenute per inesperienza iniziale

621 Caratteristiche negative dei motori

6211 Velocitagrave

Una nota negativa nellrsquoutilizzo di questi servo attuatori va perograve apostrofata

in merito alla velocitagrave di rotazione che rimane di gran lunga inferiore a quella

dichiarata dalla casa costruttrice ( 023 sec60deg con carico 018 sec60deg a vuoto)

6212 Alimentazione

Un problema riscontrato durante le prove sul campo riguarda

lrsquoalimentazione I motori vengono alimentati direttamente dalla PIC che genera i

segnali la quale egrave a sua volta alimentata da un trasformatore in grado di fornire

circa 35A alla tensione di utilizzo di 6V Dopo aver riscontrato dei problemi

durante lrsquoutilizzo di piugrave motori in simultanea siamo andati a verificare i valori

effettivi di corrente assorbita a run-time Il valore dichiarato di 900mA (senza

carico) sulle specifiche HITEC [28] consentirebbe il movimento di pressocheacute tutti

i motori in simultanea ma con carico applicato si sono riscontrati valori di picco

di 18A Essendo improbabile che tutti i 12 motori vengano utilizzati in

contemporanea e sotto massimo sforzo non egrave necessario dover fornire

costantemente 216A ma risulta comunque chiaro che in alcuni casi la corrente

fornita non egrave sufficiente e ciograve causa malfunzionamenti alla PIC Oltre alla

necessitagrave di acquistare un trasformatore piugrave potente sarebbe opportuno separare

lrsquoalimentazione dei motori da quella della PIC o perlomeno apportare le

necessarie modifiche affincheacute la corrente fornita al processore non sia

strettamente dipendente da quella assorbita dai motori

Sperimentazione e analisi dei risultati 127

63 Caratteristiche del percorso

Solitamente la deambulazione per sistemi legged richiede al robot di essere

fornito di un considerevole numero di sensori per lrsquoanalisi dellrsquoambiente

La realizzazione di un nuovo algoritmo che facendo cooperare elementi di

cinematica e ricerca matematica permette la camminata fornisce un efficiente

mezzo di analisi

I dati a disposizione ci permettono di affermare che lrsquoalgoritmo di

creazione delle mappe e ricerca di percorsi minimi presenta ottime risposte a

differenti tipologie di ambienti proposti

Tra le principali doti di cui esso dispone ci permettiamo di sottolineare la

velocitagrave computazionele e la semplicitagrave di utilizzo

Inserendo infatti semplicemente le dimensioni dellrsquoarea drsquoazione e la

definizione delle coordinate dellrsquoostacolo esso rileva il percorso minimo che ci

conduce al target in tempistiche ridotte

La parte innovativa di tale algoritmo permette non solo di generare il

percorso ma di delegare al sistema la scelta del passo da intraprendere nel singolo

istante basandosi semplicemente su coordinate geometriche e su un data base di

posizioni possibili

La fase di decisione del passo da intraprendere puograve essere considerato un

buon risultato di ricerca nella creazione della prima attivitagrave celebrale di ASGARD

Sperimentazione e analisi dei risultati 128

Figura 73 Esempi di percorsi provati a simulatore

Capitolo 7 Conclusioni e sviluppi futuri

Conclusioni e sviluppi futuri 130

71 Risultati raggiunti

Il percorso di analisi svolto ci ha permesso di realizzare un prototipo di

robot quadrupede tra i piugrave leggeri presenti nella ricerca Costriuito con materiali

tecnologicamente avanzati che gli garantiscono particolari doti di elasticitagrave e

torsione richiede anche per il movimento semplici attuatori utilizzati

abitualmente nellrsquoambito del modellismo

Queste considerevoli doti pongono ASGARD in una rilevante posizione per

la realizzazione futura di consistenti progetti di Trot gait deambulazione in

ambienti ostili e superamento di ostacoli

Nonostante il nostro robot non sia fornito come GEO (vedi cap3) di una

spina dorsale adattabile la camminata da noi implementata gli fornisce stabili

posture che gli consentono un movimento rapido nellrsquoambiente

Tale innovativa camminata permette infatti al nostro robot tempistiche di

movimento per nulla invidiabili a Patrush o a Tekken (vedi cap3)

Concludendo questo lavoro possiamo affermare di aver realizzato un

potente mezzo di analisi della camminata statica e dinamica dimostrandosi

estremamente utile nelle prime fasi di analisi e nella realizzazione pratica

successiva

Essendo il nostro robot tuttora sprovvisto di sensori ci egrave parso utile

implementare un algoritmo di ricerca del percorso minimo in ambiente con

ostacoli in posizioni note

A tal fine abbiamo pensato di far cooperare diversi settori di ricerca

rielaborando algoritmi di ricerca operativae applicandoli a mappe di ambienti

Il notevole risultato ottenuto permette ad ASGARD di riconoscere

lrsquoambiente nonostante non ottenga feedback dallo stesso Questo algoritmo

rappresenta il primo sostanziale passo per la creazione di un sistema di

apprendimento per rinforzo intelligente per il nostro robot

Conclusioni e sviluppi futuri 131

La comunicazione con i servo motori ha permesso un primo reale

interfacciamento tra macchina e robot e lo studio del movimento ha permesso al

robot di compiere i suoi primi passi

72 Progetti futuri

Attualmente il robot egrave in grado di deambulare in ambiente piano e molte

sono le applicazioni e le migliorieche potrebbero essere aggiunte al controllo del

nostro automa

721 Modifiche meccaniche

Miglioramento del giunto passivo che si trova nella caviglia la fine di

realizzare un sistema mossa-smorzatore[40] che riesce ad attuire gli urti e le

oscillazioni presenti nellrsquoimpatto durante lrsquoappoggio della zampa al terreno

A tal scopo egrave stato realizzato il primo rudimentale progetto di

reingegnerizzazione del giunto ottenendo il seguente risultato

Figura 74 Caratteristiche del progetto di zampa realizzato si possono notare le

torsioni possibili su due assi

Conclusioni e sviluppi futuri 132

In esso si puograve notare come il giunto del piedino sia diventato

completamente mobile regolato solamente dalla costante elastica delle molle che

puograve essere a sua volta regolata dalle viti presenti sulla base del piedino

Il sistema molla-smorzatore egrave in grado di immagazzinare energia durante

lrsquoimpatto con il suolo e di riutilizzarla per il riposizionamento in aderenza

perfetta

Ulteriore miglioria consigliata egrave lrsquoincremento dei sensori al fine di

permettere al robot una conoscenza piugrave vasta e piugrave autonoma dellrsquoambiente

esterno Un ritorno di valori sensoriali inoltre migliorerebbe il programma da noi

realizzato permettendo la reale acquisizione di dati esterni e non forniti da utente

Il sensore fino ad oggi presente ci permette semplicemente di capire i

carichi presenti sulla zampa ma non ci fornisce ulteriori informazioni Ponendo un

sensore su ogni zampa e migliorando la struttura portante di ogni singola

cavigliaverrebbero forniti dati utili nel valutare il corretto posizionamento della

zampa e cioegrave la corretta esecuzione di ogni passo

Al fine di un futuro miglioramento della parte sensoriale egrave stata condotta

una ricerca riguardante i migliori sensori disponibili sul mercato che meglio si

adattano alle nostre problematiche tale ricerca viene presentata in Appendice A

722 Miglioramenti Hardware

Un ulteriore miglioramento egrave richiesto nella comunicazione tra computer e

scheda di comando degli attuatori

Questa scheda non permette tuttora la programmazione della PIC presente

su di essa andrebbe rivisto il circuito presente in modo da sfruttare anche i canali

di ritorno in lettura in modo da sfruttare questi ultimi per feedback sensoriali

Questo miglioramento permetterebbe lrsquoutilizzo della scheda come interfaccia di

inputoutput del robot

Conclusioni e sviluppi futuri 133

Di primaria necessitagrave egrave la differenziazione dellrsquoalimentazione dei motori

dallrsquoalimentazione della scheda per non compromettere il corretto funzionamento

della PIC

723 Miglioramenti Software

Raggiunto lrsquoobiettivo di una buona camminata quasi-statica si puograve pensare

di integrare un controllore on-board aggiungere sistemi di trasmissione wireless e

unrsquoalimentazione autonoma per rendere il robot indipendente dalla postazione

fissa

Come si puograve notare i campi di ricerca sono molto vasti da semplici

migliorie hardware al campo di Intelligenza Artificiale per dotare il robot di

potenzialitagrave che lo rendano il piugrave possibile un emulatore dei comportamenti

naturali di un mammifero

73 Conclusioni finali

A causa della complessitagrave dellrsquoanalisi e delle difficoltagrave implementative

riscontrate alcune parti richiedono ancora un grosso intervento per arrivare a

efficienti strumenti di precisione per lrsquoattuazione dei movimenti

Sono comunque da sottolineare i grandi passi compiuti In quanto in poco

piugrave di un anno il progetto egrave stato creato e messo in pratica riuscendo ad arrivare

ad un passo cruciale per il corretto funzionamento

Il continuo progresso e il continuo impegno potranno portarci in un futuro

non troppo lontano alla creazione di amici elettronici in grado di giocare con noi

e di muoversi come farebbe un normale amico a quattro zampe

Lrsquointroduzione inoltre di sistemi di camminata dinamica intelligente in

qualsiasi ambiente porterebbe evoluzioni significative anche in ambito di bio-

ingegneria ambientale rendendo in questo modo possibile lrsquoacquisizione di dati

Conclusioni e sviluppi futuri 134

provenienti da habitat inaccessibili allrsquouomo quali crateri di vulcani profonditagrave

marine o pianeti del sistema solare permettendo cosigrave una crescita culturale

dellrsquointera umanitagrave

Bibliografia

[1] NDiolaiti ldquoSistemi di navigazione per robot mobili in ambienti sconosciutirdquo

Thesis 2001

[2] J Borenstein e L Feng ldquoMeasurement and correction of systematic odometry

errors in mobile robotsrdquo In IEE Transactions on Robotics and Automation

vol7 NO 12 pag 869-880 1996

[3] KS Chong e L Kleeman ldquoAccurate odometry and error modelling for

mobile robotrdquo In Proceedings of IEEE International Conference on Robotic

and Automation pag 2783-2788 Albuquerque New Mexico 1997

[4] U Gerecke e N Sharkey ldquoQuick and Dirty Localization for a Lost Robotrdquo

University of Sheffield 1999

[5] B Yamauchi A Shultz e W Adams ldquoMobile robot exploration and map-

building with continuous localizationrdquo In Proceedings of IEEE International

Conference on Robotic and Automation pag 3715-370 Leuven Belgium

1998

[6] H TakedaC Facchinetti JC Latombe ldquoPlanning the motions of a mobile

robot in a sensory uncertainty fieldrdquo In IEEE Transactions on Pattern

Analysis and Machine Intelligence pag 1002-1017 oct 1994

[7] JP Laumond editor ldquoRobot Motion Planning and Controlrdquo Published 1999

[8] C Sanitati ldquoAnalisi e implementazione di andature per il robot quadrupede

Sony Aibordquo Thesis 2001

[9] MH Raibert ldquoLegged robots that balancerdquo MIT Press Cambridge

[10] httpmarsroversjplnasagovgalleryspacecraft

Bibliografia 136

[11] AAbourachid ldquoA new way of analysing symmetrical and asymmetrical

gait in quadrupedsrdquoCRBiologiesvol 326pag 625-630May 2003

[12] JAVilenskyJACook ldquoDo quadrupeds require a change in trunk posture

to walk backwardrdquoJournal of Biomechanicsvol33pag 911-916March 2000

[13] Oricom technology ldquoQuadruped Locomotion- Musing about running dogs

and othe 4-legged creaturesrdquo(httpwwworicomtechcomprojectslegshtm)

[14] RKurazumeKYoneda e SHiroseFeedforward and Feedback dynamic

trot gait control for quadruped walking vehicleAutonomous Robotsvol12

pag 157-1722002

[15] H Kimura I Shimoyama e H Miura ldquoDynamics in the dynamic walk of

a quadruped robotrdquo RSJ Advanced Robotics vol4 no3 pp283-301 1990U

(httpwwwkimuraisuecacjpfacultiesColliedynamic-walk-of-quadrupedhtml)

[16] M Raibert H Brown MA Chepponis EF Hastings S Murthy e FC

Wimberly ldquoDynamically Stable Legged Locomotion Second Report to

OARPArdquo Robotics Institute Carnegie Mellon University January 1983

(httpwwwaimiteduprojectsleglabrobotsquadrupedquadrupedhtml)

[17] MH Raibert M Chepponis and H Brown ldquoRunning on Four Legs As

Though They Were Onerdquo IEEE Journal of Robotics and Automation Vol

RA-2 No 2 June 1982 pp 70-82

[18] STalebiIPoulakakisEPapadopoulos e MBuehler ldquoQuadruped robot

running with a bounding gaitrdquoCenter for Intelligent MachinesMcGill

UniversityMontreal

[19] MA Lewis e LS Simo ldquoNeurocore Evolution Development and

Roboticsrdquo Sumitted to IROS 96 Osaka(httpuirvliaiuiucedutlewispicsgeoIIhtml)

[20] Y Fukuoka H Kimura e AH Cohen ldquoAdaptive Dynamic Walking of a

Quadruped Robot on Irregular Terrain based on Biological Conceptsrdquo Int

Journal of Robotics Research Vol22 No3-4 pp187-202 2003

[21] MA Lewis ldquoGait Adaptation in a Quadruped Robotrdquo Autonomous

Robot 2002 in PressIguana RoboticsInc

[22] httpwwwrobocuporg

Bibliografia 137

[23] httpwwwaibo-europecomdownloadsAIBO_Storypdf

[24] LSteel e FKaplan ldquoAibos first wordsThe social learning of language and

meaningrdquo Sony Computer Science laboratory Vub Artificial Intelligent

laboratory

[25] httpwwwopencaeczhwhw_sony-robot_aibohtml

[26] httpprojectspowerhousemuseumcomhscaiboteardownhtm

[27] M Piralli ldquoProgetto quadrupede Politecnico di Milanordquo 2004

[28] HITEC httpwwwhitecrcdcom file HS475HbpdfServomanualpdf

[29] Proprieta chimiche ldquopolicarbonatodocrdquo da

httpwwwedilportalecomedilcatalogo0EdilCatalogo_SchedaProdottoaspI

DProdotto=1897

[30] DCrespi e F Gandola ldquoScheda di interfacciamento per servomotorirdquo2004

[31] L Sciavicco e B Siciliano ldquoRobotica industriale ndash Modellistica e

controllo di Manipolatorirdquo EdMc-Graw-Hill seconda edizione 2000

[32] G Gini e V Caglioti ldquoRoboticardquo Ed Zanichelli 2003

[33] MFolgheraiter ldquoEsempi di cinematica direttainversardquoPolitecnico di

Milano Robotica 2004

[34] HElias ldquoInverse Kinematics - Improved Methodsrdquo2004

httpfreespacevirginnethugoeliasmodelsm_ik2htm

[35] JMinguez e LMontanoNearness Diagram (ND) navigationcollision

avoidance in troublesome scenariosIEEE Transaction on Robotics and

Automationvol 20NO 1 February 2004

[36] AArleoJRMillan e DFloreanoEfficient learning of variable-resolution

cognitive maps for autonomous indoor navigationIEEE Transaction on

Robotics and Automationvol 15NO 6 December 1999ruary 2004

[37] S Vigno ldquoAlgoritmo di Dijkstrardquo 2001

[38] EWDijkstra ldquoA note on two problem in connexion with graphsrdquo

Numeriche Mathematik 1269-271 1959

[39] U Scarfogliero ldquoProgettazione e sviluppo di un robot bipede a dodici

gradi di libertagrave con controllo elastico-reattivordquo Thesis 2004

Bibliografia 138

[40] PRoccoControlloimpedenzaPolitecnico di MilanoRobotica Industriale

2004

Appendice A

Appendice A 140

i Sensori nei robot a zampe disponibili sul mercato

Ersquo stata compiuta una accurata ricerca sui componenti che potrebbero

essere montati su ASGARD per migliorarne le abilitagrave e le reazioni con lrsquoambiente

esterno e su tecniche di utilizzo di semplici sensori per fornire feedback rilevanti

Tra i sensori presenti in commercio egrave stata effettuata una scrematura in

merito a efficienza peso ingombro e prezzo in quanto si ricorda la precaria

stabilitagrave del robot e il fattore sovvenzione scolastica

Forniremo dei principali sensori trovati anche una rapida descrizione del

funzionamento dello stesso per meglio comprendere le migliorie e le potenzialitagrave

che esso potragrave donare al nostro progetto

ii Dead Reckoning Stima della posizione

Dead reckoning deriva da ldquodeduced reckoningrdquo e consiste nellrsquoutilizzare

una procedura matematica per determinare la posizione istantanea di un robot a

partire dalla conoscenza dalle posizioni e velocitagrave precedenti lungo un certo

periodo di tempo Questo sistema ha ovviamente lo svantaggio di accumulare

errori della stima e per questo periodicamente la misura deve essere corretta con i

valori reali o con quelli forniti da qualche altro strumento Spesso la stima della

posizione viene chiamata odometria39[41]

Per fornire la posizione corrente possono essere utilizzate le seguenti

tipologie di sensori

39 Odometry

Appendice A 141

ii1 Encoder Ottici

Gli encoder ottici sono sensori che vengono utilizzati per effettuare misure

di rotazione Possono essere utilizzati sia per robot a ruote per misurarne la

velocitagrave di avanzamento sia per un robot con gambe per misurare lrsquoangolo di

rotazione degli arti artificiali

Si sono sviluppati due diversi tipi di encoder ottici encoder incrementali e

encoder assoluti

Gli encoder ottici incrementali servono principalmente per stabilire la

velocitagrave di rotazione mentre quelli assoluti forniscono istantaneamente lrsquoangolo

di rotazione

ii2 Encoder ottici incrementali

Gli encoder ottici incrementali sono formati da un disco routante solidale

con lrsquoasse di rotazione del sensore da un led e da due sensori ottici (tipicamente

due fotodiodi) Il disco egrave suddiviso in settori trasparenti e settori opachi Il numero

dei settori in genere egrave una potenza di 2 cioegrave 64128256 etc Il led emette una luce

sul lato del disco mentre i due fotodiodi la captano sul lato opposto Grazie alle

regioni opache si ha la possibilitagrave di vedere degli impulsi sul fotodiodo che

permettono di stabilire ad esempio la velocitagrave di rotazione ma non bastano ad

avere una indicazione sul verso della rotazione stessa Per sapere se la rotazione egrave

oraria o antioraria si egrave utilizzato un secondo fotodiodo collegato come in figura

Figura 75 Struttura encoder ottico

Appendice A 142

Come si puograve notare i due fotodiodi avranno unrsquouscita molto simile ma

sfasata causata dalle regioni opache del disco questo sfasamento ci permetteragrave di

capire il verso di rotazione

La velocitagrave di rotazione risulta essere proporzionale in modo inverso alla

larghezza degli impulsi in uscita

Questo tipo di encoder egrave molto economico tanto da essere utilizzato nelle

seconda metagrave degli anni novanta nei mouse da PC

Encoder ottico presente in commercio

ii21 EL30 E-H-I Eltra srl

Serie encoder miniaturizzati Oslash30 per applicazioni ove sia richiesto il

minimo ingombro possibile pur mantendo ottime prestazioni[42]

- Risoluzioni fino a 1000 impgiro con zero

- Varie configurazioni elettroniche disponibili con

alimentazioni fino a 24 Vdc

- Frequenza di esercizio fino a 100 Khz - Uscita

cavo eventuale connettore applicato alla fine del

cavo -

- Velocitagrave di rotazione fino a 3000 rpm - Grado di

protezione fino a IP54tensione di alimentazione 5 V

e peso di 50 g

Figura 76 Encode incrementale

EL 30 E-H-I

ii3 Encoder ottici Assoluti

Gli encoder ottici assoluti a differenza di quelli incrementali forniscono in

uscita direttamente una configurazione di bit che indicano la posizione angolare

Il dispositivo egrave composto di un disco suddiviso sempre in settori ma con

piugrave tracce una sorgente di luce e un numero di sensori di luce pari al numero di

tracce

Appendice A 143

Ad ogni traccia corrisponde un bit e ad ogni settore corrisponde un livello

Il numero di tracce e setori egrave scelto in modo da utilizzare tutte le combinazioni

possibili e quindi i livelli saranno traccenum2

Esistono perograve diversi modi per codificare ogni livello Il metodo piugrave

semplice egrave partire da 0 e incrementare di 1 il numero e utilizzare la normale

codifica binaria

Il sistema risulta essere rischioso quando due livelli consecutivi nella

codifica hanno piugrave di un bit diverso per questo motivo sono state introdotte

diverse codifiche come il codice Gray che riescono ad evitare cosigrave il problema

prima citato

Figura 77 Essempi di disco Figura 78 Struttura di rilevamento

Presenti sul mercato

ii31 Sensori ottici CORRSYS-DATRON

Tipologia a 2 assi (trasversalelongitudinale) per la misura accurata di

velocitagrave distanza percorsa angolo di imbardata[43]

S-CE con integrato giroscopio ottico Come versione S-CE ma con

incorporato un giroscopio a fibra ottica range 200degsec linearitagrave 02 1000 Hz

banda passante per avere maggiori info sul comportamento dinamico del veicolo

SL-R Ultralight Versione ultralight Racing del modello S-CE

SL 200 Sensore ottico biassiale per la misura senza scivolo di dinamiche

trasversali su larghe gamme di funzionamento Il sensore SL-200 egrave caratterizzato

da dimensioni ridottissime (ultra piatto) e per la possibilitagrave di installazione su

piccoli veicoli

Appendice A 144

La serie di encoder assoluti multigiro paralleli EAM[42] sono stati studiati

precisioni anche su esteso sviluppo lineare

sono disponibili con risoluzioni fino a 13 bit e quindi 8192 PosizioniGiro sul giro

e fino

ii32 EAM Parallelo-SSI Eltra srl

per applicazioni che richiedono alte

a risoluzioni di 12 bit 4096 Posizionigiro per i giri Le configurazioni di

uscita sono sia a codice gray che binario e le elettroniche di uscita coprono tutti i

campi di applicazione essendo disponibili in formato NPN NPN OPEN

COLLECTORPNP e PUSH PULL

Figura 79 Encoder assoluto EAM Parallelo ndashSSI

ii4 S

Sensori di grande utilitagrave per la localizzazione di oggetti presenti

un robot sono sensori che sfruttano lrsquoeffetto Doppler

Largamente utilizzati in ambito marino e aeronautico essi misurano la velocitagrave

del me

ensori Dopler

nellrsquoambiente di azione di

zzo in riferimento alla posizione del suolo Lrsquoeffetto doppler si basa sul

principio di funzionamento dello shift di frequenza unrsquoonda che viene ricevuta o

riflessa da una sorgente che si muove rispetto al mezzo In ambito terrestre le

onde spedite e ricevute sono microonde sonore

Appendice A 145

In relazione alla figura riusciamo ricavare le seguenti regole di

funzionamento

αα cos2cos O

DDA F

cFVV ==

Dove

AV = velocitagrave del terreno

DV = misura della velocitagrave tramite il sensore

α = angolo di declinazione

c = velocitagrave della luce

= scostamento in frequenza per effetto Doppler DF

OF = Frequenza emessa

La difficoltagrave di utilizzo di questo sensore diventa consistente nellrsquoutilizzo

su robot mobili in terreni accidentali in quanto gli spostamenti verticali

influiscono sulla misura di e sulla stima di DV AV

Appendice A 146

ii41 Robot Italy SRF04

Figura 80 Sensore SRF04

LSRF04 [44] e un sensore ad

ultrasuoni che unisce delle ottime

prestazioni ad un costo veramente

conveniente utilizza una tecnologia a

ultrasuoni molto semplificata

Questo sensore e dotato di un

microcontrollore che assolve tutte le

funzioni di calcolo ed elaborazione e

sufficiente inviare un impulso e leggere

leco di ritorno per stabilire con facilita

la distanza dellostacolo o delloggetto

che si trova davanti

iii Heading Sensor

Tramite lrsquoutilizzo di questi sensori si riesce in parte a compensare parte le

carenze di odometria Attraverso la stima della posizione ogni piccolo errore si

sommeragrave al precedente nella stima della posizione provocando uno scostamento

via via crescente tra la posizione reale e quella stimata Ersquo di grande aiuto

individuare immediatamente e correggere alcuni di questi errori

iii1 Giroscopio meccanico

Il giroscopio meccanico basato sulla ldquoinerziona di un rotorerdquo egrave conosciuto

giagrave dai primi del 1800 Il primo giroscopio fu costruito in germania 1810 da GC

Bohnenberger Nel 1852 il celebre francese L Foucault mostrograve che il giroscopio egrave

Appendice A 147

in grado di percepire la rotazione terrestre Essa puograve essere scomposta in due

componenti lungo un immaginario asse verticale e lungo un asse tangente alla

superficie Al polo la componente verticale saragrave di 15degora e spostandosi verso

lrsquoequatore diminuiragrave fino ad annullarsi Come per gli encoder ottici anche per i

giroscopi esistono due metodologie per fornire mediante una tensione o una

frequenza lo spostamento istantaneo o lrsquoangolo assoluto di rotazione

Figura 81 Giroscopio meccanico

Vediamo come funziona un giroscopio meccanico il rotore pilotato

elettricamente egrave sospeso ai propri assi da una coppia di cuscinetti con attrito

bassissimo I cuscinetti a loro volta sono montati su un anello ruotante chiamato

anello di sospensione interna (inner gimbal ring) Questo anello gira a sua volta

allrsquointerno di un altro anello (outer gimbal ring) La rotazione dellrsquoanello interno

definisce lrsquoasse x del giroscopio che egrave perpendicolare con lrsquoasse di rotazione del

rotore lrsquoanello esterno definisce lrsquoasse verticale del giroscopio In questa struttura

egrave da notare come lrsquoasse orizzontale saragrave allineato con il meridiano in questo modo

si potragrave calcolare la rotazione orizzontale e verticale in funzione a quella terrestre

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice

FT445533

Nuovo regolatore di giri con la piugrave moderna tecnica microprocessore con

Display LC ad 8 posti Il regolatore di giri GV ndash1 [45] mantiene la testa del rotore

Appendice A 148

in sistema di giri costante Cosigrave diventa possibile un movimento piugrave preciso e

sensibile

Al contrario di altri regolatori il GV-1 controlla anche il numero di giri del

motore Una curva a 3 punti regolabile permette la prescrizione del numero dei

giri tramite un commutatore a tre scatti oppure un canale proporzionale Nel

display viene indicato a scelta il numero di giri del motore o del rotore dove viene

memorizzato il numero di giri massimale e richiamabile in qualsiasi momento

Questo modello risulta compatibile con i servo da noi utilizzati

Programmi

bull Indicazione del numero di giri (rotore oppure

motore)

bull Memoria del numero di giri massimale

bull Messa a punto del rapporto di riduzione

bull Regolazione del punto di attivazione e

disattivazione

bull Impostazione del campo di regolazione del

numero di giri

bull Impostazione del numero di giri massimale

bull Automatica disattivazione a partire

dallacuteimpostazione del numero di giri

bull Messa a punto di una curva di regolazione a tre

punti

bull Messa a punto 3D

bull Curva di messa a punto miscela a 9 punti

bull Test magnetico con indicazione del campo

intensitagrave

bull Misurazione della tensione di batterie

bull Allarme di bassa tensione

bull Messa a punto del servo di gas ATV

Caratteristiche Tecniche

Dimensioni Regolatore 56x305x16 mm

Dimensioni Sensore oslash 10 x 16 (27) mm

Peso Regolatore 34 g

Peso Sensore 4 g

Alimentazione 38 ndash 6 V

Campo di regolazione da 1000 a 21000

girimin

Figura 82 Futaba regolatore di giri

GIVERNOR GV-1

Appendice A 149

iii12 Futaba Giroscopio FP GY 240 AVCS

Grazie allrsquoutilizzo congiunto del nuovo sensore SMM40 e della nuova

tecnica di interruttore altamente integrata SMD41 la Futaba egrave riuscita a costruire

un giroscopio di soli 25g con dimensioni decisamente contenute 27 x 27 x 20

mm

Nonostante questa minima dimensione il giroscopio egrave equipaggiato sia

con il modulo normale che quello AVCS (Heading Hold)[46]

Oltre ai vantaggi rappresentati dalle dimensioni e dal peso questo sensore

non presenta alcuna deriva dovuta alla temperatura ed egrave ampiamente insensibile

alle vibrazioni ed ai colpi

Grazie ad una elaborazione puramente digitale del segnale questo

giroscopio reagisce molto rapidamente

Caratteristiche tecniche Dimensioni

27x27x20 mm PesoWeight

25 g Alimentazione

3-6 V Temperatura d`esercizio

-10degC +50degC Figura 83 Giroscopio FP GY 240 AVCS

iii2 Giro-bussola

Questo dispositivo integra le funzionalitagrave del giroscopio e della bussola per

individuare il Nord Lrsquoindividuazione del nord egrave importante percheacute lrsquoasse di

rotazione del rotore egrave orientato lungo un meridiano lrsquoasse orizzontale del

giroscopio non risente della rotazione terrestre La direzione e lrsquointensitagrave della

40Silicon Micro Machine misure laser posizioni 41 Standar ISO9000

Appendice A 150

misura dipende dallo scostamento tra lrsquoasse del rotore e la direzione dellrsquoasse

terrestre

iii3 Giroscopio-Girobussola a fibre ottiche

Il principio su cui si basa il funzionamento dei giroscopi ottici fu scoperto

dal fisico francese Sagnac nel 1913 ed ha trovato inizialmente una sua

applicazione nella costruzione di interferometri e successivamente nei giroscopi

laser ad anello chiuso (RLG Ring Laser Gyro) Tale principio consiste nello

sdoppiare un unico raggio luminoso in due diversi raggi che viaggiano su un

medesimo percorso ottico ad anello chiuso ma in direzioni opposte un raggio

ruota in senso orario e lrsquoaltro in senso antiorario

Figura 84 Schema di principio di un giroscopio laser ad anello

Nei giroscopi RLG[47] i raggi rimbalzano fra vari specchi come mostrato

in Figura 83 nei giroscopi FOG (a fibre ottiche) i raggi scorrono dentro un fascio

di fibre ottiche lungo anche 5 Km ed avvolte in spire del diametro di alcuni

centimetri

Appendice A 151

Quando un raggio si propaga la sua fase cambia continuamente con la

distanza L percorsa e precisamente di 2π radianti per ogni tratto pari alla

lunghezza drsquoonda λ si ha pertanto

λπα L2

=

con λ = c f dove f egrave la frequenza del raggio luminoso e c egrave la velocitagrave

della luce

Nel caso in cui il giroscopio sia fisso rispetto ad un sistema inerziale i due

raggi percorrono lo stesso cammino anche se in direzioni opposte arrivando nel

ricevitore con la stessa fase Diversa egrave la situazione in cui lrsquointero sistema ruota

attorno ad un asse passante per O (asse sensibile del giroscopio) e con velocitagrave

angolare Ω in tal caso il percorso del raggio concorde con il verso di rotazione

tende ad allungarsi mentre quello dellrsquoaltro raggio tende ad accorciarsi per cui la

differenza di fase Φ dei segnali che arrivano nel ricevitore non egrave piugrave nulla ma

assume la seguente espressione

Ω=∆=Φλ

παcLD2

Dove

L = lunghezza del percorso ottico o delle fibre ottiche nei FOG

D = diametro del percorso o della bobina nei FOG

Ω = velocitagrave angolare del giroscopio attorno al suo asse sensibile

Il fattore davanti alla velocitagrave angolare Ω egrave chiamato fattore di scala ed egrave

un indicatore della sensibilitagrave dello strumento piugrave egrave alto tale fattore piugrave lo

strumento egrave in grado di misurare velocitagrave angolari molto basse come ad esempio

nel caso di quella terrestre Come si vede il fattore dipende dai dati geometrici del

percorso ottico e precisamente nel caso dei FOG dalla lunghezza delle fibre

Appendice A 152

ottiche e dal diametro delle spire Analizzando la precedente espressione si

comprende come a paritagrave di volume i giroscopi a fibre ottiche (FOG) siano molto

piugrave sensibili dei giroscopi laser (RLG)

Figura 85 Schema tipico di un giroscopio a fibre ottiche

iii31 La funzione giroscopica

Il FOG non egrave in grado da solo di indicare la direzione del nord come nei

normali giroscopi di tipo meccanico con sospensione cardanica esso egrave soltanto in

grado di misurare la componente della velocitagrave angolare terrestre lungo il suo asse

di sensibilitagrave

Per ottenere la funzione orientamento desiderata si montano tre giroscopi

disposti lungo una terna di assi cartesiani X Y e Z che puograve coincidere con i tre

assi del robot per definire il piano orizzontale si impiegano inoltre due sensori di

livello La tecnologia utilizzata egrave nota come strapdown ossia con i giroscopi

montati rigidamente su un piano fisso costantemente orientato e parallelo rispetto

ad un piano di riferimento come nella navigazione inerziale di tipo tradizionale

Nel caso di oggetto fermo lrsquounica velocitagrave angolare a cui esso risulta essere

soggetto egrave quella terrestre per cui i tre giroscopi misurerebbero le seguenti

componenti

Appendice A 153

yTx CosPCosϕρρ =

yTy SinPCosϕρρ minus=

ϕρρ Sinz T=

dove egrave facile calcolare lrsquoangolo di prova nel caso siano note la velocitagrave

ρ

yP

Τ e la latitudine ϕ

Nel caso di moto con velocitagrave VN si ha una velocitagrave angolare

supplementare pari a VNRT diretta lungo -y (RT egrave il raggio della Terra) A questa

velocitagrave si sommano inoltre altre velocitagrave angolari continuamente variabili

dovute ai moti attorno ai suoi tre assi e precisamente i moti di rollio di

beccheggio e di imbardata

yyTx CosPCos ρϕρρ +=

oT

NyTy R

VSinPCos ρϕρρ ++minus=

aT Sinz ρϕρρ +=

In realtagrave il problema viene risolto definendo inizialmente alla partenza un

sistema cartesiano di riferimento con gli assi X0 e Y0 situati nel piano orizzontale

e lrsquoasse Z0 che coincide con la verticale In tale situazione i segnali provenienti

dai sensori di livello devono essere nulli

Durante la camminata la continua misura delle tre velocitagrave angolari e

dellrsquoassetto del robot mediante i sensori di livello consentono di definire lrsquoesatto

orientamento della terna cartesiana T (X Y e Z) rispetto alla terna di riferimento

iniziale T0 (X0 Y0 e Z0) Un opportuno calcolatore provvede a convertire gli

Appendice A 154

angoli di sfasamento dovuti allrsquoeffetto Sagnac nelle corrispondenti velocitagrave

angolari integrando le velocitagrave si ottengono gli angoli

dta iii int+=+ ρα1

da cui egrave poi possibile ricavare gli angoli di rollio di beccheggio e di

imbardata Ogni ciclo di calcolo deve avere una durata molto breve inferiore

normalmente al tempo impiegato dai segnali luminosi a percorrere la bobina di

fibre ottiche (∆t = Lc = 3 nsec per L = 1 m)

iii4 Giroscopio piezoelettrico

Utilizzano la forza di Coriolis per misurare la velocitagrave di rotazione

montando tre trasduttori piezoelettrici su un prima triangolare Se uno dei sensori

egrave eccitato alla sua frequenza di risonanza la vibrazione prodotta verragrave percepita in

eguale misura dagli altri due sensori Quando il prisma viene ruotato lungo il suo

asse longitudinale la forza di Coriolis risultante causeragrave una piccola differenza

nellrsquointensitagrave di vibrazione percepita dai due trasduttori la variazione di tensione

risultante egrave direttamente e linearmente proporzionale alla velocitagrave di rotazione

Appendice A 155

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03

Giroscopio miniaturizzato[44] 26x27x11mm per 7grammi di peso Puo

essere utilizzato per bilanciare o per compensare spostamenti indesiderati di

walkers e rover Utile anche per rilevare spostamenti

Figura 86 Modello GWS PG-03 Robot Italy

iii42 Giroscopio Piezoelettrico Enc-03ja

Ersquo componente elettronico di solo 21mm x 8mm[48] Ersquo in grado di

rilevare i cambiamenti nella rotazione pur essendo ultra-piccolo ultra-leggero

con una ultra rapida-risposta e a basso costo Usa il fenomeno della forza di

Coriolis per rilevare i cambiamenti nella velocitagrave angolare di rotazione

Limitazione le girobussole hanno una lettura massima di 300 gradi al secondo e

richiederanno la calibratura

Figura 87 Giroscopio Enc-03ja

Appendice A 156

iv Sensori geomagnetici

Nella stima della posizione inevitabilmente esistono degli errori e questi

vengono misurati durante il tempo e quindi egrave molto importante poter disporre di

una misura assoluta e poter compensare o correggere appunto questi errori

Il piugrave comune sensore di questo tipo egrave la bussola magnetica La

terminologia usualmente utilizzata per misurare un campo magnetico egrave la densitagrave

di flusso magnetico B misurata in Gauss(G) Altre unitagrave di misura sono la Tesla

(T) e gamma (γ ) dove 1 Tesla = Gauss = Gamma Lrsquointensitagrave media del

campo magnetico terrestre egrave 05 G e puograve essere rappresentato come un bipolo che

fluttua sia nel tempo che nello spazio situato a 440 chilometri dal centro e

inclinato di 11deg dallrsquoasse di rotazione terrestre Questa differenza tra il polo

magnetico e il polo terrestre egrave conosciuta come declinazione e varia in funzione

del tempo e della posizione geografica

410 910

I dispositivi che misurano i campi magnetici sono detti magnetometri Per

applicazioni su robot mobili i magnetometri piugrave utilizzati si dividono nelle

seguenti famiglie

bull Bussola magnetica meccanica

bull Bussola a effetto Hall

bull Bussola a magnetoreversiva

Prima di analizzare da vicino ogni singola famiglia va precisato un

problema molto importante il campo magnetico terrestre egrave spesso distorto nelle

vicinanze di strutture metalliche questo rende difficile lrsquoimpiego di tali sensori

allrsquointerno di edifici Tuttavia questo problema egrave possibile aggirarlo utilizzando

con essi ulteriori sensori

Appendice A 157

iv1 Bussola magnetica meccanica

La prima traccia nellrsquouso della bussola risale al 2634 AC Dal XIII secolo

utilizzata in tutto il mondo in campo marittimo W Gilber [1600] fu il primo ad

esporre teorie riguardanti campi magnetici presenti sulla superficie terrestre

Le prime bussole marine consistevano in aghi magnetizzati che

fluttuavano su pezzetti di sughero immersi in acqua Questo dispositivo egrave stato

raffinato fino ad arrivare oggi giorno ad essere composto da un paio di magneti

attaccati ad un disco graduato fluttuante in una composizione di acqua alcol e

glicerina

Lrsquoerrore tra nord magnetico e nord geografico egrave conosciuto come

deviazione della bussola

decdevit CFCFHH plusmnplusmn=

Dove

tH = Direzione giusta

iH = Direzione misurata

devCF = Fattore di correzione per la deviazione della bussola

decCF = Fattore di correzione per la declinazione magnetica

Unrsquoaltra fonte potenziale di errore consiste nel dip magnetico42 dovuto alla

componente verticale del campo magnetico terrestre Questo effetto varia in base

alla latitudine possiamo affermare che le linee di forza che agiscono sono

orizzontali allrsquoequatore e verticali ai poli Per questo motivo sugli aghi delle

bussole a volte sono montati dei pesetti che pessono essere spostati al fine di

contrastare questo effetto

42 Magnetic dip

Appendice A 158

iv2 Bussola a effetto Hall

I sensori ad effetto Hall sono basati sulle osservazioni di Hall(1979) che un

conduttore e un semiconduttore immersi in un campo magnetico mostrano una

differenza di potenziale ai loro capi Il vantaggio di questi sensori egrave la possibilitagrave

di misurare il flusso in modo statico I primi sensori costruiti avevano una

sensibilitagrave e una stabilitagrave paragonabile a quella dei fluxgate43 ma negli ultimi anni

egrave migliorata fino a raggiungere i Gauss e oltre Giagrave nei primi anni 60rsquo la

Marina mostrograve interesse a questo tipo di sensori e la Motorola costruigrave un certo

numero di prototipi per valutarne le potenzialitagrave La bussola della Motorola

montava due sensori ad effetto Hall per limitare gli effetti dovuti alle variazioni di

temperatura Ogni sensore era formato da una barretta di ferro- indio- arsenico di

2 x 2 x 01 millimetri inserito in un concentratore di flusso come si vede in Figura

87

310 minus

Il concentratore di circa 5 cm incrementava la densitagrave di flusso attraverso il

sensore di due ordini di grandezza [Willey 1964] lrsquouscita di tale dispositivo egrave un

treno di impulsi ad ampiezza variabile in cui lrsquoampiezza appunto egrave proporzionale

al valore misurato Fu riscontrata una buona linearitagrave fino a densitagrave di flusso di

0001 Gauss[Willey 1962]

Figura 88 Una coppia di sensori Hall (Lega di Indio-Ferro-Arsenico)

Maenaka allrsquouniversitagrave di tecnologia di Toyohashi in giappone sviluppograve

un sensore al silicio basato su due sensori Hall montati in disposizione ortogonale

43 Bussola fluxgate sfutta campi magnetici generati da spire azionati da corrente continua

Appendice A 159

Purtoppo i risultati di questo esperimento non furono dei migliori in

quanto il sensore costruito forniva un sensibilitagrave di 1 Gauss e il campo terrestre va

da 01 Gauss allrsquoequatore fino a 09 ai poli Di notevole interesse rimane per

lrsquoessere interamente costruito in un integrato e quindi lo rende molto pratico e di

elevato interesse commerciale

iv21 1490 Digital Compass Sensor

Questo sensore[49] fornisce informazioni su scostamenti in otto direzioni

misurando il campo magnetico della terra usando la tecnologia ad effetto Hall Il

sensore 1490 internamente egrave destinato per rispondere a cambiamento direzionale

simile ad una bussola riempita liquida Rinvieragrave al senso indicato da uno

spostamento di 90 gradi in circa 25 secondi senza overswing I 1490 possono

funzionare inclinato fino a 12 gradi con lerrore accettabile Egrave connesso facilmente

a circuiti digitali ed i microprocessori

Caratteristiche Specifiche Alimentazione 5-18 volt di CC 30 mA Uscite Apra il collettore NPN affondi 25 mA per il senso Peso 225 grammi Formato un diametro da 127 millimetri alto 16 millimetri Perni 3 perni da 4 lati sui centri del 050 Temperatura -20 - +85 gradi di C

Figura 89 1490 DCS

iv3 Bussola a magnetoreversiva

Questa tipologia di sensori egrave molto interessante per il range di sensibilitagrave

che coprono ad anello aperto che va da a 50 Gauss e coprono quindi

interamente la regione interessata del flusso terrestre Ad anello chiuso hanno un

210 minus

Appendice A 160

sendibilitagrave approssimativamente di Gauss [Lenz 1990] Presentano

ulteriormente un basso assorbimento di potenza piccole dimensioni che li

posizionano tra i primi posti nella scelta di componenti

610 minus

iv31 Philips bussola AMR

Uno dei primi sensori magneto resistivi impiegati per realizzare una

bussola magnetica egrave il KMZ10B costruito dalla Philips[50] Semiconductors nel

1996 La sensibilitagrave di questo dispositivo (approssimativamente 01 mVAmcon

alimentazione di 5 V DC) comparata con il campo magnetico terrestre massimo

implica che devono essere presi con molta considerazione gli errori dovuti alla

variazione della temperatura e alle variazioni di offset[Patersen1989]Un sistema

per ovviare a questi inconvenienti egrave utilizzare lrsquoeffetto flipping44

iv4 Bussola magnetoelastica

Utilizzare materiali magneto-elastici come materiali fondamentali di

sensori in campo magnetico ad alta precisioneIl principio su cui si basano questa

famiglia di componenti egrave la variazione del modulo di Young[51] in leghe

magnetiche quando introdotte in campo magnetico esternoIl modulo di elasticitagrave

di un materiale egrave semplicemente misurato come

εσ

=E

Dove

E = Modulo di elasticitagrave

σ = Tensione applicata

44 Flipping phenomenon non trattato in questa discussione

Appendice A 161

ε = Deformazione risultante

Se la tensione applicata rimane costante la deformazione egrave inversamente

proporzionale al modulo di elasticitagrave In alcune leghe E egrave molto pronunciato

questo permette al campo magnetico di essere accuratamente determinato

misurando la variazione di lunghezza di una lega opportunatamente sollecitata da

una forza costante Esistono due tecnologie che permettono di realizzare sensori

economici e molto precisi

bull Interferometric

bull Tunneling-trip

iv41 Metglas 2605S2

Metglas[52] egrave una lega di ferro boro silicio e carbonio Il sensore egrave

costituito da un nastro della lega che in presenza di campo magnetico esterno

mostra un certo allungamento (analisi sul nastro di vetro metallico sono avvenute

al laboratorio di SERC Rutherford Appleton) I dati di riflettivitagrave sono stati

analizzati le misure forniscono modelli che hanno permesso una valutazione del

profilo di magnetizzazione vicino alla superficie del nastro In Figura 89 egrave

mostrato il circuito utilizzato per misurare la variazione di lunghezza

dellrsquoelemento magnetoresistivo

Figura 90Circuito per misurare lrsquoallungamento delle striscia magnetoresistiva

Appendice A 162

v Sensori per la modellizzazione dellrsquoambiente

Molti sensori per mappare ambienti interni sono sensori di distanza per

questo motivo verranno esposti in questo testo alcuni tra i piugrave conosciuti

vi Sensori di distanza

Esistono differenti approci per ottenere questo tipo di misura

bull Sensori basati sul tempo di volo (TOF45) di un impulso di energia

emesso che si propaga e che viene riflesso dallrsquoostacolo

bull Sensori basati sulla differenza di fase introdotta sempre nella

riflessione di un segnale ma non impulsivo

bull Sensori basati su radar a modulazione di frequenza

vi1 Sensori basati sul tempo di volo

Il funzionamento consiste nel misurare il tempo di volo di un senale da un

trasmettitore al ricevitore il percorso effettuato mentre il tempo di percorrenza

risulta esserecdT 2

=∆ dove c egrave la velocitagrave della luce

In robotica la velocitagrave della luce non riesce a trovare applicazioni pratiche

e trovano utile impiego le onde acustiche la cui velocitagrave di propagazione egrave

v=340ms I vantaggi che si trovano dallrsquoutilizzo di questo metodo sono che

emettitore e ricevitore possono essere lo stesso oggetto e che le superfici non

devono presentare particolari requisiti Gli svantaggi possono essere fronti di

salita imprecisi durante lrsquoemissione lrsquoattenuazione della radiazione riflessa che

45 Time of Fly

Appendice A 163

puograve essere influenzata da rumore lrsquoinaccuratezza nel circuito che serve a misurare

il tempo e la possibile variazione della velocitagrave di propagazione soprattutto con

onde sonore Il cono di emissione inoltre non ci permette di rilevare la forma

dellrsquooggetto Quando lrsquoonda si riflette su un oggetto si ha un fenomeno chiamato

crosstalk Utilizzando diverse misurazioni con treni di impulsi si riescono ad

avere stime abbastanza precise sullrsquooggetto riuscendo ad arrivare ad avere

precisione anche di 25 mm da una distanza di 30 cm

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502

Campo di misura tra 30 cm e 5 metri[53]

Caratteristiche

- Campo di misura tra 30 cm e 5 m (MS 6502)

-Campo di misura tra 15 cm e 10 m ( MS 6001)

-Alimentazione singola tra 75V e 15V - Gestione degli Echo multipli

- Possibilitagrave di fissaggio del sensore direttamente al circuito stampato

- Sistema di connessione MODU II - Uscita open collector

-Protezione dallrsquoinversione di polaritagrave

Figura 91 Piedinatura modello MS

6501

Figura 92 Sonar Modello MS 6501

Figura 93 Sonar Modello MS 6502

Appendice A 164

Il modulo sonar egrave un dispositivo di basso costo con il quale egrave possibile

gestire direttamente i sensori elettrostatici Polaroid per effettuare misure di

distanza Gli impulsi ad ultrasuoni sono a 499 KHz per entrambi i modelli e

vengono prodotti da un quarzo funzionante alla frequenza di 420 KHzI moduli

soso dotati di un ingresso di inibizione esterna con il quale egrave possibile

unrsquoesclusione selettiva di alcuni echo in modalitagrave di funzionamento echo multiplo

Con il dispositivo proposto egrave possibile distinguere echo di ritorno tra due oggetti

distanti 75 cm circa

Figura 94 Struttura del Mdulo Sonar

Vi sono due modalitagrave di funzionamento del sonar echo singolo e echo

multiplo

Nella funzionalitagrave ad echo singolo la gestione consite nel portare basso il

valore di INIT spedire le onde ultrasoniche e attendere la ricezione del segnale di

echo il tempo tra quando si egrave reso basso il senale di INIT e quello in cui diventa

basso ECHO indica il tempo di volo impiegato per raggiungere il target Ersquo

conveniente attendere circa 80 ms tra una spedizione e lrsquoaltra per evitare onde

ultrasoniche ancora presenti nellrsquoambiente

Nella funzionalitagrave multiplo dopo che si pone basso INIT il trasduttore

viene pilotato da 16 impulsi a frequenza 499 KHz (MS 6501) o 45 KHz (MS

Appendice A 165

6502) e di ampiezza variabile per modello (MS6501 400VMS6502 100V) ciograve

comporta lrsquoinvio di un pacchetto di onde ultrasoniche che si propagano nello

spazio Al fine di evitare lrsquoassestamento del trasduttore (fenomeno ringring) esso

viene oscurato in ricezione per 238 ms Queste tempistiche rendono possibile

lrsquoindividuazione di oggetti a distanza di 40 cm che corrispondono a tempo di volo

di 238 ms

Figura 95 Modalitagrave di funzionamento a

eho singolo

Figura 96 Modalitagrave di funzionamento a

echo multiplo

vi2 Sensore telemetro a sfasamento

Il sensore si basa sul seguente principio si separa lrsquoonda emessa in due

parti una incide lrsquooggetto e torna indietro la seconda viene riflessa su uno

specchio di cui si conosce la posizione Si calcola la differenza temporale tra le

due onde Essendo noto il cammino ottico della luce riflessa dallo specchio si egrave in

grado di determinare il cammino ottico incognito In robotica si misurano distanza

dellrsquoordine di qualche metro quindi lrsquoonda laser emessa λ egrave dellrsquoordine del metro

vi21 LIDAR lsquoLight detection and Rangingrsquo

Utilizzi molto rilevanti in questo tipo di acquisizione dati ci vengono

forniti da progetti NASA per la struttura della morfologia terrestre in particolare

in progetti DSM e DTM (Digital Surface Model e Digital Terrain Model)[54] Si

Appendice A 166

dispone di un raggio lasee di cui si analizza lrsquoecho e la distorsione conoscendo la

velocitagrave di propagazione Le misura proposte vengono elaborate per creare

coordinate 3D Dopo aver puntato su zone giagrave conosciute mediante comunicazioni

con GPRS il sistema scansiona la zona ignota per estrapolare per comparazione i

nuovi valori effettuando una misura di sfasamento tra lrsquoonda modulata emessa e

quella rientrante Analizzando opportunamente lrsquointensitagrave della luce riflessa si

potranno anche dedurre informazioni sulla tipologia del materiale analizzato

Figura 97 Esempio di acquisizione LIDAR

vi3 Triangolazione

Uno dei metodi piugrave semplici utilizzati Il soggetto egrave illuminato da uno

stretto fascio di luce che scandisce la superficie Il movimento di scansione

avviene sul piano definito dalla linea che va dallrsquooggetto al rilevatore e dal

rilevatore alla sorgente Il rilevatore egrave focalizzato su una limitata porzione di

superficie quando il rilevatore vede un piccola macchia di luce la sua distanza d

dalla superficie illuminata viene calcolata con un semplice calcolo geometrico

Appendice A 167

i

sdαtan

=

Dove

iα = angolo tra la sorgente e la linea della base

angolo di massima intensitagrave

s = distanza tra la sorgente e il rilevatore

Questo fornisce la misura di un punto se il sistema sorgente rilevatore

viene mossa su un piano egrave possibile ottenere un insieme di punti facilmente

trasformabili in coordinate tridimensionali che caratterizzano la struttura

dellrsquooggetto esaminato

Appendice A 168

vi31 IFELL Laser e Sistemi Srl

Modello[55] Caratteristiche principali

Figura 987 Serie LK

bull Campi di misura fino a 500 mm bull Tecnologia di fotorivelazione con

CCD Micropunto di lettura (fino a 30 micron)

bull Protezione IP-67 (solo teste) bull Insensibilitagrave alle variazioni di colore bull Elevata precisione anche su materiali

otticamente difficili bull Uscita analogica

Figura 99 Serie ODS

bull Campi di misura fino a 2000 mm bull Tecnologia di fotorivelazione con CCDbull Amplificatore integrato bull Protezione IP-65 bull Uscita analogica e digitale RS-232 bull Ingressouscita di sincronizzazione bull Esecuzione speciale per materiali

trasparenti

Figura 100 Serie M5

bull Campi di misura fino a 400 mm bull Tecnologia di fotorivelazione con PSD bull Protezione IP-64 (solo teste) bull Uscita analogica e digitale (opzione) bull Ingressouscita di sincronizzazione bull Comparatore integrato

Informazioni sui produttori

[41] G Arlanch ldquoSviluppo di un simulatore per il controllo dellrsquoandatura di un

quadrupederdquoThesis 1997

[42] httpwwweltrait

[43] httpwwwcorrsysdatronithomehtml

[44] httpwwwrobot-italycomproduct_infophpproducts_id

[45] httpwwwfutaba-rccomradioaccysfutm1001html

[46] httpwwweuroshop2000itcat159html

[47] MBertolini ldquoGirobussole a fibre otticherdquo ITN Viareggio

[48] httpwwwgyroscopecom

[49] httpwwwdinsmoresensorscom1490spechtm

[50] Philips ldquoKMZ10B Magnetic field sensorrdquo Data sheet 1998

[51] JP Sinnecker ldquoMateriaia magneticos doces e materiaia ferromagneticos

amorfosrdquo Reviat brasileira de Fisicavol 222000

[52] K Ivison N Cowlam MRJ Gibbs J Penfold e C Shackleton ldquoUna

misura diretta della magnetizzazione di superficie di un vetro metallico

ferromagneticordquo Edizione 23 (Il 12 Giugno 1989)

[53] Blautron ldquoModulo sonar 6501pdfrdquo ldquoModulo sonar 6502pdfrdquoItaly 2002

[54] V Adorno ldquoIl DTM e il DSM ad alta risoluzionela tecnologia laser

scanner e lrsquoutilizzo del Lidarrdquo Naturaltech

[55] wwwifelliti_sens_triangi_sens_trianghtm

Appendice B

Appendice B 171

i Manuale drsquouso

Per permettere una rapida visualizzazione dei risultati da noi trovati viene

fornito allrsquoutente un menugrave principale di scelta in cui puograve richiamare le funzioni

generate

Lrsquoutente richiameragrave direttamente dal promt di Matlab la funzione

start_asgrad(x) passando come parametro x un intero da o a 5Ad ognuno di

questi numeri corrisponderagrave una funzione

1 = visualizzazione della differenza tra passo in andatura quasi-stabile e

quasi-dinamica grafica del passo e proiezione del convex hull

2 = calcolo della cinematica e visualizzazione degli errori(in

start_asgradm posso modificare direttamente i valori delle variabili decisionali in

merito alla cinematica inversa)

3 = visualizzazione dei grafici riguardanti la forza e la torsionesui giunti

scegliendo nella funzione stessa il numero di frame da considerare

4 = generazione del movimento in un ambiente noto (per settare i

parametri riferiti allrsquoambiente bisogna modificare il file initm prima dellrsquoavvio

del programma)

5 = permette il movimento reale del robot quadrupede del politecnico di

Milano Questa funzione puograve essere richiamata dopo una serie di accorgimenti per

istaurare un corretto canale di comunicazione (collegare la porta seriale o il

convertitore USB-Seriale e accertarsi che la porta sia denominata COM 1 con

velocitagrave di trasferimento di 14400 bitsec)

Appendice B 172

ii Codice generato

ii1 Menu principale

FUNZIONE START_ASGARD funzione che avvia lesecuzione di tutto il programma permettendo allutente di selezionare la parte di analisi da visualizzare parametri in input val_scelta=valore di scelta 1= confronto passo quasi-staticoquasi-dinamico 2= studio cinematico 3= analisi dinamica 4= scelta del percorso(si ricorda che prima di sceglire questa opzione si devono settare i parametri nella funzione init per la descrizione dellambiente 5= collegamento diretto al robot fisico Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [] = start_asgard(val_scelta) if(val_scelta==1) richiamo della funzione passo_STATICO clearpulizia dello workspace end if(val_scelta==2) angoli_motori2richiamo generatrice angoli da inviare ai motori settaggio parametri funzione met=2 incr=25 g=1 cinematica(ja(28)metincrg) clear end if(val_scelta==3) fr=10setto numero di frame richiamo della funzione NW_EU clear end if(val_scelta==4) richiamo della funzione ambiente_prova

Appendice B 173

clear end if(val_scelta==5) angoli_motori2richiamo generatrice angoli da inviare ai motori n=1inizializzazione numero passi richiamo della funzione camminata_stat clear end

ii2 Confronto andatura quasi-stabile vs quasi-dinamica

FUNZIONE PASSO_STATICO Funzione che permette la comparazione tra il passo statico e il passo quasi-dinamicomostrando per ogni animazione la proiezione del centro di massa e il poligono di appoggio definizione tempistiche per movimento zampa frame=6 definizione punto vista X= 0(090)dallalto Y=90110120)angolata definizione tempo int=1(frame-1) t = [0int1] inizializzazione della figura figure(NamePasso StaticoNumbertitleoff) view(XY) richiamo inizializzazione robot init_robot DB_position posizioni zampe poszero=[0 0 0 0 0 0]posizione impressa nella pic pos_base_A=[0 0 0 -pi4 (-pi4) 0] posizione base delle zampe di destra pos_base_B=[0 0 0 pi4 pi4 0] posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento nel simulatore egrave stato ulteriormente aumentato di un fattore correttivo pos_av_A=[0 (pi4-045) 0 -pi4 -pi4 0] pos_av_B=[0 (-pi4+045) 0 pi4 pi4 0] pos_ind_A=[0 (-pi4+045) 0 -pi4 -pi4 0] pos_ind_B=[0 (pi4-045) 0 pi4 pi4 0] posizioni intermedie=punti di via per le cubiche pos_int_A1=[0 (-pi4+045) 0 0 0 0]

Appendice B 174

pos_int_B2=[0 (pi4-045) 0 0 0 0] ------------------------------------------- calcolo della traiettoria movimento in avanti zampe di sinistra jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_Bt) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint) jb_b=cubica_norm(pos_av_Bpos_base_Bint) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_Apos_base_Aint) jbb=cubica_norm(pos_base_Bpos_ind_Bint) ------------------------------ parte grafica sposto il robot al centro trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) disegno convex hull line([136 46 46][-345 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) muovo prima zampa plot2(zampad jb1) plot(zampad jb2) clf muovo seconda zampa cambia la base dappoggio disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_av_B) line([136 46 46][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jb1) plot(zampab jb2) muovo_baricentro--------------------------------------- posizioni baricentro posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa = [0735 (-pi4+04) pi4 -pi4 -pi4-03 0] posb = [0735 (34pi+04) pi4 -pi4 pi4-03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc = [0735 (3pi4+04) 3pi4 pi4 -pi4+03 0] posd = [0735 (5pi4-04) pi4 -pi4 -pi4+03 0]

Appendice B 175

qposd = [0735 pi pi4 -pi4 -pi4 0] traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -048 -1135]) t2=transl([157 -09 -1135]) t3=transl([-159 045 -1135]) t4=transl([162 0045 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno zampe view(XY) disegno zampe con cinematica da zampa puntata a bar plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposat) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(XY) base di appoggio line([136 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) movimento baricentro plot(zampab2jbarb) plot(zampad2 jbard) plot(zampaa2 jbara) plot(zampac2 jbarc) _______________________________________________________________ riposiziono zampe catena cinemetica diretta r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase tx=transl([0 -042 0]) bara=r1tx barb=r2tx barc=r3tx

Appendice B 176

bard=r4tx zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard clf disegno bas dappoggio e zampe view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_ind_Apos_base_B) line([142 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-288 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo terza zampa plot2(zampac ja1) plot(zampac ja2) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_av_Apos_base_B) line([142 464 464][-335 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-335 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo ultima zampa plot(zampaa ja1) plot(zampaa ja2) ____________________________________ sposto di nuovo il baricentro per tornare alla posizione base posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa_av = [0735 (pi4-04) pi4 -pi4 (-pi4+03) 0] posb_ind = [0735 (54pi-04) pi4 -pi4 pi4+03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc_av = [0735 (5pi4-04) 3pi4 pi4 -pi4-03 0] posd_ind = [0735 (5pi4-04) pi4 -pi4 -pi4+038 0] qposd = [0735 pi pi4 -pi4 -pi4 0] disegna traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -09 -1135]) t2=transl([164 -054 -1135]) t3=transl([-159 003 -1135]) t4=transl([162 041 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc

Appendice B 177

zampad2base=bard disegno zampe view(XY) plot(zampaa2qposa_av) plot(zampab2qposb) plot(zampac2qposc_av) plot(zampad2qposd) generazione traiettorie per baricentro jbara=cubica_norm(qposa_avposat) jbarb=cubica_norm(qposbposb_indt) jbarc=cubica_norm(qposc_av posct) jbard=cubica_norm(qposd posd_indt) clf view(XY) _____________________________- riposiziono zampe base r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -042 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard _____________________________________________ disegno base appoggio e muovo zampe line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) Analisi passo dinamico figure(NamePasso DinamicoNumbertitleoff) t = [0int1] calcolo delle traiettorie

Appendice B 178

jta1 = cubica_norm(qza qpva t) jta2 = cubica_norm(qpva qfa t) jtb1 = cubica_norm(qzb qpvb t) jtb2 = cubica_norm(qpvb qfb t) jtc1 = cubica_norm(qpvc qfc t) jtc2 = cubica_norm(qfc qzc t) jtd1 = cubica_norm(qpvd qfd t) jtd2 = cubica_norm(qfd qzd t) ------------------------------ parte grafica parto da posizione base trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegno robot e base dappoggio disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) line([136 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) view(110120) muovo prima zampa plot2(zampaa jta1) plot(zampaa jta2) clf muovo seconda zampa e cambio base appoggio disegna_robot(zampaazampabzampaczampadqfaqzbqzcqzd) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jtb1) plot(zampab jtb2) baricentro definizione cordinate baricentro posa = [0735 pi4 pi4 -pi4 0 0 ] qposa = [0735 0 pi4 -pi4 -pi4 0] posb = [0735 -pi4 34pi pi4 0 0] qposb = [0735 0 34pi pi4 -pi4 0] posc = [0735 0 pi4 -pi4 pi4 0] qposc = [0735 -pi4 pi4 -pi4 0 0] posd = [0735 0 34pi pi4 pi4 0] qposd = [0735 pi4 34pi pi4 0 0] disegno robot in corretta posizione t1=transl([-13 -13 -1135]) t2=transl([13 -13 -1135]) t3=transl([-16 045 -1135]) t4=transl([16 045 -1135]) b=zampaabasetraslazione nellorigine della zampa bara=bt1 barb= bt2 barc= bt3

Appendice B 179

bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno robot e bae appoggio line([465 428 428][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([428 175 175][-415 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposa t) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(110120) spostamento tramite rivisualizzazione ta1=transl([-029 0 0]) ta2=transl([029 0 0]) bara=ta1zampaa2base barb=ta2zampab2base barc=ta2zampac2base bard=ta1zampad2base zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 17 17][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) line([17 432 432][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) torno al robot con catena cinematica base baricentro r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -078 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb

Appendice B 180

zampacbase=barc zampadbase=bard clf view(110120) disegna_robot(zampaazampabzampaczampadqzaqzbqpvcqpvd) line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) view(110120) sposto terza zampa plot2(zampac jtc1) plot(zampac jtc2) clf disegna_robot(zampaazampabzampaczampadqzaqzbqzcqfd) line([46 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) sposta quarta zampa plot(zampad jtd1) plot(zampad jtd2) line([46 46 45][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 46 46][-324 -324 -324][-1135 -1135 -1135]ColorrLineWidth1)

ii3 Calcolo della cinematica inversa

FUNZIONE CINEMATICA Programma che permette di calcolare la cinemetica diretta ed inversa della zampa del robot in esame simula in modo opportuno lanello cinematico di controllo dando la possibilitagrave allutente di inserire un possibile disturbo esterno che non ha permesso il corretto funzionamento La variabile diturbo potragrave in future evoluzioni assumere i valori di sensori o dometrici la funzione di cinemetica inversa egrave stata implementata con tre differenti metodicalcolo del gradiente e geometrico(studiato ad ok che permette il calcolo in real time) parametri in input vetthheta = vettore degli angoli dei giunti per la cinematica diretta medodo = scelta tra i metodi di calcolo di cinematica inversa 1=geometrico 2=inseguimento del gradiente 3=inseguimento veloce del gradiente incremento_angolo = approssimazione da usare con i metodi del gradiente espressa in gradi

Appendice B 181

gomito = scelta se gomito alto (1) o basso (0) parametri output n = numero di iterazioni per il calcolo della cinematica inversa errore = errore in gradi commesso tra la posizione voluta in input e quella realmente raggiunta Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [nerrore] = cinematica(vetthetametodoincremento_angologomito) metodo=1 incremento_angolo=25 gomito=1 alto vettheta=[-pi4 pi4 pi2] errore=[] incr_ang=incremento_angolo2pi360trasformazione valore in radianti ntheta=size(vettheta) considero ogni singola riga del vettore degli angoli concentro cioegrave lanalisi sui singoli 3 valori degli angoli for(nt=1ntheta) utilizzo variabile locale theta=(vettheta(nt)) theta_i=[] v1=size(theta) for(v=1v1(11)) inizio ciclo per tutti i valori di theta inseriti calcolo CINEMATICA DIRETTA per il calcolo della posizione dellend_effector nello spazio dei giunti considero c1 il baricentro che risulta essere giunto fittizio C2=cos(theta(v1))S2=sin(theta(v1)) C3=cos(theta(v2))S3=sin(theta(v2)) C4=cos(theta(v3))S4=sin(theta(v3)) matrici prodotte dai parametri di Denavit Hartemberg A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A34=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] matrice finale end-effector T=A12A23A34 memorizzo in pos la posizione finale dellend effector calcolata si trova nei primi 3 elementi della quarta colonna della matrice T for(i=13) pos(1i)=T(i4) end pos(14)=1 siamo nelle omogenee p deve avere 4 valori disturbo=[0 0 0 0]introduco valori disturbo quando avremo i sensori avrograve in input valore posizione finale raggiunta diversa da quella calcolata ricalcolo posizione reale raggiunta pos=pos+disturbo

Appendice B 182

dalla nuova posizione calcolo la CINEMATICA INVERSA PRIMO ANGOLOricavato direttamente dalla matrice T z2=pos(12)pos(11) theta_i(11) = atan(z2) ricalcolo l aposizione corretta di intersezione degli assi avendo giagrave calcolato il valore de primo giuntosposto lorigine nel secondo giunto in base alla posizione effettiva del robotsullasse devo fare controlli per calcolare l aposizione dellend-effector rispetto alla nuova origine PIPPO=pos() if (theta_i(11)==0) pos(11)=pos(11)-(cos(theta_i(11))00573) else if pos(13)==0 pos(11)=00675+009 else if (theta_i(11)gt0) pos(11)=(pos(11)cos(theta_i(11)))-00573 else pos(11)=(pos(11)cos(theta_i(11))-00573) end end end PIPPO2=pos() METODO GEOMETRICO if (metodo==1) n=1 unica interazione dist=0 pos(11)=abs(pos(11)) pos(13)=abs(pos(13)) da analisi geometrica B = pos(11)^2+pos(13)^2 c2=(B-00675^2-009^2)(200675009) theta_i(13)=(acos(c2)) delta=atan((pos(13))(pos(11)))considerando i grafici ho valori di x e z invertiti zx=(009sin(theta_i(13))(00675+009cos(theta_i(13)))) alfa = atan(zx) se gomito alto uasato sempre if (gomito==1) theta_i(12)=(delta+alfa) end se gomito basso if (gomito==0) theta_i(12)=(delta-alfa) end calcolo errore tra dato in input e valori trovati err(11)=theta(11)-theta_i(11) err(12)=abs(theta(12))-theta_i(12)+pi2causa inversione di posizionamento motori err(13)=abs(theta(13))-theta_i(13) trasformo errore in gradi errore=[errorefix(err360(2pi))] else METODO ITERATIVO PER CALCOLARE CINEMATICA INVERSA

Appendice B 183

if (metodo==2) METODO GRADIENTE inizializzo var di appoggio a=0 b=0 n=0 dist = Calc_Distanza(abpos(11)pos(13)) calcolo distanza iniziale while (dist gt 0001) 0001 approx al millimetro 001 approx al centimetro calcolo la differenza della distanza dalla pos finale dellend-effector incrementado e decrementando gli angoli verifico se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_angbpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) -Calc_Distanza(a b-incr_angpos(11)pos(13)) a = a - gradient_a creo le nuove pos b = b - gradient_b ricalcolo la distanza e vedo se egrave minore dellapprox dist = Calc_Distanza(abpos(11)pos(13)) n=n+1incremento numero di iterazioni end else if(metodo==3) METODO FASTER GRADIENT FOLLOWING inizializzo var di appoggio a=0 b=0 n=0 speeda=0 speedb=0 dist = Calc_Distanza(abpos(11)pos(13))calcolo distanza da end effector salvo il valore del vecchio gradiente per entrambe le posizioni old_gradient_a = 0 old_gradient_b = 0 while (dist gt 0001) approssimazione al millimetro n=n+1 controllo se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_ang bpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) - Calc_Distanza(a b-incr_angpos(11)pos(13)) controllo se ci siamo gia trovati in questi valori in segno if (sign(old_gradient_a) ~= sign(gradient_a)) se gradiente ha cambiato direzione(salitadiscesa)devo arrestare e modificare valori a = a - speeda old_gradient_a (gradient_a-old_gradient_a) speeda = 0 else speeda =speeda + gradient_a se sto seguendo salita o discesa del gradiente continuo a seguirla if (sign(old_gradient_b) ~= sign(gradient_b))

Appendice B 184

b = b- speeda old_gradient_b (gradient_b-old_gradient_b) speedb = 0 else modifico posizioni raggiunte e velocitagrave speedb =speedb+gradient_b a = a- speeda b = b- speedb end end ricalcolo distanza con nuovi valori dist = Calc_Distanza(a bpos(11)pos(13)) old_gradient_a = gradient_a il grdiente appena calcolato diventa il vecchio old_gradient_b = gradient_b end else testo=inserito metodo errato end end STAMPO VALORI NEL CASO DEI GRADIENTI nstampo il numero di iterazioni che sono servite a calcolare il risultato dist theta_i(12)=a-incr_angvalori corretti sono quelli al passo precedente theta_i(13)=b-incr_ang theta_i esprimo lerrore in gradi err=theta-theta_i errore=[errorefix(err360(2pi))] end end end

ii4 Analisi del modello dinamico

FUNZIONE EULERO_BASE Funzione che effettua il calcolo dei coefficienti di newton eulero sulla singola zampa per ogni singolo giunto dellarticolazione in base alla parametrizzazione di Denavit-Hartemberg La catena cinematica qui analizzata egrave quella che ha per base il baricentro ed end effector il piedeApplicata a parametri di controllo degli attuatori(passo_avanti) parametri input theta=vettore a tre colonne che rappresenta gli angoli dei tre giunti function [forza_gen] = eulero_base(theta) theta=[ pi4 pi4 pi2 pi4 pi4 pi4 0 pi4

Appendice B 185

pi4 pi4 0 pi4 pi4 pi4 0 pi4 pi4 pi4 pi2 pi4 pi4 pi4 pi2 pi4] definizione tempistiche delta=1 [v1 n1]=size(theta) forza_gen=[] massa PESO=1 IN KG massa=[PESO4 002 002 005] gravitagrave g=[0 0 -98] tensore dinerzia del complesso braccio motore espressi in millimetri x=[0026 0003 0003 0009] y=[0054 0020 0020 004] z=[01125 00573 00675 009] I=[] matrice momento dinerzia for(i=13) I=[I (y(i)^2+z(i)^2)12 0 0 0 (x(i)^2+z(i)^2)12 0 0 0 (y(i)^2+z(i)^2)12] end for(v=1v1-1) inizio ciclo per piugrave posizioni successive ris=[] analizzo due istanti temporali successivi per estrapolare la velocitagrave for(j=1n1) ris=[ris (theta(v+1j)-theta(vj))] end d_theta=risdelta espresso in radsec dd_theta=d_thetadeltaespresso in radsec^2 C1=cos(theta(v1))S1=sin(theta(v1)) C2=cos(theta(v2))S2=sin(theta(v2)) C3=cos(theta(v3))S3=sin(theta(v3)) C4=cos(theta(v4))S4=sin(theta(v4)) Ricavo matrice di rotazione tot R=[[C1(1) (-S1(1)) 0 S1(1) C1(1) 0 0 0 1] [C2(1) 0 (-S2(1)) S2(1) 0 -C2(1) 0 1 0] [C3(1) (-S3(1)) 0 S3(1) C3(1) 0 0 0 1] [C4(1) (-S4(1)) 0 S4(1) C4(1) 0 0 0 1]]gestita come 123 cinematica diretta per il calcolo della posizione dellend_effector nello spazio dei giunti A11=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A13=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A14=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T1=A11A12A13A14

Appendice B 186

C1=cos(theta(v+11))S1=sin(theta(v+11)) C2=cos(theta(v+12))S2=sin(theta(v+12)) C3=cos(theta(v+13))S3=sin(theta(v+13)) C4=cos(theta(v+14))S4=sin(theta(v+14)) A21=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A22=[C2 0 (-S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A24=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T2=A21A22A23A24 dalle posizioni successive trovate con cinematica diretta estrapolo la posizione e da essa la velocitagrave for(i=13) pos(1i)=T2(i4)-T1(i4) end vel=posdelta acc_end_eff=veldelta vettore dallorigine della terna(i-1)al baricentro Ci R_iC=[0055125 0 0002865 0 0003375 0 00045 0 0] vettore dallorigine della terna(i)al baricentro Ci RC=[-0055125 0 0-002865 0 0-003375 0 0-0045 0 0] vettore dallorigine della terna(i-1)allorigine della terna (i) R_iI=[01125 0 000573 0 000675 0 0009 0 0] zo=[0 0 1]asse base altri parametri da calcolare velocitagrave lineare del baricentro Ci p_C=[0 0 0] velocitagrave lineare dellorigine della terna (i) p_i=[0 0 0] velocitagrave angolare del braccio omega=[0 0 0] accelerazione lineare del baricentro Ci pp_C=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione lineare dellorigine della terna (i) pp_i=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione angolare del braccio d_omega=[0 0 0] forza esercitata dal braccio (i-1) sul braccio i f=(1)acc_end_eff il primo valore rappresenta su end_effector momento mu=[0 0 0] forza generalizzata tau=[] impongo velocitagrave e accellerazioni per il braccio base inizio algoritmo inserisco formule di Newton-Eulero(vedi teoria) for(i=24) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] omega(i)=(Rot(omega(i-1)+(d_theta(1i-1)zo))) d_omega(i)=(Rot(d_omega(i-1)+(dd_theta(1i-1)zo)+cross(d_theta(1i-1)omega(i-1)zo)))

Appendice B 187

pp_i(i)=(Rotpp_i(i-1))+cross(d_omega(i)R_iI(i-1))+cross(omega(i)(cross(omega(i)R_iI(i-1)))) pp_C(i)=pp_i(i)+cross(d_omega(i)RC(i-1))+cross(omega(i)(cross(omega(i)RC(i-1)))) end TORNO indietro per calcolare le forze e i momenti i=3 r=2indici while(igt=1) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] Iner=[I((i-1)3+1)I((i-1)3+2)I((i-1)3+3)] f(r)=(Rotf(r-1))-massa(1i)pp_C(i)ho sottratto la massa perchegrave la considero forzapeso mu(r)=cross(-f(r)(R_iI(i)+RC(i)))+(Rotmu(r-1))+(Rot(cross(f(r-1)RC(i))))+(Inerd_omega(i))+cross(omega(i)(Ineromega(i))) i=i-1 r=r+1 end n2=size(mu) for(i=2n2) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] tau(i)=mu(i)Rotzo end forza_gen=[forza_gen tau] end forza_gen espressa in Nm forza_gen=(forza_gen100)98 trasformazione in cmKg

ii5 Map building

ii51 Espansione degli ostacoli

FUNZIONE ONDA_DESTINAZIONE funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input matrice= matrice di definizione mappa xend=valore dellascissa della destinazione yend=valore dellordinata della destinazione parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_destinazione(matricexendyend)

Appendice B 188

calcolo dimensioni matrice [dim1dim2] = size(matrice) for(i=1(xend-1))righe superiori ad arrivo for(j=1(dim22))per tutte le colonne matrice(i((j2)-1))=(xend-i)attribuisco valori decrescenti end end for(i=(xend+1)dim1)righe inferiori ad arrivo for(j=1(dim22)) matrice(i((j2)-1))=(i-xend)attribuisco valori a cui devo sottrarre la destinazione end end for(i=1dim1)colonne a sx ad arrivo for(j=1(yend-1))fino a colonna precedente arrivo sottraggo il numero in cui sono matrice(i((j2)-1))=matrice(i((j2)-1))+(yend-j) end end for(i=1dim1)colonne a dx ad arrivo for(j=(yend+1)(dim22))da colonna successiva a fine matrice(i((j2)-1))=matrice(i((j2)-1))+(j-yend)da valore devo sottrarre valore destinazione end end matrix=matrice restituisco matrice modificata FUNZIONE ONDA_OSTACOLOPLUS funzione che inseriscce come secondo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dallstacolo piugrave vicino valutando opportunamente la relazione tra gli ostacoli giagrave presenti parametri in input matrice= matrice di definizione mappa xposa=valore dellascissa iniziale deelostacolo xposb=valore dellascissa di fine deelostacolo yposa=valore dellordinata iniziale deelostacolo yposb=valore dellordinata di fine deelostacolo parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_ostacoloplus(matricexposaxposbyposayposb) funzione per la creazione degli ostacoli ostacolo_par(xaxbyaybc) ostacolo occupa quattro celle xayaxaybxbya xbyb definisco nuova matrice matrice_1=zeros(size(matrice)) creo onda con singolo ostacolo matrice_1=onda_ostacolo(matrice_1xposaxposbyposayposb) [dim1dim2] = size(matrice_1) confonto matrice con singolo ostacolo con matrice con giagrave presenti altri ostacoli e salvo le distanze minime da essi for(i=1dim1) for(j=1(dim22))

Appendice B 189

if(matrice_1(i(j2))ltmatrice(i(j2))) matrice(i(j2))=matrice_1(i(j2)) end end end matrice(xposayposa2)=0valori che identificano lostacolo matrice(xposa((yposa2)-1))=110 matrice(xposayposb2)=0valori che identificano lostacolo matrice(xposa((yposb2)-1))=110 matrice(xposbyposa2)=0valori che identificano lostacolo matrice(xposb((yposa2)-1))=110 matrice(xposbyposb2)=0valori che identificano lostacolo matrice(xposb((yposb2)-1))=110 espansione ostacolo if(yposa ~= 1)se sono sul bordo sinistro matrice(xposa(yposa-1)2)=0valori che identificano lespansione matrice(xposa(((yposa-1)2)-1))=109 matrice(xposb(yposa-1)2)=0valori che identificano lespansione matrice(xposb(((yposa-1)2)-1))=109 end if(yposb ~= (dim22))se sono sul bordo destro matrice(xposa(yposb+1)2)=0valori che identificano lespansione matrice(xposa(((yposb+1)2)-1))=109 matrice(xposb(yposb+1)2)=0valori che identificano lespansione matrice(xposb(((yposb+1)2)-1))=109 end matrix=matriceritorno il valore della matrice modificata

ii52 Calcolo del percorso

FUNZIONE TROVA_PERCORSO funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input xst=valore dellascissa del punto di partenza yst=valore dellordinata del punto di partenza xend=valore dellascissa del punto di arrivo yend=valore dellordinata del punto di arrivo dim1dim2=dimendioni matrice mappa posxa1posxa2posya1posya2=posizione ostacolo 1 posxb1posxb2posyb1posyb2=posizione ostacolo 2 posxc1posxc2posyc1posyc2=posizione ostacolo 3 parametri in output prova1= valori in coordinate cartesiane del percorso trovato strada_per=percorso in rappresentazione direzionale dei passi da percorrere strada_per_uso=percorso espresso in valori singoli(0=Start1=Avanti-1=Indietro-2=Sinistra2=Destra) Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005

Appendice B 190

function [prova1strada_perstrada_per_uso] = trova_percorso(xstystxendyenddim1dim2posxa1posxa2posya1posya2posxb1posxb2posyb1posyb2posxc1posxc2posyc1posyc2) non_val=[100 1 -1 -1]valore non valido 100=dist_da destinazione 1=distanza da ostacolo visitato=[150 0]marca per nodi visitati arr=[0 45]marca arrivo strada=[xst yst]memorizzo coordinate percorso dim1=5 dim2=dim22 matrice_appoggio=eye(dim1dim2) crea una matrice diagonale dim1 x dim2 matrice=zeros(size(matrice_appoggio))creo matrice vuota creo matrice con onde necessarie matrice=onda_destinazione(matricexendyend) matrice=onda_ostacolo(matriceposxa1posxa2posya1posya2) matrice=onda_ostacoloplus(matriceposxb1posxb2posyb1posyb2) matrice=onda_ostacoloplus(matriceposxc1posxc2posyc1posyc2) prova=matriceprova diventa la mia matrice i=xst j=yst parto da sorgente n=dim1dimensioni matrice m=dim22 trovato=0 creo insieme dei successivi del nodo in analisi while(trovato==0) if((igt=1)ampamp(ilt=dim1)ampamp(jgt=1)ampamp(jlt=(dim22))) if(i ~= 1)se sono ai bordi successivi=[matrice(i-1(j2)-1) matrice(i-1(j2)) i-1 j] else successivi=non_val end if(j ~= 1)se sono ai bordi successivi=[successivimatrice(i(((j-1)2)-1)) matrice(i(j-1)2) i (j-1)] else successivi=[successivinon_val] end if(i ~= n) successivi=[successivimatrice(i+1(j2)-1) matrice(i+1(j2)) i+1 j] else successivi=[successivinon_val] end if(j ~= m) successivi=[successivimatrice(i(((j+1)2)-1)) matrice(i(j+1)2) i (j+1)] else successivi=[successivinon_val] end migliore=non_valattribuisco valore enorme a migliore trov=0 scelgo il miglior successivo quello che mi porta piugrave vicino a destinazione for(k=14) if(successivi(k1)lt=migliore(1)) tra due a stessa distanza prendo quello piugrave lontano dallostacolo

Appendice B 191

if((successivi(k1)==migliore(1))ampamp(successivi(k2)ltmigliore(2))) migliore=successivi(k) trov=1 posto=ksalvo la posizione del successivo end migliore=successivi(k) trov=1 posto=k end end matrice(i(j2)-1)=visitato(1)marco percorso giagrave visitato matrice(i(j2))=visitato(2) strada=[stradamigliore(3) migliore(4)]salvo la posizione del migliore trovato se sono arrivato a destinazione ho finito if(migliore(3)==xend)ampamp(migliore(4)==yend) trovato=1 end controllo per il mancato raggiungimento del percorso i=migliore(3)cerco il successivo j=migliore(4) se il migliore tra i successivi egrave o un ostacolo o unespansione sono bloccato if((migliore(1)==150)||(migliore(1)==109)||(migliore(1)==110)) trovato=2non esiste percorso end else trovato=2 end end if(trovato==1) testo=PERCORSO TROVATO end if(trovato==2) testo=PERCORSO NON TROVATO end se ho trovato il percorso if(trovato ~= 2) prova1=stradasalvo la strada in coordinate effettuata [rc] = size(strada) dalle coordinate estrapolo la strada direzionale e una espressa in singolo valore strada_per=[ start] strada_per_uso=[0] for(k=1(r-1)) if((strada(k1)~= strada(k+11))ampamp(strada(k2)== strada(k+12))) ris=strada(k1)- strada(k+11) if (ris==1) strada_per=vertcat(strada_perIndietro) strada_per_uso=[strada_per_uso-1] else strada_per=vertcat(strada_perAvanti ) strada_per_uso=[strada_per_uso1] end

Appendice B 192

else if((strada(k1)== strada(k+11))ampamp(strada(k2)~= strada(k+12))) ris=strada(k2)- strada(k+12) if (ris==1) strada_per=vertcat(strada_perSinistra) strada_per_uso=[strada_per_uso-2] else strada_per=vertcat(strada_perDestra ) strada_per_uso=[strada_per_uso+2] end end end end stampa=strada_per end

ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente

FUNZIONE AMBIENTE_PROVA Algoritmo che richiama la funzione trova_percorso e con i risultati trovati realizza il plottaggio grafico del robot in movimento nellambiente Realizza controlli per la scelta del passo da utilizzare nellistante in esame Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 preparazione dati base figura figure grid on axis([-5 5 -5 5 -2 7]) clf init sfondo(xstartystartxendyend) ASGAR b=transl(000) posiziono il robot nello start t=transl([ystart -xstart 0]) bara=bt barb=bt barc=bt bard=bt zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard center_position(barabarbbarcbard)

Appendice B 193

chiamo la funzione trova_percorso [coord path

path_uso]=trova_percorso(xstartystartxendyenddim1dim2ostxa1ostxa2ostya1ostya2ostxb1ostxb2ostyb1ostyb2ostxc1ostxc2ostyc1ostyc2) [p k]=size(path_uso) v=1 p1=[] cont=[] per ogni elemento del percorso while(vlt=p) in relazione al percorso espresso con singoli valori if (path_uso(v)== 0)start clf alzati7chiamo funzione di alzata del robot clf sfondo(xstartystartxendyend) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) v=v+1 else if (path_uso(v)== -2) cammina_sinistra for(i=04) faccio fare CINQUE passi a sx x spst a sx=02 hold on passo_sx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 2) cammina_destra for(i=04) faccio fare CINQUE passi a dx x spost a dx =02 hold on passo_dx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 1)in avanti c=0 k=v conto per quante celle non varia la x cioegrave qunti elementi devo andare avanti while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1)

Appendice B 194

n_passi=fix(distanza07)trasformo la distanza in passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo per eccesso il rimanente for(s=1n_passi) cammina_avanti con passi lunghi hold on passo_avanti_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_avanti con passi correttivi hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] else if (path_uso(v)==-1)indietro c=0 k=v calcolo x quanti elementi ho camminata indietro while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1) n_passi=fix(distanza07)definisco n_passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo rimanente for(s=1n_passi) cammina_indietro con passi lunghi hold on passo_indietro_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_indietro con passi correttivi hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] end end end end end

Appendice B 195

end axis([-1 7 -8 1 -2 7]) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]salvo percorso fino a prima

della correzione finale correzione finale mi dice quanto sono arrivata lontano dalle destinazione desiderata [m m1]=size(percorso_effettivo) distanza=[] distanza(1)=percorso_effettivo((m-3)4)-(yend) distanza(2)=percorso_effettivo((m-2)4)-(-xend) testo=SONO ARRIVATO A DISTANZA DALL OBIETTIVO DI X=distanza(1) y=distanza(2) in base al valore di distanza mi suggerisce cosa il robot dovrebbe ancora fare if ((distanza(2)gt=02)||(distanza(2)lt=-02)) dist_fin=distanza(2)02 testo=devo fare ancora abs(dist_fin)visualizzo il modulo if(dist_fingt0) testo=passi correttivi avanti else testo=passi correttivi indietro end dopo avermi detto cosa deve fare lo esegue if(dist_finlt0) for(i=0fix(abs(dist_fin))) hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end else for(i=0fix(abs(dist_fin))) hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end end end p1=[p1zampaabase] disegno i due percorsi IDEALE e EFFETTIVO percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]aggiungo la correzione al

percorso [n n1]=size(coord)percorso ideale for(k=1(n-1)) if((coord(k1)~= coord(k+11))ampamp(coord(k2)== coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k+11)][0 0

0]ColorgLineWidth2)

Appendice B 196

else if((coord(k1)== coord(k+11))ampamp(coord(k2)~= coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k1)][0 0

0]ColorgLineWidth2) end end end PERCORSO vero che invece fa il robottino il valore delle coordinate egrave giagrave giusto come segni for(k=0(m4)-2) if((percorso_effettivo((4k)+14) ~=

percorso_effettivo((4(k+1)+1)4))||(percorso_effettivo((4k)+24) == percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4(k+1)+1)4)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo(4k+24)][0 0 0]ColorbLineWidth2) else if((percorso_effettivo((4k)+14) ==

percorso_effettivo((4(k+1)+1)4))ampamp(percorso_effettivo(4k+24) ~= percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4k)+14)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo((4(k+1)+2)4)][0 0 0]ColorbLineWidth2) end end end

ii6 Collegamento diretto con il robot fisico

ii61 Creazione degli angoli da trasmetter agli attuatori

FUNZIONE ANGOLI_MOTORI2 Funzione che crea in output larray theta_motori generando le traiettorie di movimento per il corretto funzionamento dellattuazione dei motori fisici In questa versione gli angoli di movimento risultano essere piugrave accentuati per migliorare la stabilirtagrave Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 INSERIRE NUMERO FRAME AL SECONDO frame=2 con 50 sembra continuo

Appendice B 197

int=1(frame-1)definisco il numero di intervalli in cui scandire il movimento t=[0int1] definizione variabile di controllo x=0 if (int==1) x=1 end poszero=[0 0 0]posizione impressa nella pic pos_base_A=[0 -pi4 (-pi2)]posizione base delle zampe di destra pos_base_B=[0 pi4 (pi2)]posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento pos_av_A=[(pi4-02) -pi4 -pi2] pos_av_A2=[(pi3) -pi4 -pi2] modificata accentuo movimento in avanti pos_av_B=[(-pi4+02) pi4 pi2] pos_av_B2=[(-pi3) pi4 pi2] pos_ind_A=[(-pi4+02) -pi4 -pi2] pos_ind_A2=[(-pi3) -pi4 -pi2] pos_ind_B=[(pi4-02) pi4 pi2] pos_ind_B2=[(pi3) pi4 pi2] posizioni intermedie=punti di via per le cubiche pos_int_A1=[(-pi4+02) 0 0] pos_int_A2=[(-pi3) 0 0] pos_int_B2=[(pi4-02) 0 0] pos_int_B3=[(pi3) 0 0] calcolo dellle traiettorie tramite la cubica da posizione zero a posizione base parta=cubica_norm(poszeropos_base_At) partb=cubica_norm(poszeropos_ind_Bt) partc=cubica_norm(poszeropos_ind_B2t) movimento in avanti zampe di sinistra jc1=cubica_norm(pos_ind_B2pos_int_B3t) jc2=cubica_norm(pos_int_B3pos_av_Bt) jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_B2t) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint+x) jd_b=cubica_norm(pos_base_Apos_ind_A2int+x) jb_b=cubica_norm(pos_av_B2pos_base_Bint+x) jc_b=cubica_norm(pos_av_Bpos_base_Bint+x) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_A2t) jd1=cubica_norm(pos_ind_A2pos_int_A2t) jd2=cubica_norm(pos_int_A2pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_A2pos_base_Aint+x)

Appendice B 198

jdb=cubica_norm(pos_av_Apos_base_Aint+x) jbb=cubica_norm(pos_base_Bpos_ind_Bint+x) jcb=cubica_norm(pos_base_Bpos_ind_B2int+x) costruzione dei vettori di attesa per ogni zampa pos_attesaA=[]attesa della zampa nella posizione base pos_attesaB=[] pos_attindA=[]attesa della zampa nella posizione indietro pos_attindB=[] pos_attavA=[]attesa della zampa nella posizione avanti pos_attavB=[] vettori per le attese dei movimenti delle altre zampe for(i=1(2+2int)int) pos_attesaA=[pos_attesaApos_base_A]attesa zampa in posizione base pos_attesaB=[pos_attesaBpos_base_B] pos_attindA=[pos_attindApos_ind_A]attesa zampa in posizione indietro pos_attindB=[pos_attindBpos_ind_B] pos_attavA=[pos_attavApos_av_A]attesa zampa in posizione avanti pos_attavB=[pos_attavBpos_av_B] end costruzioni vettori composti per la camminata ja=[partapos_attesaApos_attesaAja_bpos_attindAja1ja2jab] jb=[partbpos_attindBjb1jb2jb_bpos_attesaBpos_attesaBjbb] jc=[partcjc1jc2pos_attavBjc_bpos_attesaBpos_attesaBjcb] jd=[partapos_attesaApos_attesaAjd_bjd1jd2pos_attavAjdb] vettore da mandare in output ogni colonna rappresenta un motore in pos 3 4 5 6 7 8 9 10 11 12 13 14 theta_motori=[jb(1) jc(1) jb(2) jb(3) jc(2) jc(3) jd(3) jd(2) ja(3) ja(2) jd(1) ja(1)] costruzione della scala per i valori minimi valori_minimi=(-pi2)ones(112) chiamata di funzione per spedire valori ai motori moveservos_mio(theta_motori0111valori_minimi) ho messo frame 8 e valore tra un valore sparato e laltro 008 va bene

ii62 Coollegamento diretto di comunicazione con la PIC

FUNZIONE MOVESEVOS La funzione che ricevendo in imput il vettore contenente le posizioni dei motori le elabora per trasformarle in valori compatibili con la PIC (0 255)e apre una connessione di comunicazione con essa La PIC che riceveragrave in input i dati tramite la connessione seriale (impostata sulla COM1 alla velocitagrave di 9600) interpreteragrave i dati nel seguente modo

Appendice B 199

- Il primo valore indica la modalitagrave (254 = movimento dei servo) - I successivi 16 valori compresi tra 0 e 255 indicano le posizioni parametri inputpos=la matrice theta costitutita da una o piugrave righe composta da 12 elementi riferiti ai 12 attuatori timestep=indica il tempo di invio tra una sequenza e laltra ovvero il tempo che intercorre tra ogni framerigha della matrice in ingresso(valore minimo 0111) min=vettore contenente i valori min assumibili dai motori per calcolare lo zero delle posizioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 pos egrave il valore della mia theta espressa solo con 12 valori Funzione che invia i valori in output sulla seriale function moveservos_mio(postimestepmin) max_servo_rotation = pi Quanto possono ruotare i motori (pi 2pi) [rowscols] = size(pos) Crea una connessione seriale try s = serial(COM1 BaudRate14400) sByteOrder = littleEndian sTerminator = CR set(s timeout timestep)posso mettere 1 fopen(s) Laperturachiusura della seriale avviene una volta per ogni matrice theta e non ad ogni rigainvio for i=1rows pos_rel = pos(i)-min posizione relativa alla pos minima Vengono aggiunti 4 valori fittizi nulli poichegrave la seriale egrave progettata per gestire 16 motori mentre theta ne contiene 12 theta16 = [0 0 pos_rel(18) 0 pos_rel(1012) pos_rel(9) 0] Converto in valori in valori da 0 a 255 per la PIC I valori inviati compaiono anche nella command line per verifica theta16 = round(theta16255max_servo_rotation) fwrite(s 254 uchar async) readyByte = fread(s 1 uchar) fwrite(stheta16 uchar async) Controlla se la PIC ha ricevuto theta (conferma tramite valore 33) confirmByte = fread(s 1 uchar) if confirmByte ~= 33 msgbox(Errore di invio dei comandi sulla serialeErroreerror) else Valori inviati correttamente sulla seriale end pause(timestep) end

Appendice B 200

fclose(s) clear ans catch Se fallisce la connessione avverti lutente Porta seriale non connessa end

  • Introduzione
    • Unitagrave funzionali di un robot mobile
    • Obiettivo del lavoro
    • Organizzazione della tesi
      • Sistemi di locomozione
        • Scopi di studio della locomozione su zampe
        • Differenze e analogie tra locomozione a zampe e su ruote
        • Analisi Trot gait di quadrupedi
          • Studio andatura quasi-statica
          • Studio andatura quasi-dinamica
          • Studio andatura dinamica trotto
              • Stato dellrsquoarte dei four legged robot
                • Panoramica dei Robot quadrupedi esistenti
                  • Collie-1 e Collie-2
                  • Quadrupede MIT
                  • GEO
                  • Quadrupede Kimura lab
                    • Algoritmi di controllo CPG for four legged robot
                    • Robocup e Sony Aibo
                      • Storia
                      • Descrizione dei sensori di Aibo
                        • Visione della macchina
                        • Riconoscimento audio
                        • Tatto
                        • Movimento e sviluppo
                          • Architettura del robot ASGARD
                            • Configurazione del robot quadrupede
                              • Struttura Meccanica
                              • Attuatori
                              • Materiale Policarbonato
                                • ASGRAD in numeri
                                • Hardware
                                • Software
                                • Stato Attuale
                                  • Modellizzazione cinematica e dinamica
                                    • Convenzioni e simbologia utilizzata
                                    • Sistemi di coordinate e trasformazioni
                                    • Cinemetica diretta
                                      • Definizione dei parametri di Denavit Hartemberg
                                      • Metodo di assegnamento secondo D-H
                                        • Cinematica inversa
                                          • Metodo gradiente
                                            • Gradient following
                                            • Faster gradient following
                                                • Calcolo delle traiettorie
                                                • Modello dinamico Newton-Eulero
                                                • Creazione di una mappa
                                                  • Espansione degli ostacoli traformazione delle distanze
                                                    • Scelta di un percorso Algoritmo di Dijkstra
                                                      • Sviluppo dellrsquoalgoritmo di camminata
                                                        • Metodologie di sviluppo
                                                        • Progetto di una andatura
                                                          • Lo spazio
                                                          • Stabilitagrave
                                                          • Tempo
                                                            • Andature implementate
                                                            • Catene cinematiche del robot
                                                            • Passo statico e dinamico
                                                            • Formule di forza e torsione sui giunti
                                                            • Anello di Controllo
                                                            • Map-building e scelta del gait
                                                              • Costruzione della mappa ed espansione degli ostacoli
                                                              • Algoritmo di ricerca del percorso minimo
                                                              • Realizzazione del gait
                                                                  • Sperimentazione e analisi dei risultati
                                                                    • Risultati statici
                                                                      • Passo reale effettuato
                                                                      • Misurazioni reali della pressione
                                                                      • Confronti di cinemetica inversa
                                                                        • Risultati dinamici
                                                                          • Caratteristiche negative dei motori
                                                                            • Velocitagrave
                                                                            • Alimentazione
                                                                                • Caratteristiche del percorso
                                                                                  • Conclusioni e sviluppi futuri
                                                                                    • Risultati raggiunti
                                                                                    • Progetti futuri
                                                                                      • Modifiche meccaniche
                                                                                      • Miglioramenti Hardware
                                                                                      • Miglioramenti Software
                                                                                        • Conclusioni finali
                                                                                          • Bibliografia
                                                                                          • Appendice A
                                                                                            • i Sensori nei robot a zampe disponibili sul mercato
                                                                                            • ii Dead Reckoning Stima della posizione
                                                                                              • ii1 Encoder Ottici
                                                                                              • ii2 Encoder ottici incrementali
                                                                                                • ii21 EL30 E-H-I Eltra srl
                                                                                                  • ii3 Encoder ottici Assoluti
                                                                                                    • ii31 Sensori ottici CORRSYS-DATRON
                                                                                                    • ii32 EAM Parallelo-SSI Eltra srl
                                                                                                      • ii4 Sensori Dopler
                                                                                                      • ii41 Robot Italy SRF04
                                                                                                        • iii Heading Sensor
                                                                                                          • iii1 Giroscopio meccanico
                                                                                                            • iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codi
                                                                                                            • iii12 Futaba Giroscopio FP GY 240 AVCS
                                                                                                              • iii2 Giro-bussola
                                                                                                              • iii3 Giroscopio-Girobussola a fibre ottiche
                                                                                                                • iii31 La funzione giroscopica
                                                                                                                  • iii4 Giroscopio piezoelettrico
                                                                                                                    • iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03
                                                                                                                    • iii42 Giroscopio Piezoelettrico Enc-03ja
                                                                                                                        • iv Sensori geomagnetici
                                                                                                                          • iv1 Bussola magnetica meccanica
                                                                                                                          • iv2 Bussola a effetto Hall
                                                                                                                            • iv21 1490 Digital Compass Sensor
                                                                                                                              • iv3 Bussola a magnetoreversiva
                                                                                                                                • iv31 Philips bussola AMR
                                                                                                                                  • iv4 Bussola magnetoelastica
                                                                                                                                    • iv41 Metglas 2605S2
                                                                                                                                        • v Sensori per la modellizzazione dellrsquoambiente
                                                                                                                                        • vi Sensori di distanza
                                                                                                                                          • vi1 Sensori basati sul tempo di volo
                                                                                                                                            • vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502
                                                                                                                                              • vi2 Sensore telemetro a sfasamento
                                                                                                                                                • vi21 LIDAR lsquoLight detection and Rangingrsquo
                                                                                                                                                  • vi3 Triangolazione
                                                                                                                                                    • vi31 IFELL Laser e Sistemi Srl
                                                                                                                                                      • Informazioni sui produttori
                                                                                                                                                      • Appendice B
                                                                                                                                                        • i Manuale drsquouso
                                                                                                                                                        • ii Codice generato
                                                                                                                                                          • ii1 Menu principale
                                                                                                                                                          • ii2 Confronto andatura quasi-stabile vs quasi-dinamica
                                                                                                                                                          • ii3 Calcolo della cinematica inversa
                                                                                                                                                          • ii4 Analisi del modello dinamico
                                                                                                                                                          • ii5 Map building
                                                                                                                                                            • ii51 Espansione degli ostacoli
                                                                                                                                                            • ii52 Calcolo del percorso
                                                                                                                                                            • ii53 Definizione dei movimenti per la deambulazione nellrsquoa
                                                                                                                                                              • ii6 Collegamento diretto con il robot fisico
                                                                                                                                                                • ii61 Creazione degli angoli da trasmetter agli attuatori
                                                                                                                                                                • ii62 Coollegamento diretto di comunicazione con la PIC
Page 7: Analisi e sviluppo di un simulatore per gait

Indice 7

i Manuale drsquouso 171

ii Codice generato 172 ii1 Menu principale 172 ii2 Confronto andatura quasi-stabile vs quasi-dinamica 173 ii3 Calcolo della cinematica inversa 180 ii4 Analisi del modello dinamico 184 ii5 Map building 187

ii51 Espansione degli ostacoli 187 ii52 Calcolo del percorso 189 ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente 192

ii6 Collegamento diretto con il robot fisico 196 ii61 Creazione degli angoli da trasmetter agli attuatori 196 ii62 Coollegamento diretto di comunicazione con la PIC 198

Introduzione

Introduzione 9

Negli ultimi decenni continue evoluzioni scientifico tecnologiche hanno

portato ad un radicale cambiamento nella vita umana e nella realizzazione di

progetti un tempo considerati utopici Dalle ldquoali di Leonardordquo allrsquoemulazione

della natura lrsquouomo continua ad osservare lrsquoambiente che lo circonda e

analizzandolo accuratamente egrave riuscito a costruire macchine indipendenti che lo

aiutano nelle azioni quotidiane o che semplicemente lo supportano nelle abitudini

della vita di ogni giorno

Anche se lo stato dellrsquoarte della robotica egrave ancora lontano dal realizzare

dispositivi cosigrave complessi il notevole incremento della potenzialitagrave di calcolo

permette oggi la costruzione di robot dotati di un certo grado di autonomia Un

robot puograve essere considerato autonomo tanto piugrave egrave in grado di svolgere attivitagrave

individuali senza ausili esterni e di prendere decisioni proprie di fronte a

problematiche semplici

In tale contesto di ricerca svolge un ruolo essenziale lo studio delle

interazioni tra il robot e lrsquoambiente circostante Le fasi di ricerca e sviluppo si

possono suddividere in tre fasi principali

bull lrsquoosservazione del naturale comportamento dellrsquoanimale in esame e

lo stretto contatto tra le sue abitudini(camminata corsa trotto) e il

suo habitat

bull la costruzione del progetto e lo sviluppo del modello rendendo il

piugrave possibile congruente le caratteristiche fisiche naturali con la

strumentazione a noi disponibile

bull la realizzazione pratica del progetto

Introduzione 10

Figura 1 Fasi di Osservazione Progettazione Realizzazione

Lrsquoemulazione del movimento e la reazione del robot agli impulsi che

dovragrave essere generata deve risultare il piugrave possibile simile al comportamento

naturale

Unitagrave funzionali di un robot mobile

Un primo approccio con un robot mobile ci porta ad individuare le parti

fondamentali che lo compongono Possiamo effettuare una prima distinzione tra

ciograve che deve necessariamente essere on-board1 e ciograve che invece puograve essere svolto

anche da terminale remoto

Oltre ad attuatori e sensori che obbligatoriamente devono trovarsi sul

robot sarebbe importante che anche lrsquounitagrave di controllo si trovi su di esso affinchegrave

1 Posto sulla struttura meccanica del robot

Introduzione 11

i tempi di risposta e le dispersioni nel canale di comunicazione vengano

minimizzate Da notare lrsquoimportanza di encoder2 che permettono una stima

odometrica3 della posizione e chiudono lrsquoanello di retroazione dei motori questo

tipo di controllo egrave chiamato dead-reckoning[1]

Sul nostro robot attualmente sono posizionati solamente i motori di

attuazione e un sensore di pressione posto sotto una delle quattro zampe si

prevederagrave in futuro lrsquoincremento di sensori di cui viene fornita in seguito una

specifica (Apendice A) Questa miglioria sensoriale giagrave prevista nel progetto da

noi svolto permetteragrave la sostituzione di valori finora forzati come inputcon veri e

propri feedback4

Lrsquounitagrave di map-building che ora egrave delegata ad un compiuter remoto ha il

compito di generare le traiettorie e spedire i valori alla Pic di controllo dei

motori5 le sue potenzialitagrave potranno essere incrementate da dati sensoriali di

visione o contatto con lrsquoambiente esterno

Sensori che permettono una corretta scansione dellrsquoambiente possono

essere di molte tipologie tra i piugrave comuni sonar scanner laser telecamere fisse o a

bordo (anche se egrave molto importante tenere in considerazione il peso di tale

dispositivi) Lrsquoutilizzo di sensori differenti e algoritmi di visione richiedono un

grosso apporto di calcolo computazionale che se fatto on-board potrebbe

compromettere il funzionamento real-time6

2 sensori di rilevamento della posizione 3 forniscono posizione in base ai dati sensoriali a disposizione 4 dati sensoriali percepiti dallrsquoambiente e rinviati allrsquounitagrave di controllo 5 scheda di interfacciamento Pc-attuatori 6 reazione in tempi reali agli impulsi

Introduzione 12

Figura 2 Unitagrave funzionali che caratterizzano un robot mobile autonomo

Ulteriore elemento utile in un robot mobile egrave la sua localizzazione che

solitamente richiede calcoli con rilevatori odometrici Nel nostro progetto ci egrave

stato di grande aiuto lo sviluppo con il sistema Matlab che mantenendo in

memoria variabili matriciali ci ha reso possibile il monitoraggio del baricentro nei

singoli movimenti Tramite queste valutazioni siamo riusciti a ricavare i valori

dellrsquoerrore durante lo spostamento nelle mappe locali dellrsquoambiente create[2][3]

Una volta noto lrsquoambiente e la posizione degli ostacoli (consideriamo

lrsquoambiente noto) si passa a pianificare il moto al fine di svolgere i compiti richiesti

dallrsquoutente[4][5] Gli algoritmi di pianificazione si dividono in due grandi

categorie

bull generativi noti lrsquoambiente e la posizione del robot generano

traiettorie che minimizzano i percorsi e i tempi di reazione

aggirando gli ostacoli[6][7]

bull reattivi adattano il moto del robot a nuovi ostacoli

In generale occorre combinare entrambe le tipologie utilizzando un

pianificatore generativo sulla mappa dellrsquoambiente a disposizione e un algoritmo

Introduzione 13

reattivo nella fase di inseguimento della traiettoria per rendere il robot pronto a

reagire a cambiamenti anche improvvisi dellrsquoambiente

Obiettivo del lavoro

Scopo di tale tesi saragrave quello di realizzare algoritmi per la camminata di un

robot quadrupede al fine di permettere la realizzazione di movimenti il piugrave

possibile reali e la creazione di ipotetiche traiettorie che il robot potragrave

intraprendere in ambienti noti a priori

Al fine di testare il corretto funzionamento dei nostri risultati ci siamo

posti come obiettivo la costruzione di ASGARD (Automatic Stable Gait of A Robot

quaDruped) robot quadrupede in progetto al Politecnico di Milano e di effettuare

prove reali sul campo

Robot quadrupedi richiedono una particolare e complessa analisi di

stabilitagrave ed uno studio approfondito sul controllo del movimento Con il nostro

progetto vogliamo garantire stabilitagrave statica e dinamica e controllare lo sforzo

reale dei motori da noi utilizzati Permettere in sintesi ad ASGARD di vedere la

luce e compiere i sui primi passi

Inoltre in questa tesi verranno sviluppati un algoritmo di map-building e il

pianificatore del moto generativo (non avendo a disposizione sensori di feedback

non possiamo implementare il reattivo) utilizzando algoritmi a contenuto calcolo

computazionale che permetteranno al robot di deambulare in un ambiente noto

senza sovraccaricare il sistema ed effettuando movimenti generati dal sistema in

real time scegliendo lrsquoopportuno passo da eseguire

Organizzazione della tesi

In questo lavoro discuteremo i metodi per modellare e analizzare robot

mobili la principale analisi si concentra su robot quadrupedi dotati di arti

Introduzione 14

autonomi fino ad arrivare allrsquoimplementazione di ASGARD (Automatic Stable

Gait of A Robot quaDruped) il robot del Politecnico di Milano Lo scopo egrave fornire

uno strumento di analisi di stabilitagrave statica e dinamica per la realizzazione di una

camminata in un ambiente noto e una prima struttura di algoritmi che in futuro si

occuperanno del controllo e delle iterazioni con il mondo circostante

Tematiche discusse nei successivi capitoli

Capitolo 1

Motivazioni che ci hanno portato alla scelta di costruire un robot

quadrupede e le sue strategie di camminate possibili

Capitolo 2

Una breve panoramica sui robot quadrupedi esistenti enfatizzando le loro

caratteristiche salienti in termini di posture e sensori e i loro algoritmi principali di

controlloal fine di delineare un adeguato quadro entro cui porre il robot del

Politecnico di Milano

Capitolo 3

Analisi delle caratteristiche meccaniche e funzionali di ASGARD

Capitolo 4

Definizione degli obiettivi fissati per il progetto e presentazione della

teoria necessaria per il corretto svolgimento

Capitolo 5

Descrizione della parte di implementazione del progetto dallrsquoapplicazione

della teoria esposta nel capitolo precedente alla scrittura del codice

Introduzione 15

Capitolo 6

Discussione dei risultati e su alcune proveeseguite a simulatore e su altre

misurazioni pratiche realizzate sul robot fisico

Capitolo 7

Migliorie possibili effettuabili in futuro e conclusioni finali dellrsquoautore

Appendice A

Ricerca eseguita su sensori disponibili sul mercato che potranno essere

integrati nel progetto

Appendice B

Presentazione del manuale di utilizzo e parte di codice significativa

generato in linguaggio Matlab 65

Capitolo 1 Sistemi di locomozione

Sistemi di locomozione 17

11 Scopi di studio della locomozione su zampe

Esistono diverse motivazioni che giustificano lo studio di robot su zampe

tre le principali[8] troviamo

bull mobilitagrave fondamentale caratteristica di un robot egrave riuscire a

lavorare e svolgere le sue mansioni in tutte le tipologie di

terreni da quelli lisci ai piugrave ostili in presenza di scale o gradini

e riuscire se possibile ad evitare ostacoli non solo aggirandoli

ma anche scavalcandoli Veicoli a ruote sono la soluzione

adeguata se si pensa a terreni piani o con inclinazioni continue

ma la struttura del nostro pianeta permette il loro utilizzo in

meno della metagrave delle terre emerse Se invece pensiamo alla

crosta terrestre essa egrave quasi completamente raggiungibile da

esseri viventi (uomini animali) dotati di gambe

bull punti di appoggio isolati che ottimizzano il supporto e la

trazione e non richiedono un continuo contatto con il suolo

come succede per le ruote

bull sospensione attiva che disaccoppia la traiettoria delle gambe

da quella del corpo rendendo possibile cioegrave lo spostamento

senza sollecitazioni del carico nonostante pronunciate

sconnessioni del terreno

Queste caratteristiche in molti casi rendono indipendenti le capacitagrave del

robot dallrsquoasperitagrave del percorso dando la possibilitagrave di maggiore efficienza in

velocitagrave anche in ambienti molto ostili

Analizzare le spiccate doti di agilitagrave e mobilitagrave di animali non risulta un

facile compito essi sono in grado di muoversi velocemente e con sicurezza nelle

piugrave svariate condizioni ambientali

Sistemi di locomozione 18

Figura 3 Particolari posture animali in condizioni ambientali ostili

Nostro principio di studio risulta essere cercare metodologie di emulazione

di tali doti e successivamente applicarle a robot quadrupedi cercare i compiti

simili di locomozione e tramite questi risultati percepire problematiche e trovare

soluzioni per la mobilitagrave di strutture artificiali[9]

In particolare un robot su zampe necessita di

bull controllo del movimento dei giunti

bull controllo dellrsquoequilibrio

bull ciclicitagrave dellrsquouso delle zampe

bull punti di appoggio noti

bull calcolo della possibile traiettoria percorribile

I sistemi legged7 risiltano in diversi ambiti molto utili ai settori di ricerca

dallrsquoIntelligenza Artificiale e Sistemi di cooperazione multi-agente a semplici

robottini in grado di svolgere un unico ma non meno significativo task8 come la

pulizia di una superficie la raccolta di un oggetto o la perlustrazione di aree

pericolose con la relativa raccolta dati

7 termine inglese per rappresentare sistemi robotica dotati di quattro zampe 8 compitoincaricoobiettivo da raggiungere

Sistemi di locomozione 19

12 Differenze e analogie tra locomozione a zampe e su ruote

La principale caratteristica che diversifica le due tipologie di robot egrave la

gestione dei movimenti Per i sistemi legged la realizzazione di un passo include

al suo interno un insieme di variabili di controllo per il movimento corretto dei

giunti e la corretta sincronizzazione dei movimenti delle zampe al fine di ottenere

una adeguata andatura

Figura 4 Rover a ruote Figura 5 Rover Spirit sulla superficie di Marte[10]

Durante il passo inoltre bisogna mantenere il controllo sulla stabilitagrave e

sullrsquoequilibrio (controlli del tutto assenti in un robot a ruote) monitorare i valori

di torsione dei singoli motori accertandosi che essi non superino le soglie limite e

valutare il punto di appoggio futuro Una volta costruito un passo il compito

ricade nel continuare a ciclarlo opportunamente al fine di portare a termine il

compito richiesto superando eventuali dissestamenti del terreno o ostacoli

Un robot a ruote invece egrave in grado solo di muoversi su terreni lisci e

richiede un maggior spazio per effettuare semplici manovre Di fronte a ostacoli

anche minimi il robot a ruote dovragrave effettuare la pianificazione di una traiettoria

Sistemi di locomozione 20

per aggirare lrsquoostacolo e impiegheragrave un tempo di reazione maggiore Se un robot

a ruote si troveragrave di fronte ad uno ostacolo saragrave costretto ad attivare calcoli

opportuni che gli permetteranno di costruire una strada alternativa per il

superamento dellrsquoimprevisto Un robot a zampe invece potragrave attivare gli attuatori

al fine di scavalcare se possibile lrsquoostacolo

Figura 6 Diverse strategie per oltrepassare un ostacolo

Altro aspetto di differenziazione tra le due tipologie di robot risulta essere

la mobilitagrave della piattaforma Alcune volte risulta essere utile mantenere il carico

in una inclinazione prestabilita (ad esempio il trasporto di un grave o il

mantenimento del centro ottico di una telecamera) Nei robot a ruote il corpo egrave

solitamente solidale con lrsquoasse delle ruote e si mantiene ad una distanza fissa dal

terreno seguendolo in ogni sua inclinazione Questo risulta essere una

caratteristica utile su terreni pianeggianti ma risulta sconveniente su terreni

curvilinei In questa circostanza risulterebbe utile disaccoppiare la piattaforma con

le ruote motrici al fine di mantenere costante lrsquoinclinazione del corpo principale

Questo disaccoppiamento egrave giagrave presente nella struttura dinamica del robot

a zampe dove la postura della piattaforma risulta essere la somma di due

contributi quali

bull scelta dei punti di appoggio

bull posizione cinematica assunta da ogni singola zampa in riferimento

alle caratteristiche del terreno

Sistemi di locomozione 21

Attraverso cioegrave la posizione delle zampe il robot egrave in grado di

ammortizzare le sconnessioni del terreno e dentro i limiti cinematici e di

mantenere lrsquoasse prescelto

Figura 7 Mobilitagrave della piattaforma

Esistono comunque analogie che accomunano le due strutture di robot

esistenti la principale risulta essere la ciclicitagrave dei movimenti Nei sistemi legged

dopo aver trovato un corretto movimento per la realizzazione di un passo egrave da

ricercare il periodo in cui esso dovragrave ripetersi al fine di ottenere una camminata

con andatura corretta Per un robot a ruote il periodo risulta invece essere

semplicemente la rotazione della ruota attorno al proprio asse A paritagrave di

ripetizione di un ciclo il risultato deve essere il ritorno nella posizione iniziale e

lrsquoincremento dello spazio di lavoro

Ulteriore analogia egrave il sistema odometrico Su ogni robot sono solitamente

posizionati un discreto numero di encoder per il rilevamento della posizione Nei

robot a ruote essi sono posizionati sullrsquoasse delle ruote mentre nei legged essi

sono inseriti nelle articolazioni dove sono posizionati i motori Si possono notare

differenze consistenti a livello di calcoli effettuati ma entrambi forniscono come

risultato la posizione effettivamente raggiunta Di particolare interesse per i

calcoli egrave la sequenza di comandi dati in input al variare di essi varia la postura

finale assunta

Sempre riguardo lrsquoodometria altra caratteristica comune egrave il calcolo

dellrsquoerrore esso viene calcolato in relazione ai valori di feedback dei sensori Si

puograve presentare di due tipologie

Sistemi di locomozione 22

bull sistematico dovuto a caratteristiche proprie meccaniche del robot

bull non sistematico dovuto alle iterazioni con lrsquoambiente circostante

Errori e cause di errori verranno trattati nei capitoli successivi

13 Analisi Trot gait di quadrupedi

Tra gli esseri viventi dotati di zampe presenti in natura[11] la nostra

analisi si concentra su animali che deambulano su 4 arti Essi rappresentano una

classe animale che sfrutta particolari doti fisiche e mentali per regolare la stabilitagrave

del corpo e lrsquoagilitagrave dei movimenti

Vengono presentate di seguito alcuni gait9 di quadrupedi su terreni piani e

lrsquoanalisi dei principali fattori che ne determinano le caratteristiche e le prestazioni

in termini di velocitagrave[12]

Le principali caratteristiche sullo studio di andature sono

bull Periodicitagrave il moto prevede la sequenza ciclica del movimento di

ogni singola zampa (passo)Ogniuna di esse egrave regolata da tre

variabili di giunto ciascuna delle quali segue a sua volta una

traiettoria periodica Complicazioni ulteriori emergono se si

considerano virate o terreni sdrucciolevoli

bull Stabilitagrave caratteristica di maggiore importanza nel caso di

locomozione a zampe essa egrave assicurata quando il baricentro del

robot cade allrsquointerno del poligono di stabilitagrave ovvero quando il

margine di stabilitagrave egrave maggiore di zero Il margine di stabilitagrave

dipende dalla posizione in cui il robot si trova se fermo o in

movimento Se il robot egrave fermo tale margine si calcola come la

distanza piugrave breve dal baricentro al perimetro del poligono di

9 Andatura con passi specifici

Sistemi di locomozione 23

stabilitagrave in qualsiasi direzione durante il moto si considerano solo

le distanze nella direzione del moto (margine di stabilitagrave

longitudinale)

bull Traiettoria della zampa la traiettoria dellrsquoorgano terminale di una

zampa (piedino) si compone di tre fasi principali

bull alzata

bull avanzamento

bull appoggio

la prima ha il compito di sollevare il piede da terra la seconda

permette lrsquoavanzamento della zampa ed infine nella terza il piede

viene riposizionato a terra nella posizione base per reiterare il

procedimento

In relazione al profilo scheletrico di un vertebrato mammifero

generalizzato esso egrave in grado deambulare in diverse andature[13]

Non troppo dissimile dallrsquoarchitettura di cani cavalli o gatti il nostro robot

presenta perograve lrsquoarticolazione della spalla ruotata di 90 gradi rispetto al mammifero

comune questo gli permette di mantenere un notevole grado di stabilitagrave in quanto

incrementa il suo possibile convex hull10 ma ci obbliga a studiare un nuovo tipo

di movimento per il passo base

Inoltre il piede di appoggio risulta essere di notevoli dimensioni rispetto

alla zampa al fine di sopportare ottimamente il peso del corpo sovrastante

In base alla stabilitagrave durante il movimento la andatura di un 4-legged puograve

essere classificata in tre diverse classi principali

bull andatura quasi statica

bull andatura quasi dinamica

bull andatura dinamica

10 poligono che rappresenta la base drsquoappoggio

Sistemi di locomozione 24

131 Studio andatura quasi-statica

Una andatura si dice quasi-statica se il centro di massa della nostra

struttura cade allrsquointerno del poligono di stabilitagrave che si viene a creare

congiungendo i punti di appoggio Con questa tipologia di camminata siamo certi

che il robot assorbiragrave le possibili perturbazioni del moto con un piugrave ampio

margine di stabilitagrave

uesta andatura egrave quella riprodotta in laboratorio sul nostro soggetto le

ragioni che ci hanno portato a questa scelta oltre ai vantaggi precedentemente

citati sono

bull moderata velocitagrave

bull buona risposta in tempo degli attuatori

Per implementare le fasi di camminata abbiamo analizzato ed elaborato il

gait 4-time11 di un mammifero comune essa si basa su quattro movimenti un LF

(di sinistra-anteriore) un RR (di destra-posteriore) una RF (di destra-anteriore)

un LR (di sinistra-posteriore) quindi una ripetizione

In questo movimento si noti che lrsquoequilibrio e il supporto egrave effettuato dal

LR+RF ldquodiagonalerdquo mentre i piedini di RR e di LF sono sospesi [ posizioni 1 2 ]

e dalla diagonale opposta per gli altri 2 piedini [ posizioni 5 6 ]

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

11 Gait 4-time camminata divisa in quattro fasi

Sistemi di locomozione 25

Figura 8 Nei nove diagrammi viene descritta la completa sequenza di camminata

partendo con la zampa sinistra Le posizioni 1 e 2 mostrano la diagonale destra 3 diagonale

destra e anteriore sinistra 4 laterale sinistra 5 e 6 diagonale sinistra 7 diagonale sinistra e

anteriore destra 8 laterale destra 9 ritorno nella posizione di partenza

Questa andatura presenta un tipico movimento sinusoidale del baricentro

del corpo nel piano trasversale

In base alla configurazione del nostro robot esso non presenta una colonna

vertebrale snodabile lrsquoanalisi prodotta ci ha potato alla creazione di una andatura

che non modifica lrsquoasse su cui giace il centro di massa

132 Studio andatura quasi-dinamica

La seconda classe di camminata raggruppa andature per cui la proiezione

del centro di massa cade in alcune fasi del passo sul lato del poligono di stabilitagrave

Sistemi di locomozione 26

In queste situazioni un incorretto posizionamento degli attuatori o una

minima perturbazione potrebbe causare una perdita di stabilitagrave per questo bisogna

intervenire in tempistiche ridotte trovando soluzioni che riducano gli effetti

La velocitagrave che si riesce ad ottenere deriva da un passo di camminata

leggermente piugrave ampio eseguito in un tempo minore di frame12 pur mantenendo

quasi inalterate le fasi di esso

133 Studio andatura dinamica trotto

La classe di andatura dinamica rappresenta invece lrsquoandatura piugrave veloce

presente in natura[14] essa si basa sul concetto di tempo di volo in cui solo due

zampe o addirittura tutto il corpo non tocca il terreno andatura tipica nella corsa

di mammiferiVenendo a mancare il triangolo di appoggio bisogna trovare un

abile compromesso tra inerzia velocitagrave e potenza muscolare al fine di evitare la

perdita di equilibrio e lo slittamento delle zampe sul terreno

12 istanti temporali in cui si attua lrsquoanalisi completa

Sistemi di locomozione 27

Figura 9 Nelle posizioni 1 e 3 vengono mostrate la diagonale destra e sinistra come

supporto al trotto Le posizioni 2 e 4 mostrano il momento di flying trot che egrave raramente

osservabile a causa della velocitagrave dei movimenti Le posizioni 5 e 6 mostrano un passo di

corsa piugrave tranquillo che puograve essere eseguito da un cane stanco o non troppo motivato

Capitolo 2 Stato dellrsquoarte dei four legged robot

Stato dellrsquoarte dei four legged robot 29

21 Panoramica dei Robot quadrupedi esistenti

In questo capitolo verragrave presentata una carrellata dei moderni sviluppi

riguardanti la 4-legged robotics13

Proponiamo i progetti piugrave significativi a cui ci siamo riferiti per lrsquoanalisi e

lo sviluppo della camminata e i robot piugrave moderni che vengono utilizzati come

banchi di prova per progetti di intelligenza artificiale e multi-collaborazione che ci

potranno essere utili per evoluzioni future del nostro ASGARD

211 Collie-1 e Collie-2

Giagrave dalle prime ricerche nellrsquoambito della robotica umanoide la

realizzazione di una camminata naturale egrave stata ampiamente presa in

considerazione Nella seconda metagrave degli anni ottanta abbiamo trovato il primo

utilizzo di DC servos per la realizzazione di prototipi per la camminata dinamica

Collie-1 e la sua evoluzione Collie-2[15] Basandosi sul concetto di camminata

suddivisa come statica e dinamica lo studio ha messo in evidenza come la

camminata dinamica richiede un surplus di energia e una maggior velocitagrave di

esecuzione ponendo particolare interesse ai valori di stabilitagrave velocitagrave massima e

consumo energetico che sono alcuni dei parametri anche da noi presi in

considerazione nel nostro progetto Nello sviluppo di Collie le relazioni tra questi

criteri e i parametri (gait speed period stride length of the leg joint angles etc)

hanno portato alle seguenti deduzioni riguardanti al camminata dinamica

a) Minore egrave il periodo in cui avviene la camminata migliore egrave la stabilitagrave del

quadrupede

Ersquo desiderabile camminare con un lungo periodo e compiendo ampi passi

per riuscire ad accrescere la velocitagrave massima

13 settore della robotica che si occupa di robot a 4 zampe

Stato dellrsquoarte dei four legged robot 30

b) Crsquoegrave un periodo in cui la velocitagrave egrave massima

c) Crsquoegrave un periodo in cui si minimizza il consumo energetico per fornire

velocitagrave

d) Trot gai14t egrave desiderabile quando la prioritagrave egrave in primo piano rispetto al

consumo energetico

Pace gait15 egrave raccomandata quando la prioritagrave energetica egrave al di sopra

della velocitagrave massima

Gli esperimenti per appurare la validitagrave di queste affermazioni sono stati

effettuati con il robot Collie-2 che fisicamente presenta 3 joint16 attorno allrsquoasse di

pitch (beccheggio) e 2 joint attorno allrsquoasse di roll (rollio) per ogni gamba con un

potenziometro montato per ogni gamba e motori DC servos sistemati sui 3 joint

sullrsquoasse trasversale e 1 joint sullrsquoasse sagittale

Figura 10 Collie 2 vista semi

frontale Figura 11 Collie 2 di

fronte

Figura 12 camminata vista

laterale

14 andatura veloce di trotto 15 camminata tranquilla da crocera non veloce 16 giunto

Stato dellrsquoarte dei four legged robot 31

212 Quadrupede MIT

Realizzato al MIT (Massachusset Institute of Technology) negli anni 1984-

1987 [16] egrave composto da un unico grado di libertagrave per zampa a cui si aggiunge un

meccanismo a basso livello di coordinazione del piedino Ersquo stato sviluppato per

esplorare il funzionamento su quatto zampe e le transizioni tra tipologie diverse di

gait quali il trottino (accoppiamento zampe diagonali) pacing (accoppiamento

laterali) bounding (accoppiamento anteriore posteriore) fornendo consistenti

informazioni sulle diverse posture[17]

Figura 13 Immagine laterale camminata

robot dequadrupe del MIT

Figura 14 basato su llo stesso

meccanismo del robot del MIT Scout

prodotto allrsquoumiversitagrave di Monteal

sviluppa ampliamente il concetto di

bounding gait[18]

213 GEO

Iniziata la costruzione del progetto nel 1994 a USC GEO I [19]

presentava due grandi innovazioni una spina dorsale flessibile e zampe

riconfigurabili Queste due caratteristiche permettono al robot di emulare la

camminata di una salamandra cioegrave di far seguire al proprio baricentro un

andamento sinusoidale quando invece una zampa egrave posizionata sotto il corpo il

robot puograve deambulare come un comune mammifero quale ad esempio il cane

Stato dellrsquoarte dei four legged robot 32

Questa particolare possibilitagrave di cambiamento di tipologia di camminata egrave

rimasta nellrsquoevoluzione del modello GEO II che risulta essere molto piugrave leggero

del suo predecessore dotato si sensori di forza nei piedi e possibilitagrave di

interazione con il mondo esterno tramite reti neurali

Figura 15 GEO I nel superamento di un

ostacolo

Figura 16 GEO II in posizione base

214 Quadrupede Kimura lab

Dal Giappone e piugrave precisamente dal laboratorio di Kimura[20]

compaiono i robot piugrave avanzati in grado di camminare su terreni estremi quali

ciottolati erbe sparse o pavimentazioni sconnesse utilizzando sensori di visione I

principali in evoluzione sono Tekken-II azionato da servomotori e pilotato

manuale usando un regolatore radiofonico Futaba Le particolaritagrave di questo robot

sono il giunto della caviglia passivo con il meccanismo molla-smorzatore17 il

posizionamento di un meccanismo della molla intorno al giunto del ginocchio

dellrsquoanca al fine di ridurre il consumo di energia Sul corpo presenta diversi

sensori Tasso-girobussola per 3 ascie e 2 inclinometri per le ascie del rullo e del

passo 1 sensore per il contatto di asse egrave fissato su ogni piedino Della stessa

famiglia adatti perograve a terreni scoscesi e ondulati ricordiamo inoltre Patrush I e

Patrush II rispettivamente degli anni 2000 e 2001

17 principio fisico che attenua le sollecitazioni e incamera energia che puograve essere

successivamente sfruttata

Stato dellrsquoarte dei four legged robot 33

Figura 17 Patrush I vista

semifrontale

Figura 18 Tekken II vista laterale

22 Algoritmi di controllo CPG for four legged robot

Testato successivamente sulle potenzialitagrave di GEO II egrave stato realizzato nel

2002 il modello CPG (Central Pattern Generation)[21] che sostituisce lrsquounitagrave

centrale del controllo del sistema nervoso presente negli animali Esso propone

che lrsquoadattamento di un animale allrsquoambiente circostante puograve essere modellizzato

come un modulo adattativo (AMs Adaptative Modules) che agisce su un sistema

distribuito di oscillazioni chiamate Adaptative Ring Rules (ARRs) che simulano

semplici riflessi Lrsquoutilizzo e la costruzione di questa rete neuronale ha mostrato

come un sistema puograve auto programmarsi attraverso interazioni con lrsquoambiente

Lrsquoadattamento fa emergere spontaneamente alcuni stati discreti come il

movimento del busto la scelta tra un passo corto e la camminata da crociera e le

coordinate per un singolo giunto

Il risultato di questo modello egrave che ha permesso a un quadrupede di

imparare a camminare in pochi minuti

Basandosi su innumerevoli trattati sullo sviluppo degli impulsi del sistema

nervoso dei mammiferi (Bekoff 1985Cohen 1988) Lewis egrave riuscito a riprodurre

una rete che tenta di emulare le fasi standard e principali del comportamento

Stato dellrsquoarte dei four legged robot 34

animale in relazione ad alcuni stimoli esterni e di riuscire a comunicare questi

impulsi nervosi ai relativi attuatori per creare lrsquoazione Tuttora diversi studi sono

ancora in atto per perfezionare questa tecnica introducendo apprendimento per

rinforzo

Si puograve modellizzare il CPG come una rete di unitagrave funzionali chiamate

unit CPGs (uCPGs) Riferendosi alla figura 18 2 uCPGs sono denominate con

Tw+ e Tw- insieme esse producono il coordinamento principale del robot e

giocheranno un ruolo base nellrsquoacquisizione della camminata Alle uCPGs sono

collegati archi che rappresentano il collegamento ai muscoli estensori delle

diverse articolazioni Questi archi rendono possibile quindi il collegamento delle

unitagrave del busto con quelle del ginocchio etc

Lrsquooutput dei muscoli viene trasformato attraverso una funzione di uscita in

comandi di movimento Questi a loro volta sono ricombinati per creare impulsi

compatibili con i servos dellrsquoancae del ginocchio

Sono introdotti nella rete ulteriori parametri che servono per adattare la

rete a diversi robot

Stato dellrsquoarte dei four legged robot 35

Figura 19Organizzazione del sistema di controllo Il sistema di controllo del robot

presenta una rete di uCPG Ogni cerchio presenta un uCPGs Connessionitrasmissione di

informazioni sono visualizzate come freccie Ogni funzione Ψ converte una informazione in

comandi per i motori I comandi dei motori sono combinati insieme per produrre una

sequeza di livelli di posizione per ogni anca e ginocchio Abbreviazioni KFmuscolo flessore

ginocchio KEmuscolo estensore ginocchio HEmuscolo estensore dellrsquoanca HFmuscolo

flessore dellrsquoanca TW+torsione positivo TW-torsione negativo

Per definire meglio il controllo sono stati realizzati schemi che si basano

su controlli di posizione sulla reattivitagrave dei riflessi e sullrsquoadattamento della

torsione al modulo ambiente

Per realizzare lrsquoultimo modello egrave necessario introdurre ARRs cioegrave il

modulo adattativo dellrsquoambiente attraverso un ulteriore unitagrave computazionale

costituita da tre componenti

Stato dellrsquoarte dei four legged robot 36

Figura 20 Lrsquouso di un innato interno modello per lrsquoadattamento di CGPs La figura

mostra i componeti di un AM

Il primo componente egrave il Forward Model il quale usa una efficiente copia

di una uCPGs per predire il feedback sensoriale il secondo il Comparison egrave a tutti

gli effetti un comparatore tra il feedback sensoriale e il feedback atteso il terzo egrave

una regola che utilizza il risultato della comparazione per modulare la uCPGs in

questione

LrsquoARRs genera un segnale di output che viene indirizzato agli attuatori o a

semplici circuiti che seguono per il controllo sensoriale e rimane in attesa di

ricevere un segnale di ritorno proveniente dai sensori Il segnale di output puograve

anche essere emesso nellrsquoambiente come decisone di movimento per eventuali

robot ad esso sottomessi La creazione di movimenti puorsquo cosigrave migliorare

introducendo nuovi modelli di controllo quali adattamento della lunghezza del

busto per il coordinamento delle gambe e fase di aggiustamento

Questi modelli sono stati realizzati su robot che presentano caratteristiche

mostrate nella seguente figura e che possono essere ritrovate in GEO II

Stato dellrsquoarte dei four legged robot 37

Figura 21 Postura dei Principali Rilessi Tre tipi di simmetria sono applicati per la

distribuzione del pesoDiagonal comparazione dei piedi diagonali Anteriore verso posteriore

comparazione dai piedi anteriori ai posteriori e sullo Stesso lato comparazione dei piedi

sulla destra rispetto quelli sulla sinistra Il numero vicino ad ogni piede denota il numero del

piede

La parte per noi piugrave interessante risulta essere la postura dei riflessi statici

I risultati mostrano come viene distribuito il peso del robot sui piedi di appoggio

Inizialmente quando il robot egrave appoggiato completamente al suolo il peso risulta

essere equamente distribuito In altri casi appariranno disturbi causati da carichi

aggiuntivi come posizione del cavo di alimentazione o piugrave semplicemente alzata

della zampa per compiere un passo

Stato dellrsquoarte dei four legged robot 38

Figura 22Postura dei Riflessi Grafico che mostra la distribuzione del peso rulle

zampe del robot

Questo grafo ci rappresenta come la variazione della postura del robot

influenzi i carichi su ciascuna zampa nella nostra analisi ritroveremo un grafico

simile al precedente quando analizzeremo le forze agenti sui motori nel modello

di Newton-Eulero GEO II presenta perograve un vantaggio considerevole durante i

movimenti il robot attua una fase di ldquoaggiustaggiordquo in cui riassesta il busto per

riequilibrare la distribuzione del peso su tutte le zampe non creando scompensi

23 Robocup e Sony Aibo

RoboCup[22] egrave unrsquoiniziativa internazionale di formazione e di ricerca Egrave

un tentativo di promuovere lrsquoAI18 e lrsquoautomatismo intelligente Basati sul concetto

che una squadra di robot giochi a soccer allrsquointerno di ambienti reali o simulati le

tecnologie che vengono coinvolte devono comprendere nei loro progetti i principi

di agenti autonomi collaborazione multi-agente aquisizione di strategie

ragionamento in tempo reale e automatismo

18 Intelligent Agents

Stato dellrsquoarte dei four legged robot 39

Ersquo in RoboCup che si egrave vista la prima squadra fornita di gambe

Largamente utilizzati per la realizzazione di sistemi multiagenti dotati cioegrave di

complessi programmi di intelligenza artificiale sono i famosi Aibo Sony

Figura 23 Robot Aibo Sony durante una partita alla Robocup

Aibo egrave il miglior prodotto della Sony 4-legged robot essa coinvolge le piugrave

moderne tecnologie per concepire un amico completamente autonomo per

accompagnare ed intrattenere lrsquouomo nella vita giornaliera

Il centro di intelligenza artificiale di Aibo egrave il software Mente2 situato su

una memoria stick removibile Esso controlla il suo comportamento le sue abilitagrave

e le relative caratteristiche che possono essere incrementate con un corretto

addestramento da parte dellrsquoutente Aibo infatti implementa al suo interno un

algoritmo di apprendimento per rinforzo

Nella vita giornaliera questo software gli permette di intrattenere e

comunicare con chiunque riconoscendo intelligentemente i volti e le voci dei suoi

padroni

Per le sue particolari proprietagrave quali vedere sentire registrare suoni

oggetti e facce e riflettere una vasta gamma delle emozioni attraverso la relativa

faccia Condur-guidata19 Aibo egrave in grado di familiarizzare con ogni tipo di

ambiente ambiente e trasformarsi in ogni senso in un individuo vero e unico

19 pilotati da software intelligenti diversi led rappresentano espressioni emotive

Stato dellrsquoarte dei four legged robot 40

231 Storia

Ma vediamo come nasce Aibo[23]Le sue radici risalgono agli inizi degli

anni novanta quando gli ambienti tecnologici erano agli albori riguardo la

creazione di applicazioni per lrsquointrattenimento umano Fu Dr Doi il capo dell

Sonyrsquos Digital Creature Lab ad implementare in un unico automa i nuovi

progressi in termini di processori intelligenza artificiale riconoscitori vocali e

tecnologie di visione al fine di creare un robot autonomo

Durante la fase iniziale nel 1992 gli ingegneri della Sony progettarono

alcuni importanti cambiamenti radicali Nei primi anni novanta robot con camere

e ruote erano riprogrammati per ogni attivitagrave o task in cui essi venivano impiegati

I nuovi progetti includevano la capacitagrave di un robot di deambulare su zampe e

lrsquointerazione con programmi di IA capaci di interagire con alcuni organi sensoriali

come il tatto la vista e il suono Solo verso il 1997 il primo prototipo portograve alla

luce gli enormi sforzi di ricerca e sviluppo Dr Doi indirizzograve tutta la sua ricerca

nella costruzione e nel design di un amichevole robot autonomo Il suo primo

prototipo aveva sei gambe ed era il primo passo per la creazione di un robot a

zampe Dopo questo primo rudimentale modello il team Sony studiograve un design

innovativo e analizzograve ciograve che il robot poteva o non poteva fare per incrementare le

potenzialitagrave celebrali ed espandere le funzionalitagrave hardware e software

Lrsquooriginale modello Aibo ERS-110 fu presentato nel 1999 e rapidamente

si diffuse in tutto il mondo con lo slogan di essere un grande compagno di giochi e

intrattenimento entrando anche a far parte del guinnes dei Primati Lrsquo Europa vide

la sua apparizione il 26 Ottobre 1999 Solo un mese dopo dallrsquoenorme successo

riscontrato fu presentato un ulteriore modello ERS-111 per il target mondiale

Nellrsquoottobre del 2000 venne alla luce la seconda generazione di Aibo ERS-

210 che inglobava miglioramenti di mobilitagrave sensori di tatto led facciali

programmi di risposta sensoriale al mondo esterno tramite espressioni visive

funzioni di memorizzazione delle parole e riconoscitore vocale[24]

Stato dellrsquoarte dei four legged robot 41

I modelli LATTE e MACARON (ERS-311 a ERS-312) entrarono a far parte

della famiglia nel Settembre 2001 i loro nomignoli li rendono dolci e adorabili da

coccolare includendo comunque tutte le caratteristiche dei loro predecessori

Lrsquo8 Novembre 2001 egrave nato lrsquoultimo membro della famiglia Sony che

include le piugrave sofisticate performance e capacitagrave Il modello ERS-220 dotato di un

look futuristico presenta al suo interno una moltitudine di azioni altamente

avanzate e un alto numero di luci e sensori che lo fanno diventare il modello piugrave

sofisticato di robot quadrupede sul mercato[25]

Stato dellrsquoarte dei four legged robot 42

Sviluppo dei modelli Aibo dai primi anni novanta a oggi

Robot Sony Aibo modello a sei zampe

Robot Sony Aibo ERS-110

Robot Sony Aibo ERS-111

Robot Sony Aibo ERS-210

Robot Sony Aibo ERS-31x

Robot Sony Aibo ERS-220

Stato dellrsquoarte dei four legged robot 43

Figura 24 Zoom sulle caratteristiche presenti negli ultimi ritrovati

Specifikace

bull Head touch sensor bull Color Camera bull Stereo microphone bull Speaker bull Pause button bull Back sensor bull Lithium ion battery pack bull Tail sensor bull Memory Stick slot for AIBO bull PC card slot ndash bull slot pro PCMCIAPC-kartu

CPU 64-bitovy RISC procesor memory 32MB SDRAM weight - 15 kg ( baterie a Memory Stick (approx33lb)) dimension 152x266x274mm

Stato dellrsquoarte dei four legged robot 44

232 Descrizione dei sensori di Aibo

Il robot egrave stato progettato in modo da assomigliare ad un vero e proprio

essere vivente Esso egrave quindi dotato di svariati sensori mediante i quali puograve

comunicare con lrsquoambiente e reagire agli stimoli esterni[26]

Il sistema di controllo di Aibo utilizza i microprocessori per controllare

lrsquoinput dai dispositivi quali

bull Macchina fotografica del video a colori CCD20

bull microfono stereo

bull sensore termometrico

bull sensore infrarosso

bull sensore giroscopico di accelerazione

2321 Visione della macchina

Aibo ha una macchina fotografica digitale a colori montata nella sezione

ldquotestardquo I dati di immagine da questa macchina fotografica sono vitali nella

generazione dellrsquoesperienza interattiva tra il robot e il mondo Il video input egrave

analizzato per identificare lrsquooggetto o ldquoun punto caldordquo i motori robot spostano la

testa per dare lrsquoapparenza che il Aibo stia osservando Il robot inoltre egrave fornito di

un sensore infrarosso di distanza per rilevare gli ostacoli e per evitare di collidere

con essi

20 Charge Coupled Device attraverso una piastrina di silicio dotata di sensori le immagini

vengono digitalizzate in relazione a posizione colore e intensitagrave

Stato dellrsquoarte dei four legged robot 45

Figura 25 CCD camera a colori

Figura 26 Microfoni montati sugli assi

2322 Riconoscimento audio

Aibo egrave dotato di un accoppiamento di microfoni uno da ogni lato della

calotta cranica Questi generano unrsquoimmagine stereo del suono ricevuto che aiuta

nel localizzare la fonte di emissione Ersquo presente un regolatore di distanza per

permettere al robot di porre limiti per frasi da riconosce come ordini

2323 Tatto

Il rilievo sensibile al tocco sulla parte superiore della testa del Aibo egrave un

altro meccanismo attraverso cui riceveragrave input sensoriali In base a come questo

sensore egrave toccato un Aibo riceve i dati che registrano le risposte positive o

negative rispetto ldquoal suo comportamento precedenterdquo imitando le dimostrazioni

affetto o rimprovero

Stato dellrsquoarte dei four legged robot 46

Figura 27 Il bottone blu egrave uno switch per il sensore di pressione

2324 Movimento e sviluppo

Molti dei movimenti del Aibo sono simili a quelli di un animale domestico

un cane o un gatto Un Aibo accede e fa funzionare algoritmi di movimento che

dettano il moto delle relative membra controllando i motori siti nei piedini nella

testa e nella coda In modo indipendente e autonomo il robot si muove attraverso

parecchie fasi per un periodo di tempo Quando ldquosupportatordquo dal suono (comandi

o musica) riesce ad intraprendere movimenti a lui noti e ad imparare nuove

posture piugrave specializzate come sottoposto ad un vero e proprio addestramento

Figura 28 Particolare coda

Figura 29 Sensori del piedino

Capitolo 3 Architettura del robot ASGARD

Architettura del robot ASGARD 48

31 Configurazione del robot quadrupede

Analizziamo ora le caratteristiche del quadrupede realizzato presso lrsquoAir

Lab21 del Politecnico di Milano Nei paragrafi che seguono verranno descritte le

sue caratteristiche implementative che ne hanno permesso la realizzazione e il

controllo

Il progetto egrave stato avviato di recente di conseguenza il robot presenta

ancora notevoli problematiche di stabilitagrave e attuazione tramite servo attuatori

Hitec

311 Struttura Meccanica

La struttura di ASGARD egrave composta da parti ricavate da lastre di

policarbonato di cui presenteremo le caratteristiche nel paragrafo seguente e

incollate con speciale solvente

Il progetto della struttura di Marco Piralli [27] ha permesso al nostro robot

di avere una struttura simile a diversi esseri naturali

Figura 30 Progetto Robot completo di Pialli (sinistra) e dettaglio dellrsquoarticolazione (destra)

21 Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano sede

Leonardo sito in Lambrate

Architettura del robot ASGARD 49

Esso egrave dotato di 12 gradi di libertagrave tre per ogni zampa simili a quelli di

Aibo eccetto la spalla Questi gradi di libertagrave ci permettono di far compiere al

robot movimenti su tutti e tre gli assi La spalla in particolare ci permette tutti i

movimenti nel piano sagittale (detto anche piano laterale movimento fronte-retro)

Mentre le altre due articolazioni permettono movimenti nel piano frontale

(movimento lato-lato) e in quello trasversale

Questa serie di attuazioni da la possibilitagrave al robot di essere indipendente

nel movimento di ogni singola zampa e un ulteriore grado passivo nella zampa

permette di affrontare le differenti tipologie di terreno

Il collegamento tra attuatori e struttura risulta essere diretta senza cioegrave

lrsquoausili di tendini il rotore del motore egrave direttamente connesso alla articolazione

studiata per alloggiare il motore al suo interno

Figura 31 Particolari sulle locazioni e i sostegni degli attuatori nel giunto di

spalla(sinista) e ginocchio caviglia (destra)

Architettura del robot ASGARD 50

Giunto 9Giunto 12

Giunto 3

Giunto 6

Giunto 1

Giunto 2 Giunto 4

Giunto 5

Giunto 7

Giunto 8 Giunto 11 Giunto 10

Figura 32 Posizionamento dei giunti nel robot reale

312 Attuatori

Come illustrato in Figura 32 gli attuatori necessari al movimento di

ASGARD devono risultare leggeri e disposti in modo da non intralciare gli

eventuali movimenti I singoli attuatori sono costituiti da un motore servo da una

molla torsionale e da uno smorzatore senza essere perograve dotato di encoder

incrementale Con questo sistema non egrave possibile realizzare un preciso controllo

di posizione istante per istante ma egrave possibile ottenere una rigidezza di giunto non

infinita

I motori da noi utilizzati sono da 44 Kg bull cm HITEC HS 475HB Standar

Delux[28] abitualmente utilizzati in ambito di modellismo Le cui caratteristiche

sono qui sotto riportate

Architettura del robot ASGARD 51

Caratteristiche principali HS457 HB

Control system Operatine voltage range Operatine speed Stall torque Idle current Running current Stall current Dimensions Weight

+Pulse width control 1500usec neutral 48 V to 60 V 023 sec60(load) 018 sec60(no load) 44 Kg cm 55 Kg cm 74 mA (stopped) 77 mA(no load) 180 mA60 (load) 160 mA60(no load) 900 mA 388x198x36 mm 40 g

Figura 33 Attuatore HS 475 HB visto in sezione (sinistra) e come si presenta sul

nostro robot (destra)

Architettura del robot ASGARD 52

313 Materiale Policarbonato

Per la realizzazione del robot egrave stato scelto un materiale innovativo

resistente agli urti e alla trazione che puograve in questo modo resistere alle

sollecitazioni esterne e alle vibrazioni causate dalla camminata su terreni aspri

Oltre le potenziali caratteristiche di resistenza ha la dote di essere

estremamente leggero e di riuscire ad assemblarsi tramite apposito solvente

Questo permette alla struttura chimica di una superficie di scomporsi e di legarsi

in modo stabile alla struttura di una ulteriore lastra ricreando una struttura

compatta e indissaldabile

Proprietagrave policarbonato[29]

Carico limite di snervamento Nmmsup2 gt60

Resistenza alla rottura Nmmsup2 gt70

Allungamento a snervamento 6 hellip 8

Allungamento a rottura lt100

Modulo elastico Nmmsup2 2300

PROPRIETA MECCANICHE

Resistenza allrsquourto IZOD con intaglio Jm 700

Peso specifico gcmsup3 120

Indice di rifrazione 159

Assorbimento idrico (24h - 23degC) per immersione

036 PROPRIETA

FISICHE

Permeabilitagrave al vapore drsquoacqua (spessore 01m 24h)

gmsup3 15

Temperatura di resistenza al calore vicat VSTB

degC 145hellip150

Espansione termica lineare 1degC 67 X 10

PROPRIETA TERMICHE

Conducibilitagrave termica WmdegC 021

Architettura del robot ASGARD 53

32 ASGRAD in numeri

Le caratteristiche fisiche di Asgard si possono cosigrave riassumere

Busto

Larghezza 1210 cm

Lunghezza 2290 cm

Zampe

Link num 1 573 cm

Link num 2 675 cm

Link num 3 735 cm

Piede 350 x 415 cm

Spessore 4 mm

Peso

Corpo in policarbonato 660 g

Attuatori 480 g

Scheda Pic 20 g

Peso Complessivo 1180 Kg

Angoli dei giunti nella posizione di riposo

Giunto spalla 0deg

Giunto ginocchio 45deg

Giunto caviglia 45deg

Architettura del robot ASGARD 54

735 573 675

2290 122

121

Figura 34 Specifiche di ASGARD vista dallrsquoalto

1212 cm

Figura 35 Vista frontale di ASGARD

Architettura del robot ASGARD 55

33 Hardware

Attualmente non esiste un vero e proprio controllo on-board in grado di

generare traiettorie ma una PIC [30] sita su di esso il cui scopo egrave quello di

interpretare i segnali di comando in uscita dal nostro codice Matlab e di

trasformarli in impulsi (PWM) da inviare ai motori

Figura 36 Sistema di controllo dei motori Nellrsquoambiente Matlab sono stati inseriti dei comandi manuali di posizionamento il programma gestisce la generazione delle traiettorie e i comandi vengono inviati alla PIC Questa si occupa di generare e inviare ai motori gli impulsi che ne garantiscono il posizionamento

Unitagrave di controllo

Alimentazione

Porta seriale

Max 232

PIC

18F4x28 40L DIP

A T T U A T O R I

Figura 37 Schema a blocchi della PIC di controllo

Architettura del robot ASGARD 56

34 Software

La creazione del nostro algoritmo rappresenta la prima implementazione di

codice in merito al progetto del robot quadrupede in esame

Per il collegamento diretto e il pilotaggio di motori servo tramite la porta

seriale abbiamo usufruito di un codice elaborato precedentemente e implementato

sulla PIC

Questo programma egrave costituito da cicli di attesa da parte della PIC stessa

per la ricezione dei comandi e da un canale di ritorno in cui essa comunica al Pc

la corretta trasmissione dellrsquoimpulso

Una miglioria sullrsquoanalisi implementativi ci ha permesso di spingere la

velocitagrave di comunicazione fino a 14400 bitsec

Il nostro programma di analisi e simulazione dei passi analizza le

caratteristiche fisiche di movimento del nostro robot generando i movimenti

opportuni che gli permetteranno di deambulare stabilmente nellrsquoambiente

Un ulteriore ricerca ci ha portato a realizzare una funzione di calcolo delle

traiettorie in ambiente noto che dagrave la possibilitagrave a ASGARD di decidere in real-

time il passo da intraprendere nel singolo istante

Questo puograve essere considerato il primo passo verso un algoritmo di

Intelligenza Artificiale per il nostro robot

Il sistema di controllo dellrsquoandatura di un robot con zampe si puograve cosigrave

scomporre in tre livelli distinti

Architettura del robot ASGARD 57

SUPERVISORE

bull Traiettoria bull Parametri dellrsquoandatura

COORDINATORE bull Controllo della stabilitagrave bull Traiettoria dellrsquoestremitagrave delle

zampe

LIVELLO DELLE ZAMPE bull Cinematica inversa bull Controllo dinamico bull Comandi agli attuatori

35 Stato Attuale

Allo stato attuale il robot egrave stato completato e dotato di sensore di

pressione posto sotto la zampa anteriore sinistra Le tempistiche di risposta della

scheda PIC presentano non poche difficoltagrave a carattere di controllo I motori da

noi utilizzati ricevono in input solo il valore della posizione ed egrave pertanto

impossibile effettuare controlli su velocitagrave ed accelerazione

Ersquo risultato comunque possibile dopo una attenta analisi di stabilitagrave la

creazione di un ciclo di passi che ha permesso ad ASGARD di compiere la sua

prima camminata

Capitolo 4 Modellizzazione cinematica e dinamica

Modellizzazione cinematica e dinamica 59

41 Convenzioni e simbologia utilizzata

Data la natura del robot saragrave essenziale fornirne una corretta analisi

matematica e robotica per mantenere una certa coerenza e chiarezza verranno

utilizzate le seguenti convenzioni

bull Il pedice indica il numero della grandezza a cui si sta facendo

riferimento indica ad esempio lrsquoelemento n di A Nel caso vi

siano presenti due pedici si fa riferimento ad una grandezza che va

dal primo pedice al secondo indica quindi un vettore da i a k

nA

kiA

bull Lrsquoapice egrave utilizzato per indicare il sistema di riferimento rispetto al

quale la grandezza egrave riferita indica quindi lrsquoelemento n della

grandezza A nel sistema di riferimento i

inA

bull Il simbolo times indica il prodotto vettoriale

bull Il simbolo bull indica il prodotto scalare mentre la T posta come apice

egrave la trasposizione

Nella Tabella 1 vengono mostrate le grandezze fisiche utilizzate e la

simbologia per rappresentarle[31]

Ti

iR 1minus Matrice di rotazione dalla terna i-1 alla terna i (premoltiplicazione)

iiR 1+ Matrice di rotazione dalla terna i+1 alla terna i (postmoltiplicazione)

im Massa del braccio

iir 1minus Vettore dalla terna i-1 alla terna i

iI Tensore drsquoinerzia del braccio

iϑ Posizione angolare del giunto i

iϑamp Velocitagrave angolare del giunto i

Modellizzazione cinematica e dinamica 60

iϑampamp Accelerazione angolare del giunto i

iω Velocitagrave angolare del braccio

iωamp Accelerazione angolare del braccio

ipampamp Accelerazione lineare terna i

iCpampamp Accelerazione lineare baricentro iC

if Forza esercitata sul giunto i

imicro Momento esercitato sul giunto i

iτ Forza generalizzata al giunto i

Tabella 1 Rappresentazione delle grandezze fisiche utilizzate

42 Sistemi di coordinate e trasformazioni

Qualunque punto dello spazio puograve essere rappresentato da coordinate

omogenee che non sono altro che le coordinate cartesiane del punto a meno di un

fattore di proporzionalitagrave

⎥⎥⎥⎥

⎢⎢⎢⎢

=rarr⎥⎥⎥

⎢⎢⎢

⎡=

wzyx

pZYX

p dove wxX =

wyY =

wzZ =

In coordinate omogenee ci sono quattro punti particolari

versore direzione dellrsquoasse X versore direzione dellrsquoasse Y ir

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0001

jr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0010

versore direzione dellrsquoasse Z Origine degli assi kr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0100

Or

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1000

Modellizzazione cinematica e dinamica 61

Questi quattro punti caratterizzano il sistema di riferimento Un sistema di

riferimento puograve essere posto in ogni punto dello spazio per noi saragrave essenziale

porne uno in ogni giunto dei robot[32] Inserito un sistema di riferimento il

passaggio da un sistema al successivo avviene tramite una matrice di

trasformazione che al suo interno ne descrive la rotazione e traslazione

La rotazione pura rispetto ad un sistema fisso di coordinate viene

rappresentata tramite una matrice quadrata 33times Ad esempio una rotazione di un

angolo α attorno allrsquoasse z viene descritta con

( )⎥⎥⎥

⎢⎢⎢

⎡ minus=

1000cossin0cos

αααα

αsen

Rz

La matrice A di rototraslazione egrave rappresentata in generale come

composizione degli spostamenti rotatorio e traslatorio

( ) ( )

[ ] ⎥⎦

⎤⎢⎣

⎡ timestimes=

10001333 TraslRot

A

La matrice egrave costituita da una parte di rotazione una di traslazione lungo i

tre assi e una riga i cui valori indicano la ldquoscalardquo e la ldquoprospettivardquo (non utilizzati

in questo ambito) In analisi piugrave approfondita

Modellizzazione cinematica e dinamica 62

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

A

possiamo vedere come le prime tre colonne rappresentano i versori del

sistema di partenza mentre lrsquoultime rappresenta la posizione di arrivo in

coordinate omogenee dellrsquoorigine in cui egrave posizionato il sistema di riferimento

43 Cinemetica diretta

In questo ambito ci proponiamo di illustrare i modelli matematici che ci

hanno permesso di analizzare ASGARD Partiamo da alcune definizione basilari

Un robot manipolatore egrave una catena cinematica sequenziale22 aperta23 o

catena parallela composta da corpi rigidi (link) uniti da giunti

Lrsquointeresse principale egrave rivolto alla mano o end-effector del robot che

possa raggiungere ogni posizione con qualunque orientamento senza bisogno di

resettare fisicamente il sistema

La cinematica studia il legame tra le variabili indipendenti dei giunti e le

posizioni e orientamento cartesiane raggiunte dal robot Questo egrave chiaramente un

problema cruciale per le applicazioni Il problema si suddivide in due parti

cinematica diretta = passaggi dalle variabili di giunto24 alle variabili

cartesiane25

cinematica inversa = passaggio dalle variabili cartesiane alle variabili di

giunto

22 sequenziale significa che non ci sono diramazioni nella catena 23 aperta una delle due estremitagrave (mano=end-effector) egrave libera 24 valori degli angoli di ogni singolo giunto 25 valore della posizione espresso in coordinate nel di riferimento considerato

Modellizzazione cinematica e dinamica 63

La dinamica studia le equazioni che caratterizzano il moto del robot intese

come velocitagrave accelerazioni tenendo conto non solo delle posizioni iniziali e

finali ma di tutte le caratteristiche del moto la nostra analisi si egrave concentrata sulle

forze e le torsioni agenti sui motori studiate con il metodo di Newton-Eulero

Il calcolo delle traiettorie consiste nel determinare un modo per fornire al

controllore del robot lrsquoinsieme dei punti (variabili di giunto) per spostarsi da una

posizione allrsquoaltra con opportune velocitagrave e accelerazioni

Il problema del controllo consiste invece nel trovare modalitagrave efficienti per

far compiere al robot il piugrave fedelmente possibile le traiettorie determinate

431 Definizione dei parametri di Denavit Hartemberg

Elaborare i valori delle variabili di giunto fino a trovare i valori delle

coordinate cartesiane riferite alla posizione dellrsquoend-effector non egrave di facile

carico computazionale soprattutto quando il robot risulta complesso26

Sviluppare metodi a doc ottimi per la cinematica inversa risultano

scomodi e onerosi se riferiti alla cinematica diretta

Un metodo generale e applicabile a qualsiasi tipologia di manipolatore egrave

stato sviluppato negli anni cinquanta da Denavit e Hartenberg (D-H)

Esso consiste nel fissare sistemi di riferimento sui giunti per poterne

determinare i parametri caratteristici Tramite lrsquouso di matrici di rototraslazione

dei sistemi di riferimento egrave possibile trovare un legame tra i parametri dei giunti e

la posizione e lrsquoorientamento dellrsquoend-effector Con questa scelta ogni singola

trasformazione da un sistema di riferimento al successivo saragrave descritta da una

matrice definita da quattro parametri lrsquoangolo del giuntonnA 1minus ϑ lrsquoangolo di twist

α e le due distanze d e l

Identificata la struttura giuntilink del robot egrave necessario fissare i sistemi di

riferimento nel seguente modo

26 complesso con piugrave di due gradi di libertagrave

Modellizzazione cinematica e dinamica 64

bull Scegliere lrsquoasse giacente lrsquoungo lrsquoasse del giunto i+1 iz

bull Individuare allrsquointersezione dellrsquoasse con la normale comune

agli assi e con

iO iz

1minusiz iz iOprime si indica lrsquointersezione della normale

comune con 1minusiz

bull Si assume lrsquoasse diretto lungo la normale comune agli assi

e con verso positivo dal giunto i al giunto i+1

ix 1minusiz

iz

bull Si sceglie lrsquoasse in modo tale da completare una terna levogira iy

Figura 38 Parametri cinematici di Denavit-Hartenberg

Fissate le terne solidali si ha che

ia = distanza da a iO iOprime

id = coordinata su di 1minusiz iOprime

iα = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

ix 1minusiz iz

iϑ = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

1minusiz 1minusix ix

Modellizzazione cinematica e dinamica 65

Nella nostra analisi essendo tutti giunti rotoidali lrsquounica variabile risulta

essere iϑ indicante la posizione in gradiradianti del giunto Nello sviluppo della

parte grafica per caratteristiche proprie del tool utilizzato sono stati introdotti

ulteriori due giunti traslazionali che nellrsquoanalisi non vengono perograve presi in

considerazione come variabili

La matrice di trasformazione complessiva viene costruita nel modo

seguente

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡minus

minus

=minus

1000cos0

coscoscoscoscoscos

1

iii

iiiiiii

iiiiiii

ii dsen

senasensenasensensen

Aαα

ϑαϑαϑϑϑαϑαϑϑ

432 Metodo di assegnamento secondo D-H

Per ricavare velocemente le matrici di trasformazione secondo la

convenzione di D-H si utilizza la seguente procedura operativa

1 Individuare e numerare consecutivamente gli assi dei giunti

assegnare rispettivamente le direzioni agli assi hellip 0z 1minusnz

2 Fissare la terna base posizionandone lrsquoorigine sullrsquoasse gli assi

e sono scelti in maniera tale da ottenere una terna levogira

0z

0x 0y

Eseguire i passi da 3 a 5 per i = 1 hellip n

3 Individuare lrsquoorigine allrsquointersezione di con la normale comune agli assi e Se gli assi e sono paralleli posizionare in modo da annullare

iO iz

1minusiz iz 1minusiz iz

iO id4 Fissare lrsquoasse diretto lungo la normale comune agli assi e

con verso positivo dal giunto i al giunto i+1 ix 1minusiz

iz5 Fissare lrsquoasse in modo da ottenere una terna levogira iy

Per completare

Modellizzazione cinematica e dinamica 66

1 Fissare la terna n allineando lungo la direzione di nz 1minusnz

2 Costruire per i = 1 hellip n la tabella dei parametri ia id iα iϑ

3 Calcolare sulla base dei parametri di cui al punto 7 le matrici di

trasformazione omogenea ( )iii qA 1minus per i = 1 hellip n

La posizione e lrsquoorientamento di un qualsiasi giunto della catena rispetto il

sistema base egrave ora calcolabile premoltiplicando i valori nel sistema corrente per

tutte le matrici di trasformazione precedenti a tale sistema

11

121

010

0 minusminussdotsdotsdot== n

nnn AAAAT

In ASGARD si egrave attuata una doppia analisi

la prima consiste nellrsquoalzata del piede e il suo riposizionamento nelle

coordinate desiderate in questo caso lrsquoorigine del robot risulta essere solidale con

il baricentro del corpo e lrsquoend-effector risulta coincidere con la zampa mobile

Figura 39 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nel baricentro e end-effector coincidente con la zampa mobile

Modellizzazione cinematica e dinamica 67

I parametri di D-H calcolati risultano essere

link ϑ α a d

1 deg45 0 1l 0

2 2ϑ deg90 2l 0

3 3ϑ 0 3l 0

4 0 4l 0 4ϑ

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

1111

1111

010

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdot

=

10000010

00

2222

2222

121

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

3333

3333

232

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

44441

4444

343

SlCSClSC

A

e la matrice T contenente i valori in coordinate cartesiane della posizione

della zampa egrave calcolata come 3

432

321

210

1004 AAAAAT sdotsdotsdot==

la seconda analisi consiste nellrsquoavanzamento del corpo non essendo il

nostro robot dotato di uno scheletro mobile e flessibile durante la camminata si ha

la necessitagrave di spostare il baricentro sfruttando lrsquoattrito delle zampe con il terreno

In questa situazione le zampe puntate a terra risultano essere lrsquoorigine e il

baricentro della nostra struttura egrave la parte terminale libera

Modellizzazione cinematica e dinamica 68

Figura 40 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nella zampa di appoggio e end-effector coincidente con il baricentro

In questo caso i parametri di D-H subiscono la seguente modifica

link ϑ α a d

1 1ϑ degminus 90 0 0 2 2ϑ 0 2l 0 3 3ϑ degminus 90 3l 0 4 0 0 4l 0

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

11

11

010

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ minus

=

100001000000

22

22

121

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

33

33

232

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000010000100001

343A

La matrice T per il calcolo della posizione finale non subisce invece

modifiche nella sua formula rimane invariata 343

232

121

010

0 AAAAAT n sdotsdotsdot==

Modellizzazione cinematica e dinamica 69

44 Cinematica inversa

Data una posizione e un orientamento nello spazio cartesiano egrave possibile

trovare una configurazione del nostro manipolatore affincheacute essa possa essere

raggiunta Questo egrave il problema di cinematica inverso

Nel calcolo di tale problema non egrave garantita neacute lrsquoesistenza neacute lrsquounicitagrave

della soluzione cercata La posizione se appartenente allo spazio di destrezza del

manipolatore (spazio in cui egrave garantita lrsquoesistenza della soluzione) non egrave detto che

possa essere raggiunta con unrsquounica sequenza di variabili di giunto

Metodi di analisi ammissibili per il nostro robot risultano essere il metodo

di Paul[33] e quello geometrico non essendo rispettati i vincoli per il metodo di

Pieper (tre giunti rotoidali consecutivi con assi paralleli)

Il metodo di Paul consente di determinare le soluzioni mediante

premoltiplicazioni o postmoltiplicazioni con matrici di trasformazione ortogonali

egrave un metodo euristico per la ricerca di soluzioni in forma chiusa

Lrsquoalgoritmo egrave il seguente

1 Uguagliare la matrice di trasformazione generale T espressa in

termini di variabili cartesiane alla matrice di trasformazione del

manipolatore espressa in termini di variabili di giunto

2 Cercare nella seconda matrice

bull elementi che contengono una sola variabile di giunto

bull coppie di elementi che danno unrsquoespressione in una sola

variabile di giunto quando vengono divisi tra loro

bull elementi o combinazioni di elementi che possono essere

semplificati usando identitagrave trigonometriche

3 Quando si sono identificati questi elementi li si eguagliano ai

corrispondenti elementi della matrice in variabili cartesiane

ottenendo unrsquoequazione la cui soluzione permette di trovare un

Modellizzazione cinematica e dinamica 70

legame fra una variabile di giunto ed elementi della matrice di

trasformazione generale

4 Se non si sono identificati elementi che soddisfano le condizioni al

passo 2 si premoltiplicano entrambi i membri dellrsquoequazione

matriciale per lrsquoinversa della matrice A del primo link si opera

secondo il passo 2 Si itera il procedimento per tutti i link

5 Non sempre egrave possibile trovare elementi che rispettano le

condizioni imposte e riuscire a trovare una soluzione valida

Nella nostra analisi questo metodo egrave stato valido e molto veloce per

trovare il valore del primo angolo spalla ma risulta svantaggioso nel calcolo dei

successivi angoli in cui non si riuscivano a trovare equazioni semplici

=

⎥⎥⎥⎥

⎢⎢⎢⎢

+minusminusminusminus++minusminusminusminusminus++minusminusminusminus

=

10000 2232332332323232

11212321332131321321321321

11212321332131321321321321

SlSClCSlCCSSSCSSSlCSlSSSlCCSlCSSSCCSCSSCCSClCClSSClCCClSCSCSCCSSCCCC

T

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

da cui si ricava

( )( ) 1

1

1223233231

1223233231

CS

lClSSlCClClClSSlCClS

pp

x

y =++minus++minus

= quindi ⎟⎟⎠

⎞⎜⎜⎝

⎛=

x

y

pp

a tan1ϑ

Ersquo stato quindi decisivo per il riscontro del secondo e del terzo angolo

rispettivamente ginocchio e caviglia un approccio geometrico a doc

In questa tipologia di studio di rilevante importanza egrave stata lrsquoestrapolazione

delle coordinate dellrsquoend-effector e la traslazione dellrsquoorigine nel ginocchio al fine

di isolare due piani del moto per ridurre lrsquoanalisi di una dimensione

Modellizzazione cinematica e dinamica 71

Il calcolo della cinematica inversa per un manipolatore a due link risulta

poi di basso carico computazionale applicando regole di trigonometria basilari

Figura 41 Calcolo cinematica inversa attraverso metodo geometrico su un robot

planare a 2gradi di libertagrave

Conoscendo la posizione raggiunta

( )21211 coscos ϑϑϑ ++= llx ( )21211 ϑϑϑ ++= senlsenly

Si applica il teorema di Pitagora nel triangolo indicato

( ) ( ) =sdot+sdotsdotsdot+sdot+=+sdot+=+ 22

22221

22

22

21

222

2221

22 cos2coscos ϑϑϑϑϑ senlllllsenlllyx 221

22

21 cos2 ϑsdotsdotsdot++= llll

E da esso si ricava

21

22

21

22

2 2)(cos

llllyx

sdotsdotminusminus+

=ϑ e quindi ⎥⎦

⎤⎢⎣

⎡sdotsdot

minusminus+=

21

22

21

22

2 2)(

cosll

llyxaϑ

Come si era previsto porta a due soluzioni gomito alto o bassoPer trovare

lrsquoaltro angolo si osserva cha al posto αϑϑ +=∆ 1 si ha

( )xy

=∆ϑtan ( )221

22

costan

ϑϑ

αsdot+

=llsenl

quindi

⎟⎟⎠

⎞⎜⎜⎝

⎛sdot+

minus⎟⎠⎞

⎜⎝⎛= minusminus

221

22111 cos

tantanϑ

ϑϑ

llsenl

xy

Modellizzazione cinematica e dinamica 72

441 Metodo gradiente

Abbiamo utilizzato questo metodo alternativo sperimentale in

concomitanza con il metodo geometrico valutandone successivamente le sue

potenzialitagrave per possibili applicazioni future Esso attraverso semplici calcoli

matematici ci porta al valore dei successivi due giunti della zampa

Figura 42 Baccio a due link

Denomineremo

a angolo del primo giunto

b angolo del secondo giunto

obiettivo stella rossa

errore vettore che punta lrsquoobiettivo

Spostiamo il braccio del robot intorno alla base cambiando gli angoli a e b

Possiamo tracciare un grafico di questo comportamento[34]

Figura 43 Immagine della rappresentazione del gradiente

Modellizzazione cinematica e dinamica 73

Lrsquoasse x rappresenta langolo a mentre lrsquoasse y rappresenta langolo b Lrsquoorigine

egrave nel cento Denomineremo lo spazio di tutti gli orientamenti possibili del braccio

del robot lo spazio di configurazione

Ogni punto sul quadrato contiene una tonalitagrave di grigio che rappresenta la

distanza fra lrsquoend-effector e lobiettivo Le tonalitagrave piugrave chiare sono distanze piugrave

grandi mentre il nero rappresenta zone di avvicinamento allrsquoobiettivo Ci sono

due posti in cui la distanza egrave uguale zero rappresentanti le due configurazioni

(gomito alto e basso) in cui il braccio puograve toccare lobiettivo

Dovrebbe essere evidente arrivare al target significa trovare le parti piugrave

nere del grafico Questi punti bassi sono conosciuti come minimi

4411 Gradient following

Questo metodo risulta essere di grande utilizzo per riuscire a trovari i

minimi in uno spazio bidimensionale

Per trovare i punti piugrave bassi sul grafico si deve semplicemente seguire

punti che portano lrsquoend effector ad una distanza minore dal target

Figura 44 Immagine di esempio

Figura 45 Gafico del Gradiente di esempio

Si guardi questo esempio Figura 44 Lobiettivo egrave la stella rossa In questa

posizioneun movimento del giunto di rotazione a sposteragrave la mano nel senso della

freccia a ed un movimento di b sposteragrave lrsquoend-effector nel senso della freccia b

Modellizzazione cinematica e dinamica 74

Per raggiungere lrsquoobiettivo desideriamo spostare la mano nel senso della freccia t

Spostando solo il giunto A o solo B non otterremo grandi risultati ma serviragrave un

movimento complessivo Ora guardiamo questo in termini di grafico (Figura 45)

Cominciando ad una configurazione casuale del braccio (start) possiamo

guardare i vettori a e b e ruotiamo ogni giunto un po in proporzione a quanto

aiuta per ottenere una migliore posizione rispetto allrsquoobiettivo Si puograve pensare a

questo come esaminare la pendenza locale del grafico Ci si chiede qual egrave il

movimento che li conduce il piugrave velocemente in discesa ci si sposta in quel senso

Si continua a ciclare questo fino ad arrivare ad una distanza dal nostro obiettivo

che concorda con lrsquoapprossimazione da noi desiderata

Vantaggi di questo metodo sono lrsquoapplicazione in tutte le problematiche

con un numero elevato di link Il tempo computazionale non risulta essere oneroso

in quanto ci si riconduce a semplici operazioni matematiche che Matlab riesce ad

eseguire in pochissimi istanti nonostante lrsquoelevato numero di iterazioni

4412 Faster gradient following

Esso egrave unottimizzazione del metodo gradient following che accelera

letteralmente il processo[34] Precedentemente ad ogni ripetizione la pendenza egrave

stata sottratta semplicemente dalla posizione nello spazio di configurazione

spostando la struttura piugrave vicino al minimo Questa volta sottrarremo la pendenza

dalla velocitagrave a cui ci muoviamo attraverso lo spazio di configurazione

Otteniamo come risultato un calcolo molto piugrave rapido in termini di

iterazioni che si riducono fino al 60-75 rispetto al precedente mantenedo

risultati ottimi in base anche allrsquoapprossimazione da noi scelta

Modellizzazione cinematica e dinamica 75

Figura 46 Passi per arrivare al target nel metodo di inseguimento veloce

45 Calcolo delle traiettorie

Vogliamo presentare le modalitagrave di come le traiettorie vengono generate

Tra le diverse disponibili egrave stato scelto il controllo in posizione nello spazio dei

giunti affichegrave il robot riesca a deambulare in un cammino definito Esprimendo le

traiettorie nello spazio dei giunti vengono evitate le conversioni cinematiche

inverse e quindi per la realizzazione delle traiettorie non serve potenza di calcolo

onerosa

Per il controllo delle traiettorie esistono metodi semplici basati sulla

gestione del movimento del singolo link senza che esso venga temporizzato con

tutta la struttura e algoritmi piugrave complessi che fanno uso delle cubiche27 esse

arrivano a un buon compromesso tra quantitagrave di calcolo richiesta e qualitagrave delle

traiettorie ottenute Il cammino da compiere viene specificato mediante punto di

arrivo e punto di stop si vorrebbe che tutti i giunti arrivino al task nello stesso

istante in modo da garantire lrsquoassenza delle discontinuitagrave Si generano traiettorie

nello spazio dei giunti specificando per ogni motore la funzione di moto e

verificando che le posizioni attraversate non siano degeneri28 o singolari29[32]

27 polinomi dal terzo grado a superiore che rappresentano funzioni continue 28 degenere significa non raggiungibile dal robot

Modellizzazione cinematica e dinamica 76

Esistono diversi metodi per calcolare le cubiche di seguito vengono

presentate quelle da noi elaborate e convertite in codice

Movimento da una posizione finale ad una posizione finale in un certo

intervallo di tempo per ogni giunto deve essere trovata una funzione ( )tϑ

continua e con derivata prima continua il cui valore per t=0 sia per t = sia ft fϑ e

che possa essere usata per interpolare i valori dei giunti I vincoli che devono

essere soddisfatti sono

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = 0 Velocitagrave iniziale nulla

( )fϑamp = 0 Velocitagrave finale nulla

Per soddisfare i vincoli egrave necessario un polinomio di terzo grado in cui i

coefficienti saranno scelti per soddisfare i quatto vincoli

( )tϑ = 3

32

210 tatataa sdot+sdot+sdot+

dal polinomio ricaviamo la funzione che rappresenta la velocitagrave

( )tϑamp = 2321 32 tataa sdotsdot+sdotsdot+

e lrsquoaccelerazione

( )tϑampamp = taa sdotsdot+sdot 32 62

sostituendo le equazioni nei vincoli sopra citati troviamo i seguenti valori dei

coefficienti

=0a 0ϑ

29 un punto singolare egrave un punto in cui non egrave possibile calcolare lo jacobiano inverso

Modellizzazione cinematica e dinamica 77

01 =a

( )2

02

3

f

f

ta

ϑϑ minussdot=

( )3

03

2

f

f

ta

ϑϑ minussdotminus=

Con queste equazioni abbiamo ottenuto il metodo piugrave semplice per

connettere due posizioni nello spazio A fronte del consistente numero di

operazioni richieste per il carico grafico questo egrave il metodo da noi utilizzato per

tutto lo sviluppo del simulatore che emula la creazione di un percorso inoltre esso

risulta simile al controllo a noi a disposizione per gli attuatori reali a disposizione

Abbiamo comunque voluto implementare un metodo avanzato per

superare limitazioni presenti che potragrave essere utilizzato anche in un futuro quando

controlli effettivi saranno introdotti per il controllo di velocitagrave e accelerazione dei

motori Esso egrave costituito da un polinomio di quinto grado in cui possono essere

specificate posizioni velocitagrave e accelerazioni nei punti iniziale e finale e puograve

gestire la continuitagrave dellrsquoaccelerazione nei punti di via

Il polinomio studiato risulta essere

( )tϑ = 5

54

43

32

210 tatatatataa sdot+sdot+sdot+sdot+sdot+

( ) =tϑamp 45

34

2321 5432 tatatataa sdotsdot+sdotsdot+sdotsdot+sdotsdot+

( ) =tϑampamp 35

2432 201262 tatataa sdotsdot+sdotsdot+sdotsdot+sdot

imponendo

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = Velocitagrave iniziale 0v

( )fϑamp = Velocitagrave finale fv

Modellizzazione cinematica e dinamica 78

sostituendo i vincoli trovo i seguenti valori dei parametri

tvva fof sdotminussdotminusminussdot= )(3)(6 05 ϑϑ

tvva fof sdotsdotminussdot+minussdotminus= )78()(15 04 ϑϑ

tvva fof sdotsdotminussdotminusminussdot= )46()(10 03 ϑϑ

02 =a

tva sdot= 01

00 va =

46 Modello dinamico Newton-Eulero

Per un analisi realistica e approfondita della camminata non egrave sufficiente

considerare gli effetti della forza di gravitagrave ma diventa necessario introdurre il

modello dinamico che tiene conto di tutti i fattori non trascurabili nei corpi in

movimento

Per completare le formule ricavate nel caso statico vengono calcolate le

singole velocitagrave e accelerazioni dei giunti e link Risulta assai comodo ed

efficiente lrsquoalgoritmo ricorsivo di Newton-Eulero[31] Viene effettuata dapprima

una ricorsione ldquoin avantirdquo per calcolare le velocitagrave e accelerazioni dei giunti e

successivamente una ricorsione ldquoallrsquoindietrordquo per ricavare i valori di forza e

torsione

Nella prima fase dalla base (baricentro) allrsquoend-effector (zampa in

movimento) abbiamo

Velocitagrave angolare del rotore ( )011

1 zR iii

Tii

ii ϑωω amp+= minus

minusminus

Accelerazione angolare del link ( )0110

11

1 zzR iiii

ii

Tii

ii times++= minus

minusminusminus

minus ωϑϑωω ampampampampamp

Accelerazione lineare terna i ( )iii

ii

ii

iii

ii

ii

Tii

ii rrpRp 11

11

1minusminus

minusminus

minus timestimes+times+= ωωωampampampampamp

Modellizzazione cinematica e dinamica 79

Accelerazione lineare baricentro iC ( )iCi

ii

ii

iCi

ii

iiC iii

rrpp timestimes+times+= ωωωampampampampamp

Nella seconda fase dallrsquoend-effector al baricentro le formule diventano

Forza iCi

ii

ii

ii i

pmfRf ampamp+= +++

111

Momento ( )

( )ii

ii

ii

ii

ii

iCi

ii

ii

ii

ii

iCi

iii

ii

ii

II

rfRRrrfii

ωωω

micromicro

times++

times+++timesminus= +++

+++minus

amp

1

111111

Forza generalizzata 0

1 zR Tii

Tiii

minus= microτ

Ai fini di semplificare i calcoli tutti i vettori sono riferiti alla terna corrente

sul link i Si rende quindi necessario moltiplicare per i vettori da trasformare

dalla terna i+1 alla terna i e per i vettori da trasformare dalla terna i-1 alla

terna i In questo modo e diventa possibile

semplificare la formula del tensore drsquoinerzia del link

iiR 1+

TiiR 1minus

[ ]Tz 1000 = costante =iCi i

r

( )

( )( ) ⎥

⎥⎥⎥

⎢⎢⎢⎢

+sdotminussdotminus

sdotminus+sdotminus

sdotminussdotminus+

sdot=

intintintintintintintintint

dVyxdVyzdVxz

dVyzdVzxdVxy

dVxzdVxydVzy

I22

22

22

ρ

Lrsquoinerzia egrave una proprietagrave che dipende dalla massa del corpo e da come tale

massa egrave distribuita I tensori sopra calcolati descrivono lrsquoinerzia del corpo nello

spazio tridimensionale Per i calcoli si sono supposti i link di densitagrave uniforme e a

forma di parallelepipedo tale approssimazione porta ad ottenere risultati

sufficientemente precisi per questo lavoro semplificando i termini del tensore

( )

( )( ) ⎥

⎥⎥

⎢⎢⎢

++

+sdot=

120001200012

22

22

22

yxzx

zymI

Modellizzazione cinematica e dinamica 80

Nelle formule del calcolo della torsione sono stati tralasciati i termini

inerenti alle forze interne dei motori essendo questi di dimensione trascurabile

47 Creazione di una mappa

La navigazione consiste nel dirigere il cammino di un robot

mobile[35][36] mentre esso si muove in un ambiente affincheacute

bull Raggiunga la destinazione

bull Non si perda

bull Non si schianti contro ostacoli fissi o mobili

La navigazione egrave composta dalle seguenti parti

mapping planning rArr driving rArr

costruzione della mappa pianificazione esecuzione

Il mapping consiste nel rappresentare lrsquoambiente in cui il robot si muove

ottimizzando i movimenti del robot per ASGARD lrsquoambiente egrave stato rappresentato

mediante una matrice bidimensionale che rappresenta la sua area di azione

Il planning rappresenta la costruzione di un cammino geometrico nella

mappa Nel nostro lavoro si egrave deciso di dare la possibilitagrave al robot di scegliere il

percorso piugrave adatto che dovragrave intraprendere Come verragrave descritto piugrave in dettaglio

nel prossimo capitolo dopo aver inserito valori di riferimento degli ostacoli

mediante un algoritmo di ricerca saragrave il controllore a fornire le direttive e

scegliere che tipologia di camminata che ASGARD dovragrave affrontare in ogni

singolo istante alla fase di driving saragrave delegato il compito di scegliere il passo

opportuno al fine di velocizzare la camminata

Il goal per il nostro robot egrave il raggiungimento della posizione data come

obiettivo senza urtare ostacoli fissi presenti sul suo cammino Non essendo dotato

Modellizzazione cinematica e dinamica 81

di un sistema odometrico per il calcolo della posizione saragrave lo stesso controllore a

verificare in real-time la corretta posizione del baricentro del robot

Non possedendo nemmeno sensori di visione abbiamo deciso di simulare

e costruire una mappa object oriented30 la mappa conosce le posizioni degli

oggetti diffusi nel mondo e vieta al robot le aree in cui essi sono presenti

La mappa saragrave rappresentata da una matrice in cui per ogni cella avremo

valori che rappresentano la distanza dal goal31 e le distanza dallrsquoostacolo piugrave

vicino un opportuno algoritmo di planning (revisione dellrsquoAlgoritmo di Dijkstra)

attueragrave la ricerca del cammino meno dispendioso e dopo un opportuno controllo

diragrave al robot se attuare un passo di camminata veloce o un passo di correzione

471 Espansione degli ostacoli traformazione delle distanze

Basato sul concetto di propagazione drsquoonda32 il metodo della

trasformazione delle distanze proviene dal meccanismo utilizzato per processare

la forma in immagini binarie Il metodo consiste nella propagazione della distanza

da un insieme di celle poste in uno spazio rappresentato da una griglia

Si calcola lo scheletro dellrsquoimmagine ostacolo e si identificano le celle che

ne conterranno gli spigoli Poi si passa da sinistra a destra e dallrsquoalto al basso le

celle esterne al perimetro identificandole con distanza 1 Si procede per tutte le

celle della matrice quando tutti i passaggi sono completati il risultato egrave una

matrice che contiene la trasformazione delle distanze applicate al perimetro di un

oggetto I punti occupati dallrsquooggetto verranno identificati con valori idealmente

infinito e non saranno mai visitati

30 tipologia di costruzione di una mappa orientata agli oggetti 31 obiettivo 32 dallrsquooggetto considerato centro in tutte le direzioni dello spazio bidimensionale

Modellizzazione cinematica e dinamica 82

4 3 2 2 3 3 2 1 1 2 2 1 1 3 2 1 1 2 4 3 2 2 3

4 3 2 2 3 4 4 5 3 2 1 1 2 3 3 4 2 1 1 2 2 3 3 2 1 1 2 1 1 2 4 3 2 2 1 1 5 4 3 2 1 1 6 5 4 3 2 1 1 2

Figura 47 Propagazione drsquoonda per ostacolo singolo e multiplo

Abbiamo deciso di propagare lrsquoonda non solo dagli ostacoli questo

avviene in tutto lo spazio libero fluendo attorno agli ostacoli e dando unrsquoidea a

ogni cella della distanza dallrsquoobiettivo e della direzione da prendere per potersi

avvicinare

I valori del perimetro degli ostacoli vanno propagati in base alla geometria

del robot per evitare eventuali collisioni Nel nostro lavoro lrsquoespansione egrave stata

necessaria solo per i margini verticali in cui il raggio di elevazione delle zampe

poograve collidere con oggetti fissi durante la camminata longitudinale questo

problema non egrave stato invece riscontrato per lrsquoasse latitudinale

4 3 2 2 3 4 3 2 1 1 2 3

2 2 2 2 3 2 1 1 2 3 3 3 2 2 3 4

Figura 48 Griglia con espansione laterale ostacolo

Modellizzazione cinematica e dinamica 83

48 Scelta di un percorso Algoritmo di Dijkstra

Questo algoritmo egrave stato scelto come ricerca di un cammino minimo

allrsquointerno di un grafo[37] per la sua elegante semplicitagrave e il suo basso carico

computazionale (O(n)33)

Proposto da WDijkstra nel 1959[38] esso visita i nodi del grafo in

maniera simile ad una ricerca in ampiezza o profonditagrave In ogni istante lrsquoinsieme

N dei nodi viene diviso in nodi visitati V nodi frontiera F (che sono i successori34

dei nodi visitati) e i nodi sconosciuti che sono ancora da visitare

Per ogni nodo lrsquoalgoritmo tiene traccia del valore che nel nostro caso

saragrave il valore della distanza dal punto di arrivo e del nodo in cui siamo

Lrsquoalgoritmo consiste nel ripetere il seguente passo

zd

zu

si prende dallrsquoinsieme F un qualsiasi nodo z con minimo si sposta z da

F a V si spostano tutti i successori di z conosciuti in F e per ogni successore w di

z si aggiornano i valori di e

zd

wd wu ( )azww pddd +larr min dove a egrave lrsquoarco che

collega z a w Si sceglie in minore valore tra i successori di z si salva questrsquoultimo

nel vettore u

Alla fine dellrsquoalgoritmo arriviamo ad avere nel vettore u lrsquoinsieme dei nodi

che forniscono il cammino minimo dal punto di start al punto di end35

33 Orine di grandezza dellrsquoalgoritmo 34 Un successore di z egrave un nodo raggiungible lungo un arco uscente da z 35 dalla partenza allrsquoarrivo

Capitolo 5 Sviluppo dellrsquoalgoritmo di camminata

Sviluppo dellrsquoalgoritmo di camminata 85

51 Metodologie di sviluppo

Per lrsquoimplementazione della parte software si egrave scelto di far uso

dellrsquoambiente di sviluppo Matlab progettato appositamente per lavorare con

matrici e formule di notevole complessitagrave

Nel realizzare il modello matematico del robot ai fini di studiarne il

comportamento ci si potrebbe chiedere percheacute non sia stato utilizzato lrsquoambiente

di simulazione MSCADAMS in grado di fornire anche proprietagrave fisiche

direttamente dal modello CAD studiarne la cinematica la dinamica e

lrsquointerazione con il mondo esterno La finalitagrave di questo progetto perograve egrave quella di

creare uno strumento di supporto da poter essere realizzato in real-time

A questo punto Matlab potrebbe venir criticato per le sue prestazioni

inferiori a linguaggi quali il C ma esso mette a disposizione toolbox aggiuntivi

quali simulink36 che permettono un facile interfacciamento con tutti i dispositivi

hardware Ersquo comunque possibile convertire il codice sorgente in eseguibili o

addirittura nello stesso linguaggio C senza comprometterne alcuna funzionalitagrave

52 Progetto di una andatura

Per la creazione di una andatura rilevante al fine pratico abbiamo attuato

notevoli ricerche di analisi parametriche in merito Il principale obiettivo trovato egrave

risultata essere la realizzazione delle fasi di un passo stabile e veloce Ci

proponiamo quindi di massimizzare la componente velocitagrave senza provocare

instabilitagrave nel robot La velocitagrave si calcola secondo lrsquoespressione

impiegatotempomotodeldirezionenellapercorsospaziovelocitagrave

______

=

36 tool di matlab per la creazionedi controlli ad anello di automazione

Sviluppo dellrsquoalgoritmo di camminata 86

Per raggiungere tale scopo occorre concentrarsi su diverse questioni

bull Scelta del ciclo di camminata

bull Spazio decidere gli angoli del movimento di ciascuna zampa

bull Il tempo partire da una postura conveniente che garantisca i piugrave

brevi scostamenti possibili di angoli di giunto

bull La stabilitagrave

bull Le coppie prodotte dagli attuatori

bull La scelta della camminata

Attraverso lrsquoanalisi di alcune tra le possibili andature di quadruped sono

emersi pregi e difetti derivanti dallrsquoutilizzo di un ciclo di camminata con un

ridotto numero di fasi Un vantaggio fondamentale sta nel ridurre il tempo

impiegato e il maggior difetto egrave legato ai problemi di instabilitagrave del robot

Al fine di ridurre la stabilitagrave siamo intervenuti nella modellizzazione di un

opportuna camminata quasi statica che si adatta alla morfologia del nostro robot

Lrsquoidea egrave stata quella di trovare una camminata efficiente ma stabile

Al fine di ridurre lrsquoistabilitagrave sono state introdotte fasi aggiuntive che

garantiscono il poligono di appoggio e si egrave tentata di far assumere ad ASGARD

una postura a baricentro basso

Il trotto egrave stato escuso dalla nostra analisi non solo per il tempo di risposta

ma anche per lrsquoimpossibilitagrave di attuare spinte per il balzo

521 Lo spazio

La domanda che ci siamo posti egrave stata se risultava conveniente avanzare le

zampe attraverso piccoli spostamenti ripetuti o con ampi spostamenti meno

frequenti

Lrsquoavanzamento del robot avviene mediante la combinazione di due

movimenti

Sviluppo dellrsquoalgoritmo di camminata 87

bull lo spostamento delle singole zampe da una postura iniziale a una

finale

bull la spinta simultanea delle quattro zampe che permettono lrsquoeffettivo

movimento del main body37

La fase aerea risulta essere molto piugrave complessa e richiede un tempo di

attuazione maggiore rispetto a quella di spinta del busto

Lo spostamento assoluto della zampa che si solleva egrave la combinazione di

due movimenti quello attivo dipendente dalla traiettoria imposta allrsquoend effector

e quello passivo che si muove per mezzo della spinta offerta dal movimento del

busto i due movimenti sono strettamente correlati

Se lrsquoobiettivo egrave quello di massimizzare la velocitagrave del ciclo di camminata

la scelta egrave di prevedere lo spostamento della zampa piugrave ampio possibile (passo

lungo) Abbiamo comunque ritenuto utile introdurre entrambe le tipologie di

passo lungo e passo correttivo per la minimizzazione della distanza dal target

522 Stabilitagrave

Al fine di garantire la stabilitagrave egrave utile porsi nel caso quasi-statico cioegrave fare

in modo che il baricentro del robot cada sempre allrsquointerno del poligono di

stabilitagrave ciograve non sembra un problema per le fasi intermedie del ciclo di

camminata percheacute tutte e quattro le zampe toccano il terreno Il problema invece

si fa sentire nelle fasi in cui una zampa viene sollevata e un punto di contatto

viene a meno In questo caso abbiamo dovuto scegliere posture in cui il baricentro

cada nella base drsquoappoggio Ersquo indispensabile quindi prevedere tali configurazioni

e definirle in modo corretto

Occorre inoltre evitare che due zampe in appoggio poste sul medesimo

lato si urtino durante il moto infatti spazi di lavoro delle zampe presentano

strutturalmente zone di intersezione non trascurabili

37 corpo o busto del robot

Sviluppo dellrsquoalgoritmo di camminata 88

Un ulteriore accorgimento per migliorare la stabilitagrave risulta essere quello di

cercare di abbassere il baricentro durante la camminata al fine di mantenere

costante lrsquointensitagrave del moto associato alla forza peso del robot calcolato rispetto

ai punti di appoggio

523 Tempo

Un altro punto su cui si egrave posta particolare attenzione risulta essere il

piegamento delle zampe nel senso se decidere se per compiere un movimento egrave

piugrave conveniente (in termini di spostamento) tenere le zampe tese o piegate

In base a valori di test riscontrati si deduce che in genere conviene tenere

le zampe piuttosto tese poicheacute in questo modo lrsquoescursione angolare nonostante

amplifichi il movimento garantisce un corretto riposizionamento nella posizione

finale desiderata e i tempi non subiscono variazioni

53 Andature implementate

Dopo lrsquoanalisi compiuta sulle modellizzazioni naturali e sui parametri di

scelta abbiamo implementato due tipologie di camminata

Considerando la rigiditagrave del busto di ASGARD esso non dispone di spina

dorsale mobileabbiamo implementato uno stile quasi-statico che non altera lrsquoasse

del baricentro Questo ci ha vincolato a muovere una sola zampa alla volta

(motivazione da cercare anche nella alimentazione dei motori) facendolo partire

da una particolare postura in cui entrambe le zampe del lato sinistro del corpo

sono arretrate rispetto al busto e con angolature precisa degli arti

Abbiamo cosigrave creato una scomposizione del movimento in sei fasi

succesive

bull movimento zampa RL

bull movimento zampa RF

Sviluppo dellrsquoalgoritmo di camminata 89

bull spostamento in avanti del baricentro

bull movimento zampa LR

bull movimento zampa LF

bull spostamento in avanti del baricentro per tornare a posizione base

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

In questa tipologia di gait il robot si trova in piena stabilitagrave anche durante

lrsquoalzata di una zampa la proiezione del centro di massa risulta essere centrale al

triangolo drsquoappoggio

Questa tipologia di camminata quasi-statica egrave una alterazione del modello

Crawl38 presente in natura e nei modelli Aibo con lrsquoinnovazione di sfruttare

posture del normale trotto differenziandone e rallentandone le fasi di realizzazione

al fine di maggiorare il triangolo di appoggio in relazione alla struttura fisica del

nostro robot

Il segmento di appoggio dello stile Crawl viene qui espanso ad un

triangolo di stabilitagrave pur mantenendone le caratteristiche di spazio percorso e

velocitagrave

La nostra ricerca ci ha ulteriormente spinti alla creazione di un ulteriore

stile di camminata quasi-dinamico in cui la proiezione del baricentro durante

lrsquoalzata si spinge a coincidere con il lato del poligono di stabilitagrave

Le fasi di camminata diversificano da quelle precedenti per lrsquoangolazione

degli attuatori e lrsquoordine di esecuzione dei movimenti

Il passo risulta essere composto da 5 fasi

bull movimento zampa RF

bull movimento zampa LF

bull spostamento in avanti del baricentro

bull movimento zampa RR

bull movimento zampa LR

38 modello di trotto di Aibo

Sviluppo dellrsquoalgoritmo di camminata 90

Nella nostra analisi essendo ancora precario il controllo sugli attuatori

risulta impossibile realizzare un impulso tale da creare il balzo del robot Le

andature studiate escludono pertanto lrsquoandatura dinamica o trotto

La camminata quasi-statica egrave stata correttamente testata sul campo

ottenendo buoni risultati le tempistiche di risposta del robot no hanno permesso

perograve la completa realizzazione della quasi-dinamica che in alcune prove non viene

portata a termine in tutte le sue fasi a causa di cedimenti in stabilitagrave

Per questa ragione essa egrave stata ampiamente testata a simulatore

Per lrsquoanalisi dei suoi movimenti essi sono stati elaborati ed egrave stata creata

anche una variante che presenta una minimizzazione dellrsquoangolatura del giunto

spalla e riporta il movimento a quasi-stabile (passo correttivo esso sposta infatti il

robot sulllrsquoasse longitudinale solo di 2 cm)

54 Catene cinematiche del robot

Per lrsquoiplementazione a simulatore abbiamo dovuto adattare il nostro robot

ad una analisi cinematica e dinamica posizionando su di esso i sistemi di

riferimento in modo da costruire una catena cinematica aperta

Per semplificare il modello abbiamo deciso di caratterizzare la struttura del

robot in quattro catene cinematiche aventi base coincidente nel baricentro e

facendo coincidere ogni end-effector con la relativa zampa in movimento

La prima catena quindi che ci proponiamo di analizzare risulta quindi

essere la seguente

Sviluppo dellrsquoalgoritmo di camminata 91

z0

x0

y0

z1

x1

y1

y2

y3

y4

x2

x3

x4

Figura 49 Posizionamento dei sistemi di riferimento con D-H sulla zampa reale

Essa egrave stata implementata in Matlab utilizzando il metodo di D-H

precedentemente descritto implementato nel nostro tool di analisi

INIT_ROBOT Funzione di definizione delle componenti del robot allinterno del nostro simulatore In relazione alle componentistiche del nostro robot e alla grafica del simulatore questa funzione si propone di definire le parti fondamentali inserendo opportunatamente i parametri di Denavit Hartemberg Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 Copyright (C) 2003-2004 by Picco Sabrina zampa A clear L definifione allinterno della matrice L i parametri di Denavit Hartemberg sigma= 1 giunto prismatico sigma=0 giunto rotoidale sono stati inseriti due giunti prismatici per motivi di grafica del simulatore nel collegamento con i motori reali tali valori non verranno considerati alpha A theta D sigma L1 = link([0 -01 pi4 0 1] mod) L2 = link([0 -06 -pi4 0 0] mod) L3 = link([0 0 -pi4 0 1] mod)

Sviluppo dellrsquoalgoritmo di camminata 92

L4 = link([-pi2 -0573 0 0 0] mod) L5 = link([0 -0675 0 0 0] mod) L6 = link([0 -0735 0 0 0] mod) zampaa = robot(L zampaa Unimation AKampB) clear L

Nel codice Matlab riportato per la creazione di una zampa i parametri

prismatici introdotti sono utilizzati solamente a scopo grafico e vengono tralasciati

dallrsquoalgoritmo per la creazione dei movimenti e dei comandi da spedire algli

attuatori

Si egrave cercata una rappresentazione in grado di descrivere non soltanto i

giunti e i link ma anche altre caratteristiche fondamentali quali masse e lunghezze

Il passo viene scomposto principalmente in due passaggi movimento in

avanti delle zampe e spostamento del busto Nel secondo passaggio la catena

cinematica costruita deve ldquoinvertirsirdquo in quanto non saragrave piugrave la zampa del robot a

costituire il nostro end-effector ma essa saragrave solidale con il terreno e saragrave il

baricentro a diventare il nostro punto terminale asimulatore infatti non sono

possibili movimenti che sfruttano la semplice forza attrito

La catena cinematica verragrave cosigrave modificata

Creazione di un ulteriore robot per caratterizzare il cambiamento del punto di partenza della catena cinematicamentre per la prima parte del passo lend-effector egrave la zampadopo che questa egrave stata appoggiata lend-effector diventa il baricentro del robottino alpha A theta D sigma L1 = link([0 0 0 065 1] mod) L2 = link([0 0 0 0 0] mod) L3 = link([pi2 0 0 0 0] mod) L4 = link([0 0573 0 0 0] mod) L5 = link([pi2 0675 0 0 0] mod) L6 = link([0 0735 -pi4 0 0] mod) zampaa2 = robot(L zampaa2 Unimation AKampB)

Sviluppo dellrsquoalgoritmo di camminata 93

Figura 50 Fase di movimento delle zampe anteriorila base delle quattro catene

cinematiche egrave identificata con il baricentro di cui viene effettuata la prioezione

Figura 51 Fase di spostamento del baricentro si possono notare le proiezioni delle

basi delle rispettive catene cinematiche che si identificano con le zampe

La parte di codice presentato appartiene al file Init_robotm in cui vengono

definite tutte le catene cinematiche necessarie al movimento

Un ulteriore definizione di notevole importanza egrave la ricerca di tutti i punti

essenziali per il corretto posizionamento del robot durante la camminata

Sviluppo dellrsquoalgoritmo di camminata 94

Nel file DB_Positionm vengono memorizzate le posizione chiave per la

costruzione di un passo

Nel nostro algoritmo un passo egrave rappresentato da una sequenza di

posizioni base opportunatamente scelte in relazione ai parametri utili per

realizzare gait veloci e stabili

Il movimento che trasla tutta la struttura da un punto al successivo viene

definito da un profilo di accelerazione e velocitagrave implementato via software che

permette di ottenere ottenere un controllo efficiente e un movimento fluido che

rispetti certi vincoli di forza e di tempo

La funzione jtrajm infatti implementa al suo interno un polinomio di

quinto grado che permette il controllo in velocitagrave e accellerazine sia nel punto di

partenza che di fine della traiettoria permettendo un movimento ldquodolcerdquo che egrave in

grado di evitare picchi di torsione Purtroppo nella realizzazione pratica questo egrave

risultato fin troppo oneroso in quanto sui motori da noi usati non esiste alcun

controllo in velocitagrave

Al fine di rendere piugrave reale la simulazione abbiamo implementato un

semplice controllo in movimento da una posizione finale ad una posizione finale

in un certo intervallo di tempo Esso egrave costituito da un semplice polinomio di

terzo grado non attua controlli e gestisce il movimento spingendo il servo a

velocitagrave massima per ogni intervallo Presentiamo la parte di codice per la

gestione del calcolo delle traiettorie e le principali caratteristiche

sullrsquoimplementazione dei vincoli che diversificano in relazione al polinomio

utilizzato

FUNZIONE CUBICA_norm Funzione per la generazione di una traiettoria da un punto iniziale q0 ad un punto di arrivo qf in un certo intervallo di tempo tv utilizzando un polinomio di terzo grado parametri in input q0= posizione iniziale qf= posizione finale da raggiungere tv=tempo in cui effettuare lazione

FUNZIONE JTRAJ Funzione per la generazione delle traiettorie da qo a q1I numero di interpolazioni dipende dal valore di tLa costruzione di tale algoritmo di generazione avviene tramite lutilizzo di un polinomio di ordine 5 con condizioni di velocitagrave e accellerazione agli estremi parametri input q0=posizione iniziale

Sviluppo dellrsquoalgoritmo di camminata 95

parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [qtnqdtnqddtn] = cubica_norm(q0qftv) if length(tv) gt 1 controllo sul tempo tscal = max(tv) t = tv()tscal else tscal = 1 t = [0(tv-1)](tv-1) normalizzazione parametrotempo end q0 = q0() qf = qf() qt= a0+ a1t+ a2t^2+ a3t^3 vincoli da soddisfare qdt= a1+ 2a2t+ 3a3t^2 qddt= 2a2+ 6a3t implementazione dei vincoli A=q0 B= zeros(size(A)) C=((3(tscal^2))(qf-q0)) D=(((-2)(tscal^3))(qf-q0)) creazione del polinomio ttpv = [t^3 t^2 t ones(size(t))] p=[D C B A] creazione del vettore velocitagrave qtn = ttpv p

q1= posizione finale da raggiungere tv=tempo in cui effettuare lazione qd0=condizione velocitagrave nellestremo di partenza qd1=condizione velocitagrave nellestremo di arrivo parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 implementazione dei vincoli A = 6(q1 - q0) - 3(qd1+qd0)tscal B = -15(q1 - q0) + (8qd0 + 7qd1)tscal C = 10(q1 - q0) - (6qd0 +4qd1)tscal E = qd0tscal F = q0 creazione del polinomio tt = [t^5 t^4 t^3 t^2 t ones(size(t))] c = [A B C zeros(size(A)) E F] calcolo valore posizione qt = ttc calcolo la velocitagrave c1 = [ zeros(size(A)) 5A 4B 3 C zeros(size(A)) E ] qdt = ttc1tscal calcolo accellerazione c2 = [ zeros(size(A)) zeros(size(A)) 20A 12B 6C zeros(size(A))] qddt = ttc2tscal^2

Per la chiamata di entrambe queste funzioni vengono richieste le posizioni

di partenza di arrivo ed un tempo questrsquoultimo rappresenta il tempo che intercorre

tra un frame e il successivo cioegrave ogni quanto verragrave generato un valore di

posizione Per ottenere quindi un movimento il piugrave possibile continuo dovremo

richiedere la generazione di un elevato numero di frame introducendo un tempo

piccolissimo Ad esempio se vogliamo che lrsquointerpolazione generi 10 posizioni

intermedie e che tutto il movimento sia compiuto in 1 sec dobbiamo dare t=01

Sviluppo dellrsquoalgoritmo di camminata 96

55 Passo statico e dinamico

Finora abbiamo visto come sia possibile simulare il movimento di una

singola zampa o del baricentro del nostro robot per eseguire un passoa

simulatore questi movimenti devono perograve essere coordinati in modo opportuno

per permettere lrsquoesecuzione sequenziale delle fasi che lo compongono

In prima analisi il nostro lavoro si posto come obiettivo di creare un passo

quasi-statico in cui il baricentro del robot egrave strettamente compreso nella base

drsquoappoggio per garantire al robot una discreta stabilitagrave

Lrsquoanalisi delle fasi della camminata quasi-statica da noi introdotta

possono essere cosigrave schematizzate

Figura 52 Le 6 fasi della camminata quasi-statica

Da questo possiamo notare come il passo si divide in 6 movimenti in cui

vengono mosse le zampe sul lato sinistro del corpo si sposta in avanti il busto si

muovono le zampe sul lato destro e si risposta il busto per tornare alla posizione

di partenza

Ersquo da notare come lo spostamento del busto nellrsquoanalisi reale avviene

sfruttando lrsquoattrito delle zampe con il suolo mentre a simulatore egrave richiesta

lrsquoinversione della catena cinematica

La struttura da noi proposta e analizzata tenta di attuare una camminata

stabile e veloce

Il calcolo della stabilitagrave nei movimenti risulta effettivamente coerente con

le nostre aspettative

Sviluppo dellrsquoalgoritmo di camminata 97

Figura 53 Analisi margine di

stabilitagravesolo alzata(sinistra)in

movimento(destra)

Dove

321 ddd == distanza tra baricentro e perimetro

021 ne= ll durante il passo considero solo la distanza sullrsquoasse del moto

Dopo aver raggiunto un discreto livello di camminata quasi-statica il

nostro obiettivo si egrave spostato nella realizzazione di una camminata quasi-

dinamica

Figura 54 Fasi della camminata quasi-dinamica

Come si puograve notare in questa configurazione esistono istanti in cui il

baricentro del nostro robot giace sul perimetro del triangolo drsquoappoggio in questi

istanti servirebbe una risposta immediata degli attuatori per limitare le tempistiche

di movimento e permettere al robot di mantenere lrsquoequilibrio Questo fenomeno

presente anche in natura lo possiamo notare analizzando la corsa di una pantera

quando il suo corpo ondeggia in ampi angoli i suoi movimenti diventani fulminei

per mantenere la stabilitagrave

Il nostro algoritmo presenta la sezione camminata_statm che simula i due

passi e ne mostra le differenze

Sviluppo dellrsquoalgoritmo di camminata 98

Figura 55 Passo Statico vista semi frontale

Figura 56 Passo Statico vista dallrsquoalto

Figura 57 Passo Quasi-Dinamico vista semi

frontale

Figura 58 Passo Quasi-Dinamico vista

dallrsquoalto

Possimo notare anche dalle immagini come egrave posizionato il baricentro del

nostro robot rispetto alla base drsquoappoggio in diverse fasi del passo e come nella

camminata quasi-dinamica si spinge a limiti intollerabili per le caratteristiche

fisiche del nostro progetto attuale

Presentiamo di seguito lo schema a blocchi di analisi della camminata

Sviluppo dellrsquoalgoritmo di camminata 99

Cerca posizione da raggiungere

Calcola traiettoria end-effector tramite cubiche

Traccia poligono drsquoappoggio per laposizione raggiunta

inizio

Fine

Attua movimento

Posizione=target no

si

Figura 59 Schema a blocchi creazione singolo passo

Il codice proposto in appendice egrave stato successivamente opportunamente

modulato ma questo ha portato a ulteriori cali di prestezione Pertanto nella

esecuzione si egrave preferito riutilizzare il file integro Problemi di tempistiche sono

da attribuirsi alla parte grafica e al calcolo matriciale richiesto per ogni

movimento

La sperimentazione dei passi reali sul robot fisico sono stati effettuati

utilizzando array di valori di angoli di giunto estrapolati durante la simulazione

sopra citata

Sviluppo dellrsquoalgoritmo di camminata 100

56 Formule di forza e torsione sui giunti

Uno dei ruoli principali delle zampe egrave quello di sostenere la piattaforma

del robot e di evitare la caduta

A causa di un cedimento strutturale avvenuto durante i primi approcci di

pilotaggio dei motori abbiamo pensato necessario calcolare la forza e la torsione

sui giunti utilizzando le formule di Newton-Eulero viste precedentemente La

risoluzione di tali equazioni richiede una potenza di calcolo non indifferente ma

le tempistiche del nostro simulatore sono causate dalla lentezza nel plottaggio dei

grafici e dei movimenti del robot

Non avendo un diretto valore di velocitagrave dei motori ci egrave sembrato

interessante provare a calcolare effettivamente le tempistiche dei motori

Conoscendo tramite la cinematica diretta la posizione di arrivo per ogni coppia di

valori abbiamo calcolato lo spazio percorso Cronometrando il tempo richiesto

affincheacute i motori si portassero nella posizione voluta egrave stato possibile valutare la

velocitagrave media dei motori

Questa velocitagrave egrave stata successivamente introdotta nellrsquoalgoritmo

Per il calcolo delle formule di Newton-Eulero egrave inoltre da sottolineare

lrsquoimportanza della ripartizione delle masse ci egrave sembrato coerente ipotizzare le

equidistribuzione del peso su tutte e quattro le zampe in quanto la PIC aggiuntiva

non dovrebbe influenzare tale ripartizione

Dallrsquoanalisi svolta si trovano i seguenti valori sui giunti

Sviluppo dellrsquoalgoritmo di camminata 101

Figura 60 Gafici della torsione in un passo quasi-dianmico

Dal grafico possiamo inanzitutto notare come i valori di torsione che ogni

motore subisce sono inferiori al valore massimo possibile dichiarato dalla casa

costruttrice presente in ogni grafico con la linea nera continua

Possiamo vedere che il valore piugrave alto di torsione viene subito

dallrsquoattuatore presente sulla caviglia sul quale ricadono le maggiori sollecitazioni

Un comportamento analogo ma con decisamente meno carico avviene sul

giunto del ginocchio orientato come il precedente che ha la funzione di aiutare la

caviglia nel sostegno del peso

Il giunto della spalla presenta lrsquoasse di rotazione parallelo alla forza peso

di cui per questo motivo non se ne fa carico Le sue piccole perturbazioni sono

causate durante il movimento del busto dalla resistenza della forza di attrito

sfruttata per il movimento e durante lrsquoalzata della zampa dal peso di ogni singola

Sviluppo dellrsquoalgoritmo di camminata 102

articolazione che risulta perograve essere pressocheacute irrilevante rispetto al peso del

busto

Durante il movimento si possono osservare sulle grandezze di ginocchio e

caviglia una serie di oscillazioni tra due valori essi sono causati dalla ripartizione

del peso su tre o quattro zampe in base alle alzate consecutive quando il peso egrave

ripartito su tre zampe ovviamente il carico che ogni singola zampa egrave costretta a

subire cresce

Ovviamente durante lrsquoalzata ogni singola zampa presenta sui giunti

torsioni pressocheacute nulle questi minimi valori sono da attribuirsi alla sola

resistenza di ogni link alla forza di gravitagrave

La parte di codice fondamentale riportata in Appendice B per questa

funzione risulta essere la definizione dei parametri e lrsquoimplementazione delle

formule di andata e di ritorno dei valori Le funzione base viene chiamata

allrsquointerno di una ulteriore funzione NW-EUm che adatta lrsquoanalisi al passo

Esisteragrave nellrsquoalgoritmo una funzione eulerom che effettueragrave i calcoli di

Newton-Eulero anche per la catena cinematica che presenta come end-effector il

baricentro

57 Anello di Controllo

Un ulteriore controllo introdotto egrave il calcolo della cinematica inversa e il

controllo sulla soluzione trovata

A questo anello di controllo egrave stato predisposto il possibile inserimento di

un eventuale errore nel raggiungimento della posizione voluta Questo errore

potrebbe essere rilevato in futuro da sensori di posizione o da un sistema di

stereovisione dellrsquoambiente in grado di percepire la reale posizione di ogni zampa

Per ora viene passato come parametro di input settato da utente

Sviluppo dellrsquoalgoritmo di camminata 103

Figura 61 Anello di controllo cinematica inversa

Diversi approcci sono stati implementati per il calcolo della cinematica

inversa la funzione dagrave la possibilitagrave allrsquoutente settare le equazioni decisionali

quali scegliere il metodo da utilizzare settare lrsquoapprossimazione desiderata nel

caso di metodo del gradiente e la configurazione a gomito alto o basso nel caso di

metodo geometrico

Presentiamo di seguito lo schema a blocchi di sviluppo dellrsquoalgoritmo che

ci permetteragrave una spiegazione piugrave immediata del funzionamento

Sviluppo dellrsquoalgoritmo di camminata 104

Applico formule geometriche Metodo gradiente

Scelta algoritmo

inizio

Metodo inseguimento veloce del gradiente

Calcolo cinematica diretta

Setto parametri decisionali

Calcolo errore

fine

Figura 62 Schema a blocchi calcolo cinematico

Proponiamo successivamente lo pseudo codice in merito la funzione di

inseguimento veloce del gradiente al fine di rendere piugrave chiare e dettagliate le sue

caratteristiche di esecuzione

1 Anticipatamente viene settata la approssimazione desiderata per il

raggiungimento del target e lrsquoincremento dellrsquoangolo

2 Pongo nullo lrsquoincremento iniziale

Sviluppo dellrsquoalgoritmo di camminata 105

3 Pongo nulli i rispettivi valori di gradiente_old dei singoli giunti

4 Calcolo la distanza dal target con le posizioni base

5 Fintantochegrave la distanza non egrave minore dellrsquoapprossimazione introdotta

bull Calcolo i valori dei nuovi gradienti incrementando i singoli angoli

del valore incremento prefissato

bull Confronto il valore del segno del nuovo gradiente del primo giunto

con il corrispettivo gradiente_old

- se segno discorde diminuisco il valore dellrsquoangolo in

funzione el valore del gradiente nuovo e old al fine di

arrivare al punto di colle

- se segno concorde aumento ulteriormente lrsquoangolo del

giunto aggiungendogli un valore proporzionale alla distanza

trovata

bull viene eseguito lo stesso controllo per il secondo giunto

bull incremento la variabile num_iterazioni

bull i nuovi gradienti diventano i gradienti_old

bull Calcolo la distanza con il nuovi valori degli angoli dei due giunti e

torno al punto 5

58 Map-building e scelta del gait

Il nostro scopo egrave quello ricreare un programma che ricevendo in input i

soli valori di dimensione dellrsquoarea di gioco e posizione degli ostacoli fornisca al

robot tutti i comandi per muoversi nellrsquoambiente e arrivare allrsquoobiettivo senza piugrave

intervento esterno A tal fine questa funzione dovragrave comprendere diversi goal

intermedi che possono essere cosigrave schematizzati

Sviluppo dellrsquoalgoritmo di camminata 106

Creazione mappa

Ricerca percorso

Scelgo passi da attuare

inizio

fine

Il programma si divide in tre parti fondamentali

bull creazione della mappa tramite algoritmo di map-building

bull ricerca del percorso

bull decisione del passo da intraprendere per ogni istante e applicazione

del gait oppotuno

581 Costruzione della mappa ed espansione degli ostacoli

Abbiamo elaborato la costruzione di una mappa creando una matrice

bidimensionale in cui ogni cella rappresenta le possibili posizioni del baricentro

del robot nellrsquoambiente Utilizzando valori noti in input per le dimensioni e i

posizionamenti degli oggetti egrave il programma stesso a fornirci la matrice

Un ostacolo viene identificato come un cubetto in cui le coordinate inserite sono

Sviluppo dellrsquoalgoritmo di camminata 107

Xa1Ya1

a

Xa2Ya2

Per ogni cella sono presenti due valori il primo rappresenta la distanza

dallrsquoobiettivo il secondo la distanza dallrsquoostacolo piugrave vicino (se ne esiste piugrave di

uno) Questi valori sono determinati tramite onde di propagazione che partono

dallrsquooggetto in esame e si diffondono in tutte le direzioni allrsquointerno della mappa

Lrsquoonda egrave da considerarsi come una scansione prima orizzontale e poi verticale

dellrsquoambiente che incrementa ad ogni riga i controlli sulla distanza sono

introdotti in seconda analisi il controllo sulla distanza dellrsquoostacolo piugrave imminente

qualora ce ne siano presenti piugrave di uno e il controllo sullrsquoespansione drsquoonda

limitata qualora lrsquoostacolo o la destinazione si trovino ai borbi della mappa

Gli ostacoli presentano una ulteriore onda di espansione orizzontale in

quanto egrave solo lungo questa direzione che possono avvenire collisioni tra il nostro

robot in movimento e gli ostacoli fissi Accorgimenti successivi ci hanno

permesso la costruzione di un ulteriore passo correttivo che puograve essere utilizzato

in un secondo momento per un avvicinamento forzato

Figura 63 Mappa creata vista dallrsquoalto

Sviluppo dellrsquoalgoritmo di camminata 108

Figura 64 Visione della mappa semilaterale si possono vedere i corpi degli ostacoli

Matrice generata

10 3 9 2 109 0 110 0 110 0 109 0 4 2 9 2 8 2 109 0 110 0 110 0 109 0 3 1 8 1 7 1 6 2 5 1 109 0 110 0 110 0

110 0 110 0 109 0 4 2 109 0 110 0 110 0 110 0 110 0 109 0 3 2 2 2 1 1 0 1

Ogni elemento della matrice rappresenta un vertice di intersezione delle

coordinate (xy) della mappa Il primo valore equivalente a 110 rappresenta

lrsquoostacolo il valore 109 la sua espansione in altro caso esso egrave la distanza dalla

destinazione Il secondo valore rappresenta la distanza dallrsquoostacolo piugrave

imminente

582 Algoritmo di ricerca del percorso minimo

Avendo a disposizione una matrice che mi identifica tutto lrsquoambiente che

circonda il robot abbiamo deciso di modificare lrsquoAlgoritmo di Dijkstra

precedentemente descritto al fine di trovare un percorso minimo con bassa

computazionalitagrave di calcolo

Sviluppo dellrsquoalgoritmo di camminata 109

Nella prima fase abbiamo applicato lrsquoalgoritmo di ricerca operativa non su

un grafo ma su una matrice considerando come nodi successori le quatto celle

confinanti (su giugrave dx sx) rispetto a quella in cui ci troviamo Il costo di

movimento o meglio il miglior successore in cui spostarsi per riterare lrsquoanalisi

viene scelto tramite lrsquoimplementazione di un compromesso adeguato tra

minimizzazione della distanza dal target e massimizzazione della distanza dagli

ostacoli

Questa funzione restituisce in output se egrave stato trovato un percorso in caso

affermativo di esso visualizza le coordinate dei punti da attraversare e le

indicazioni in rappresentazione direzionale (destra sinistra avanti indietro)

Direzioni

start Destra Avanti Avanti Destra Destra Avanti Avanti Destra Destra Destra

Coordinate

1 1 1 2 2 2 3 2 3 3 3 4 4 4 5 4 5 5 5 6

5 7

Tabella 2 risultati ricerca percorso

Riportimo il flow-chart che descrive lrsquoalgoritmo di ricerca sopra citato

Sviluppo dellrsquoalgoritmo di camminata 110

pos =partenza migliore=non_valido

Considero 4 successori

Passo ad altro

successore

pos=visitato

pos=v

Stampo percorso in coordinate

Trasformo percorso in direzioni

inizio

Pos = destinazione

Egraversquo pos sul bordo

Considero 32 successori

Insieme successori vuoto

Considero successore v

distanza dest_vltdistanza dest

migliore

distanza ost_vltdistaza ost

migliore

Percorso non trovato

salvo pos in percorso

fine

si no

si

no

si

si

no

no

no

si

Figura 65Schema a blocchi ricerca percorso

Sviluppo dellrsquoalgoritmo di camminata 111

583 Realizzazione del gait

Una volta generato il percorso da seguire segue la parte piugrave dispendiosa in

tempo in quando legata alla grafica

Sono stati implementati per la realizzazione del percorso i seguenti passi

bull in avanti

bull in dietro

bull a destra

bull a sinistra

bull correttivo avanti

bull correttivo indietro

bull correttivi laterali non sono stati introdotti a causa del giagrave minimo

spostamento laterale per ogni passo in quella direzione (2 cm)

La terza parte di algoritmo considera il percorso generato e decide il passo

da mettere in pratica uno spostamento sullrsquoasse verticale del piano implica una

scelta ulteriore per la calibrazione del numero di passi lunghi e dei passi correttivi

Una ampia falcata permette il movimento del robot di 7 cm mentre il passo

correttivo di 2 Il programma in base al percorso ottimizza le tempistiche

effettuando il maggior numero di passi ampi e riassestando la posizione con il

minor numero possibile di passi correttivi dispendiosi in tempo

Saragrave possibile ammirare tutta la camminata del nostro robot in una

immagine che plotta tutti i movimenti del robot

Sviluppo dellrsquoalgoritmo di camminata 112

Figura 66 Robot in movimento nellrsquoambiente

Al raggiungimento dellrsquoobiettivo destinazione sulla mappa appariragrave oltre il

percorso ideale il percorso effettivamente compiuto dal robot dandoci in uscita

anche le approssimazioni al valore reale di destinazione

Figura 67 Immagini del percorso trovatoin verde percorso ideale in blu percorso

effettivo

Tali valori rappresentano la distanza ancora da percorrere e la scelta

dellrsquoulteriore passo da intraprendere per compierla

Sviluppo dellrsquoalgoritmo di camminata 113

SONO ARRIVATO A DISTANZA DALL OBIETTIVO DIX = 35527e-015 Y = -03200 testo = devo fare ancora ans = 16000 testo = passi correttivi indietro

Dopo averci fornito queste informazioni il controllore comanderagrave e faragrave

eseguire al robot i passi correttivi appropriati che gli mancano per il

raggiungimento della destinazione

Schema a blocchi dellrsquoultima parte dellrsquoalgoritmo

Sviluppo dellrsquoalgoritmo di camminata 114

Alzata nello start

Analisi elemento i

Avanti Indietro Passo dx Passo sx

Calcolo avanzamento complessivo

Calcolo num passi lunghi e

corretivi

Esegue passi

Memorizzo pos

Stampa percorso vero e ideale

Calcola distanza dal target

Effettua passi correttivi ancora

possibili

inizio

Esistono elementi in percorso

Calcolo indietreggiamento

complessivo

Esegue passo

fine

no

si

1 -1 2 -2

Figura 68 Schema a blocchi movimento

Capitolo 6 Sperimentazione e analisi dei risultati

Sperimentazione e analisi dei risultati 116

61 Risultati statici

La creazione di file a se stanti contenenti tutte le possibili posture del

nostro robot e la realizzazione di procedure che identificano i passi standard

possono essere in un secondo momento cablati su un chip di controllo diretto

posizionato on-board

Questo darebbe la possibilitagrave reale al robot di deambulare senza

condizionamento con un Pc remoto Il processo di creazione dei percorsi vincola

perograve il movimento in quanto non sono presenti tuttora sensori di visione

Possiamo inoltre affermare che tra gli stili di camminata da noi studiati ha

un ruolo fondamentale la camminata quasi-statica che effettivamente permette il

movimento del robot in ambiente piano la camminata quasi dinamica richiede

ulteriori fasi di analisi soprattutto in merito al miglioramento della risposta dei

motori

Sono state effettuate diverse prove per la realizzazione di movimenti

fluidi il valore riscontrato a simulatore e di 30 frame mentre nella realizzazione

pratica a causa dei tempi di risposta egrave stato raggiunto un valor di soglia frame=8

che permette la realizzazione di movimenti continui

Sperimentazione e analisi dei risultati 117

611 Passo reale effettuato

In prima analisi poniamo le foto delle fasi piugrave significative del passo quasi-

statico compiuto da ASGARD in laboratorio

- 1 - - 2 -

- 3 - - 4 -

- 5 - - 6 -

Sperimentazione e analisi dei risultati 118

- 7 - - 8 -

- 9 - - 10 -

- 11- - 12 -

Tabella 3 Foto del passo quasi ndashstatico eseguito da ASGARD

Le foto rappresentano la sequenza di esecuzione della nostra camminata

quasi-statica nelle viste dallrsquoalto si possono notare le caratteristiche delle posture

assunte dalle zampe e si puograve verificare il poligono drsquoappoggio

Sperimentazione e analisi dei risultati 119

Da porre in particolare evidenza sono gli angoli del giunto che rappresenta

la spalla calibrati al fine di non interferire nel movimento durante il moto

Nelle viste laterali sono da porre in particolare evidenza i momenti di volo

di ogni singola alzata caratterizzandone le tempistiche di movimento

Da notare le immagini 5 6 e 1011 in cui si verifica la spinta del baricentro

in avanti nel primo caso per lrsquoavanzamento a metagrave passo nel secondo caso per

riposizionare le zampe nella posizione iniziale

612 Misurazioni reali della pressione

Durante le prove di laboratorio in merito alla camminata statica del robot

sono stati effettuati rilevamenti dellrsquounico sensore di pressione posto sotto la

zampa anteriore sinistra

Figura 69 Particolare del sensore di pressione da noi costruito (sinistra) e del

posizionamento di esso sotto la zampa anteriore sinistra (destra)

Sperimentazione e analisi dei risultati 120

I dati riscontrati sono

istanti descrizione Valori di resistenza misurati(ohm) media

passi 1 2 3 4 5 ottenuta

1 4 in appoggio 321 287 298 314 306 3052 2 alzo C 233 246 239 253 232 2406 3 appoggio C 266 275 294 278 289 2804 4 alzo B 1271 1232 1244 1262 1251 1252 5 appoggio B 98 90 99 92 87 932 6 sposto busto 311 308 298 301 287 301 7 alzo D 198 209 203 195 211 2032 8 appoggio D 302 319 311 320 301 3106 9 alzo A 180 193 184 192 177 1852

10 appoggio A 268 259 262 270 281 268 11 sposto busto 108 115 127 122 123 119 12

Assestamento

308

305

311

313

299

3072

Tabella 4 Rilevamenti sensore pressione

Da questa tabella abbiamo trasformato i valori di resistenza in forza secondo i

diagrammi di caratteristica del sensore e abbiamo trovato

val resistenza pressione

Ohm

Kg

4 in appoggio 3052 031 alzo C 2406 045

appoggio C 2804 034 alzo B 1252 002

appoggio B 932 15 sposto busto 301 0306

alzo D 2032 049 appoggio D 3106 034

alzo A 1852 055 appoggio A 268 046 sposto busto 119 06 assestamento

3072

033

Tabella 5 Trasformazione in forza dei valori misurati del sensore pressione

Sperimentazione e analisi dei risultati 121

Da cui si puograve ricavare il seguente grafico

Volori di pressione rilevati sperimentalmente

002040608

1121416

0 5 10 15

istanti temporali passo (sec)

pres

sion

e (K

g)

pressione

impatto con il suolo

Alzata

Figura 70 Grafico della pressione

Da questo possiamo notare come effettivamente il sensore rileva le

variazioni di forza peso che agiscono sulla zampa

Le misure sono state effettuate dopo un periodo di assestamento iniziale

quando effettivamente tutte le zampe sono appoggiate il carico risulta essere

minore mentre aumenta alle singole alzate delle altre tre articolazioni Si puograve

inoltre notare dal grafico come dopo lrsquoalzata la zampa subisce un forte impatto

con il terreno istante 5 e non si riposiziona piugrave esattamente corretta aderenza

qusto causa un eccessivo carico solo su alcune parti esterne del piedino (dove egrave

situato il sensore) che andranno ad aggravare le misurazioni durante le successive

alzate

Purtroppo questo incorretto posizionamento egrave causato dalla poca mobilitagrave

del giunto passivo della zampa che puograve essere migliorato solo tramite interventi

alla struttura meccanica Ulteriore vantaggio si potrebbe riscontrare con

lrsquoinserimento di un controllo di velocitagrave che eviti impatti considerevoli con il

terreno

Sperimentazione e analisi dei risultati 122

613 Confronti di cinemetica inversa

Proponiamo alcuni risultati ottenuti con i tre diversi metodi di cinematica

inversa introducendo disturbo nullo

Metodo geometrico

Metodo del gradiente

Inseguimento veloce

del gradiente Approssimazione=25 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 438

Errore in gradi 0 2 2 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3

N= 85

Errore in gradi 0 2 2 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1

Approssimazione=05 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 2030

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

N= 130

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

Tabella 6 Confronto risultati ottenuti conmetodi cinematica inversa

Sperimentazione e analisi dei risultati 123

Da cui si possono ricavare i seguenti andamenti dellrsquoerrore

Errore sul secondo giunto con approssimazione di 25 gradi

01234

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Errore sul terzo giunto con approssimazione di 25 gradi

0

1

2

3

4

0 2 4 6 8

numero angoli

erro

re (g

radi

) metodogeometrico

metodo diinseguimento delgradiente

metodo diinseguimentoveloce

Errore sul secondo giunto con approssimazione di 05 gradi

0

05

1

0 2 4 6 8

nume r o a ngol i

met odo gradient e

met odo diinseguiment o delgradient e

met odo diinsegiument oveloce

Errore sul terzo gionto con approssimazione di 05 gradi

0

05

1

15

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Figura 71 Grafici che rappresentano lrsquoandamento dellrsquoerrore trovato

Sperimentazione e analisi dei risultati 124

I valori degli angoli inseriti sono quelli effettivamente lanciati come

comando ai motori

Vediamo che nonostante il primo metodo sia il migliore in quanto fornisce

ottimi risultati con una sola iterazione ha a monte una oneroso carico di analisi

Il metodo di inseguimento veloce fornisce buoni risultati con una notevole

diminuzione del numero di iterazioni rispetto al metodo del gradiente semplice

essi si sono quindi dimostrati metodi di qualitagrave efficiente per il ritrovamento di

posizioni desiderate Si ricorda che questi metodi sono stati qui analizzati come

banco di prova per possibili applicazioni in robot presenti in laboratorio dotati di

catene cinematiche piugrave complesse (LARP di UScarfogliero[39])

62 Risultati dinamici

Dallrsquoanalisi dei grafici ottenuti tramite le formule di Newton-Eulero

presentati nel capitolo precedente possiamo affermare che i motori utilizzati sono

stati correttamente calibrati in merito di forze e torsioni a cui sono sottoposti

durante il passo

Variando il tempo di esecuzione dei movimenti otteniamoli seguente

grafico

Sperimentazione e analisi dei risultati 125

Figura 72 Grafico torsione con interpolazione limitata a 2 frame

Riducendo di molto il valore di interpolazione come si puograve vedere di

grafici i motori subiscono delle variazioni di carico molto forti in istanti

ravvicinati in quanto come giagrave piugrave volte affermato non esiste un controllo in

accelerazione e velocitagrave Vediamo inoltre come i valori di picco del giunto della

caviglia della zampa b trovati sono in stretta similitudine con i parametri misurati

nei rilevamenti del sensore di pressione posto sotto la zampa stessa I due grafici

simili nellrsquoandamento presentano come unica differenza la misura dellrsquoimpatto

con il suolo nel grafo della pressione viene rilevato mentre la torsione del motore

non evidenzia le forze di repulsione del suolo ma solo le forze i momenti e forza

di gravitagrave sullrsquoasse rotoidale del giunto

Sperimentazione e analisi dei risultati 126

Notiamo comunque che nonostante i picchi subiti i valori rimangono nei

limiti proposti dalla HITEC

Il cedimento strutturale riscontrato egrave stato quindi attribuito a imprecisioni

di laboratorio avvenute per inesperienza iniziale

621 Caratteristiche negative dei motori

6211 Velocitagrave

Una nota negativa nellrsquoutilizzo di questi servo attuatori va perograve apostrofata

in merito alla velocitagrave di rotazione che rimane di gran lunga inferiore a quella

dichiarata dalla casa costruttrice ( 023 sec60deg con carico 018 sec60deg a vuoto)

6212 Alimentazione

Un problema riscontrato durante le prove sul campo riguarda

lrsquoalimentazione I motori vengono alimentati direttamente dalla PIC che genera i

segnali la quale egrave a sua volta alimentata da un trasformatore in grado di fornire

circa 35A alla tensione di utilizzo di 6V Dopo aver riscontrato dei problemi

durante lrsquoutilizzo di piugrave motori in simultanea siamo andati a verificare i valori

effettivi di corrente assorbita a run-time Il valore dichiarato di 900mA (senza

carico) sulle specifiche HITEC [28] consentirebbe il movimento di pressocheacute tutti

i motori in simultanea ma con carico applicato si sono riscontrati valori di picco

di 18A Essendo improbabile che tutti i 12 motori vengano utilizzati in

contemporanea e sotto massimo sforzo non egrave necessario dover fornire

costantemente 216A ma risulta comunque chiaro che in alcuni casi la corrente

fornita non egrave sufficiente e ciograve causa malfunzionamenti alla PIC Oltre alla

necessitagrave di acquistare un trasformatore piugrave potente sarebbe opportuno separare

lrsquoalimentazione dei motori da quella della PIC o perlomeno apportare le

necessarie modifiche affincheacute la corrente fornita al processore non sia

strettamente dipendente da quella assorbita dai motori

Sperimentazione e analisi dei risultati 127

63 Caratteristiche del percorso

Solitamente la deambulazione per sistemi legged richiede al robot di essere

fornito di un considerevole numero di sensori per lrsquoanalisi dellrsquoambiente

La realizzazione di un nuovo algoritmo che facendo cooperare elementi di

cinematica e ricerca matematica permette la camminata fornisce un efficiente

mezzo di analisi

I dati a disposizione ci permettono di affermare che lrsquoalgoritmo di

creazione delle mappe e ricerca di percorsi minimi presenta ottime risposte a

differenti tipologie di ambienti proposti

Tra le principali doti di cui esso dispone ci permettiamo di sottolineare la

velocitagrave computazionele e la semplicitagrave di utilizzo

Inserendo infatti semplicemente le dimensioni dellrsquoarea drsquoazione e la

definizione delle coordinate dellrsquoostacolo esso rileva il percorso minimo che ci

conduce al target in tempistiche ridotte

La parte innovativa di tale algoritmo permette non solo di generare il

percorso ma di delegare al sistema la scelta del passo da intraprendere nel singolo

istante basandosi semplicemente su coordinate geometriche e su un data base di

posizioni possibili

La fase di decisione del passo da intraprendere puograve essere considerato un

buon risultato di ricerca nella creazione della prima attivitagrave celebrale di ASGARD

Sperimentazione e analisi dei risultati 128

Figura 73 Esempi di percorsi provati a simulatore

Capitolo 7 Conclusioni e sviluppi futuri

Conclusioni e sviluppi futuri 130

71 Risultati raggiunti

Il percorso di analisi svolto ci ha permesso di realizzare un prototipo di

robot quadrupede tra i piugrave leggeri presenti nella ricerca Costriuito con materiali

tecnologicamente avanzati che gli garantiscono particolari doti di elasticitagrave e

torsione richiede anche per il movimento semplici attuatori utilizzati

abitualmente nellrsquoambito del modellismo

Queste considerevoli doti pongono ASGARD in una rilevante posizione per

la realizzazione futura di consistenti progetti di Trot gait deambulazione in

ambienti ostili e superamento di ostacoli

Nonostante il nostro robot non sia fornito come GEO (vedi cap3) di una

spina dorsale adattabile la camminata da noi implementata gli fornisce stabili

posture che gli consentono un movimento rapido nellrsquoambiente

Tale innovativa camminata permette infatti al nostro robot tempistiche di

movimento per nulla invidiabili a Patrush o a Tekken (vedi cap3)

Concludendo questo lavoro possiamo affermare di aver realizzato un

potente mezzo di analisi della camminata statica e dinamica dimostrandosi

estremamente utile nelle prime fasi di analisi e nella realizzazione pratica

successiva

Essendo il nostro robot tuttora sprovvisto di sensori ci egrave parso utile

implementare un algoritmo di ricerca del percorso minimo in ambiente con

ostacoli in posizioni note

A tal fine abbiamo pensato di far cooperare diversi settori di ricerca

rielaborando algoritmi di ricerca operativae applicandoli a mappe di ambienti

Il notevole risultato ottenuto permette ad ASGARD di riconoscere

lrsquoambiente nonostante non ottenga feedback dallo stesso Questo algoritmo

rappresenta il primo sostanziale passo per la creazione di un sistema di

apprendimento per rinforzo intelligente per il nostro robot

Conclusioni e sviluppi futuri 131

La comunicazione con i servo motori ha permesso un primo reale

interfacciamento tra macchina e robot e lo studio del movimento ha permesso al

robot di compiere i suoi primi passi

72 Progetti futuri

Attualmente il robot egrave in grado di deambulare in ambiente piano e molte

sono le applicazioni e le migliorieche potrebbero essere aggiunte al controllo del

nostro automa

721 Modifiche meccaniche

Miglioramento del giunto passivo che si trova nella caviglia la fine di

realizzare un sistema mossa-smorzatore[40] che riesce ad attuire gli urti e le

oscillazioni presenti nellrsquoimpatto durante lrsquoappoggio della zampa al terreno

A tal scopo egrave stato realizzato il primo rudimentale progetto di

reingegnerizzazione del giunto ottenendo il seguente risultato

Figura 74 Caratteristiche del progetto di zampa realizzato si possono notare le

torsioni possibili su due assi

Conclusioni e sviluppi futuri 132

In esso si puograve notare come il giunto del piedino sia diventato

completamente mobile regolato solamente dalla costante elastica delle molle che

puograve essere a sua volta regolata dalle viti presenti sulla base del piedino

Il sistema molla-smorzatore egrave in grado di immagazzinare energia durante

lrsquoimpatto con il suolo e di riutilizzarla per il riposizionamento in aderenza

perfetta

Ulteriore miglioria consigliata egrave lrsquoincremento dei sensori al fine di

permettere al robot una conoscenza piugrave vasta e piugrave autonoma dellrsquoambiente

esterno Un ritorno di valori sensoriali inoltre migliorerebbe il programma da noi

realizzato permettendo la reale acquisizione di dati esterni e non forniti da utente

Il sensore fino ad oggi presente ci permette semplicemente di capire i

carichi presenti sulla zampa ma non ci fornisce ulteriori informazioni Ponendo un

sensore su ogni zampa e migliorando la struttura portante di ogni singola

cavigliaverrebbero forniti dati utili nel valutare il corretto posizionamento della

zampa e cioegrave la corretta esecuzione di ogni passo

Al fine di un futuro miglioramento della parte sensoriale egrave stata condotta

una ricerca riguardante i migliori sensori disponibili sul mercato che meglio si

adattano alle nostre problematiche tale ricerca viene presentata in Appendice A

722 Miglioramenti Hardware

Un ulteriore miglioramento egrave richiesto nella comunicazione tra computer e

scheda di comando degli attuatori

Questa scheda non permette tuttora la programmazione della PIC presente

su di essa andrebbe rivisto il circuito presente in modo da sfruttare anche i canali

di ritorno in lettura in modo da sfruttare questi ultimi per feedback sensoriali

Questo miglioramento permetterebbe lrsquoutilizzo della scheda come interfaccia di

inputoutput del robot

Conclusioni e sviluppi futuri 133

Di primaria necessitagrave egrave la differenziazione dellrsquoalimentazione dei motori

dallrsquoalimentazione della scheda per non compromettere il corretto funzionamento

della PIC

723 Miglioramenti Software

Raggiunto lrsquoobiettivo di una buona camminata quasi-statica si puograve pensare

di integrare un controllore on-board aggiungere sistemi di trasmissione wireless e

unrsquoalimentazione autonoma per rendere il robot indipendente dalla postazione

fissa

Come si puograve notare i campi di ricerca sono molto vasti da semplici

migliorie hardware al campo di Intelligenza Artificiale per dotare il robot di

potenzialitagrave che lo rendano il piugrave possibile un emulatore dei comportamenti

naturali di un mammifero

73 Conclusioni finali

A causa della complessitagrave dellrsquoanalisi e delle difficoltagrave implementative

riscontrate alcune parti richiedono ancora un grosso intervento per arrivare a

efficienti strumenti di precisione per lrsquoattuazione dei movimenti

Sono comunque da sottolineare i grandi passi compiuti In quanto in poco

piugrave di un anno il progetto egrave stato creato e messo in pratica riuscendo ad arrivare

ad un passo cruciale per il corretto funzionamento

Il continuo progresso e il continuo impegno potranno portarci in un futuro

non troppo lontano alla creazione di amici elettronici in grado di giocare con noi

e di muoversi come farebbe un normale amico a quattro zampe

Lrsquointroduzione inoltre di sistemi di camminata dinamica intelligente in

qualsiasi ambiente porterebbe evoluzioni significative anche in ambito di bio-

ingegneria ambientale rendendo in questo modo possibile lrsquoacquisizione di dati

Conclusioni e sviluppi futuri 134

provenienti da habitat inaccessibili allrsquouomo quali crateri di vulcani profonditagrave

marine o pianeti del sistema solare permettendo cosigrave una crescita culturale

dellrsquointera umanitagrave

Bibliografia

[1] NDiolaiti ldquoSistemi di navigazione per robot mobili in ambienti sconosciutirdquo

Thesis 2001

[2] J Borenstein e L Feng ldquoMeasurement and correction of systematic odometry

errors in mobile robotsrdquo In IEE Transactions on Robotics and Automation

vol7 NO 12 pag 869-880 1996

[3] KS Chong e L Kleeman ldquoAccurate odometry and error modelling for

mobile robotrdquo In Proceedings of IEEE International Conference on Robotic

and Automation pag 2783-2788 Albuquerque New Mexico 1997

[4] U Gerecke e N Sharkey ldquoQuick and Dirty Localization for a Lost Robotrdquo

University of Sheffield 1999

[5] B Yamauchi A Shultz e W Adams ldquoMobile robot exploration and map-

building with continuous localizationrdquo In Proceedings of IEEE International

Conference on Robotic and Automation pag 3715-370 Leuven Belgium

1998

[6] H TakedaC Facchinetti JC Latombe ldquoPlanning the motions of a mobile

robot in a sensory uncertainty fieldrdquo In IEEE Transactions on Pattern

Analysis and Machine Intelligence pag 1002-1017 oct 1994

[7] JP Laumond editor ldquoRobot Motion Planning and Controlrdquo Published 1999

[8] C Sanitati ldquoAnalisi e implementazione di andature per il robot quadrupede

Sony Aibordquo Thesis 2001

[9] MH Raibert ldquoLegged robots that balancerdquo MIT Press Cambridge

[10] httpmarsroversjplnasagovgalleryspacecraft

Bibliografia 136

[11] AAbourachid ldquoA new way of analysing symmetrical and asymmetrical

gait in quadrupedsrdquoCRBiologiesvol 326pag 625-630May 2003

[12] JAVilenskyJACook ldquoDo quadrupeds require a change in trunk posture

to walk backwardrdquoJournal of Biomechanicsvol33pag 911-916March 2000

[13] Oricom technology ldquoQuadruped Locomotion- Musing about running dogs

and othe 4-legged creaturesrdquo(httpwwworicomtechcomprojectslegshtm)

[14] RKurazumeKYoneda e SHiroseFeedforward and Feedback dynamic

trot gait control for quadruped walking vehicleAutonomous Robotsvol12

pag 157-1722002

[15] H Kimura I Shimoyama e H Miura ldquoDynamics in the dynamic walk of

a quadruped robotrdquo RSJ Advanced Robotics vol4 no3 pp283-301 1990U

(httpwwwkimuraisuecacjpfacultiesColliedynamic-walk-of-quadrupedhtml)

[16] M Raibert H Brown MA Chepponis EF Hastings S Murthy e FC

Wimberly ldquoDynamically Stable Legged Locomotion Second Report to

OARPArdquo Robotics Institute Carnegie Mellon University January 1983

(httpwwwaimiteduprojectsleglabrobotsquadrupedquadrupedhtml)

[17] MH Raibert M Chepponis and H Brown ldquoRunning on Four Legs As

Though They Were Onerdquo IEEE Journal of Robotics and Automation Vol

RA-2 No 2 June 1982 pp 70-82

[18] STalebiIPoulakakisEPapadopoulos e MBuehler ldquoQuadruped robot

running with a bounding gaitrdquoCenter for Intelligent MachinesMcGill

UniversityMontreal

[19] MA Lewis e LS Simo ldquoNeurocore Evolution Development and

Roboticsrdquo Sumitted to IROS 96 Osaka(httpuirvliaiuiucedutlewispicsgeoIIhtml)

[20] Y Fukuoka H Kimura e AH Cohen ldquoAdaptive Dynamic Walking of a

Quadruped Robot on Irregular Terrain based on Biological Conceptsrdquo Int

Journal of Robotics Research Vol22 No3-4 pp187-202 2003

[21] MA Lewis ldquoGait Adaptation in a Quadruped Robotrdquo Autonomous

Robot 2002 in PressIguana RoboticsInc

[22] httpwwwrobocuporg

Bibliografia 137

[23] httpwwwaibo-europecomdownloadsAIBO_Storypdf

[24] LSteel e FKaplan ldquoAibos first wordsThe social learning of language and

meaningrdquo Sony Computer Science laboratory Vub Artificial Intelligent

laboratory

[25] httpwwwopencaeczhwhw_sony-robot_aibohtml

[26] httpprojectspowerhousemuseumcomhscaiboteardownhtm

[27] M Piralli ldquoProgetto quadrupede Politecnico di Milanordquo 2004

[28] HITEC httpwwwhitecrcdcom file HS475HbpdfServomanualpdf

[29] Proprieta chimiche ldquopolicarbonatodocrdquo da

httpwwwedilportalecomedilcatalogo0EdilCatalogo_SchedaProdottoaspI

DProdotto=1897

[30] DCrespi e F Gandola ldquoScheda di interfacciamento per servomotorirdquo2004

[31] L Sciavicco e B Siciliano ldquoRobotica industriale ndash Modellistica e

controllo di Manipolatorirdquo EdMc-Graw-Hill seconda edizione 2000

[32] G Gini e V Caglioti ldquoRoboticardquo Ed Zanichelli 2003

[33] MFolgheraiter ldquoEsempi di cinematica direttainversardquoPolitecnico di

Milano Robotica 2004

[34] HElias ldquoInverse Kinematics - Improved Methodsrdquo2004

httpfreespacevirginnethugoeliasmodelsm_ik2htm

[35] JMinguez e LMontanoNearness Diagram (ND) navigationcollision

avoidance in troublesome scenariosIEEE Transaction on Robotics and

Automationvol 20NO 1 February 2004

[36] AArleoJRMillan e DFloreanoEfficient learning of variable-resolution

cognitive maps for autonomous indoor navigationIEEE Transaction on

Robotics and Automationvol 15NO 6 December 1999ruary 2004

[37] S Vigno ldquoAlgoritmo di Dijkstrardquo 2001

[38] EWDijkstra ldquoA note on two problem in connexion with graphsrdquo

Numeriche Mathematik 1269-271 1959

[39] U Scarfogliero ldquoProgettazione e sviluppo di un robot bipede a dodici

gradi di libertagrave con controllo elastico-reattivordquo Thesis 2004

Bibliografia 138

[40] PRoccoControlloimpedenzaPolitecnico di MilanoRobotica Industriale

2004

Appendice A

Appendice A 140

i Sensori nei robot a zampe disponibili sul mercato

Ersquo stata compiuta una accurata ricerca sui componenti che potrebbero

essere montati su ASGARD per migliorarne le abilitagrave e le reazioni con lrsquoambiente

esterno e su tecniche di utilizzo di semplici sensori per fornire feedback rilevanti

Tra i sensori presenti in commercio egrave stata effettuata una scrematura in

merito a efficienza peso ingombro e prezzo in quanto si ricorda la precaria

stabilitagrave del robot e il fattore sovvenzione scolastica

Forniremo dei principali sensori trovati anche una rapida descrizione del

funzionamento dello stesso per meglio comprendere le migliorie e le potenzialitagrave

che esso potragrave donare al nostro progetto

ii Dead Reckoning Stima della posizione

Dead reckoning deriva da ldquodeduced reckoningrdquo e consiste nellrsquoutilizzare

una procedura matematica per determinare la posizione istantanea di un robot a

partire dalla conoscenza dalle posizioni e velocitagrave precedenti lungo un certo

periodo di tempo Questo sistema ha ovviamente lo svantaggio di accumulare

errori della stima e per questo periodicamente la misura deve essere corretta con i

valori reali o con quelli forniti da qualche altro strumento Spesso la stima della

posizione viene chiamata odometria39[41]

Per fornire la posizione corrente possono essere utilizzate le seguenti

tipologie di sensori

39 Odometry

Appendice A 141

ii1 Encoder Ottici

Gli encoder ottici sono sensori che vengono utilizzati per effettuare misure

di rotazione Possono essere utilizzati sia per robot a ruote per misurarne la

velocitagrave di avanzamento sia per un robot con gambe per misurare lrsquoangolo di

rotazione degli arti artificiali

Si sono sviluppati due diversi tipi di encoder ottici encoder incrementali e

encoder assoluti

Gli encoder ottici incrementali servono principalmente per stabilire la

velocitagrave di rotazione mentre quelli assoluti forniscono istantaneamente lrsquoangolo

di rotazione

ii2 Encoder ottici incrementali

Gli encoder ottici incrementali sono formati da un disco routante solidale

con lrsquoasse di rotazione del sensore da un led e da due sensori ottici (tipicamente

due fotodiodi) Il disco egrave suddiviso in settori trasparenti e settori opachi Il numero

dei settori in genere egrave una potenza di 2 cioegrave 64128256 etc Il led emette una luce

sul lato del disco mentre i due fotodiodi la captano sul lato opposto Grazie alle

regioni opache si ha la possibilitagrave di vedere degli impulsi sul fotodiodo che

permettono di stabilire ad esempio la velocitagrave di rotazione ma non bastano ad

avere una indicazione sul verso della rotazione stessa Per sapere se la rotazione egrave

oraria o antioraria si egrave utilizzato un secondo fotodiodo collegato come in figura

Figura 75 Struttura encoder ottico

Appendice A 142

Come si puograve notare i due fotodiodi avranno unrsquouscita molto simile ma

sfasata causata dalle regioni opache del disco questo sfasamento ci permetteragrave di

capire il verso di rotazione

La velocitagrave di rotazione risulta essere proporzionale in modo inverso alla

larghezza degli impulsi in uscita

Questo tipo di encoder egrave molto economico tanto da essere utilizzato nelle

seconda metagrave degli anni novanta nei mouse da PC

Encoder ottico presente in commercio

ii21 EL30 E-H-I Eltra srl

Serie encoder miniaturizzati Oslash30 per applicazioni ove sia richiesto il

minimo ingombro possibile pur mantendo ottime prestazioni[42]

- Risoluzioni fino a 1000 impgiro con zero

- Varie configurazioni elettroniche disponibili con

alimentazioni fino a 24 Vdc

- Frequenza di esercizio fino a 100 Khz - Uscita

cavo eventuale connettore applicato alla fine del

cavo -

- Velocitagrave di rotazione fino a 3000 rpm - Grado di

protezione fino a IP54tensione di alimentazione 5 V

e peso di 50 g

Figura 76 Encode incrementale

EL 30 E-H-I

ii3 Encoder ottici Assoluti

Gli encoder ottici assoluti a differenza di quelli incrementali forniscono in

uscita direttamente una configurazione di bit che indicano la posizione angolare

Il dispositivo egrave composto di un disco suddiviso sempre in settori ma con

piugrave tracce una sorgente di luce e un numero di sensori di luce pari al numero di

tracce

Appendice A 143

Ad ogni traccia corrisponde un bit e ad ogni settore corrisponde un livello

Il numero di tracce e setori egrave scelto in modo da utilizzare tutte le combinazioni

possibili e quindi i livelli saranno traccenum2

Esistono perograve diversi modi per codificare ogni livello Il metodo piugrave

semplice egrave partire da 0 e incrementare di 1 il numero e utilizzare la normale

codifica binaria

Il sistema risulta essere rischioso quando due livelli consecutivi nella

codifica hanno piugrave di un bit diverso per questo motivo sono state introdotte

diverse codifiche come il codice Gray che riescono ad evitare cosigrave il problema

prima citato

Figura 77 Essempi di disco Figura 78 Struttura di rilevamento

Presenti sul mercato

ii31 Sensori ottici CORRSYS-DATRON

Tipologia a 2 assi (trasversalelongitudinale) per la misura accurata di

velocitagrave distanza percorsa angolo di imbardata[43]

S-CE con integrato giroscopio ottico Come versione S-CE ma con

incorporato un giroscopio a fibra ottica range 200degsec linearitagrave 02 1000 Hz

banda passante per avere maggiori info sul comportamento dinamico del veicolo

SL-R Ultralight Versione ultralight Racing del modello S-CE

SL 200 Sensore ottico biassiale per la misura senza scivolo di dinamiche

trasversali su larghe gamme di funzionamento Il sensore SL-200 egrave caratterizzato

da dimensioni ridottissime (ultra piatto) e per la possibilitagrave di installazione su

piccoli veicoli

Appendice A 144

La serie di encoder assoluti multigiro paralleli EAM[42] sono stati studiati

precisioni anche su esteso sviluppo lineare

sono disponibili con risoluzioni fino a 13 bit e quindi 8192 PosizioniGiro sul giro

e fino

ii32 EAM Parallelo-SSI Eltra srl

per applicazioni che richiedono alte

a risoluzioni di 12 bit 4096 Posizionigiro per i giri Le configurazioni di

uscita sono sia a codice gray che binario e le elettroniche di uscita coprono tutti i

campi di applicazione essendo disponibili in formato NPN NPN OPEN

COLLECTORPNP e PUSH PULL

Figura 79 Encoder assoluto EAM Parallelo ndashSSI

ii4 S

Sensori di grande utilitagrave per la localizzazione di oggetti presenti

un robot sono sensori che sfruttano lrsquoeffetto Doppler

Largamente utilizzati in ambito marino e aeronautico essi misurano la velocitagrave

del me

ensori Dopler

nellrsquoambiente di azione di

zzo in riferimento alla posizione del suolo Lrsquoeffetto doppler si basa sul

principio di funzionamento dello shift di frequenza unrsquoonda che viene ricevuta o

riflessa da una sorgente che si muove rispetto al mezzo In ambito terrestre le

onde spedite e ricevute sono microonde sonore

Appendice A 145

In relazione alla figura riusciamo ricavare le seguenti regole di

funzionamento

αα cos2cos O

DDA F

cFVV ==

Dove

AV = velocitagrave del terreno

DV = misura della velocitagrave tramite il sensore

α = angolo di declinazione

c = velocitagrave della luce

= scostamento in frequenza per effetto Doppler DF

OF = Frequenza emessa

La difficoltagrave di utilizzo di questo sensore diventa consistente nellrsquoutilizzo

su robot mobili in terreni accidentali in quanto gli spostamenti verticali

influiscono sulla misura di e sulla stima di DV AV

Appendice A 146

ii41 Robot Italy SRF04

Figura 80 Sensore SRF04

LSRF04 [44] e un sensore ad

ultrasuoni che unisce delle ottime

prestazioni ad un costo veramente

conveniente utilizza una tecnologia a

ultrasuoni molto semplificata

Questo sensore e dotato di un

microcontrollore che assolve tutte le

funzioni di calcolo ed elaborazione e

sufficiente inviare un impulso e leggere

leco di ritorno per stabilire con facilita

la distanza dellostacolo o delloggetto

che si trova davanti

iii Heading Sensor

Tramite lrsquoutilizzo di questi sensori si riesce in parte a compensare parte le

carenze di odometria Attraverso la stima della posizione ogni piccolo errore si

sommeragrave al precedente nella stima della posizione provocando uno scostamento

via via crescente tra la posizione reale e quella stimata Ersquo di grande aiuto

individuare immediatamente e correggere alcuni di questi errori

iii1 Giroscopio meccanico

Il giroscopio meccanico basato sulla ldquoinerziona di un rotorerdquo egrave conosciuto

giagrave dai primi del 1800 Il primo giroscopio fu costruito in germania 1810 da GC

Bohnenberger Nel 1852 il celebre francese L Foucault mostrograve che il giroscopio egrave

Appendice A 147

in grado di percepire la rotazione terrestre Essa puograve essere scomposta in due

componenti lungo un immaginario asse verticale e lungo un asse tangente alla

superficie Al polo la componente verticale saragrave di 15degora e spostandosi verso

lrsquoequatore diminuiragrave fino ad annullarsi Come per gli encoder ottici anche per i

giroscopi esistono due metodologie per fornire mediante una tensione o una

frequenza lo spostamento istantaneo o lrsquoangolo assoluto di rotazione

Figura 81 Giroscopio meccanico

Vediamo come funziona un giroscopio meccanico il rotore pilotato

elettricamente egrave sospeso ai propri assi da una coppia di cuscinetti con attrito

bassissimo I cuscinetti a loro volta sono montati su un anello ruotante chiamato

anello di sospensione interna (inner gimbal ring) Questo anello gira a sua volta

allrsquointerno di un altro anello (outer gimbal ring) La rotazione dellrsquoanello interno

definisce lrsquoasse x del giroscopio che egrave perpendicolare con lrsquoasse di rotazione del

rotore lrsquoanello esterno definisce lrsquoasse verticale del giroscopio In questa struttura

egrave da notare come lrsquoasse orizzontale saragrave allineato con il meridiano in questo modo

si potragrave calcolare la rotazione orizzontale e verticale in funzione a quella terrestre

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice

FT445533

Nuovo regolatore di giri con la piugrave moderna tecnica microprocessore con

Display LC ad 8 posti Il regolatore di giri GV ndash1 [45] mantiene la testa del rotore

Appendice A 148

in sistema di giri costante Cosigrave diventa possibile un movimento piugrave preciso e

sensibile

Al contrario di altri regolatori il GV-1 controlla anche il numero di giri del

motore Una curva a 3 punti regolabile permette la prescrizione del numero dei

giri tramite un commutatore a tre scatti oppure un canale proporzionale Nel

display viene indicato a scelta il numero di giri del motore o del rotore dove viene

memorizzato il numero di giri massimale e richiamabile in qualsiasi momento

Questo modello risulta compatibile con i servo da noi utilizzati

Programmi

bull Indicazione del numero di giri (rotore oppure

motore)

bull Memoria del numero di giri massimale

bull Messa a punto del rapporto di riduzione

bull Regolazione del punto di attivazione e

disattivazione

bull Impostazione del campo di regolazione del

numero di giri

bull Impostazione del numero di giri massimale

bull Automatica disattivazione a partire

dallacuteimpostazione del numero di giri

bull Messa a punto di una curva di regolazione a tre

punti

bull Messa a punto 3D

bull Curva di messa a punto miscela a 9 punti

bull Test magnetico con indicazione del campo

intensitagrave

bull Misurazione della tensione di batterie

bull Allarme di bassa tensione

bull Messa a punto del servo di gas ATV

Caratteristiche Tecniche

Dimensioni Regolatore 56x305x16 mm

Dimensioni Sensore oslash 10 x 16 (27) mm

Peso Regolatore 34 g

Peso Sensore 4 g

Alimentazione 38 ndash 6 V

Campo di regolazione da 1000 a 21000

girimin

Figura 82 Futaba regolatore di giri

GIVERNOR GV-1

Appendice A 149

iii12 Futaba Giroscopio FP GY 240 AVCS

Grazie allrsquoutilizzo congiunto del nuovo sensore SMM40 e della nuova

tecnica di interruttore altamente integrata SMD41 la Futaba egrave riuscita a costruire

un giroscopio di soli 25g con dimensioni decisamente contenute 27 x 27 x 20

mm

Nonostante questa minima dimensione il giroscopio egrave equipaggiato sia

con il modulo normale che quello AVCS (Heading Hold)[46]

Oltre ai vantaggi rappresentati dalle dimensioni e dal peso questo sensore

non presenta alcuna deriva dovuta alla temperatura ed egrave ampiamente insensibile

alle vibrazioni ed ai colpi

Grazie ad una elaborazione puramente digitale del segnale questo

giroscopio reagisce molto rapidamente

Caratteristiche tecniche Dimensioni

27x27x20 mm PesoWeight

25 g Alimentazione

3-6 V Temperatura d`esercizio

-10degC +50degC Figura 83 Giroscopio FP GY 240 AVCS

iii2 Giro-bussola

Questo dispositivo integra le funzionalitagrave del giroscopio e della bussola per

individuare il Nord Lrsquoindividuazione del nord egrave importante percheacute lrsquoasse di

rotazione del rotore egrave orientato lungo un meridiano lrsquoasse orizzontale del

giroscopio non risente della rotazione terrestre La direzione e lrsquointensitagrave della

40Silicon Micro Machine misure laser posizioni 41 Standar ISO9000

Appendice A 150

misura dipende dallo scostamento tra lrsquoasse del rotore e la direzione dellrsquoasse

terrestre

iii3 Giroscopio-Girobussola a fibre ottiche

Il principio su cui si basa il funzionamento dei giroscopi ottici fu scoperto

dal fisico francese Sagnac nel 1913 ed ha trovato inizialmente una sua

applicazione nella costruzione di interferometri e successivamente nei giroscopi

laser ad anello chiuso (RLG Ring Laser Gyro) Tale principio consiste nello

sdoppiare un unico raggio luminoso in due diversi raggi che viaggiano su un

medesimo percorso ottico ad anello chiuso ma in direzioni opposte un raggio

ruota in senso orario e lrsquoaltro in senso antiorario

Figura 84 Schema di principio di un giroscopio laser ad anello

Nei giroscopi RLG[47] i raggi rimbalzano fra vari specchi come mostrato

in Figura 83 nei giroscopi FOG (a fibre ottiche) i raggi scorrono dentro un fascio

di fibre ottiche lungo anche 5 Km ed avvolte in spire del diametro di alcuni

centimetri

Appendice A 151

Quando un raggio si propaga la sua fase cambia continuamente con la

distanza L percorsa e precisamente di 2π radianti per ogni tratto pari alla

lunghezza drsquoonda λ si ha pertanto

λπα L2

=

con λ = c f dove f egrave la frequenza del raggio luminoso e c egrave la velocitagrave

della luce

Nel caso in cui il giroscopio sia fisso rispetto ad un sistema inerziale i due

raggi percorrono lo stesso cammino anche se in direzioni opposte arrivando nel

ricevitore con la stessa fase Diversa egrave la situazione in cui lrsquointero sistema ruota

attorno ad un asse passante per O (asse sensibile del giroscopio) e con velocitagrave

angolare Ω in tal caso il percorso del raggio concorde con il verso di rotazione

tende ad allungarsi mentre quello dellrsquoaltro raggio tende ad accorciarsi per cui la

differenza di fase Φ dei segnali che arrivano nel ricevitore non egrave piugrave nulla ma

assume la seguente espressione

Ω=∆=Φλ

παcLD2

Dove

L = lunghezza del percorso ottico o delle fibre ottiche nei FOG

D = diametro del percorso o della bobina nei FOG

Ω = velocitagrave angolare del giroscopio attorno al suo asse sensibile

Il fattore davanti alla velocitagrave angolare Ω egrave chiamato fattore di scala ed egrave

un indicatore della sensibilitagrave dello strumento piugrave egrave alto tale fattore piugrave lo

strumento egrave in grado di misurare velocitagrave angolari molto basse come ad esempio

nel caso di quella terrestre Come si vede il fattore dipende dai dati geometrici del

percorso ottico e precisamente nel caso dei FOG dalla lunghezza delle fibre

Appendice A 152

ottiche e dal diametro delle spire Analizzando la precedente espressione si

comprende come a paritagrave di volume i giroscopi a fibre ottiche (FOG) siano molto

piugrave sensibili dei giroscopi laser (RLG)

Figura 85 Schema tipico di un giroscopio a fibre ottiche

iii31 La funzione giroscopica

Il FOG non egrave in grado da solo di indicare la direzione del nord come nei

normali giroscopi di tipo meccanico con sospensione cardanica esso egrave soltanto in

grado di misurare la componente della velocitagrave angolare terrestre lungo il suo asse

di sensibilitagrave

Per ottenere la funzione orientamento desiderata si montano tre giroscopi

disposti lungo una terna di assi cartesiani X Y e Z che puograve coincidere con i tre

assi del robot per definire il piano orizzontale si impiegano inoltre due sensori di

livello La tecnologia utilizzata egrave nota come strapdown ossia con i giroscopi

montati rigidamente su un piano fisso costantemente orientato e parallelo rispetto

ad un piano di riferimento come nella navigazione inerziale di tipo tradizionale

Nel caso di oggetto fermo lrsquounica velocitagrave angolare a cui esso risulta essere

soggetto egrave quella terrestre per cui i tre giroscopi misurerebbero le seguenti

componenti

Appendice A 153

yTx CosPCosϕρρ =

yTy SinPCosϕρρ minus=

ϕρρ Sinz T=

dove egrave facile calcolare lrsquoangolo di prova nel caso siano note la velocitagrave

ρ

yP

Τ e la latitudine ϕ

Nel caso di moto con velocitagrave VN si ha una velocitagrave angolare

supplementare pari a VNRT diretta lungo -y (RT egrave il raggio della Terra) A questa

velocitagrave si sommano inoltre altre velocitagrave angolari continuamente variabili

dovute ai moti attorno ai suoi tre assi e precisamente i moti di rollio di

beccheggio e di imbardata

yyTx CosPCos ρϕρρ +=

oT

NyTy R

VSinPCos ρϕρρ ++minus=

aT Sinz ρϕρρ +=

In realtagrave il problema viene risolto definendo inizialmente alla partenza un

sistema cartesiano di riferimento con gli assi X0 e Y0 situati nel piano orizzontale

e lrsquoasse Z0 che coincide con la verticale In tale situazione i segnali provenienti

dai sensori di livello devono essere nulli

Durante la camminata la continua misura delle tre velocitagrave angolari e

dellrsquoassetto del robot mediante i sensori di livello consentono di definire lrsquoesatto

orientamento della terna cartesiana T (X Y e Z) rispetto alla terna di riferimento

iniziale T0 (X0 Y0 e Z0) Un opportuno calcolatore provvede a convertire gli

Appendice A 154

angoli di sfasamento dovuti allrsquoeffetto Sagnac nelle corrispondenti velocitagrave

angolari integrando le velocitagrave si ottengono gli angoli

dta iii int+=+ ρα1

da cui egrave poi possibile ricavare gli angoli di rollio di beccheggio e di

imbardata Ogni ciclo di calcolo deve avere una durata molto breve inferiore

normalmente al tempo impiegato dai segnali luminosi a percorrere la bobina di

fibre ottiche (∆t = Lc = 3 nsec per L = 1 m)

iii4 Giroscopio piezoelettrico

Utilizzano la forza di Coriolis per misurare la velocitagrave di rotazione

montando tre trasduttori piezoelettrici su un prima triangolare Se uno dei sensori

egrave eccitato alla sua frequenza di risonanza la vibrazione prodotta verragrave percepita in

eguale misura dagli altri due sensori Quando il prisma viene ruotato lungo il suo

asse longitudinale la forza di Coriolis risultante causeragrave una piccola differenza

nellrsquointensitagrave di vibrazione percepita dai due trasduttori la variazione di tensione

risultante egrave direttamente e linearmente proporzionale alla velocitagrave di rotazione

Appendice A 155

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03

Giroscopio miniaturizzato[44] 26x27x11mm per 7grammi di peso Puo

essere utilizzato per bilanciare o per compensare spostamenti indesiderati di

walkers e rover Utile anche per rilevare spostamenti

Figura 86 Modello GWS PG-03 Robot Italy

iii42 Giroscopio Piezoelettrico Enc-03ja

Ersquo componente elettronico di solo 21mm x 8mm[48] Ersquo in grado di

rilevare i cambiamenti nella rotazione pur essendo ultra-piccolo ultra-leggero

con una ultra rapida-risposta e a basso costo Usa il fenomeno della forza di

Coriolis per rilevare i cambiamenti nella velocitagrave angolare di rotazione

Limitazione le girobussole hanno una lettura massima di 300 gradi al secondo e

richiederanno la calibratura

Figura 87 Giroscopio Enc-03ja

Appendice A 156

iv Sensori geomagnetici

Nella stima della posizione inevitabilmente esistono degli errori e questi

vengono misurati durante il tempo e quindi egrave molto importante poter disporre di

una misura assoluta e poter compensare o correggere appunto questi errori

Il piugrave comune sensore di questo tipo egrave la bussola magnetica La

terminologia usualmente utilizzata per misurare un campo magnetico egrave la densitagrave

di flusso magnetico B misurata in Gauss(G) Altre unitagrave di misura sono la Tesla

(T) e gamma (γ ) dove 1 Tesla = Gauss = Gamma Lrsquointensitagrave media del

campo magnetico terrestre egrave 05 G e puograve essere rappresentato come un bipolo che

fluttua sia nel tempo che nello spazio situato a 440 chilometri dal centro e

inclinato di 11deg dallrsquoasse di rotazione terrestre Questa differenza tra il polo

magnetico e il polo terrestre egrave conosciuta come declinazione e varia in funzione

del tempo e della posizione geografica

410 910

I dispositivi che misurano i campi magnetici sono detti magnetometri Per

applicazioni su robot mobili i magnetometri piugrave utilizzati si dividono nelle

seguenti famiglie

bull Bussola magnetica meccanica

bull Bussola a effetto Hall

bull Bussola a magnetoreversiva

Prima di analizzare da vicino ogni singola famiglia va precisato un

problema molto importante il campo magnetico terrestre egrave spesso distorto nelle

vicinanze di strutture metalliche questo rende difficile lrsquoimpiego di tali sensori

allrsquointerno di edifici Tuttavia questo problema egrave possibile aggirarlo utilizzando

con essi ulteriori sensori

Appendice A 157

iv1 Bussola magnetica meccanica

La prima traccia nellrsquouso della bussola risale al 2634 AC Dal XIII secolo

utilizzata in tutto il mondo in campo marittimo W Gilber [1600] fu il primo ad

esporre teorie riguardanti campi magnetici presenti sulla superficie terrestre

Le prime bussole marine consistevano in aghi magnetizzati che

fluttuavano su pezzetti di sughero immersi in acqua Questo dispositivo egrave stato

raffinato fino ad arrivare oggi giorno ad essere composto da un paio di magneti

attaccati ad un disco graduato fluttuante in una composizione di acqua alcol e

glicerina

Lrsquoerrore tra nord magnetico e nord geografico egrave conosciuto come

deviazione della bussola

decdevit CFCFHH plusmnplusmn=

Dove

tH = Direzione giusta

iH = Direzione misurata

devCF = Fattore di correzione per la deviazione della bussola

decCF = Fattore di correzione per la declinazione magnetica

Unrsquoaltra fonte potenziale di errore consiste nel dip magnetico42 dovuto alla

componente verticale del campo magnetico terrestre Questo effetto varia in base

alla latitudine possiamo affermare che le linee di forza che agiscono sono

orizzontali allrsquoequatore e verticali ai poli Per questo motivo sugli aghi delle

bussole a volte sono montati dei pesetti che pessono essere spostati al fine di

contrastare questo effetto

42 Magnetic dip

Appendice A 158

iv2 Bussola a effetto Hall

I sensori ad effetto Hall sono basati sulle osservazioni di Hall(1979) che un

conduttore e un semiconduttore immersi in un campo magnetico mostrano una

differenza di potenziale ai loro capi Il vantaggio di questi sensori egrave la possibilitagrave

di misurare il flusso in modo statico I primi sensori costruiti avevano una

sensibilitagrave e una stabilitagrave paragonabile a quella dei fluxgate43 ma negli ultimi anni

egrave migliorata fino a raggiungere i Gauss e oltre Giagrave nei primi anni 60rsquo la

Marina mostrograve interesse a questo tipo di sensori e la Motorola costruigrave un certo

numero di prototipi per valutarne le potenzialitagrave La bussola della Motorola

montava due sensori ad effetto Hall per limitare gli effetti dovuti alle variazioni di

temperatura Ogni sensore era formato da una barretta di ferro- indio- arsenico di

2 x 2 x 01 millimetri inserito in un concentratore di flusso come si vede in Figura

87

310 minus

Il concentratore di circa 5 cm incrementava la densitagrave di flusso attraverso il

sensore di due ordini di grandezza [Willey 1964] lrsquouscita di tale dispositivo egrave un

treno di impulsi ad ampiezza variabile in cui lrsquoampiezza appunto egrave proporzionale

al valore misurato Fu riscontrata una buona linearitagrave fino a densitagrave di flusso di

0001 Gauss[Willey 1962]

Figura 88 Una coppia di sensori Hall (Lega di Indio-Ferro-Arsenico)

Maenaka allrsquouniversitagrave di tecnologia di Toyohashi in giappone sviluppograve

un sensore al silicio basato su due sensori Hall montati in disposizione ortogonale

43 Bussola fluxgate sfutta campi magnetici generati da spire azionati da corrente continua

Appendice A 159

Purtoppo i risultati di questo esperimento non furono dei migliori in

quanto il sensore costruito forniva un sensibilitagrave di 1 Gauss e il campo terrestre va

da 01 Gauss allrsquoequatore fino a 09 ai poli Di notevole interesse rimane per

lrsquoessere interamente costruito in un integrato e quindi lo rende molto pratico e di

elevato interesse commerciale

iv21 1490 Digital Compass Sensor

Questo sensore[49] fornisce informazioni su scostamenti in otto direzioni

misurando il campo magnetico della terra usando la tecnologia ad effetto Hall Il

sensore 1490 internamente egrave destinato per rispondere a cambiamento direzionale

simile ad una bussola riempita liquida Rinvieragrave al senso indicato da uno

spostamento di 90 gradi in circa 25 secondi senza overswing I 1490 possono

funzionare inclinato fino a 12 gradi con lerrore accettabile Egrave connesso facilmente

a circuiti digitali ed i microprocessori

Caratteristiche Specifiche Alimentazione 5-18 volt di CC 30 mA Uscite Apra il collettore NPN affondi 25 mA per il senso Peso 225 grammi Formato un diametro da 127 millimetri alto 16 millimetri Perni 3 perni da 4 lati sui centri del 050 Temperatura -20 - +85 gradi di C

Figura 89 1490 DCS

iv3 Bussola a magnetoreversiva

Questa tipologia di sensori egrave molto interessante per il range di sensibilitagrave

che coprono ad anello aperto che va da a 50 Gauss e coprono quindi

interamente la regione interessata del flusso terrestre Ad anello chiuso hanno un

210 minus

Appendice A 160

sendibilitagrave approssimativamente di Gauss [Lenz 1990] Presentano

ulteriormente un basso assorbimento di potenza piccole dimensioni che li

posizionano tra i primi posti nella scelta di componenti

610 minus

iv31 Philips bussola AMR

Uno dei primi sensori magneto resistivi impiegati per realizzare una

bussola magnetica egrave il KMZ10B costruito dalla Philips[50] Semiconductors nel

1996 La sensibilitagrave di questo dispositivo (approssimativamente 01 mVAmcon

alimentazione di 5 V DC) comparata con il campo magnetico terrestre massimo

implica che devono essere presi con molta considerazione gli errori dovuti alla

variazione della temperatura e alle variazioni di offset[Patersen1989]Un sistema

per ovviare a questi inconvenienti egrave utilizzare lrsquoeffetto flipping44

iv4 Bussola magnetoelastica

Utilizzare materiali magneto-elastici come materiali fondamentali di

sensori in campo magnetico ad alta precisioneIl principio su cui si basano questa

famiglia di componenti egrave la variazione del modulo di Young[51] in leghe

magnetiche quando introdotte in campo magnetico esternoIl modulo di elasticitagrave

di un materiale egrave semplicemente misurato come

εσ

=E

Dove

E = Modulo di elasticitagrave

σ = Tensione applicata

44 Flipping phenomenon non trattato in questa discussione

Appendice A 161

ε = Deformazione risultante

Se la tensione applicata rimane costante la deformazione egrave inversamente

proporzionale al modulo di elasticitagrave In alcune leghe E egrave molto pronunciato

questo permette al campo magnetico di essere accuratamente determinato

misurando la variazione di lunghezza di una lega opportunatamente sollecitata da

una forza costante Esistono due tecnologie che permettono di realizzare sensori

economici e molto precisi

bull Interferometric

bull Tunneling-trip

iv41 Metglas 2605S2

Metglas[52] egrave una lega di ferro boro silicio e carbonio Il sensore egrave

costituito da un nastro della lega che in presenza di campo magnetico esterno

mostra un certo allungamento (analisi sul nastro di vetro metallico sono avvenute

al laboratorio di SERC Rutherford Appleton) I dati di riflettivitagrave sono stati

analizzati le misure forniscono modelli che hanno permesso una valutazione del

profilo di magnetizzazione vicino alla superficie del nastro In Figura 89 egrave

mostrato il circuito utilizzato per misurare la variazione di lunghezza

dellrsquoelemento magnetoresistivo

Figura 90Circuito per misurare lrsquoallungamento delle striscia magnetoresistiva

Appendice A 162

v Sensori per la modellizzazione dellrsquoambiente

Molti sensori per mappare ambienti interni sono sensori di distanza per

questo motivo verranno esposti in questo testo alcuni tra i piugrave conosciuti

vi Sensori di distanza

Esistono differenti approci per ottenere questo tipo di misura

bull Sensori basati sul tempo di volo (TOF45) di un impulso di energia

emesso che si propaga e che viene riflesso dallrsquoostacolo

bull Sensori basati sulla differenza di fase introdotta sempre nella

riflessione di un segnale ma non impulsivo

bull Sensori basati su radar a modulazione di frequenza

vi1 Sensori basati sul tempo di volo

Il funzionamento consiste nel misurare il tempo di volo di un senale da un

trasmettitore al ricevitore il percorso effettuato mentre il tempo di percorrenza

risulta esserecdT 2

=∆ dove c egrave la velocitagrave della luce

In robotica la velocitagrave della luce non riesce a trovare applicazioni pratiche

e trovano utile impiego le onde acustiche la cui velocitagrave di propagazione egrave

v=340ms I vantaggi che si trovano dallrsquoutilizzo di questo metodo sono che

emettitore e ricevitore possono essere lo stesso oggetto e che le superfici non

devono presentare particolari requisiti Gli svantaggi possono essere fronti di

salita imprecisi durante lrsquoemissione lrsquoattenuazione della radiazione riflessa che

45 Time of Fly

Appendice A 163

puograve essere influenzata da rumore lrsquoinaccuratezza nel circuito che serve a misurare

il tempo e la possibile variazione della velocitagrave di propagazione soprattutto con

onde sonore Il cono di emissione inoltre non ci permette di rilevare la forma

dellrsquooggetto Quando lrsquoonda si riflette su un oggetto si ha un fenomeno chiamato

crosstalk Utilizzando diverse misurazioni con treni di impulsi si riescono ad

avere stime abbastanza precise sullrsquooggetto riuscendo ad arrivare ad avere

precisione anche di 25 mm da una distanza di 30 cm

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502

Campo di misura tra 30 cm e 5 metri[53]

Caratteristiche

- Campo di misura tra 30 cm e 5 m (MS 6502)

-Campo di misura tra 15 cm e 10 m ( MS 6001)

-Alimentazione singola tra 75V e 15V - Gestione degli Echo multipli

- Possibilitagrave di fissaggio del sensore direttamente al circuito stampato

- Sistema di connessione MODU II - Uscita open collector

-Protezione dallrsquoinversione di polaritagrave

Figura 91 Piedinatura modello MS

6501

Figura 92 Sonar Modello MS 6501

Figura 93 Sonar Modello MS 6502

Appendice A 164

Il modulo sonar egrave un dispositivo di basso costo con il quale egrave possibile

gestire direttamente i sensori elettrostatici Polaroid per effettuare misure di

distanza Gli impulsi ad ultrasuoni sono a 499 KHz per entrambi i modelli e

vengono prodotti da un quarzo funzionante alla frequenza di 420 KHzI moduli

soso dotati di un ingresso di inibizione esterna con il quale egrave possibile

unrsquoesclusione selettiva di alcuni echo in modalitagrave di funzionamento echo multiplo

Con il dispositivo proposto egrave possibile distinguere echo di ritorno tra due oggetti

distanti 75 cm circa

Figura 94 Struttura del Mdulo Sonar

Vi sono due modalitagrave di funzionamento del sonar echo singolo e echo

multiplo

Nella funzionalitagrave ad echo singolo la gestione consite nel portare basso il

valore di INIT spedire le onde ultrasoniche e attendere la ricezione del segnale di

echo il tempo tra quando si egrave reso basso il senale di INIT e quello in cui diventa

basso ECHO indica il tempo di volo impiegato per raggiungere il target Ersquo

conveniente attendere circa 80 ms tra una spedizione e lrsquoaltra per evitare onde

ultrasoniche ancora presenti nellrsquoambiente

Nella funzionalitagrave multiplo dopo che si pone basso INIT il trasduttore

viene pilotato da 16 impulsi a frequenza 499 KHz (MS 6501) o 45 KHz (MS

Appendice A 165

6502) e di ampiezza variabile per modello (MS6501 400VMS6502 100V) ciograve

comporta lrsquoinvio di un pacchetto di onde ultrasoniche che si propagano nello

spazio Al fine di evitare lrsquoassestamento del trasduttore (fenomeno ringring) esso

viene oscurato in ricezione per 238 ms Queste tempistiche rendono possibile

lrsquoindividuazione di oggetti a distanza di 40 cm che corrispondono a tempo di volo

di 238 ms

Figura 95 Modalitagrave di funzionamento a

eho singolo

Figura 96 Modalitagrave di funzionamento a

echo multiplo

vi2 Sensore telemetro a sfasamento

Il sensore si basa sul seguente principio si separa lrsquoonda emessa in due

parti una incide lrsquooggetto e torna indietro la seconda viene riflessa su uno

specchio di cui si conosce la posizione Si calcola la differenza temporale tra le

due onde Essendo noto il cammino ottico della luce riflessa dallo specchio si egrave in

grado di determinare il cammino ottico incognito In robotica si misurano distanza

dellrsquoordine di qualche metro quindi lrsquoonda laser emessa λ egrave dellrsquoordine del metro

vi21 LIDAR lsquoLight detection and Rangingrsquo

Utilizzi molto rilevanti in questo tipo di acquisizione dati ci vengono

forniti da progetti NASA per la struttura della morfologia terrestre in particolare

in progetti DSM e DTM (Digital Surface Model e Digital Terrain Model)[54] Si

Appendice A 166

dispone di un raggio lasee di cui si analizza lrsquoecho e la distorsione conoscendo la

velocitagrave di propagazione Le misura proposte vengono elaborate per creare

coordinate 3D Dopo aver puntato su zone giagrave conosciute mediante comunicazioni

con GPRS il sistema scansiona la zona ignota per estrapolare per comparazione i

nuovi valori effettuando una misura di sfasamento tra lrsquoonda modulata emessa e

quella rientrante Analizzando opportunamente lrsquointensitagrave della luce riflessa si

potranno anche dedurre informazioni sulla tipologia del materiale analizzato

Figura 97 Esempio di acquisizione LIDAR

vi3 Triangolazione

Uno dei metodi piugrave semplici utilizzati Il soggetto egrave illuminato da uno

stretto fascio di luce che scandisce la superficie Il movimento di scansione

avviene sul piano definito dalla linea che va dallrsquooggetto al rilevatore e dal

rilevatore alla sorgente Il rilevatore egrave focalizzato su una limitata porzione di

superficie quando il rilevatore vede un piccola macchia di luce la sua distanza d

dalla superficie illuminata viene calcolata con un semplice calcolo geometrico

Appendice A 167

i

sdαtan

=

Dove

iα = angolo tra la sorgente e la linea della base

angolo di massima intensitagrave

s = distanza tra la sorgente e il rilevatore

Questo fornisce la misura di un punto se il sistema sorgente rilevatore

viene mossa su un piano egrave possibile ottenere un insieme di punti facilmente

trasformabili in coordinate tridimensionali che caratterizzano la struttura

dellrsquooggetto esaminato

Appendice A 168

vi31 IFELL Laser e Sistemi Srl

Modello[55] Caratteristiche principali

Figura 987 Serie LK

bull Campi di misura fino a 500 mm bull Tecnologia di fotorivelazione con

CCD Micropunto di lettura (fino a 30 micron)

bull Protezione IP-67 (solo teste) bull Insensibilitagrave alle variazioni di colore bull Elevata precisione anche su materiali

otticamente difficili bull Uscita analogica

Figura 99 Serie ODS

bull Campi di misura fino a 2000 mm bull Tecnologia di fotorivelazione con CCDbull Amplificatore integrato bull Protezione IP-65 bull Uscita analogica e digitale RS-232 bull Ingressouscita di sincronizzazione bull Esecuzione speciale per materiali

trasparenti

Figura 100 Serie M5

bull Campi di misura fino a 400 mm bull Tecnologia di fotorivelazione con PSD bull Protezione IP-64 (solo teste) bull Uscita analogica e digitale (opzione) bull Ingressouscita di sincronizzazione bull Comparatore integrato

Informazioni sui produttori

[41] G Arlanch ldquoSviluppo di un simulatore per il controllo dellrsquoandatura di un

quadrupederdquoThesis 1997

[42] httpwwweltrait

[43] httpwwwcorrsysdatronithomehtml

[44] httpwwwrobot-italycomproduct_infophpproducts_id

[45] httpwwwfutaba-rccomradioaccysfutm1001html

[46] httpwwweuroshop2000itcat159html

[47] MBertolini ldquoGirobussole a fibre otticherdquo ITN Viareggio

[48] httpwwwgyroscopecom

[49] httpwwwdinsmoresensorscom1490spechtm

[50] Philips ldquoKMZ10B Magnetic field sensorrdquo Data sheet 1998

[51] JP Sinnecker ldquoMateriaia magneticos doces e materiaia ferromagneticos

amorfosrdquo Reviat brasileira de Fisicavol 222000

[52] K Ivison N Cowlam MRJ Gibbs J Penfold e C Shackleton ldquoUna

misura diretta della magnetizzazione di superficie di un vetro metallico

ferromagneticordquo Edizione 23 (Il 12 Giugno 1989)

[53] Blautron ldquoModulo sonar 6501pdfrdquo ldquoModulo sonar 6502pdfrdquoItaly 2002

[54] V Adorno ldquoIl DTM e il DSM ad alta risoluzionela tecnologia laser

scanner e lrsquoutilizzo del Lidarrdquo Naturaltech

[55] wwwifelliti_sens_triangi_sens_trianghtm

Appendice B

Appendice B 171

i Manuale drsquouso

Per permettere una rapida visualizzazione dei risultati da noi trovati viene

fornito allrsquoutente un menugrave principale di scelta in cui puograve richiamare le funzioni

generate

Lrsquoutente richiameragrave direttamente dal promt di Matlab la funzione

start_asgrad(x) passando come parametro x un intero da o a 5Ad ognuno di

questi numeri corrisponderagrave una funzione

1 = visualizzazione della differenza tra passo in andatura quasi-stabile e

quasi-dinamica grafica del passo e proiezione del convex hull

2 = calcolo della cinematica e visualizzazione degli errori(in

start_asgradm posso modificare direttamente i valori delle variabili decisionali in

merito alla cinematica inversa)

3 = visualizzazione dei grafici riguardanti la forza e la torsionesui giunti

scegliendo nella funzione stessa il numero di frame da considerare

4 = generazione del movimento in un ambiente noto (per settare i

parametri riferiti allrsquoambiente bisogna modificare il file initm prima dellrsquoavvio

del programma)

5 = permette il movimento reale del robot quadrupede del politecnico di

Milano Questa funzione puograve essere richiamata dopo una serie di accorgimenti per

istaurare un corretto canale di comunicazione (collegare la porta seriale o il

convertitore USB-Seriale e accertarsi che la porta sia denominata COM 1 con

velocitagrave di trasferimento di 14400 bitsec)

Appendice B 172

ii Codice generato

ii1 Menu principale

FUNZIONE START_ASGARD funzione che avvia lesecuzione di tutto il programma permettendo allutente di selezionare la parte di analisi da visualizzare parametri in input val_scelta=valore di scelta 1= confronto passo quasi-staticoquasi-dinamico 2= studio cinematico 3= analisi dinamica 4= scelta del percorso(si ricorda che prima di sceglire questa opzione si devono settare i parametri nella funzione init per la descrizione dellambiente 5= collegamento diretto al robot fisico Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [] = start_asgard(val_scelta) if(val_scelta==1) richiamo della funzione passo_STATICO clearpulizia dello workspace end if(val_scelta==2) angoli_motori2richiamo generatrice angoli da inviare ai motori settaggio parametri funzione met=2 incr=25 g=1 cinematica(ja(28)metincrg) clear end if(val_scelta==3) fr=10setto numero di frame richiamo della funzione NW_EU clear end if(val_scelta==4) richiamo della funzione ambiente_prova

Appendice B 173

clear end if(val_scelta==5) angoli_motori2richiamo generatrice angoli da inviare ai motori n=1inizializzazione numero passi richiamo della funzione camminata_stat clear end

ii2 Confronto andatura quasi-stabile vs quasi-dinamica

FUNZIONE PASSO_STATICO Funzione che permette la comparazione tra il passo statico e il passo quasi-dinamicomostrando per ogni animazione la proiezione del centro di massa e il poligono di appoggio definizione tempistiche per movimento zampa frame=6 definizione punto vista X= 0(090)dallalto Y=90110120)angolata definizione tempo int=1(frame-1) t = [0int1] inizializzazione della figura figure(NamePasso StaticoNumbertitleoff) view(XY) richiamo inizializzazione robot init_robot DB_position posizioni zampe poszero=[0 0 0 0 0 0]posizione impressa nella pic pos_base_A=[0 0 0 -pi4 (-pi4) 0] posizione base delle zampe di destra pos_base_B=[0 0 0 pi4 pi4 0] posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento nel simulatore egrave stato ulteriormente aumentato di un fattore correttivo pos_av_A=[0 (pi4-045) 0 -pi4 -pi4 0] pos_av_B=[0 (-pi4+045) 0 pi4 pi4 0] pos_ind_A=[0 (-pi4+045) 0 -pi4 -pi4 0] pos_ind_B=[0 (pi4-045) 0 pi4 pi4 0] posizioni intermedie=punti di via per le cubiche pos_int_A1=[0 (-pi4+045) 0 0 0 0]

Appendice B 174

pos_int_B2=[0 (pi4-045) 0 0 0 0] ------------------------------------------- calcolo della traiettoria movimento in avanti zampe di sinistra jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_Bt) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint) jb_b=cubica_norm(pos_av_Bpos_base_Bint) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_Apos_base_Aint) jbb=cubica_norm(pos_base_Bpos_ind_Bint) ------------------------------ parte grafica sposto il robot al centro trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) disegno convex hull line([136 46 46][-345 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) muovo prima zampa plot2(zampad jb1) plot(zampad jb2) clf muovo seconda zampa cambia la base dappoggio disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_av_B) line([136 46 46][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jb1) plot(zampab jb2) muovo_baricentro--------------------------------------- posizioni baricentro posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa = [0735 (-pi4+04) pi4 -pi4 -pi4-03 0] posb = [0735 (34pi+04) pi4 -pi4 pi4-03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc = [0735 (3pi4+04) 3pi4 pi4 -pi4+03 0] posd = [0735 (5pi4-04) pi4 -pi4 -pi4+03 0]

Appendice B 175

qposd = [0735 pi pi4 -pi4 -pi4 0] traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -048 -1135]) t2=transl([157 -09 -1135]) t3=transl([-159 045 -1135]) t4=transl([162 0045 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno zampe view(XY) disegno zampe con cinematica da zampa puntata a bar plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposat) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(XY) base di appoggio line([136 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) movimento baricentro plot(zampab2jbarb) plot(zampad2 jbard) plot(zampaa2 jbara) plot(zampac2 jbarc) _______________________________________________________________ riposiziono zampe catena cinemetica diretta r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase tx=transl([0 -042 0]) bara=r1tx barb=r2tx barc=r3tx

Appendice B 176

bard=r4tx zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard clf disegno bas dappoggio e zampe view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_ind_Apos_base_B) line([142 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-288 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo terza zampa plot2(zampac ja1) plot(zampac ja2) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_av_Apos_base_B) line([142 464 464][-335 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-335 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo ultima zampa plot(zampaa ja1) plot(zampaa ja2) ____________________________________ sposto di nuovo il baricentro per tornare alla posizione base posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa_av = [0735 (pi4-04) pi4 -pi4 (-pi4+03) 0] posb_ind = [0735 (54pi-04) pi4 -pi4 pi4+03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc_av = [0735 (5pi4-04) 3pi4 pi4 -pi4-03 0] posd_ind = [0735 (5pi4-04) pi4 -pi4 -pi4+038 0] qposd = [0735 pi pi4 -pi4 -pi4 0] disegna traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -09 -1135]) t2=transl([164 -054 -1135]) t3=transl([-159 003 -1135]) t4=transl([162 041 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc

Appendice B 177

zampad2base=bard disegno zampe view(XY) plot(zampaa2qposa_av) plot(zampab2qposb) plot(zampac2qposc_av) plot(zampad2qposd) generazione traiettorie per baricentro jbara=cubica_norm(qposa_avposat) jbarb=cubica_norm(qposbposb_indt) jbarc=cubica_norm(qposc_av posct) jbard=cubica_norm(qposd posd_indt) clf view(XY) _____________________________- riposiziono zampe base r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -042 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard _____________________________________________ disegno base appoggio e muovo zampe line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) Analisi passo dinamico figure(NamePasso DinamicoNumbertitleoff) t = [0int1] calcolo delle traiettorie

Appendice B 178

jta1 = cubica_norm(qza qpva t) jta2 = cubica_norm(qpva qfa t) jtb1 = cubica_norm(qzb qpvb t) jtb2 = cubica_norm(qpvb qfb t) jtc1 = cubica_norm(qpvc qfc t) jtc2 = cubica_norm(qfc qzc t) jtd1 = cubica_norm(qpvd qfd t) jtd2 = cubica_norm(qfd qzd t) ------------------------------ parte grafica parto da posizione base trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegno robot e base dappoggio disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) line([136 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) view(110120) muovo prima zampa plot2(zampaa jta1) plot(zampaa jta2) clf muovo seconda zampa e cambio base appoggio disegna_robot(zampaazampabzampaczampadqfaqzbqzcqzd) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jtb1) plot(zampab jtb2) baricentro definizione cordinate baricentro posa = [0735 pi4 pi4 -pi4 0 0 ] qposa = [0735 0 pi4 -pi4 -pi4 0] posb = [0735 -pi4 34pi pi4 0 0] qposb = [0735 0 34pi pi4 -pi4 0] posc = [0735 0 pi4 -pi4 pi4 0] qposc = [0735 -pi4 pi4 -pi4 0 0] posd = [0735 0 34pi pi4 pi4 0] qposd = [0735 pi4 34pi pi4 0 0] disegno robot in corretta posizione t1=transl([-13 -13 -1135]) t2=transl([13 -13 -1135]) t3=transl([-16 045 -1135]) t4=transl([16 045 -1135]) b=zampaabasetraslazione nellorigine della zampa bara=bt1 barb= bt2 barc= bt3

Appendice B 179

bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno robot e bae appoggio line([465 428 428][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([428 175 175][-415 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposa t) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(110120) spostamento tramite rivisualizzazione ta1=transl([-029 0 0]) ta2=transl([029 0 0]) bara=ta1zampaa2base barb=ta2zampab2base barc=ta2zampac2base bard=ta1zampad2base zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 17 17][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) line([17 432 432][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) torno al robot con catena cinematica base baricentro r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -078 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb

Appendice B 180

zampacbase=barc zampadbase=bard clf view(110120) disegna_robot(zampaazampabzampaczampadqzaqzbqpvcqpvd) line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) view(110120) sposto terza zampa plot2(zampac jtc1) plot(zampac jtc2) clf disegna_robot(zampaazampabzampaczampadqzaqzbqzcqfd) line([46 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) sposta quarta zampa plot(zampad jtd1) plot(zampad jtd2) line([46 46 45][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 46 46][-324 -324 -324][-1135 -1135 -1135]ColorrLineWidth1)

ii3 Calcolo della cinematica inversa

FUNZIONE CINEMATICA Programma che permette di calcolare la cinemetica diretta ed inversa della zampa del robot in esame simula in modo opportuno lanello cinematico di controllo dando la possibilitagrave allutente di inserire un possibile disturbo esterno che non ha permesso il corretto funzionamento La variabile diturbo potragrave in future evoluzioni assumere i valori di sensori o dometrici la funzione di cinemetica inversa egrave stata implementata con tre differenti metodicalcolo del gradiente e geometrico(studiato ad ok che permette il calcolo in real time) parametri in input vetthheta = vettore degli angoli dei giunti per la cinematica diretta medodo = scelta tra i metodi di calcolo di cinematica inversa 1=geometrico 2=inseguimento del gradiente 3=inseguimento veloce del gradiente incremento_angolo = approssimazione da usare con i metodi del gradiente espressa in gradi

Appendice B 181

gomito = scelta se gomito alto (1) o basso (0) parametri output n = numero di iterazioni per il calcolo della cinematica inversa errore = errore in gradi commesso tra la posizione voluta in input e quella realmente raggiunta Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [nerrore] = cinematica(vetthetametodoincremento_angologomito) metodo=1 incremento_angolo=25 gomito=1 alto vettheta=[-pi4 pi4 pi2] errore=[] incr_ang=incremento_angolo2pi360trasformazione valore in radianti ntheta=size(vettheta) considero ogni singola riga del vettore degli angoli concentro cioegrave lanalisi sui singoli 3 valori degli angoli for(nt=1ntheta) utilizzo variabile locale theta=(vettheta(nt)) theta_i=[] v1=size(theta) for(v=1v1(11)) inizio ciclo per tutti i valori di theta inseriti calcolo CINEMATICA DIRETTA per il calcolo della posizione dellend_effector nello spazio dei giunti considero c1 il baricentro che risulta essere giunto fittizio C2=cos(theta(v1))S2=sin(theta(v1)) C3=cos(theta(v2))S3=sin(theta(v2)) C4=cos(theta(v3))S4=sin(theta(v3)) matrici prodotte dai parametri di Denavit Hartemberg A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A34=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] matrice finale end-effector T=A12A23A34 memorizzo in pos la posizione finale dellend effector calcolata si trova nei primi 3 elementi della quarta colonna della matrice T for(i=13) pos(1i)=T(i4) end pos(14)=1 siamo nelle omogenee p deve avere 4 valori disturbo=[0 0 0 0]introduco valori disturbo quando avremo i sensori avrograve in input valore posizione finale raggiunta diversa da quella calcolata ricalcolo posizione reale raggiunta pos=pos+disturbo

Appendice B 182

dalla nuova posizione calcolo la CINEMATICA INVERSA PRIMO ANGOLOricavato direttamente dalla matrice T z2=pos(12)pos(11) theta_i(11) = atan(z2) ricalcolo l aposizione corretta di intersezione degli assi avendo giagrave calcolato il valore de primo giuntosposto lorigine nel secondo giunto in base alla posizione effettiva del robotsullasse devo fare controlli per calcolare l aposizione dellend-effector rispetto alla nuova origine PIPPO=pos() if (theta_i(11)==0) pos(11)=pos(11)-(cos(theta_i(11))00573) else if pos(13)==0 pos(11)=00675+009 else if (theta_i(11)gt0) pos(11)=(pos(11)cos(theta_i(11)))-00573 else pos(11)=(pos(11)cos(theta_i(11))-00573) end end end PIPPO2=pos() METODO GEOMETRICO if (metodo==1) n=1 unica interazione dist=0 pos(11)=abs(pos(11)) pos(13)=abs(pos(13)) da analisi geometrica B = pos(11)^2+pos(13)^2 c2=(B-00675^2-009^2)(200675009) theta_i(13)=(acos(c2)) delta=atan((pos(13))(pos(11)))considerando i grafici ho valori di x e z invertiti zx=(009sin(theta_i(13))(00675+009cos(theta_i(13)))) alfa = atan(zx) se gomito alto uasato sempre if (gomito==1) theta_i(12)=(delta+alfa) end se gomito basso if (gomito==0) theta_i(12)=(delta-alfa) end calcolo errore tra dato in input e valori trovati err(11)=theta(11)-theta_i(11) err(12)=abs(theta(12))-theta_i(12)+pi2causa inversione di posizionamento motori err(13)=abs(theta(13))-theta_i(13) trasformo errore in gradi errore=[errorefix(err360(2pi))] else METODO ITERATIVO PER CALCOLARE CINEMATICA INVERSA

Appendice B 183

if (metodo==2) METODO GRADIENTE inizializzo var di appoggio a=0 b=0 n=0 dist = Calc_Distanza(abpos(11)pos(13)) calcolo distanza iniziale while (dist gt 0001) 0001 approx al millimetro 001 approx al centimetro calcolo la differenza della distanza dalla pos finale dellend-effector incrementado e decrementando gli angoli verifico se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_angbpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) -Calc_Distanza(a b-incr_angpos(11)pos(13)) a = a - gradient_a creo le nuove pos b = b - gradient_b ricalcolo la distanza e vedo se egrave minore dellapprox dist = Calc_Distanza(abpos(11)pos(13)) n=n+1incremento numero di iterazioni end else if(metodo==3) METODO FASTER GRADIENT FOLLOWING inizializzo var di appoggio a=0 b=0 n=0 speeda=0 speedb=0 dist = Calc_Distanza(abpos(11)pos(13))calcolo distanza da end effector salvo il valore del vecchio gradiente per entrambe le posizioni old_gradient_a = 0 old_gradient_b = 0 while (dist gt 0001) approssimazione al millimetro n=n+1 controllo se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_ang bpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) - Calc_Distanza(a b-incr_angpos(11)pos(13)) controllo se ci siamo gia trovati in questi valori in segno if (sign(old_gradient_a) ~= sign(gradient_a)) se gradiente ha cambiato direzione(salitadiscesa)devo arrestare e modificare valori a = a - speeda old_gradient_a (gradient_a-old_gradient_a) speeda = 0 else speeda =speeda + gradient_a se sto seguendo salita o discesa del gradiente continuo a seguirla if (sign(old_gradient_b) ~= sign(gradient_b))

Appendice B 184

b = b- speeda old_gradient_b (gradient_b-old_gradient_b) speedb = 0 else modifico posizioni raggiunte e velocitagrave speedb =speedb+gradient_b a = a- speeda b = b- speedb end end ricalcolo distanza con nuovi valori dist = Calc_Distanza(a bpos(11)pos(13)) old_gradient_a = gradient_a il grdiente appena calcolato diventa il vecchio old_gradient_b = gradient_b end else testo=inserito metodo errato end end STAMPO VALORI NEL CASO DEI GRADIENTI nstampo il numero di iterazioni che sono servite a calcolare il risultato dist theta_i(12)=a-incr_angvalori corretti sono quelli al passo precedente theta_i(13)=b-incr_ang theta_i esprimo lerrore in gradi err=theta-theta_i errore=[errorefix(err360(2pi))] end end end

ii4 Analisi del modello dinamico

FUNZIONE EULERO_BASE Funzione che effettua il calcolo dei coefficienti di newton eulero sulla singola zampa per ogni singolo giunto dellarticolazione in base alla parametrizzazione di Denavit-Hartemberg La catena cinematica qui analizzata egrave quella che ha per base il baricentro ed end effector il piedeApplicata a parametri di controllo degli attuatori(passo_avanti) parametri input theta=vettore a tre colonne che rappresenta gli angoli dei tre giunti function [forza_gen] = eulero_base(theta) theta=[ pi4 pi4 pi2 pi4 pi4 pi4 0 pi4

Appendice B 185

pi4 pi4 0 pi4 pi4 pi4 0 pi4 pi4 pi4 pi2 pi4 pi4 pi4 pi2 pi4] definizione tempistiche delta=1 [v1 n1]=size(theta) forza_gen=[] massa PESO=1 IN KG massa=[PESO4 002 002 005] gravitagrave g=[0 0 -98] tensore dinerzia del complesso braccio motore espressi in millimetri x=[0026 0003 0003 0009] y=[0054 0020 0020 004] z=[01125 00573 00675 009] I=[] matrice momento dinerzia for(i=13) I=[I (y(i)^2+z(i)^2)12 0 0 0 (x(i)^2+z(i)^2)12 0 0 0 (y(i)^2+z(i)^2)12] end for(v=1v1-1) inizio ciclo per piugrave posizioni successive ris=[] analizzo due istanti temporali successivi per estrapolare la velocitagrave for(j=1n1) ris=[ris (theta(v+1j)-theta(vj))] end d_theta=risdelta espresso in radsec dd_theta=d_thetadeltaespresso in radsec^2 C1=cos(theta(v1))S1=sin(theta(v1)) C2=cos(theta(v2))S2=sin(theta(v2)) C3=cos(theta(v3))S3=sin(theta(v3)) C4=cos(theta(v4))S4=sin(theta(v4)) Ricavo matrice di rotazione tot R=[[C1(1) (-S1(1)) 0 S1(1) C1(1) 0 0 0 1] [C2(1) 0 (-S2(1)) S2(1) 0 -C2(1) 0 1 0] [C3(1) (-S3(1)) 0 S3(1) C3(1) 0 0 0 1] [C4(1) (-S4(1)) 0 S4(1) C4(1) 0 0 0 1]]gestita come 123 cinematica diretta per il calcolo della posizione dellend_effector nello spazio dei giunti A11=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A13=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A14=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T1=A11A12A13A14

Appendice B 186

C1=cos(theta(v+11))S1=sin(theta(v+11)) C2=cos(theta(v+12))S2=sin(theta(v+12)) C3=cos(theta(v+13))S3=sin(theta(v+13)) C4=cos(theta(v+14))S4=sin(theta(v+14)) A21=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A22=[C2 0 (-S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A24=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T2=A21A22A23A24 dalle posizioni successive trovate con cinematica diretta estrapolo la posizione e da essa la velocitagrave for(i=13) pos(1i)=T2(i4)-T1(i4) end vel=posdelta acc_end_eff=veldelta vettore dallorigine della terna(i-1)al baricentro Ci R_iC=[0055125 0 0002865 0 0003375 0 00045 0 0] vettore dallorigine della terna(i)al baricentro Ci RC=[-0055125 0 0-002865 0 0-003375 0 0-0045 0 0] vettore dallorigine della terna(i-1)allorigine della terna (i) R_iI=[01125 0 000573 0 000675 0 0009 0 0] zo=[0 0 1]asse base altri parametri da calcolare velocitagrave lineare del baricentro Ci p_C=[0 0 0] velocitagrave lineare dellorigine della terna (i) p_i=[0 0 0] velocitagrave angolare del braccio omega=[0 0 0] accelerazione lineare del baricentro Ci pp_C=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione lineare dellorigine della terna (i) pp_i=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione angolare del braccio d_omega=[0 0 0] forza esercitata dal braccio (i-1) sul braccio i f=(1)acc_end_eff il primo valore rappresenta su end_effector momento mu=[0 0 0] forza generalizzata tau=[] impongo velocitagrave e accellerazioni per il braccio base inizio algoritmo inserisco formule di Newton-Eulero(vedi teoria) for(i=24) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] omega(i)=(Rot(omega(i-1)+(d_theta(1i-1)zo))) d_omega(i)=(Rot(d_omega(i-1)+(dd_theta(1i-1)zo)+cross(d_theta(1i-1)omega(i-1)zo)))

Appendice B 187

pp_i(i)=(Rotpp_i(i-1))+cross(d_omega(i)R_iI(i-1))+cross(omega(i)(cross(omega(i)R_iI(i-1)))) pp_C(i)=pp_i(i)+cross(d_omega(i)RC(i-1))+cross(omega(i)(cross(omega(i)RC(i-1)))) end TORNO indietro per calcolare le forze e i momenti i=3 r=2indici while(igt=1) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] Iner=[I((i-1)3+1)I((i-1)3+2)I((i-1)3+3)] f(r)=(Rotf(r-1))-massa(1i)pp_C(i)ho sottratto la massa perchegrave la considero forzapeso mu(r)=cross(-f(r)(R_iI(i)+RC(i)))+(Rotmu(r-1))+(Rot(cross(f(r-1)RC(i))))+(Inerd_omega(i))+cross(omega(i)(Ineromega(i))) i=i-1 r=r+1 end n2=size(mu) for(i=2n2) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] tau(i)=mu(i)Rotzo end forza_gen=[forza_gen tau] end forza_gen espressa in Nm forza_gen=(forza_gen100)98 trasformazione in cmKg

ii5 Map building

ii51 Espansione degli ostacoli

FUNZIONE ONDA_DESTINAZIONE funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input matrice= matrice di definizione mappa xend=valore dellascissa della destinazione yend=valore dellordinata della destinazione parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_destinazione(matricexendyend)

Appendice B 188

calcolo dimensioni matrice [dim1dim2] = size(matrice) for(i=1(xend-1))righe superiori ad arrivo for(j=1(dim22))per tutte le colonne matrice(i((j2)-1))=(xend-i)attribuisco valori decrescenti end end for(i=(xend+1)dim1)righe inferiori ad arrivo for(j=1(dim22)) matrice(i((j2)-1))=(i-xend)attribuisco valori a cui devo sottrarre la destinazione end end for(i=1dim1)colonne a sx ad arrivo for(j=1(yend-1))fino a colonna precedente arrivo sottraggo il numero in cui sono matrice(i((j2)-1))=matrice(i((j2)-1))+(yend-j) end end for(i=1dim1)colonne a dx ad arrivo for(j=(yend+1)(dim22))da colonna successiva a fine matrice(i((j2)-1))=matrice(i((j2)-1))+(j-yend)da valore devo sottrarre valore destinazione end end matrix=matrice restituisco matrice modificata FUNZIONE ONDA_OSTACOLOPLUS funzione che inseriscce come secondo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dallstacolo piugrave vicino valutando opportunamente la relazione tra gli ostacoli giagrave presenti parametri in input matrice= matrice di definizione mappa xposa=valore dellascissa iniziale deelostacolo xposb=valore dellascissa di fine deelostacolo yposa=valore dellordinata iniziale deelostacolo yposb=valore dellordinata di fine deelostacolo parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_ostacoloplus(matricexposaxposbyposayposb) funzione per la creazione degli ostacoli ostacolo_par(xaxbyaybc) ostacolo occupa quattro celle xayaxaybxbya xbyb definisco nuova matrice matrice_1=zeros(size(matrice)) creo onda con singolo ostacolo matrice_1=onda_ostacolo(matrice_1xposaxposbyposayposb) [dim1dim2] = size(matrice_1) confonto matrice con singolo ostacolo con matrice con giagrave presenti altri ostacoli e salvo le distanze minime da essi for(i=1dim1) for(j=1(dim22))

Appendice B 189

if(matrice_1(i(j2))ltmatrice(i(j2))) matrice(i(j2))=matrice_1(i(j2)) end end end matrice(xposayposa2)=0valori che identificano lostacolo matrice(xposa((yposa2)-1))=110 matrice(xposayposb2)=0valori che identificano lostacolo matrice(xposa((yposb2)-1))=110 matrice(xposbyposa2)=0valori che identificano lostacolo matrice(xposb((yposa2)-1))=110 matrice(xposbyposb2)=0valori che identificano lostacolo matrice(xposb((yposb2)-1))=110 espansione ostacolo if(yposa ~= 1)se sono sul bordo sinistro matrice(xposa(yposa-1)2)=0valori che identificano lespansione matrice(xposa(((yposa-1)2)-1))=109 matrice(xposb(yposa-1)2)=0valori che identificano lespansione matrice(xposb(((yposa-1)2)-1))=109 end if(yposb ~= (dim22))se sono sul bordo destro matrice(xposa(yposb+1)2)=0valori che identificano lespansione matrice(xposa(((yposb+1)2)-1))=109 matrice(xposb(yposb+1)2)=0valori che identificano lespansione matrice(xposb(((yposb+1)2)-1))=109 end matrix=matriceritorno il valore della matrice modificata

ii52 Calcolo del percorso

FUNZIONE TROVA_PERCORSO funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input xst=valore dellascissa del punto di partenza yst=valore dellordinata del punto di partenza xend=valore dellascissa del punto di arrivo yend=valore dellordinata del punto di arrivo dim1dim2=dimendioni matrice mappa posxa1posxa2posya1posya2=posizione ostacolo 1 posxb1posxb2posyb1posyb2=posizione ostacolo 2 posxc1posxc2posyc1posyc2=posizione ostacolo 3 parametri in output prova1= valori in coordinate cartesiane del percorso trovato strada_per=percorso in rappresentazione direzionale dei passi da percorrere strada_per_uso=percorso espresso in valori singoli(0=Start1=Avanti-1=Indietro-2=Sinistra2=Destra) Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005

Appendice B 190

function [prova1strada_perstrada_per_uso] = trova_percorso(xstystxendyenddim1dim2posxa1posxa2posya1posya2posxb1posxb2posyb1posyb2posxc1posxc2posyc1posyc2) non_val=[100 1 -1 -1]valore non valido 100=dist_da destinazione 1=distanza da ostacolo visitato=[150 0]marca per nodi visitati arr=[0 45]marca arrivo strada=[xst yst]memorizzo coordinate percorso dim1=5 dim2=dim22 matrice_appoggio=eye(dim1dim2) crea una matrice diagonale dim1 x dim2 matrice=zeros(size(matrice_appoggio))creo matrice vuota creo matrice con onde necessarie matrice=onda_destinazione(matricexendyend) matrice=onda_ostacolo(matriceposxa1posxa2posya1posya2) matrice=onda_ostacoloplus(matriceposxb1posxb2posyb1posyb2) matrice=onda_ostacoloplus(matriceposxc1posxc2posyc1posyc2) prova=matriceprova diventa la mia matrice i=xst j=yst parto da sorgente n=dim1dimensioni matrice m=dim22 trovato=0 creo insieme dei successivi del nodo in analisi while(trovato==0) if((igt=1)ampamp(ilt=dim1)ampamp(jgt=1)ampamp(jlt=(dim22))) if(i ~= 1)se sono ai bordi successivi=[matrice(i-1(j2)-1) matrice(i-1(j2)) i-1 j] else successivi=non_val end if(j ~= 1)se sono ai bordi successivi=[successivimatrice(i(((j-1)2)-1)) matrice(i(j-1)2) i (j-1)] else successivi=[successivinon_val] end if(i ~= n) successivi=[successivimatrice(i+1(j2)-1) matrice(i+1(j2)) i+1 j] else successivi=[successivinon_val] end if(j ~= m) successivi=[successivimatrice(i(((j+1)2)-1)) matrice(i(j+1)2) i (j+1)] else successivi=[successivinon_val] end migliore=non_valattribuisco valore enorme a migliore trov=0 scelgo il miglior successivo quello che mi porta piugrave vicino a destinazione for(k=14) if(successivi(k1)lt=migliore(1)) tra due a stessa distanza prendo quello piugrave lontano dallostacolo

Appendice B 191

if((successivi(k1)==migliore(1))ampamp(successivi(k2)ltmigliore(2))) migliore=successivi(k) trov=1 posto=ksalvo la posizione del successivo end migliore=successivi(k) trov=1 posto=k end end matrice(i(j2)-1)=visitato(1)marco percorso giagrave visitato matrice(i(j2))=visitato(2) strada=[stradamigliore(3) migliore(4)]salvo la posizione del migliore trovato se sono arrivato a destinazione ho finito if(migliore(3)==xend)ampamp(migliore(4)==yend) trovato=1 end controllo per il mancato raggiungimento del percorso i=migliore(3)cerco il successivo j=migliore(4) se il migliore tra i successivi egrave o un ostacolo o unespansione sono bloccato if((migliore(1)==150)||(migliore(1)==109)||(migliore(1)==110)) trovato=2non esiste percorso end else trovato=2 end end if(trovato==1) testo=PERCORSO TROVATO end if(trovato==2) testo=PERCORSO NON TROVATO end se ho trovato il percorso if(trovato ~= 2) prova1=stradasalvo la strada in coordinate effettuata [rc] = size(strada) dalle coordinate estrapolo la strada direzionale e una espressa in singolo valore strada_per=[ start] strada_per_uso=[0] for(k=1(r-1)) if((strada(k1)~= strada(k+11))ampamp(strada(k2)== strada(k+12))) ris=strada(k1)- strada(k+11) if (ris==1) strada_per=vertcat(strada_perIndietro) strada_per_uso=[strada_per_uso-1] else strada_per=vertcat(strada_perAvanti ) strada_per_uso=[strada_per_uso1] end

Appendice B 192

else if((strada(k1)== strada(k+11))ampamp(strada(k2)~= strada(k+12))) ris=strada(k2)- strada(k+12) if (ris==1) strada_per=vertcat(strada_perSinistra) strada_per_uso=[strada_per_uso-2] else strada_per=vertcat(strada_perDestra ) strada_per_uso=[strada_per_uso+2] end end end end stampa=strada_per end

ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente

FUNZIONE AMBIENTE_PROVA Algoritmo che richiama la funzione trova_percorso e con i risultati trovati realizza il plottaggio grafico del robot in movimento nellambiente Realizza controlli per la scelta del passo da utilizzare nellistante in esame Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 preparazione dati base figura figure grid on axis([-5 5 -5 5 -2 7]) clf init sfondo(xstartystartxendyend) ASGAR b=transl(000) posiziono il robot nello start t=transl([ystart -xstart 0]) bara=bt barb=bt barc=bt bard=bt zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard center_position(barabarbbarcbard)

Appendice B 193

chiamo la funzione trova_percorso [coord path

path_uso]=trova_percorso(xstartystartxendyenddim1dim2ostxa1ostxa2ostya1ostya2ostxb1ostxb2ostyb1ostyb2ostxc1ostxc2ostyc1ostyc2) [p k]=size(path_uso) v=1 p1=[] cont=[] per ogni elemento del percorso while(vlt=p) in relazione al percorso espresso con singoli valori if (path_uso(v)== 0)start clf alzati7chiamo funzione di alzata del robot clf sfondo(xstartystartxendyend) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) v=v+1 else if (path_uso(v)== -2) cammina_sinistra for(i=04) faccio fare CINQUE passi a sx x spst a sx=02 hold on passo_sx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 2) cammina_destra for(i=04) faccio fare CINQUE passi a dx x spost a dx =02 hold on passo_dx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 1)in avanti c=0 k=v conto per quante celle non varia la x cioegrave qunti elementi devo andare avanti while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1)

Appendice B 194

n_passi=fix(distanza07)trasformo la distanza in passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo per eccesso il rimanente for(s=1n_passi) cammina_avanti con passi lunghi hold on passo_avanti_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_avanti con passi correttivi hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] else if (path_uso(v)==-1)indietro c=0 k=v calcolo x quanti elementi ho camminata indietro while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1) n_passi=fix(distanza07)definisco n_passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo rimanente for(s=1n_passi) cammina_indietro con passi lunghi hold on passo_indietro_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_indietro con passi correttivi hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] end end end end end

Appendice B 195

end axis([-1 7 -8 1 -2 7]) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]salvo percorso fino a prima

della correzione finale correzione finale mi dice quanto sono arrivata lontano dalle destinazione desiderata [m m1]=size(percorso_effettivo) distanza=[] distanza(1)=percorso_effettivo((m-3)4)-(yend) distanza(2)=percorso_effettivo((m-2)4)-(-xend) testo=SONO ARRIVATO A DISTANZA DALL OBIETTIVO DI X=distanza(1) y=distanza(2) in base al valore di distanza mi suggerisce cosa il robot dovrebbe ancora fare if ((distanza(2)gt=02)||(distanza(2)lt=-02)) dist_fin=distanza(2)02 testo=devo fare ancora abs(dist_fin)visualizzo il modulo if(dist_fingt0) testo=passi correttivi avanti else testo=passi correttivi indietro end dopo avermi detto cosa deve fare lo esegue if(dist_finlt0) for(i=0fix(abs(dist_fin))) hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end else for(i=0fix(abs(dist_fin))) hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end end end p1=[p1zampaabase] disegno i due percorsi IDEALE e EFFETTIVO percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]aggiungo la correzione al

percorso [n n1]=size(coord)percorso ideale for(k=1(n-1)) if((coord(k1)~= coord(k+11))ampamp(coord(k2)== coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k+11)][0 0

0]ColorgLineWidth2)

Appendice B 196

else if((coord(k1)== coord(k+11))ampamp(coord(k2)~= coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k1)][0 0

0]ColorgLineWidth2) end end end PERCORSO vero che invece fa il robottino il valore delle coordinate egrave giagrave giusto come segni for(k=0(m4)-2) if((percorso_effettivo((4k)+14) ~=

percorso_effettivo((4(k+1)+1)4))||(percorso_effettivo((4k)+24) == percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4(k+1)+1)4)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo(4k+24)][0 0 0]ColorbLineWidth2) else if((percorso_effettivo((4k)+14) ==

percorso_effettivo((4(k+1)+1)4))ampamp(percorso_effettivo(4k+24) ~= percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4k)+14)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo((4(k+1)+2)4)][0 0 0]ColorbLineWidth2) end end end

ii6 Collegamento diretto con il robot fisico

ii61 Creazione degli angoli da trasmetter agli attuatori

FUNZIONE ANGOLI_MOTORI2 Funzione che crea in output larray theta_motori generando le traiettorie di movimento per il corretto funzionamento dellattuazione dei motori fisici In questa versione gli angoli di movimento risultano essere piugrave accentuati per migliorare la stabilirtagrave Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 INSERIRE NUMERO FRAME AL SECONDO frame=2 con 50 sembra continuo

Appendice B 197

int=1(frame-1)definisco il numero di intervalli in cui scandire il movimento t=[0int1] definizione variabile di controllo x=0 if (int==1) x=1 end poszero=[0 0 0]posizione impressa nella pic pos_base_A=[0 -pi4 (-pi2)]posizione base delle zampe di destra pos_base_B=[0 pi4 (pi2)]posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento pos_av_A=[(pi4-02) -pi4 -pi2] pos_av_A2=[(pi3) -pi4 -pi2] modificata accentuo movimento in avanti pos_av_B=[(-pi4+02) pi4 pi2] pos_av_B2=[(-pi3) pi4 pi2] pos_ind_A=[(-pi4+02) -pi4 -pi2] pos_ind_A2=[(-pi3) -pi4 -pi2] pos_ind_B=[(pi4-02) pi4 pi2] pos_ind_B2=[(pi3) pi4 pi2] posizioni intermedie=punti di via per le cubiche pos_int_A1=[(-pi4+02) 0 0] pos_int_A2=[(-pi3) 0 0] pos_int_B2=[(pi4-02) 0 0] pos_int_B3=[(pi3) 0 0] calcolo dellle traiettorie tramite la cubica da posizione zero a posizione base parta=cubica_norm(poszeropos_base_At) partb=cubica_norm(poszeropos_ind_Bt) partc=cubica_norm(poszeropos_ind_B2t) movimento in avanti zampe di sinistra jc1=cubica_norm(pos_ind_B2pos_int_B3t) jc2=cubica_norm(pos_int_B3pos_av_Bt) jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_B2t) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint+x) jd_b=cubica_norm(pos_base_Apos_ind_A2int+x) jb_b=cubica_norm(pos_av_B2pos_base_Bint+x) jc_b=cubica_norm(pos_av_Bpos_base_Bint+x) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_A2t) jd1=cubica_norm(pos_ind_A2pos_int_A2t) jd2=cubica_norm(pos_int_A2pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_A2pos_base_Aint+x)

Appendice B 198

jdb=cubica_norm(pos_av_Apos_base_Aint+x) jbb=cubica_norm(pos_base_Bpos_ind_Bint+x) jcb=cubica_norm(pos_base_Bpos_ind_B2int+x) costruzione dei vettori di attesa per ogni zampa pos_attesaA=[]attesa della zampa nella posizione base pos_attesaB=[] pos_attindA=[]attesa della zampa nella posizione indietro pos_attindB=[] pos_attavA=[]attesa della zampa nella posizione avanti pos_attavB=[] vettori per le attese dei movimenti delle altre zampe for(i=1(2+2int)int) pos_attesaA=[pos_attesaApos_base_A]attesa zampa in posizione base pos_attesaB=[pos_attesaBpos_base_B] pos_attindA=[pos_attindApos_ind_A]attesa zampa in posizione indietro pos_attindB=[pos_attindBpos_ind_B] pos_attavA=[pos_attavApos_av_A]attesa zampa in posizione avanti pos_attavB=[pos_attavBpos_av_B] end costruzioni vettori composti per la camminata ja=[partapos_attesaApos_attesaAja_bpos_attindAja1ja2jab] jb=[partbpos_attindBjb1jb2jb_bpos_attesaBpos_attesaBjbb] jc=[partcjc1jc2pos_attavBjc_bpos_attesaBpos_attesaBjcb] jd=[partapos_attesaApos_attesaAjd_bjd1jd2pos_attavAjdb] vettore da mandare in output ogni colonna rappresenta un motore in pos 3 4 5 6 7 8 9 10 11 12 13 14 theta_motori=[jb(1) jc(1) jb(2) jb(3) jc(2) jc(3) jd(3) jd(2) ja(3) ja(2) jd(1) ja(1)] costruzione della scala per i valori minimi valori_minimi=(-pi2)ones(112) chiamata di funzione per spedire valori ai motori moveservos_mio(theta_motori0111valori_minimi) ho messo frame 8 e valore tra un valore sparato e laltro 008 va bene

ii62 Coollegamento diretto di comunicazione con la PIC

FUNZIONE MOVESEVOS La funzione che ricevendo in imput il vettore contenente le posizioni dei motori le elabora per trasformarle in valori compatibili con la PIC (0 255)e apre una connessione di comunicazione con essa La PIC che riceveragrave in input i dati tramite la connessione seriale (impostata sulla COM1 alla velocitagrave di 9600) interpreteragrave i dati nel seguente modo

Appendice B 199

- Il primo valore indica la modalitagrave (254 = movimento dei servo) - I successivi 16 valori compresi tra 0 e 255 indicano le posizioni parametri inputpos=la matrice theta costitutita da una o piugrave righe composta da 12 elementi riferiti ai 12 attuatori timestep=indica il tempo di invio tra una sequenza e laltra ovvero il tempo che intercorre tra ogni framerigha della matrice in ingresso(valore minimo 0111) min=vettore contenente i valori min assumibili dai motori per calcolare lo zero delle posizioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 pos egrave il valore della mia theta espressa solo con 12 valori Funzione che invia i valori in output sulla seriale function moveservos_mio(postimestepmin) max_servo_rotation = pi Quanto possono ruotare i motori (pi 2pi) [rowscols] = size(pos) Crea una connessione seriale try s = serial(COM1 BaudRate14400) sByteOrder = littleEndian sTerminator = CR set(s timeout timestep)posso mettere 1 fopen(s) Laperturachiusura della seriale avviene una volta per ogni matrice theta e non ad ogni rigainvio for i=1rows pos_rel = pos(i)-min posizione relativa alla pos minima Vengono aggiunti 4 valori fittizi nulli poichegrave la seriale egrave progettata per gestire 16 motori mentre theta ne contiene 12 theta16 = [0 0 pos_rel(18) 0 pos_rel(1012) pos_rel(9) 0] Converto in valori in valori da 0 a 255 per la PIC I valori inviati compaiono anche nella command line per verifica theta16 = round(theta16255max_servo_rotation) fwrite(s 254 uchar async) readyByte = fread(s 1 uchar) fwrite(stheta16 uchar async) Controlla se la PIC ha ricevuto theta (conferma tramite valore 33) confirmByte = fread(s 1 uchar) if confirmByte ~= 33 msgbox(Errore di invio dei comandi sulla serialeErroreerror) else Valori inviati correttamente sulla seriale end pause(timestep) end

Appendice B 200

fclose(s) clear ans catch Se fallisce la connessione avverti lutente Porta seriale non connessa end

  • Introduzione
    • Unitagrave funzionali di un robot mobile
    • Obiettivo del lavoro
    • Organizzazione della tesi
      • Sistemi di locomozione
        • Scopi di studio della locomozione su zampe
        • Differenze e analogie tra locomozione a zampe e su ruote
        • Analisi Trot gait di quadrupedi
          • Studio andatura quasi-statica
          • Studio andatura quasi-dinamica
          • Studio andatura dinamica trotto
              • Stato dellrsquoarte dei four legged robot
                • Panoramica dei Robot quadrupedi esistenti
                  • Collie-1 e Collie-2
                  • Quadrupede MIT
                  • GEO
                  • Quadrupede Kimura lab
                    • Algoritmi di controllo CPG for four legged robot
                    • Robocup e Sony Aibo
                      • Storia
                      • Descrizione dei sensori di Aibo
                        • Visione della macchina
                        • Riconoscimento audio
                        • Tatto
                        • Movimento e sviluppo
                          • Architettura del robot ASGARD
                            • Configurazione del robot quadrupede
                              • Struttura Meccanica
                              • Attuatori
                              • Materiale Policarbonato
                                • ASGRAD in numeri
                                • Hardware
                                • Software
                                • Stato Attuale
                                  • Modellizzazione cinematica e dinamica
                                    • Convenzioni e simbologia utilizzata
                                    • Sistemi di coordinate e trasformazioni
                                    • Cinemetica diretta
                                      • Definizione dei parametri di Denavit Hartemberg
                                      • Metodo di assegnamento secondo D-H
                                        • Cinematica inversa
                                          • Metodo gradiente
                                            • Gradient following
                                            • Faster gradient following
                                                • Calcolo delle traiettorie
                                                • Modello dinamico Newton-Eulero
                                                • Creazione di una mappa
                                                  • Espansione degli ostacoli traformazione delle distanze
                                                    • Scelta di un percorso Algoritmo di Dijkstra
                                                      • Sviluppo dellrsquoalgoritmo di camminata
                                                        • Metodologie di sviluppo
                                                        • Progetto di una andatura
                                                          • Lo spazio
                                                          • Stabilitagrave
                                                          • Tempo
                                                            • Andature implementate
                                                            • Catene cinematiche del robot
                                                            • Passo statico e dinamico
                                                            • Formule di forza e torsione sui giunti
                                                            • Anello di Controllo
                                                            • Map-building e scelta del gait
                                                              • Costruzione della mappa ed espansione degli ostacoli
                                                              • Algoritmo di ricerca del percorso minimo
                                                              • Realizzazione del gait
                                                                  • Sperimentazione e analisi dei risultati
                                                                    • Risultati statici
                                                                      • Passo reale effettuato
                                                                      • Misurazioni reali della pressione
                                                                      • Confronti di cinemetica inversa
                                                                        • Risultati dinamici
                                                                          • Caratteristiche negative dei motori
                                                                            • Velocitagrave
                                                                            • Alimentazione
                                                                                • Caratteristiche del percorso
                                                                                  • Conclusioni e sviluppi futuri
                                                                                    • Risultati raggiunti
                                                                                    • Progetti futuri
                                                                                      • Modifiche meccaniche
                                                                                      • Miglioramenti Hardware
                                                                                      • Miglioramenti Software
                                                                                        • Conclusioni finali
                                                                                          • Bibliografia
                                                                                          • Appendice A
                                                                                            • i Sensori nei robot a zampe disponibili sul mercato
                                                                                            • ii Dead Reckoning Stima della posizione
                                                                                              • ii1 Encoder Ottici
                                                                                              • ii2 Encoder ottici incrementali
                                                                                                • ii21 EL30 E-H-I Eltra srl
                                                                                                  • ii3 Encoder ottici Assoluti
                                                                                                    • ii31 Sensori ottici CORRSYS-DATRON
                                                                                                    • ii32 EAM Parallelo-SSI Eltra srl
                                                                                                      • ii4 Sensori Dopler
                                                                                                      • ii41 Robot Italy SRF04
                                                                                                        • iii Heading Sensor
                                                                                                          • iii1 Giroscopio meccanico
                                                                                                            • iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codi
                                                                                                            • iii12 Futaba Giroscopio FP GY 240 AVCS
                                                                                                              • iii2 Giro-bussola
                                                                                                              • iii3 Giroscopio-Girobussola a fibre ottiche
                                                                                                                • iii31 La funzione giroscopica
                                                                                                                  • iii4 Giroscopio piezoelettrico
                                                                                                                    • iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03
                                                                                                                    • iii42 Giroscopio Piezoelettrico Enc-03ja
                                                                                                                        • iv Sensori geomagnetici
                                                                                                                          • iv1 Bussola magnetica meccanica
                                                                                                                          • iv2 Bussola a effetto Hall
                                                                                                                            • iv21 1490 Digital Compass Sensor
                                                                                                                              • iv3 Bussola a magnetoreversiva
                                                                                                                                • iv31 Philips bussola AMR
                                                                                                                                  • iv4 Bussola magnetoelastica
                                                                                                                                    • iv41 Metglas 2605S2
                                                                                                                                        • v Sensori per la modellizzazione dellrsquoambiente
                                                                                                                                        • vi Sensori di distanza
                                                                                                                                          • vi1 Sensori basati sul tempo di volo
                                                                                                                                            • vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502
                                                                                                                                              • vi2 Sensore telemetro a sfasamento
                                                                                                                                                • vi21 LIDAR lsquoLight detection and Rangingrsquo
                                                                                                                                                  • vi3 Triangolazione
                                                                                                                                                    • vi31 IFELL Laser e Sistemi Srl
                                                                                                                                                      • Informazioni sui produttori
                                                                                                                                                      • Appendice B
                                                                                                                                                        • i Manuale drsquouso
                                                                                                                                                        • ii Codice generato
                                                                                                                                                          • ii1 Menu principale
                                                                                                                                                          • ii2 Confronto andatura quasi-stabile vs quasi-dinamica
                                                                                                                                                          • ii3 Calcolo della cinematica inversa
                                                                                                                                                          • ii4 Analisi del modello dinamico
                                                                                                                                                          • ii5 Map building
                                                                                                                                                            • ii51 Espansione degli ostacoli
                                                                                                                                                            • ii52 Calcolo del percorso
                                                                                                                                                            • ii53 Definizione dei movimenti per la deambulazione nellrsquoa
                                                                                                                                                              • ii6 Collegamento diretto con il robot fisico
                                                                                                                                                                • ii61 Creazione degli angoli da trasmetter agli attuatori
                                                                                                                                                                • ii62 Coollegamento diretto di comunicazione con la PIC
Page 8: Analisi e sviluppo di un simulatore per gait

Introduzione

Introduzione 9

Negli ultimi decenni continue evoluzioni scientifico tecnologiche hanno

portato ad un radicale cambiamento nella vita umana e nella realizzazione di

progetti un tempo considerati utopici Dalle ldquoali di Leonardordquo allrsquoemulazione

della natura lrsquouomo continua ad osservare lrsquoambiente che lo circonda e

analizzandolo accuratamente egrave riuscito a costruire macchine indipendenti che lo

aiutano nelle azioni quotidiane o che semplicemente lo supportano nelle abitudini

della vita di ogni giorno

Anche se lo stato dellrsquoarte della robotica egrave ancora lontano dal realizzare

dispositivi cosigrave complessi il notevole incremento della potenzialitagrave di calcolo

permette oggi la costruzione di robot dotati di un certo grado di autonomia Un

robot puograve essere considerato autonomo tanto piugrave egrave in grado di svolgere attivitagrave

individuali senza ausili esterni e di prendere decisioni proprie di fronte a

problematiche semplici

In tale contesto di ricerca svolge un ruolo essenziale lo studio delle

interazioni tra il robot e lrsquoambiente circostante Le fasi di ricerca e sviluppo si

possono suddividere in tre fasi principali

bull lrsquoosservazione del naturale comportamento dellrsquoanimale in esame e

lo stretto contatto tra le sue abitudini(camminata corsa trotto) e il

suo habitat

bull la costruzione del progetto e lo sviluppo del modello rendendo il

piugrave possibile congruente le caratteristiche fisiche naturali con la

strumentazione a noi disponibile

bull la realizzazione pratica del progetto

Introduzione 10

Figura 1 Fasi di Osservazione Progettazione Realizzazione

Lrsquoemulazione del movimento e la reazione del robot agli impulsi che

dovragrave essere generata deve risultare il piugrave possibile simile al comportamento

naturale

Unitagrave funzionali di un robot mobile

Un primo approccio con un robot mobile ci porta ad individuare le parti

fondamentali che lo compongono Possiamo effettuare una prima distinzione tra

ciograve che deve necessariamente essere on-board1 e ciograve che invece puograve essere svolto

anche da terminale remoto

Oltre ad attuatori e sensori che obbligatoriamente devono trovarsi sul

robot sarebbe importante che anche lrsquounitagrave di controllo si trovi su di esso affinchegrave

1 Posto sulla struttura meccanica del robot

Introduzione 11

i tempi di risposta e le dispersioni nel canale di comunicazione vengano

minimizzate Da notare lrsquoimportanza di encoder2 che permettono una stima

odometrica3 della posizione e chiudono lrsquoanello di retroazione dei motori questo

tipo di controllo egrave chiamato dead-reckoning[1]

Sul nostro robot attualmente sono posizionati solamente i motori di

attuazione e un sensore di pressione posto sotto una delle quattro zampe si

prevederagrave in futuro lrsquoincremento di sensori di cui viene fornita in seguito una

specifica (Apendice A) Questa miglioria sensoriale giagrave prevista nel progetto da

noi svolto permetteragrave la sostituzione di valori finora forzati come inputcon veri e

propri feedback4

Lrsquounitagrave di map-building che ora egrave delegata ad un compiuter remoto ha il

compito di generare le traiettorie e spedire i valori alla Pic di controllo dei

motori5 le sue potenzialitagrave potranno essere incrementate da dati sensoriali di

visione o contatto con lrsquoambiente esterno

Sensori che permettono una corretta scansione dellrsquoambiente possono

essere di molte tipologie tra i piugrave comuni sonar scanner laser telecamere fisse o a

bordo (anche se egrave molto importante tenere in considerazione il peso di tale

dispositivi) Lrsquoutilizzo di sensori differenti e algoritmi di visione richiedono un

grosso apporto di calcolo computazionale che se fatto on-board potrebbe

compromettere il funzionamento real-time6

2 sensori di rilevamento della posizione 3 forniscono posizione in base ai dati sensoriali a disposizione 4 dati sensoriali percepiti dallrsquoambiente e rinviati allrsquounitagrave di controllo 5 scheda di interfacciamento Pc-attuatori 6 reazione in tempi reali agli impulsi

Introduzione 12

Figura 2 Unitagrave funzionali che caratterizzano un robot mobile autonomo

Ulteriore elemento utile in un robot mobile egrave la sua localizzazione che

solitamente richiede calcoli con rilevatori odometrici Nel nostro progetto ci egrave

stato di grande aiuto lo sviluppo con il sistema Matlab che mantenendo in

memoria variabili matriciali ci ha reso possibile il monitoraggio del baricentro nei

singoli movimenti Tramite queste valutazioni siamo riusciti a ricavare i valori

dellrsquoerrore durante lo spostamento nelle mappe locali dellrsquoambiente create[2][3]

Una volta noto lrsquoambiente e la posizione degli ostacoli (consideriamo

lrsquoambiente noto) si passa a pianificare il moto al fine di svolgere i compiti richiesti

dallrsquoutente[4][5] Gli algoritmi di pianificazione si dividono in due grandi

categorie

bull generativi noti lrsquoambiente e la posizione del robot generano

traiettorie che minimizzano i percorsi e i tempi di reazione

aggirando gli ostacoli[6][7]

bull reattivi adattano il moto del robot a nuovi ostacoli

In generale occorre combinare entrambe le tipologie utilizzando un

pianificatore generativo sulla mappa dellrsquoambiente a disposizione e un algoritmo

Introduzione 13

reattivo nella fase di inseguimento della traiettoria per rendere il robot pronto a

reagire a cambiamenti anche improvvisi dellrsquoambiente

Obiettivo del lavoro

Scopo di tale tesi saragrave quello di realizzare algoritmi per la camminata di un

robot quadrupede al fine di permettere la realizzazione di movimenti il piugrave

possibile reali e la creazione di ipotetiche traiettorie che il robot potragrave

intraprendere in ambienti noti a priori

Al fine di testare il corretto funzionamento dei nostri risultati ci siamo

posti come obiettivo la costruzione di ASGARD (Automatic Stable Gait of A Robot

quaDruped) robot quadrupede in progetto al Politecnico di Milano e di effettuare

prove reali sul campo

Robot quadrupedi richiedono una particolare e complessa analisi di

stabilitagrave ed uno studio approfondito sul controllo del movimento Con il nostro

progetto vogliamo garantire stabilitagrave statica e dinamica e controllare lo sforzo

reale dei motori da noi utilizzati Permettere in sintesi ad ASGARD di vedere la

luce e compiere i sui primi passi

Inoltre in questa tesi verranno sviluppati un algoritmo di map-building e il

pianificatore del moto generativo (non avendo a disposizione sensori di feedback

non possiamo implementare il reattivo) utilizzando algoritmi a contenuto calcolo

computazionale che permetteranno al robot di deambulare in un ambiente noto

senza sovraccaricare il sistema ed effettuando movimenti generati dal sistema in

real time scegliendo lrsquoopportuno passo da eseguire

Organizzazione della tesi

In questo lavoro discuteremo i metodi per modellare e analizzare robot

mobili la principale analisi si concentra su robot quadrupedi dotati di arti

Introduzione 14

autonomi fino ad arrivare allrsquoimplementazione di ASGARD (Automatic Stable

Gait of A Robot quaDruped) il robot del Politecnico di Milano Lo scopo egrave fornire

uno strumento di analisi di stabilitagrave statica e dinamica per la realizzazione di una

camminata in un ambiente noto e una prima struttura di algoritmi che in futuro si

occuperanno del controllo e delle iterazioni con il mondo circostante

Tematiche discusse nei successivi capitoli

Capitolo 1

Motivazioni che ci hanno portato alla scelta di costruire un robot

quadrupede e le sue strategie di camminate possibili

Capitolo 2

Una breve panoramica sui robot quadrupedi esistenti enfatizzando le loro

caratteristiche salienti in termini di posture e sensori e i loro algoritmi principali di

controlloal fine di delineare un adeguato quadro entro cui porre il robot del

Politecnico di Milano

Capitolo 3

Analisi delle caratteristiche meccaniche e funzionali di ASGARD

Capitolo 4

Definizione degli obiettivi fissati per il progetto e presentazione della

teoria necessaria per il corretto svolgimento

Capitolo 5

Descrizione della parte di implementazione del progetto dallrsquoapplicazione

della teoria esposta nel capitolo precedente alla scrittura del codice

Introduzione 15

Capitolo 6

Discussione dei risultati e su alcune proveeseguite a simulatore e su altre

misurazioni pratiche realizzate sul robot fisico

Capitolo 7

Migliorie possibili effettuabili in futuro e conclusioni finali dellrsquoautore

Appendice A

Ricerca eseguita su sensori disponibili sul mercato che potranno essere

integrati nel progetto

Appendice B

Presentazione del manuale di utilizzo e parte di codice significativa

generato in linguaggio Matlab 65

Capitolo 1 Sistemi di locomozione

Sistemi di locomozione 17

11 Scopi di studio della locomozione su zampe

Esistono diverse motivazioni che giustificano lo studio di robot su zampe

tre le principali[8] troviamo

bull mobilitagrave fondamentale caratteristica di un robot egrave riuscire a

lavorare e svolgere le sue mansioni in tutte le tipologie di

terreni da quelli lisci ai piugrave ostili in presenza di scale o gradini

e riuscire se possibile ad evitare ostacoli non solo aggirandoli

ma anche scavalcandoli Veicoli a ruote sono la soluzione

adeguata se si pensa a terreni piani o con inclinazioni continue

ma la struttura del nostro pianeta permette il loro utilizzo in

meno della metagrave delle terre emerse Se invece pensiamo alla

crosta terrestre essa egrave quasi completamente raggiungibile da

esseri viventi (uomini animali) dotati di gambe

bull punti di appoggio isolati che ottimizzano il supporto e la

trazione e non richiedono un continuo contatto con il suolo

come succede per le ruote

bull sospensione attiva che disaccoppia la traiettoria delle gambe

da quella del corpo rendendo possibile cioegrave lo spostamento

senza sollecitazioni del carico nonostante pronunciate

sconnessioni del terreno

Queste caratteristiche in molti casi rendono indipendenti le capacitagrave del

robot dallrsquoasperitagrave del percorso dando la possibilitagrave di maggiore efficienza in

velocitagrave anche in ambienti molto ostili

Analizzare le spiccate doti di agilitagrave e mobilitagrave di animali non risulta un

facile compito essi sono in grado di muoversi velocemente e con sicurezza nelle

piugrave svariate condizioni ambientali

Sistemi di locomozione 18

Figura 3 Particolari posture animali in condizioni ambientali ostili

Nostro principio di studio risulta essere cercare metodologie di emulazione

di tali doti e successivamente applicarle a robot quadrupedi cercare i compiti

simili di locomozione e tramite questi risultati percepire problematiche e trovare

soluzioni per la mobilitagrave di strutture artificiali[9]

In particolare un robot su zampe necessita di

bull controllo del movimento dei giunti

bull controllo dellrsquoequilibrio

bull ciclicitagrave dellrsquouso delle zampe

bull punti di appoggio noti

bull calcolo della possibile traiettoria percorribile

I sistemi legged7 risiltano in diversi ambiti molto utili ai settori di ricerca

dallrsquoIntelligenza Artificiale e Sistemi di cooperazione multi-agente a semplici

robottini in grado di svolgere un unico ma non meno significativo task8 come la

pulizia di una superficie la raccolta di un oggetto o la perlustrazione di aree

pericolose con la relativa raccolta dati

7 termine inglese per rappresentare sistemi robotica dotati di quattro zampe 8 compitoincaricoobiettivo da raggiungere

Sistemi di locomozione 19

12 Differenze e analogie tra locomozione a zampe e su ruote

La principale caratteristica che diversifica le due tipologie di robot egrave la

gestione dei movimenti Per i sistemi legged la realizzazione di un passo include

al suo interno un insieme di variabili di controllo per il movimento corretto dei

giunti e la corretta sincronizzazione dei movimenti delle zampe al fine di ottenere

una adeguata andatura

Figura 4 Rover a ruote Figura 5 Rover Spirit sulla superficie di Marte[10]

Durante il passo inoltre bisogna mantenere il controllo sulla stabilitagrave e

sullrsquoequilibrio (controlli del tutto assenti in un robot a ruote) monitorare i valori

di torsione dei singoli motori accertandosi che essi non superino le soglie limite e

valutare il punto di appoggio futuro Una volta costruito un passo il compito

ricade nel continuare a ciclarlo opportunamente al fine di portare a termine il

compito richiesto superando eventuali dissestamenti del terreno o ostacoli

Un robot a ruote invece egrave in grado solo di muoversi su terreni lisci e

richiede un maggior spazio per effettuare semplici manovre Di fronte a ostacoli

anche minimi il robot a ruote dovragrave effettuare la pianificazione di una traiettoria

Sistemi di locomozione 20

per aggirare lrsquoostacolo e impiegheragrave un tempo di reazione maggiore Se un robot

a ruote si troveragrave di fronte ad uno ostacolo saragrave costretto ad attivare calcoli

opportuni che gli permetteranno di costruire una strada alternativa per il

superamento dellrsquoimprevisto Un robot a zampe invece potragrave attivare gli attuatori

al fine di scavalcare se possibile lrsquoostacolo

Figura 6 Diverse strategie per oltrepassare un ostacolo

Altro aspetto di differenziazione tra le due tipologie di robot risulta essere

la mobilitagrave della piattaforma Alcune volte risulta essere utile mantenere il carico

in una inclinazione prestabilita (ad esempio il trasporto di un grave o il

mantenimento del centro ottico di una telecamera) Nei robot a ruote il corpo egrave

solitamente solidale con lrsquoasse delle ruote e si mantiene ad una distanza fissa dal

terreno seguendolo in ogni sua inclinazione Questo risulta essere una

caratteristica utile su terreni pianeggianti ma risulta sconveniente su terreni

curvilinei In questa circostanza risulterebbe utile disaccoppiare la piattaforma con

le ruote motrici al fine di mantenere costante lrsquoinclinazione del corpo principale

Questo disaccoppiamento egrave giagrave presente nella struttura dinamica del robot

a zampe dove la postura della piattaforma risulta essere la somma di due

contributi quali

bull scelta dei punti di appoggio

bull posizione cinematica assunta da ogni singola zampa in riferimento

alle caratteristiche del terreno

Sistemi di locomozione 21

Attraverso cioegrave la posizione delle zampe il robot egrave in grado di

ammortizzare le sconnessioni del terreno e dentro i limiti cinematici e di

mantenere lrsquoasse prescelto

Figura 7 Mobilitagrave della piattaforma

Esistono comunque analogie che accomunano le due strutture di robot

esistenti la principale risulta essere la ciclicitagrave dei movimenti Nei sistemi legged

dopo aver trovato un corretto movimento per la realizzazione di un passo egrave da

ricercare il periodo in cui esso dovragrave ripetersi al fine di ottenere una camminata

con andatura corretta Per un robot a ruote il periodo risulta invece essere

semplicemente la rotazione della ruota attorno al proprio asse A paritagrave di

ripetizione di un ciclo il risultato deve essere il ritorno nella posizione iniziale e

lrsquoincremento dello spazio di lavoro

Ulteriore analogia egrave il sistema odometrico Su ogni robot sono solitamente

posizionati un discreto numero di encoder per il rilevamento della posizione Nei

robot a ruote essi sono posizionati sullrsquoasse delle ruote mentre nei legged essi

sono inseriti nelle articolazioni dove sono posizionati i motori Si possono notare

differenze consistenti a livello di calcoli effettuati ma entrambi forniscono come

risultato la posizione effettivamente raggiunta Di particolare interesse per i

calcoli egrave la sequenza di comandi dati in input al variare di essi varia la postura

finale assunta

Sempre riguardo lrsquoodometria altra caratteristica comune egrave il calcolo

dellrsquoerrore esso viene calcolato in relazione ai valori di feedback dei sensori Si

puograve presentare di due tipologie

Sistemi di locomozione 22

bull sistematico dovuto a caratteristiche proprie meccaniche del robot

bull non sistematico dovuto alle iterazioni con lrsquoambiente circostante

Errori e cause di errori verranno trattati nei capitoli successivi

13 Analisi Trot gait di quadrupedi

Tra gli esseri viventi dotati di zampe presenti in natura[11] la nostra

analisi si concentra su animali che deambulano su 4 arti Essi rappresentano una

classe animale che sfrutta particolari doti fisiche e mentali per regolare la stabilitagrave

del corpo e lrsquoagilitagrave dei movimenti

Vengono presentate di seguito alcuni gait9 di quadrupedi su terreni piani e

lrsquoanalisi dei principali fattori che ne determinano le caratteristiche e le prestazioni

in termini di velocitagrave[12]

Le principali caratteristiche sullo studio di andature sono

bull Periodicitagrave il moto prevede la sequenza ciclica del movimento di

ogni singola zampa (passo)Ogniuna di esse egrave regolata da tre

variabili di giunto ciascuna delle quali segue a sua volta una

traiettoria periodica Complicazioni ulteriori emergono se si

considerano virate o terreni sdrucciolevoli

bull Stabilitagrave caratteristica di maggiore importanza nel caso di

locomozione a zampe essa egrave assicurata quando il baricentro del

robot cade allrsquointerno del poligono di stabilitagrave ovvero quando il

margine di stabilitagrave egrave maggiore di zero Il margine di stabilitagrave

dipende dalla posizione in cui il robot si trova se fermo o in

movimento Se il robot egrave fermo tale margine si calcola come la

distanza piugrave breve dal baricentro al perimetro del poligono di

9 Andatura con passi specifici

Sistemi di locomozione 23

stabilitagrave in qualsiasi direzione durante il moto si considerano solo

le distanze nella direzione del moto (margine di stabilitagrave

longitudinale)

bull Traiettoria della zampa la traiettoria dellrsquoorgano terminale di una

zampa (piedino) si compone di tre fasi principali

bull alzata

bull avanzamento

bull appoggio

la prima ha il compito di sollevare il piede da terra la seconda

permette lrsquoavanzamento della zampa ed infine nella terza il piede

viene riposizionato a terra nella posizione base per reiterare il

procedimento

In relazione al profilo scheletrico di un vertebrato mammifero

generalizzato esso egrave in grado deambulare in diverse andature[13]

Non troppo dissimile dallrsquoarchitettura di cani cavalli o gatti il nostro robot

presenta perograve lrsquoarticolazione della spalla ruotata di 90 gradi rispetto al mammifero

comune questo gli permette di mantenere un notevole grado di stabilitagrave in quanto

incrementa il suo possibile convex hull10 ma ci obbliga a studiare un nuovo tipo

di movimento per il passo base

Inoltre il piede di appoggio risulta essere di notevoli dimensioni rispetto

alla zampa al fine di sopportare ottimamente il peso del corpo sovrastante

In base alla stabilitagrave durante il movimento la andatura di un 4-legged puograve

essere classificata in tre diverse classi principali

bull andatura quasi statica

bull andatura quasi dinamica

bull andatura dinamica

10 poligono che rappresenta la base drsquoappoggio

Sistemi di locomozione 24

131 Studio andatura quasi-statica

Una andatura si dice quasi-statica se il centro di massa della nostra

struttura cade allrsquointerno del poligono di stabilitagrave che si viene a creare

congiungendo i punti di appoggio Con questa tipologia di camminata siamo certi

che il robot assorbiragrave le possibili perturbazioni del moto con un piugrave ampio

margine di stabilitagrave

uesta andatura egrave quella riprodotta in laboratorio sul nostro soggetto le

ragioni che ci hanno portato a questa scelta oltre ai vantaggi precedentemente

citati sono

bull moderata velocitagrave

bull buona risposta in tempo degli attuatori

Per implementare le fasi di camminata abbiamo analizzato ed elaborato il

gait 4-time11 di un mammifero comune essa si basa su quattro movimenti un LF

(di sinistra-anteriore) un RR (di destra-posteriore) una RF (di destra-anteriore)

un LR (di sinistra-posteriore) quindi una ripetizione

In questo movimento si noti che lrsquoequilibrio e il supporto egrave effettuato dal

LR+RF ldquodiagonalerdquo mentre i piedini di RR e di LF sono sospesi [ posizioni 1 2 ]

e dalla diagonale opposta per gli altri 2 piedini [ posizioni 5 6 ]

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

11 Gait 4-time camminata divisa in quattro fasi

Sistemi di locomozione 25

Figura 8 Nei nove diagrammi viene descritta la completa sequenza di camminata

partendo con la zampa sinistra Le posizioni 1 e 2 mostrano la diagonale destra 3 diagonale

destra e anteriore sinistra 4 laterale sinistra 5 e 6 diagonale sinistra 7 diagonale sinistra e

anteriore destra 8 laterale destra 9 ritorno nella posizione di partenza

Questa andatura presenta un tipico movimento sinusoidale del baricentro

del corpo nel piano trasversale

In base alla configurazione del nostro robot esso non presenta una colonna

vertebrale snodabile lrsquoanalisi prodotta ci ha potato alla creazione di una andatura

che non modifica lrsquoasse su cui giace il centro di massa

132 Studio andatura quasi-dinamica

La seconda classe di camminata raggruppa andature per cui la proiezione

del centro di massa cade in alcune fasi del passo sul lato del poligono di stabilitagrave

Sistemi di locomozione 26

In queste situazioni un incorretto posizionamento degli attuatori o una

minima perturbazione potrebbe causare una perdita di stabilitagrave per questo bisogna

intervenire in tempistiche ridotte trovando soluzioni che riducano gli effetti

La velocitagrave che si riesce ad ottenere deriva da un passo di camminata

leggermente piugrave ampio eseguito in un tempo minore di frame12 pur mantenendo

quasi inalterate le fasi di esso

133 Studio andatura dinamica trotto

La classe di andatura dinamica rappresenta invece lrsquoandatura piugrave veloce

presente in natura[14] essa si basa sul concetto di tempo di volo in cui solo due

zampe o addirittura tutto il corpo non tocca il terreno andatura tipica nella corsa

di mammiferiVenendo a mancare il triangolo di appoggio bisogna trovare un

abile compromesso tra inerzia velocitagrave e potenza muscolare al fine di evitare la

perdita di equilibrio e lo slittamento delle zampe sul terreno

12 istanti temporali in cui si attua lrsquoanalisi completa

Sistemi di locomozione 27

Figura 9 Nelle posizioni 1 e 3 vengono mostrate la diagonale destra e sinistra come

supporto al trotto Le posizioni 2 e 4 mostrano il momento di flying trot che egrave raramente

osservabile a causa della velocitagrave dei movimenti Le posizioni 5 e 6 mostrano un passo di

corsa piugrave tranquillo che puograve essere eseguito da un cane stanco o non troppo motivato

Capitolo 2 Stato dellrsquoarte dei four legged robot

Stato dellrsquoarte dei four legged robot 29

21 Panoramica dei Robot quadrupedi esistenti

In questo capitolo verragrave presentata una carrellata dei moderni sviluppi

riguardanti la 4-legged robotics13

Proponiamo i progetti piugrave significativi a cui ci siamo riferiti per lrsquoanalisi e

lo sviluppo della camminata e i robot piugrave moderni che vengono utilizzati come

banchi di prova per progetti di intelligenza artificiale e multi-collaborazione che ci

potranno essere utili per evoluzioni future del nostro ASGARD

211 Collie-1 e Collie-2

Giagrave dalle prime ricerche nellrsquoambito della robotica umanoide la

realizzazione di una camminata naturale egrave stata ampiamente presa in

considerazione Nella seconda metagrave degli anni ottanta abbiamo trovato il primo

utilizzo di DC servos per la realizzazione di prototipi per la camminata dinamica

Collie-1 e la sua evoluzione Collie-2[15] Basandosi sul concetto di camminata

suddivisa come statica e dinamica lo studio ha messo in evidenza come la

camminata dinamica richiede un surplus di energia e una maggior velocitagrave di

esecuzione ponendo particolare interesse ai valori di stabilitagrave velocitagrave massima e

consumo energetico che sono alcuni dei parametri anche da noi presi in

considerazione nel nostro progetto Nello sviluppo di Collie le relazioni tra questi

criteri e i parametri (gait speed period stride length of the leg joint angles etc)

hanno portato alle seguenti deduzioni riguardanti al camminata dinamica

a) Minore egrave il periodo in cui avviene la camminata migliore egrave la stabilitagrave del

quadrupede

Ersquo desiderabile camminare con un lungo periodo e compiendo ampi passi

per riuscire ad accrescere la velocitagrave massima

13 settore della robotica che si occupa di robot a 4 zampe

Stato dellrsquoarte dei four legged robot 30

b) Crsquoegrave un periodo in cui la velocitagrave egrave massima

c) Crsquoegrave un periodo in cui si minimizza il consumo energetico per fornire

velocitagrave

d) Trot gai14t egrave desiderabile quando la prioritagrave egrave in primo piano rispetto al

consumo energetico

Pace gait15 egrave raccomandata quando la prioritagrave energetica egrave al di sopra

della velocitagrave massima

Gli esperimenti per appurare la validitagrave di queste affermazioni sono stati

effettuati con il robot Collie-2 che fisicamente presenta 3 joint16 attorno allrsquoasse di

pitch (beccheggio) e 2 joint attorno allrsquoasse di roll (rollio) per ogni gamba con un

potenziometro montato per ogni gamba e motori DC servos sistemati sui 3 joint

sullrsquoasse trasversale e 1 joint sullrsquoasse sagittale

Figura 10 Collie 2 vista semi

frontale Figura 11 Collie 2 di

fronte

Figura 12 camminata vista

laterale

14 andatura veloce di trotto 15 camminata tranquilla da crocera non veloce 16 giunto

Stato dellrsquoarte dei four legged robot 31

212 Quadrupede MIT

Realizzato al MIT (Massachusset Institute of Technology) negli anni 1984-

1987 [16] egrave composto da un unico grado di libertagrave per zampa a cui si aggiunge un

meccanismo a basso livello di coordinazione del piedino Ersquo stato sviluppato per

esplorare il funzionamento su quatto zampe e le transizioni tra tipologie diverse di

gait quali il trottino (accoppiamento zampe diagonali) pacing (accoppiamento

laterali) bounding (accoppiamento anteriore posteriore) fornendo consistenti

informazioni sulle diverse posture[17]

Figura 13 Immagine laterale camminata

robot dequadrupe del MIT

Figura 14 basato su llo stesso

meccanismo del robot del MIT Scout

prodotto allrsquoumiversitagrave di Monteal

sviluppa ampliamente il concetto di

bounding gait[18]

213 GEO

Iniziata la costruzione del progetto nel 1994 a USC GEO I [19]

presentava due grandi innovazioni una spina dorsale flessibile e zampe

riconfigurabili Queste due caratteristiche permettono al robot di emulare la

camminata di una salamandra cioegrave di far seguire al proprio baricentro un

andamento sinusoidale quando invece una zampa egrave posizionata sotto il corpo il

robot puograve deambulare come un comune mammifero quale ad esempio il cane

Stato dellrsquoarte dei four legged robot 32

Questa particolare possibilitagrave di cambiamento di tipologia di camminata egrave

rimasta nellrsquoevoluzione del modello GEO II che risulta essere molto piugrave leggero

del suo predecessore dotato si sensori di forza nei piedi e possibilitagrave di

interazione con il mondo esterno tramite reti neurali

Figura 15 GEO I nel superamento di un

ostacolo

Figura 16 GEO II in posizione base

214 Quadrupede Kimura lab

Dal Giappone e piugrave precisamente dal laboratorio di Kimura[20]

compaiono i robot piugrave avanzati in grado di camminare su terreni estremi quali

ciottolati erbe sparse o pavimentazioni sconnesse utilizzando sensori di visione I

principali in evoluzione sono Tekken-II azionato da servomotori e pilotato

manuale usando un regolatore radiofonico Futaba Le particolaritagrave di questo robot

sono il giunto della caviglia passivo con il meccanismo molla-smorzatore17 il

posizionamento di un meccanismo della molla intorno al giunto del ginocchio

dellrsquoanca al fine di ridurre il consumo di energia Sul corpo presenta diversi

sensori Tasso-girobussola per 3 ascie e 2 inclinometri per le ascie del rullo e del

passo 1 sensore per il contatto di asse egrave fissato su ogni piedino Della stessa

famiglia adatti perograve a terreni scoscesi e ondulati ricordiamo inoltre Patrush I e

Patrush II rispettivamente degli anni 2000 e 2001

17 principio fisico che attenua le sollecitazioni e incamera energia che puograve essere

successivamente sfruttata

Stato dellrsquoarte dei four legged robot 33

Figura 17 Patrush I vista

semifrontale

Figura 18 Tekken II vista laterale

22 Algoritmi di controllo CPG for four legged robot

Testato successivamente sulle potenzialitagrave di GEO II egrave stato realizzato nel

2002 il modello CPG (Central Pattern Generation)[21] che sostituisce lrsquounitagrave

centrale del controllo del sistema nervoso presente negli animali Esso propone

che lrsquoadattamento di un animale allrsquoambiente circostante puograve essere modellizzato

come un modulo adattativo (AMs Adaptative Modules) che agisce su un sistema

distribuito di oscillazioni chiamate Adaptative Ring Rules (ARRs) che simulano

semplici riflessi Lrsquoutilizzo e la costruzione di questa rete neuronale ha mostrato

come un sistema puograve auto programmarsi attraverso interazioni con lrsquoambiente

Lrsquoadattamento fa emergere spontaneamente alcuni stati discreti come il

movimento del busto la scelta tra un passo corto e la camminata da crociera e le

coordinate per un singolo giunto

Il risultato di questo modello egrave che ha permesso a un quadrupede di

imparare a camminare in pochi minuti

Basandosi su innumerevoli trattati sullo sviluppo degli impulsi del sistema

nervoso dei mammiferi (Bekoff 1985Cohen 1988) Lewis egrave riuscito a riprodurre

una rete che tenta di emulare le fasi standard e principali del comportamento

Stato dellrsquoarte dei four legged robot 34

animale in relazione ad alcuni stimoli esterni e di riuscire a comunicare questi

impulsi nervosi ai relativi attuatori per creare lrsquoazione Tuttora diversi studi sono

ancora in atto per perfezionare questa tecnica introducendo apprendimento per

rinforzo

Si puograve modellizzare il CPG come una rete di unitagrave funzionali chiamate

unit CPGs (uCPGs) Riferendosi alla figura 18 2 uCPGs sono denominate con

Tw+ e Tw- insieme esse producono il coordinamento principale del robot e

giocheranno un ruolo base nellrsquoacquisizione della camminata Alle uCPGs sono

collegati archi che rappresentano il collegamento ai muscoli estensori delle

diverse articolazioni Questi archi rendono possibile quindi il collegamento delle

unitagrave del busto con quelle del ginocchio etc

Lrsquooutput dei muscoli viene trasformato attraverso una funzione di uscita in

comandi di movimento Questi a loro volta sono ricombinati per creare impulsi

compatibili con i servos dellrsquoancae del ginocchio

Sono introdotti nella rete ulteriori parametri che servono per adattare la

rete a diversi robot

Stato dellrsquoarte dei four legged robot 35

Figura 19Organizzazione del sistema di controllo Il sistema di controllo del robot

presenta una rete di uCPG Ogni cerchio presenta un uCPGs Connessionitrasmissione di

informazioni sono visualizzate come freccie Ogni funzione Ψ converte una informazione in

comandi per i motori I comandi dei motori sono combinati insieme per produrre una

sequeza di livelli di posizione per ogni anca e ginocchio Abbreviazioni KFmuscolo flessore

ginocchio KEmuscolo estensore ginocchio HEmuscolo estensore dellrsquoanca HFmuscolo

flessore dellrsquoanca TW+torsione positivo TW-torsione negativo

Per definire meglio il controllo sono stati realizzati schemi che si basano

su controlli di posizione sulla reattivitagrave dei riflessi e sullrsquoadattamento della

torsione al modulo ambiente

Per realizzare lrsquoultimo modello egrave necessario introdurre ARRs cioegrave il

modulo adattativo dellrsquoambiente attraverso un ulteriore unitagrave computazionale

costituita da tre componenti

Stato dellrsquoarte dei four legged robot 36

Figura 20 Lrsquouso di un innato interno modello per lrsquoadattamento di CGPs La figura

mostra i componeti di un AM

Il primo componente egrave il Forward Model il quale usa una efficiente copia

di una uCPGs per predire il feedback sensoriale il secondo il Comparison egrave a tutti

gli effetti un comparatore tra il feedback sensoriale e il feedback atteso il terzo egrave

una regola che utilizza il risultato della comparazione per modulare la uCPGs in

questione

LrsquoARRs genera un segnale di output che viene indirizzato agli attuatori o a

semplici circuiti che seguono per il controllo sensoriale e rimane in attesa di

ricevere un segnale di ritorno proveniente dai sensori Il segnale di output puograve

anche essere emesso nellrsquoambiente come decisone di movimento per eventuali

robot ad esso sottomessi La creazione di movimenti puorsquo cosigrave migliorare

introducendo nuovi modelli di controllo quali adattamento della lunghezza del

busto per il coordinamento delle gambe e fase di aggiustamento

Questi modelli sono stati realizzati su robot che presentano caratteristiche

mostrate nella seguente figura e che possono essere ritrovate in GEO II

Stato dellrsquoarte dei four legged robot 37

Figura 21 Postura dei Principali Rilessi Tre tipi di simmetria sono applicati per la

distribuzione del pesoDiagonal comparazione dei piedi diagonali Anteriore verso posteriore

comparazione dai piedi anteriori ai posteriori e sullo Stesso lato comparazione dei piedi

sulla destra rispetto quelli sulla sinistra Il numero vicino ad ogni piede denota il numero del

piede

La parte per noi piugrave interessante risulta essere la postura dei riflessi statici

I risultati mostrano come viene distribuito il peso del robot sui piedi di appoggio

Inizialmente quando il robot egrave appoggiato completamente al suolo il peso risulta

essere equamente distribuito In altri casi appariranno disturbi causati da carichi

aggiuntivi come posizione del cavo di alimentazione o piugrave semplicemente alzata

della zampa per compiere un passo

Stato dellrsquoarte dei four legged robot 38

Figura 22Postura dei Riflessi Grafico che mostra la distribuzione del peso rulle

zampe del robot

Questo grafo ci rappresenta come la variazione della postura del robot

influenzi i carichi su ciascuna zampa nella nostra analisi ritroveremo un grafico

simile al precedente quando analizzeremo le forze agenti sui motori nel modello

di Newton-Eulero GEO II presenta perograve un vantaggio considerevole durante i

movimenti il robot attua una fase di ldquoaggiustaggiordquo in cui riassesta il busto per

riequilibrare la distribuzione del peso su tutte le zampe non creando scompensi

23 Robocup e Sony Aibo

RoboCup[22] egrave unrsquoiniziativa internazionale di formazione e di ricerca Egrave

un tentativo di promuovere lrsquoAI18 e lrsquoautomatismo intelligente Basati sul concetto

che una squadra di robot giochi a soccer allrsquointerno di ambienti reali o simulati le

tecnologie che vengono coinvolte devono comprendere nei loro progetti i principi

di agenti autonomi collaborazione multi-agente aquisizione di strategie

ragionamento in tempo reale e automatismo

18 Intelligent Agents

Stato dellrsquoarte dei four legged robot 39

Ersquo in RoboCup che si egrave vista la prima squadra fornita di gambe

Largamente utilizzati per la realizzazione di sistemi multiagenti dotati cioegrave di

complessi programmi di intelligenza artificiale sono i famosi Aibo Sony

Figura 23 Robot Aibo Sony durante una partita alla Robocup

Aibo egrave il miglior prodotto della Sony 4-legged robot essa coinvolge le piugrave

moderne tecnologie per concepire un amico completamente autonomo per

accompagnare ed intrattenere lrsquouomo nella vita giornaliera

Il centro di intelligenza artificiale di Aibo egrave il software Mente2 situato su

una memoria stick removibile Esso controlla il suo comportamento le sue abilitagrave

e le relative caratteristiche che possono essere incrementate con un corretto

addestramento da parte dellrsquoutente Aibo infatti implementa al suo interno un

algoritmo di apprendimento per rinforzo

Nella vita giornaliera questo software gli permette di intrattenere e

comunicare con chiunque riconoscendo intelligentemente i volti e le voci dei suoi

padroni

Per le sue particolari proprietagrave quali vedere sentire registrare suoni

oggetti e facce e riflettere una vasta gamma delle emozioni attraverso la relativa

faccia Condur-guidata19 Aibo egrave in grado di familiarizzare con ogni tipo di

ambiente ambiente e trasformarsi in ogni senso in un individuo vero e unico

19 pilotati da software intelligenti diversi led rappresentano espressioni emotive

Stato dellrsquoarte dei four legged robot 40

231 Storia

Ma vediamo come nasce Aibo[23]Le sue radici risalgono agli inizi degli

anni novanta quando gli ambienti tecnologici erano agli albori riguardo la

creazione di applicazioni per lrsquointrattenimento umano Fu Dr Doi il capo dell

Sonyrsquos Digital Creature Lab ad implementare in un unico automa i nuovi

progressi in termini di processori intelligenza artificiale riconoscitori vocali e

tecnologie di visione al fine di creare un robot autonomo

Durante la fase iniziale nel 1992 gli ingegneri della Sony progettarono

alcuni importanti cambiamenti radicali Nei primi anni novanta robot con camere

e ruote erano riprogrammati per ogni attivitagrave o task in cui essi venivano impiegati

I nuovi progetti includevano la capacitagrave di un robot di deambulare su zampe e

lrsquointerazione con programmi di IA capaci di interagire con alcuni organi sensoriali

come il tatto la vista e il suono Solo verso il 1997 il primo prototipo portograve alla

luce gli enormi sforzi di ricerca e sviluppo Dr Doi indirizzograve tutta la sua ricerca

nella costruzione e nel design di un amichevole robot autonomo Il suo primo

prototipo aveva sei gambe ed era il primo passo per la creazione di un robot a

zampe Dopo questo primo rudimentale modello il team Sony studiograve un design

innovativo e analizzograve ciograve che il robot poteva o non poteva fare per incrementare le

potenzialitagrave celebrali ed espandere le funzionalitagrave hardware e software

Lrsquooriginale modello Aibo ERS-110 fu presentato nel 1999 e rapidamente

si diffuse in tutto il mondo con lo slogan di essere un grande compagno di giochi e

intrattenimento entrando anche a far parte del guinnes dei Primati Lrsquo Europa vide

la sua apparizione il 26 Ottobre 1999 Solo un mese dopo dallrsquoenorme successo

riscontrato fu presentato un ulteriore modello ERS-111 per il target mondiale

Nellrsquoottobre del 2000 venne alla luce la seconda generazione di Aibo ERS-

210 che inglobava miglioramenti di mobilitagrave sensori di tatto led facciali

programmi di risposta sensoriale al mondo esterno tramite espressioni visive

funzioni di memorizzazione delle parole e riconoscitore vocale[24]

Stato dellrsquoarte dei four legged robot 41

I modelli LATTE e MACARON (ERS-311 a ERS-312) entrarono a far parte

della famiglia nel Settembre 2001 i loro nomignoli li rendono dolci e adorabili da

coccolare includendo comunque tutte le caratteristiche dei loro predecessori

Lrsquo8 Novembre 2001 egrave nato lrsquoultimo membro della famiglia Sony che

include le piugrave sofisticate performance e capacitagrave Il modello ERS-220 dotato di un

look futuristico presenta al suo interno una moltitudine di azioni altamente

avanzate e un alto numero di luci e sensori che lo fanno diventare il modello piugrave

sofisticato di robot quadrupede sul mercato[25]

Stato dellrsquoarte dei four legged robot 42

Sviluppo dei modelli Aibo dai primi anni novanta a oggi

Robot Sony Aibo modello a sei zampe

Robot Sony Aibo ERS-110

Robot Sony Aibo ERS-111

Robot Sony Aibo ERS-210

Robot Sony Aibo ERS-31x

Robot Sony Aibo ERS-220

Stato dellrsquoarte dei four legged robot 43

Figura 24 Zoom sulle caratteristiche presenti negli ultimi ritrovati

Specifikace

bull Head touch sensor bull Color Camera bull Stereo microphone bull Speaker bull Pause button bull Back sensor bull Lithium ion battery pack bull Tail sensor bull Memory Stick slot for AIBO bull PC card slot ndash bull slot pro PCMCIAPC-kartu

CPU 64-bitovy RISC procesor memory 32MB SDRAM weight - 15 kg ( baterie a Memory Stick (approx33lb)) dimension 152x266x274mm

Stato dellrsquoarte dei four legged robot 44

232 Descrizione dei sensori di Aibo

Il robot egrave stato progettato in modo da assomigliare ad un vero e proprio

essere vivente Esso egrave quindi dotato di svariati sensori mediante i quali puograve

comunicare con lrsquoambiente e reagire agli stimoli esterni[26]

Il sistema di controllo di Aibo utilizza i microprocessori per controllare

lrsquoinput dai dispositivi quali

bull Macchina fotografica del video a colori CCD20

bull microfono stereo

bull sensore termometrico

bull sensore infrarosso

bull sensore giroscopico di accelerazione

2321 Visione della macchina

Aibo ha una macchina fotografica digitale a colori montata nella sezione

ldquotestardquo I dati di immagine da questa macchina fotografica sono vitali nella

generazione dellrsquoesperienza interattiva tra il robot e il mondo Il video input egrave

analizzato per identificare lrsquooggetto o ldquoun punto caldordquo i motori robot spostano la

testa per dare lrsquoapparenza che il Aibo stia osservando Il robot inoltre egrave fornito di

un sensore infrarosso di distanza per rilevare gli ostacoli e per evitare di collidere

con essi

20 Charge Coupled Device attraverso una piastrina di silicio dotata di sensori le immagini

vengono digitalizzate in relazione a posizione colore e intensitagrave

Stato dellrsquoarte dei four legged robot 45

Figura 25 CCD camera a colori

Figura 26 Microfoni montati sugli assi

2322 Riconoscimento audio

Aibo egrave dotato di un accoppiamento di microfoni uno da ogni lato della

calotta cranica Questi generano unrsquoimmagine stereo del suono ricevuto che aiuta

nel localizzare la fonte di emissione Ersquo presente un regolatore di distanza per

permettere al robot di porre limiti per frasi da riconosce come ordini

2323 Tatto

Il rilievo sensibile al tocco sulla parte superiore della testa del Aibo egrave un

altro meccanismo attraverso cui riceveragrave input sensoriali In base a come questo

sensore egrave toccato un Aibo riceve i dati che registrano le risposte positive o

negative rispetto ldquoal suo comportamento precedenterdquo imitando le dimostrazioni

affetto o rimprovero

Stato dellrsquoarte dei four legged robot 46

Figura 27 Il bottone blu egrave uno switch per il sensore di pressione

2324 Movimento e sviluppo

Molti dei movimenti del Aibo sono simili a quelli di un animale domestico

un cane o un gatto Un Aibo accede e fa funzionare algoritmi di movimento che

dettano il moto delle relative membra controllando i motori siti nei piedini nella

testa e nella coda In modo indipendente e autonomo il robot si muove attraverso

parecchie fasi per un periodo di tempo Quando ldquosupportatordquo dal suono (comandi

o musica) riesce ad intraprendere movimenti a lui noti e ad imparare nuove

posture piugrave specializzate come sottoposto ad un vero e proprio addestramento

Figura 28 Particolare coda

Figura 29 Sensori del piedino

Capitolo 3 Architettura del robot ASGARD

Architettura del robot ASGARD 48

31 Configurazione del robot quadrupede

Analizziamo ora le caratteristiche del quadrupede realizzato presso lrsquoAir

Lab21 del Politecnico di Milano Nei paragrafi che seguono verranno descritte le

sue caratteristiche implementative che ne hanno permesso la realizzazione e il

controllo

Il progetto egrave stato avviato di recente di conseguenza il robot presenta

ancora notevoli problematiche di stabilitagrave e attuazione tramite servo attuatori

Hitec

311 Struttura Meccanica

La struttura di ASGARD egrave composta da parti ricavate da lastre di

policarbonato di cui presenteremo le caratteristiche nel paragrafo seguente e

incollate con speciale solvente

Il progetto della struttura di Marco Piralli [27] ha permesso al nostro robot

di avere una struttura simile a diversi esseri naturali

Figura 30 Progetto Robot completo di Pialli (sinistra) e dettaglio dellrsquoarticolazione (destra)

21 Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano sede

Leonardo sito in Lambrate

Architettura del robot ASGARD 49

Esso egrave dotato di 12 gradi di libertagrave tre per ogni zampa simili a quelli di

Aibo eccetto la spalla Questi gradi di libertagrave ci permettono di far compiere al

robot movimenti su tutti e tre gli assi La spalla in particolare ci permette tutti i

movimenti nel piano sagittale (detto anche piano laterale movimento fronte-retro)

Mentre le altre due articolazioni permettono movimenti nel piano frontale

(movimento lato-lato) e in quello trasversale

Questa serie di attuazioni da la possibilitagrave al robot di essere indipendente

nel movimento di ogni singola zampa e un ulteriore grado passivo nella zampa

permette di affrontare le differenti tipologie di terreno

Il collegamento tra attuatori e struttura risulta essere diretta senza cioegrave

lrsquoausili di tendini il rotore del motore egrave direttamente connesso alla articolazione

studiata per alloggiare il motore al suo interno

Figura 31 Particolari sulle locazioni e i sostegni degli attuatori nel giunto di

spalla(sinista) e ginocchio caviglia (destra)

Architettura del robot ASGARD 50

Giunto 9Giunto 12

Giunto 3

Giunto 6

Giunto 1

Giunto 2 Giunto 4

Giunto 5

Giunto 7

Giunto 8 Giunto 11 Giunto 10

Figura 32 Posizionamento dei giunti nel robot reale

312 Attuatori

Come illustrato in Figura 32 gli attuatori necessari al movimento di

ASGARD devono risultare leggeri e disposti in modo da non intralciare gli

eventuali movimenti I singoli attuatori sono costituiti da un motore servo da una

molla torsionale e da uno smorzatore senza essere perograve dotato di encoder

incrementale Con questo sistema non egrave possibile realizzare un preciso controllo

di posizione istante per istante ma egrave possibile ottenere una rigidezza di giunto non

infinita

I motori da noi utilizzati sono da 44 Kg bull cm HITEC HS 475HB Standar

Delux[28] abitualmente utilizzati in ambito di modellismo Le cui caratteristiche

sono qui sotto riportate

Architettura del robot ASGARD 51

Caratteristiche principali HS457 HB

Control system Operatine voltage range Operatine speed Stall torque Idle current Running current Stall current Dimensions Weight

+Pulse width control 1500usec neutral 48 V to 60 V 023 sec60(load) 018 sec60(no load) 44 Kg cm 55 Kg cm 74 mA (stopped) 77 mA(no load) 180 mA60 (load) 160 mA60(no load) 900 mA 388x198x36 mm 40 g

Figura 33 Attuatore HS 475 HB visto in sezione (sinistra) e come si presenta sul

nostro robot (destra)

Architettura del robot ASGARD 52

313 Materiale Policarbonato

Per la realizzazione del robot egrave stato scelto un materiale innovativo

resistente agli urti e alla trazione che puograve in questo modo resistere alle

sollecitazioni esterne e alle vibrazioni causate dalla camminata su terreni aspri

Oltre le potenziali caratteristiche di resistenza ha la dote di essere

estremamente leggero e di riuscire ad assemblarsi tramite apposito solvente

Questo permette alla struttura chimica di una superficie di scomporsi e di legarsi

in modo stabile alla struttura di una ulteriore lastra ricreando una struttura

compatta e indissaldabile

Proprietagrave policarbonato[29]

Carico limite di snervamento Nmmsup2 gt60

Resistenza alla rottura Nmmsup2 gt70

Allungamento a snervamento 6 hellip 8

Allungamento a rottura lt100

Modulo elastico Nmmsup2 2300

PROPRIETA MECCANICHE

Resistenza allrsquourto IZOD con intaglio Jm 700

Peso specifico gcmsup3 120

Indice di rifrazione 159

Assorbimento idrico (24h - 23degC) per immersione

036 PROPRIETA

FISICHE

Permeabilitagrave al vapore drsquoacqua (spessore 01m 24h)

gmsup3 15

Temperatura di resistenza al calore vicat VSTB

degC 145hellip150

Espansione termica lineare 1degC 67 X 10

PROPRIETA TERMICHE

Conducibilitagrave termica WmdegC 021

Architettura del robot ASGARD 53

32 ASGRAD in numeri

Le caratteristiche fisiche di Asgard si possono cosigrave riassumere

Busto

Larghezza 1210 cm

Lunghezza 2290 cm

Zampe

Link num 1 573 cm

Link num 2 675 cm

Link num 3 735 cm

Piede 350 x 415 cm

Spessore 4 mm

Peso

Corpo in policarbonato 660 g

Attuatori 480 g

Scheda Pic 20 g

Peso Complessivo 1180 Kg

Angoli dei giunti nella posizione di riposo

Giunto spalla 0deg

Giunto ginocchio 45deg

Giunto caviglia 45deg

Architettura del robot ASGARD 54

735 573 675

2290 122

121

Figura 34 Specifiche di ASGARD vista dallrsquoalto

1212 cm

Figura 35 Vista frontale di ASGARD

Architettura del robot ASGARD 55

33 Hardware

Attualmente non esiste un vero e proprio controllo on-board in grado di

generare traiettorie ma una PIC [30] sita su di esso il cui scopo egrave quello di

interpretare i segnali di comando in uscita dal nostro codice Matlab e di

trasformarli in impulsi (PWM) da inviare ai motori

Figura 36 Sistema di controllo dei motori Nellrsquoambiente Matlab sono stati inseriti dei comandi manuali di posizionamento il programma gestisce la generazione delle traiettorie e i comandi vengono inviati alla PIC Questa si occupa di generare e inviare ai motori gli impulsi che ne garantiscono il posizionamento

Unitagrave di controllo

Alimentazione

Porta seriale

Max 232

PIC

18F4x28 40L DIP

A T T U A T O R I

Figura 37 Schema a blocchi della PIC di controllo

Architettura del robot ASGARD 56

34 Software

La creazione del nostro algoritmo rappresenta la prima implementazione di

codice in merito al progetto del robot quadrupede in esame

Per il collegamento diretto e il pilotaggio di motori servo tramite la porta

seriale abbiamo usufruito di un codice elaborato precedentemente e implementato

sulla PIC

Questo programma egrave costituito da cicli di attesa da parte della PIC stessa

per la ricezione dei comandi e da un canale di ritorno in cui essa comunica al Pc

la corretta trasmissione dellrsquoimpulso

Una miglioria sullrsquoanalisi implementativi ci ha permesso di spingere la

velocitagrave di comunicazione fino a 14400 bitsec

Il nostro programma di analisi e simulazione dei passi analizza le

caratteristiche fisiche di movimento del nostro robot generando i movimenti

opportuni che gli permetteranno di deambulare stabilmente nellrsquoambiente

Un ulteriore ricerca ci ha portato a realizzare una funzione di calcolo delle

traiettorie in ambiente noto che dagrave la possibilitagrave a ASGARD di decidere in real-

time il passo da intraprendere nel singolo istante

Questo puograve essere considerato il primo passo verso un algoritmo di

Intelligenza Artificiale per il nostro robot

Il sistema di controllo dellrsquoandatura di un robot con zampe si puograve cosigrave

scomporre in tre livelli distinti

Architettura del robot ASGARD 57

SUPERVISORE

bull Traiettoria bull Parametri dellrsquoandatura

COORDINATORE bull Controllo della stabilitagrave bull Traiettoria dellrsquoestremitagrave delle

zampe

LIVELLO DELLE ZAMPE bull Cinematica inversa bull Controllo dinamico bull Comandi agli attuatori

35 Stato Attuale

Allo stato attuale il robot egrave stato completato e dotato di sensore di

pressione posto sotto la zampa anteriore sinistra Le tempistiche di risposta della

scheda PIC presentano non poche difficoltagrave a carattere di controllo I motori da

noi utilizzati ricevono in input solo il valore della posizione ed egrave pertanto

impossibile effettuare controlli su velocitagrave ed accelerazione

Ersquo risultato comunque possibile dopo una attenta analisi di stabilitagrave la

creazione di un ciclo di passi che ha permesso ad ASGARD di compiere la sua

prima camminata

Capitolo 4 Modellizzazione cinematica e dinamica

Modellizzazione cinematica e dinamica 59

41 Convenzioni e simbologia utilizzata

Data la natura del robot saragrave essenziale fornirne una corretta analisi

matematica e robotica per mantenere una certa coerenza e chiarezza verranno

utilizzate le seguenti convenzioni

bull Il pedice indica il numero della grandezza a cui si sta facendo

riferimento indica ad esempio lrsquoelemento n di A Nel caso vi

siano presenti due pedici si fa riferimento ad una grandezza che va

dal primo pedice al secondo indica quindi un vettore da i a k

nA

kiA

bull Lrsquoapice egrave utilizzato per indicare il sistema di riferimento rispetto al

quale la grandezza egrave riferita indica quindi lrsquoelemento n della

grandezza A nel sistema di riferimento i

inA

bull Il simbolo times indica il prodotto vettoriale

bull Il simbolo bull indica il prodotto scalare mentre la T posta come apice

egrave la trasposizione

Nella Tabella 1 vengono mostrate le grandezze fisiche utilizzate e la

simbologia per rappresentarle[31]

Ti

iR 1minus Matrice di rotazione dalla terna i-1 alla terna i (premoltiplicazione)

iiR 1+ Matrice di rotazione dalla terna i+1 alla terna i (postmoltiplicazione)

im Massa del braccio

iir 1minus Vettore dalla terna i-1 alla terna i

iI Tensore drsquoinerzia del braccio

iϑ Posizione angolare del giunto i

iϑamp Velocitagrave angolare del giunto i

Modellizzazione cinematica e dinamica 60

iϑampamp Accelerazione angolare del giunto i

iω Velocitagrave angolare del braccio

iωamp Accelerazione angolare del braccio

ipampamp Accelerazione lineare terna i

iCpampamp Accelerazione lineare baricentro iC

if Forza esercitata sul giunto i

imicro Momento esercitato sul giunto i

iτ Forza generalizzata al giunto i

Tabella 1 Rappresentazione delle grandezze fisiche utilizzate

42 Sistemi di coordinate e trasformazioni

Qualunque punto dello spazio puograve essere rappresentato da coordinate

omogenee che non sono altro che le coordinate cartesiane del punto a meno di un

fattore di proporzionalitagrave

⎥⎥⎥⎥

⎢⎢⎢⎢

=rarr⎥⎥⎥

⎢⎢⎢

⎡=

wzyx

pZYX

p dove wxX =

wyY =

wzZ =

In coordinate omogenee ci sono quattro punti particolari

versore direzione dellrsquoasse X versore direzione dellrsquoasse Y ir

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0001

jr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0010

versore direzione dellrsquoasse Z Origine degli assi kr

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0100

Or

=

⎥⎥⎥⎥

⎢⎢⎢⎢

1000

Modellizzazione cinematica e dinamica 61

Questi quattro punti caratterizzano il sistema di riferimento Un sistema di

riferimento puograve essere posto in ogni punto dello spazio per noi saragrave essenziale

porne uno in ogni giunto dei robot[32] Inserito un sistema di riferimento il

passaggio da un sistema al successivo avviene tramite una matrice di

trasformazione che al suo interno ne descrive la rotazione e traslazione

La rotazione pura rispetto ad un sistema fisso di coordinate viene

rappresentata tramite una matrice quadrata 33times Ad esempio una rotazione di un

angolo α attorno allrsquoasse z viene descritta con

( )⎥⎥⎥

⎢⎢⎢

⎡ minus=

1000cossin0cos

αααα

αsen

Rz

La matrice A di rototraslazione egrave rappresentata in generale come

composizione degli spostamenti rotatorio e traslatorio

( ) ( )

[ ] ⎥⎦

⎤⎢⎣

⎡ timestimes=

10001333 TraslRot

A

La matrice egrave costituita da una parte di rotazione una di traslazione lungo i

tre assi e una riga i cui valori indicano la ldquoscalardquo e la ldquoprospettivardquo (non utilizzati

in questo ambito) In analisi piugrave approfondita

Modellizzazione cinematica e dinamica 62

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

A

possiamo vedere come le prime tre colonne rappresentano i versori del

sistema di partenza mentre lrsquoultime rappresenta la posizione di arrivo in

coordinate omogenee dellrsquoorigine in cui egrave posizionato il sistema di riferimento

43 Cinemetica diretta

In questo ambito ci proponiamo di illustrare i modelli matematici che ci

hanno permesso di analizzare ASGARD Partiamo da alcune definizione basilari

Un robot manipolatore egrave una catena cinematica sequenziale22 aperta23 o

catena parallela composta da corpi rigidi (link) uniti da giunti

Lrsquointeresse principale egrave rivolto alla mano o end-effector del robot che

possa raggiungere ogni posizione con qualunque orientamento senza bisogno di

resettare fisicamente il sistema

La cinematica studia il legame tra le variabili indipendenti dei giunti e le

posizioni e orientamento cartesiane raggiunte dal robot Questo egrave chiaramente un

problema cruciale per le applicazioni Il problema si suddivide in due parti

cinematica diretta = passaggi dalle variabili di giunto24 alle variabili

cartesiane25

cinematica inversa = passaggio dalle variabili cartesiane alle variabili di

giunto

22 sequenziale significa che non ci sono diramazioni nella catena 23 aperta una delle due estremitagrave (mano=end-effector) egrave libera 24 valori degli angoli di ogni singolo giunto 25 valore della posizione espresso in coordinate nel di riferimento considerato

Modellizzazione cinematica e dinamica 63

La dinamica studia le equazioni che caratterizzano il moto del robot intese

come velocitagrave accelerazioni tenendo conto non solo delle posizioni iniziali e

finali ma di tutte le caratteristiche del moto la nostra analisi si egrave concentrata sulle

forze e le torsioni agenti sui motori studiate con il metodo di Newton-Eulero

Il calcolo delle traiettorie consiste nel determinare un modo per fornire al

controllore del robot lrsquoinsieme dei punti (variabili di giunto) per spostarsi da una

posizione allrsquoaltra con opportune velocitagrave e accelerazioni

Il problema del controllo consiste invece nel trovare modalitagrave efficienti per

far compiere al robot il piugrave fedelmente possibile le traiettorie determinate

431 Definizione dei parametri di Denavit Hartemberg

Elaborare i valori delle variabili di giunto fino a trovare i valori delle

coordinate cartesiane riferite alla posizione dellrsquoend-effector non egrave di facile

carico computazionale soprattutto quando il robot risulta complesso26

Sviluppare metodi a doc ottimi per la cinematica inversa risultano

scomodi e onerosi se riferiti alla cinematica diretta

Un metodo generale e applicabile a qualsiasi tipologia di manipolatore egrave

stato sviluppato negli anni cinquanta da Denavit e Hartenberg (D-H)

Esso consiste nel fissare sistemi di riferimento sui giunti per poterne

determinare i parametri caratteristici Tramite lrsquouso di matrici di rototraslazione

dei sistemi di riferimento egrave possibile trovare un legame tra i parametri dei giunti e

la posizione e lrsquoorientamento dellrsquoend-effector Con questa scelta ogni singola

trasformazione da un sistema di riferimento al successivo saragrave descritta da una

matrice definita da quattro parametri lrsquoangolo del giuntonnA 1minus ϑ lrsquoangolo di twist

α e le due distanze d e l

Identificata la struttura giuntilink del robot egrave necessario fissare i sistemi di

riferimento nel seguente modo

26 complesso con piugrave di due gradi di libertagrave

Modellizzazione cinematica e dinamica 64

bull Scegliere lrsquoasse giacente lrsquoungo lrsquoasse del giunto i+1 iz

bull Individuare allrsquointersezione dellrsquoasse con la normale comune

agli assi e con

iO iz

1minusiz iz iOprime si indica lrsquointersezione della normale

comune con 1minusiz

bull Si assume lrsquoasse diretto lungo la normale comune agli assi

e con verso positivo dal giunto i al giunto i+1

ix 1minusiz

iz

bull Si sceglie lrsquoasse in modo tale da completare una terna levogira iy

Figura 38 Parametri cinematici di Denavit-Hartenberg

Fissate le terne solidali si ha che

ia = distanza da a iO iOprime

id = coordinata su di 1minusiz iOprime

iα = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

ix 1minusiz iz

iϑ = angolo attorno allrsquoasse tra lrsquoasse e valutato positivo in

senso antiorario

1minusiz 1minusix ix

Modellizzazione cinematica e dinamica 65

Nella nostra analisi essendo tutti giunti rotoidali lrsquounica variabile risulta

essere iϑ indicante la posizione in gradiradianti del giunto Nello sviluppo della

parte grafica per caratteristiche proprie del tool utilizzato sono stati introdotti

ulteriori due giunti traslazionali che nellrsquoanalisi non vengono perograve presi in

considerazione come variabili

La matrice di trasformazione complessiva viene costruita nel modo

seguente

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡minus

minus

=minus

1000cos0

coscoscoscoscoscos

1

iii

iiiiiii

iiiiiii

ii dsen

senasensenasensensen

Aαα

ϑαϑαϑϑϑαϑαϑϑ

432 Metodo di assegnamento secondo D-H

Per ricavare velocemente le matrici di trasformazione secondo la

convenzione di D-H si utilizza la seguente procedura operativa

1 Individuare e numerare consecutivamente gli assi dei giunti

assegnare rispettivamente le direzioni agli assi hellip 0z 1minusnz

2 Fissare la terna base posizionandone lrsquoorigine sullrsquoasse gli assi

e sono scelti in maniera tale da ottenere una terna levogira

0z

0x 0y

Eseguire i passi da 3 a 5 per i = 1 hellip n

3 Individuare lrsquoorigine allrsquointersezione di con la normale comune agli assi e Se gli assi e sono paralleli posizionare in modo da annullare

iO iz

1minusiz iz 1minusiz iz

iO id4 Fissare lrsquoasse diretto lungo la normale comune agli assi e

con verso positivo dal giunto i al giunto i+1 ix 1minusiz

iz5 Fissare lrsquoasse in modo da ottenere una terna levogira iy

Per completare

Modellizzazione cinematica e dinamica 66

1 Fissare la terna n allineando lungo la direzione di nz 1minusnz

2 Costruire per i = 1 hellip n la tabella dei parametri ia id iα iϑ

3 Calcolare sulla base dei parametri di cui al punto 7 le matrici di

trasformazione omogenea ( )iii qA 1minus per i = 1 hellip n

La posizione e lrsquoorientamento di un qualsiasi giunto della catena rispetto il

sistema base egrave ora calcolabile premoltiplicando i valori nel sistema corrente per

tutte le matrici di trasformazione precedenti a tale sistema

11

121

010

0 minusminussdotsdotsdot== n

nnn AAAAT

In ASGARD si egrave attuata una doppia analisi

la prima consiste nellrsquoalzata del piede e il suo riposizionamento nelle

coordinate desiderate in questo caso lrsquoorigine del robot risulta essere solidale con

il baricentro del corpo e lrsquoend-effector risulta coincidere con la zampa mobile

Figura 39 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nel baricentro e end-effector coincidente con la zampa mobile

Modellizzazione cinematica e dinamica 67

I parametri di D-H calcolati risultano essere

link ϑ α a d

1 deg45 0 1l 0

2 2ϑ deg90 2l 0

3 3ϑ 0 3l 0

4 0 4l 0 4ϑ

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

1111

1111

010

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdot

=

10000010

00

2222

2222

121

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

3333

3333

232

SlCSClSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡sdotsdotminus

=

10000100

00

44441

4444

343

SlCSClSC

A

e la matrice T contenente i valori in coordinate cartesiane della posizione

della zampa egrave calcolata come 3

432

321

210

1004 AAAAAT sdotsdotsdot==

la seconda analisi consiste nellrsquoavanzamento del corpo non essendo il

nostro robot dotato di uno scheletro mobile e flessibile durante la camminata si ha

la necessitagrave di spostare il baricentro sfruttando lrsquoattrito delle zampe con il terreno

In questa situazione le zampe puntate a terra risultano essere lrsquoorigine e il

baricentro della nostra struttura egrave la parte terminale libera

Modellizzazione cinematica e dinamica 68

Figura 40 Posizionamento dei sistemi di riferimentosecondo D-H nella struttura con

base fissata nella zampa di appoggio e end-effector coincidente con il baricentro

In questo caso i parametri di D-H subiscono la seguente modifica

link ϑ α a d

1 1ϑ degminus 90 0 0 2 2ϑ 0 2l 0 3 3ϑ degminus 90 3l 0 4 0 0 4l 0

si ottengono le seguenti matrici di trasformazione

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

11

11

010

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ minus

=

100001000000

22

22

121

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

minus

minus

=

100000100000

33

33

232

CSSC

A

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000010000100001

343A

La matrice T per il calcolo della posizione finale non subisce invece

modifiche nella sua formula rimane invariata 343

232

121

010

0 AAAAAT n sdotsdotsdot==

Modellizzazione cinematica e dinamica 69

44 Cinematica inversa

Data una posizione e un orientamento nello spazio cartesiano egrave possibile

trovare una configurazione del nostro manipolatore affincheacute essa possa essere

raggiunta Questo egrave il problema di cinematica inverso

Nel calcolo di tale problema non egrave garantita neacute lrsquoesistenza neacute lrsquounicitagrave

della soluzione cercata La posizione se appartenente allo spazio di destrezza del

manipolatore (spazio in cui egrave garantita lrsquoesistenza della soluzione) non egrave detto che

possa essere raggiunta con unrsquounica sequenza di variabili di giunto

Metodi di analisi ammissibili per il nostro robot risultano essere il metodo

di Paul[33] e quello geometrico non essendo rispettati i vincoli per il metodo di

Pieper (tre giunti rotoidali consecutivi con assi paralleli)

Il metodo di Paul consente di determinare le soluzioni mediante

premoltiplicazioni o postmoltiplicazioni con matrici di trasformazione ortogonali

egrave un metodo euristico per la ricerca di soluzioni in forma chiusa

Lrsquoalgoritmo egrave il seguente

1 Uguagliare la matrice di trasformazione generale T espressa in

termini di variabili cartesiane alla matrice di trasformazione del

manipolatore espressa in termini di variabili di giunto

2 Cercare nella seconda matrice

bull elementi che contengono una sola variabile di giunto

bull coppie di elementi che danno unrsquoespressione in una sola

variabile di giunto quando vengono divisi tra loro

bull elementi o combinazioni di elementi che possono essere

semplificati usando identitagrave trigonometriche

3 Quando si sono identificati questi elementi li si eguagliano ai

corrispondenti elementi della matrice in variabili cartesiane

ottenendo unrsquoequazione la cui soluzione permette di trovare un

Modellizzazione cinematica e dinamica 70

legame fra una variabile di giunto ed elementi della matrice di

trasformazione generale

4 Se non si sono identificati elementi che soddisfano le condizioni al

passo 2 si premoltiplicano entrambi i membri dellrsquoequazione

matriciale per lrsquoinversa della matrice A del primo link si opera

secondo il passo 2 Si itera il procedimento per tutti i link

5 Non sempre egrave possibile trovare elementi che rispettano le

condizioni imposte e riuscire a trovare una soluzione valida

Nella nostra analisi questo metodo egrave stato valido e molto veloce per

trovare il valore del primo angolo spalla ma risulta svantaggioso nel calcolo dei

successivi angoli in cui non si riuscivano a trovare equazioni semplici

=

⎥⎥⎥⎥

⎢⎢⎢⎢

+minusminusminusminus++minusminusminusminusminus++minusminusminusminus

=

10000 2232332332323232

11212321332131321321321321

11212321332131321321321321

SlSClCSlCCSSSCSSSlCSlSSSlCCSlCSSSCCSCSSCCSClCClSSClCCClSCSCSCCSSCCCC

T

⎥⎥⎥⎥

⎢⎢⎢⎢

=

1000zzzz

yyyy

xxxx

paonpaonpaon

da cui si ricava

( )( ) 1

1

1223233231

1223233231

CS

lClSSlCClClClSSlCClS

pp

x

y =++minus++minus

= quindi ⎟⎟⎠

⎞⎜⎜⎝

⎛=

x

y

pp

a tan1ϑ

Ersquo stato quindi decisivo per il riscontro del secondo e del terzo angolo

rispettivamente ginocchio e caviglia un approccio geometrico a doc

In questa tipologia di studio di rilevante importanza egrave stata lrsquoestrapolazione

delle coordinate dellrsquoend-effector e la traslazione dellrsquoorigine nel ginocchio al fine

di isolare due piani del moto per ridurre lrsquoanalisi di una dimensione

Modellizzazione cinematica e dinamica 71

Il calcolo della cinematica inversa per un manipolatore a due link risulta

poi di basso carico computazionale applicando regole di trigonometria basilari

Figura 41 Calcolo cinematica inversa attraverso metodo geometrico su un robot

planare a 2gradi di libertagrave

Conoscendo la posizione raggiunta

( )21211 coscos ϑϑϑ ++= llx ( )21211 ϑϑϑ ++= senlsenly

Si applica il teorema di Pitagora nel triangolo indicato

( ) ( ) =sdot+sdotsdotsdot+sdot+=+sdot+=+ 22

22221

22

22

21

222

2221

22 cos2coscos ϑϑϑϑϑ senlllllsenlllyx 221

22

21 cos2 ϑsdotsdotsdot++= llll

E da esso si ricava

21

22

21

22

2 2)(cos

llllyx

sdotsdotminusminus+

=ϑ e quindi ⎥⎦

⎤⎢⎣

⎡sdotsdot

minusminus+=

21

22

21

22

2 2)(

cosll

llyxaϑ

Come si era previsto porta a due soluzioni gomito alto o bassoPer trovare

lrsquoaltro angolo si osserva cha al posto αϑϑ +=∆ 1 si ha

( )xy

=∆ϑtan ( )221

22

costan

ϑϑ

αsdot+

=llsenl

quindi

⎟⎟⎠

⎞⎜⎜⎝

⎛sdot+

minus⎟⎠⎞

⎜⎝⎛= minusminus

221

22111 cos

tantanϑ

ϑϑ

llsenl

xy

Modellizzazione cinematica e dinamica 72

441 Metodo gradiente

Abbiamo utilizzato questo metodo alternativo sperimentale in

concomitanza con il metodo geometrico valutandone successivamente le sue

potenzialitagrave per possibili applicazioni future Esso attraverso semplici calcoli

matematici ci porta al valore dei successivi due giunti della zampa

Figura 42 Baccio a due link

Denomineremo

a angolo del primo giunto

b angolo del secondo giunto

obiettivo stella rossa

errore vettore che punta lrsquoobiettivo

Spostiamo il braccio del robot intorno alla base cambiando gli angoli a e b

Possiamo tracciare un grafico di questo comportamento[34]

Figura 43 Immagine della rappresentazione del gradiente

Modellizzazione cinematica e dinamica 73

Lrsquoasse x rappresenta langolo a mentre lrsquoasse y rappresenta langolo b Lrsquoorigine

egrave nel cento Denomineremo lo spazio di tutti gli orientamenti possibili del braccio

del robot lo spazio di configurazione

Ogni punto sul quadrato contiene una tonalitagrave di grigio che rappresenta la

distanza fra lrsquoend-effector e lobiettivo Le tonalitagrave piugrave chiare sono distanze piugrave

grandi mentre il nero rappresenta zone di avvicinamento allrsquoobiettivo Ci sono

due posti in cui la distanza egrave uguale zero rappresentanti le due configurazioni

(gomito alto e basso) in cui il braccio puograve toccare lobiettivo

Dovrebbe essere evidente arrivare al target significa trovare le parti piugrave

nere del grafico Questi punti bassi sono conosciuti come minimi

4411 Gradient following

Questo metodo risulta essere di grande utilizzo per riuscire a trovari i

minimi in uno spazio bidimensionale

Per trovare i punti piugrave bassi sul grafico si deve semplicemente seguire

punti che portano lrsquoend effector ad una distanza minore dal target

Figura 44 Immagine di esempio

Figura 45 Gafico del Gradiente di esempio

Si guardi questo esempio Figura 44 Lobiettivo egrave la stella rossa In questa

posizioneun movimento del giunto di rotazione a sposteragrave la mano nel senso della

freccia a ed un movimento di b sposteragrave lrsquoend-effector nel senso della freccia b

Modellizzazione cinematica e dinamica 74

Per raggiungere lrsquoobiettivo desideriamo spostare la mano nel senso della freccia t

Spostando solo il giunto A o solo B non otterremo grandi risultati ma serviragrave un

movimento complessivo Ora guardiamo questo in termini di grafico (Figura 45)

Cominciando ad una configurazione casuale del braccio (start) possiamo

guardare i vettori a e b e ruotiamo ogni giunto un po in proporzione a quanto

aiuta per ottenere una migliore posizione rispetto allrsquoobiettivo Si puograve pensare a

questo come esaminare la pendenza locale del grafico Ci si chiede qual egrave il

movimento che li conduce il piugrave velocemente in discesa ci si sposta in quel senso

Si continua a ciclare questo fino ad arrivare ad una distanza dal nostro obiettivo

che concorda con lrsquoapprossimazione da noi desiderata

Vantaggi di questo metodo sono lrsquoapplicazione in tutte le problematiche

con un numero elevato di link Il tempo computazionale non risulta essere oneroso

in quanto ci si riconduce a semplici operazioni matematiche che Matlab riesce ad

eseguire in pochissimi istanti nonostante lrsquoelevato numero di iterazioni

4412 Faster gradient following

Esso egrave unottimizzazione del metodo gradient following che accelera

letteralmente il processo[34] Precedentemente ad ogni ripetizione la pendenza egrave

stata sottratta semplicemente dalla posizione nello spazio di configurazione

spostando la struttura piugrave vicino al minimo Questa volta sottrarremo la pendenza

dalla velocitagrave a cui ci muoviamo attraverso lo spazio di configurazione

Otteniamo come risultato un calcolo molto piugrave rapido in termini di

iterazioni che si riducono fino al 60-75 rispetto al precedente mantenedo

risultati ottimi in base anche allrsquoapprossimazione da noi scelta

Modellizzazione cinematica e dinamica 75

Figura 46 Passi per arrivare al target nel metodo di inseguimento veloce

45 Calcolo delle traiettorie

Vogliamo presentare le modalitagrave di come le traiettorie vengono generate

Tra le diverse disponibili egrave stato scelto il controllo in posizione nello spazio dei

giunti affichegrave il robot riesca a deambulare in un cammino definito Esprimendo le

traiettorie nello spazio dei giunti vengono evitate le conversioni cinematiche

inverse e quindi per la realizzazione delle traiettorie non serve potenza di calcolo

onerosa

Per il controllo delle traiettorie esistono metodi semplici basati sulla

gestione del movimento del singolo link senza che esso venga temporizzato con

tutta la struttura e algoritmi piugrave complessi che fanno uso delle cubiche27 esse

arrivano a un buon compromesso tra quantitagrave di calcolo richiesta e qualitagrave delle

traiettorie ottenute Il cammino da compiere viene specificato mediante punto di

arrivo e punto di stop si vorrebbe che tutti i giunti arrivino al task nello stesso

istante in modo da garantire lrsquoassenza delle discontinuitagrave Si generano traiettorie

nello spazio dei giunti specificando per ogni motore la funzione di moto e

verificando che le posizioni attraversate non siano degeneri28 o singolari29[32]

27 polinomi dal terzo grado a superiore che rappresentano funzioni continue 28 degenere significa non raggiungibile dal robot

Modellizzazione cinematica e dinamica 76

Esistono diversi metodi per calcolare le cubiche di seguito vengono

presentate quelle da noi elaborate e convertite in codice

Movimento da una posizione finale ad una posizione finale in un certo

intervallo di tempo per ogni giunto deve essere trovata una funzione ( )tϑ

continua e con derivata prima continua il cui valore per t=0 sia per t = sia ft fϑ e

che possa essere usata per interpolare i valori dei giunti I vincoli che devono

essere soddisfatti sono

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = 0 Velocitagrave iniziale nulla

( )fϑamp = 0 Velocitagrave finale nulla

Per soddisfare i vincoli egrave necessario un polinomio di terzo grado in cui i

coefficienti saranno scelti per soddisfare i quatto vincoli

( )tϑ = 3

32

210 tatataa sdot+sdot+sdot+

dal polinomio ricaviamo la funzione che rappresenta la velocitagrave

( )tϑamp = 2321 32 tataa sdotsdot+sdotsdot+

e lrsquoaccelerazione

( )tϑampamp = taa sdotsdot+sdot 32 62

sostituendo le equazioni nei vincoli sopra citati troviamo i seguenti valori dei

coefficienti

=0a 0ϑ

29 un punto singolare egrave un punto in cui non egrave possibile calcolare lo jacobiano inverso

Modellizzazione cinematica e dinamica 77

01 =a

( )2

02

3

f

f

ta

ϑϑ minussdot=

( )3

03

2

f

f

ta

ϑϑ minussdotminus=

Con queste equazioni abbiamo ottenuto il metodo piugrave semplice per

connettere due posizioni nello spazio A fronte del consistente numero di

operazioni richieste per il carico grafico questo egrave il metodo da noi utilizzato per

tutto lo sviluppo del simulatore che emula la creazione di un percorso inoltre esso

risulta simile al controllo a noi a disposizione per gli attuatori reali a disposizione

Abbiamo comunque voluto implementare un metodo avanzato per

superare limitazioni presenti che potragrave essere utilizzato anche in un futuro quando

controlli effettivi saranno introdotti per il controllo di velocitagrave e accelerazione dei

motori Esso egrave costituito da un polinomio di quinto grado in cui possono essere

specificate posizioni velocitagrave e accelerazioni nei punti iniziale e finale e puograve

gestire la continuitagrave dellrsquoaccelerazione nei punti di via

Il polinomio studiato risulta essere

( )tϑ = 5

54

43

32

210 tatatatataa sdot+sdot+sdot+sdot+sdot+

( ) =tϑamp 45

34

2321 5432 tatatataa sdotsdot+sdotsdot+sdotsdot+sdotsdot+

( ) =tϑampamp 35

2432 201262 tatataa sdotsdot+sdotsdot+sdotsdot+sdot

imponendo

( )0ϑ = 0ϑ Angolo pari a 0ϑ per t=0

( )fϑ = fϑ Angolo pari a fϑ per t= ft

( )0ϑamp = Velocitagrave iniziale 0v

( )fϑamp = Velocitagrave finale fv

Modellizzazione cinematica e dinamica 78

sostituendo i vincoli trovo i seguenti valori dei parametri

tvva fof sdotminussdotminusminussdot= )(3)(6 05 ϑϑ

tvva fof sdotsdotminussdot+minussdotminus= )78()(15 04 ϑϑ

tvva fof sdotsdotminussdotminusminussdot= )46()(10 03 ϑϑ

02 =a

tva sdot= 01

00 va =

46 Modello dinamico Newton-Eulero

Per un analisi realistica e approfondita della camminata non egrave sufficiente

considerare gli effetti della forza di gravitagrave ma diventa necessario introdurre il

modello dinamico che tiene conto di tutti i fattori non trascurabili nei corpi in

movimento

Per completare le formule ricavate nel caso statico vengono calcolate le

singole velocitagrave e accelerazioni dei giunti e link Risulta assai comodo ed

efficiente lrsquoalgoritmo ricorsivo di Newton-Eulero[31] Viene effettuata dapprima

una ricorsione ldquoin avantirdquo per calcolare le velocitagrave e accelerazioni dei giunti e

successivamente una ricorsione ldquoallrsquoindietrordquo per ricavare i valori di forza e

torsione

Nella prima fase dalla base (baricentro) allrsquoend-effector (zampa in

movimento) abbiamo

Velocitagrave angolare del rotore ( )011

1 zR iii

Tii

ii ϑωω amp+= minus

minusminus

Accelerazione angolare del link ( )0110

11

1 zzR iiii

ii

Tii

ii times++= minus

minusminusminus

minus ωϑϑωω ampampampampamp

Accelerazione lineare terna i ( )iii

ii

ii

iii

ii

ii

Tii

ii rrpRp 11

11

1minusminus

minusminus

minus timestimes+times+= ωωωampampampampamp

Modellizzazione cinematica e dinamica 79

Accelerazione lineare baricentro iC ( )iCi

ii

ii

iCi

ii

iiC iii

rrpp timestimes+times+= ωωωampampampampamp

Nella seconda fase dallrsquoend-effector al baricentro le formule diventano

Forza iCi

ii

ii

ii i

pmfRf ampamp+= +++

111

Momento ( )

( )ii

ii

ii

ii

ii

iCi

ii

ii

ii

ii

iCi

iii

ii

ii

II

rfRRrrfii

ωωω

micromicro

times++

times+++timesminus= +++

+++minus

amp

1

111111

Forza generalizzata 0

1 zR Tii

Tiii

minus= microτ

Ai fini di semplificare i calcoli tutti i vettori sono riferiti alla terna corrente

sul link i Si rende quindi necessario moltiplicare per i vettori da trasformare

dalla terna i+1 alla terna i e per i vettori da trasformare dalla terna i-1 alla

terna i In questo modo e diventa possibile

semplificare la formula del tensore drsquoinerzia del link

iiR 1+

TiiR 1minus

[ ]Tz 1000 = costante =iCi i

r

( )

( )( ) ⎥

⎥⎥⎥

⎢⎢⎢⎢

+sdotminussdotminus

sdotminus+sdotminus

sdotminussdotminus+

sdot=

intintintintintintintintint

dVyxdVyzdVxz

dVyzdVzxdVxy

dVxzdVxydVzy

I22

22

22

ρ

Lrsquoinerzia egrave una proprietagrave che dipende dalla massa del corpo e da come tale

massa egrave distribuita I tensori sopra calcolati descrivono lrsquoinerzia del corpo nello

spazio tridimensionale Per i calcoli si sono supposti i link di densitagrave uniforme e a

forma di parallelepipedo tale approssimazione porta ad ottenere risultati

sufficientemente precisi per questo lavoro semplificando i termini del tensore

( )

( )( ) ⎥

⎥⎥

⎢⎢⎢

++

+sdot=

120001200012

22

22

22

yxzx

zymI

Modellizzazione cinematica e dinamica 80

Nelle formule del calcolo della torsione sono stati tralasciati i termini

inerenti alle forze interne dei motori essendo questi di dimensione trascurabile

47 Creazione di una mappa

La navigazione consiste nel dirigere il cammino di un robot

mobile[35][36] mentre esso si muove in un ambiente affincheacute

bull Raggiunga la destinazione

bull Non si perda

bull Non si schianti contro ostacoli fissi o mobili

La navigazione egrave composta dalle seguenti parti

mapping planning rArr driving rArr

costruzione della mappa pianificazione esecuzione

Il mapping consiste nel rappresentare lrsquoambiente in cui il robot si muove

ottimizzando i movimenti del robot per ASGARD lrsquoambiente egrave stato rappresentato

mediante una matrice bidimensionale che rappresenta la sua area di azione

Il planning rappresenta la costruzione di un cammino geometrico nella

mappa Nel nostro lavoro si egrave deciso di dare la possibilitagrave al robot di scegliere il

percorso piugrave adatto che dovragrave intraprendere Come verragrave descritto piugrave in dettaglio

nel prossimo capitolo dopo aver inserito valori di riferimento degli ostacoli

mediante un algoritmo di ricerca saragrave il controllore a fornire le direttive e

scegliere che tipologia di camminata che ASGARD dovragrave affrontare in ogni

singolo istante alla fase di driving saragrave delegato il compito di scegliere il passo

opportuno al fine di velocizzare la camminata

Il goal per il nostro robot egrave il raggiungimento della posizione data come

obiettivo senza urtare ostacoli fissi presenti sul suo cammino Non essendo dotato

Modellizzazione cinematica e dinamica 81

di un sistema odometrico per il calcolo della posizione saragrave lo stesso controllore a

verificare in real-time la corretta posizione del baricentro del robot

Non possedendo nemmeno sensori di visione abbiamo deciso di simulare

e costruire una mappa object oriented30 la mappa conosce le posizioni degli

oggetti diffusi nel mondo e vieta al robot le aree in cui essi sono presenti

La mappa saragrave rappresentata da una matrice in cui per ogni cella avremo

valori che rappresentano la distanza dal goal31 e le distanza dallrsquoostacolo piugrave

vicino un opportuno algoritmo di planning (revisione dellrsquoAlgoritmo di Dijkstra)

attueragrave la ricerca del cammino meno dispendioso e dopo un opportuno controllo

diragrave al robot se attuare un passo di camminata veloce o un passo di correzione

471 Espansione degli ostacoli traformazione delle distanze

Basato sul concetto di propagazione drsquoonda32 il metodo della

trasformazione delle distanze proviene dal meccanismo utilizzato per processare

la forma in immagini binarie Il metodo consiste nella propagazione della distanza

da un insieme di celle poste in uno spazio rappresentato da una griglia

Si calcola lo scheletro dellrsquoimmagine ostacolo e si identificano le celle che

ne conterranno gli spigoli Poi si passa da sinistra a destra e dallrsquoalto al basso le

celle esterne al perimetro identificandole con distanza 1 Si procede per tutte le

celle della matrice quando tutti i passaggi sono completati il risultato egrave una

matrice che contiene la trasformazione delle distanze applicate al perimetro di un

oggetto I punti occupati dallrsquooggetto verranno identificati con valori idealmente

infinito e non saranno mai visitati

30 tipologia di costruzione di una mappa orientata agli oggetti 31 obiettivo 32 dallrsquooggetto considerato centro in tutte le direzioni dello spazio bidimensionale

Modellizzazione cinematica e dinamica 82

4 3 2 2 3 3 2 1 1 2 2 1 1 3 2 1 1 2 4 3 2 2 3

4 3 2 2 3 4 4 5 3 2 1 1 2 3 3 4 2 1 1 2 2 3 3 2 1 1 2 1 1 2 4 3 2 2 1 1 5 4 3 2 1 1 6 5 4 3 2 1 1 2

Figura 47 Propagazione drsquoonda per ostacolo singolo e multiplo

Abbiamo deciso di propagare lrsquoonda non solo dagli ostacoli questo

avviene in tutto lo spazio libero fluendo attorno agli ostacoli e dando unrsquoidea a

ogni cella della distanza dallrsquoobiettivo e della direzione da prendere per potersi

avvicinare

I valori del perimetro degli ostacoli vanno propagati in base alla geometria

del robot per evitare eventuali collisioni Nel nostro lavoro lrsquoespansione egrave stata

necessaria solo per i margini verticali in cui il raggio di elevazione delle zampe

poograve collidere con oggetti fissi durante la camminata longitudinale questo

problema non egrave stato invece riscontrato per lrsquoasse latitudinale

4 3 2 2 3 4 3 2 1 1 2 3

2 2 2 2 3 2 1 1 2 3 3 3 2 2 3 4

Figura 48 Griglia con espansione laterale ostacolo

Modellizzazione cinematica e dinamica 83

48 Scelta di un percorso Algoritmo di Dijkstra

Questo algoritmo egrave stato scelto come ricerca di un cammino minimo

allrsquointerno di un grafo[37] per la sua elegante semplicitagrave e il suo basso carico

computazionale (O(n)33)

Proposto da WDijkstra nel 1959[38] esso visita i nodi del grafo in

maniera simile ad una ricerca in ampiezza o profonditagrave In ogni istante lrsquoinsieme

N dei nodi viene diviso in nodi visitati V nodi frontiera F (che sono i successori34

dei nodi visitati) e i nodi sconosciuti che sono ancora da visitare

Per ogni nodo lrsquoalgoritmo tiene traccia del valore che nel nostro caso

saragrave il valore della distanza dal punto di arrivo e del nodo in cui siamo

Lrsquoalgoritmo consiste nel ripetere il seguente passo

zd

zu

si prende dallrsquoinsieme F un qualsiasi nodo z con minimo si sposta z da

F a V si spostano tutti i successori di z conosciuti in F e per ogni successore w di

z si aggiornano i valori di e

zd

wd wu ( )azww pddd +larr min dove a egrave lrsquoarco che

collega z a w Si sceglie in minore valore tra i successori di z si salva questrsquoultimo

nel vettore u

Alla fine dellrsquoalgoritmo arriviamo ad avere nel vettore u lrsquoinsieme dei nodi

che forniscono il cammino minimo dal punto di start al punto di end35

33 Orine di grandezza dellrsquoalgoritmo 34 Un successore di z egrave un nodo raggiungible lungo un arco uscente da z 35 dalla partenza allrsquoarrivo

Capitolo 5 Sviluppo dellrsquoalgoritmo di camminata

Sviluppo dellrsquoalgoritmo di camminata 85

51 Metodologie di sviluppo

Per lrsquoimplementazione della parte software si egrave scelto di far uso

dellrsquoambiente di sviluppo Matlab progettato appositamente per lavorare con

matrici e formule di notevole complessitagrave

Nel realizzare il modello matematico del robot ai fini di studiarne il

comportamento ci si potrebbe chiedere percheacute non sia stato utilizzato lrsquoambiente

di simulazione MSCADAMS in grado di fornire anche proprietagrave fisiche

direttamente dal modello CAD studiarne la cinematica la dinamica e

lrsquointerazione con il mondo esterno La finalitagrave di questo progetto perograve egrave quella di

creare uno strumento di supporto da poter essere realizzato in real-time

A questo punto Matlab potrebbe venir criticato per le sue prestazioni

inferiori a linguaggi quali il C ma esso mette a disposizione toolbox aggiuntivi

quali simulink36 che permettono un facile interfacciamento con tutti i dispositivi

hardware Ersquo comunque possibile convertire il codice sorgente in eseguibili o

addirittura nello stesso linguaggio C senza comprometterne alcuna funzionalitagrave

52 Progetto di una andatura

Per la creazione di una andatura rilevante al fine pratico abbiamo attuato

notevoli ricerche di analisi parametriche in merito Il principale obiettivo trovato egrave

risultata essere la realizzazione delle fasi di un passo stabile e veloce Ci

proponiamo quindi di massimizzare la componente velocitagrave senza provocare

instabilitagrave nel robot La velocitagrave si calcola secondo lrsquoespressione

impiegatotempomotodeldirezionenellapercorsospaziovelocitagrave

______

=

36 tool di matlab per la creazionedi controlli ad anello di automazione

Sviluppo dellrsquoalgoritmo di camminata 86

Per raggiungere tale scopo occorre concentrarsi su diverse questioni

bull Scelta del ciclo di camminata

bull Spazio decidere gli angoli del movimento di ciascuna zampa

bull Il tempo partire da una postura conveniente che garantisca i piugrave

brevi scostamenti possibili di angoli di giunto

bull La stabilitagrave

bull Le coppie prodotte dagli attuatori

bull La scelta della camminata

Attraverso lrsquoanalisi di alcune tra le possibili andature di quadruped sono

emersi pregi e difetti derivanti dallrsquoutilizzo di un ciclo di camminata con un

ridotto numero di fasi Un vantaggio fondamentale sta nel ridurre il tempo

impiegato e il maggior difetto egrave legato ai problemi di instabilitagrave del robot

Al fine di ridurre la stabilitagrave siamo intervenuti nella modellizzazione di un

opportuna camminata quasi statica che si adatta alla morfologia del nostro robot

Lrsquoidea egrave stata quella di trovare una camminata efficiente ma stabile

Al fine di ridurre lrsquoistabilitagrave sono state introdotte fasi aggiuntive che

garantiscono il poligono di appoggio e si egrave tentata di far assumere ad ASGARD

una postura a baricentro basso

Il trotto egrave stato escuso dalla nostra analisi non solo per il tempo di risposta

ma anche per lrsquoimpossibilitagrave di attuare spinte per il balzo

521 Lo spazio

La domanda che ci siamo posti egrave stata se risultava conveniente avanzare le

zampe attraverso piccoli spostamenti ripetuti o con ampi spostamenti meno

frequenti

Lrsquoavanzamento del robot avviene mediante la combinazione di due

movimenti

Sviluppo dellrsquoalgoritmo di camminata 87

bull lo spostamento delle singole zampe da una postura iniziale a una

finale

bull la spinta simultanea delle quattro zampe che permettono lrsquoeffettivo

movimento del main body37

La fase aerea risulta essere molto piugrave complessa e richiede un tempo di

attuazione maggiore rispetto a quella di spinta del busto

Lo spostamento assoluto della zampa che si solleva egrave la combinazione di

due movimenti quello attivo dipendente dalla traiettoria imposta allrsquoend effector

e quello passivo che si muove per mezzo della spinta offerta dal movimento del

busto i due movimenti sono strettamente correlati

Se lrsquoobiettivo egrave quello di massimizzare la velocitagrave del ciclo di camminata

la scelta egrave di prevedere lo spostamento della zampa piugrave ampio possibile (passo

lungo) Abbiamo comunque ritenuto utile introdurre entrambe le tipologie di

passo lungo e passo correttivo per la minimizzazione della distanza dal target

522 Stabilitagrave

Al fine di garantire la stabilitagrave egrave utile porsi nel caso quasi-statico cioegrave fare

in modo che il baricentro del robot cada sempre allrsquointerno del poligono di

stabilitagrave ciograve non sembra un problema per le fasi intermedie del ciclo di

camminata percheacute tutte e quattro le zampe toccano il terreno Il problema invece

si fa sentire nelle fasi in cui una zampa viene sollevata e un punto di contatto

viene a meno In questo caso abbiamo dovuto scegliere posture in cui il baricentro

cada nella base drsquoappoggio Ersquo indispensabile quindi prevedere tali configurazioni

e definirle in modo corretto

Occorre inoltre evitare che due zampe in appoggio poste sul medesimo

lato si urtino durante il moto infatti spazi di lavoro delle zampe presentano

strutturalmente zone di intersezione non trascurabili

37 corpo o busto del robot

Sviluppo dellrsquoalgoritmo di camminata 88

Un ulteriore accorgimento per migliorare la stabilitagrave risulta essere quello di

cercare di abbassere il baricentro durante la camminata al fine di mantenere

costante lrsquointensitagrave del moto associato alla forza peso del robot calcolato rispetto

ai punti di appoggio

523 Tempo

Un altro punto su cui si egrave posta particolare attenzione risulta essere il

piegamento delle zampe nel senso se decidere se per compiere un movimento egrave

piugrave conveniente (in termini di spostamento) tenere le zampe tese o piegate

In base a valori di test riscontrati si deduce che in genere conviene tenere

le zampe piuttosto tese poicheacute in questo modo lrsquoescursione angolare nonostante

amplifichi il movimento garantisce un corretto riposizionamento nella posizione

finale desiderata e i tempi non subiscono variazioni

53 Andature implementate

Dopo lrsquoanalisi compiuta sulle modellizzazioni naturali e sui parametri di

scelta abbiamo implementato due tipologie di camminata

Considerando la rigiditagrave del busto di ASGARD esso non dispone di spina

dorsale mobileabbiamo implementato uno stile quasi-statico che non altera lrsquoasse

del baricentro Questo ci ha vincolato a muovere una sola zampa alla volta

(motivazione da cercare anche nella alimentazione dei motori) facendolo partire

da una particolare postura in cui entrambe le zampe del lato sinistro del corpo

sono arretrate rispetto al busto e con angolature precisa degli arti

Abbiamo cosigrave creato una scomposizione del movimento in sei fasi

succesive

bull movimento zampa RL

bull movimento zampa RF

Sviluppo dellrsquoalgoritmo di camminata 89

bull spostamento in avanti del baricentro

bull movimento zampa LR

bull movimento zampa LF

bull spostamento in avanti del baricentro per tornare a posizione base

(zampeRR=Right Rear LR=Left Rear RF= Right Front LF=Left Front)

In questa tipologia di gait il robot si trova in piena stabilitagrave anche durante

lrsquoalzata di una zampa la proiezione del centro di massa risulta essere centrale al

triangolo drsquoappoggio

Questa tipologia di camminata quasi-statica egrave una alterazione del modello

Crawl38 presente in natura e nei modelli Aibo con lrsquoinnovazione di sfruttare

posture del normale trotto differenziandone e rallentandone le fasi di realizzazione

al fine di maggiorare il triangolo di appoggio in relazione alla struttura fisica del

nostro robot

Il segmento di appoggio dello stile Crawl viene qui espanso ad un

triangolo di stabilitagrave pur mantenendone le caratteristiche di spazio percorso e

velocitagrave

La nostra ricerca ci ha ulteriormente spinti alla creazione di un ulteriore

stile di camminata quasi-dinamico in cui la proiezione del baricentro durante

lrsquoalzata si spinge a coincidere con il lato del poligono di stabilitagrave

Le fasi di camminata diversificano da quelle precedenti per lrsquoangolazione

degli attuatori e lrsquoordine di esecuzione dei movimenti

Il passo risulta essere composto da 5 fasi

bull movimento zampa RF

bull movimento zampa LF

bull spostamento in avanti del baricentro

bull movimento zampa RR

bull movimento zampa LR

38 modello di trotto di Aibo

Sviluppo dellrsquoalgoritmo di camminata 90

Nella nostra analisi essendo ancora precario il controllo sugli attuatori

risulta impossibile realizzare un impulso tale da creare il balzo del robot Le

andature studiate escludono pertanto lrsquoandatura dinamica o trotto

La camminata quasi-statica egrave stata correttamente testata sul campo

ottenendo buoni risultati le tempistiche di risposta del robot no hanno permesso

perograve la completa realizzazione della quasi-dinamica che in alcune prove non viene

portata a termine in tutte le sue fasi a causa di cedimenti in stabilitagrave

Per questa ragione essa egrave stata ampiamente testata a simulatore

Per lrsquoanalisi dei suoi movimenti essi sono stati elaborati ed egrave stata creata

anche una variante che presenta una minimizzazione dellrsquoangolatura del giunto

spalla e riporta il movimento a quasi-stabile (passo correttivo esso sposta infatti il

robot sulllrsquoasse longitudinale solo di 2 cm)

54 Catene cinematiche del robot

Per lrsquoiplementazione a simulatore abbiamo dovuto adattare il nostro robot

ad una analisi cinematica e dinamica posizionando su di esso i sistemi di

riferimento in modo da costruire una catena cinematica aperta

Per semplificare il modello abbiamo deciso di caratterizzare la struttura del

robot in quattro catene cinematiche aventi base coincidente nel baricentro e

facendo coincidere ogni end-effector con la relativa zampa in movimento

La prima catena quindi che ci proponiamo di analizzare risulta quindi

essere la seguente

Sviluppo dellrsquoalgoritmo di camminata 91

z0

x0

y0

z1

x1

y1

y2

y3

y4

x2

x3

x4

Figura 49 Posizionamento dei sistemi di riferimento con D-H sulla zampa reale

Essa egrave stata implementata in Matlab utilizzando il metodo di D-H

precedentemente descritto implementato nel nostro tool di analisi

INIT_ROBOT Funzione di definizione delle componenti del robot allinterno del nostro simulatore In relazione alle componentistiche del nostro robot e alla grafica del simulatore questa funzione si propone di definire le parti fondamentali inserendo opportunatamente i parametri di Denavit Hartemberg Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 Copyright (C) 2003-2004 by Picco Sabrina zampa A clear L definifione allinterno della matrice L i parametri di Denavit Hartemberg sigma= 1 giunto prismatico sigma=0 giunto rotoidale sono stati inseriti due giunti prismatici per motivi di grafica del simulatore nel collegamento con i motori reali tali valori non verranno considerati alpha A theta D sigma L1 = link([0 -01 pi4 0 1] mod) L2 = link([0 -06 -pi4 0 0] mod) L3 = link([0 0 -pi4 0 1] mod)

Sviluppo dellrsquoalgoritmo di camminata 92

L4 = link([-pi2 -0573 0 0 0] mod) L5 = link([0 -0675 0 0 0] mod) L6 = link([0 -0735 0 0 0] mod) zampaa = robot(L zampaa Unimation AKampB) clear L

Nel codice Matlab riportato per la creazione di una zampa i parametri

prismatici introdotti sono utilizzati solamente a scopo grafico e vengono tralasciati

dallrsquoalgoritmo per la creazione dei movimenti e dei comandi da spedire algli

attuatori

Si egrave cercata una rappresentazione in grado di descrivere non soltanto i

giunti e i link ma anche altre caratteristiche fondamentali quali masse e lunghezze

Il passo viene scomposto principalmente in due passaggi movimento in

avanti delle zampe e spostamento del busto Nel secondo passaggio la catena

cinematica costruita deve ldquoinvertirsirdquo in quanto non saragrave piugrave la zampa del robot a

costituire il nostro end-effector ma essa saragrave solidale con il terreno e saragrave il

baricentro a diventare il nostro punto terminale asimulatore infatti non sono

possibili movimenti che sfruttano la semplice forza attrito

La catena cinematica verragrave cosigrave modificata

Creazione di un ulteriore robot per caratterizzare il cambiamento del punto di partenza della catena cinematicamentre per la prima parte del passo lend-effector egrave la zampadopo che questa egrave stata appoggiata lend-effector diventa il baricentro del robottino alpha A theta D sigma L1 = link([0 0 0 065 1] mod) L2 = link([0 0 0 0 0] mod) L3 = link([pi2 0 0 0 0] mod) L4 = link([0 0573 0 0 0] mod) L5 = link([pi2 0675 0 0 0] mod) L6 = link([0 0735 -pi4 0 0] mod) zampaa2 = robot(L zampaa2 Unimation AKampB)

Sviluppo dellrsquoalgoritmo di camminata 93

Figura 50 Fase di movimento delle zampe anteriorila base delle quattro catene

cinematiche egrave identificata con il baricentro di cui viene effettuata la prioezione

Figura 51 Fase di spostamento del baricentro si possono notare le proiezioni delle

basi delle rispettive catene cinematiche che si identificano con le zampe

La parte di codice presentato appartiene al file Init_robotm in cui vengono

definite tutte le catene cinematiche necessarie al movimento

Un ulteriore definizione di notevole importanza egrave la ricerca di tutti i punti

essenziali per il corretto posizionamento del robot durante la camminata

Sviluppo dellrsquoalgoritmo di camminata 94

Nel file DB_Positionm vengono memorizzate le posizione chiave per la

costruzione di un passo

Nel nostro algoritmo un passo egrave rappresentato da una sequenza di

posizioni base opportunatamente scelte in relazione ai parametri utili per

realizzare gait veloci e stabili

Il movimento che trasla tutta la struttura da un punto al successivo viene

definito da un profilo di accelerazione e velocitagrave implementato via software che

permette di ottenere ottenere un controllo efficiente e un movimento fluido che

rispetti certi vincoli di forza e di tempo

La funzione jtrajm infatti implementa al suo interno un polinomio di

quinto grado che permette il controllo in velocitagrave e accellerazine sia nel punto di

partenza che di fine della traiettoria permettendo un movimento ldquodolcerdquo che egrave in

grado di evitare picchi di torsione Purtroppo nella realizzazione pratica questo egrave

risultato fin troppo oneroso in quanto sui motori da noi usati non esiste alcun

controllo in velocitagrave

Al fine di rendere piugrave reale la simulazione abbiamo implementato un

semplice controllo in movimento da una posizione finale ad una posizione finale

in un certo intervallo di tempo Esso egrave costituito da un semplice polinomio di

terzo grado non attua controlli e gestisce il movimento spingendo il servo a

velocitagrave massima per ogni intervallo Presentiamo la parte di codice per la

gestione del calcolo delle traiettorie e le principali caratteristiche

sullrsquoimplementazione dei vincoli che diversificano in relazione al polinomio

utilizzato

FUNZIONE CUBICA_norm Funzione per la generazione di una traiettoria da un punto iniziale q0 ad un punto di arrivo qf in un certo intervallo di tempo tv utilizzando un polinomio di terzo grado parametri in input q0= posizione iniziale qf= posizione finale da raggiungere tv=tempo in cui effettuare lazione

FUNZIONE JTRAJ Funzione per la generazione delle traiettorie da qo a q1I numero di interpolazioni dipende dal valore di tLa costruzione di tale algoritmo di generazione avviene tramite lutilizzo di un polinomio di ordine 5 con condizioni di velocitagrave e accellerazione agli estremi parametri input q0=posizione iniziale

Sviluppo dellrsquoalgoritmo di camminata 95

parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [qtnqdtnqddtn] = cubica_norm(q0qftv) if length(tv) gt 1 controllo sul tempo tscal = max(tv) t = tv()tscal else tscal = 1 t = [0(tv-1)](tv-1) normalizzazione parametrotempo end q0 = q0() qf = qf() qt= a0+ a1t+ a2t^2+ a3t^3 vincoli da soddisfare qdt= a1+ 2a2t+ 3a3t^2 qddt= 2a2+ 6a3t implementazione dei vincoli A=q0 B= zeros(size(A)) C=((3(tscal^2))(qf-q0)) D=(((-2)(tscal^3))(qf-q0)) creazione del polinomio ttpv = [t^3 t^2 t ones(size(t))] p=[D C B A] creazione del vettore velocitagrave qtn = ttpv p

q1= posizione finale da raggiungere tv=tempo in cui effettuare lazione qd0=condizione velocitagrave nellestremo di partenza qd1=condizione velocitagrave nellestremo di arrivo parametri i output qtn=vettore posizioni intermedie qdtn= velocitagrave qddtn=accellerazioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 implementazione dei vincoli A = 6(q1 - q0) - 3(qd1+qd0)tscal B = -15(q1 - q0) + (8qd0 + 7qd1)tscal C = 10(q1 - q0) - (6qd0 +4qd1)tscal E = qd0tscal F = q0 creazione del polinomio tt = [t^5 t^4 t^3 t^2 t ones(size(t))] c = [A B C zeros(size(A)) E F] calcolo valore posizione qt = ttc calcolo la velocitagrave c1 = [ zeros(size(A)) 5A 4B 3 C zeros(size(A)) E ] qdt = ttc1tscal calcolo accellerazione c2 = [ zeros(size(A)) zeros(size(A)) 20A 12B 6C zeros(size(A))] qddt = ttc2tscal^2

Per la chiamata di entrambe queste funzioni vengono richieste le posizioni

di partenza di arrivo ed un tempo questrsquoultimo rappresenta il tempo che intercorre

tra un frame e il successivo cioegrave ogni quanto verragrave generato un valore di

posizione Per ottenere quindi un movimento il piugrave possibile continuo dovremo

richiedere la generazione di un elevato numero di frame introducendo un tempo

piccolissimo Ad esempio se vogliamo che lrsquointerpolazione generi 10 posizioni

intermedie e che tutto il movimento sia compiuto in 1 sec dobbiamo dare t=01

Sviluppo dellrsquoalgoritmo di camminata 96

55 Passo statico e dinamico

Finora abbiamo visto come sia possibile simulare il movimento di una

singola zampa o del baricentro del nostro robot per eseguire un passoa

simulatore questi movimenti devono perograve essere coordinati in modo opportuno

per permettere lrsquoesecuzione sequenziale delle fasi che lo compongono

In prima analisi il nostro lavoro si posto come obiettivo di creare un passo

quasi-statico in cui il baricentro del robot egrave strettamente compreso nella base

drsquoappoggio per garantire al robot una discreta stabilitagrave

Lrsquoanalisi delle fasi della camminata quasi-statica da noi introdotta

possono essere cosigrave schematizzate

Figura 52 Le 6 fasi della camminata quasi-statica

Da questo possiamo notare come il passo si divide in 6 movimenti in cui

vengono mosse le zampe sul lato sinistro del corpo si sposta in avanti il busto si

muovono le zampe sul lato destro e si risposta il busto per tornare alla posizione

di partenza

Ersquo da notare come lo spostamento del busto nellrsquoanalisi reale avviene

sfruttando lrsquoattrito delle zampe con il suolo mentre a simulatore egrave richiesta

lrsquoinversione della catena cinematica

La struttura da noi proposta e analizzata tenta di attuare una camminata

stabile e veloce

Il calcolo della stabilitagrave nei movimenti risulta effettivamente coerente con

le nostre aspettative

Sviluppo dellrsquoalgoritmo di camminata 97

Figura 53 Analisi margine di

stabilitagravesolo alzata(sinistra)in

movimento(destra)

Dove

321 ddd == distanza tra baricentro e perimetro

021 ne= ll durante il passo considero solo la distanza sullrsquoasse del moto

Dopo aver raggiunto un discreto livello di camminata quasi-statica il

nostro obiettivo si egrave spostato nella realizzazione di una camminata quasi-

dinamica

Figura 54 Fasi della camminata quasi-dinamica

Come si puograve notare in questa configurazione esistono istanti in cui il

baricentro del nostro robot giace sul perimetro del triangolo drsquoappoggio in questi

istanti servirebbe una risposta immediata degli attuatori per limitare le tempistiche

di movimento e permettere al robot di mantenere lrsquoequilibrio Questo fenomeno

presente anche in natura lo possiamo notare analizzando la corsa di una pantera

quando il suo corpo ondeggia in ampi angoli i suoi movimenti diventani fulminei

per mantenere la stabilitagrave

Il nostro algoritmo presenta la sezione camminata_statm che simula i due

passi e ne mostra le differenze

Sviluppo dellrsquoalgoritmo di camminata 98

Figura 55 Passo Statico vista semi frontale

Figura 56 Passo Statico vista dallrsquoalto

Figura 57 Passo Quasi-Dinamico vista semi

frontale

Figura 58 Passo Quasi-Dinamico vista

dallrsquoalto

Possimo notare anche dalle immagini come egrave posizionato il baricentro del

nostro robot rispetto alla base drsquoappoggio in diverse fasi del passo e come nella

camminata quasi-dinamica si spinge a limiti intollerabili per le caratteristiche

fisiche del nostro progetto attuale

Presentiamo di seguito lo schema a blocchi di analisi della camminata

Sviluppo dellrsquoalgoritmo di camminata 99

Cerca posizione da raggiungere

Calcola traiettoria end-effector tramite cubiche

Traccia poligono drsquoappoggio per laposizione raggiunta

inizio

Fine

Attua movimento

Posizione=target no

si

Figura 59 Schema a blocchi creazione singolo passo

Il codice proposto in appendice egrave stato successivamente opportunamente

modulato ma questo ha portato a ulteriori cali di prestezione Pertanto nella

esecuzione si egrave preferito riutilizzare il file integro Problemi di tempistiche sono

da attribuirsi alla parte grafica e al calcolo matriciale richiesto per ogni

movimento

La sperimentazione dei passi reali sul robot fisico sono stati effettuati

utilizzando array di valori di angoli di giunto estrapolati durante la simulazione

sopra citata

Sviluppo dellrsquoalgoritmo di camminata 100

56 Formule di forza e torsione sui giunti

Uno dei ruoli principali delle zampe egrave quello di sostenere la piattaforma

del robot e di evitare la caduta

A causa di un cedimento strutturale avvenuto durante i primi approcci di

pilotaggio dei motori abbiamo pensato necessario calcolare la forza e la torsione

sui giunti utilizzando le formule di Newton-Eulero viste precedentemente La

risoluzione di tali equazioni richiede una potenza di calcolo non indifferente ma

le tempistiche del nostro simulatore sono causate dalla lentezza nel plottaggio dei

grafici e dei movimenti del robot

Non avendo un diretto valore di velocitagrave dei motori ci egrave sembrato

interessante provare a calcolare effettivamente le tempistiche dei motori

Conoscendo tramite la cinematica diretta la posizione di arrivo per ogni coppia di

valori abbiamo calcolato lo spazio percorso Cronometrando il tempo richiesto

affincheacute i motori si portassero nella posizione voluta egrave stato possibile valutare la

velocitagrave media dei motori

Questa velocitagrave egrave stata successivamente introdotta nellrsquoalgoritmo

Per il calcolo delle formule di Newton-Eulero egrave inoltre da sottolineare

lrsquoimportanza della ripartizione delle masse ci egrave sembrato coerente ipotizzare le

equidistribuzione del peso su tutte e quattro le zampe in quanto la PIC aggiuntiva

non dovrebbe influenzare tale ripartizione

Dallrsquoanalisi svolta si trovano i seguenti valori sui giunti

Sviluppo dellrsquoalgoritmo di camminata 101

Figura 60 Gafici della torsione in un passo quasi-dianmico

Dal grafico possiamo inanzitutto notare come i valori di torsione che ogni

motore subisce sono inferiori al valore massimo possibile dichiarato dalla casa

costruttrice presente in ogni grafico con la linea nera continua

Possiamo vedere che il valore piugrave alto di torsione viene subito

dallrsquoattuatore presente sulla caviglia sul quale ricadono le maggiori sollecitazioni

Un comportamento analogo ma con decisamente meno carico avviene sul

giunto del ginocchio orientato come il precedente che ha la funzione di aiutare la

caviglia nel sostegno del peso

Il giunto della spalla presenta lrsquoasse di rotazione parallelo alla forza peso

di cui per questo motivo non se ne fa carico Le sue piccole perturbazioni sono

causate durante il movimento del busto dalla resistenza della forza di attrito

sfruttata per il movimento e durante lrsquoalzata della zampa dal peso di ogni singola

Sviluppo dellrsquoalgoritmo di camminata 102

articolazione che risulta perograve essere pressocheacute irrilevante rispetto al peso del

busto

Durante il movimento si possono osservare sulle grandezze di ginocchio e

caviglia una serie di oscillazioni tra due valori essi sono causati dalla ripartizione

del peso su tre o quattro zampe in base alle alzate consecutive quando il peso egrave

ripartito su tre zampe ovviamente il carico che ogni singola zampa egrave costretta a

subire cresce

Ovviamente durante lrsquoalzata ogni singola zampa presenta sui giunti

torsioni pressocheacute nulle questi minimi valori sono da attribuirsi alla sola

resistenza di ogni link alla forza di gravitagrave

La parte di codice fondamentale riportata in Appendice B per questa

funzione risulta essere la definizione dei parametri e lrsquoimplementazione delle

formule di andata e di ritorno dei valori Le funzione base viene chiamata

allrsquointerno di una ulteriore funzione NW-EUm che adatta lrsquoanalisi al passo

Esisteragrave nellrsquoalgoritmo una funzione eulerom che effettueragrave i calcoli di

Newton-Eulero anche per la catena cinematica che presenta come end-effector il

baricentro

57 Anello di Controllo

Un ulteriore controllo introdotto egrave il calcolo della cinematica inversa e il

controllo sulla soluzione trovata

A questo anello di controllo egrave stato predisposto il possibile inserimento di

un eventuale errore nel raggiungimento della posizione voluta Questo errore

potrebbe essere rilevato in futuro da sensori di posizione o da un sistema di

stereovisione dellrsquoambiente in grado di percepire la reale posizione di ogni zampa

Per ora viene passato come parametro di input settato da utente

Sviluppo dellrsquoalgoritmo di camminata 103

Figura 61 Anello di controllo cinematica inversa

Diversi approcci sono stati implementati per il calcolo della cinematica

inversa la funzione dagrave la possibilitagrave allrsquoutente settare le equazioni decisionali

quali scegliere il metodo da utilizzare settare lrsquoapprossimazione desiderata nel

caso di metodo del gradiente e la configurazione a gomito alto o basso nel caso di

metodo geometrico

Presentiamo di seguito lo schema a blocchi di sviluppo dellrsquoalgoritmo che

ci permetteragrave una spiegazione piugrave immediata del funzionamento

Sviluppo dellrsquoalgoritmo di camminata 104

Applico formule geometriche Metodo gradiente

Scelta algoritmo

inizio

Metodo inseguimento veloce del gradiente

Calcolo cinematica diretta

Setto parametri decisionali

Calcolo errore

fine

Figura 62 Schema a blocchi calcolo cinematico

Proponiamo successivamente lo pseudo codice in merito la funzione di

inseguimento veloce del gradiente al fine di rendere piugrave chiare e dettagliate le sue

caratteristiche di esecuzione

1 Anticipatamente viene settata la approssimazione desiderata per il

raggiungimento del target e lrsquoincremento dellrsquoangolo

2 Pongo nullo lrsquoincremento iniziale

Sviluppo dellrsquoalgoritmo di camminata 105

3 Pongo nulli i rispettivi valori di gradiente_old dei singoli giunti

4 Calcolo la distanza dal target con le posizioni base

5 Fintantochegrave la distanza non egrave minore dellrsquoapprossimazione introdotta

bull Calcolo i valori dei nuovi gradienti incrementando i singoli angoli

del valore incremento prefissato

bull Confronto il valore del segno del nuovo gradiente del primo giunto

con il corrispettivo gradiente_old

- se segno discorde diminuisco il valore dellrsquoangolo in

funzione el valore del gradiente nuovo e old al fine di

arrivare al punto di colle

- se segno concorde aumento ulteriormente lrsquoangolo del

giunto aggiungendogli un valore proporzionale alla distanza

trovata

bull viene eseguito lo stesso controllo per il secondo giunto

bull incremento la variabile num_iterazioni

bull i nuovi gradienti diventano i gradienti_old

bull Calcolo la distanza con il nuovi valori degli angoli dei due giunti e

torno al punto 5

58 Map-building e scelta del gait

Il nostro scopo egrave quello ricreare un programma che ricevendo in input i

soli valori di dimensione dellrsquoarea di gioco e posizione degli ostacoli fornisca al

robot tutti i comandi per muoversi nellrsquoambiente e arrivare allrsquoobiettivo senza piugrave

intervento esterno A tal fine questa funzione dovragrave comprendere diversi goal

intermedi che possono essere cosigrave schematizzati

Sviluppo dellrsquoalgoritmo di camminata 106

Creazione mappa

Ricerca percorso

Scelgo passi da attuare

inizio

fine

Il programma si divide in tre parti fondamentali

bull creazione della mappa tramite algoritmo di map-building

bull ricerca del percorso

bull decisione del passo da intraprendere per ogni istante e applicazione

del gait oppotuno

581 Costruzione della mappa ed espansione degli ostacoli

Abbiamo elaborato la costruzione di una mappa creando una matrice

bidimensionale in cui ogni cella rappresenta le possibili posizioni del baricentro

del robot nellrsquoambiente Utilizzando valori noti in input per le dimensioni e i

posizionamenti degli oggetti egrave il programma stesso a fornirci la matrice

Un ostacolo viene identificato come un cubetto in cui le coordinate inserite sono

Sviluppo dellrsquoalgoritmo di camminata 107

Xa1Ya1

a

Xa2Ya2

Per ogni cella sono presenti due valori il primo rappresenta la distanza

dallrsquoobiettivo il secondo la distanza dallrsquoostacolo piugrave vicino (se ne esiste piugrave di

uno) Questi valori sono determinati tramite onde di propagazione che partono

dallrsquooggetto in esame e si diffondono in tutte le direzioni allrsquointerno della mappa

Lrsquoonda egrave da considerarsi come una scansione prima orizzontale e poi verticale

dellrsquoambiente che incrementa ad ogni riga i controlli sulla distanza sono

introdotti in seconda analisi il controllo sulla distanza dellrsquoostacolo piugrave imminente

qualora ce ne siano presenti piugrave di uno e il controllo sullrsquoespansione drsquoonda

limitata qualora lrsquoostacolo o la destinazione si trovino ai borbi della mappa

Gli ostacoli presentano una ulteriore onda di espansione orizzontale in

quanto egrave solo lungo questa direzione che possono avvenire collisioni tra il nostro

robot in movimento e gli ostacoli fissi Accorgimenti successivi ci hanno

permesso la costruzione di un ulteriore passo correttivo che puograve essere utilizzato

in un secondo momento per un avvicinamento forzato

Figura 63 Mappa creata vista dallrsquoalto

Sviluppo dellrsquoalgoritmo di camminata 108

Figura 64 Visione della mappa semilaterale si possono vedere i corpi degli ostacoli

Matrice generata

10 3 9 2 109 0 110 0 110 0 109 0 4 2 9 2 8 2 109 0 110 0 110 0 109 0 3 1 8 1 7 1 6 2 5 1 109 0 110 0 110 0

110 0 110 0 109 0 4 2 109 0 110 0 110 0 110 0 110 0 109 0 3 2 2 2 1 1 0 1

Ogni elemento della matrice rappresenta un vertice di intersezione delle

coordinate (xy) della mappa Il primo valore equivalente a 110 rappresenta

lrsquoostacolo il valore 109 la sua espansione in altro caso esso egrave la distanza dalla

destinazione Il secondo valore rappresenta la distanza dallrsquoostacolo piugrave

imminente

582 Algoritmo di ricerca del percorso minimo

Avendo a disposizione una matrice che mi identifica tutto lrsquoambiente che

circonda il robot abbiamo deciso di modificare lrsquoAlgoritmo di Dijkstra

precedentemente descritto al fine di trovare un percorso minimo con bassa

computazionalitagrave di calcolo

Sviluppo dellrsquoalgoritmo di camminata 109

Nella prima fase abbiamo applicato lrsquoalgoritmo di ricerca operativa non su

un grafo ma su una matrice considerando come nodi successori le quatto celle

confinanti (su giugrave dx sx) rispetto a quella in cui ci troviamo Il costo di

movimento o meglio il miglior successore in cui spostarsi per riterare lrsquoanalisi

viene scelto tramite lrsquoimplementazione di un compromesso adeguato tra

minimizzazione della distanza dal target e massimizzazione della distanza dagli

ostacoli

Questa funzione restituisce in output se egrave stato trovato un percorso in caso

affermativo di esso visualizza le coordinate dei punti da attraversare e le

indicazioni in rappresentazione direzionale (destra sinistra avanti indietro)

Direzioni

start Destra Avanti Avanti Destra Destra Avanti Avanti Destra Destra Destra

Coordinate

1 1 1 2 2 2 3 2 3 3 3 4 4 4 5 4 5 5 5 6

5 7

Tabella 2 risultati ricerca percorso

Riportimo il flow-chart che descrive lrsquoalgoritmo di ricerca sopra citato

Sviluppo dellrsquoalgoritmo di camminata 110

pos =partenza migliore=non_valido

Considero 4 successori

Passo ad altro

successore

pos=visitato

pos=v

Stampo percorso in coordinate

Trasformo percorso in direzioni

inizio

Pos = destinazione

Egraversquo pos sul bordo

Considero 32 successori

Insieme successori vuoto

Considero successore v

distanza dest_vltdistanza dest

migliore

distanza ost_vltdistaza ost

migliore

Percorso non trovato

salvo pos in percorso

fine

si no

si

no

si

si

no

no

no

si

Figura 65Schema a blocchi ricerca percorso

Sviluppo dellrsquoalgoritmo di camminata 111

583 Realizzazione del gait

Una volta generato il percorso da seguire segue la parte piugrave dispendiosa in

tempo in quando legata alla grafica

Sono stati implementati per la realizzazione del percorso i seguenti passi

bull in avanti

bull in dietro

bull a destra

bull a sinistra

bull correttivo avanti

bull correttivo indietro

bull correttivi laterali non sono stati introdotti a causa del giagrave minimo

spostamento laterale per ogni passo in quella direzione (2 cm)

La terza parte di algoritmo considera il percorso generato e decide il passo

da mettere in pratica uno spostamento sullrsquoasse verticale del piano implica una

scelta ulteriore per la calibrazione del numero di passi lunghi e dei passi correttivi

Una ampia falcata permette il movimento del robot di 7 cm mentre il passo

correttivo di 2 Il programma in base al percorso ottimizza le tempistiche

effettuando il maggior numero di passi ampi e riassestando la posizione con il

minor numero possibile di passi correttivi dispendiosi in tempo

Saragrave possibile ammirare tutta la camminata del nostro robot in una

immagine che plotta tutti i movimenti del robot

Sviluppo dellrsquoalgoritmo di camminata 112

Figura 66 Robot in movimento nellrsquoambiente

Al raggiungimento dellrsquoobiettivo destinazione sulla mappa appariragrave oltre il

percorso ideale il percorso effettivamente compiuto dal robot dandoci in uscita

anche le approssimazioni al valore reale di destinazione

Figura 67 Immagini del percorso trovatoin verde percorso ideale in blu percorso

effettivo

Tali valori rappresentano la distanza ancora da percorrere e la scelta

dellrsquoulteriore passo da intraprendere per compierla

Sviluppo dellrsquoalgoritmo di camminata 113

SONO ARRIVATO A DISTANZA DALL OBIETTIVO DIX = 35527e-015 Y = -03200 testo = devo fare ancora ans = 16000 testo = passi correttivi indietro

Dopo averci fornito queste informazioni il controllore comanderagrave e faragrave

eseguire al robot i passi correttivi appropriati che gli mancano per il

raggiungimento della destinazione

Schema a blocchi dellrsquoultima parte dellrsquoalgoritmo

Sviluppo dellrsquoalgoritmo di camminata 114

Alzata nello start

Analisi elemento i

Avanti Indietro Passo dx Passo sx

Calcolo avanzamento complessivo

Calcolo num passi lunghi e

corretivi

Esegue passi

Memorizzo pos

Stampa percorso vero e ideale

Calcola distanza dal target

Effettua passi correttivi ancora

possibili

inizio

Esistono elementi in percorso

Calcolo indietreggiamento

complessivo

Esegue passo

fine

no

si

1 -1 2 -2

Figura 68 Schema a blocchi movimento

Capitolo 6 Sperimentazione e analisi dei risultati

Sperimentazione e analisi dei risultati 116

61 Risultati statici

La creazione di file a se stanti contenenti tutte le possibili posture del

nostro robot e la realizzazione di procedure che identificano i passi standard

possono essere in un secondo momento cablati su un chip di controllo diretto

posizionato on-board

Questo darebbe la possibilitagrave reale al robot di deambulare senza

condizionamento con un Pc remoto Il processo di creazione dei percorsi vincola

perograve il movimento in quanto non sono presenti tuttora sensori di visione

Possiamo inoltre affermare che tra gli stili di camminata da noi studiati ha

un ruolo fondamentale la camminata quasi-statica che effettivamente permette il

movimento del robot in ambiente piano la camminata quasi dinamica richiede

ulteriori fasi di analisi soprattutto in merito al miglioramento della risposta dei

motori

Sono state effettuate diverse prove per la realizzazione di movimenti

fluidi il valore riscontrato a simulatore e di 30 frame mentre nella realizzazione

pratica a causa dei tempi di risposta egrave stato raggiunto un valor di soglia frame=8

che permette la realizzazione di movimenti continui

Sperimentazione e analisi dei risultati 117

611 Passo reale effettuato

In prima analisi poniamo le foto delle fasi piugrave significative del passo quasi-

statico compiuto da ASGARD in laboratorio

- 1 - - 2 -

- 3 - - 4 -

- 5 - - 6 -

Sperimentazione e analisi dei risultati 118

- 7 - - 8 -

- 9 - - 10 -

- 11- - 12 -

Tabella 3 Foto del passo quasi ndashstatico eseguito da ASGARD

Le foto rappresentano la sequenza di esecuzione della nostra camminata

quasi-statica nelle viste dallrsquoalto si possono notare le caratteristiche delle posture

assunte dalle zampe e si puograve verificare il poligono drsquoappoggio

Sperimentazione e analisi dei risultati 119

Da porre in particolare evidenza sono gli angoli del giunto che rappresenta

la spalla calibrati al fine di non interferire nel movimento durante il moto

Nelle viste laterali sono da porre in particolare evidenza i momenti di volo

di ogni singola alzata caratterizzandone le tempistiche di movimento

Da notare le immagini 5 6 e 1011 in cui si verifica la spinta del baricentro

in avanti nel primo caso per lrsquoavanzamento a metagrave passo nel secondo caso per

riposizionare le zampe nella posizione iniziale

612 Misurazioni reali della pressione

Durante le prove di laboratorio in merito alla camminata statica del robot

sono stati effettuati rilevamenti dellrsquounico sensore di pressione posto sotto la

zampa anteriore sinistra

Figura 69 Particolare del sensore di pressione da noi costruito (sinistra) e del

posizionamento di esso sotto la zampa anteriore sinistra (destra)

Sperimentazione e analisi dei risultati 120

I dati riscontrati sono

istanti descrizione Valori di resistenza misurati(ohm) media

passi 1 2 3 4 5 ottenuta

1 4 in appoggio 321 287 298 314 306 3052 2 alzo C 233 246 239 253 232 2406 3 appoggio C 266 275 294 278 289 2804 4 alzo B 1271 1232 1244 1262 1251 1252 5 appoggio B 98 90 99 92 87 932 6 sposto busto 311 308 298 301 287 301 7 alzo D 198 209 203 195 211 2032 8 appoggio D 302 319 311 320 301 3106 9 alzo A 180 193 184 192 177 1852

10 appoggio A 268 259 262 270 281 268 11 sposto busto 108 115 127 122 123 119 12

Assestamento

308

305

311

313

299

3072

Tabella 4 Rilevamenti sensore pressione

Da questa tabella abbiamo trasformato i valori di resistenza in forza secondo i

diagrammi di caratteristica del sensore e abbiamo trovato

val resistenza pressione

Ohm

Kg

4 in appoggio 3052 031 alzo C 2406 045

appoggio C 2804 034 alzo B 1252 002

appoggio B 932 15 sposto busto 301 0306

alzo D 2032 049 appoggio D 3106 034

alzo A 1852 055 appoggio A 268 046 sposto busto 119 06 assestamento

3072

033

Tabella 5 Trasformazione in forza dei valori misurati del sensore pressione

Sperimentazione e analisi dei risultati 121

Da cui si puograve ricavare il seguente grafico

Volori di pressione rilevati sperimentalmente

002040608

1121416

0 5 10 15

istanti temporali passo (sec)

pres

sion

e (K

g)

pressione

impatto con il suolo

Alzata

Figura 70 Grafico della pressione

Da questo possiamo notare come effettivamente il sensore rileva le

variazioni di forza peso che agiscono sulla zampa

Le misure sono state effettuate dopo un periodo di assestamento iniziale

quando effettivamente tutte le zampe sono appoggiate il carico risulta essere

minore mentre aumenta alle singole alzate delle altre tre articolazioni Si puograve

inoltre notare dal grafico come dopo lrsquoalzata la zampa subisce un forte impatto

con il terreno istante 5 e non si riposiziona piugrave esattamente corretta aderenza

qusto causa un eccessivo carico solo su alcune parti esterne del piedino (dove egrave

situato il sensore) che andranno ad aggravare le misurazioni durante le successive

alzate

Purtroppo questo incorretto posizionamento egrave causato dalla poca mobilitagrave

del giunto passivo della zampa che puograve essere migliorato solo tramite interventi

alla struttura meccanica Ulteriore vantaggio si potrebbe riscontrare con

lrsquoinserimento di un controllo di velocitagrave che eviti impatti considerevoli con il

terreno

Sperimentazione e analisi dei risultati 122

613 Confronti di cinemetica inversa

Proponiamo alcuni risultati ottenuti con i tre diversi metodi di cinematica

inversa introducendo disturbo nullo

Metodo geometrico

Metodo del gradiente

Inseguimento veloce

del gradiente Approssimazione=25 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 438

Errore in gradi 0 2 2 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3

N= 85

Errore in gradi 0 2 2 0 3 1 0 3 1 0 3 1 0 3 1 0 3 1

Approssimazione=05 gomito=alto(1)

N=1

Errore in gradi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

N= 2030

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

N= 130

Errore in gradi 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

Tabella 6 Confronto risultati ottenuti conmetodi cinematica inversa

Sperimentazione e analisi dei risultati 123

Da cui si possono ricavare i seguenti andamenti dellrsquoerrore

Errore sul secondo giunto con approssimazione di 25 gradi

01234

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Errore sul terzo giunto con approssimazione di 25 gradi

0

1

2

3

4

0 2 4 6 8

numero angoli

erro

re (g

radi

) metodogeometrico

metodo diinseguimento delgradiente

metodo diinseguimentoveloce

Errore sul secondo giunto con approssimazione di 05 gradi

0

05

1

0 2 4 6 8

nume r o a ngol i

met odo gradient e

met odo diinseguiment o delgradient e

met odo diinsegiument oveloce

Errore sul terzo gionto con approssimazione di 05 gradi

0

05

1

15

0 5 10

numero ang o li

metodogeometrico

metodo diinseguimento delgradientemetodo diinseguimentoveloce

Figura 71 Grafici che rappresentano lrsquoandamento dellrsquoerrore trovato

Sperimentazione e analisi dei risultati 124

I valori degli angoli inseriti sono quelli effettivamente lanciati come

comando ai motori

Vediamo che nonostante il primo metodo sia il migliore in quanto fornisce

ottimi risultati con una sola iterazione ha a monte una oneroso carico di analisi

Il metodo di inseguimento veloce fornisce buoni risultati con una notevole

diminuzione del numero di iterazioni rispetto al metodo del gradiente semplice

essi si sono quindi dimostrati metodi di qualitagrave efficiente per il ritrovamento di

posizioni desiderate Si ricorda che questi metodi sono stati qui analizzati come

banco di prova per possibili applicazioni in robot presenti in laboratorio dotati di

catene cinematiche piugrave complesse (LARP di UScarfogliero[39])

62 Risultati dinamici

Dallrsquoanalisi dei grafici ottenuti tramite le formule di Newton-Eulero

presentati nel capitolo precedente possiamo affermare che i motori utilizzati sono

stati correttamente calibrati in merito di forze e torsioni a cui sono sottoposti

durante il passo

Variando il tempo di esecuzione dei movimenti otteniamoli seguente

grafico

Sperimentazione e analisi dei risultati 125

Figura 72 Grafico torsione con interpolazione limitata a 2 frame

Riducendo di molto il valore di interpolazione come si puograve vedere di

grafici i motori subiscono delle variazioni di carico molto forti in istanti

ravvicinati in quanto come giagrave piugrave volte affermato non esiste un controllo in

accelerazione e velocitagrave Vediamo inoltre come i valori di picco del giunto della

caviglia della zampa b trovati sono in stretta similitudine con i parametri misurati

nei rilevamenti del sensore di pressione posto sotto la zampa stessa I due grafici

simili nellrsquoandamento presentano come unica differenza la misura dellrsquoimpatto

con il suolo nel grafo della pressione viene rilevato mentre la torsione del motore

non evidenzia le forze di repulsione del suolo ma solo le forze i momenti e forza

di gravitagrave sullrsquoasse rotoidale del giunto

Sperimentazione e analisi dei risultati 126

Notiamo comunque che nonostante i picchi subiti i valori rimangono nei

limiti proposti dalla HITEC

Il cedimento strutturale riscontrato egrave stato quindi attribuito a imprecisioni

di laboratorio avvenute per inesperienza iniziale

621 Caratteristiche negative dei motori

6211 Velocitagrave

Una nota negativa nellrsquoutilizzo di questi servo attuatori va perograve apostrofata

in merito alla velocitagrave di rotazione che rimane di gran lunga inferiore a quella

dichiarata dalla casa costruttrice ( 023 sec60deg con carico 018 sec60deg a vuoto)

6212 Alimentazione

Un problema riscontrato durante le prove sul campo riguarda

lrsquoalimentazione I motori vengono alimentati direttamente dalla PIC che genera i

segnali la quale egrave a sua volta alimentata da un trasformatore in grado di fornire

circa 35A alla tensione di utilizzo di 6V Dopo aver riscontrato dei problemi

durante lrsquoutilizzo di piugrave motori in simultanea siamo andati a verificare i valori

effettivi di corrente assorbita a run-time Il valore dichiarato di 900mA (senza

carico) sulle specifiche HITEC [28] consentirebbe il movimento di pressocheacute tutti

i motori in simultanea ma con carico applicato si sono riscontrati valori di picco

di 18A Essendo improbabile che tutti i 12 motori vengano utilizzati in

contemporanea e sotto massimo sforzo non egrave necessario dover fornire

costantemente 216A ma risulta comunque chiaro che in alcuni casi la corrente

fornita non egrave sufficiente e ciograve causa malfunzionamenti alla PIC Oltre alla

necessitagrave di acquistare un trasformatore piugrave potente sarebbe opportuno separare

lrsquoalimentazione dei motori da quella della PIC o perlomeno apportare le

necessarie modifiche affincheacute la corrente fornita al processore non sia

strettamente dipendente da quella assorbita dai motori

Sperimentazione e analisi dei risultati 127

63 Caratteristiche del percorso

Solitamente la deambulazione per sistemi legged richiede al robot di essere

fornito di un considerevole numero di sensori per lrsquoanalisi dellrsquoambiente

La realizzazione di un nuovo algoritmo che facendo cooperare elementi di

cinematica e ricerca matematica permette la camminata fornisce un efficiente

mezzo di analisi

I dati a disposizione ci permettono di affermare che lrsquoalgoritmo di

creazione delle mappe e ricerca di percorsi minimi presenta ottime risposte a

differenti tipologie di ambienti proposti

Tra le principali doti di cui esso dispone ci permettiamo di sottolineare la

velocitagrave computazionele e la semplicitagrave di utilizzo

Inserendo infatti semplicemente le dimensioni dellrsquoarea drsquoazione e la

definizione delle coordinate dellrsquoostacolo esso rileva il percorso minimo che ci

conduce al target in tempistiche ridotte

La parte innovativa di tale algoritmo permette non solo di generare il

percorso ma di delegare al sistema la scelta del passo da intraprendere nel singolo

istante basandosi semplicemente su coordinate geometriche e su un data base di

posizioni possibili

La fase di decisione del passo da intraprendere puograve essere considerato un

buon risultato di ricerca nella creazione della prima attivitagrave celebrale di ASGARD

Sperimentazione e analisi dei risultati 128

Figura 73 Esempi di percorsi provati a simulatore

Capitolo 7 Conclusioni e sviluppi futuri

Conclusioni e sviluppi futuri 130

71 Risultati raggiunti

Il percorso di analisi svolto ci ha permesso di realizzare un prototipo di

robot quadrupede tra i piugrave leggeri presenti nella ricerca Costriuito con materiali

tecnologicamente avanzati che gli garantiscono particolari doti di elasticitagrave e

torsione richiede anche per il movimento semplici attuatori utilizzati

abitualmente nellrsquoambito del modellismo

Queste considerevoli doti pongono ASGARD in una rilevante posizione per

la realizzazione futura di consistenti progetti di Trot gait deambulazione in

ambienti ostili e superamento di ostacoli

Nonostante il nostro robot non sia fornito come GEO (vedi cap3) di una

spina dorsale adattabile la camminata da noi implementata gli fornisce stabili

posture che gli consentono un movimento rapido nellrsquoambiente

Tale innovativa camminata permette infatti al nostro robot tempistiche di

movimento per nulla invidiabili a Patrush o a Tekken (vedi cap3)

Concludendo questo lavoro possiamo affermare di aver realizzato un

potente mezzo di analisi della camminata statica e dinamica dimostrandosi

estremamente utile nelle prime fasi di analisi e nella realizzazione pratica

successiva

Essendo il nostro robot tuttora sprovvisto di sensori ci egrave parso utile

implementare un algoritmo di ricerca del percorso minimo in ambiente con

ostacoli in posizioni note

A tal fine abbiamo pensato di far cooperare diversi settori di ricerca

rielaborando algoritmi di ricerca operativae applicandoli a mappe di ambienti

Il notevole risultato ottenuto permette ad ASGARD di riconoscere

lrsquoambiente nonostante non ottenga feedback dallo stesso Questo algoritmo

rappresenta il primo sostanziale passo per la creazione di un sistema di

apprendimento per rinforzo intelligente per il nostro robot

Conclusioni e sviluppi futuri 131

La comunicazione con i servo motori ha permesso un primo reale

interfacciamento tra macchina e robot e lo studio del movimento ha permesso al

robot di compiere i suoi primi passi

72 Progetti futuri

Attualmente il robot egrave in grado di deambulare in ambiente piano e molte

sono le applicazioni e le migliorieche potrebbero essere aggiunte al controllo del

nostro automa

721 Modifiche meccaniche

Miglioramento del giunto passivo che si trova nella caviglia la fine di

realizzare un sistema mossa-smorzatore[40] che riesce ad attuire gli urti e le

oscillazioni presenti nellrsquoimpatto durante lrsquoappoggio della zampa al terreno

A tal scopo egrave stato realizzato il primo rudimentale progetto di

reingegnerizzazione del giunto ottenendo il seguente risultato

Figura 74 Caratteristiche del progetto di zampa realizzato si possono notare le

torsioni possibili su due assi

Conclusioni e sviluppi futuri 132

In esso si puograve notare come il giunto del piedino sia diventato

completamente mobile regolato solamente dalla costante elastica delle molle che

puograve essere a sua volta regolata dalle viti presenti sulla base del piedino

Il sistema molla-smorzatore egrave in grado di immagazzinare energia durante

lrsquoimpatto con il suolo e di riutilizzarla per il riposizionamento in aderenza

perfetta

Ulteriore miglioria consigliata egrave lrsquoincremento dei sensori al fine di

permettere al robot una conoscenza piugrave vasta e piugrave autonoma dellrsquoambiente

esterno Un ritorno di valori sensoriali inoltre migliorerebbe il programma da noi

realizzato permettendo la reale acquisizione di dati esterni e non forniti da utente

Il sensore fino ad oggi presente ci permette semplicemente di capire i

carichi presenti sulla zampa ma non ci fornisce ulteriori informazioni Ponendo un

sensore su ogni zampa e migliorando la struttura portante di ogni singola

cavigliaverrebbero forniti dati utili nel valutare il corretto posizionamento della

zampa e cioegrave la corretta esecuzione di ogni passo

Al fine di un futuro miglioramento della parte sensoriale egrave stata condotta

una ricerca riguardante i migliori sensori disponibili sul mercato che meglio si

adattano alle nostre problematiche tale ricerca viene presentata in Appendice A

722 Miglioramenti Hardware

Un ulteriore miglioramento egrave richiesto nella comunicazione tra computer e

scheda di comando degli attuatori

Questa scheda non permette tuttora la programmazione della PIC presente

su di essa andrebbe rivisto il circuito presente in modo da sfruttare anche i canali

di ritorno in lettura in modo da sfruttare questi ultimi per feedback sensoriali

Questo miglioramento permetterebbe lrsquoutilizzo della scheda come interfaccia di

inputoutput del robot

Conclusioni e sviluppi futuri 133

Di primaria necessitagrave egrave la differenziazione dellrsquoalimentazione dei motori

dallrsquoalimentazione della scheda per non compromettere il corretto funzionamento

della PIC

723 Miglioramenti Software

Raggiunto lrsquoobiettivo di una buona camminata quasi-statica si puograve pensare

di integrare un controllore on-board aggiungere sistemi di trasmissione wireless e

unrsquoalimentazione autonoma per rendere il robot indipendente dalla postazione

fissa

Come si puograve notare i campi di ricerca sono molto vasti da semplici

migliorie hardware al campo di Intelligenza Artificiale per dotare il robot di

potenzialitagrave che lo rendano il piugrave possibile un emulatore dei comportamenti

naturali di un mammifero

73 Conclusioni finali

A causa della complessitagrave dellrsquoanalisi e delle difficoltagrave implementative

riscontrate alcune parti richiedono ancora un grosso intervento per arrivare a

efficienti strumenti di precisione per lrsquoattuazione dei movimenti

Sono comunque da sottolineare i grandi passi compiuti In quanto in poco

piugrave di un anno il progetto egrave stato creato e messo in pratica riuscendo ad arrivare

ad un passo cruciale per il corretto funzionamento

Il continuo progresso e il continuo impegno potranno portarci in un futuro

non troppo lontano alla creazione di amici elettronici in grado di giocare con noi

e di muoversi come farebbe un normale amico a quattro zampe

Lrsquointroduzione inoltre di sistemi di camminata dinamica intelligente in

qualsiasi ambiente porterebbe evoluzioni significative anche in ambito di bio-

ingegneria ambientale rendendo in questo modo possibile lrsquoacquisizione di dati

Conclusioni e sviluppi futuri 134

provenienti da habitat inaccessibili allrsquouomo quali crateri di vulcani profonditagrave

marine o pianeti del sistema solare permettendo cosigrave una crescita culturale

dellrsquointera umanitagrave

Bibliografia

[1] NDiolaiti ldquoSistemi di navigazione per robot mobili in ambienti sconosciutirdquo

Thesis 2001

[2] J Borenstein e L Feng ldquoMeasurement and correction of systematic odometry

errors in mobile robotsrdquo In IEE Transactions on Robotics and Automation

vol7 NO 12 pag 869-880 1996

[3] KS Chong e L Kleeman ldquoAccurate odometry and error modelling for

mobile robotrdquo In Proceedings of IEEE International Conference on Robotic

and Automation pag 2783-2788 Albuquerque New Mexico 1997

[4] U Gerecke e N Sharkey ldquoQuick and Dirty Localization for a Lost Robotrdquo

University of Sheffield 1999

[5] B Yamauchi A Shultz e W Adams ldquoMobile robot exploration and map-

building with continuous localizationrdquo In Proceedings of IEEE International

Conference on Robotic and Automation pag 3715-370 Leuven Belgium

1998

[6] H TakedaC Facchinetti JC Latombe ldquoPlanning the motions of a mobile

robot in a sensory uncertainty fieldrdquo In IEEE Transactions on Pattern

Analysis and Machine Intelligence pag 1002-1017 oct 1994

[7] JP Laumond editor ldquoRobot Motion Planning and Controlrdquo Published 1999

[8] C Sanitati ldquoAnalisi e implementazione di andature per il robot quadrupede

Sony Aibordquo Thesis 2001

[9] MH Raibert ldquoLegged robots that balancerdquo MIT Press Cambridge

[10] httpmarsroversjplnasagovgalleryspacecraft

Bibliografia 136

[11] AAbourachid ldquoA new way of analysing symmetrical and asymmetrical

gait in quadrupedsrdquoCRBiologiesvol 326pag 625-630May 2003

[12] JAVilenskyJACook ldquoDo quadrupeds require a change in trunk posture

to walk backwardrdquoJournal of Biomechanicsvol33pag 911-916March 2000

[13] Oricom technology ldquoQuadruped Locomotion- Musing about running dogs

and othe 4-legged creaturesrdquo(httpwwworicomtechcomprojectslegshtm)

[14] RKurazumeKYoneda e SHiroseFeedforward and Feedback dynamic

trot gait control for quadruped walking vehicleAutonomous Robotsvol12

pag 157-1722002

[15] H Kimura I Shimoyama e H Miura ldquoDynamics in the dynamic walk of

a quadruped robotrdquo RSJ Advanced Robotics vol4 no3 pp283-301 1990U

(httpwwwkimuraisuecacjpfacultiesColliedynamic-walk-of-quadrupedhtml)

[16] M Raibert H Brown MA Chepponis EF Hastings S Murthy e FC

Wimberly ldquoDynamically Stable Legged Locomotion Second Report to

OARPArdquo Robotics Institute Carnegie Mellon University January 1983

(httpwwwaimiteduprojectsleglabrobotsquadrupedquadrupedhtml)

[17] MH Raibert M Chepponis and H Brown ldquoRunning on Four Legs As

Though They Were Onerdquo IEEE Journal of Robotics and Automation Vol

RA-2 No 2 June 1982 pp 70-82

[18] STalebiIPoulakakisEPapadopoulos e MBuehler ldquoQuadruped robot

running with a bounding gaitrdquoCenter for Intelligent MachinesMcGill

UniversityMontreal

[19] MA Lewis e LS Simo ldquoNeurocore Evolution Development and

Roboticsrdquo Sumitted to IROS 96 Osaka(httpuirvliaiuiucedutlewispicsgeoIIhtml)

[20] Y Fukuoka H Kimura e AH Cohen ldquoAdaptive Dynamic Walking of a

Quadruped Robot on Irregular Terrain based on Biological Conceptsrdquo Int

Journal of Robotics Research Vol22 No3-4 pp187-202 2003

[21] MA Lewis ldquoGait Adaptation in a Quadruped Robotrdquo Autonomous

Robot 2002 in PressIguana RoboticsInc

[22] httpwwwrobocuporg

Bibliografia 137

[23] httpwwwaibo-europecomdownloadsAIBO_Storypdf

[24] LSteel e FKaplan ldquoAibos first wordsThe social learning of language and

meaningrdquo Sony Computer Science laboratory Vub Artificial Intelligent

laboratory

[25] httpwwwopencaeczhwhw_sony-robot_aibohtml

[26] httpprojectspowerhousemuseumcomhscaiboteardownhtm

[27] M Piralli ldquoProgetto quadrupede Politecnico di Milanordquo 2004

[28] HITEC httpwwwhitecrcdcom file HS475HbpdfServomanualpdf

[29] Proprieta chimiche ldquopolicarbonatodocrdquo da

httpwwwedilportalecomedilcatalogo0EdilCatalogo_SchedaProdottoaspI

DProdotto=1897

[30] DCrespi e F Gandola ldquoScheda di interfacciamento per servomotorirdquo2004

[31] L Sciavicco e B Siciliano ldquoRobotica industriale ndash Modellistica e

controllo di Manipolatorirdquo EdMc-Graw-Hill seconda edizione 2000

[32] G Gini e V Caglioti ldquoRoboticardquo Ed Zanichelli 2003

[33] MFolgheraiter ldquoEsempi di cinematica direttainversardquoPolitecnico di

Milano Robotica 2004

[34] HElias ldquoInverse Kinematics - Improved Methodsrdquo2004

httpfreespacevirginnethugoeliasmodelsm_ik2htm

[35] JMinguez e LMontanoNearness Diagram (ND) navigationcollision

avoidance in troublesome scenariosIEEE Transaction on Robotics and

Automationvol 20NO 1 February 2004

[36] AArleoJRMillan e DFloreanoEfficient learning of variable-resolution

cognitive maps for autonomous indoor navigationIEEE Transaction on

Robotics and Automationvol 15NO 6 December 1999ruary 2004

[37] S Vigno ldquoAlgoritmo di Dijkstrardquo 2001

[38] EWDijkstra ldquoA note on two problem in connexion with graphsrdquo

Numeriche Mathematik 1269-271 1959

[39] U Scarfogliero ldquoProgettazione e sviluppo di un robot bipede a dodici

gradi di libertagrave con controllo elastico-reattivordquo Thesis 2004

Bibliografia 138

[40] PRoccoControlloimpedenzaPolitecnico di MilanoRobotica Industriale

2004

Appendice A

Appendice A 140

i Sensori nei robot a zampe disponibili sul mercato

Ersquo stata compiuta una accurata ricerca sui componenti che potrebbero

essere montati su ASGARD per migliorarne le abilitagrave e le reazioni con lrsquoambiente

esterno e su tecniche di utilizzo di semplici sensori per fornire feedback rilevanti

Tra i sensori presenti in commercio egrave stata effettuata una scrematura in

merito a efficienza peso ingombro e prezzo in quanto si ricorda la precaria

stabilitagrave del robot e il fattore sovvenzione scolastica

Forniremo dei principali sensori trovati anche una rapida descrizione del

funzionamento dello stesso per meglio comprendere le migliorie e le potenzialitagrave

che esso potragrave donare al nostro progetto

ii Dead Reckoning Stima della posizione

Dead reckoning deriva da ldquodeduced reckoningrdquo e consiste nellrsquoutilizzare

una procedura matematica per determinare la posizione istantanea di un robot a

partire dalla conoscenza dalle posizioni e velocitagrave precedenti lungo un certo

periodo di tempo Questo sistema ha ovviamente lo svantaggio di accumulare

errori della stima e per questo periodicamente la misura deve essere corretta con i

valori reali o con quelli forniti da qualche altro strumento Spesso la stima della

posizione viene chiamata odometria39[41]

Per fornire la posizione corrente possono essere utilizzate le seguenti

tipologie di sensori

39 Odometry

Appendice A 141

ii1 Encoder Ottici

Gli encoder ottici sono sensori che vengono utilizzati per effettuare misure

di rotazione Possono essere utilizzati sia per robot a ruote per misurarne la

velocitagrave di avanzamento sia per un robot con gambe per misurare lrsquoangolo di

rotazione degli arti artificiali

Si sono sviluppati due diversi tipi di encoder ottici encoder incrementali e

encoder assoluti

Gli encoder ottici incrementali servono principalmente per stabilire la

velocitagrave di rotazione mentre quelli assoluti forniscono istantaneamente lrsquoangolo

di rotazione

ii2 Encoder ottici incrementali

Gli encoder ottici incrementali sono formati da un disco routante solidale

con lrsquoasse di rotazione del sensore da un led e da due sensori ottici (tipicamente

due fotodiodi) Il disco egrave suddiviso in settori trasparenti e settori opachi Il numero

dei settori in genere egrave una potenza di 2 cioegrave 64128256 etc Il led emette una luce

sul lato del disco mentre i due fotodiodi la captano sul lato opposto Grazie alle

regioni opache si ha la possibilitagrave di vedere degli impulsi sul fotodiodo che

permettono di stabilire ad esempio la velocitagrave di rotazione ma non bastano ad

avere una indicazione sul verso della rotazione stessa Per sapere se la rotazione egrave

oraria o antioraria si egrave utilizzato un secondo fotodiodo collegato come in figura

Figura 75 Struttura encoder ottico

Appendice A 142

Come si puograve notare i due fotodiodi avranno unrsquouscita molto simile ma

sfasata causata dalle regioni opache del disco questo sfasamento ci permetteragrave di

capire il verso di rotazione

La velocitagrave di rotazione risulta essere proporzionale in modo inverso alla

larghezza degli impulsi in uscita

Questo tipo di encoder egrave molto economico tanto da essere utilizzato nelle

seconda metagrave degli anni novanta nei mouse da PC

Encoder ottico presente in commercio

ii21 EL30 E-H-I Eltra srl

Serie encoder miniaturizzati Oslash30 per applicazioni ove sia richiesto il

minimo ingombro possibile pur mantendo ottime prestazioni[42]

- Risoluzioni fino a 1000 impgiro con zero

- Varie configurazioni elettroniche disponibili con

alimentazioni fino a 24 Vdc

- Frequenza di esercizio fino a 100 Khz - Uscita

cavo eventuale connettore applicato alla fine del

cavo -

- Velocitagrave di rotazione fino a 3000 rpm - Grado di

protezione fino a IP54tensione di alimentazione 5 V

e peso di 50 g

Figura 76 Encode incrementale

EL 30 E-H-I

ii3 Encoder ottici Assoluti

Gli encoder ottici assoluti a differenza di quelli incrementali forniscono in

uscita direttamente una configurazione di bit che indicano la posizione angolare

Il dispositivo egrave composto di un disco suddiviso sempre in settori ma con

piugrave tracce una sorgente di luce e un numero di sensori di luce pari al numero di

tracce

Appendice A 143

Ad ogni traccia corrisponde un bit e ad ogni settore corrisponde un livello

Il numero di tracce e setori egrave scelto in modo da utilizzare tutte le combinazioni

possibili e quindi i livelli saranno traccenum2

Esistono perograve diversi modi per codificare ogni livello Il metodo piugrave

semplice egrave partire da 0 e incrementare di 1 il numero e utilizzare la normale

codifica binaria

Il sistema risulta essere rischioso quando due livelli consecutivi nella

codifica hanno piugrave di un bit diverso per questo motivo sono state introdotte

diverse codifiche come il codice Gray che riescono ad evitare cosigrave il problema

prima citato

Figura 77 Essempi di disco Figura 78 Struttura di rilevamento

Presenti sul mercato

ii31 Sensori ottici CORRSYS-DATRON

Tipologia a 2 assi (trasversalelongitudinale) per la misura accurata di

velocitagrave distanza percorsa angolo di imbardata[43]

S-CE con integrato giroscopio ottico Come versione S-CE ma con

incorporato un giroscopio a fibra ottica range 200degsec linearitagrave 02 1000 Hz

banda passante per avere maggiori info sul comportamento dinamico del veicolo

SL-R Ultralight Versione ultralight Racing del modello S-CE

SL 200 Sensore ottico biassiale per la misura senza scivolo di dinamiche

trasversali su larghe gamme di funzionamento Il sensore SL-200 egrave caratterizzato

da dimensioni ridottissime (ultra piatto) e per la possibilitagrave di installazione su

piccoli veicoli

Appendice A 144

La serie di encoder assoluti multigiro paralleli EAM[42] sono stati studiati

precisioni anche su esteso sviluppo lineare

sono disponibili con risoluzioni fino a 13 bit e quindi 8192 PosizioniGiro sul giro

e fino

ii32 EAM Parallelo-SSI Eltra srl

per applicazioni che richiedono alte

a risoluzioni di 12 bit 4096 Posizionigiro per i giri Le configurazioni di

uscita sono sia a codice gray che binario e le elettroniche di uscita coprono tutti i

campi di applicazione essendo disponibili in formato NPN NPN OPEN

COLLECTORPNP e PUSH PULL

Figura 79 Encoder assoluto EAM Parallelo ndashSSI

ii4 S

Sensori di grande utilitagrave per la localizzazione di oggetti presenti

un robot sono sensori che sfruttano lrsquoeffetto Doppler

Largamente utilizzati in ambito marino e aeronautico essi misurano la velocitagrave

del me

ensori Dopler

nellrsquoambiente di azione di

zzo in riferimento alla posizione del suolo Lrsquoeffetto doppler si basa sul

principio di funzionamento dello shift di frequenza unrsquoonda che viene ricevuta o

riflessa da una sorgente che si muove rispetto al mezzo In ambito terrestre le

onde spedite e ricevute sono microonde sonore

Appendice A 145

In relazione alla figura riusciamo ricavare le seguenti regole di

funzionamento

αα cos2cos O

DDA F

cFVV ==

Dove

AV = velocitagrave del terreno

DV = misura della velocitagrave tramite il sensore

α = angolo di declinazione

c = velocitagrave della luce

= scostamento in frequenza per effetto Doppler DF

OF = Frequenza emessa

La difficoltagrave di utilizzo di questo sensore diventa consistente nellrsquoutilizzo

su robot mobili in terreni accidentali in quanto gli spostamenti verticali

influiscono sulla misura di e sulla stima di DV AV

Appendice A 146

ii41 Robot Italy SRF04

Figura 80 Sensore SRF04

LSRF04 [44] e un sensore ad

ultrasuoni che unisce delle ottime

prestazioni ad un costo veramente

conveniente utilizza una tecnologia a

ultrasuoni molto semplificata

Questo sensore e dotato di un

microcontrollore che assolve tutte le

funzioni di calcolo ed elaborazione e

sufficiente inviare un impulso e leggere

leco di ritorno per stabilire con facilita

la distanza dellostacolo o delloggetto

che si trova davanti

iii Heading Sensor

Tramite lrsquoutilizzo di questi sensori si riesce in parte a compensare parte le

carenze di odometria Attraverso la stima della posizione ogni piccolo errore si

sommeragrave al precedente nella stima della posizione provocando uno scostamento

via via crescente tra la posizione reale e quella stimata Ersquo di grande aiuto

individuare immediatamente e correggere alcuni di questi errori

iii1 Giroscopio meccanico

Il giroscopio meccanico basato sulla ldquoinerziona di un rotorerdquo egrave conosciuto

giagrave dai primi del 1800 Il primo giroscopio fu costruito in germania 1810 da GC

Bohnenberger Nel 1852 il celebre francese L Foucault mostrograve che il giroscopio egrave

Appendice A 147

in grado di percepire la rotazione terrestre Essa puograve essere scomposta in due

componenti lungo un immaginario asse verticale e lungo un asse tangente alla

superficie Al polo la componente verticale saragrave di 15degora e spostandosi verso

lrsquoequatore diminuiragrave fino ad annullarsi Come per gli encoder ottici anche per i

giroscopi esistono due metodologie per fornire mediante una tensione o una

frequenza lo spostamento istantaneo o lrsquoangolo assoluto di rotazione

Figura 81 Giroscopio meccanico

Vediamo come funziona un giroscopio meccanico il rotore pilotato

elettricamente egrave sospeso ai propri assi da una coppia di cuscinetti con attrito

bassissimo I cuscinetti a loro volta sono montati su un anello ruotante chiamato

anello di sospensione interna (inner gimbal ring) Questo anello gira a sua volta

allrsquointerno di un altro anello (outer gimbal ring) La rotazione dellrsquoanello interno

definisce lrsquoasse x del giroscopio che egrave perpendicolare con lrsquoasse di rotazione del

rotore lrsquoanello esterno definisce lrsquoasse verticale del giroscopio In questa struttura

egrave da notare come lrsquoasse orizzontale saragrave allineato con il meridiano in questo modo

si potragrave calcolare la rotazione orizzontale e verticale in funzione a quella terrestre

iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codice

FT445533

Nuovo regolatore di giri con la piugrave moderna tecnica microprocessore con

Display LC ad 8 posti Il regolatore di giri GV ndash1 [45] mantiene la testa del rotore

Appendice A 148

in sistema di giri costante Cosigrave diventa possibile un movimento piugrave preciso e

sensibile

Al contrario di altri regolatori il GV-1 controlla anche il numero di giri del

motore Una curva a 3 punti regolabile permette la prescrizione del numero dei

giri tramite un commutatore a tre scatti oppure un canale proporzionale Nel

display viene indicato a scelta il numero di giri del motore o del rotore dove viene

memorizzato il numero di giri massimale e richiamabile in qualsiasi momento

Questo modello risulta compatibile con i servo da noi utilizzati

Programmi

bull Indicazione del numero di giri (rotore oppure

motore)

bull Memoria del numero di giri massimale

bull Messa a punto del rapporto di riduzione

bull Regolazione del punto di attivazione e

disattivazione

bull Impostazione del campo di regolazione del

numero di giri

bull Impostazione del numero di giri massimale

bull Automatica disattivazione a partire

dallacuteimpostazione del numero di giri

bull Messa a punto di una curva di regolazione a tre

punti

bull Messa a punto 3D

bull Curva di messa a punto miscela a 9 punti

bull Test magnetico con indicazione del campo

intensitagrave

bull Misurazione della tensione di batterie

bull Allarme di bassa tensione

bull Messa a punto del servo di gas ATV

Caratteristiche Tecniche

Dimensioni Regolatore 56x305x16 mm

Dimensioni Sensore oslash 10 x 16 (27) mm

Peso Regolatore 34 g

Peso Sensore 4 g

Alimentazione 38 ndash 6 V

Campo di regolazione da 1000 a 21000

girimin

Figura 82 Futaba regolatore di giri

GIVERNOR GV-1

Appendice A 149

iii12 Futaba Giroscopio FP GY 240 AVCS

Grazie allrsquoutilizzo congiunto del nuovo sensore SMM40 e della nuova

tecnica di interruttore altamente integrata SMD41 la Futaba egrave riuscita a costruire

un giroscopio di soli 25g con dimensioni decisamente contenute 27 x 27 x 20

mm

Nonostante questa minima dimensione il giroscopio egrave equipaggiato sia

con il modulo normale che quello AVCS (Heading Hold)[46]

Oltre ai vantaggi rappresentati dalle dimensioni e dal peso questo sensore

non presenta alcuna deriva dovuta alla temperatura ed egrave ampiamente insensibile

alle vibrazioni ed ai colpi

Grazie ad una elaborazione puramente digitale del segnale questo

giroscopio reagisce molto rapidamente

Caratteristiche tecniche Dimensioni

27x27x20 mm PesoWeight

25 g Alimentazione

3-6 V Temperatura d`esercizio

-10degC +50degC Figura 83 Giroscopio FP GY 240 AVCS

iii2 Giro-bussola

Questo dispositivo integra le funzionalitagrave del giroscopio e della bussola per

individuare il Nord Lrsquoindividuazione del nord egrave importante percheacute lrsquoasse di

rotazione del rotore egrave orientato lungo un meridiano lrsquoasse orizzontale del

giroscopio non risente della rotazione terrestre La direzione e lrsquointensitagrave della

40Silicon Micro Machine misure laser posizioni 41 Standar ISO9000

Appendice A 150

misura dipende dallo scostamento tra lrsquoasse del rotore e la direzione dellrsquoasse

terrestre

iii3 Giroscopio-Girobussola a fibre ottiche

Il principio su cui si basa il funzionamento dei giroscopi ottici fu scoperto

dal fisico francese Sagnac nel 1913 ed ha trovato inizialmente una sua

applicazione nella costruzione di interferometri e successivamente nei giroscopi

laser ad anello chiuso (RLG Ring Laser Gyro) Tale principio consiste nello

sdoppiare un unico raggio luminoso in due diversi raggi che viaggiano su un

medesimo percorso ottico ad anello chiuso ma in direzioni opposte un raggio

ruota in senso orario e lrsquoaltro in senso antiorario

Figura 84 Schema di principio di un giroscopio laser ad anello

Nei giroscopi RLG[47] i raggi rimbalzano fra vari specchi come mostrato

in Figura 83 nei giroscopi FOG (a fibre ottiche) i raggi scorrono dentro un fascio

di fibre ottiche lungo anche 5 Km ed avvolte in spire del diametro di alcuni

centimetri

Appendice A 151

Quando un raggio si propaga la sua fase cambia continuamente con la

distanza L percorsa e precisamente di 2π radianti per ogni tratto pari alla

lunghezza drsquoonda λ si ha pertanto

λπα L2

=

con λ = c f dove f egrave la frequenza del raggio luminoso e c egrave la velocitagrave

della luce

Nel caso in cui il giroscopio sia fisso rispetto ad un sistema inerziale i due

raggi percorrono lo stesso cammino anche se in direzioni opposte arrivando nel

ricevitore con la stessa fase Diversa egrave la situazione in cui lrsquointero sistema ruota

attorno ad un asse passante per O (asse sensibile del giroscopio) e con velocitagrave

angolare Ω in tal caso il percorso del raggio concorde con il verso di rotazione

tende ad allungarsi mentre quello dellrsquoaltro raggio tende ad accorciarsi per cui la

differenza di fase Φ dei segnali che arrivano nel ricevitore non egrave piugrave nulla ma

assume la seguente espressione

Ω=∆=Φλ

παcLD2

Dove

L = lunghezza del percorso ottico o delle fibre ottiche nei FOG

D = diametro del percorso o della bobina nei FOG

Ω = velocitagrave angolare del giroscopio attorno al suo asse sensibile

Il fattore davanti alla velocitagrave angolare Ω egrave chiamato fattore di scala ed egrave

un indicatore della sensibilitagrave dello strumento piugrave egrave alto tale fattore piugrave lo

strumento egrave in grado di misurare velocitagrave angolari molto basse come ad esempio

nel caso di quella terrestre Come si vede il fattore dipende dai dati geometrici del

percorso ottico e precisamente nel caso dei FOG dalla lunghezza delle fibre

Appendice A 152

ottiche e dal diametro delle spire Analizzando la precedente espressione si

comprende come a paritagrave di volume i giroscopi a fibre ottiche (FOG) siano molto

piugrave sensibili dei giroscopi laser (RLG)

Figura 85 Schema tipico di un giroscopio a fibre ottiche

iii31 La funzione giroscopica

Il FOG non egrave in grado da solo di indicare la direzione del nord come nei

normali giroscopi di tipo meccanico con sospensione cardanica esso egrave soltanto in

grado di misurare la componente della velocitagrave angolare terrestre lungo il suo asse

di sensibilitagrave

Per ottenere la funzione orientamento desiderata si montano tre giroscopi

disposti lungo una terna di assi cartesiani X Y e Z che puograve coincidere con i tre

assi del robot per definire il piano orizzontale si impiegano inoltre due sensori di

livello La tecnologia utilizzata egrave nota come strapdown ossia con i giroscopi

montati rigidamente su un piano fisso costantemente orientato e parallelo rispetto

ad un piano di riferimento come nella navigazione inerziale di tipo tradizionale

Nel caso di oggetto fermo lrsquounica velocitagrave angolare a cui esso risulta essere

soggetto egrave quella terrestre per cui i tre giroscopi misurerebbero le seguenti

componenti

Appendice A 153

yTx CosPCosϕρρ =

yTy SinPCosϕρρ minus=

ϕρρ Sinz T=

dove egrave facile calcolare lrsquoangolo di prova nel caso siano note la velocitagrave

ρ

yP

Τ e la latitudine ϕ

Nel caso di moto con velocitagrave VN si ha una velocitagrave angolare

supplementare pari a VNRT diretta lungo -y (RT egrave il raggio della Terra) A questa

velocitagrave si sommano inoltre altre velocitagrave angolari continuamente variabili

dovute ai moti attorno ai suoi tre assi e precisamente i moti di rollio di

beccheggio e di imbardata

yyTx CosPCos ρϕρρ +=

oT

NyTy R

VSinPCos ρϕρρ ++minus=

aT Sinz ρϕρρ +=

In realtagrave il problema viene risolto definendo inizialmente alla partenza un

sistema cartesiano di riferimento con gli assi X0 e Y0 situati nel piano orizzontale

e lrsquoasse Z0 che coincide con la verticale In tale situazione i segnali provenienti

dai sensori di livello devono essere nulli

Durante la camminata la continua misura delle tre velocitagrave angolari e

dellrsquoassetto del robot mediante i sensori di livello consentono di definire lrsquoesatto

orientamento della terna cartesiana T (X Y e Z) rispetto alla terna di riferimento

iniziale T0 (X0 Y0 e Z0) Un opportuno calcolatore provvede a convertire gli

Appendice A 154

angoli di sfasamento dovuti allrsquoeffetto Sagnac nelle corrispondenti velocitagrave

angolari integrando le velocitagrave si ottengono gli angoli

dta iii int+=+ ρα1

da cui egrave poi possibile ricavare gli angoli di rollio di beccheggio e di

imbardata Ogni ciclo di calcolo deve avere una durata molto breve inferiore

normalmente al tempo impiegato dai segnali luminosi a percorrere la bobina di

fibre ottiche (∆t = Lc = 3 nsec per L = 1 m)

iii4 Giroscopio piezoelettrico

Utilizzano la forza di Coriolis per misurare la velocitagrave di rotazione

montando tre trasduttori piezoelettrici su un prima triangolare Se uno dei sensori

egrave eccitato alla sua frequenza di risonanza la vibrazione prodotta verragrave percepita in

eguale misura dagli altri due sensori Quando il prisma viene ruotato lungo il suo

asse longitudinale la forza di Coriolis risultante causeragrave una piccola differenza

nellrsquointensitagrave di vibrazione percepita dai due trasduttori la variazione di tensione

risultante egrave direttamente e linearmente proporzionale alla velocitagrave di rotazione

Appendice A 155

iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03

Giroscopio miniaturizzato[44] 26x27x11mm per 7grammi di peso Puo

essere utilizzato per bilanciare o per compensare spostamenti indesiderati di

walkers e rover Utile anche per rilevare spostamenti

Figura 86 Modello GWS PG-03 Robot Italy

iii42 Giroscopio Piezoelettrico Enc-03ja

Ersquo componente elettronico di solo 21mm x 8mm[48] Ersquo in grado di

rilevare i cambiamenti nella rotazione pur essendo ultra-piccolo ultra-leggero

con una ultra rapida-risposta e a basso costo Usa il fenomeno della forza di

Coriolis per rilevare i cambiamenti nella velocitagrave angolare di rotazione

Limitazione le girobussole hanno una lettura massima di 300 gradi al secondo e

richiederanno la calibratura

Figura 87 Giroscopio Enc-03ja

Appendice A 156

iv Sensori geomagnetici

Nella stima della posizione inevitabilmente esistono degli errori e questi

vengono misurati durante il tempo e quindi egrave molto importante poter disporre di

una misura assoluta e poter compensare o correggere appunto questi errori

Il piugrave comune sensore di questo tipo egrave la bussola magnetica La

terminologia usualmente utilizzata per misurare un campo magnetico egrave la densitagrave

di flusso magnetico B misurata in Gauss(G) Altre unitagrave di misura sono la Tesla

(T) e gamma (γ ) dove 1 Tesla = Gauss = Gamma Lrsquointensitagrave media del

campo magnetico terrestre egrave 05 G e puograve essere rappresentato come un bipolo che

fluttua sia nel tempo che nello spazio situato a 440 chilometri dal centro e

inclinato di 11deg dallrsquoasse di rotazione terrestre Questa differenza tra il polo

magnetico e il polo terrestre egrave conosciuta come declinazione e varia in funzione

del tempo e della posizione geografica

410 910

I dispositivi che misurano i campi magnetici sono detti magnetometri Per

applicazioni su robot mobili i magnetometri piugrave utilizzati si dividono nelle

seguenti famiglie

bull Bussola magnetica meccanica

bull Bussola a effetto Hall

bull Bussola a magnetoreversiva

Prima di analizzare da vicino ogni singola famiglia va precisato un

problema molto importante il campo magnetico terrestre egrave spesso distorto nelle

vicinanze di strutture metalliche questo rende difficile lrsquoimpiego di tali sensori

allrsquointerno di edifici Tuttavia questo problema egrave possibile aggirarlo utilizzando

con essi ulteriori sensori

Appendice A 157

iv1 Bussola magnetica meccanica

La prima traccia nellrsquouso della bussola risale al 2634 AC Dal XIII secolo

utilizzata in tutto il mondo in campo marittimo W Gilber [1600] fu il primo ad

esporre teorie riguardanti campi magnetici presenti sulla superficie terrestre

Le prime bussole marine consistevano in aghi magnetizzati che

fluttuavano su pezzetti di sughero immersi in acqua Questo dispositivo egrave stato

raffinato fino ad arrivare oggi giorno ad essere composto da un paio di magneti

attaccati ad un disco graduato fluttuante in una composizione di acqua alcol e

glicerina

Lrsquoerrore tra nord magnetico e nord geografico egrave conosciuto come

deviazione della bussola

decdevit CFCFHH plusmnplusmn=

Dove

tH = Direzione giusta

iH = Direzione misurata

devCF = Fattore di correzione per la deviazione della bussola

decCF = Fattore di correzione per la declinazione magnetica

Unrsquoaltra fonte potenziale di errore consiste nel dip magnetico42 dovuto alla

componente verticale del campo magnetico terrestre Questo effetto varia in base

alla latitudine possiamo affermare che le linee di forza che agiscono sono

orizzontali allrsquoequatore e verticali ai poli Per questo motivo sugli aghi delle

bussole a volte sono montati dei pesetti che pessono essere spostati al fine di

contrastare questo effetto

42 Magnetic dip

Appendice A 158

iv2 Bussola a effetto Hall

I sensori ad effetto Hall sono basati sulle osservazioni di Hall(1979) che un

conduttore e un semiconduttore immersi in un campo magnetico mostrano una

differenza di potenziale ai loro capi Il vantaggio di questi sensori egrave la possibilitagrave

di misurare il flusso in modo statico I primi sensori costruiti avevano una

sensibilitagrave e una stabilitagrave paragonabile a quella dei fluxgate43 ma negli ultimi anni

egrave migliorata fino a raggiungere i Gauss e oltre Giagrave nei primi anni 60rsquo la

Marina mostrograve interesse a questo tipo di sensori e la Motorola costruigrave un certo

numero di prototipi per valutarne le potenzialitagrave La bussola della Motorola

montava due sensori ad effetto Hall per limitare gli effetti dovuti alle variazioni di

temperatura Ogni sensore era formato da una barretta di ferro- indio- arsenico di

2 x 2 x 01 millimetri inserito in un concentratore di flusso come si vede in Figura

87

310 minus

Il concentratore di circa 5 cm incrementava la densitagrave di flusso attraverso il

sensore di due ordini di grandezza [Willey 1964] lrsquouscita di tale dispositivo egrave un

treno di impulsi ad ampiezza variabile in cui lrsquoampiezza appunto egrave proporzionale

al valore misurato Fu riscontrata una buona linearitagrave fino a densitagrave di flusso di

0001 Gauss[Willey 1962]

Figura 88 Una coppia di sensori Hall (Lega di Indio-Ferro-Arsenico)

Maenaka allrsquouniversitagrave di tecnologia di Toyohashi in giappone sviluppograve

un sensore al silicio basato su due sensori Hall montati in disposizione ortogonale

43 Bussola fluxgate sfutta campi magnetici generati da spire azionati da corrente continua

Appendice A 159

Purtoppo i risultati di questo esperimento non furono dei migliori in

quanto il sensore costruito forniva un sensibilitagrave di 1 Gauss e il campo terrestre va

da 01 Gauss allrsquoequatore fino a 09 ai poli Di notevole interesse rimane per

lrsquoessere interamente costruito in un integrato e quindi lo rende molto pratico e di

elevato interesse commerciale

iv21 1490 Digital Compass Sensor

Questo sensore[49] fornisce informazioni su scostamenti in otto direzioni

misurando il campo magnetico della terra usando la tecnologia ad effetto Hall Il

sensore 1490 internamente egrave destinato per rispondere a cambiamento direzionale

simile ad una bussola riempita liquida Rinvieragrave al senso indicato da uno

spostamento di 90 gradi in circa 25 secondi senza overswing I 1490 possono

funzionare inclinato fino a 12 gradi con lerrore accettabile Egrave connesso facilmente

a circuiti digitali ed i microprocessori

Caratteristiche Specifiche Alimentazione 5-18 volt di CC 30 mA Uscite Apra il collettore NPN affondi 25 mA per il senso Peso 225 grammi Formato un diametro da 127 millimetri alto 16 millimetri Perni 3 perni da 4 lati sui centri del 050 Temperatura -20 - +85 gradi di C

Figura 89 1490 DCS

iv3 Bussola a magnetoreversiva

Questa tipologia di sensori egrave molto interessante per il range di sensibilitagrave

che coprono ad anello aperto che va da a 50 Gauss e coprono quindi

interamente la regione interessata del flusso terrestre Ad anello chiuso hanno un

210 minus

Appendice A 160

sendibilitagrave approssimativamente di Gauss [Lenz 1990] Presentano

ulteriormente un basso assorbimento di potenza piccole dimensioni che li

posizionano tra i primi posti nella scelta di componenti

610 minus

iv31 Philips bussola AMR

Uno dei primi sensori magneto resistivi impiegati per realizzare una

bussola magnetica egrave il KMZ10B costruito dalla Philips[50] Semiconductors nel

1996 La sensibilitagrave di questo dispositivo (approssimativamente 01 mVAmcon

alimentazione di 5 V DC) comparata con il campo magnetico terrestre massimo

implica che devono essere presi con molta considerazione gli errori dovuti alla

variazione della temperatura e alle variazioni di offset[Patersen1989]Un sistema

per ovviare a questi inconvenienti egrave utilizzare lrsquoeffetto flipping44

iv4 Bussola magnetoelastica

Utilizzare materiali magneto-elastici come materiali fondamentali di

sensori in campo magnetico ad alta precisioneIl principio su cui si basano questa

famiglia di componenti egrave la variazione del modulo di Young[51] in leghe

magnetiche quando introdotte in campo magnetico esternoIl modulo di elasticitagrave

di un materiale egrave semplicemente misurato come

εσ

=E

Dove

E = Modulo di elasticitagrave

σ = Tensione applicata

44 Flipping phenomenon non trattato in questa discussione

Appendice A 161

ε = Deformazione risultante

Se la tensione applicata rimane costante la deformazione egrave inversamente

proporzionale al modulo di elasticitagrave In alcune leghe E egrave molto pronunciato

questo permette al campo magnetico di essere accuratamente determinato

misurando la variazione di lunghezza di una lega opportunatamente sollecitata da

una forza costante Esistono due tecnologie che permettono di realizzare sensori

economici e molto precisi

bull Interferometric

bull Tunneling-trip

iv41 Metglas 2605S2

Metglas[52] egrave una lega di ferro boro silicio e carbonio Il sensore egrave

costituito da un nastro della lega che in presenza di campo magnetico esterno

mostra un certo allungamento (analisi sul nastro di vetro metallico sono avvenute

al laboratorio di SERC Rutherford Appleton) I dati di riflettivitagrave sono stati

analizzati le misure forniscono modelli che hanno permesso una valutazione del

profilo di magnetizzazione vicino alla superficie del nastro In Figura 89 egrave

mostrato il circuito utilizzato per misurare la variazione di lunghezza

dellrsquoelemento magnetoresistivo

Figura 90Circuito per misurare lrsquoallungamento delle striscia magnetoresistiva

Appendice A 162

v Sensori per la modellizzazione dellrsquoambiente

Molti sensori per mappare ambienti interni sono sensori di distanza per

questo motivo verranno esposti in questo testo alcuni tra i piugrave conosciuti

vi Sensori di distanza

Esistono differenti approci per ottenere questo tipo di misura

bull Sensori basati sul tempo di volo (TOF45) di un impulso di energia

emesso che si propaga e che viene riflesso dallrsquoostacolo

bull Sensori basati sulla differenza di fase introdotta sempre nella

riflessione di un segnale ma non impulsivo

bull Sensori basati su radar a modulazione di frequenza

vi1 Sensori basati sul tempo di volo

Il funzionamento consiste nel misurare il tempo di volo di un senale da un

trasmettitore al ricevitore il percorso effettuato mentre il tempo di percorrenza

risulta esserecdT 2

=∆ dove c egrave la velocitagrave della luce

In robotica la velocitagrave della luce non riesce a trovare applicazioni pratiche

e trovano utile impiego le onde acustiche la cui velocitagrave di propagazione egrave

v=340ms I vantaggi che si trovano dallrsquoutilizzo di questo metodo sono che

emettitore e ricevitore possono essere lo stesso oggetto e che le superfici non

devono presentare particolari requisiti Gli svantaggi possono essere fronti di

salita imprecisi durante lrsquoemissione lrsquoattenuazione della radiazione riflessa che

45 Time of Fly

Appendice A 163

puograve essere influenzata da rumore lrsquoinaccuratezza nel circuito che serve a misurare

il tempo e la possibile variazione della velocitagrave di propagazione soprattutto con

onde sonore Il cono di emissione inoltre non ci permette di rilevare la forma

dellrsquooggetto Quando lrsquoonda si riflette su un oggetto si ha un fenomeno chiamato

crosstalk Utilizzando diverse misurazioni con treni di impulsi si riescono ad

avere stime abbastanza precise sullrsquooggetto riuscendo ad arrivare ad avere

precisione anche di 25 mm da una distanza di 30 cm

vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502

Campo di misura tra 30 cm e 5 metri[53]

Caratteristiche

- Campo di misura tra 30 cm e 5 m (MS 6502)

-Campo di misura tra 15 cm e 10 m ( MS 6001)

-Alimentazione singola tra 75V e 15V - Gestione degli Echo multipli

- Possibilitagrave di fissaggio del sensore direttamente al circuito stampato

- Sistema di connessione MODU II - Uscita open collector

-Protezione dallrsquoinversione di polaritagrave

Figura 91 Piedinatura modello MS

6501

Figura 92 Sonar Modello MS 6501

Figura 93 Sonar Modello MS 6502

Appendice A 164

Il modulo sonar egrave un dispositivo di basso costo con il quale egrave possibile

gestire direttamente i sensori elettrostatici Polaroid per effettuare misure di

distanza Gli impulsi ad ultrasuoni sono a 499 KHz per entrambi i modelli e

vengono prodotti da un quarzo funzionante alla frequenza di 420 KHzI moduli

soso dotati di un ingresso di inibizione esterna con il quale egrave possibile

unrsquoesclusione selettiva di alcuni echo in modalitagrave di funzionamento echo multiplo

Con il dispositivo proposto egrave possibile distinguere echo di ritorno tra due oggetti

distanti 75 cm circa

Figura 94 Struttura del Mdulo Sonar

Vi sono due modalitagrave di funzionamento del sonar echo singolo e echo

multiplo

Nella funzionalitagrave ad echo singolo la gestione consite nel portare basso il

valore di INIT spedire le onde ultrasoniche e attendere la ricezione del segnale di

echo il tempo tra quando si egrave reso basso il senale di INIT e quello in cui diventa

basso ECHO indica il tempo di volo impiegato per raggiungere il target Ersquo

conveniente attendere circa 80 ms tra una spedizione e lrsquoaltra per evitare onde

ultrasoniche ancora presenti nellrsquoambiente

Nella funzionalitagrave multiplo dopo che si pone basso INIT il trasduttore

viene pilotato da 16 impulsi a frequenza 499 KHz (MS 6501) o 45 KHz (MS

Appendice A 165

6502) e di ampiezza variabile per modello (MS6501 400VMS6502 100V) ciograve

comporta lrsquoinvio di un pacchetto di onde ultrasoniche che si propagano nello

spazio Al fine di evitare lrsquoassestamento del trasduttore (fenomeno ringring) esso

viene oscurato in ricezione per 238 ms Queste tempistiche rendono possibile

lrsquoindividuazione di oggetti a distanza di 40 cm che corrispondono a tempo di volo

di 238 ms

Figura 95 Modalitagrave di funzionamento a

eho singolo

Figura 96 Modalitagrave di funzionamento a

echo multiplo

vi2 Sensore telemetro a sfasamento

Il sensore si basa sul seguente principio si separa lrsquoonda emessa in due

parti una incide lrsquooggetto e torna indietro la seconda viene riflessa su uno

specchio di cui si conosce la posizione Si calcola la differenza temporale tra le

due onde Essendo noto il cammino ottico della luce riflessa dallo specchio si egrave in

grado di determinare il cammino ottico incognito In robotica si misurano distanza

dellrsquoordine di qualche metro quindi lrsquoonda laser emessa λ egrave dellrsquoordine del metro

vi21 LIDAR lsquoLight detection and Rangingrsquo

Utilizzi molto rilevanti in questo tipo di acquisizione dati ci vengono

forniti da progetti NASA per la struttura della morfologia terrestre in particolare

in progetti DSM e DTM (Digital Surface Model e Digital Terrain Model)[54] Si

Appendice A 166

dispone di un raggio lasee di cui si analizza lrsquoecho e la distorsione conoscendo la

velocitagrave di propagazione Le misura proposte vengono elaborate per creare

coordinate 3D Dopo aver puntato su zone giagrave conosciute mediante comunicazioni

con GPRS il sistema scansiona la zona ignota per estrapolare per comparazione i

nuovi valori effettuando una misura di sfasamento tra lrsquoonda modulata emessa e

quella rientrante Analizzando opportunamente lrsquointensitagrave della luce riflessa si

potranno anche dedurre informazioni sulla tipologia del materiale analizzato

Figura 97 Esempio di acquisizione LIDAR

vi3 Triangolazione

Uno dei metodi piugrave semplici utilizzati Il soggetto egrave illuminato da uno

stretto fascio di luce che scandisce la superficie Il movimento di scansione

avviene sul piano definito dalla linea che va dallrsquooggetto al rilevatore e dal

rilevatore alla sorgente Il rilevatore egrave focalizzato su una limitata porzione di

superficie quando il rilevatore vede un piccola macchia di luce la sua distanza d

dalla superficie illuminata viene calcolata con un semplice calcolo geometrico

Appendice A 167

i

sdαtan

=

Dove

iα = angolo tra la sorgente e la linea della base

angolo di massima intensitagrave

s = distanza tra la sorgente e il rilevatore

Questo fornisce la misura di un punto se il sistema sorgente rilevatore

viene mossa su un piano egrave possibile ottenere un insieme di punti facilmente

trasformabili in coordinate tridimensionali che caratterizzano la struttura

dellrsquooggetto esaminato

Appendice A 168

vi31 IFELL Laser e Sistemi Srl

Modello[55] Caratteristiche principali

Figura 987 Serie LK

bull Campi di misura fino a 500 mm bull Tecnologia di fotorivelazione con

CCD Micropunto di lettura (fino a 30 micron)

bull Protezione IP-67 (solo teste) bull Insensibilitagrave alle variazioni di colore bull Elevata precisione anche su materiali

otticamente difficili bull Uscita analogica

Figura 99 Serie ODS

bull Campi di misura fino a 2000 mm bull Tecnologia di fotorivelazione con CCDbull Amplificatore integrato bull Protezione IP-65 bull Uscita analogica e digitale RS-232 bull Ingressouscita di sincronizzazione bull Esecuzione speciale per materiali

trasparenti

Figura 100 Serie M5

bull Campi di misura fino a 400 mm bull Tecnologia di fotorivelazione con PSD bull Protezione IP-64 (solo teste) bull Uscita analogica e digitale (opzione) bull Ingressouscita di sincronizzazione bull Comparatore integrato

Informazioni sui produttori

[41] G Arlanch ldquoSviluppo di un simulatore per il controllo dellrsquoandatura di un

quadrupederdquoThesis 1997

[42] httpwwweltrait

[43] httpwwwcorrsysdatronithomehtml

[44] httpwwwrobot-italycomproduct_infophpproducts_id

[45] httpwwwfutaba-rccomradioaccysfutm1001html

[46] httpwwweuroshop2000itcat159html

[47] MBertolini ldquoGirobussole a fibre otticherdquo ITN Viareggio

[48] httpwwwgyroscopecom

[49] httpwwwdinsmoresensorscom1490spechtm

[50] Philips ldquoKMZ10B Magnetic field sensorrdquo Data sheet 1998

[51] JP Sinnecker ldquoMateriaia magneticos doces e materiaia ferromagneticos

amorfosrdquo Reviat brasileira de Fisicavol 222000

[52] K Ivison N Cowlam MRJ Gibbs J Penfold e C Shackleton ldquoUna

misura diretta della magnetizzazione di superficie di un vetro metallico

ferromagneticordquo Edizione 23 (Il 12 Giugno 1989)

[53] Blautron ldquoModulo sonar 6501pdfrdquo ldquoModulo sonar 6502pdfrdquoItaly 2002

[54] V Adorno ldquoIl DTM e il DSM ad alta risoluzionela tecnologia laser

scanner e lrsquoutilizzo del Lidarrdquo Naturaltech

[55] wwwifelliti_sens_triangi_sens_trianghtm

Appendice B

Appendice B 171

i Manuale drsquouso

Per permettere una rapida visualizzazione dei risultati da noi trovati viene

fornito allrsquoutente un menugrave principale di scelta in cui puograve richiamare le funzioni

generate

Lrsquoutente richiameragrave direttamente dal promt di Matlab la funzione

start_asgrad(x) passando come parametro x un intero da o a 5Ad ognuno di

questi numeri corrisponderagrave una funzione

1 = visualizzazione della differenza tra passo in andatura quasi-stabile e

quasi-dinamica grafica del passo e proiezione del convex hull

2 = calcolo della cinematica e visualizzazione degli errori(in

start_asgradm posso modificare direttamente i valori delle variabili decisionali in

merito alla cinematica inversa)

3 = visualizzazione dei grafici riguardanti la forza e la torsionesui giunti

scegliendo nella funzione stessa il numero di frame da considerare

4 = generazione del movimento in un ambiente noto (per settare i

parametri riferiti allrsquoambiente bisogna modificare il file initm prima dellrsquoavvio

del programma)

5 = permette il movimento reale del robot quadrupede del politecnico di

Milano Questa funzione puograve essere richiamata dopo una serie di accorgimenti per

istaurare un corretto canale di comunicazione (collegare la porta seriale o il

convertitore USB-Seriale e accertarsi che la porta sia denominata COM 1 con

velocitagrave di trasferimento di 14400 bitsec)

Appendice B 172

ii Codice generato

ii1 Menu principale

FUNZIONE START_ASGARD funzione che avvia lesecuzione di tutto il programma permettendo allutente di selezionare la parte di analisi da visualizzare parametri in input val_scelta=valore di scelta 1= confronto passo quasi-staticoquasi-dinamico 2= studio cinematico 3= analisi dinamica 4= scelta del percorso(si ricorda che prima di sceglire questa opzione si devono settare i parametri nella funzione init per la descrizione dellambiente 5= collegamento diretto al robot fisico Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [] = start_asgard(val_scelta) if(val_scelta==1) richiamo della funzione passo_STATICO clearpulizia dello workspace end if(val_scelta==2) angoli_motori2richiamo generatrice angoli da inviare ai motori settaggio parametri funzione met=2 incr=25 g=1 cinematica(ja(28)metincrg) clear end if(val_scelta==3) fr=10setto numero di frame richiamo della funzione NW_EU clear end if(val_scelta==4) richiamo della funzione ambiente_prova

Appendice B 173

clear end if(val_scelta==5) angoli_motori2richiamo generatrice angoli da inviare ai motori n=1inizializzazione numero passi richiamo della funzione camminata_stat clear end

ii2 Confronto andatura quasi-stabile vs quasi-dinamica

FUNZIONE PASSO_STATICO Funzione che permette la comparazione tra il passo statico e il passo quasi-dinamicomostrando per ogni animazione la proiezione del centro di massa e il poligono di appoggio definizione tempistiche per movimento zampa frame=6 definizione punto vista X= 0(090)dallalto Y=90110120)angolata definizione tempo int=1(frame-1) t = [0int1] inizializzazione della figura figure(NamePasso StaticoNumbertitleoff) view(XY) richiamo inizializzazione robot init_robot DB_position posizioni zampe poszero=[0 0 0 0 0 0]posizione impressa nella pic pos_base_A=[0 0 0 -pi4 (-pi4) 0] posizione base delle zampe di destra pos_base_B=[0 0 0 pi4 pi4 0] posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento nel simulatore egrave stato ulteriormente aumentato di un fattore correttivo pos_av_A=[0 (pi4-045) 0 -pi4 -pi4 0] pos_av_B=[0 (-pi4+045) 0 pi4 pi4 0] pos_ind_A=[0 (-pi4+045) 0 -pi4 -pi4 0] pos_ind_B=[0 (pi4-045) 0 pi4 pi4 0] posizioni intermedie=punti di via per le cubiche pos_int_A1=[0 (-pi4+045) 0 0 0 0]

Appendice B 174

pos_int_B2=[0 (pi4-045) 0 0 0 0] ------------------------------------------- calcolo della traiettoria movimento in avanti zampe di sinistra jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_Bt) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint) jb_b=cubica_norm(pos_av_Bpos_base_Bint) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_Apos_base_Aint) jbb=cubica_norm(pos_base_Bpos_ind_Bint) ------------------------------ parte grafica sposto il robot al centro trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) disegno convex hull line([136 46 46][-345 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -311 -311][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) muovo prima zampa plot2(zampad jb1) plot(zampad jb2) clf muovo seconda zampa cambia la base dappoggio disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_av_B) line([136 46 46][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 46 46][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jb1) plot(zampab jb2) muovo_baricentro--------------------------------------- posizioni baricentro posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa = [0735 (-pi4+04) pi4 -pi4 -pi4-03 0] posb = [0735 (34pi+04) pi4 -pi4 pi4-03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc = [0735 (3pi4+04) 3pi4 pi4 -pi4+03 0] posd = [0735 (5pi4-04) pi4 -pi4 -pi4+03 0]

Appendice B 175

qposd = [0735 pi pi4 -pi4 -pi4 0] traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -048 -1135]) t2=transl([157 -09 -1135]) t3=transl([-159 045 -1135]) t4=transl([162 0045 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno zampe view(XY) disegno zampe con cinematica da zampa puntata a bar plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposat) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(XY) base di appoggio line([136 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-255 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-255 -345 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) movimento baricentro plot(zampab2jbarb) plot(zampad2 jbard) plot(zampaa2 jbara) plot(zampac2 jbarc) _______________________________________________________________ riposiziono zampe catena cinemetica diretta r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase tx=transl([0 -042 0]) bara=r1tx barb=r2tx barc=r3tx

Appendice B 176

bard=r4tx zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard clf disegno bas dappoggio e zampe view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_ind_Apos_base_B) line([142 464 464][-345 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-345 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-288 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo terza zampa plot2(zampac ja1) plot(zampac ja2) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_ind_Apos_base_Bpos_av_Apos_base_B) line([142 464 464][-335 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([142 464 464][-335 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) muovo ultima zampa plot(zampaa ja1) plot(zampaa ja2) ____________________________________ sposto di nuovo il baricentro per tornare alla posizione base posa = [0735 0 pi4 -pi4 -pi4 0 ] qposa_av = [0735 (pi4-04) pi4 -pi4 (-pi4+03) 0] posb_ind = [0735 (54pi-04) pi4 -pi4 pi4+03 0] qposb = [0735 pi pi4 -pi4 pi4 0] posc = [0735 pi 3pi4 pi4 -pi4 0] qposc_av = [0735 (5pi4-04) 3pi4 pi4 -pi4-03 0] posd_ind = [0735 (5pi4-04) pi4 -pi4 -pi4+038 0] qposd = [0735 pi pi4 -pi4 -pi4 0] disegna traslazione per posizionamento delle zampe nella realtagrave avviene lo spostamento per attrito t1=transl([-157 -09 -1135]) t2=transl([164 -054 -1135]) t3=transl([-159 003 -1135]) t4=transl([162 041 -1135]) traslazione nellorigine della zampa b=zampaabase bara=bt1 barb= bt2 barc= bt3 bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc

Appendice B 177

zampad2base=bard disegno zampe view(XY) plot(zampaa2qposa_av) plot(zampab2qposb) plot(zampac2qposc_av) plot(zampad2qposd) generazione traiettorie per baricentro jbara=cubica_norm(qposa_avposat) jbarb=cubica_norm(qposbposb_indt) jbarc=cubica_norm(qposc_av posct) jbard=cubica_norm(qposd posd_indt) clf view(XY) _____________________________- riposiziono zampe base r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -042 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard _____________________________________________ disegno base appoggio e muovo zampe line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) clf view(XY) disegna_robot(zampaazampabzampaczampadpos_base_Apos_ind_Bpos_base_Apos_ind_B) line([136 464 464][-431 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) line([136 464 464][-34 -289 -289][-1135 -1135 -1135]ColorrLineWidth1) line([136 136 136][-34 -431 -345][-1135 -1135 -1135]ColorrLineWidth1) line([464 464 464][-289 -389 -389][-1135 -1135 -1135]ColorrLineWidth1) Analisi passo dinamico figure(NamePasso DinamicoNumbertitleoff) t = [0int1] calcolo delle traiettorie

Appendice B 178

jta1 = cubica_norm(qza qpva t) jta2 = cubica_norm(qpva qfa t) jtb1 = cubica_norm(qzb qpvb t) jtb2 = cubica_norm(qpvb qfb t) jtc1 = cubica_norm(qpvc qfc t) jtc2 = cubica_norm(qfc qzc t) jtd1 = cubica_norm(qpvd qfd t) jtd2 = cubica_norm(qfd qzd t) ------------------------------ parte grafica parto da posizione base trasp=([1 0 0 30 1 0 -30 0 1 00 0 0 1]) zampaabase=trasp zampabbase=trasp zampacbase=trasp zampadbase=trasp hold on disegno robot e base dappoggio disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) line([136 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 465 465][-25 -344 -344][-1135 -1135 -1135]ColorrLineWidth1) view(110120) muovo prima zampa plot2(zampaa jta1) plot(zampaa jta2) clf muovo seconda zampa e cambio base appoggio disegna_robot(zampaazampabzampaczampadqfaqzbqzcqzd) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([465 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) plot(zampab jtb1) plot(zampab jtb2) baricentro definizione cordinate baricentro posa = [0735 pi4 pi4 -pi4 0 0 ] qposa = [0735 0 pi4 -pi4 -pi4 0] posb = [0735 -pi4 34pi pi4 0 0] qposb = [0735 0 34pi pi4 -pi4 0] posc = [0735 0 pi4 -pi4 pi4 0] qposc = [0735 -pi4 pi4 -pi4 0 0] posd = [0735 0 34pi pi4 pi4 0] qposd = [0735 pi4 34pi pi4 0 0] disegno robot in corretta posizione t1=transl([-13 -13 -1135]) t2=transl([13 -13 -1135]) t3=transl([-16 045 -1135]) t4=transl([16 045 -1135]) b=zampaabasetraslazione nellorigine della zampa bara=bt1 barb= bt2 barc= bt3

Appendice B 179

bard= bt4 zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard disegno robot e bae appoggio line([465 428 428][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 175 175][-25 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([428 175 175][-415 -415 -415][-1135 -1135 -1135]ColorrLineWidth1) line([136 465 465][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2posa) plot(zampab2posb) plot(zampac2posc) plot(zampad2posd) generazione traiettorie per baricentro jbara=cubica_norm(posa qposa t) jbarb=cubica_norm(posb qposb t) jbarc=cubica_norm(posc qposc t) jbard=cubica_norm(posd qposd t) clf view(110120) spostamento tramite rivisualizzazione ta1=transl([-029 0 0]) ta2=transl([029 0 0]) bara=ta1zampaa2base barb=ta2zampab2base barc=ta2zampac2base bard=ta1zampad2base zampaa2base=bara zampab2base=barb zampac2base=barc zampad2base=bard line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 17 17][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) line([17 432 432][-25 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) plot(zampaa2 jbara) plot(zampab2jbarb) plot(zampac2 jbarc) plot(zampad2 jbard) torno al robot con catena cinematica base baricentro r1=zampaabase r2=zampabbase r3=zampacbase r4=zampadbase t=transl([0 -078 0]) bara=r1t barb=r2t barc=r3t bard=r4t zampaabase=bara zampabbase=barb

Appendice B 180

zampacbase=barc zampadbase=bard clf view(110120) disegna_robot(zampaazampabzampaczampadqzaqzbqpvcqpvd) line([46 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([14 432 432][-425 -25 -25][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) view(110120) sposto terza zampa plot2(zampac jtc1) plot(zampac jtc2) clf disegna_robot(zampaazampabzampaczampadqzaqzbqzcqfd) line([46 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 14 14][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([46 14 14][-425 -425 -425][-1135 -1135 -1135]ColorrLineWidth1) sposta quarta zampa plot(zampad jtd1) plot(zampad jtd2) line([46 46 45][-425 -324 -324][-1135 -1135 -1135]ColorrLineWidth1) line([14 46 46][-324 -324 -324][-1135 -1135 -1135]ColorrLineWidth1)

ii3 Calcolo della cinematica inversa

FUNZIONE CINEMATICA Programma che permette di calcolare la cinemetica diretta ed inversa della zampa del robot in esame simula in modo opportuno lanello cinematico di controllo dando la possibilitagrave allutente di inserire un possibile disturbo esterno che non ha permesso il corretto funzionamento La variabile diturbo potragrave in future evoluzioni assumere i valori di sensori o dometrici la funzione di cinemetica inversa egrave stata implementata con tre differenti metodicalcolo del gradiente e geometrico(studiato ad ok che permette il calcolo in real time) parametri in input vetthheta = vettore degli angoli dei giunti per la cinematica diretta medodo = scelta tra i metodi di calcolo di cinematica inversa 1=geometrico 2=inseguimento del gradiente 3=inseguimento veloce del gradiente incremento_angolo = approssimazione da usare con i metodi del gradiente espressa in gradi

Appendice B 181

gomito = scelta se gomito alto (1) o basso (0) parametri output n = numero di iterazioni per il calcolo della cinematica inversa errore = errore in gradi commesso tra la posizione voluta in input e quella realmente raggiunta Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [nerrore] = cinematica(vetthetametodoincremento_angologomito) metodo=1 incremento_angolo=25 gomito=1 alto vettheta=[-pi4 pi4 pi2] errore=[] incr_ang=incremento_angolo2pi360trasformazione valore in radianti ntheta=size(vettheta) considero ogni singola riga del vettore degli angoli concentro cioegrave lanalisi sui singoli 3 valori degli angoli for(nt=1ntheta) utilizzo variabile locale theta=(vettheta(nt)) theta_i=[] v1=size(theta) for(v=1v1(11)) inizio ciclo per tutti i valori di theta inseriti calcolo CINEMATICA DIRETTA per il calcolo della posizione dellend_effector nello spazio dei giunti considero c1 il baricentro che risulta essere giunto fittizio C2=cos(theta(v1))S2=sin(theta(v1)) C3=cos(theta(v2))S3=sin(theta(v2)) C4=cos(theta(v3))S4=sin(theta(v3)) matrici prodotte dai parametri di Denavit Hartemberg A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A34=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] matrice finale end-effector T=A12A23A34 memorizzo in pos la posizione finale dellend effector calcolata si trova nei primi 3 elementi della quarta colonna della matrice T for(i=13) pos(1i)=T(i4) end pos(14)=1 siamo nelle omogenee p deve avere 4 valori disturbo=[0 0 0 0]introduco valori disturbo quando avremo i sensori avrograve in input valore posizione finale raggiunta diversa da quella calcolata ricalcolo posizione reale raggiunta pos=pos+disturbo

Appendice B 182

dalla nuova posizione calcolo la CINEMATICA INVERSA PRIMO ANGOLOricavato direttamente dalla matrice T z2=pos(12)pos(11) theta_i(11) = atan(z2) ricalcolo l aposizione corretta di intersezione degli assi avendo giagrave calcolato il valore de primo giuntosposto lorigine nel secondo giunto in base alla posizione effettiva del robotsullasse devo fare controlli per calcolare l aposizione dellend-effector rispetto alla nuova origine PIPPO=pos() if (theta_i(11)==0) pos(11)=pos(11)-(cos(theta_i(11))00573) else if pos(13)==0 pos(11)=00675+009 else if (theta_i(11)gt0) pos(11)=(pos(11)cos(theta_i(11)))-00573 else pos(11)=(pos(11)cos(theta_i(11))-00573) end end end PIPPO2=pos() METODO GEOMETRICO if (metodo==1) n=1 unica interazione dist=0 pos(11)=abs(pos(11)) pos(13)=abs(pos(13)) da analisi geometrica B = pos(11)^2+pos(13)^2 c2=(B-00675^2-009^2)(200675009) theta_i(13)=(acos(c2)) delta=atan((pos(13))(pos(11)))considerando i grafici ho valori di x e z invertiti zx=(009sin(theta_i(13))(00675+009cos(theta_i(13)))) alfa = atan(zx) se gomito alto uasato sempre if (gomito==1) theta_i(12)=(delta+alfa) end se gomito basso if (gomito==0) theta_i(12)=(delta-alfa) end calcolo errore tra dato in input e valori trovati err(11)=theta(11)-theta_i(11) err(12)=abs(theta(12))-theta_i(12)+pi2causa inversione di posizionamento motori err(13)=abs(theta(13))-theta_i(13) trasformo errore in gradi errore=[errorefix(err360(2pi))] else METODO ITERATIVO PER CALCOLARE CINEMATICA INVERSA

Appendice B 183

if (metodo==2) METODO GRADIENTE inizializzo var di appoggio a=0 b=0 n=0 dist = Calc_Distanza(abpos(11)pos(13)) calcolo distanza iniziale while (dist gt 0001) 0001 approx al millimetro 001 approx al centimetro calcolo la differenza della distanza dalla pos finale dellend-effector incrementado e decrementando gli angoli verifico se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_angbpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) -Calc_Distanza(a b-incr_angpos(11)pos(13)) a = a - gradient_a creo le nuove pos b = b - gradient_b ricalcolo la distanza e vedo se egrave minore dellapprox dist = Calc_Distanza(abpos(11)pos(13)) n=n+1incremento numero di iterazioni end else if(metodo==3) METODO FASTER GRADIENT FOLLOWING inizializzo var di appoggio a=0 b=0 n=0 speeda=0 speedb=0 dist = Calc_Distanza(abpos(11)pos(13))calcolo distanza da end effector salvo il valore del vecchio gradiente per entrambe le posizioni old_gradient_a = 0 old_gradient_b = 0 while (dist gt 0001) approssimazione al millimetro n=n+1 controllo se sto seguendo o meno la discesa del gradiente gradient_a = Calc_Distanza(a+incr_ang bpos(11)pos(13)) - Calc_Distanza(a-incr_ang bpos(11)pos(13)) gradient_b = Calc_Distanza(a b+incr_angpos(11)pos(13)) - Calc_Distanza(a b-incr_angpos(11)pos(13)) controllo se ci siamo gia trovati in questi valori in segno if (sign(old_gradient_a) ~= sign(gradient_a)) se gradiente ha cambiato direzione(salitadiscesa)devo arrestare e modificare valori a = a - speeda old_gradient_a (gradient_a-old_gradient_a) speeda = 0 else speeda =speeda + gradient_a se sto seguendo salita o discesa del gradiente continuo a seguirla if (sign(old_gradient_b) ~= sign(gradient_b))

Appendice B 184

b = b- speeda old_gradient_b (gradient_b-old_gradient_b) speedb = 0 else modifico posizioni raggiunte e velocitagrave speedb =speedb+gradient_b a = a- speeda b = b- speedb end end ricalcolo distanza con nuovi valori dist = Calc_Distanza(a bpos(11)pos(13)) old_gradient_a = gradient_a il grdiente appena calcolato diventa il vecchio old_gradient_b = gradient_b end else testo=inserito metodo errato end end STAMPO VALORI NEL CASO DEI GRADIENTI nstampo il numero di iterazioni che sono servite a calcolare il risultato dist theta_i(12)=a-incr_angvalori corretti sono quelli al passo precedente theta_i(13)=b-incr_ang theta_i esprimo lerrore in gradi err=theta-theta_i errore=[errorefix(err360(2pi))] end end end

ii4 Analisi del modello dinamico

FUNZIONE EULERO_BASE Funzione che effettua il calcolo dei coefficienti di newton eulero sulla singola zampa per ogni singolo giunto dellarticolazione in base alla parametrizzazione di Denavit-Hartemberg La catena cinematica qui analizzata egrave quella che ha per base il baricentro ed end effector il piedeApplicata a parametri di controllo degli attuatori(passo_avanti) parametri input theta=vettore a tre colonne che rappresenta gli angoli dei tre giunti function [forza_gen] = eulero_base(theta) theta=[ pi4 pi4 pi2 pi4 pi4 pi4 0 pi4

Appendice B 185

pi4 pi4 0 pi4 pi4 pi4 0 pi4 pi4 pi4 pi2 pi4 pi4 pi4 pi2 pi4] definizione tempistiche delta=1 [v1 n1]=size(theta) forza_gen=[] massa PESO=1 IN KG massa=[PESO4 002 002 005] gravitagrave g=[0 0 -98] tensore dinerzia del complesso braccio motore espressi in millimetri x=[0026 0003 0003 0009] y=[0054 0020 0020 004] z=[01125 00573 00675 009] I=[] matrice momento dinerzia for(i=13) I=[I (y(i)^2+z(i)^2)12 0 0 0 (x(i)^2+z(i)^2)12 0 0 0 (y(i)^2+z(i)^2)12] end for(v=1v1-1) inizio ciclo per piugrave posizioni successive ris=[] analizzo due istanti temporali successivi per estrapolare la velocitagrave for(j=1n1) ris=[ris (theta(v+1j)-theta(vj))] end d_theta=risdelta espresso in radsec dd_theta=d_thetadeltaespresso in radsec^2 C1=cos(theta(v1))S1=sin(theta(v1)) C2=cos(theta(v2))S2=sin(theta(v2)) C3=cos(theta(v3))S3=sin(theta(v3)) C4=cos(theta(v4))S4=sin(theta(v4)) Ricavo matrice di rotazione tot R=[[C1(1) (-S1(1)) 0 S1(1) C1(1) 0 0 0 1] [C2(1) 0 (-S2(1)) S2(1) 0 -C2(1) 0 1 0] [C3(1) (-S3(1)) 0 S3(1) C3(1) 0 0 0 1] [C4(1) (-S4(1)) 0 S4(1) C4(1) 0 0 0 1]]gestita come 123 cinematica diretta per il calcolo della posizione dellend_effector nello spazio dei giunti A11=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A12=[C2 0 (S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A13=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A14=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T1=A11A12A13A14

Appendice B 186

C1=cos(theta(v+11))S1=sin(theta(v+11)) C2=cos(theta(v+12))S2=sin(theta(v+12)) C3=cos(theta(v+13))S3=sin(theta(v+13)) C4=cos(theta(v+14))S4=sin(theta(v+14)) A21=[C1 (-S1) 0 C101125 S1 C1 0 S101125 0 0 1 00 0 0 1] A22=[C2 0 (-S2) C200573 S2 0 -C2 S200573 0 1 0 00 0 0 1] A23=[C3 (-S3) 0 C300675 S3 C3 0 S300675 0 0 1 00 0 0 1] A24=[C4 (-S4) 0 C4009 S4 C4 0 S4009 0 0 1 00 0 0 1] T2=A21A22A23A24 dalle posizioni successive trovate con cinematica diretta estrapolo la posizione e da essa la velocitagrave for(i=13) pos(1i)=T2(i4)-T1(i4) end vel=posdelta acc_end_eff=veldelta vettore dallorigine della terna(i-1)al baricentro Ci R_iC=[0055125 0 0002865 0 0003375 0 00045 0 0] vettore dallorigine della terna(i)al baricentro Ci RC=[-0055125 0 0-002865 0 0-003375 0 0-0045 0 0] vettore dallorigine della terna(i-1)allorigine della terna (i) R_iI=[01125 0 000573 0 000675 0 0009 0 0] zo=[0 0 1]asse base altri parametri da calcolare velocitagrave lineare del baricentro Ci p_C=[0 0 0] velocitagrave lineare dellorigine della terna (i) p_i=[0 0 0] velocitagrave angolare del braccio omega=[0 0 0] accelerazione lineare del baricentro Ci pp_C=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione lineare dellorigine della terna (i) pp_i=[-98cos(pi2-theta(v1)) -98S1 0] accelerazione angolare del braccio d_omega=[0 0 0] forza esercitata dal braccio (i-1) sul braccio i f=(1)acc_end_eff il primo valore rappresenta su end_effector momento mu=[0 0 0] forza generalizzata tau=[] impongo velocitagrave e accellerazioni per il braccio base inizio algoritmo inserisco formule di Newton-Eulero(vedi teoria) for(i=24) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] omega(i)=(Rot(omega(i-1)+(d_theta(1i-1)zo))) d_omega(i)=(Rot(d_omega(i-1)+(dd_theta(1i-1)zo)+cross(d_theta(1i-1)omega(i-1)zo)))

Appendice B 187

pp_i(i)=(Rotpp_i(i-1))+cross(d_omega(i)R_iI(i-1))+cross(omega(i)(cross(omega(i)R_iI(i-1)))) pp_C(i)=pp_i(i)+cross(d_omega(i)RC(i-1))+cross(omega(i)(cross(omega(i)RC(i-1)))) end TORNO indietro per calcolare le forze e i momenti i=3 r=2indici while(igt=1) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] Iner=[I((i-1)3+1)I((i-1)3+2)I((i-1)3+3)] f(r)=(Rotf(r-1))-massa(1i)pp_C(i)ho sottratto la massa perchegrave la considero forzapeso mu(r)=cross(-f(r)(R_iI(i)+RC(i)))+(Rotmu(r-1))+(Rot(cross(f(r-1)RC(i))))+(Inerd_omega(i))+cross(omega(i)(Ineromega(i))) i=i-1 r=r+1 end n2=size(mu) for(i=2n2) Rot=[R((i-1)3+1)R((i-1)3+2)R((i-1)3+3)] tau(i)=mu(i)Rotzo end forza_gen=[forza_gen tau] end forza_gen espressa in Nm forza_gen=(forza_gen100)98 trasformazione in cmKg

ii5 Map building

ii51 Espansione degli ostacoli

FUNZIONE ONDA_DESTINAZIONE funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input matrice= matrice di definizione mappa xend=valore dellascissa della destinazione yend=valore dellordinata della destinazione parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_destinazione(matricexendyend)

Appendice B 188

calcolo dimensioni matrice [dim1dim2] = size(matrice) for(i=1(xend-1))righe superiori ad arrivo for(j=1(dim22))per tutte le colonne matrice(i((j2)-1))=(xend-i)attribuisco valori decrescenti end end for(i=(xend+1)dim1)righe inferiori ad arrivo for(j=1(dim22)) matrice(i((j2)-1))=(i-xend)attribuisco valori a cui devo sottrarre la destinazione end end for(i=1dim1)colonne a sx ad arrivo for(j=1(yend-1))fino a colonna precedente arrivo sottraggo il numero in cui sono matrice(i((j2)-1))=matrice(i((j2)-1))+(yend-j) end end for(i=1dim1)colonne a dx ad arrivo for(j=(yend+1)(dim22))da colonna successiva a fine matrice(i((j2)-1))=matrice(i((j2)-1))+(j-yend)da valore devo sottrarre valore destinazione end end matrix=matrice restituisco matrice modificata FUNZIONE ONDA_OSTACOLOPLUS funzione che inseriscce come secondo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dallstacolo piugrave vicino valutando opportunamente la relazione tra gli ostacoli giagrave presenti parametri in input matrice= matrice di definizione mappa xposa=valore dellascissa iniziale deelostacolo xposb=valore dellascissa di fine deelostacolo yposa=valore dellordinata iniziale deelostacolo yposb=valore dellordinata di fine deelostacolo parametri in output matrix= matrice di definizione mappa aggiornata con valori onda Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 function [matrix] = onda_ostacoloplus(matricexposaxposbyposayposb) funzione per la creazione degli ostacoli ostacolo_par(xaxbyaybc) ostacolo occupa quattro celle xayaxaybxbya xbyb definisco nuova matrice matrice_1=zeros(size(matrice)) creo onda con singolo ostacolo matrice_1=onda_ostacolo(matrice_1xposaxposbyposayposb) [dim1dim2] = size(matrice_1) confonto matrice con singolo ostacolo con matrice con giagrave presenti altri ostacoli e salvo le distanze minime da essi for(i=1dim1) for(j=1(dim22))

Appendice B 189

if(matrice_1(i(j2))ltmatrice(i(j2))) matrice(i(j2))=matrice_1(i(j2)) end end end matrice(xposayposa2)=0valori che identificano lostacolo matrice(xposa((yposa2)-1))=110 matrice(xposayposb2)=0valori che identificano lostacolo matrice(xposa((yposb2)-1))=110 matrice(xposbyposa2)=0valori che identificano lostacolo matrice(xposb((yposa2)-1))=110 matrice(xposbyposb2)=0valori che identificano lostacolo matrice(xposb((yposb2)-1))=110 espansione ostacolo if(yposa ~= 1)se sono sul bordo sinistro matrice(xposa(yposa-1)2)=0valori che identificano lespansione matrice(xposa(((yposa-1)2)-1))=109 matrice(xposb(yposa-1)2)=0valori che identificano lespansione matrice(xposb(((yposa-1)2)-1))=109 end if(yposb ~= (dim22))se sono sul bordo destro matrice(xposa(yposb+1)2)=0valori che identificano lespansione matrice(xposa(((yposb+1)2)-1))=109 matrice(xposb(yposb+1)2)=0valori che identificano lespansione matrice(xposb(((yposb+1)2)-1))=109 end matrix=matriceritorno il valore della matrice modificata

ii52 Calcolo del percorso

FUNZIONE TROVA_PERCORSO funzione che inseriscce come primo elemento di ogni cella della matrice di definizione della mappa il valore di distanza dalla destinazione parametri in input xst=valore dellascissa del punto di partenza yst=valore dellordinata del punto di partenza xend=valore dellascissa del punto di arrivo yend=valore dellordinata del punto di arrivo dim1dim2=dimendioni matrice mappa posxa1posxa2posya1posya2=posizione ostacolo 1 posxb1posxb2posyb1posyb2=posizione ostacolo 2 posxc1posxc2posyc1posyc2=posizione ostacolo 3 parametri in output prova1= valori in coordinate cartesiane del percorso trovato strada_per=percorso in rappresentazione direzionale dei passi da percorrere strada_per_uso=percorso espresso in valori singoli(0=Start1=Avanti-1=Indietro-2=Sinistra2=Destra) Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005

Appendice B 190

function [prova1strada_perstrada_per_uso] = trova_percorso(xstystxendyenddim1dim2posxa1posxa2posya1posya2posxb1posxb2posyb1posyb2posxc1posxc2posyc1posyc2) non_val=[100 1 -1 -1]valore non valido 100=dist_da destinazione 1=distanza da ostacolo visitato=[150 0]marca per nodi visitati arr=[0 45]marca arrivo strada=[xst yst]memorizzo coordinate percorso dim1=5 dim2=dim22 matrice_appoggio=eye(dim1dim2) crea una matrice diagonale dim1 x dim2 matrice=zeros(size(matrice_appoggio))creo matrice vuota creo matrice con onde necessarie matrice=onda_destinazione(matricexendyend) matrice=onda_ostacolo(matriceposxa1posxa2posya1posya2) matrice=onda_ostacoloplus(matriceposxb1posxb2posyb1posyb2) matrice=onda_ostacoloplus(matriceposxc1posxc2posyc1posyc2) prova=matriceprova diventa la mia matrice i=xst j=yst parto da sorgente n=dim1dimensioni matrice m=dim22 trovato=0 creo insieme dei successivi del nodo in analisi while(trovato==0) if((igt=1)ampamp(ilt=dim1)ampamp(jgt=1)ampamp(jlt=(dim22))) if(i ~= 1)se sono ai bordi successivi=[matrice(i-1(j2)-1) matrice(i-1(j2)) i-1 j] else successivi=non_val end if(j ~= 1)se sono ai bordi successivi=[successivimatrice(i(((j-1)2)-1)) matrice(i(j-1)2) i (j-1)] else successivi=[successivinon_val] end if(i ~= n) successivi=[successivimatrice(i+1(j2)-1) matrice(i+1(j2)) i+1 j] else successivi=[successivinon_val] end if(j ~= m) successivi=[successivimatrice(i(((j+1)2)-1)) matrice(i(j+1)2) i (j+1)] else successivi=[successivinon_val] end migliore=non_valattribuisco valore enorme a migliore trov=0 scelgo il miglior successivo quello che mi porta piugrave vicino a destinazione for(k=14) if(successivi(k1)lt=migliore(1)) tra due a stessa distanza prendo quello piugrave lontano dallostacolo

Appendice B 191

if((successivi(k1)==migliore(1))ampamp(successivi(k2)ltmigliore(2))) migliore=successivi(k) trov=1 posto=ksalvo la posizione del successivo end migliore=successivi(k) trov=1 posto=k end end matrice(i(j2)-1)=visitato(1)marco percorso giagrave visitato matrice(i(j2))=visitato(2) strada=[stradamigliore(3) migliore(4)]salvo la posizione del migliore trovato se sono arrivato a destinazione ho finito if(migliore(3)==xend)ampamp(migliore(4)==yend) trovato=1 end controllo per il mancato raggiungimento del percorso i=migliore(3)cerco il successivo j=migliore(4) se il migliore tra i successivi egrave o un ostacolo o unespansione sono bloccato if((migliore(1)==150)||(migliore(1)==109)||(migliore(1)==110)) trovato=2non esiste percorso end else trovato=2 end end if(trovato==1) testo=PERCORSO TROVATO end if(trovato==2) testo=PERCORSO NON TROVATO end se ho trovato il percorso if(trovato ~= 2) prova1=stradasalvo la strada in coordinate effettuata [rc] = size(strada) dalle coordinate estrapolo la strada direzionale e una espressa in singolo valore strada_per=[ start] strada_per_uso=[0] for(k=1(r-1)) if((strada(k1)~= strada(k+11))ampamp(strada(k2)== strada(k+12))) ris=strada(k1)- strada(k+11) if (ris==1) strada_per=vertcat(strada_perIndietro) strada_per_uso=[strada_per_uso-1] else strada_per=vertcat(strada_perAvanti ) strada_per_uso=[strada_per_uso1] end

Appendice B 192

else if((strada(k1)== strada(k+11))ampamp(strada(k2)~= strada(k+12))) ris=strada(k2)- strada(k+12) if (ris==1) strada_per=vertcat(strada_perSinistra) strada_per_uso=[strada_per_uso-2] else strada_per=vertcat(strada_perDestra ) strada_per_uso=[strada_per_uso+2] end end end end stampa=strada_per end

ii53 Definizione dei movimenti per la deambulazione nellrsquoambiente

FUNZIONE AMBIENTE_PROVA Algoritmo che richiama la funzione trova_percorso e con i risultati trovati realizza il plottaggio grafico del robot in movimento nellambiente Realizza controlli per la scelta del passo da utilizzare nellistante in esame Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 preparazione dati base figura figure grid on axis([-5 5 -5 5 -2 7]) clf init sfondo(xstartystartxendyend) ASGAR b=transl(000) posiziono il robot nello start t=transl([ystart -xstart 0]) bara=bt barb=bt barc=bt bard=bt zampaabase=bara zampabbase=barb zampacbase=barc zampadbase=bard center_position(barabarbbarcbard)

Appendice B 193

chiamo la funzione trova_percorso [coord path

path_uso]=trova_percorso(xstartystartxendyenddim1dim2ostxa1ostxa2ostya1ostya2ostxb1ostxb2ostyb1ostyb2ostxc1ostxc2ostyc1ostyc2) [p k]=size(path_uso) v=1 p1=[] cont=[] per ogni elemento del percorso while(vlt=p) in relazione al percorso espresso con singoli valori if (path_uso(v)== 0)start clf alzati7chiamo funzione di alzata del robot clf sfondo(xstartystartxendyend) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) v=v+1 else if (path_uso(v)== -2) cammina_sinistra for(i=04) faccio fare CINQUE passi a sx x spst a sx=02 hold on passo_sx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 2) cammina_destra for(i=04) faccio fare CINQUE passi a dx x spost a dx =02 hold on passo_dx_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end p1=[p1zampaabase]salvo valore in cui arrivo dopo camminata v=v+1 else if (path_uso(v)== 1)in avanti c=0 k=v conto per quante celle non varia la x cioegrave qunti elementi devo andare avanti while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1)

Appendice B 194

n_passi=fix(distanza07)trasformo la distanza in passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo per eccesso il rimanente for(s=1n_passi) cammina_avanti con passi lunghi hold on passo_avanti_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_avanti con passi correttivi hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] else if (path_uso(v)==-1)indietro c=0 k=v calcolo x quanti elementi ho camminata indietro while(kltp-1) if(path_uso(k)==path_uso(k+1)) c=c+1 else k=p end k=k+1 end cont=[cont c+1] distanza=cont(1) n_passi=fix(distanza07)definisco n_passi lunghi n_passi_corr=round((distanza-07n_passi)02)approssimo rimanente for(s=1n_passi) cammina_indietro con passi lunghi hold on passo_indietro_cubica disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end for(s=1n_passi_corr) cammina_indietro con passi correttivi hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end v=v+distanza p1=[p1zampaabase] end end end end end

Appendice B 195

end axis([-1 7 -8 1 -2 7]) disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]salvo percorso fino a prima

della correzione finale correzione finale mi dice quanto sono arrivata lontano dalle destinazione desiderata [m m1]=size(percorso_effettivo) distanza=[] distanza(1)=percorso_effettivo((m-3)4)-(yend) distanza(2)=percorso_effettivo((m-2)4)-(-xend) testo=SONO ARRIVATO A DISTANZA DALL OBIETTIVO DI X=distanza(1) y=distanza(2) in base al valore di distanza mi suggerisce cosa il robot dovrebbe ancora fare if ((distanza(2)gt=02)||(distanza(2)lt=-02)) dist_fin=distanza(2)02 testo=devo fare ancora abs(dist_fin)visualizzo il modulo if(dist_fingt0) testo=passi correttivi avanti else testo=passi correttivi indietro end dopo avermi detto cosa deve fare lo esegue if(dist_finlt0) for(i=0fix(abs(dist_fin))) hold on passo_correttivoindietro hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end else for(i=0fix(abs(dist_fin))) hold on passo_correttivoavanti hold on disegna_robot(zampaazampabzampaczampadqzaqzbqzcqzd) end end end p1=[p1zampaabase] disegno i due percorsi IDEALE e EFFETTIVO percorso_effettivo=[0 0 0 ystart0 0 0 -xstart0 0 0 00 0 0 0p1]aggiungo la correzione al

percorso [n n1]=size(coord)percorso ideale for(k=1(n-1)) if((coord(k1)~= coord(k+11))ampamp(coord(k2)== coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k+11)][0 0

0]ColorgLineWidth2)

Appendice B 196

else if((coord(k1)== coord(k+11))ampamp(coord(k2)~= coord(k+12))) line([coord(k2) coord(k2) coord(k+12)][-coord(k1) -coord(k1) -coord(k1)][0 0

0]ColorgLineWidth2) end end end PERCORSO vero che invece fa il robottino il valore delle coordinate egrave giagrave giusto come segni for(k=0(m4)-2) if((percorso_effettivo((4k)+14) ~=

percorso_effettivo((4(k+1)+1)4))||(percorso_effettivo((4k)+24) == percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4(k+1)+1)4)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo(4k+24)][0 0 0]ColorbLineWidth2) else if((percorso_effettivo((4k)+14) ==

percorso_effettivo((4(k+1)+1)4))ampamp(percorso_effettivo(4k+24) ~= percorso_effettivo((4(k+1)+2)2))) line([percorso_effettivo((4k)+14) percorso_effettivo((4k)+14)

percorso_effettivo((4k)+14)][percorso_effettivo(4k+24) percorso_effettivo(4k+24) percorso_effettivo((4(k+1)+2)4)][0 0 0]ColorbLineWidth2) end end end

ii6 Collegamento diretto con il robot fisico

ii61 Creazione degli angoli da trasmetter agli attuatori

FUNZIONE ANGOLI_MOTORI2 Funzione che crea in output larray theta_motori generando le traiettorie di movimento per il corretto funzionamento dellattuazione dei motori fisici In questa versione gli angoli di movimento risultano essere piugrave accentuati per migliorare la stabilirtagrave Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 INSERIRE NUMERO FRAME AL SECONDO frame=2 con 50 sembra continuo

Appendice B 197

int=1(frame-1)definisco il numero di intervalli in cui scandire il movimento t=[0int1] definizione variabile di controllo x=0 if (int==1) x=1 end poszero=[0 0 0]posizione impressa nella pic pos_base_A=[0 -pi4 (-pi2)]posizione base delle zampe di destra pos_base_B=[0 pi4 (pi2)]posizione base delle zampe di destra posizioni delle zampe durante la camminata il fattore correttivo egrave stato introdotto per evitare la collisione delle zampe durante il movimento pos_av_A=[(pi4-02) -pi4 -pi2] pos_av_A2=[(pi3) -pi4 -pi2] modificata accentuo movimento in avanti pos_av_B=[(-pi4+02) pi4 pi2] pos_av_B2=[(-pi3) pi4 pi2] pos_ind_A=[(-pi4+02) -pi4 -pi2] pos_ind_A2=[(-pi3) -pi4 -pi2] pos_ind_B=[(pi4-02) pi4 pi2] pos_ind_B2=[(pi3) pi4 pi2] posizioni intermedie=punti di via per le cubiche pos_int_A1=[(-pi4+02) 0 0] pos_int_A2=[(-pi3) 0 0] pos_int_B2=[(pi4-02) 0 0] pos_int_B3=[(pi3) 0 0] calcolo dellle traiettorie tramite la cubica da posizione zero a posizione base parta=cubica_norm(poszeropos_base_At) partb=cubica_norm(poszeropos_ind_Bt) partc=cubica_norm(poszeropos_ind_B2t) movimento in avanti zampe di sinistra jc1=cubica_norm(pos_ind_B2pos_int_B3t) jc2=cubica_norm(pos_int_B3pos_av_Bt) jb1=cubica_norm(pos_ind_Bpos_int_B2t) jb2=cubica_norm(pos_int_B2pos_av_B2t) sposto baricentro in avanti a metagrave camminata ja_b=cubica_norm(pos_base_Apos_ind_Aint+x) jd_b=cubica_norm(pos_base_Apos_ind_A2int+x) jb_b=cubica_norm(pos_av_B2pos_base_Bint+x) jc_b=cubica_norm(pos_av_Bpos_base_Bint+x) movimento in avanti zampe di destra ja1=cubica_norm(pos_ind_Apos_int_A1t) ja2=cubica_norm(pos_int_A1pos_av_A2t) jd1=cubica_norm(pos_ind_A2pos_int_A2t) jd2=cubica_norm(pos_int_A2pos_av_At) sposto baricentro per tornare in posizione iniziale jab=cubica_norm(pos_av_A2pos_base_Aint+x)

Appendice B 198

jdb=cubica_norm(pos_av_Apos_base_Aint+x) jbb=cubica_norm(pos_base_Bpos_ind_Bint+x) jcb=cubica_norm(pos_base_Bpos_ind_B2int+x) costruzione dei vettori di attesa per ogni zampa pos_attesaA=[]attesa della zampa nella posizione base pos_attesaB=[] pos_attindA=[]attesa della zampa nella posizione indietro pos_attindB=[] pos_attavA=[]attesa della zampa nella posizione avanti pos_attavB=[] vettori per le attese dei movimenti delle altre zampe for(i=1(2+2int)int) pos_attesaA=[pos_attesaApos_base_A]attesa zampa in posizione base pos_attesaB=[pos_attesaBpos_base_B] pos_attindA=[pos_attindApos_ind_A]attesa zampa in posizione indietro pos_attindB=[pos_attindBpos_ind_B] pos_attavA=[pos_attavApos_av_A]attesa zampa in posizione avanti pos_attavB=[pos_attavBpos_av_B] end costruzioni vettori composti per la camminata ja=[partapos_attesaApos_attesaAja_bpos_attindAja1ja2jab] jb=[partbpos_attindBjb1jb2jb_bpos_attesaBpos_attesaBjbb] jc=[partcjc1jc2pos_attavBjc_bpos_attesaBpos_attesaBjcb] jd=[partapos_attesaApos_attesaAjd_bjd1jd2pos_attavAjdb] vettore da mandare in output ogni colonna rappresenta un motore in pos 3 4 5 6 7 8 9 10 11 12 13 14 theta_motori=[jb(1) jc(1) jb(2) jb(3) jc(2) jc(3) jd(3) jd(2) ja(3) ja(2) jd(1) ja(1)] costruzione della scala per i valori minimi valori_minimi=(-pi2)ones(112) chiamata di funzione per spedire valori ai motori moveservos_mio(theta_motori0111valori_minimi) ho messo frame 8 e valore tra un valore sparato e laltro 008 va bene

ii62 Coollegamento diretto di comunicazione con la PIC

FUNZIONE MOVESEVOS La funzione che ricevendo in imput il vettore contenente le posizioni dei motori le elabora per trasformarle in valori compatibili con la PIC (0 255)e apre una connessione di comunicazione con essa La PIC che riceveragrave in input i dati tramite la connessione seriale (impostata sulla COM1 alla velocitagrave di 9600) interpreteragrave i dati nel seguente modo

Appendice B 199

- Il primo valore indica la modalitagrave (254 = movimento dei servo) - I successivi 16 valori compresi tra 0 e 255 indicano le posizioni parametri inputpos=la matrice theta costitutita da una o piugrave righe composta da 12 elementi riferiti ai 12 attuatori timestep=indica il tempo di invio tra una sequenza e laltra ovvero il tempo che intercorre tra ogni framerigha della matrice in ingresso(valore minimo 0111) min=vettore contenente i valori min assumibili dai motori per calcolare lo zero delle posizioni Copyright (c) 2004-05 by Sabrina Picco $ Revision 10 - Date 12012005 pos egrave il valore della mia theta espressa solo con 12 valori Funzione che invia i valori in output sulla seriale function moveservos_mio(postimestepmin) max_servo_rotation = pi Quanto possono ruotare i motori (pi 2pi) [rowscols] = size(pos) Crea una connessione seriale try s = serial(COM1 BaudRate14400) sByteOrder = littleEndian sTerminator = CR set(s timeout timestep)posso mettere 1 fopen(s) Laperturachiusura della seriale avviene una volta per ogni matrice theta e non ad ogni rigainvio for i=1rows pos_rel = pos(i)-min posizione relativa alla pos minima Vengono aggiunti 4 valori fittizi nulli poichegrave la seriale egrave progettata per gestire 16 motori mentre theta ne contiene 12 theta16 = [0 0 pos_rel(18) 0 pos_rel(1012) pos_rel(9) 0] Converto in valori in valori da 0 a 255 per la PIC I valori inviati compaiono anche nella command line per verifica theta16 = round(theta16255max_servo_rotation) fwrite(s 254 uchar async) readyByte = fread(s 1 uchar) fwrite(stheta16 uchar async) Controlla se la PIC ha ricevuto theta (conferma tramite valore 33) confirmByte = fread(s 1 uchar) if confirmByte ~= 33 msgbox(Errore di invio dei comandi sulla serialeErroreerror) else Valori inviati correttamente sulla seriale end pause(timestep) end

Appendice B 200

fclose(s) clear ans catch Se fallisce la connessione avverti lutente Porta seriale non connessa end

  • Introduzione
    • Unitagrave funzionali di un robot mobile
    • Obiettivo del lavoro
    • Organizzazione della tesi
      • Sistemi di locomozione
        • Scopi di studio della locomozione su zampe
        • Differenze e analogie tra locomozione a zampe e su ruote
        • Analisi Trot gait di quadrupedi
          • Studio andatura quasi-statica
          • Studio andatura quasi-dinamica
          • Studio andatura dinamica trotto
              • Stato dellrsquoarte dei four legged robot
                • Panoramica dei Robot quadrupedi esistenti
                  • Collie-1 e Collie-2
                  • Quadrupede MIT
                  • GEO
                  • Quadrupede Kimura lab
                    • Algoritmi di controllo CPG for four legged robot
                    • Robocup e Sony Aibo
                      • Storia
                      • Descrizione dei sensori di Aibo
                        • Visione della macchina
                        • Riconoscimento audio
                        • Tatto
                        • Movimento e sviluppo
                          • Architettura del robot ASGARD
                            • Configurazione del robot quadrupede
                              • Struttura Meccanica
                              • Attuatori
                              • Materiale Policarbonato
                                • ASGRAD in numeri
                                • Hardware
                                • Software
                                • Stato Attuale
                                  • Modellizzazione cinematica e dinamica
                                    • Convenzioni e simbologia utilizzata
                                    • Sistemi di coordinate e trasformazioni
                                    • Cinemetica diretta
                                      • Definizione dei parametri di Denavit Hartemberg
                                      • Metodo di assegnamento secondo D-H
                                        • Cinematica inversa
                                          • Metodo gradiente
                                            • Gradient following
                                            • Faster gradient following
                                                • Calcolo delle traiettorie
                                                • Modello dinamico Newton-Eulero
                                                • Creazione di una mappa
                                                  • Espansione degli ostacoli traformazione delle distanze
                                                    • Scelta di un percorso Algoritmo di Dijkstra
                                                      • Sviluppo dellrsquoalgoritmo di camminata
                                                        • Metodologie di sviluppo
                                                        • Progetto di una andatura
                                                          • Lo spazio
                                                          • Stabilitagrave
                                                          • Tempo
                                                            • Andature implementate
                                                            • Catene cinematiche del robot
                                                            • Passo statico e dinamico
                                                            • Formule di forza e torsione sui giunti
                                                            • Anello di Controllo
                                                            • Map-building e scelta del gait
                                                              • Costruzione della mappa ed espansione degli ostacoli
                                                              • Algoritmo di ricerca del percorso minimo
                                                              • Realizzazione del gait
                                                                  • Sperimentazione e analisi dei risultati
                                                                    • Risultati statici
                                                                      • Passo reale effettuato
                                                                      • Misurazioni reali della pressione
                                                                      • Confronti di cinemetica inversa
                                                                        • Risultati dinamici
                                                                          • Caratteristiche negative dei motori
                                                                            • Velocitagrave
                                                                            • Alimentazione
                                                                                • Caratteristiche del percorso
                                                                                  • Conclusioni e sviluppi futuri
                                                                                    • Risultati raggiunti
                                                                                    • Progetti futuri
                                                                                      • Modifiche meccaniche
                                                                                      • Miglioramenti Hardware
                                                                                      • Miglioramenti Software
                                                                                        • Conclusioni finali
                                                                                          • Bibliografia
                                                                                          • Appendice A
                                                                                            • i Sensori nei robot a zampe disponibili sul mercato
                                                                                            • ii Dead Reckoning Stima della posizione
                                                                                              • ii1 Encoder Ottici
                                                                                              • ii2 Encoder ottici incrementali
                                                                                                • ii21 EL30 E-H-I Eltra srl
                                                                                                  • ii3 Encoder ottici Assoluti
                                                                                                    • ii31 Sensori ottici CORRSYS-DATRON
                                                                                                    • ii32 EAM Parallelo-SSI Eltra srl
                                                                                                      • ii4 Sensori Dopler
                                                                                                      • ii41 Robot Italy SRF04
                                                                                                        • iii Heading Sensor
                                                                                                          • iii1 Giroscopio meccanico
                                                                                                            • iii11 Modello Futaba Regolatore di giri GOVERNOR GV-1 codi
                                                                                                            • iii12 Futaba Giroscopio FP GY 240 AVCS
                                                                                                              • iii2 Giro-bussola
                                                                                                              • iii3 Giroscopio-Girobussola a fibre ottiche
                                                                                                                • iii31 La funzione giroscopica
                                                                                                                  • iii4 Giroscopio piezoelettrico
                                                                                                                    • iii41 Robot Italy Giroscopio Piezoelettrico GWS PG-03
                                                                                                                    • iii42 Giroscopio Piezoelettrico Enc-03ja
                                                                                                                        • iv Sensori geomagnetici
                                                                                                                          • iv1 Bussola magnetica meccanica
                                                                                                                          • iv2 Bussola a effetto Hall
                                                                                                                            • iv21 1490 Digital Compass Sensor
                                                                                                                              • iv3 Bussola a magnetoreversiva
                                                                                                                                • iv31 Philips bussola AMR
                                                                                                                                  • iv4 Bussola magnetoelastica
                                                                                                                                    • iv41 Metglas 2605S2
                                                                                                                                        • v Sensori per la modellizzazione dellrsquoambiente
                                                                                                                                        • vi Sensori di distanza
                                                                                                                                          • vi1 Sensori basati sul tempo di volo
                                                                                                                                            • vi11 Blautron sas Modulo sonar modello MS 6501 e MS 6502
                                                                                                                                              • vi2 Sensore telemetro a sfasamento
                                                                                                                                                • vi21 LIDAR lsquoLight detection and Rangingrsquo
                                                                                                                                                  • vi3 Triangolazione
                                                                                                                                                    • vi31 IFELL Laser e Sistemi Srl
                                                                                                                                                      • Informazioni sui produttori
                                                                                                                                                      • Appendice B
                                                                                                                                                        • i Manuale drsquouso
                                                                                                                                                        • ii Codice generato
                                                                                                                                                          • ii1 Menu principale
                                                                                                                                                          • ii2 Confronto andatura quasi-stabile vs quasi-dinamica
                                                                                                                                                          • ii3 Calcolo della cinematica inversa
                                                                                                                                                          • ii4 Analisi del modello dinamico
                                                                                                                                                          • ii5 Map building
                                                                                                                                                            • ii51 Espansione degli ostacoli
                                                                                                                                                            • ii52 Calcolo del percorso
                                                                                                                                                            • ii53 Definizione dei movimenti per la deambulazione nellrsquoa
                                                                                                                                                              • ii6 Collegamento diretto con il robot fisico
                                                                                                                                                                • ii61 Creazione degli angoli da trasmetter agli attuatori
                                                                                                                                                                • ii62 Coollegamento diretto di comunicazione con la PIC
Page 9: Analisi e sviluppo di un simulatore per gait
Page 10: Analisi e sviluppo di un simulatore per gait
Page 11: Analisi e sviluppo di un simulatore per gait
Page 12: Analisi e sviluppo di un simulatore per gait
Page 13: Analisi e sviluppo di un simulatore per gait
Page 14: Analisi e sviluppo di un simulatore per gait
Page 15: Analisi e sviluppo di un simulatore per gait
Page 16: Analisi e sviluppo di un simulatore per gait
Page 17: Analisi e sviluppo di un simulatore per gait
Page 18: Analisi e sviluppo di un simulatore per gait
Page 19: Analisi e sviluppo di un simulatore per gait
Page 20: Analisi e sviluppo di un simulatore per gait
Page 21: Analisi e sviluppo di un simulatore per gait
Page 22: Analisi e sviluppo di un simulatore per gait
Page 23: Analisi e sviluppo di un simulatore per gait
Page 24: Analisi e sviluppo di un simulatore per gait
Page 25: Analisi e sviluppo di un simulatore per gait
Page 26: Analisi e sviluppo di un simulatore per gait
Page 27: Analisi e sviluppo di un simulatore per gait
Page 28: Analisi e sviluppo di un simulatore per gait
Page 29: Analisi e sviluppo di un simulatore per gait
Page 30: Analisi e sviluppo di un simulatore per gait
Page 31: Analisi e sviluppo di un simulatore per gait
Page 32: Analisi e sviluppo di un simulatore per gait
Page 33: Analisi e sviluppo di un simulatore per gait
Page 34: Analisi e sviluppo di un simulatore per gait
Page 35: Analisi e sviluppo di un simulatore per gait
Page 36: Analisi e sviluppo di un simulatore per gait
Page 37: Analisi e sviluppo di un simulatore per gait
Page 38: Analisi e sviluppo di un simulatore per gait
Page 39: Analisi e sviluppo di un simulatore per gait
Page 40: Analisi e sviluppo di un simulatore per gait
Page 41: Analisi e sviluppo di un simulatore per gait
Page 42: Analisi e sviluppo di un simulatore per gait
Page 43: Analisi e sviluppo di un simulatore per gait
Page 44: Analisi e sviluppo di un simulatore per gait
Page 45: Analisi e sviluppo di un simulatore per gait
Page 46: Analisi e sviluppo di un simulatore per gait
Page 47: Analisi e sviluppo di un simulatore per gait
Page 48: Analisi e sviluppo di un simulatore per gait
Page 49: Analisi e sviluppo di un simulatore per gait
Page 50: Analisi e sviluppo di un simulatore per gait
Page 51: Analisi e sviluppo di un simulatore per gait
Page 52: Analisi e sviluppo di un simulatore per gait
Page 53: Analisi e sviluppo di un simulatore per gait
Page 54: Analisi e sviluppo di un simulatore per gait
Page 55: Analisi e sviluppo di un simulatore per gait
Page 56: Analisi e sviluppo di un simulatore per gait
Page 57: Analisi e sviluppo di un simulatore per gait
Page 58: Analisi e sviluppo di un simulatore per gait
Page 59: Analisi e sviluppo di un simulatore per gait
Page 60: Analisi e sviluppo di un simulatore per gait
Page 61: Analisi e sviluppo di un simulatore per gait
Page 62: Analisi e sviluppo di un simulatore per gait
Page 63: Analisi e sviluppo di un simulatore per gait
Page 64: Analisi e sviluppo di un simulatore per gait
Page 65: Analisi e sviluppo di un simulatore per gait
Page 66: Analisi e sviluppo di un simulatore per gait
Page 67: Analisi e sviluppo di un simulatore per gait
Page 68: Analisi e sviluppo di un simulatore per gait
Page 69: Analisi e sviluppo di un simulatore per gait
Page 70: Analisi e sviluppo di un simulatore per gait
Page 71: Analisi e sviluppo di un simulatore per gait
Page 72: Analisi e sviluppo di un simulatore per gait
Page 73: Analisi e sviluppo di un simulatore per gait
Page 74: Analisi e sviluppo di un simulatore per gait
Page 75: Analisi e sviluppo di un simulatore per gait
Page 76: Analisi e sviluppo di un simulatore per gait
Page 77: Analisi e sviluppo di un simulatore per gait
Page 78: Analisi e sviluppo di un simulatore per gait
Page 79: Analisi e sviluppo di un simulatore per gait
Page 80: Analisi e sviluppo di un simulatore per gait
Page 81: Analisi e sviluppo di un simulatore per gait
Page 82: Analisi e sviluppo di un simulatore per gait
Page 83: Analisi e sviluppo di un simulatore per gait
Page 84: Analisi e sviluppo di un simulatore per gait
Page 85: Analisi e sviluppo di un simulatore per gait
Page 86: Analisi e sviluppo di un simulatore per gait
Page 87: Analisi e sviluppo di un simulatore per gait
Page 88: Analisi e sviluppo di un simulatore per gait
Page 89: Analisi e sviluppo di un simulatore per gait
Page 90: Analisi e sviluppo di un simulatore per gait
Page 91: Analisi e sviluppo di un simulatore per gait
Page 92: Analisi e sviluppo di un simulatore per gait
Page 93: Analisi e sviluppo di un simulatore per gait
Page 94: Analisi e sviluppo di un simulatore per gait
Page 95: Analisi e sviluppo di un simulatore per gait
Page 96: Analisi e sviluppo di un simulatore per gait
Page 97: Analisi e sviluppo di un simulatore per gait
Page 98: Analisi e sviluppo di un simulatore per gait
Page 99: Analisi e sviluppo di un simulatore per gait
Page 100: Analisi e sviluppo di un simulatore per gait
Page 101: Analisi e sviluppo di un simulatore per gait
Page 102: Analisi e sviluppo di un simulatore per gait
Page 103: Analisi e sviluppo di un simulatore per gait
Page 104: Analisi e sviluppo di un simulatore per gait
Page 105: Analisi e sviluppo di un simulatore per gait
Page 106: Analisi e sviluppo di un simulatore per gait
Page 107: Analisi e sviluppo di un simulatore per gait
Page 108: Analisi e sviluppo di un simulatore per gait
Page 109: Analisi e sviluppo di un simulatore per gait
Page 110: Analisi e sviluppo di un simulatore per gait
Page 111: Analisi e sviluppo di un simulatore per gait
Page 112: Analisi e sviluppo di un simulatore per gait
Page 113: Analisi e sviluppo di un simulatore per gait
Page 114: Analisi e sviluppo di un simulatore per gait
Page 115: Analisi e sviluppo di un simulatore per gait
Page 116: Analisi e sviluppo di un simulatore per gait
Page 117: Analisi e sviluppo di un simulatore per gait
Page 118: Analisi e sviluppo di un simulatore per gait
Page 119: Analisi e sviluppo di un simulatore per gait
Page 120: Analisi e sviluppo di un simulatore per gait
Page 121: Analisi e sviluppo di un simulatore per gait
Page 122: Analisi e sviluppo di un simulatore per gait
Page 123: Analisi e sviluppo di un simulatore per gait
Page 124: Analisi e sviluppo di un simulatore per gait
Page 125: Analisi e sviluppo di un simulatore per gait
Page 126: Analisi e sviluppo di un simulatore per gait
Page 127: Analisi e sviluppo di un simulatore per gait
Page 128: Analisi e sviluppo di un simulatore per gait
Page 129: Analisi e sviluppo di un simulatore per gait
Page 130: Analisi e sviluppo di un simulatore per gait
Page 131: Analisi e sviluppo di un simulatore per gait
Page 132: Analisi e sviluppo di un simulatore per gait
Page 133: Analisi e sviluppo di un simulatore per gait
Page 134: Analisi e sviluppo di un simulatore per gait
Page 135: Analisi e sviluppo di un simulatore per gait
Page 136: Analisi e sviluppo di un simulatore per gait
Page 137: Analisi e sviluppo di un simulatore per gait
Page 138: Analisi e sviluppo di un simulatore per gait
Page 139: Analisi e sviluppo di un simulatore per gait
Page 140: Analisi e sviluppo di un simulatore per gait
Page 141: Analisi e sviluppo di un simulatore per gait
Page 142: Analisi e sviluppo di un simulatore per gait
Page 143: Analisi e sviluppo di un simulatore per gait
Page 144: Analisi e sviluppo di un simulatore per gait
Page 145: Analisi e sviluppo di un simulatore per gait
Page 146: Analisi e sviluppo di un simulatore per gait
Page 147: Analisi e sviluppo di un simulatore per gait
Page 148: Analisi e sviluppo di un simulatore per gait
Page 149: Analisi e sviluppo di un simulatore per gait
Page 150: Analisi e sviluppo di un simulatore per gait
Page 151: Analisi e sviluppo di un simulatore per gait
Page 152: Analisi e sviluppo di un simulatore per gait
Page 153: Analisi e sviluppo di un simulatore per gait
Page 154: Analisi e sviluppo di un simulatore per gait
Page 155: Analisi e sviluppo di un simulatore per gait
Page 156: Analisi e sviluppo di un simulatore per gait
Page 157: Analisi e sviluppo di un simulatore per gait
Page 158: Analisi e sviluppo di un simulatore per gait
Page 159: Analisi e sviluppo di un simulatore per gait
Page 160: Analisi e sviluppo di un simulatore per gait
Page 161: Analisi e sviluppo di un simulatore per gait
Page 162: Analisi e sviluppo di un simulatore per gait
Page 163: Analisi e sviluppo di un simulatore per gait
Page 164: Analisi e sviluppo di un simulatore per gait
Page 165: Analisi e sviluppo di un simulatore per gait
Page 166: Analisi e sviluppo di un simulatore per gait
Page 167: Analisi e sviluppo di un simulatore per gait
Page 168: Analisi e sviluppo di un simulatore per gait
Page 169: Analisi e sviluppo di un simulatore per gait
Page 170: Analisi e sviluppo di un simulatore per gait
Page 171: Analisi e sviluppo di un simulatore per gait
Page 172: Analisi e sviluppo di un simulatore per gait
Page 173: Analisi e sviluppo di un simulatore per gait
Page 174: Analisi e sviluppo di un simulatore per gait
Page 175: Analisi e sviluppo di un simulatore per gait
Page 176: Analisi e sviluppo di un simulatore per gait
Page 177: Analisi e sviluppo di un simulatore per gait
Page 178: Analisi e sviluppo di un simulatore per gait
Page 179: Analisi e sviluppo di un simulatore per gait
Page 180: Analisi e sviluppo di un simulatore per gait
Page 181: Analisi e sviluppo di un simulatore per gait
Page 182: Analisi e sviluppo di un simulatore per gait
Page 183: Analisi e sviluppo di un simulatore per gait
Page 184: Analisi e sviluppo di un simulatore per gait
Page 185: Analisi e sviluppo di un simulatore per gait
Page 186: Analisi e sviluppo di un simulatore per gait
Page 187: Analisi e sviluppo di un simulatore per gait
Page 188: Analisi e sviluppo di un simulatore per gait
Page 189: Analisi e sviluppo di un simulatore per gait
Page 190: Analisi e sviluppo di un simulatore per gait
Page 191: Analisi e sviluppo di un simulatore per gait
Page 192: Analisi e sviluppo di un simulatore per gait
Page 193: Analisi e sviluppo di un simulatore per gait
Page 194: Analisi e sviluppo di un simulatore per gait
Page 195: Analisi e sviluppo di un simulatore per gait
Page 196: Analisi e sviluppo di un simulatore per gait
Page 197: Analisi e sviluppo di un simulatore per gait
Page 198: Analisi e sviluppo di un simulatore per gait
Page 199: Analisi e sviluppo di un simulatore per gait
Page 200: Analisi e sviluppo di un simulatore per gait