Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Universita
` DI SCIENZE MATEMATICHE FISICHE E NATURALI
FACOLTA
Corso di laurea in Informatica
Candidato:
Samuele Carli
Relatore:
Prof. Marco Rosa Clot
Anno Accademico
2007/2008
This work is licensed under the Creative Commons Attribution 3.0 United States
License. To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/us/
or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco,
California, 94105, USA.
Albert Einstein
Indice
Introduzione
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2
2
2
2
5
6
9
10
24
28
28
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
31
32
32
33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
43
43
43
44
47
54
.
.
.
.
.
.
.
.
.
.
.
.
Conclusioni
57
59
iii
iv
B Accelerometro usato per le sperimentazioni
B.1 Misure sperimentali . . . . . . . . . . . . . . . . . . . . . . . . . .
B.1.1 Velocit`a di campionamento . . . . . . . . . . . . . . . . . .
B.1.2 Scala e risoluzione . . . . . . . . . . . . . . . . . . . . . . .
63
65
65
65
Ringraziamenti
67
Introduzione
vi
dere in considerazione lutilizzo di una fonte di informazioni esterne come il Global
Positioning System; a tal fine ne sono state considerate le caratteristiche e quindi
lapplicabilit`a nel contesto dello studio della camminata, a partire dai molti lavori che
si trovano in letteratura.
Capitolo
che `e ancora una funzione del tempo e rappresenta la velocit`a istantanea del corpo.
Mediante unaltra integrazione si arriva subito alla funzione:
Z t
v(t)dt
(1.2)
s(t) = s0 +
0
che `e la soluzione al problema iniziale, ovvero si ha una funzione del tempo che rappresenta la posizione nello spazio del corpo considerato.
Nella pratica non si ha a disposizione landamento dellaccelerazione in forma funzionale, ma solo unapprossimazione per campioni equidistanti nel tempo. Indicando
con linverso della frequenza di campionamento, ovvero la durata di un periodo, e con a[t] la misura corrispondente al quanto che spazza lintervallo di tempo
[t, (t + 1) ], le integrazioni (1.1) e (1.2) possono espresse in questo modo:
v[t] = v0 +
t1
X
a[t],
t = 1, 2, ..., n
(1.3)
v[t],
t = 1, 2, ..., n
(1.4)
e
s[t] = s0 +
t1
X
0
2
I valori a[t] sono il risultato di un processo di digitalizzazione e sono soggetti
ad errori di misura che vengono introdotti sia durante il processo di quantizzazione
(che per definizione impone lapprossimazione di una grandezza continua con una
discreta), sia durante il processo stesso di misura (dovuti presumibilmente al tipo di
sensore, alle tolleranze di realizzazione, etc. ).
Il processo di integrazione di un segnale affetto da errore (o rumore) `e soggetto
auna deriva di ordine di grandezza proporzionale
al numero di passi di integrazione
1.1
1.1.1
1.1.2
In questa sezione sono illustrati alcuni dei metodi sperimentati finalizzati alla ricostruzione di movimenti unidimensionali generici. Lo scopo di questi metodi `e quello
di valutare se sia possibile mitigare il fenomeno delle derive agendo direttamente sul
segnale accelerometrico senza conoscere il tipo di moto che si vuole misurare.
Riduzione della deriva tramite luso di tolleranze
Il primo problema che ci si trova ad affrontare `e relativo al comportamento dellaccelerometro fermo. Come si vede in figura 1.1, la misura che si ottiene `e costituita da
3
una serie di valori che oscillano intorno al quanto che pi`u si avvicina al valore reale.
Le oscillazioni non hanno una distribuzione uniforme intorno al quanto in questione,
ma questa si sposta verso il quanto precedente o successivo in funzione del valore
reale della misura.
Queste oscillazioni sono per`o la causa principale della divergenza dei processi di integrazione, i quali darebbero origine a risultati migliori in presenza di un segnale meno
preciso ma non affetto da rumore.
139.0
138.5
138.0
137.5
137.0
136.5
136.0
135.5
135.0
20
40
60
80
100
x+
scaleF actor X2
A[x] =
F tol(A[i], aT ol, of f set)
w
w
(1.5)
i=x 2
dove w rappresenta il numero di campioni che si vogliono mediare, aT ol la tolleranza per le fluttuazioni sullaccelerazione, of f set il valore corrispondente allo zero,
4
scaleF actor il fattore di scala da quanti a m/s2 e la funzione F tol(x, y, z) `e cos`
definita:
0
se abs(x) <= y
F tol(x, y, z) =
(1.6)
x z altrimenti
Cos` facendo si ottiene come risultato uno smoothing come mostrato in figura 1.2;
questo non risolve completamente il problema dellintegrazione, ma permette di usare
il valore precedentemente ricavato come zero in maniera efficace.
Si calcola quindi la velocit`a come integrazione cumulativa dei valori in A:
V [x] = dt
x
X
A[i]
(1.7)
i=0
Per il calcolo dello spostamento infine si proceder`a per integrazione della velocit`a
secondo lequazione (1.4). Si pu`o vedere un risultato ottenibile con questo metodo
nella figura 1.3.
Con questo metodo si ha una stabilit`a accettabile quando il sensore `e fermo e si riesce
a ottenere una precisione nellordine del centimetro su metro su dei movimenti semplici e decisi. Il risultato `e per`o molto influenzato dal tipo di movimento a cui viene
soggetto laccelerometro; se questo risulta poco deciso o comunque troppo prolungato nel tempo laccumulazione degli errori porta molto spesso fuori dalle tolleranze
sulla velocit`a e rende inservibile la misura.
In conclusione questo metodo risulta applicabile in contesti particolari dove i movimenti sono decisi e ben limitati nel tempo, ma non per movimenti generici del
sensore.
15
10
-5
-10
-15
0
1000
2000
3000
4000
5000
(1.9)
che sia interpolante i dati misurati. La scelta del grado del polinomio `e delicata
e va operata in funzione sia della grandezza dei blocchi di campioni che si vogliono
considerare, sia del tipo di movimento che si sta misurando (variazioni di accelerazione
per secondo). Sperimentalmente, sulla dimensione dei blocchi di 500 campioni e per
il tipo di movimento testato, il grado 8 si `e rivelato un buon compromesso. Il risultato
dellapplicazione di questo metodo `e visibile in figura 1.4.
Lapprossimazione per mezzo di polinomi ha il vantaggio di permettere il calcolo della
prima integrazione con un costo computazionale molto ridotto e unelevata precisione.
Si pu`o ricavare matematicamente il polinomio che approssima la velocit`a:
Z
vp(x) = pn (x)dx
(1.10)
e quindi ottenere landamento della velocit`a valutando vp(x) sui vari istanti di campionamento:
Z t
pn (t)dt
(1.11)
V [t] = vp(t) + A[0] =
0
Anche in questo caso si rende necessaria ladozione di una tolleranza sul valore
finale della velocit`a, secondo lequazione (1.8). Come nel caso precedente si va poi
-1
-2
-3
0
1000
2000
3000
4000
5000
15
10
-5
-10
-15
0
1000
2000
3000
4000
5000
f (a(t))dt =
t1
f (a(t))dt+
f (x) =
t2
f (a(t))dt+. . .+
t1
dove:
0
x
tn
f (a(t))dt (1.12)
tn1
(1.13)
-1
-2
-3
0
1000
2000
3000
4000
5000
0.03
0.02
0.01
0.00
-0.01
-0.02
1000
2000
3000
4000
Figura 1.6: Differenza tra spazio (nero) e velocit`a (verde) risultanti dal metodo
delle tolleranze e dallapprossimazione polinomiale. (tolleranza-polinomiale).
Un risultato dellapplicazione di questo metodo `e mostrato in figura 1.7, insieme a
un confronto diretto con il metodo delle tolleranze in figura 1.8. Questo metodo
non `e in grado di risolvere il problema dellaccumulazione degli errori sulla seconda
integrazione, ma lipotesi sul tipo di moto permette di riconoscere quando il corpo
si ferma con una semplice analisi diretta del segnale dellaccelerazione e quindi di
azzerare la deriva del primo integrale ogni volta che il movimento lo permette.
Ne consegue che limitatamente ai tipi di moto conformi allipotesi (1.1), questo
metodo fornisce risultati migliori rispetto ai due metodi presentati precedentemente.
In particolare con i primi due metodi accade facilmente che, anche considerando un
movimento molto semplice come quello in figura 1.3, il valore calcolato della velocit`a
alla fine del moto ecceda la tolleranza e quindi si inizi a considerare il corpo in moto
a velocit`a costante anche se in realt`a `e fermo; questo implica che da quel momento
in poi la posizione calcolata sar`a completamente sbagliata, sia come valore che come
andamento. Con questo metodo invece quanto appena descritto non pu`o accadere;
la posizione calcolata `e sicuramente inaccurata quanto quelle calcolate con i metodi
precedenti a causa delle derive stocastiche, ma ha il pregio di rispecchiare sicuramente
landamento del moto.
Ipotesi pi`
u restrittive
Nelle situazioni in cui il moto ha caratteristiche precise e conosciute, i risultati che si
riescono ad ottenere sono buoni.
Ad esempio, se si considera un moto rettilineo di andata e ritorno (simile a quello
10
-1
-2
-3
0
1000
2000
3000
4000
5000
Figura 1.7: Accelerazione, velocit`a e spazio per lo stesso movimento in figura 1.3,
calcolati con lintegrazione localizzata.
usato negli esempi precedenti), si hanno elementi sufficienti per apportare correzioni
alle derive degli integrali. In particolare si sa che ci sono due movimenti, ed al termine
del secondo il sensore `e tornato alla posizione iniziale. Lintegrazione diretta sui dati
non fornisce risultati utili (figura 1.9, ma limposizione sulla seconda integrazione
degli zeri migliora la situazione in modo molto evidente (figura 1.10). Nellesempio la
correzione `e imposta sommando allintegrale risultante una funzione pari e una dispari
pesate in modo opportuno; questo metodo `e spiegato nei dettagli nel capitolo 2.
1.2
Il filtro di Kalman
11
0.06
0.05
0.04
0.03
0.02
0.01
0.00
-0.01
0
1000
2000
3000
4000
5000
Figura 1.8: Differenza tra spazio (nero) e velocit`a (verde) risultanti dal metodo
delle tolleranze e integrazione localizzata.
secondo un moto conosciuto. Si assuma che la nave si stia muovendo secondo la
legge:
yt+1 = yt + c + wt
(1.14)
dove c `e lo spazio che la nave percorre in un secondo, considerando la velocit`a media
della nave costante, e wt il rumore relativo dovuto alle onde del mare agitato (per
esempio c = 5 m mentre il rumore `e bianco con varianza w ).
La misura diretta della posizione allistante t viene chiamata xt ed `e affetta da un
rumore bianco vt :
xt = yt + v t
(1.15)
dove vt ha varianza v . Se non ci sono altre informazioni ci si aspetta quindi che la
posizione allistante t + 1 sia data da:
yt+1 = yt + c
(1.16)
(1.17)
12
10
11
2
t+1
v2
y
+
xt+1
t+1
2
2
t+1
+ v2
t+1
+ v2
(1.18)
2
v2 t+1
2
t+1
+ v2
(1.19)
13
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
e infine:
2
2
t+1
= (1 Kt+1 )t+1
(1.21)
(1.22)
Nel listato 1.1 si riporta una semplice implementazione di quanto appena esposto,
utilizzata per generare le figure 1.11, 1.12 e 1.13 che mostrano la posizione della nave
prevista dal filtro al variare della confidenza nei confronti della misura astronomica o
della vicinanza del movimento della nave al moto rettilineo uniforme.
Formalizzando
Un filtro di Kalman `e costituito da un insieme di equazioni che implementano un
estimatore di tipo predictor-corrector ; la stima che si ottiene `e ottimale nel senso
che minimizza la covarianza dellerrore, quando certe condizioni al contorno sono
verificate. Questa formalizzazione, proposta in [1], `e una generalizzazione del filtro
per sistemi il cui stato `e rappresentato da un numero arbitrario di caratteristiche.
Lidea alla base `e quella di generare una approssimazione dello stato di un processo.
Il processo `e rappresentato dal vettore di stato x Rn , avviene su una base dei tempi
discreta ed `e governato da unequazione differenziale stocastica del tipo:
xk = Axk1 + Buk + wk1
(1.23)
14
time = 100
dt = 0 . 1
c = 0 . 1 #=v d t
s initial = 0
Sigma wt = 0 . 0 0 2 #n o i s e on t h e p r o c e s s
Sigma vt = 0 . 5 #n o i s e on t h e measurements
#This w i l l be t h e r e a l p o s i t i o n
realPosition = [ s i n i t i a l ]
for i in r a n g e ( time 1):
r e a l P o s i t i o n . append ( r e a l P o s i t i o n [ i ]+ c+
random . g a u s s ( 0 , Sigma wt ) )
#n o i s y measurements
xt = [ ]
for i in r e a l P o s i t i o n :
xt . append ( i+random . g a u s s ( 0 , Sigma vt ) )
yt = [ 0 ]#f i r s t e s t i m a t i o n
Sigma t = [ 0 . 5 ] #u n c e r t a i n i t y o f t h e e s t i m a t i o n p r o c e s s
swt2 = Sigma wt Sigma wt
s v t 2 = Sigma vt Sigma vt
K = [ ( Sigma t [ 0 ] ) / ( Sigma t [ 0 ] + s v t 2 ) ]
yprime = [ ]
SigmaPrime = [(1 K[ 0 ] ) ( Sigma t [ 0 ] ) ]
for i in r a n g e ( time 1):
#p r e d i c t i o n
yt . append ( yt [ i ]+ c )#+random . g a u s s ( 0 , S i g m a t [ 0 ] ) )
Sigma t . append ( ( Sigma t [ i ]+ swt2 ) )
#o u t p u t and c o r r e c t i o n
yprime . append ( yt [ i ]+K[ i ] ( xt [ i ] yt [ i ] ) )
SigmaPrime . append ((1 K[ i ] ) ( Sigma t [ i + 1 ] ) )
K. append ( ( Sigma t [ i + 1 ] ) / ( Sigma t [ i +1]+ s v t 2 ) )
15
-1
0
10
20
30
40
50
Figura 1.11: Esempio della nave: Stessa varianza (0.5) per le misure e la previsione. (Posizione reale (nero), Posizione aspettata (blu +), Misure (verde +),
output del filtro (rosso). La stessa notazione `e usata anche in figura 1.12 e 1.13)
-1
0
10
20
30
40
50
16
-1
0
10
20
30
40
50
(1.24)
dove la matrice H Mmn rappresenta la relazione tra lo stato reale del processo e
la misura zk . Le variabili stocastiche wk e vk rappresentano il rumore rispettivamente
sul processo e sulla misura. Si assuma che questi rumori siano indipendenti, bianchi
e con una distribuzione gaussiana:
p(w) N (0, Q) e p(v) N (0, R)
(1.25)
n
Si definisce con x
k R la stima a priori al passo k ottenuta in base alla
conoscenza che si ha del comportamento del processo nei passi avvenuti prima di k,
e con xk Rn la stima a posteriori data la misura zk ; le stime a priori e a posteriori
dellerrore possono esser espresse come:
e
k ed ek = xk x
k = xk x
(1.26)
(1.27)
Rimane da trovare unequazione per calcolare la stima a posteriori xk come combinazione lineare della stima a priori x
k e una differenza pesata tra la misura attuale
zk e la predizione sulla misura H x
.
e del tipo:
k Questa equazione `
xk = x
k + K(zk H x
k)
(1.28)
17
La matrice K Mnm `e scelta1 tale da minimizzare la covarianza a posteriori
(seconda equazione in (1.27)):
Kk = Pk H T (HPk H T + R)1 =
Pk H T
HPk H T + R
(1.29)
Da questa forma di K si nota che al diminuire della covarianza sulla misura R (eq.
(1.25)), limportanza del termine (zk H x
k ) (generalmente chiamato residuo) in
(1.28) aumenta; nello specifico:
lim Kk = H 1
Rk 0
(1.30)
(1.31)
Pk 0
Si ha quindi che al diminuire della covarianza sulla misura questa tende ad acquistare
fiducia (ovvero il risultato del filtro si avvicina di pi`u a zk ) facendo perdere fiducia nei
confronti della misura predetta H x
k ; al contrario al diminuire della varianza dellerrore stimato a priori il filtro tende a privilegiare i valori predetti rispetto a quelli misurati.
Applicazione al caso discreto Il filtro di Kalman approssima un processo agendo come un sistema reazionato: esso computa una predizione sullo stato del processo
in un certo istante di tempo e ottiene un feedback sotto forma di misure rumorose.
Linsieme di equazioni che compongono il filtro pu`o quindi essere diviso in due sottoinsiemi: uno contiene le equazioni che eseguono una predizione sullo stato futuro
del processo e della covarianza dellerrore, laltro contiene le equazioni che si occupano di inglobare il risultato della misura nelle stime a priori al fine di ottenere delle
predizioni future pi`u accurate.
La predizione viene effettuata secondo le equazioni:
x
xk1 + Buk
k = A
(1.32)
(1.33)
18
e infine
xk = x
k + Kk (zk H x
k)
(1.35)
Pk = (I Kk H)Pk .
(1.36)
1. si calcola la stima per lo stato del processo al tempo k a partire dai valori
noti xk1 , Pk1 attraverso le equazioni (1.32) e (1.33) (fase di aggiornamento
temporale o time update);
2. si corregge la stima in base alla misura rumorosa riscontrata attraverso le equazioni (1.34),(1.35) e (1.36) (fase di aggiornamento della misura, o measurement
update).
Comportamento del filtro di Kalman semplice nel caso della doppia
integrazione Si prenda in considerazione un corpo che subisce unaccelerazione
su un asse secondo la legge:
a(t) = cos(t) con t [0, 2]
La velocit`a del corpo si ottiene in maniera esatta:
Z t
t
cos(t)dt = sin(t)0 = sin(t)
v(t) =
(1.37)
(1.38)
(1.39)
Si pu`o simulare una misura reale campionando la funzione a(t) a intervalli regolari; per
questo scopo si definisce il periodo di campionameno dt al valore arbitrario dt = 0.01,
ovvero si considera la funzione campionata in 2/dt = 628 punti.
Si definisce la funzione apert(t) la funzione a(t) soggetta a perturbazioni:
apert(t) = a(t) + random , t [0, 0.01, 2/dt]
(1.40)
dove il numero casuale `e stato scelto secondo una distribuzione gaussiana (per far
fede allipotesi di base dei filtri di Kalman).
Per avere unidea sullandamento delle derive, si definiscono le integrazioni semplici
come:
628
X
vpert(t) =
a(idt)
(1.41)
i=0
spert(t) =
628
X
i=0
vpert(idt)
(1.42)
19
2.5
2.0
1.5
1.0
0.5
0.0
-0.5
-1.0
-1.5
0
Figura 1.14: Confronto tra le funzioni a(t) (nero), v(t) (giallo), s(t) (magenta),
apert(t) (rosso), vpert(t) (verde), spert(t) (blu); si nota chiaramente la deriva
degli integrali del segnale perturbato.
Il risultato di queste integrazione `e confrontabile in figura 1.14; la deriva della seconda
integrazione non `e trascurabile rispetto al valore dellintegrale.
Lapplicazione di un semplice smoothing a finestra scorrevole non sortisce effetti
sul risultato delle derive, ma rende landamento della funzione pi`u comprensibile allocchio umano. La mediazione di un gruppo di valori infatti non fa altro che una somma
parziale, ovvero svolge una parte del lavoro che sarebbe stato svolto dal processo di
integrazione. Ad esempio, applicando lo smoothing descritto nel listato 1.2 (dove
si definiscono le funzioni asmooth(t), vsmooth(t), ssmooth(t) come accelerazione
perturbata sottoposta allo smoothing, prima e seconda integrazione della funzione
asmooth(t)) sulla seconda integrazione si ottiene praticamente la stessa deriva che si
sarebbe ottenuto integrando il segnale originale sporco, come `e ben evidente in figura
1.15.
Si supponga di avere a disposizione un modello che sia in grado di prevedere, entro
un certo margine di errore, landamento dellaccelerazione nel tempo. Si pu`o allora
costruire un filtro di Kalman che operi sullaccelerazione a partire dalla previsione e
dai dati misurati considerando:
apertt = at + vt le misure fisiche dellaccelerazione, dove vt rappresenta la
varianza dovuta agli errori di misura;
yt+1 = cos(t + 1) la previsione sullaccelerazione;
20
smoothingWidth = 15
leftWindow = 0
rightWindow = smoothingWidth
middle = smoothingWidth /2
limit = len ( taxis )
asmooth = [ ]
for i in xrange ( l i m i t ) :
asmooth . append ( numpy . mean (
a p e r t [ i leftWindow : i+rightWindow ] ) )
i f leftWindow < middle :
leftWindow+=1
rightWindow=1
i f i >= l i m i t rightWindow :
rightWindow=1
leftWindow+=1
vsmooth = numpy . cumsum ( asmooth ) dt
ssmooth = numpy . cumsum ( vsmooth ) dt
2.5
2.0
1.5
1.0
0.5
0.0
-0.5
-1.0
-1.5
0
Figura 1.15: Confronto tra le funzioni a(t) (nero), v(t) (giallo), s(t) (magenta),
asmooth(t) (rosso), vsmooth(t) (verde), ssmoot(t) (blu) e spert(t) (dashed blu);
con lo smoothing si ottiene circa la stessa deriva che si ha sul segnale originale.
21
Listing 1.3: Integrazione sui dati processati dal filtro di Kalman
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sigma wt = 0 . 0 0 5 #n o i s e on t h e p r o c e s s
Sigma vt = 0 . 4 #n o i s e on t h e measurements
yt = [ ] #f i r s t e s t i m a t i o n
Sigma t = [ 0 . 0 5 ] #u n c e r t a i n i t y o f t h e e s t i m a t i o n p r o c e s s
swt2 = Sigma wt Sigma wt
s v t 2 = Sigma vt Sigma vt
K = [ ( Sigma t [ 0 ] ) / ( Sigma t [ 0 ] + s v t 2 ) ]
yprime = [ 0 ]
SigmaPrime = [(1 K[ 0 ] ) ( Sigma t [ 0 ] ) ]
for i in r a n g e ( l e n ( t a x i s ) 1):
yt . append ( numpy . c o s ( t a x i s [ i ] ) )
Sigma t . append ( ( Sigma t [ i ]+ swt2 ) )
yprime . append ( yt [ i ]+K[ i ] ( a p e r t [ i ] yt [ i ] ) )
SigmaPrime . append ((1 K[ i ] ) ( Sigma t [ i + 1 ] ) )
K. append ( ( Sigma t [ i + 1 ] ) / ( Sigma t [ i +1]+ s v t 2 ) )
aKalman = yprime
vKalman = numpy . cumsum ( aKalman ) dt
sKalman = numpy . cumsum ( vKalman ) dt
Kt+1 =
2
t+1
;
2
t+1
+ v2
2
2
t+1
= (1 Kt+1 )t+1
;
(1.43)
22
2.5
2.0
1.5
1.0
0.5
0.0
-0.5
-1.0
-1.5
0
Figura 1.16: Confronto tra le funzioni a(t) (nero), v(t) (giallo), s(t) (magenta),
aKalman(t) (rosso), vKalman(t) (verde), sKalman(t) (blu), vpert(t) (dashed
verde), spert(t) (dashed blue); il filtro di Kalman ha migliorato la deriva della
seconda integrazione.
yk = Hxk + zk
(1.44)
(1.46)
(1.47)
23
le matrici:
A=
1 t
0 1
B=
t2 /2
t
H=
1 0
(1.48)
il rumore sul processo wk ha una componente per lo spazio e una per la velocit`a:
wk =
p
k
vk
(1.49)
La (1.43) diventa:
xk+1 =
pk+1
vk+1
1 t
0 1
2
pk + tvk + t2 uk + p
k
vk + tuk + vk
(1.50)
1 0 xk + zk = pk + zk .
(1.51)
xk +
t2 /2
t
uk + w k =
e la (1.44):
yk =
E(wk wkT )
=E
2
(p
p
k)
k vk
p
(vk )2
k vk
(1.52)
(1.53)
(1.54)
xk+1 = (A
xk + Buk ) + Kk (yk+1 H xk )
(1.55)
(1.56)
24
60
50
40
30
20
10
-10
0
20
40
60
80
100
Figura 1.17: Applicazione del filtro di Kalman: posizione reale (nero), posizione
calcolata dal filtro (blu), misure di posizione (crocette blu), velocit`a reale (rosso),
velocit`a calcolata dal filtro (verde). Nonostante la misura di posizione sia poco
accurata il risultato del filtro si discosta poco dalla posizione vera del veicolo.
1.2.1
Lavori analoghi
25
26
non `e stato possibile implementarlo per fare un confronto diretto con altri metodi pi`u
semplici ma che in questo contesto sembrano altrettanto efficaci.
In [14] vengono studiati e realizzati dei controllori accelerometrici destinati allinterazione con i wearable computers. In particolare sono stati realizzati una penna utile per
il puntamento, un tilt pad che rileva i movimenti di un piano utilizzabile in contesti
di mixed reality come ad esempio la cartografia 3D, e un gesture pad da portare
al polso utilizzabile, ad esempio, per la selezione di comandi tramite gesti. Per la
riduzione del rumore e lintegrazione viene usato un filtro di Kalman ma i problemi
dovuti allo spostamento naturale del bias dellaccelerometro non sono trascurabili.
Si tenta di mitigare questo problema considerando il tasso massimo di cambiamento
dellaccelerazione (che per motivi fisici `e limitato) inglobandolo nel modello del filtro;
in particolare vengono considerati due limiti diversi rispettivamente per lo stato di
quiete del sensore e per lo stato di moto (nel primo caso il rate massimo `e molto minore). In questo caso il metodo `e stato provato su un movimento di andata e ritorno
monoassiale imposto allaccelerometro manualmente e non da un braccio meccanico.
Le accelerazioni (grafico in altro a sinistra in figura 1.20) non sono cos` precise e
uniformi come quelle che hanno avuto a disposizione Liu e Pang. I risultati dellapplicazione di questo metodo sono mostrati in figura 1.20; il risultato finale `e una
precisione intorno ai 10 cm iniziale migliorata a 2.5 cm, inglobando come invariante
linclinazione massima della curva dellaccelerazione nel filtro.
27
Figura 1.20: Risultati ottenuti in [14] sottoponendo laccelerometro ad un movimento di andata e ritorno monoassiale imposto manualmente; sono a confronto
lintegrazione eseguita da un filtro di Kalman (grafico in alto a destra) e quelle ancora eseguite da un filtro di Kalman ma considerando il tasso massimo di
cambiamento dellaccelerazione nel caso di spostamenti assiali (grafico in basso).
28
Listing 1.4: Integrazione numerica per lequazione (1.67)
1 t e= [ 0 ]
2 v= [ 0 ]
3 for i in r a n g e ( 1 , nn 1):
4
v . append ( v [ i 1]+ a t [ i 1] dtg s i n ( t e [ i 1]) dt )
5
t e . append ( t e [ i 1]+(v [ i ]+v [ i 1])/2 dt )
6
v [ i ]=v [ i 1]+( a t [ i 1]g s i n ( t e [ i 1 ] ) ) dt/2+
7
( a t [ i ]g s i n ( t e [ i ] ) ) dt /2
1.3
1.3.1
Il problema della rotazione del sensore `e aggirabile nel caso di movimenti semplici, dei
quali si conosca il tipo di rotazione a cui `e soggetto laccelerometro e si sia in grado
di identificare facilmente linizio e la fine del movimento. Un esempio concreto `e la
misura di movimenti che si svolgono lungo archi di circonferenza, come il movimento
di un braccio meccanico o la flessione di un arto quali spalla e ginocchio; in questo caso
particolare i dati che forniscono informazione utile sono laccelerazione tangenziale e
radiale.
29
Il moto a cui `e sottoposto il sensore si pu`o descrivere agevolmente in termini
relazioni angolari ed `e ben approssimato dalla relazione:
(t) = 0 sin4 (t)
(1.57)
d
dt
(1.58)
d2
dvang
= 2
(1.59)
dt
dt
z Le accelerazioni tangenziale (at ) e radiale (ar ), ovvero le grandezze che si possono
di misurare direttamente, sono in relazione diretta con langolo e il raggio della
circonferenza :
d2
at = 2 = aang
(1.60)
dt
2
d
(1.61)
ar =
dt
aang =
(1.62)
(1.63)
si pu`o quindi distinguere la componente gravitazionale dal dato utile per la misura.
Per risalire alla velocit`a tangenziale si pu`o, formalmente, sfruttare lequazione della
derivata di ar :
dar
d
d d2
= g sin + 2
(1.64)
dt
dt
t dt2
d2
Ricavando 2 dalla misura di at :
dt
si ottiene infine:
d
d
dar
= 3g sin + 2 at
dt
dt
t
(1.65)
dar
d
dt
=
dt
3g sin + 2at
(1.66)
30
Questa equazione non `e adatta al calcolo, in quanto il termine al denominatore passa
da zero e la sua integrazione porta a delle instabilit`a numeriche non banali; si pu`o
per`o procedere a unintegrazione numerica diretta dellequazione del secondo ordine:
d2
g
= at sin
2
dt
con il metodo descritto nel listato 1.4, basato sul metodo di Eulero.
(1.67)
Capitolo
Il gait cycle 1 , pu`o, a fini di studio, essere considerato suddiviso in tre periodi principali:
stance (posizione);
swing (oscillazione);
double support (scambio).
Con stance si indica il periodo di tempo in cui il piede `e in contatto con il terreno,
fase che dura pi`u del 60% del tempo totale; lo swing `e il periodo in cui il piede `e
sollevato da terra e questa fase dura circa il 30% del tempo. Infine la fase di double
support si ha quando entrambi i piedi sono in contatto con il terreno, cosa che accade
due volte per ogni gait cycle; questa fase dura circa il restante 10% del tempo ma
la sua durata diminuisce con il velocizzarsi dellandatura: durante la corsa i piedi non
sono mai entrambi in contatto con il terreno contemporaneamente.
In generale, si riescono ad individuare varie fasi della camminata ben distinte nel
tempo:
1. Contatto iniziale (Initial Contact);
2. Risposta al carico (Loading Response);
3. Fermo medio (MidSTance);
4. Fermo finale (Terminal STance);
1
Con gait cycle si intende il periodo di tempo tra due eventi identici nel ciclo della camminata. Generalmente, come punto di inizio del ciclo si sceglie il contatto iniziale del piede con il
terreno.
Con gait stride si intende la distanza tra il punto iniziale di contatto di un piede ed il punto di
contatto successivo dello stesso piede, ovvero la lunghezza di un passo.
31
32
5. Preoscillazione (PreSWing );
6. Oscillazione iniziale (Initial SWing );
7. Oscillazione media (MidSWing );
8. Oscillazione finale (Terminal SWing ).
Le fasi 1,2,3,4,5 compongono il periodo di stance, mentre il periodo di swing `e essenzialmente composto dalle fasi 6,7,8. La fase 5 `e quella in cui la gamba viene preparata
dal busto alloscillazione.
Il contatto iniziale (1) `e un evento istantaneo nel tempo e si verifica quando il piede
della gamba guida tocca il terreno. Dal punto di vista del piede questo `e un evento
relativamente violento; `e quindi ragionevole supporre che possa essere facile rilevarlo
a partire dalle misure accelerometriche effettuate allaltezza della caviglia.
Durante la fase di risposta al carico (2) il piede viene gradualmente messo in contatto con il terreno ed il peso del corpo viene spostato su di esso quando il contatto
diventa completo; `e in questo momento che comincia il passo vero e proprio inteso
come movimento del corpo.
Le altre fasi consistono tutte di movimenti dolci e quindi sicuramente non semplici
da individuare in maniera precisa con gli strumenti che si hanno a disposizione. Lattenzione dovr`a quindi essere concentrata sullindividuazione del punto di contatto del
piede con il terreno e sullinizio della fase di risposta al carico la quale, dai punti
di vista spaziale e temporale, costituisce la vera fine del passo (e inizio del passo
successivo) ovvero `e la fase pi`u significativa al fine della misurazione.
2.2
2.2.1
Da ora in poi indicato come asse x, mentre lasse y `e in direzione del moto e z `e lasse
laterale.
33
20
15
10
-5
-10
-15
3000
4000
5000
6000
7000
8000
9000
Figura 2.1: Esempio di acquisizione: in rosso le accelerazioni lungo lasse cavigliaginocchio, in verde le accelerazioni in direzione del moto (perpendicolare allaltra).
Si distinguono molto chiaramente i sei passi.
volta viene definita in base al valore massimo che si rileva su questo asse. I punti
individuati in questo modo non corrispondono ancora esattamente al momento in cui
il piede `e completamente appoggiato a terra e fermo ma corrispondono al momento
in cui il tallone tocca terra. Il piede quindi deve ancora terminare la sua rotazione ma
dal segnale non si riesce ad individuare facilmente il momento in cui questo succede.
Nella pratica questo richiede un tempo breve e quasi costante (anche se cambia in
funzione della velocit`a a cui si sta camminando, ovvero della frequenza dei passi):
considerando il movimento di durata costante e scegliendo un valore ragionevole per
la durata si ottengono comunque buoni risultati.
2.2.2
tin
tin
34
35
30
25
20
15
10
5
0
5
10
15
4.5
5.5
6.5
7.5
8.5
9.5
Figura 2.2: Determinazione dei punti di appoggio (quadrati neri); nei punti segnati solo il tallone ha appena toccato terra e il piede deve ancora ruotare per
appoggiarsi completamente.
e quello sugli spazi:
tfn
tin
vx (t) dt = 0
tfn
vz (t) dt
(2.2)
tin
La posizione laterale del piede (asse z) `e soggetta ad oscillazioni da un passo allaltro, ma mediamente rimane intorno alla posizione iniziale; si ritiene sensato quindi
considerare comunque nulla loscillazione.
In generale, a causa degli errori di misura e delle successive derive delle integrazioni, indipendentemente dallasse che si stia considerando si ha una situazione del
tipo:
Z
tfn
apert (t) dt = v 6= 0
tin
e quindi anche:
Z
tfn
vcalc (t)dt =
tin
tfn
tin
(2.3)
t1 fn
t1 in
(2.4)
Il vincolo sullintegrazione pu`o essere imposto modificando la funzione da integrare; in particolare si cerca una funzione (t) tale che:
Z tfn
apert (t) + (t) dt = 0
(2.5)
tin
35
e
tfn
vcalc (t)dt =
tin
tfn
tin
t1 fn
(2.6)
t1 in
Un modo per scegliere la funzione (t) `e quello di considerarla come somma pesata
di due funzioni:
(t) = even (t) + odd (t)
(2.7)
di cui una `e pari e definita positiva e laltra `e dispari a media nulla.
Una delle coppie di funzioni che assolvono questo scopo, semplice da trattare nellintervallo [tin , tfn ] `e:
t
2 t
even = sin
,
odd = sin
(2.8)
tfn tin
tfn tin
Il coefficiente pu`o essere ricavato direttamente dallequazione:
Z tfn
apert (t) + even (t) + odd (t) dt = v
(2.9)
tin
in quanto lintegrale della funzione dispari nellintervallo [tin , tfn ] `e nullo, e conseguentemente pu`o essere ricavato dal secondo vincolo:
Z tfn Z t1 fn
apert (t) + even (t) + odd (t) dt1 dt = s.
(2.10)
tin
Si ha quindi che:
t1 in
R tfn
= R titfnn
apert (t) dt
even (t) dt
R tfn R t1 fn
R tfn R t1 fn
a
(t)
dt
dt
(2.11)
tin
(2.12)
Nelle figure 2.3 e 2.4 si vede il risultato del metodo appena descritto applicato ad
una misura reale. Nelle figure 2.5 e 2.6 invece si confronta il risultato della successiva
doppia integrazione: mentre lintegrazione del segnale originale non d`a luogo a risultati apprezzabili, lintegrazione del segnale corretto fornisce risultati apprezzabilmente
precisi.
Un limite di questo metodo subito evidente gi`a dalle prime sperimentazioni risiede
nella scelta, in parte arbitraria, del punto di fermo del piede: uno spostamento anche di soli 50 millisecondi origina risultati visibilmente diversi. Questo fatto rende
obbligatoria una scelta del punto di fermo calibrata in base alla camminata che si
sta misurando: una camminata con passi veloci ha logicamente il punto di fermo pi`u
vicino (nel tempo) allappoggio del tallone rispetto a una camminata lenta con falcate
piuttosto lunghe.
36
Nelle figure 2.7 e 2.8, 2.9 e 2.10 si mostrano i risultati che si ottengono applicando
il metodo a due acquisizioni di due camminate distinte.
` molto interessante notare, nel grafico delle velocit`a, delle oscillazioni che si veriE
ficano lungo lasse y prima della fine del passo, in corrispondenza con la fine della
fase di sollevamento del piede; queste oscillazioni sono presenti in tutte le acquisizioni
che sono state fatte, e rispecchiano una caratteristica, evidentemente presente ma
inaspettata, della camminata.
La correzione notevole che si ha come offset sullasse x `e dovuta alla rotazione della
caviglia, la quale fa s` che il sensore misuri in parte laccelerazione gravitazionale; si
noti a tal proposito che la correzione in prossimit`a dei punti di fermo `e quasi nulla.
.
37
40
30
20
10
0
10
20
30
500
1000
1500
2000
2500
60
40
20
20
40
500
1000
1500
2000
2500
38
3.5
3
2.5
2
1.5
1
0.5
0
0.5
1
1.5
0
500
1000
1500
2000
500
1000
1500
2000
2500
39
60
50
40
30
20
10
0
10
20
30
10
11
12
13
14
15
20
10
0
10
20
20
10
0
10
20
Figura 2.7: Accelerazioni e relative correzioni lungo gli assi x (blu) e y (rosso)
relative ad una camminata.
40
1.5
0.5
0.5
1.5
3.5
3
2.5
1.5
0.5
0.5
Figura 2.8: Velocit`a e spostamento lungo gli assi x (blu) e y (rosso) relative ad
una camminata. Si notano chiaramente le oscillazioni di velocit`a che avvengono
lungo lasse y subito prima che il piede raggiunga laltezza massima.
41
60
40
20
20
40
60
10
11
12
13
14
20
10
0
10
20
20
10
0
10
20
Figura 2.9: Accelerazioni e relative correzioni lungo gli assi x (blu) e y (rosso)
relative ad una camminata.
42
2.5
2
1.5
1
0.5
0
0.5
1
1.5
Figura 2.10: Velocit`a e spostamento lungo gli assi x (blu) e y (rosso) relative ad
una camminata. In questo caso le oscillazioni sullasse y sono meno marcate ma
comunque evidenti.
Capitolo
Il sistema GPS
Descrizione
Il sistema GPS (Global Positioning System) `e un apparato costituito di satelliti in
orbita e ricevitori a terra che permette allutente di localizzarsi in ogni parte del globo
terrestre. Al momento della progettazione furono decisi alcuni requisiti minimi che il
sistema deve soddisfare al fine di assicurarne lutilit`a pratica:
lerrore nella determinazione della posizione dellutente deve essere dellordine
massimo di 10-30 metri;
il sistema deve essere applicabile per la navigazione in real-time di sistemi in
movimento, anche ad alta velocit`a e manovrabilit`a;
la copertura deve essere totale su tutto il globo (compreso i poli), quindi le
orbite dei satelliti devono essere inclinate;
i segnali trasmessi devono essere tolleranti al rumore, sia intenzionale che non
(ad esempio le armoniche di un segnale in una banda vicina). Il disturbo
intenzionale dei segnali GPS `e uno dei problemi seri nelle applicazioni militari;
il sistema non deve richiedere che ogni ricevitore abbia a disposizione un orologio
ad altissima precisione come quelli basati sugli standard atomici;
il ricevitore, una volta acceso, deve essere in grado di localizzarsi in pochi minuti
(cold-start breve);
la dimensione dellantenna ricevente deve essere piccola; per questo si deve
tenere di conto dellattenuazione dei segnali nello spazio.
Questi requisiti, unitamente alla disponibilit`a delle bande di frequenza, collocano la
portante del segnale GPS nella zona bassa delle microonde, ovvero tra uno e due Ghz.
43
44
Localizzazione dellutente
Lidea che sta alla base del sistema GPS si basa sul fatto che `e possibile, dati tre punti
di riferimento nello spazio tridimensionale, conoscere la posizione relativa a questi di
un quarto punto.
Siano r1 , r2 , r3 , di coordinate rispettivamente (x1 , y1 , z1 ), (x2 , y2 , z2 ), (x3 , y3 , z3 ), i
punti di riferimento con coordinate note; si pu`o allora facilmente identificare le distanze di questi punti dal nostro punto incognito ru = (xu , yu , zu ) grazie al teorema
di Pitagora:
p
d1 = (x1 xu )2 + (y1 yu )2 + (z1 zu )2
p
d2 = (x2 xu )2 + (y2 yu )2 + (z2 zu )2
p
d3 = (x3 xu )2 + (y3 yu )2 + (z3 zu )2
(3.1)
Il segnale emesso dai satelliti permette di misurare le distanze (d1 , d2 , d3 ) nello stesso
istante di tempo (come si vedr`a in seguito); quindi si ha un sistema di tre equazioni
in tre incognite per cui esiste soluzione e che permette di localizzare il punto ru nello
spazio.
Misura delle distanze Ogni satellite emette un segnale allistante tsi che verr`a
ricevuto pi`u tardi dallutente allistante tu . Le onde elettromagnetiche viaggiano alla
velocit`a della luce e questo permette di definire la distanza dal satellite come:
diT = c(tsi tu )
(3.2)
Nella pratica `e quasi impossibile ottenere un corretto riferimento temporale dal satellite o dallutente: il tempo reale del satellite (tsi ) e quello reale dellutente (tu ) si
possono considerare legati al tempo esatto secondo le relazioni:
tsi = tsi bi
(3.3)
tu = tu but
(3.4)
dove bi `e lerrore sullorologio del satellite mentre but `e lerrore dellorologio del
ricevitore, espresso sotto forma di bias.
Oltre agli errori di tempo ci sono altri fattori che influenzano la misura della distanza,
quali:
leffetto dellerrore sulla posizione del satellite nella misura (Di );
lerrore di ritardo dovuto alla troposfera (Ti );
lerrore di ritardo dovuto alla ionosfera (Ii );
lerrore di misura del ricevitore dovuto al rumore (i );
45
la correzione relativistica dei tempi (i ).
La distanza dal satellite (chiamata pseudorange) deve quindi essere espressa come:
di = diT + Di c(bi but ) + c(Ti + Ii + i + i ).
(3.5)
Alcuni di questi errori posso essere corretti: il ritardo troposferico ad esempio pu`o
essere modellato, mentre quello ionosferico pu`o essere corretto con un ricevitore
multifrequenza.
Il tempo reale del ricevitore rimane per`o unincognita; il sistema di distanze, affinche
abbia soluzione, deve essere espanso a quattro equazioni:
p
d1 = (x1 xu )2 + (y1 yu )2 + (z1 zu )2 + bu
p
d2 = (x2 xu )2 + (y2 yu )2 + (z2 zu )2 + bu
p
d3 = (x3 xu )2 + (y3 yu )2 + (z3 zu )2 + bu
p
(3.6)
d4 = (x4 xu )2 + (y4 yu )2 + (z4 zu )2 + bu
dove bu `e lerrore di bias sul tempo dellutente espresso in distanza, che vale bu = cbut .
Sono quindi necessari almeno quattro satelliti per poter calcolare la posizione attuale
dellutilizzatore.
(3.7)
(3.8)
r 2 +C
rr
(3.9)
46
che `e risolvibile in questa forma:
2
d1 (x21 + y12 + z12 ) r2
d22 (x22 + y22 + z22 ) r2
2
d3 (x23 + y32 + z32 ) r2 =
d24 (x24 + y42 + z42 ) r2
2x1
2x2
2x3
2x4
2y1
2y2
2y3
2y4
2z1
2z2
2z3
2z4
1
X
1 Y
1 Z
1
Crr
(3.10)
(x X)(
x X)
y Y ) + (z Z)(
z Z)
d =
d
(3.11)
d1 +
d2 +
d3 +
1
d1
1
d2
1
d3
y1 Y
d1
y2 Y
d2
y3 Y
d3
Y
Y
Y
z1 Z
Z
d1
z2 Z
Z
d2
z3 Z
Z
d3
X
Y
Z
(3.13)
47
la latitudine:
z
p u
x2u + x2u
Lc = tan1
la longitudine:
l = tan
yu
xu
(3.15)
(3.16)
e infine laltitudine:
h = r re
(3.17)
48
Segnali Ogni satellite trasporta quattro orologi atomici, due al cesio e due al rubidio, che forniscono le informazioni di temporizzazione necessarie alla trasmissione dei
segnali.
` in funzione un sistema di correzione automatica degli orologi assistito dalle stazioni
E
di controllo a terra, che effettua correzioni periodiche. I satelliti trasmettono due
segnali (L1 , L2 ), il primo con portante a f1 = 1, 57543 Ghz e laltro f2 = 1, 2276
Ghz, che sono multipli interi di una frequenza base comune di f0 = 1023 Mhz
(f1 = 1540f0 , f2 = 1200f0 ). Entrambi trasmettono un segnale codificato in BPSK
(binary phase shift keying ); il primo `e modulato da due pseudorandom codes (PRN),
laltro solo dal secondo PRN. Il segnale L1 viene trasmesso a un livello minimo di
478.63W (26,8dBW) EIRP (Effective Isotropic Radiated Power ), il che significa che il
ricevitore a terra riceve un segnale equivalente a quello che avrebbe ricevuto se fosse
stato trasmesso da unantenna isotropica a quella potenza.
In realt`a viene emessa una potenza minore su un cono con angolo al vertice di circa
30 diretto verso la Terra. Il segnale, mentre si propaga verso la Terra, perde densit`a
di potenza a causa della propagazione sferica.
La perdita pu`o essere quantificata con il free-space loss factor (FSLF):
2
F LSF =
(3.18)
4R
dove `e la lunghezza donda del segnale e R la distanza dallantenna.
Il FSLF indica la densit`a frazionaria di potenza ad una distanza di R metri dallantenna
comparata col valore normalizzato unitario /4 metri dal centro di fase dellantenna.
Considerando quindi un satellite in orbita a 2 107 m di quota e un segnale con
lunghezza donda = 0.19m, il FSLF vale 5.7 1019 , ovvero 182.4dB.
Effetto Doppler Allatto della ricezione del segnale da parte dellutilizzatore si
presenta un altro problema: la frequenza a cui i segnali arrivano non `e la stessa a
cui sono stati emessi; essa viene percepita aumentata o diminuita a seconda che il
satellite si stia avvicinando oppure allontanando. Occorre quindi che il ricevitore sia in
grado di aggiustare la propria frequenza di ricezione in funzione di questa situazione.
La velocit`a angolare del satellite pu`o essere calcolata facilmente sapendo il tempo
esatto di rivoluzione:
d
2
=
= 1, 458 104 rad/s
(3.19)
dt
11 3600 + 58 60 + 2, 05
e la velocit`a periferica:
rs d
= 26560km 1, 458 104 = 3874m/s
(3.20)
dt
Leffetto Doppler `e causato dalla velocit`a periferica del satellite rispetto allutente,
che, riferendosi alla figura 3.1, vale:
vs =
vd = vs sin.
(3.21)
49
50
Esprimendo la velocit`a in termini di angolo , utilizzando il teorema di Pitagora:
2 = re2 + rs2 2re rs cos = re2 + rs2 2re rs sin
AS
(3.22)
quindi:
sin
sin
re
=
= .
sin
cos
AS
Utilizzando questultimo risultato allinterno della 3.21:
vd =
vs re cos
vs re cos
=p
AS
re2 + rs2 2re rs sin
(3.23)
(3.24)
Questa velocit`a pu`o essere disegnata al variare di come si vede in figura 3.2.
Quando il satellite `e allo zenit rispetto allutente, la componente della velocit`a che
causa leffetto Doppler `e zero.
Langolo in cui leffetto Doppler `e massimo si pu`o trovare derivando vd rispetto
allangolo , trovando il massimo della funzione vd , che risulta essere:
re
sin =
, 0.242rad
(3.25)
rs
Per questo valore di il satellite risulta essere allorizzonte della visuale dellutente.
Con questi dati possiamo calcolare la velocit`a massima di Doppler vdm , che lungo la
direzione orizzontale vale:
vdm =
3874 6368
v s re
=
929m/s
rs
26560
(3.26)
che `e una velocit`a piuttosto elevata. Lo spostamento di frequenza risulta valere, nel
caso del segnale L1 :
fd1 =
f1 vdm
1575.43 929
=
4.9kHz
c
3 108
(3.27)
51
trasmesso, pu`o ritenersi sostanzialmente esente da errori: gli orologi a bordo hanno
una precisione superiore al nanosecondo (un secondo `e definito come la durata di
9.192.631.770 periodi della radiazione corrispondente alla transizione tra due livelli
iperfini dello stato fondamentale dellatomo di cesio-133), e un segnale radio in un
nanosecondo percorre circa: 3 108 1 109 = 3 101 metri, che `e un errore
pi`u che accettabile.
I ricevitori a terra presentano invece problemi aggiuntivi: non `e pensabile utilizzare
un orologio atomico in ricezione, che `e pesante, voluminoso e molto costoso; bisogna
quindi accontentarsi di orologi meno precisi. Fino a quale precisione si pu`o scendere?
Un orologio con precisione al microsecondo risulterebbe quasi inutile, in quanto in
questo caso lerrore salirebbe a circa 3 108 1 106 = 3 102 metri. Per
ottenere un errore nellordine del metro ci vuole una precisione che arrivi almeno a
1/(3 108 ) = 0.4 108 secondi.
Lerrore di bias sulla sincronizzazione non `e problematico quando si hanno a disposizione i segnali di quattro satelliti (ovvero il sistema 3.9 ha soluzione esatta); bisogna
invece porre particolare attenzione ad altri fattori, quali la risoluzione, la marcia e la
deriva.
Per marcia si intende la differenza di velocit`a rispetto a un altro orologio, ovvero il
numero di secondi che guadagna o perde ogni giorno; per deriva si intende la stabilit`a
nel tempo della marcia. Nel caso di un ricevitore GPS lerrore di marcia `e compensabile insieme a quello di bias (tutti i satelliti hanno uno stesso errore costante sulla
misura del tempo e lerrore di marcia va quindi a sommarsi allerrore di bias), mentre
quello di deriva `e pi`u deleterio in quanto aggiunge un fattore che varia casualmente
in base alle condizioni di lavoro istantanee.
Gli effetti della relativit`
a
postulati fondamentali:
52
luce compie una
p traiettoria obliqua, quindi la distanza tra lemettitore e lo specchio
vale l2 =
(l)2 + (x/2)2 dove x indica lo spostamento longitudinale del
treno rispetto allosservatore, e chiaramente l2 `e maggiore di l. La velocit`a della
luce `e per`o costante per tutti e due i sistemi di riferimento, quindi nel secondo
sistema lesperimento deve durare un tempo t2 = 2l2 /c > t. Considerando che
x = vt, dove v `e la velocit`a a cui si muove il treno, si ottiene:
s
r
p
2 (l)2 + (x/2)2
(vt2 )2
(l)2 v 2 t22
l
1
+
t2 =
=2
+
=
2
c
c2
4c2
c
4(l)2
s
(vt2 )2
= t 1 +
=
(ct)2
c2 t2 + v 2 t22
t
=r
v 2
2
c
1
c
(3.28)
ovvero losservatore fermo percepisce levento con una durata dilatata in funzione
della velocit`a a cui si muove laltro sistema. Se si moltiplica la 3.28 per c si ottiene:
s
s2 = r
v 2
1
c
(3.29)
dove s e s2 sono i tratti percorsi dalla luce nei due sistemi di riferimento. Questo
risultato indica che, insieme ai tempi, si dilatano anche le lunghezze.
Si consideri adesso un segnale elettromagnetico, per il quale vale la relazione
c = f . Grazie allequazione 3.29 sappiamo che pu`o risultare diverso a seconda
del sistema di riferimento; se si pone = s e 2 = s2 si ottiene:
2 = r
v 2
1
c
e dividendo per c:
f2 = f
v 2
c
(3.30)
(3.31)
ovvero il sistema fermo riceve un segnale a una frequenza pi`u alta di quella emessa
nel sistema in movimento.
Se si considerano velocit`a piccole rispetto a quella della luce si posso utilizzare le
espansioni in serie di Taylor:
1 v 2
1
r
v 2 = 1 + 2 c +
1
c
(3.32)
53
r
v 2
c
=1
1 v 2
+
2 c
(3.33)
(3.35)
(3.36)
Gli effetti della relativit`a sul sistema GPS non possono essere ignorati a causa
dellelevata velocit`a periferica dei satelliti, della differenza di campo gravitazionale
non trascurabile e della rotazione della Terra. Per studiarne gli effetti generalmente si
considera come sistema di riferimento quello stazionario con centro coincidente con
il centro della Terra.
Leffetto diretto pi`u importante che si riscontra `e lo spostamento delle frequenze
dovuto alla velocit`a relativa tra i satelliti e il ricevitore ed al campo gravitazionale
terrestre.
La frequenza percepita dallutente (f2 ) `e quindi diversa da quella trasmessa dal satellite (f ); per questo motivo occorre correggere il segnale emesso dal satellite affinche
lutente percepisca la frequenza di 1023MHz come da specifica.
` noto che:
E
f2 f
1 v 2 U
=
(3.37)
2
f
2 c
c
dove v `e la velocit`a del satellite e U la differenza di potenziale gravitazionale tra la
quota dellutente e quella del satellite.
Si pu`o quindi esprimere il potenziale gravitazionale come:
g
g
U =
(3.38)
(R + H) R
dove R 6370km `e il raggio della Terra, H 20200km laltitudine del satellite
(rispetto al suolo) e g la costante gravitazionale terrestre.
Il satellite deve quindi trasmettere a una frequenza pari a 1023 4.57 109 MHz.
Anche il ricevitore deve per`o calcolare il proprio offset di frequenza allo stesso modo,
considerando il campo gravitazionale nullo e velocit`a pari a quella periferica della
Terra.
54
3.2
55
In figura 3.3 viene mostrato il ruolo proposto per il filtro di Kalman allinterno del
sistema di processamento dei dati.
Sono particolarmente interessanti le due formulazioni che vengono proposte per le
equazioni di aggiornamento e previsione del filtro di Kalman, da applicarsi nei casi in
cui:
1. La frequenza di acquisizione del GPS e degli accelerometri sia la stessa;
2. Gli accelerometri abbiano una frequenza di acquisizione multiplo intero di quella
del GPS;
Il punto 2 `e molto interessante ai fini pratici dal momento che la maggior velocit`a di
acquisizione da parte dei sensori accelerometri rispetto ai sistemi satellitari `e realt`a
tecnologica.
In conclusione `e stato proposto un sistema che preprocessa gli aspetti non lineari
delle acquisizioni GPS e accelerometriche prima di integrarle in un filtro di Kalman;
il preprocessing consente di ridurre considerevolmente le dimensioni delle matrici in
gioco e quindi ottenere una buona efficienza computazionale, anche se una precisione
leggermente ridotta rispetto allutilizzo diretto di un filtro di Kalman che gestisca sia
le non-linearit`a che lintegrazione contemporaneamente.
In [9] viene proposto un sistema per il posizionamento di persone attraverso un
sistema combinato con GPS e accelerometri. Le accelerazioni vengono misurate posizionando il sensore sul torace o sulla schiena: in questo contesto laccelerometro
non viene usato per misurare direttamente la lunghezza del passo, ma i dati accelerometrici vengono usati per stimare il tempo di volo del piede e misurare la frequenza
dei passi; in base a questi due parametri viene proposto un modello per stimare la
lunghezza della camminata allinterno di un filtro di Kalman che si occupa di integrare
questi dati con i posizionamenti dal GPS. La strategia per il posizionamento proposta
consiste nei seguenti passi:
1. Misura approssimata della lunghezza del passo a partire dalla misure di lunghezza del GPS e dal numero di passi contati con le misure accelerometriche;
2. Calcolo della lunghezza del passo con la procedura di previsione;
3. Applicazione del filtro di Kalman;
4. Aggiornamento dei parametri del filtro;
5. Correzione della misura.
In conclusione questo sistema `e in grado di migliorare le misure satellitari, ovvero
fornire misure parziali tra un posizionamento GPS e laltro e correggere parzialmente
eventuali vuoti radio temporanei, fino ad ottenere un errore sulla distanza percorsa
56
finale nellordine del 2%.
In [15] viene presentata una valutazione dellutilizzo di ricevitori GPS differenziali
per la misurazione di una camminata. I risultati mostrati sono molto incoraggianti:
nonostante la frequenza di campionamento relativamente bassa la posizione del piede
viene individuata con precisione.
Questo suggerisce la possibilit`a concreta di apportare correzioni efficaci al metodo
proposto nel capitolo 2 imponendo, con lo stesso metodo di correzione utilizzato per
correggere la misura dellalzata, la posizione giusta sullasse in direzione del moto.
Conclusioni
58
` stato fatto uno studio del funzionamento del sistema per capirne le potenziali perE
formance e scoprirne i principali problemi: limitatamente a contesti particolari, quali
spazi aperti o spazi chiusi in presenza di apparecchiature specifiche, questo sistema
sembra essere adatto allo scopo.
In letteratura si trovano molte proposte di tecniche per accoppiare sistemi GPS a
misure accelerometriche, ma quasi tutte hanno il fine, diverso da quello di questo
lavoro, di migliorare la misura del GPS usando i segnali accelerometrici.
Non `e stato possibile effettuare sperimentazioni significative con questi sistemi: i
ricevitori GPS in commercio per il mercato consumer sono (sperimentalmente) decisamente poco precisi (benche siano sufficientemente precisi per svolgere un tracciamento praticamente utile di un autoveicolo, gli errori nellordine del metro sono
ovviamente troppo grandi per misurare dei passi); in commercio esistono dei ricevitori
che promettono precisioni nellordine del centimetro, ma si sono rivelati economicamente inarrivabili per poter essere acquistati e sperimentati in questo contesto.
Appendice
DataCollector
Lacquisizione in tempo reale dei dati via bluetooth `e delegata a un semplice modulo
software implementato appositamente per questo scopo: la classe DataCollector.
Lidea che sta alla base di questa classe `e molto semplice; un DataCollector `e un
oggetto che:
59
60
mantiene i parametri relativi alla comunicazione seriale (baud rate, flow control,
porte, etc.);
fornisce due metodi per lapertura e la chiusura della comunicazione seriale;
permette di scartare o memorizzare in una coda i dati che arrivano mentre la
comunicazione `e aperta;
memorizza i dati in blocchi di dimensione arbitraria;
fornisce i metodi per prelevare il primo elemento della coda (bloccante in attesa
dei dati se la coda `e vuota) e per scartare tutti i dati in coda.
Di seguito una breve descrizione dellinterfaccia fornita:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class DataCollector :
def c o n n e c t T o D e v i c e ( s e l f , p o r t , b a u d r a t e ) :
#Apre i l c a n a l e s e r i a l e v e r s o l a p o r t a s p e c i f i c a t a .
#Su l i n u x , ad esempio , / dev / rfcomm0 .
def d i s c o n n e c t F r o m D e v i c e ( s e l f ) :
#C h i u d e i l c a n a l e s e r i a l e .
def s t a r t R e c o r d i n g D a t a ( s e l f ) :
#I n i z i a a r e g i s t r a r e i d a t i i n v e c e d i s c a r t a r l i .
def s t o p R e c o r d i n g D a t a ( s e l f ) :
#Smette d i r e g i s t r a r e i d a t i ed i n i z i a a s c a r t a r l i .
def g e t C o n n e c t i o n S t a t u s ( s e l f ) :
#D i c e s e i l c a n a l e `e c h i u s o o a p e r t o , r e s t i t u i s c e un b o o l
def s e t D a t a P a c k e t S i z e ( s e l f , s i z e ) :
#I m p o s t a l a d i m e n s i o n e d e l b l o c c o d a t i p e r l accodamento
def g e t D a t a P a c k e t ( s e l f ) :
#T o g l i e un p a c c h e t t o d i d a t i d a l l a coda s e c `e e l o
#r e s t i t u i s c e , a l t r i m e n t i s i b l o c c a i n a t t e s a d e l p r o s s i m o
#p a c c h e t t o .
def dropDataQueue ( s e l f ) :
#S v u o t a l a coda .
61
MathMethod
Il calcolo effettivo della posizione dellaccelerometro nelle tre dimensioni `e delegata a
una qualsiasi istanza della classe Method. Questa classe svolge una funzione di calcolo
semi-realtime, nel senso che ha sempre in memoria tutti i dati che gli sono stati
passati con il metodo compute, ma `e libera di calcolare i dati relativi allaccelerazione
e allo spazio indietro nel tempo a discrezione del metodo matematico utilizzato, a
condizione che la lunghezza degli array dei dati sia sempre consistente.
Di seguito una breve descrizione dellinterfaccia fornita:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
c l a s s Method :
def s e t D a t a P a c k e t S i z e ( s e l f , ps ) :
#I m p o s t a l a d i m e n s i o n e d e i p a c c h e t t i d i d a t i
def s e t S a m p l e s L i m i t ( s e l f , s l ) :
# I l numero massimo d i d a t i da t e n e r e i n memoria
def c a l i b r a t e O f f s e t s ( s e l f , AX, AY, AZ ) :
#C a l i b r a l o f f s e t s u i t r e a s s i a p a r t i r e da un numero
#a r b i t r a r i o d i p a c c h e t t i d i d a t i
def compute ( s e l f , aX , aY , aZ ) :
#A g g i u n g e a l c a l c o l o un nuovo p a c c h e t t o d i d a t i
def getComputedData ( s e l f ) :
#R e s t i t u i s c e g l i a r r a y con i d a t i c a l c o l a t i
Locator
Questa classe `e nata come collante tra il metodo matematico, linterfaccia seriale
e lutente: mentre queste ultime due difficilmente saranno soggette a cambiamenti,
Locator `e pensata per essere plasmata in base allo scopo ultimo dellapplicazione.
In questa implementazione ci si limita a offrire la possibilit`a di salvare e leggere da
file i dati accelerometrici grezzi, e di disegnare su grafico o in 3D tramite OpenGL il
risultato dellelaborazione del metodo.
` stata implementata anche DoubleLocator, che si avvale di due DataCollector e due
E
Method per acquisire e processare i dati di due accelerometri contemporaneamente
al fine di studiare una camminata completa.
62
Appendice
63
64
Parameter
Test Condition
Acceleration Range
Sensitivity
Full Scale = 6 g
Sensitivity change vs temp. Delta from +25 C
Zero-g lev. change vs temp. Delta from +25 C
Operating temp. range
Min
Typ
Max
5.4
6.0
Vdd/15 10 Vdd/15 Vdd/5 + 10
0.01
0.8
40
+85
65
Tempo di campionamento Numero misure Byte ricevuti
1 sec
32
3761.97
10 sec
15
37817.8
100 sec
32
378722.0
0 g 1 g 1 g
139 156 120
143 160 126
140 157 121
2 g in digits
+6 g
6 g
risoluzione
36
139+18*6=247 139-18*6=31
0.0597
34
143+17*6=245 143-17*6=41
0.0555
36
140+18*6=248 140-18*6=32
0.0555
B.1
B.1.1
Misure sperimentali
Velocit`
a di campionamento
Sono stati eseguiti dei test per valutare la reale velocit`a di acquisizione (tabella B.2).
Laccelerometro esegue circa 947 campionamenti al secondo; le fluttuazioni della tabella sono dovute alla temporizzazione non perfetta, conseguenza diretta dellimplementazione multithreading, che ha un effetto rilevante sui campionamenti di durata
breve.
B.1.2
Scala e risoluzione
66
Ringraziamenti
67
68
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
1.15
1.16
1.17
1.18
1.19
1.20
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
5
6
7
8
9
10
11
12
13
15
15
16
19
20
22
24
25
26
27
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
Esempio di acquisizione . . . . . . . . . . .
Punti di appoggio . . . . . . . . . . . . . .
Correzione dellaccelerazione (x) . . . . . . .
Correzione dellaccelerazione (y) . . . . . . .
Correzione dello spostamento (x) . . . . . .
Correzione dello spostamento(y) . . . . . . .
Camminata veloce, accelerazioni . . . . . . .
Camminata veloce, velocit`a e spostamento .
Camminata normale, accelerazioni . . . . . .
Camminata normale, velocit`a e spostamento
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
34
37
37
38
38
39
40
41
42
69
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
70
3.1
3.2
3.3
49
49
54
62
62
64
71
64
65
65
72
Bibliografia
74
[10] M. H. Goldwasser; D. Letscher.
Paperback.
[11] Honghui Qi; John B. Moore. A Direct Kalman Filtering Approach for GPS/INS
Integration.
[12] T. E. Oliphant. Guide to NumPy. 2006.
[13] H.Liu; G. Pang. Accelerometer for Mobile Robot Positioning. The University of
Hong Kong, 1999.
[14] A. D. Cheok; K. G. Kumar; S. Prince. Micro-Accelerometer based Hardware
Interfaces for Wearable Computer Mixed Reality Applications. Proceedings of
the 6th International Symposium on Wearable Computers (ISWC02), 2002.
[15] P. Terrier; Q. Ladetto; Bertrand Merminod; Y. Schutz. High-precision satellite positioning system as a new tool to study the biomechanics of human
locomotion. Journal of Biomechanics 33 (2000) 1717-1722, 2000.
[16] D. Simon. Kalman Filtering. Embedded System Programming, June 2001, 2001.
[17] J. Bao; Y. Tsui. Fundamentals of Global Positioning System Receivers. John
Wiley & Sons, Inc., 2005.
[18] R. M. Wald. General Relativity. The University of Chicago Press, London, 1984.
[19] D. Halliday; R. Resnick; J. Walker. Fundamentals of Physics. John Wiley &
Sons, Inc., 2005.
[20] M. Welling. The Kalman Filter. California Institute of Technology.