Tesi PHD Simone Minto
Tesi PHD Simone Minto
Tesi PHD Simone Minto
—
Dipartimento di Tecnica e Gestione dei Sistemi Industriali
—
CICLO XXVII
STUDIO ED OTTIMIZZAZIONE DI
SISTEMI DI AUTOMAZIONE
FLESSIBILE
Sommario XIII
Abstract XV
Introduzione XVII
X
5.6.3 Movement trajectory . . . . . . . . . . . . . . . . . . . . . 90
5.6.4 Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.6.5 Connection . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.6.6 Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.6.7 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.6.8 Robot Connection . . . . . . . . . . . . . . . . . . . . . . 94
5.7 Calibrazione del joystick . . . . . . . . . . . . . . . . . . . . . . . 95
5.7.1 Taratura della terna di azzeramento . . . . . . . . . . . . . 97
5.7.2 Taratura della rotazione z . . . . . . . . . . . . . . . . . . 98
5.7.3 Impostazione della terna base . . . . . . . . . . . . . . . . 99
5.7.4 Impostazione della terna end-effector . . . . . . . . . . . . 100
5.8 Movimento robot tramite joystick . . . . . . . . . . . . . . . . . . 101
5.8.1 Movimento planare . . . . . . . . . . . . . . . . . . . . . . 102
5.8.2 Orientamento dell’organo terminale . . . . . . . . . . . . . 109
5.8.3 Movimentazione dell’organo terminale nello spazio tridimen-
sionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Conclusioni 121
Bibliografia 123
XI
Sommario
Al giorno d’oggi il mercato è caratterizzato da prodotti sempre più vari e con cicli
di vita sempre più brevi. Per adattarsi a questo contesto e per restare competitive a
livello internazionale, molte aziende stanno adottando dei sistemi di assemblaggio
flessibili (FAS). Tali sistemi devono garantire anche un’elevata produttività ed
un basso costo unitario diretto, il che richiede lo sviluppo di nuove tecnologie
per i moderni sistemi di assemblaggio. Oltre alla flessibilità di prodotto, ossia
la possibilità di poter gestire diversi componenti con la stessa automazione, vi
è una forte esigenza in ambito industriale di disporre di strumenti hardware e
software al fine di poter aumentare la flessibilità di layout di una cella robotizzata,
ovvero la caratteristica di poter riconfigurare l’ambiente di lavoro in tempi rapidi.
Infatti, ad ogni modifica della planimetria di una cella di lavoro, ad esempio
per la sostituzione di un componente con ingombri differenti, l’integrazione di
ulteriori moduli o sottosistemi, è necessario compiere determinate operazioni come
la ridefinizione dei punti di via del manipolare, la ridefinizione del ciclo di lavoro
e la ricalibrazione della sensoristica utilizzata. Inoltre, è necessario porre molta
attenzione al problema delle collisioni del robot, data la presenza di eventuali
nuovi ostacoli. Tutte queste operazioni richiedono personale specializzato, tempo,
con un conseguente fermo della produzione. In questa tesi di dottorato, focalizzata
nella flessibilità di layout, sono state studiate ed implementate alcune soluzioni per
rendere più rapide ed intuitive, senza la necessità di ricorrere a personale altamente
specializzato, le operazioni di aggiornamento della configurazione di una cella
robotizzata. Le soluzioni sviluppate riguardano procedure rapide per la calibrazione
di telecamere industriali, strumenti per l’acquisizione tridimensionale dell’ambiente
di lavoro e l’importazione dello stesso in un ambiente CAD commerciale. Un
simulatore robotico permette la navigazione off-line di un manipolatore nella
geometria acquisita, la memorizzazione off-line delle traiettorie robot e dei punti
di via, oltre che alla gestione dei dati nel ciclo di lavoro in tempo reale all’interno
dell’ambiente CAD. A fronte di alcuni studi condotti nel laboratorio Rehabilitation
And RObotics (ROAR) presso la Columbia University in the city of New York,
NY, USA, sotto la supervisione del Prof. S. K. Agrawal si descrive un dispositivo
di scarpa strumentata in grado di fornire un feedback audio-tattile e misurare
parametri spazio-temporali della camminata, che potrebbero essere utilizzati per
stimare la posizione di un operatore all’interno di una cella robotica a fini di
sicurezza. Infine, per la movimentazione rapida ed intuitiva di robot industriali si
presenta la progettazione e realizzazione di un dispositivo impugnabile, basato su
sensoristica inerziale MEMS.
XIV
Abstract
XVI
Introduzione
XVIII
Capitolo 1
Affinché un’azienda industriale possa avere successo nel mondo attuale, altamente
competitivo, un aspetto essenziale è rappresentato dall’aumento della produttività.
Un modo per fare ciò è quello di velocizzare il ciclo di lavoro tramite l’automazione
delle catene produttive, la quale consente di gestire i processi e i macchinari
tramite appositi sistemi di controllo. Tale approccio permette inoltre di ridurre
l’apporto di manodopera e migliorare la qualità del prodotto finale. Per tali motivi
l’automazione è attualmente implementata nella maggior parte dei sistemi produt-
tivi. Un sistema automatizzato di produzione consiste in una serie di macchinari
che gestiscono la movimentazione del prodotto e le sue successive lavorazioni fino
all’ottenimento del prodotto finito. Questo consente una lavorazione accurata e
ripetibile assicurando al prodotto finale caratteristiche standard riducendo, inol-
tre, il numero di scarti. La progettazione e realizzazione di una linea industriale
apposita, o macchina dedicata, per un determinato ciclo di produzione richiede
un investimento notevole. Un elevato indice di ritorno dell’investimento (ROI) e
la durata pluridecennale del sistema ne giustificano tuttavia il costo iniziale.
La progettazione di un sistema automatizzato dedicato consente di produrre un
determinato prodotto finito sempre uguale a sé stesso per l’intero tempo di utilizzo
21. GLI IMPIANTI AUTOMATICI FLESSIBILI PER L’AUTOMAZIONE INDUSTRIALE
del sistema di produzione. Un sistema siffatto ottiene una resa elevata a scapito
della flessibilità e risulta perciò sconveniente in una situazione di produzione
limitata nel tempo o con necessità di frequenti modifiche al processo. Il trend
attuale in ambito industriale consiste nella produzione di lotti di dimensioni ridotte
e con notevole varietà nel prodotto: in tale scenario la realizzazione di macchinari
dedicati non rappresenta la scelta ottimale.
La flessibilità in un sistema industriale automatizzato viene ottenuta tramite
l’utilizzo di celle di lavoro robotizzate anziché macchinari dedicati. La gestione
dell’automazione in celle robotizzata è nota come robotica flessibile.
produzione e di avere indicazioni sul tempo ciclo in fase progettuale [15, 16]. Tale
metodologia risulta estremamente flessibile tuttavia presenta alcune problematiche
come il costo elevato, la ricostruzione tridimensionale dell’ambiente operativo e la
difficoltà di simulare il comportamento di altri sistemi integrati all’interno della
cella di lavoro.
Oltre alle tecniche per riconfigurare rapidamente una cella, una delle soluzioni
più interessanti per incrementare la flessibilità in ambiente industriale consiste
nell’idea di combinare le capacità manuali di un operatore con le potenzialità
tipiche di sistemi robotici per consentire una collaborazione efficace. Al giorno
d’oggi lo spazio operativo in cui operano sistemi ad elevata automazione è marca-
tamente separato dallo spazio operativo in cui può muoversi un operatore umano.
Recentemente, la normativa che prescrive i requisiti di sicurezza per robot indu-
striali e per l’integrazione di sistemi robotici [17, 18] ha introdotto la possibilità
di collaborazione uomo-robot. In particolare, alcuni autori stanno lavorando a
sistemi robotici in grado di percepire la presenza umana e attuare delle procedure
per evitare eventuali collisioni [19, 20]. Lo sviluppo di sistemi di visione e di
sensori inerziali a basso costo permette di implementare diverse tecniche per
identificare la posizione ed il movimento di un operatore. Dal punto di vista del
mercato, le aziende produttrici di sistemi robotici hanno iniziato a sviluppare
nuovi prodotti caratterizzati da ridotte masse e inerzie ed equipaggiati con sensori
di coppia e di pressione estremamente sensibili per individuare eventuali collisioni
impreviste. Lo stato dell’arte rivela che l’interazione uomo-robot è un campo di
ricerca potenzialmente ricco di applicazioni e in rapida evoluzione. Lo sviluppo di
sistemi e algoritmi che permettano la cooperazione uomo-robot in sicurezza è un
aspetto fondamentale che richiede ancora molto sviluppo.
flessibile.
Figura 1.3: Esempi di manipolatori industriali. Robot a 6 assi Adept Viper s650
Figura 1.4: Esempi di manipolatori industriali. Robot a 6 assi Adept Viper s650
(sinistra) e robot a 4 assi Adept Cobra s800 di tipologia SCARA (destra).
(sinistra) e robot a 4 assi Adept Cobra s800 di tipologia SCARA (destra).
in grado di fermare il movimento del robot con il carico nominale, alla massima
velocità ed alla minima e massima estensione. Dispositivi di arresto non meccanico,
fermi posizionati elettricamente, pneumaticamente o idraulicamente, barriere
fotoelettriche, laser scanner, possono essere utilizzati solamente se garantiscono lo
stesso livello di sicurezza dei dispositivi di arresto meccanico.
Il sistema di controllo di una cella robotica deve essere in grado di gestire, coordi-
nare e monitorare il manipolatore industriale e tutti i componenti inclusi quali,
ad esempio, i sistemi di visione, i PLC, gli alimentatori di componenti oltre che a
svolgere i calcoli necessari al riconoscimento ed alla manipolazione dei componenti.
Strategie implementative del controllo possono ricadere sulla realizzazione di
sistemi sequenziali o basati su macchine a stati finiti; quando, invece, non vi è un
ciclo di lavoro stabilito a priori ci si può riferire a sistemi di sequenziamento dina-
mico. In questa implementazione, i comandi impartiti al robot vengono stabiliti al
termine di ciascuna operazione a seconda della situazione nella cella. Nel codice
che gestisce la cella viene assegnata una priorità per ciascuna operazione e, in base
alla disponibilità istantanea delle postazioni, si determina la seguente operazione
del robot. Tale gestione viene ottenuta analizzando ciclicamente la situazione
dei segnali forniti dai vari sistemi implementati nella cella. A livello pratico le
postazioni presenti all’interno di una cella dialogano con il controllore tramite PLC
o collegamento diretto al controller. Una postazione può ad esempio assumere gli
stati occupata/disponibile, caso tipico di un macchinario di lavorazione che stia
lavorando o meno un componente.
Shared&Memory&Region&
Generic&Process& DIRECTX(GRAPHIC(PROCESS(
dagli oggetti presenti nella scena nel pattern pseudo-causale proiettato [25].
In Fig. 2.6 sono presenti alcune immagini depth acquisite con il sensore. È
possibile osservare la presenza di numerosi buchi dove non è stato possibile rilevare
correttamente il pattern IR emesso. Questa situazione può essere causata, come
dettagliatamente spiegato in [25], da materiali a bassa o alta riflettività, particolare
illuminazione di fondo, superfici eccessivamente inclinate, occlusioni e discontinuità
degli oggetti.
Per il processo di ricostruzione tridimensionale è stato utilizzato, ottimizzandolo
al particolare ambiente di utilizzo, l’SDK Kinect Fusion studiato e sviluppato presso
i laboratori Microsoft Research [26, 27]. La più importante classe degli algoritmi
utilizzati sono basati sul concetto di Iterative Closest Point (ICP) introdotto in [28]
che pone l’allineamento delle nuvole di punti come un problema di ottimizzazione
non lineare in cui le corrispondenze tra le scansioni sono approssimate utilizzando le
coppie più vicine dei punti trovati nella scansione avvenuta all’iterazione precedente,
tenendo traccia costantemente della posa a 6 gdl della camera. In Fig. 2.7 viene
schematicamente rappresentato il workflow del processo di acquisizione.
La procedura di acquisizione prevede che l’operatore impugni il Kinect, come
raffigurato in Fig. 2.8 , e si sposti lentamente all’interno dell’ambiente che vuole
acquisire. Attraverso una porzione della GUI, visibile in Fig. 2.10, può verificare il
risultato dell’acquisizione in tempo reale. Nel caso in cui si verificassero eventi
o condizioni che impedissero il proseguimento della ricostruzione, l’operatore
viene avvertito da un allarme sonoro e a video sarà raffigurato l’ultimo frame
correttamente elaborato: in questo caso l’utente dovrà rimanere per qualche
secondo fermo cercando di inquadrare l’ultima scena processata ed attendere che
il processo di acquisizione continui.
20 2. MODULI SOFTWARE SVILUPPATI
AGGIORNAMENTO
RICOSTRUZIONE
OUTPUT
PASSO PREDITTIVO
1
Figura 2.7: Workflow del processo di ricostruzione tridimensionale
(a) (b)
Figura 2.9: Risultato della scansione del volume di una cella robotizzata
22 2. MODULI SOFTWARE SVILUPPATI
2
Capitolo 3
Movimentazione assemblato
SolidWorks tramite MatLab
2. confronto tra i file per eliminare il robot dal file STL della cella, sostituito
dall’assemblato STEP/IGES;
In Fig. 3.1 si riporta un esempio di assemblato CAD a tre gradi di libertà (due
rotazione e una traslazione), composto da elementi semplici. La seconda barra
presenta una sezione atta a realizzare un accoppiamento prismatico, questo per
poter testare un caso completo di entrambe le due tipologie di g.d.l.
swApp = actxserver(’SldWorks.Application’);
% openDoc(swApp);
swModel = invoke(swApp, ’ActiveDoc’);%invoke(swApp, ’ActiveDoc3’,);
swDragOp = invoke(swModel, ’GetDragOperator’);
swSelMgr = invoke(swModel, ’SelectionManager’);
swMathUtil = invoke(swApp, ’GetMathUtility’);
swConfMgr = invoke(swModel,’ConfigurationManager’);
28 3. MOVIMENTAZIONE ASSEMBLATO SOLIDWORKS TRAMITE MATLAB
swActiveConf = invoke(swConfMgr,’ActiveConfiguration’);
swRootComp = invoke(swActiveConf,’GetRootComponent’);
swModelView = invoke(swModel,’ActiveView’);
...
end
% Ri-denominazione e salvataggio
...
Tia = [a, b, c, d, e, f, g, h, i, l, m, n, o, p]
Questo vettore contiene tutti gli elementi della matrice di trasformazione Tia
che consente di trasformare punti e vettori del sistema i-esimo in punti e vettori
del sistema ambiente. La matrice è scritta in forma di vettore, è quindi necessario
trasformarla in forma matriciale, per questo è stata scritta la funzione sldvect2mat.
La matrice di trasformazione in forma matriciale contiene nelle colonne i versori
della terna i-esima e la posizione dell’origine della terna i-esima, espressi nella
terna ambiente in coordinate omogenee.
a d g j
b e h k
Tia =
c f i l
n o p m
• swComp, nomi delle parti che raccolgono tutti i dettagli CAD per la
costruzione di ogni singolo membro che compone l’assemblato;
Una volta note tutte le matrici di trasformazione delle terne i-esime rispetto
alla terna ambiente, si è sviluppata la funzione calcDHmatrixAll che consente
di ricavare tutte le terne Ti,i−1 e le coordinate libere q1 , q2 , ..., qn . Trovare le
coordinate libere secondo la notazione di D.-H. risulta essenziale dal momento
che la movimentazione sarà ottenuta variando proprio tali valori qi di ∆qi per
ottenere i valori finali desiderati.
Le matrici di trasformazione relative, che descrivono la trasformazione dal
sistema (i-1)-esimo al sistema i-esimo, Ti,i−1 si calcolano da:
La coordinata libera i-esima può essere una rotazione di angolo θi intorno all’as-
se zi , che porta l’asse xi−1 lungo la direzione dell’asse xi , oppure una traslazione
3.8. MOVIMENTAZIONE DEI LINK IN SOLIDWORKS DA MATLAB 33
...
% Movimento
Tia(:,:,i) = move(swComp{i},rbool(i),deltaq,swMathUtil,swDragOp,Tia
(:,:,i),Tia_in(:,:,i));
end
...
% Creazione matrice
vZform = [TTRa(1:3,1)’, TTRa(1:3,2)’, TTRa(1:3,3)’, TTRa(1:3,4)’, 1, 0
0 0];
swXform = invoke(swMathUtil, ’CreateTransform’, vZform);
Figura 3.4: Movimentazione tramite Drag con q fin=[60 -45 45 -45 -45 -45].
SoleSound: calzatura
instrumentata
In questo capitolo verrà descritta l’attività di ricerca svolta con il gruppo Reha-
bilitation And Robotics (ROAR) presso la Columbia University in the city of
New York, descrivendo lo sviluppo di una scarpa strumentata, completamente
portabile, in grado anche di misurare alcuni parametri spazio-temporali della
camminata. Usando un sistema camera-based le performance del dispositivo sono
state valutate con due strategie di calibrazione: soggetto-specifico e non soggetto
specifico.
40 4. SOLESOUND: CALZATURA INSTRUMENTATA
4.1 Introduzione
Per superare queste limitazioni, negli ultimi anni diversi ricercatori hanno
sviluppato dispositivi di analisi della camminata indossabili, che consistono in
leggeri sensori alimentati a batteria indossati sulla parte bassa del corpo com-
prendendo anche una unità logica che permette di elaborare e memorizzare i dati
acquisiti. Questi dispositivi possono essere realizzati per una frazione del costo dei
sistemi di analisi della camminata attuali e possono essere utilizzati in qualsiasi
posizione. Inoltre, essi possono essere utilizzati per valutare la deambulazione del
paziente in remoto, su qualsiasi distanza o percorso (ad esempio, salire le scale),
per periodi di tempo prolungati, consentendo a medici di valutare la variabilità
di deambulazione o quantitativamente monitorare episodici fenomeni che sono
difficili da suscitare in contesti clinici, come il congelamento di deambulazione
[32]. Infine, questi dispositivi indossabili possono agire come strumenti per la
riqualificazione della camminata, fornendo un feedback uditivo o vibratorio per
aiutare coloro che indossano questi dispositivi a correggere i loro movimenti in
caso di bisogno. D’altro canto, questi sistemi sono limitati nel numero di parametri
della camminata che riescono a misurare e nella loro precisione [33]. Solitamente,
richiedono una connessione cablata [34, 35], o senza fili [36, 37, 38, 39] ad un
computer host per l’elaborazione dei dati on-line o per la registrazione dei dati,
limitando la loro mobilità effettiva.
4.1. INTRODUZIONE 41
(a)
(b)
Molti sistemi sono anche in grado di misurare lo spostamento del piede all’in-
terno di un ciclo del passo [35, 57, 38, 59, 60, 61], o la sua proiezione sul piano
sagittale [34, 37, 59]. Queste stime sono utilizzate per derivare parametri come
stride length e foot clearance. Sebbene approcci basati su vincoli biomeccanici siano
stati proposti [49], la tecnica maggiormente utilizzata prevede l’eliminazione della
gravità dalle letture degli accelerometri nel piede (attraverso la stima dell’orienta-
zione) seguita da una doppia integrazione [37]. L’integrazione viene comunemente
eseguita tra successive fasi FF, con tecniche ZUPT e di compensazione del drift
in velocità [34, 35, 38, 57, 59, 60, 61].
44 4. SOLESOUND: CALZATURA INSTRUMENTATA
che al micro computer, il modulo marsupio alloggia anche una scheda audio
esterna a 24 bit (Xonar U7, ASUSTeK Computer Inc.), un piccolo router Wi-Fi
(TL-WR702N, TP-LINK Technologies Co., Ltd., Shenzhen, China) e due batterie
Li-Po a tre celle da 2000 mAh.
(a) (b)
(a)
(b)
Figura 4.5: Particolari del sandalo instrumentato: in (a) è visibile il sonar utiliz-
zato, mentre in (b) è presente un dettaglio del driver e del box contenente la
componentistica elettronica
50 4. SOLESOUND: CALZATURA INSTRUMENTATA
(a)
(b)
Figura 4.6: (a) GUI per il monitoraggio e confronto dei paramatri SoleSound e
VICON ,(b) GUI per il settaggio dei parametri
4.3. METODI 51
4.3 Metodi
Ciascun IMU (Inertial Measurement Unit) del piede e della tibia fornisce la stima
dell’orientazione relativa ad un sistema di riferimento (tare) attraverso un EKF.
L’IMU del piede è incorporato all’interno della suola del sandalo, con l’asse locale
ẑF ortogonale alla suola con puntamento verso il basso e l’asse locale x̂F allineato
con l’asse longitudinale del sandalo. All’avvio, si chiede al soggetto di rimare fermo
ed in posizione diritta per un periodo di 5 secondi e l’orientazione di riferimento tra
i sensori inerziali del piede e della tibia vengono settati come in seguito descritto.
I lavori medi di accelerazione misurati nella fase di startup definiscono la direzione
del vettore gravità g relativamente al frame locale degli IMU del piede e della
tibia. Il sistema di riferimento del piede {F0} viene definito come:
è attaccato nella tibia prossimale del soggetto per mezzo di un Velcro strap.
L’asse locale x̂S è assunto essere allineato con l’asse longitudinale della tibia, con
puntamento verso l’alto, l’asse locale ẑF è diretto posteriormente. In maniera
similare al piede, il sistema di riferimento della tibia {S0} è definito come:
γPD = θF + θS , (4.4)
deviazione RMS tra due normalizzate traiettorie dell’angolo della caviglia della
gamba destra e sinistra, corrispondenti a due passi successivi:
v
u
N
(γ̄PF LEFT i, j − γ̄PF RIGHT i, j )2
uP
u
u
t j=1
SYMi = , (4.5)
N
1 ffiX
+j−1
vi, j = v0i + ak , j ∈ [1, ffi + 1 - ffi + 1], (4.6)
fs k=ffi
vi, j è la velocità lineare del piede nel j-esimo campione dell i-esimo passo, e
[ffi , ffi + 1 ] è l’intervallo di integrazione per l’i-esimo passo. La costante di integra-
zione v0i è stata posta a zero (ZUPT technique) e le stima raw della velocità (4.6)
sono corrette per compensare un modello lineare di drift della velocità:
j−1
v̄i, j = vi, j − vi, ffi + 1 - ffi + 1 (4.7)
ffi + 1 − ffi
1 X j
di, j = v̄i, j , j ∈ [1, ffi + 1 - ffi + 1] , (4.8)
fs k=1
dove di, j è lo spostamento del piede nel j-esimo campione dell’ i-esimo passo.
di è noto nel sistema di riferimento {F0}, tuttavia, ai fini dell’analisi del cammino,
un sistema di riferimento allineato con la direzione di progressione del cammino,
definito come {Di}, è maggiormente desiderabile:
54 4. SOLESOUND: CALZATURA INSTRUMENTATA
SLi = d̄i, N (x) − d̄i, 1 (x) , SHi = max d̄i, j (z) , (4.10)
j ∈ [1, N]
con d̄i, j (x) e d̄i, j (z) le proiezioni di d̄i, j in xDi e zDi , rispettivamente, e N il
numero di campioni in d̄i .
The step width of the i-th stride SWi is therefore estimated by the absolute
minimum of the ultrasonic sensor readings during the swing phase of the i-th left
stride.
(a) (b)
Figura 4.8: (a) Soggetto mentre indossa il prototipo SoleSound. (b) Soggetto
durante un esperimento di validazione: la linea verde rappresenta il percorso
effettuato, il cerchio rosso il dispositivo di sincronismo tra SoleSound e VICON
4.5. ANALISI DEI DATI 57
172 58 8.5 30 0
163 55 5.5 23 F
168 60 8 24 M
180 68 10 31 M
190 85 13 30 M
165 58 6.5 22 F
164 56 5.5 29 F
150 54 4 28 F
180 74 11 23 M
175 72 9.5 22 M
170 85 7 36 M
160 57 5 24 F
168 59 9.5 23 M
173 68 9.5 27 M
ottenendo, quindi, gli incogniti parametri di regressione β0,j e β1,j , dove j rap-
presenta il j-esimo degli eventuali N campioni della variabile p. La nuova stima
della misura del parametro ottenuto da SoleSound viene computata, al fine di
compensare gli errori sistematici e di aumentare il livello di adesione tra i due
sistemi di misura, attraverso la seguente formula:
dove pSts indica la misura del parametro ottenuto da SoleSound, dal dataset di
testing, i rappresenta l’i-esimo passo analizzato di uno specifico soggetto ed j il
j-esimo degli N campioni della variabile in esame p.
L’errore di misura tra SoleSound ed il reference system (VICON), di un dato
parametro per un determinato soggetto, viene computato come:
Generic calibration
pVtr (j) ∼ pStr (j)+Height + Weight + Shoe Size + Age + Gender, j ∈ [1, N ] (4.14)
dove pVtr (j) rappresenta la variabile dipendente (dati collezionati dal reference
system) e pStr (j) (dati ottenuti da SoleSound) con le caratteristiche antropometriche
dei soggetti, i predittori del modello lineare. j e’ il j-esimo degli N , eventuali,
campioni della variabile p presa in esame. La valutazione del modello permette
di ottenere gli m + 2, con m il numero delle caratteristiche antropometriche dei
soggetti inserite nel modello, coefficienti di regressione (β0 . . . βm+1 ), specifici per
il parametro considerato. Dati i coefficienti di regressione β, la nuova stima del
parametro p̂S del soggetto preso in esame e’ computata come:
m
p̂Si (j) = β0,j + β1,j pSts,i (j) + βk+1,j xk , j ∈ [1, N ] (4.15)
X
k=1
60 4. SOLESOUND: CALZATURA INSTRUMENTATA
dove pSts indica la misura raw del parametro ottenuto da SoleSound, dal dataset
di testing, i rappresenta l’i-esimo passo analizzato dello specifico soggetto ed j il
j-esimo degli N campioni della variabile in esame p. Il vettore x rappresenta le
covariate relative ai dati antropometriche del soggetto.
L’errore di misura tra SoleSound ed il reference system, di un dato parametro
per il soggetto utilizzato nel testing, viene calcolato come in (4.13).
In Tab. 4.6 sono riportati i risultati ottenuti per le diverse metriche analizzate,
nelle due strategie di calibrazione effettuate. In Fig. 4.10 e 4.11 sono riportati,
per alcuni parametri scalari, i grafici di correlazione tra SoleSound ed il reference
system, la distribuzione di frequenza dell’errore di misura ed i plot di Bland-
Altman1 . Sono inoltre raffigurate la traiettoria del piede, media per uno specifico
soggetto, ed l’angolo di dorsiflessione della caviglia, medio fra tutti i soggetti,
computate dal dispositivo e dal reference system utilizzato.
Dati gli incoraggianti risultati ottenuti, nonostante SoleSound sia stata pro-
gettata con l’obiettivo di essere utilizzata in ambito riabilitativo, si potrebbe
pensare di continuare lo sviluppo di un dispositivo similare per poter determinare
la posizione ed alcuni movimenti del soggetto che la indossa. Tale caratteristica
potrebbe trovare applicazione anche in un contesto industriale per applicazioni di
interazione uomo-robot. Se utilizzato come sensore indossabile, permetterebbe di
ricavare con accuratezza la posizione ed i movimenti dall’operatore all’interno di
una cella robotizzata permettendo cosı̀ di attuare le procedure necessarie affinché
quest’ultimo operi con la massima sicurezza. Un approccio basato su dispositivi
indossabili garantisce di determinare la posizione dell’operatore senza i problemi di
occlusione di cui soffrono i sistemi di visione. Inoltre i sistemi di videosorveglianza
potrebbero non essere conformi alla normativa sulla tutela della libertà e dignità
1
Il Bland-Altman plot serve per confrontare due misure della stessa natura; è un diagramma
di dispersione in cui sulle ordinate viene riportata la differenza delle due misure e sulle ascisse
la misura di riferimento, ottenuta come media aritmetica delle due misure. Le linee orizzontali
rappresentano la media delle differenze, e la media delle differenze ± 1.96 x SD.
4.6. RISULTATI E CONCLUSIONI 61
LINEAR MODEL
TRAINING
VALIDATION
LINEAR REGRESSION
Coeff. from
LINEAR MODEL
RESPONSE ERROR
LINEAR MODEL
LINEAR REGRESSION
Coeff. from
LINEAR MODEL
RESPONSE ERROR
Subject Specific
1.5 0.16
0.24
0.15
1.4
SoleSound [m]
SoleSound [m]
0.22
SoleSound [m]
0.14
1.3
0.13 0.2
1.2 0.12
0.18
0.11
1.1
0.16
0.1
1
0.09 0.14
1 1.1 1.2 1.3 1.4 1.5 1.6 0.1 0.12 0.14 0.16 0.18 0.14 0.16 0.18 0.2 0.22 0.24 0.26
Reference system [m] Reference system [m] Reference system [m]
180
100
200 160
140
80
150 120
Frequency
Frequency
Frequency
100 60
100 80
40
60
50 40
20
20
0 0 0
−0.1 −0.05 0 0.05 0.1 0.15 −0.03 −0.02 −0.01 0 0.01 0.02 0.03 −0.04 −0.03 −0.02 −0.01 0 0.01 0.02 0.03 0.04
Error (m) Error (m) Error (m)
0.4 0.06
0.1
0.3
0.08
0.04
difference between two measures [m]
0.2 0.06
0.02 0.04
0.1
0.02
0 0 0
−0.02
−0.1
−0.02 −0.04
−0.2
−0.06
−0.04
−0.3 −0.08
−0.1
−0.4 −0.06
1 1.1 1.2 1.3 1.4 1.5 1.6 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.14 0.16 0.18 0.2 0.22 0.24 0.26
average of two measures [m] average of two measures [m] average of two measures [m]
25
Reference system
20 SoleSound
15
10
5
[deg]
−5
0.3 Reference system
−10 SoleSound
0.2
[m]
−15
0.1
−20 0
0 10 20 30 40 50 60 70 80 90 100 0 0.5 1 1.5
GC [%] [m]
Generic
1.6 0.28
0.18
1.5 0.26
0.16 0.24
SoleSound [m]
1.4
SoleSound [m]
SoleSound [m]
0.22
1.3 0.14
0.2
1.2
0.12 0.18
1.1
0.16
0.1
1 0.14
1 1.1 1.2 1.3 1.4 1.5 1.6 0.1 0.12 0.14 0.16 0.18 0.2 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28
Reference system [m] Reference system [m] Reference system [m]
450 250
600
400
500 200
350
300
400
150
Frequency
Frequency
Frequency
250
300
200
100
150 200
100
50
100
50
0 0 0
−0.15 −0.1 −0.05 0 0.05 0.1 0.15 −0.06 −0.04 −0.02 0 0.02 0.04 0.06 −0.06 −0.04 −0.02 0 0.02 0.04 0.06
Error (m) Error (m) Error (m)
0.4
0.06
0.1
0.3
0.08
0.04
difference between two measures [m]
0.2 0.06
0.04
0.02
0.1
0.02
0 0 0
−0.02
−0.1
−0.02 −0.04
−0.2
−0.06
−0.04
−0.3 −0.08
−0.1
−0.4 −0.06
1 1.1 1.2 1.3 1.4 1.5 1.6 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.16 0.18 0.2 0.22 0.24 0.26
average of two measures [m] average of two measures [m] average of two measures [m]
25
Reference system
20 SoleSound
15
10
5
[deg]
−5
0.3 Reference system
−10 SoleSound
0.2
[m]
−15
0.1
−20 0
0 10 20 30 40 50 60 70 80 90 100 0 0.5 1 1.5
GC [%] [m]
5.1 Introduzione
5.2.1 Hardware
5.2.2 Software
(a) (b)
5.2.3 Comunicazione
Data%
Acquisi9on%
Main%Task% Data%Processing%
(Finite%State%Machine)%
Message&Queue&
Communica9on% USB%2.0%
START
1 2 3
CMD PARAM
4 5
q0 q1 q2 q3
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
ax ay az gx gy gz mx my mz −
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
HW TIMESTAMP CRC
55 56 57 58 59 60 61
STOP
62 63 64
Figura5.5:
Figura 5.2: Principali
Principali specifiche
specifiche dei
dei manipolatori
manipolatori industriali
industriali della
dellaserie
serieC4
C4Epson
Epson
Seiko.
Seiko.
con tecniche di reverse engineering, per cui non è possibile studiare a priori
5.2 Postazioni di lavoro
con esattezza il percorso effettuato. Nonostante ciò, si tratta di una delle
più comuni istruzioni per il posizionamento: il comando necessita, nella sua
Le postazioni di lavoro all’interno della cella sono state considerate puntiformi
forma più banale, del solo set di coordinate del punto di arrivo, e permette
in accordo con le ipotesi avanzate durante la realizzazione del modello. Tale af-
al robot di raggiungere il punto desiderato nella maniera più semplice. Il
fermazione implica l’utilizzo di un’unica locazione istruita al robot per ciascuna
difetto principale di questa istruzione, però, è quella di non poter raggiungere
postazione. La locazione delle postazioni in coordinate cartesiane è stata scelta
elevate velocità nel caso in cui vengano richieste movimentazioni successive
in seguito a considerazioni sullo spazio di lavoro del robot utilizzato. Un ma-
i cui punti di destinazioni non siano presenti nel programma compilato.
nipolatore industriale infatti garantisce le migliori prestazioni in corrispondenza
di locazioni non in prossimità dei limiti dell’area raggiungibile. In figura 5.3 è
• Move: esegue una movimentazione lineare dalla posizione corrente fino al
72 5. CONTROLLO ROBOT CON DISPOSITIVO BASATO SU SENSORI MEMS
una lato Matlab e l’altra lato EPSON. In particolare, una GUI Matlab si occupa
di raccogliere, processare e inviare i dati relativi al movimento del robot con
un’interfaccia grafica che agevola la gestione del dispositivo, mentre un programma
SPEL+ risiedente nel lato EPSON raccoglie i pacchetti inviati dalla GUI con
protocollo TCP/IP e attua le operazioni richieste per muovere il robot secondo le
specifiche desiderate.
Fissato il periodo di campionamento con il quale vengono richiesti i dati dal
joystick, questi possono essere processati e inviati direttamente al robot sotto
forma di coordinate spaziali (sestuple, 3 coordinate per il posizionamento e 3 per
l’orientazione). Il programma EPSON si preoccuperà poi di analizzare i punti
inviati e di attuare il movimento per raggiungerli secondo le tempistiche previste.
Una prima idea potrebbe essere quella di inviare al controller del robot un punto
alla volta, e attendere che la movimentazione corrente sia esaurita prima di inviare
il punto successivo; in pratica, si tratta di inviare un set di coordinate ad ogni
passo di campionamento. Se da un lato questa tecnica minimizzerebbe la latenza
tra generazione del movimento e sua attuazione, in quanto la distanza temporale
sarebbe di un solo periodo di campionamento, dall’altro introdurrebbe notevoli
complicazioni, alcune di carattere teorico e altre di carattere pratico.
Dal punto di vista teorico, un approccio di questo tipo richiedere la conoscenza
esatta della velocità di percorrenza da impostare per garantire il passaggio at-
5.4. STRATEGIA DI CONTROLLO 75
Occorre quindi fare una prima distinzione fondamentale: per poter fare in modo
che il manipolatore riesca a seguire i movimenti imposti dall’utente è necessario
utilizzare come comando di movimento l’istruzione CVMove. Questo pone però
dei limiti all’uso dell’approccio precedentemente descritto: non è possibile inviare
al programma EPSON un solo punto alla volta, poiché rappresenta l’unico limite
del comando Curve.
Ne consegue quindi che l’alternativa più efficace risulta l’utilizzo del comando
Curve a cui vengono inviati il minimo dei punti occorrenti, ossia 3. Poiché il punto
finale della spline n-esima coincide con il punti iniziale della spline (n + 1)-esima,
sono necessari solo due nuovi punti per ogni spline, in sostanza ciò significa
introdurre una latenza di due intervalli di campionamento.
Il modo e le tempistiche con cui questi file vengono creati rappresenta l’aspetto
peculiare del programma EPSON: poiché il set di punti inviati non può essere
utilizzato per muovere direttamente il manipolatore (il comando CVMove infatti
legge solo i file .CVT creati con il comando Curve), è necessaria una politica di
ottimizzazione per impedire che questa limitazione si ripercuota sul movimento del
robot, causando rallentamenti o, peggio ancora, movimenti irregolari e discontinui.
Dovendo quindi lavorare con i file Curve (i file .CVT), si nota innanzitutto come
non sia possibile creare ogni volta un nuovo file da accodare ai successivi: di questa
strada infatti si verrebbero ad accumulare continuamente nuovi file che, dovendo
essere letti ed eseguiti una sola volta ciascuno, sarebbero inutili e superflui dopo
il primo utilizzo. D’altro canto lavorare su un solo file Curve è impossibile, dal
momento che durante l’esecuzione del movimento corrispondente, ossia durante
la lettura del file, non è possibile accedervi per modificarlo con operazioni di
scrittura.
È necessario dunque definire fin da subito quale strategia utilizzare per la lettu-
ra/scrittura delle spline, in particolare quanti debbano essere i file totali e quali
siano i meccanismi di creazione/esecuzione.
• Una regolazione a +∆v, −∆v occasionali come quella proposta non sarebbe
sufficiente a far convergere in un tempo ragionevole la velocità reale verso il
valore ottimo: l’incremento/decremento di velocità avviene solo durante i
timeout o le chiusure anticipate di set di punti che arrivano in ritardo rispetto
all’azione attuale dell’utente, ma durante i set di punti successivi la velocità
ideale da imporre potrebbe comunque subire delle ulteriori variazioni.
• La gestione “fisica” dei punti, intesa come uso delle locazioni di memoria,
risulta molto sconveniente utilizzando questa pratica: utilizzando due buffer
separati, nel caso di false timeout, ogni predizione sbagliata richiederebbe
di spostare i nuovi punti nell’altro buffer. Si potrebbe allora pensare di
78 5. CONTROLLO ROBOT CON DISPOSITIVO BASATO SU SENSORI MEMS
k=1 nTc
dove Af è un parametro di fitting, da regolare per ottenere una dinamica il più
possibile simile a quella ottimale, xk è il valore della coordinata x del k-esimo
set di punti e Tc è il periodo di campionamento. Se il parametro Af è unitario
la formula corrisponde al rapporto tra la distanza euclidea del set di punti e tra
il tempo impiegato per percorrerli. Risulta subito ovvio che la formula che ne
consegue per il calcolo della velocità risulta valida se e solo se il percorso effettuato
lungo i vari punti corrisponde ad una spezzata (comando Move). Ciò è ovviamente
in contrasto con il moto imposto dal comando Curve, il quale presuppone un
movimento tramite spline cubiche, per cui il risultato finale sarà un errore che
porta generalmente ad una sottostima del parametro di velocità necessario, in
quanto l’uso di traiettorie basate su polinomi cubici aumenta il percorso totale
(Fig. 5.9).
Occorre quindi settare manualmente il valore del parametro di fitting per
ottenere il risultato più consono.
Questa tecnica risulta più efficace della precedente con invio asincrono, tuttavia
presenta un problema molto simile: se in caso di lieve sottostima l’invio di punti
viene effettuato quando la spline è in fase conclusiva, l’altro file viene utilizzato per
scrittura e rimane inutilizzabile da altri finché è in atto la procedura di pianificazio-
ne. Purtroppo se la spline corrente sta per terminare, il moto trova occupato il file
successivo e dovrà fermarsi in attesa che in tale file sia terminata l’operazione di
5.4. STRATEGIA DI CONTROLLO 79
Ad ogni ciclo, il valore della variabile viene utilizzato come “regolazione fine” per
impostare il valore del parametro di fitting Af incrementandolo o decrementandolo
della quantità opportuna.
Utilizzando tutti questi accorgimenti, si perviene all’organizzazione finale
dell’algoritmo, con 3 spline a gestione gerarchica e ad invio sincrono di dati.
Questa struttura si è dimostrata robusta, affidabile e precisa, e rappresenta la
modalità di controllo definitiva per il sistema complessivo.
8. Via Points (4n byte): set di punti di passaggio. In questo frame sono
contenute le coordinate degli n punti inviati, utilizzabili per creare il file
Curve o, eventualmente, per eseguire direttamente il movimento con il
comando Go;
Tale timer viene attivato non appena risulta connesso il dispositivo, e richiama ogni
25ms circa la routine principale che si occupa di prelevare i dati dalla piattaforma,
eseguire le dovute elaborazioni e aggiornare la GUI con le nuove informazioni
ottenute. Il passo successivo sarà quello di creare i punti da inviare al robot sulla
base dei dati raccolti e, in caso di verificata connessione del robot, procedere alla
spedizione del pacchetto.
Prima di passare alla descrizione dell’algoritmo di creazione vero e proprio, però,
è opportuno analizzare la GUI e le metodologie per gestire la sua comunicazione
con piattaforma e manipolatore. In Fig. 5.12 è visibile la GUI e le varie parti cui
è suddivisa, descritte più nel dettaglio nelle sezioni seguenti.
5.6.1 Panel-Hardware
r11 r12 r13
Rc0 = (5.2)
r21 r22 r23
r31 r32 r33
cϕ cϑ cϕ s ϑ s ψ − s ϕ cψ cϕ s ϑ cψ + s ϕ s ψ
RRPY (ϕ, ϑ, ψ) = s ϕ s ϑ s ψ + cϕ cψ s ϕ s ϑ cψ − cϕ s ψ (5.3)
s c
ϕ ϑ
−sϑ cϑ s ψ cϑ cψ
ϕ = atan2(r21 , r11 )
(5.4)
q
ϑ = atan2(−r31 , r32 + r33 )
2 2
ψ = atan2(r32 , r33 )
Queste variabili rappresentano rispettivamente gli angoli di roll (ϕ), pitch (ϑ)
e yaw (ψ).
Poiché questi valori sono anche quelli utilizzati dal software EPSON per
impostare l’orientazione, risulta molto utile avere una loro espressione in formato
testuale per avere un’idea del valore che andrà spedito.
90 5. CONTROLLO ROBOT CON DISPOSITIVO BASATO SU SENSORI MEMS
px = r13
py = r23 (5.6)
= r33
pz
5.6.4 Plots
Com’è intuibile, nella sezione centrale vengono rappresentati, istante per istante,
le informazioni sull’orientazione e sul movimento planare. Partendo dagli angoli
RPY calcolati nell’apposita sezione, il software non fa altro che aggiornare un plot
tridimensionale creando una nuova terna basata sulle coordinate correnti. Come
metro di paragone, sul grafico viene sempre rappresentata una terna fissa rappre-
sentante l’ultimo sistema di riferimento memorizzato, che risulta particolarmente
92 5. CONTROLLO ROBOT CON DISPOSITIVO BASATO SU SENSORI MEMS
5.6.5 Connection
La parte a destra riguarda l’interazione e la comunicazione con piattaforma e
robot. In particolare questo riquadro contiene le informazioni sulla connessione/di-
sconnessione del dispositivo. Permette di poter scegliere dalla lista le porte seriali
attualmente disponibili e di effettuare una connessione tramite l’apposito pulsante.
Se in una di esse viene rilevato un dispositivo, la GUI viene aggiornata a “connessa”
e inizia la comunicazione tra essa e il dispositivo. Se a questo punto viene premuto
nuovamente il pulsante (che stavolta mostrerà la scritta “Disconnect”), la GUI
terminerà le sue elaborazione e lo scambio di dati con la piattaforma, rimanendo
in attesa di una nuova connessione.
5.6.6 Settings
In questo pannello si trovano le impostazioni di lavoro del dispositivo, ossia
quei parametri con cui normalmente i sensori e il microcontrollore processano
i segnali e le istruzioni. Tramite i menu a tendina è possibile selezionare ogni
valore per l’opportuno parametro, e il pulsante “Set Settings” invia al dispositivo
le caratteristiche impostate. In totale ci sono 5 opzioni da poter scorrere:
5.6.7 Operation
Questo pannello contiene le informazioni essenziali per la calibrazione e la corretta
impostazione del dispositivo. Permette di agire su 6 pulsanti:
robot tutti i dati elaborati, fintanto che non viene premuto nuovamente il pulsan-
te di connessione, che questa volta riporterà la dicitura “DISCONNECT ROBOT ”.
{j} sistema di riferimento corrente del joystick di cui l’IMU misura la rotazione
operata rispetto ad {a} (se la rotazione Rja ≡ I, le due terne coincidono);
0
{0 } sistema di riferimento fisso per l’azzeramento della rotazione attorno a z
nell’orientamento calibrato con il pulsante Reset Z Rotation (es. a joystick
verticale leggermente ruotato in avanti rispetto alla presa);
{b} sistema di riferimento disposto come la terna della base del robot a joystick
in azzeramento;
{i} sistema di riferimento corrente del joystick ma con assi disposti secondo
ordinamento del sistema {b} (se la rotazione Rib ≡ I, le due terne coincidono);
Figura 5.15: Rotazione generica del dispositivo rispetto al sistema IMU iniziale
(ψ = 135°, ϑ = 30°, ϕ = 60°).
Data quindi una variazione di postura del dispositivo, come quella mostrata in
Fig. 5.15 definibile tramite tre rotazioni attorno ad assi correnti RPY (roll ϕ in
z, pitch ϑ in y, yaw ψ in x) di angoli rispettivamente pari a ϕ = 60°, ϑ = 30°,
ψ = 135°, chiamiamo Rja la trasformazione corrispondente data da:
Scopo della taratura è definire una terna {0}, memorizzarla ed utilizzarla come
riferimento. Per far ciò si posiziona il joystick ad una determinata orientazione e
si preme sul pulsante Tare Orientation. In questo modo si memorizza la matrice
R0a = Rja per utilizzarla come riferimento per le trasformazioni successive che
possiamo chiamare Rj0 . Tuttavia il sensore fornirà la trasformazione sempre in
termini di Rja , per cui:
Rj0 = (R0a )T Rja (5.10)
Una volta impostata tale matrice, questa operazione viene quindi eseguita per
ogni dato ricevuto.
98 5. CONTROLLO ROBOT CON DISPOSITIVO BASATO SU SENSORI MEMS
Figura 5.16: Sistema IMU iniziale {a} e sistema IMU {j} ≡ {0} nella posizione
verticale del joystick.
0
Rj0 = (R0a R000 )T Rja (5.11)
∗
R000 = (R0a )T R0a0 (5.12)
5.7. CALIBRAZIONE DEL JOYSTICK 99
Figura 5.17: (a) Terna di azzeramento che utilizza il sistema di riferimento IMU
solidale al joystick ; (b) sistema di riferimento desiderato (corrispondente a quello
della base robot) alla postura attuale.
dove
∗
R0a0 = Rz (ϕ)Ry (ϑ)Rx (ψ) = Rz (ϕ) (5.13)
∗
L’angolo ϕ si ricava dalla cinematica inversa della matrice R0a0 vista come matrice
di Cardano, nello specifico:
L’utilizzo degli assi del sistema {j}, in termini di orientamento rispetto al di-
spositivo stesso, non è detto che siano convenienti nel nostro caso. Per questo
motivo è stata implementata la possibilità di operare una trasformazione di assi
mantenendo inalterata la postura del joystick.
Tra tutte le arbitrarie possibilità, conveniente è la scelta di utilizzare una terna
identica a quella della base robot quando il joystick si trova in configurazione di
azzeramento verticale. La Fig. 5.17 mostra la terna solidale al joystick secondo
IMU e quella desiderata. La scelta è ottimale nell’ottica di inviare punti al robot
da raggiungere con il centro utensile (TCP), infatti punti espressi rispetto ad una
terna joystick disposta come la base potrebbero essere inviati come punti robot
espressi nel sistema base del robot.
1005. CONTROLLO ROBOT CON DISPOSITIVO BASATO SU SENSORI MEMS
0
La rotazione che porta gli assi del sistema {0 } a sovrapporsi a quelli della
terna {b} è allora data da:
0
Rb0 = Rz (−90◦ )Ry (90◦ )Rx (0◦ ) (5.15)
Una rotazione Rib può essere allora calcolata considerando che tale rotazione
0
avviene rispetto alla terna {b}, definita a sua volta dalla rotazione Rb0 . Tuttavia
quest’ultima rotazione non coincide con una rotazione del joystick e di conseguenza
va sottratta a Rib . Si può scrivere perciò:
0
R0a R000 Rb0 Rib R0b0 = Rja (5.16)
da cui si ottiene
0 0
Rib = (R0a R000 Rb0 )T Rja Rb0 (5.17)
La terna {b} viene quindi presa come riferimento per tutti i dati successivi. Ciò
significa che punti ricavati dal movimento del joystick saranno valutati rispetto a
questa terna e potranno essere spediti al robot ad es. come punti di centro utensile
da raggiungere definiti nel sistema base del robot.
0
Si fa notare che si è utilizzata una matrice costante Rb0 definita rispetto al
0
sistema {0 } in luogo ad es. di una matrice Rba . Ciò è dovuto al fatto che, quando
il magnetometro è disabilitato come nel caso di utilizzo in ambito industriale, la
rotazione intorno a z letta all’accensione del dispositivo dalla matrice Rja non
è assoluta (come con il magnetometro, es. x che punta al nord magnetico). Di
conseguenza servirebbe un riposizionamento manuale riferito a qualcosa di assoluto
per poter impiegare tale matrice.
Figura 5.18: Relazione tra end-effector del robot in posizione di riposo e terna base
del robot.
è data da:
0 1 0
Reb = Rz (180°)Ry (−90°)Rx (90°) =
0 0 1 (5.18)
1 0 0
Siccome per un robot più tipicamente la definizione della terna da raggiungere
con la sua terna utensile è definita rispetto alla terna della base robot e non
rispetto ad una terna utensile di riferimento, ne consegue la necessità di definire
la rotazione da inviare rispetto alla terna base del joystick, seguita dalla rotazione
costante Reb . Ciò equivale a dire che quando il joystick si trova in posizione di
azzeramento la matrice che si desidera inviare non è l’identità bensı̀ proprio Reb .
La matrice da inviare vale quindi:
0 0
Rib Reb = (R0a R000 Rb0 )T Rja Rb0 Reb (5.19)
0 0
Rf in = (R0a R000 Rb0 )T Rja Rb0 (5.20)
In questo sistema di coordinate, dunque, la proiezione dell’asse z sul piano è
effettuabile, analogamente a quanto già detto, come:
px 0
p0 = = 0 (5.21)
p
y Rf in
pz 1
a cui si perviene allo stesso risultato espresso in 5.8.1, ossia
px = rf in13
py = rf in23 (5.22)
= rf in33
pz
5.8. MOVIMENTO ROBOT TRAMITE JOYSTICK 103
Figura 5.20: Rappresentazione delle due diverse icone per il piano 2D: a) punto, b)
freccia con le stesse coordinate, c) freccia con modulo maggiore.
quindi moltiplicato per il valore imposto dallo slider, completando cosı̀ il vettore
velocità finale che sarà utilizzato come dato di ingresso per la funzione di creazione
punti. Tale funzione, denominata CreatePathTrajectory, viene chiamata qualora
sia rilevata la pressione del pulsante nero, e si occupa sia della creazione dei dati,
sia del controllo della loro correttezza.
Ad ogni movimento successivo, pertanto, l’ultimo punto del percorso precedente
diventerà il primo del percorso attuale, e cosı̀ via aggiornando di volta in volta. Il
primo set di coordinate, ossia quello da cui parte il manipolatore una volta connesso
alla GUI, viene ottenuto tramite interrogazione diretta, con l’apposito pacchetto
dall’header “getpos”, il quale richiama il comando CurPos del software EPSON
che restituisce la posizione corrente nelle coordinate dello spazio operativo.
A partire da tale punto, dunque, la funzione CreatePathTrajectory genera il
successivo tramite semplice somma vettoriale di coordinate: chiamato p0 il punto
di partenza, e dato il vettore velocità v che rappresenta il vettore proiezione nel
piano scalato per il valore dato dallo slider, il punto successivo p1 viene ricavato
tramite semplice applicazione della legge oraria nel dominio discreto:
p1 = p0 + Tc v (5.23)
Questi due approcci rappresentano due estremi diversi che minimizzano cia-
scuno due parametri, uno a discapito dell’altro: il primo approccio è volto a
salvaguardare la “veridicità” dei dati, fornendo dei valori ottenuti campionando
posizioni reali; di contro, con questo meccanismo aumenta la latenza tra movimen-
to utente e movimento robot, in quanto sono richiesti due cicli di campionamento
prima dell’invio dei dati. Il secondo approccio, di contro, riduce al minimo la
latenza utente-robot, inviando dati ad ogni periodo di campionamento; vi è però
l’introduzione di punti interpolati, quindi non misurati ma imposti.
(1) Se si vuole procedere con il primo approccio, al ciclo successivo si otterrà
un nuovo valore di velocità v, da cui discenderà la corrispondente spaziatura d, e
il terzo punto verrà creato come
p2x = p1x + dx
p2y = p1y + dy (5.25)
= p1z
p2z
Figura 5.21: Rapporto delle distanze tra i punti nel caso di interpolazione del
punto medio.
Dopo l’invio seguirà anche in questo caso la sovrascrittura del punto p0 con il
valore contenuto in p1 e il processo ripartirà da capo al successivo innesco del timer.
Figura 5.22: Struttura delle coordinate dei punti nel pacchetto inviato al robot in
modalità movimento planare, nel caso di interpolazione del punto medio.
Questo si può vedere anche per via grafica in Fig. 5.21: poiché il punto pm si
trova esattamente a metà tra p0 e p1 , la formula calcolo della velocità (che in 2
dimensioni impone il rapporto incrementale tra ascissa e ordinata) si traduce nel
calcolo della lunghezza dei segmenti p0 pm pm p1 , che equivale alla lunghezza del
segmento p0 p1 , ricavabile come
q
|p0 p1 | = d2x + d2y (5.28)
Da notare che in questo caso tale matrice, a differenza di quanto espresso prece-
dentemente in 5.8.1, contiene anche il termine Reb che permette di passare dalle
coordinate di base del robot a quelle solidali all’end-effector in posizione di riposo.
1105. CONTROLLO ROBOT CON DISPOSITIVO BASATO SU SENSORI MEMS
Tali valori verranno utilizzati per formare direttamente le coordinate del punto
da spedire. Poiché varia solo l’orientazione, la posizione spaziale rimane invariata
e uguale all’ultima memorizzata, mentre le coordinate di orientazione vengono
sostituite con quelle ricavate dalla eq. 5.30. Gli angoli cosı̀ ricavati vengono passati
5.8. MOVIMENTO ROBOT TRAMITE JOYSTICK 111
Figura 5.25: Struttura delle coordinate dei punti nel pacchetto inviato al robot in
modalità end-effector orientation.
Per quanto riguarda il calcolo della velocità, in questo caso non ci sono variazioni
spaziali ma solo di orientazione. È possibile dunque ricorrere ad una formula per
ricavare una misura della velocità angolare: memorizzato in p0 l’ultimo punto
inviato, e chiamato p1 il punto da inviare, partendo dagli angoli RPY relativi si
può impostare la velocità come:
q
(ψ1 − ψ0 )2 + (ϑ1 − ϑ0 )2 + (ϕ1 − ϕ0 )2
ω = Af (5.31)
Tc
Gestire solo l’orientazione in un punto fisso, però, può risultare molto macchinoso:
può capitare infatti di volersi anche spostare mentre si effettua una variazione
di orientamento. Basti pensare ad esempio al caso in cui la terna utensile del
manipolatore debba avvicinarsi ad un oggetto per eseguire operazioni di lavorazione
o raccoglimento, principalmente muovendosi lungo l’asse di approccio del polso.
Poiché la terna del dispositivo serve per gestire l’orientazione, una possibile
soluzione per aggiungere anche il controllo del movimento potrebbe essere quella
di utilizzare il valore di accelerazione lineare per risalire al movimento indotto
dall’utente sul dispositivo: muovendo la piattaforma nella direzione voluta, infatti,
è possibile risalire dalla misura del valore di accelerazione alla direzione del moto
imposta con tale gesto.
Ovviamente, in linea teorica, la conoscenza dei valori di accelerazione lineare
permetterebbe di risalire alla posizione in ogni istante tramite doppia integrazione;
in questo ambito, rispetto a quanto svolto nel capitolo precedente, risulta rischioso
l’utilizzo di questa tecnica. Ciò è dovuto al fatto che l’intervallo di integrazione
potrebbe essere di qualche secondo e le tecniche di eliminazione del drift in velocità
non efficaci.
È dunque necessario cercare un approccio più valido, che sia allo stesso tempo
funzionale e comodo. Valutando il problema più nel dettaglio si nota come, in realtà,
non sia necessario garantire il movimento in ogni direzione spaziale: dato un certo
orientamento dell’end-effector, le movimentazioni più comuni sono quelle lungo gli
assi della terna utensile, ossia avvicinamento-allontanamento, spostamento verso
destra-sinistra e verso l’alto-basso. Eseguendo separatamente queste traslazioni,
5.8. MOVIMENTO ROBOT TRAMITE JOYSTICK 113
si riesce a garantire comunque un buon controllo della terna utensile del robot,
sfruttando a pieno tutte le potenzialità offerte dalla piattaforma.
In particolare, quindi, la movimentazione in modalità traiettoria in end-effector
sarà composta da una variazione di orientazione e, nell’eventualità, anche da un
movimento spaziale lungo uno dei tre assi della terna utensile, innescata da una
traslazione della piattaforma lunga la direzione desiderata.
L’implementazione del processo appena descritto richiede la conoscenza dei
valori di accelerazione lineare a misurati dal dispositivo. Tali segnali vengono
aggiornati e resi disponibili assieme alla matrice di rotazione Rja , ossia ad ogni
ciclo di campionamento. I valori ottenuti, però, rappresentano i dati misurato nel
sistema di riferimento dell’IMU, ossia aa . Ciò che invece sarebbe auspicabile avere
per risalire alla traslazione effettuata nelle coordinate utensile è il valore misurato
nel sistema {e}. Poiché con le notazioni impiegate
0
aa = Rja Rij Rei ae = Rja Rb0 Reb ae (5.32)
• Deve generare i punti successivi lungo la direzione indicata dai tre assi nel
sistema di riferimento dell’end-effector, mentre CreatePathTrajectory genera
i punti solamente sul piano z.
pmx = p0x +p1x
2
p0y +p1y
=
pmy
2
=
p
p0z +p1z
mz 2
(5.34)
p0ϕ +p1ϕ
=
pmϕ 2
= p0ϑ +p1ϑ
pmϑ 2
p0ψ +p1ψ
=
pmψ
2
v = Rf in e (5.35)
dove e è un vettore di selezione della componente che identifica lungo quale asse
dovrà essere eseguito il moto: a seconda dei casi, vale:
direzione n direzione s direzione a
1 0 0
(5.36)
= 0 = 1 = 0
e e e
0 0 1
L’eq. 5.35 permette quindi di ricavare le coordinate del versore scelto espresse
secondo il sistema di riferimento calibrato, ossia (in caso di taratura corretta)
solidale a quello di base del robot.
La scelta di identificare tale versore con la lettera c non è casuale: similmente a
quanto fatto per il calcolo della direzione nel caso di movimento planare (eq. 5.23),
anche in questo caso il procedimento è molto simile, con la differenza che ora il
moto avviene in tre dimensioni anziché due. Anche in questo caso, è possibile
ricavare il vettore di displacement d come d = αv, dove α è un opportuno fattore
correttivo che tiene conto dell’ultimo limite superiore attraversato e, dunque,
dell’intensità della traslazione impressa.
Una volta ricavato il valore di d, è possibile scrivere le coordinate del punto di
arrivo p1 come
p1x = p0x + dx
p1y = p0y + dy (5.37)
= p0z + dz
p1z
I valori di p1ϕ p1ϑ e p1ψ vengono invece imposti semplicemente dai rispettivi
angoli ottenuti applicando l’inversione di Cardano alla matrice Rf in . Conoscendo
p1 e p0 , è possibile ricavarsi il punto medio pm utilizzando L’eq. 5.34.
5.8. MOVIMENTO ROBOT TRAMITE JOYSTICK 117
Figura 5.28: Struttura delle coordinate dei punti nel pacchetto inviato al robot in
modalità end-effector path (movimento + orientazione).
Ora che sono disponibili tutti i punti necessari, non resta far altro che as-
semblare il pacchetto e inviare i dati al robot. Analogamente a quanto fatto per
il movimento planare, le coordinate dei punti da inviare nel pacchetto saranno
costituite come mostrato in Fig. 5.28:
La struttura del pacchetto per intero, invece, è visibile in Fig. 5.29 ed è identica
a quella già descritta durante il movimento planare:
In Fig. 5.30 è mostrato un esempio del funzionamento in modalità traiettoria
in end-effector. Nella striscia a) viene evidenziata la posizione di partenza del
joystick, il valore dell’accelerazione lineare misurata per ciascuno dei tre assi e
la postura corrispondente del robot. In b), mantenendo la stessa orientazione,
viene traslato in dispositivo lungo la direzione di approach, ossia lungo l’asse z
del riferimeno end-effector: si vede come il corrispondente valore di accelerazione
lungo l’asse z subisca un incremento, e di conseguenza anche il robot si muoverà
in tale direzione. Terminato questo movimento, in c) viene infine imposta una
traslazione della piattaforma lungo la direzione x (normal) di intensità inferiore:
questo viene evidenziato dal corrispondente valore di accelerazione lungo x, che
1185. CONTROLLO ROBOT CON DISPOSITIVO BASATO SU SENSORI MEMS
Alla luce di tutte le modalità viste finora, si può procedere all’unificazione degli
algoritmi di gestione in maniera da creare una infrastruttura solida e semplice
da utilizzare. In particolare, è necessario operare una revisione per l’attivazione
della parte appena descritta, in quanto il suo impiego con un solo pulsante risulta
molto difficoltoso.
Il problema principale della traiettoria in end-effector, infatti, è la necessità
di effettuare una traslazione spaziale della piattaforma per poter permettere il
5.8. MOVIMENTO ROBOT TRAMITE JOYSTICK 119
movimento del manipolatore lungo i tre assi previsti. Questo gesto, all’atto pratico,
modifica in maniera più o meno marcata anche l’orientazione del dispositivo: il polso
dell’utente difficilmente rimarrà nella stessa orientazione durante il movimento
lungo l’asse scelto. Tale problema è molto rilevante qualora si cerchi di avvicinare
l’end effector lungo l’asse di approach mantenendo il più possibile tale direzione.
Una soluzione potrebbe essere quella di destinare la pressione simultanea dei
pulsanti rosso e nero per eseguire un movimento di sola traslazione, mentre la
variazione di orientazione viene effettuata con la pressione del pulsante rosso. In
tal modo, si sceglie l’orientamento voluto per l’end-effector premendo il pulsante
rosso e muovendo la piattaforma nella posizione cercata, dopodiché, mantenendo
sempre la pressione sul rosso, si attiva anche il nero e in questo modo si blocca
l’aggiornamento dell’orientamento. Ora l’unico dato su cui è possibile agire è
quello dell’accelerazione lineare, che permette una traslazione nella direzione
imposta secondo il metodo già descritto. Se ora si rilascia la pressione del rosso e si
mantiene solo il nero, il dispositivo continuerà a non aggiornare le informazioni di
orientazione, ma non sarà possibile agire nemmeno su quella del posizionamento.
Questo accorgimento è necessario per dare la possibilità all’utente di riposizionare
il dispositivo nel luogo di partenza senza modificare lo stato del robot: può accadere
infatti che dopo una serie di traslazioni l’utente si sia allontanato dal punto in
cui era inizialmente partito, e in tal caso la necessità più impellente è quella di
tornare in tale luogo senza però intaccare lo stato del robot. Questo meccanismo
garantisce la possibilità di effettuare tale operazione, favorendo cosı̀ più operazioni
di traslazione in sequenza e offrendo anche lo spunto di poter gestire in maniera
più precisa la velocità di spostamento. Ovviamente, rilasciando tutti i pulsanti
e premendo solo in nero si attiva, come di consueto, la modalità di movimento
planare.
Per permettere il riconoscimento dell’azione di traiettoria in end-effector piuttosto
che quella di movimento planare, è prevista una variabile aggiuntiva chiamata
ee-path flag, la quale assume valore true alla pressione del pulsante rosso, mentre
ritorna allo stato false al rilascio di tutti i pulsanti.
Una miglior visione d’insieme è resa disponibile e visibile in Fig. 5.31, dove è
schematizzato l’intero algoritmo in forma di flow chart.
1205. CONTROLLO ROBOT CON DISPOSITIVO BASATO SU SENSORI MEMS
[1] G. Reinhart and M. Loy, “Design of a modular feeder for optimal operating
performance,” CIRP Journal of Manufacturing Science and Technology, vol. 3,
no. 3, pp. 191–195, 2010.
[9] S. Bi and J. Liang, “Robotic drilling system for titanium structures,” The
International Journal of Advanced Manufacturing Technology, vol. 54, no.
5-8, pp. 767–774, 2011.
[10] G. Rosati, M. Faccio, A. Carli, and A. Rossi, “Fully flexible assembly systems
(f-fas): a new concept in flexible automation,” Assembly Automation, vol. 33,
no. 1, pp. 8–21, 2013.
[14] Z. Pan, J. Polden, N. Larkin, S. Van Duin, and J. Norrish, “Recent progress
on programming methods for industrial robots,” Robotics and Computer-
Integrated Manufacturing, vol. 28, no. 2, pp. 87–94, 2012.
[24] Z. Zhang, “A flexible new technique for camera calibration,” Pattern Analysis
and Machine Intelligence, IEEE Transactions on, vol. 22, no. 11, pp. 1330–
1334, 2000.
[33] K. Lebel, P. Boissy, M. Hamel, and C. Duval, “Inertial measures of motion for
clinical biomechanics: Comparative assessment of accuracy under controlled
conditions-effect of velocity,” PloS one, vol. 8, no. 11, p. e79945, 2013.
[36] J.-A. Lee, S.-H. Cho, J.-W. Lee, K.-H. Lee, and H.-K. Yang, “Wearable
accelerometer system for measuring the temporal parameters of gait,” in
Engineering in Medicine and Biology Society, 2007. EMBS 2007. 29th Annual
International Conference of the IEEE. IEEE, 2007, pp. 483–486.
[40] J. Nutt, C. Marsden, and P. Thompson, “Human walking and higher-level gait
disorders, particularly in the elderly,” Neurology, vol. 43, no. 2, pp. 268–268,
1993.
[41] D. A. Winter, Biomechanics and motor control of human gait: normal, elderly
and pathological, 1991.
[44] J. Perry, J. R. Davids, et al., “Gait analysis: normal and pathological function,”
Journal of Pediatric Orthopaedics, vol. 12, no. 6, p. 815, 1992.
[53] T. Seel, J. Raisch, and T. Schauer, “Imu-based joint angle measurement for
gait analysis,” Sensors, vol. 14, no. 4, pp. 6891–6909, 2014.
BIBLIOGRAFIA 129
[56] T. Liu, Y. Inoue, and K. Shibata, “A wearable force plate system for the
continuous measurement of triaxial ground reaction force in biomechanical
applications,” Measurement Science and Technology, vol. 21, no. 8, p. 085804,
2010.
[59] B. Mariani, S. Rochat, C. Bula, and K. Aminian, “Heel and toe clearan-
ce estimation for gait analysis using wireless inertial sensors,” Biomedical
Engineering, IEEE Transactions on, vol. 59, no. 11, pp. 3162–3168, 2012.
[62] T. Liu, Y. Inoue, K. Shibata, and K. Shiojima, “A mobile force plate and three-
dimensional motion analysis system for three-dimensional gait assessment,”
Sensors Journal, IEEE, vol. 12, no. 5, pp. 1461–1467, 2012.
[64] L. Shu, T. Hua, Y. Wang, Q. Li, D. D. Feng, and X. Tao, “In-shoe plantar
pressure measurement and analysis system based on fabric pressure sensing
array,” Information Technology in Biomedicine, IEEE Transactions on, vol. 14,
no. 3, pp. 767–775, 2010.