analisi e sviluppo di un simulatore per gait
TRANSCRIPT
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
-