Monitoraggio del comfort vibrazionale secondo la ISO 2631

UNIVERSITÀ DEGLI STUDI DI ROMA
TOR VERGATA
FACOLTÀ DI INGEGNERIA
Corso di Laurea Triennale in Ingegneria Meccanica
a.a. 2010/2011
Tesi di Laurea
monitoraggio del comfort vibrazionale secondo la ISO 2631:
progetto e realizzazione di un dispositivo low cost con impostazione e
validazione di un modello predittivo in funzione delle caratteristiche
antropometriche dell'uomo
RELATORE
Prof. Ettore Pennestrì
CORRELATORI
Ing. Daniele Carnevale
Ing. Lorenzo Mariti
CANDIDATO
Guido Carbini
Ai miei Genitori
Indice
Introduzione
1
1
3
Comfort vibrazionale
1.1 Introduzione…………………………………………………………………………………………………….. 3
1.2 Vibrazioni trasmesse al corpo umano……………………………………………………………. 4
1.3 Come affrontare il problema………………………………………………………………………….. 6
2
ISO 2631
11
2.1 Introduzione………………………………………………………………………………………………….. 11
2.2 Scopo e campo di applicazione……………………………………………………………………. 13
2.3 Misurazione delle vibrazioni………………………………………………………………………… 13
2.4 Valutazione delle vibrazioni……………………………………………………………………....... 15
2.4.1 Ponderazione in frequenza…………………………………………………………………… 15
2.4.2 Metodo base………………………………………………………………………………………… 16
2.4.3 Metodo degli rms costanti…………………………………………………………………….16
2.4.4 Metodo della quarta potenza della dose delle vibrazioni……………………… 17
2.4.5 Combinazione delle vibrazioni in più di una direzione………………………….. 17
2.4.6 Uso dell’accelerazione quadratica media (r.m.s.) ponderata……………….. 18
2.4.7 Considerazioni sulla salute…………………………………………………………………… 20
2.4.8 Decreto legislativo n°187……………………………………………………………………… 21
I
INDICE
3
Acquisizione dei dati
23
3.1 Strumenti……………………………………………………………………………………………………….. 23
3.1.1 Accelerometro……………………………………………………………………………………… 24
3.1.2 Dispositivo GPS……………………………………………………………………………………..26
3.1.3 Apparecchiatura Professionale…………………………………………………………….. 28
3.2 Funzionamento Software……………………………………………………………………………… 29
3.2.1 Parametri da impostare da input…………………………………………………………. 29
3.2.2 Setup……………………………………………………………………………………………………. 30
3.2.3 Acquisizione dati………………………………………………………………………………….. 34
3.2.4 Indice rms…………………………………………………………………………………………….. 35
3.2.5 Chiusura e riconfigurazione………………………………………………………………….. 39
3.3 Analisi su strada…………………………………………………………………………………………….. 40
3.3.1 Percorso urbano…………………………………………………………………………………… 41
3.3.2 Percorso extraurbano…………………………………………………………………………… 42
3.3.3 Percorso autostradale………………………………………………………………………….. 43
3.3.4 Conclusioni…………………………………………………………………………………………… 44
4
Analisi dei dati
45
4.1 Introduzione………………………………………………………………………………………………….. 45
4.1.1 Problemi riscontrati……………………………………………………………………………… 47
4.1.2 Limiti della FFT…………………………………………………………………………………….. 50
4.1.3 Tracciato per il test………………………………………………………………………………. 51
4.2 Campagna sperimentale………………………………………………………………………………. 52
4.3 Elaborazione dati…………………………………………………………………………………………… 54
4.3.1 Filtraggio del segnale………………………………………………………………………….54
4.3.2 Analisi Wavelet……………………………………………………………………………………57
4.3.3 Identificazione della fdt…………………………………………………………………….. 63
II
INDICE
5
Correlazione
67
5.1 Introduzione………………………………………………………………………………………………….. 67
5.2 Acquisizione dei dati………………………………………………………………………………………… 68
5.2.1 Dati dei tester…………………………………………………………………………………….. 68
5.2.2 Database dei coefficienti della funzione di trasferimento……………… 70
5.3 Correlazione……………………………………………………………………………………………………. 71
5.4 Equazione Simbolica………………………………………………………………………………………. 74
5.5 Esempio Numerico………………………………………………………………………………….. 78
Conclusioni
80
Appendice A: Codice dei programmi
84
A.1
Acquisizione dei dati sperimentali…………………………………………………………………. 84
A.2
Analisi dei dati sperimentali………………………………………………………………………….. 97
A.3
Identificazione del modello lineare……………………………………………………………… 104
A.4
Database…………………………………………………………………………………………………….. 110
Riferimenti bibliografici
135
Siti Web consultati
137
Elenco delle figure
139
Elenco delle tabelle
143
Ringraziamenti
145
III
Abstract
Lo studio compiuto nell'ambito di questa tesi consiste in quattro principali obiettivi:
creare una strumentazione e una metodica per la misurazione delle vibrazioni
come previsto dalla ISO 2631;
identificare un modello matematico di impronta black-box che descriva la risposta
di un passeggero in un veicolo soggetto a vibrazioni in funzione delle
caratteristiche antropometriche della persona;
creare un database di funzioni di trasferimento STH attraverso il quale
parametrizzare i coefficienti della STH in base ai fattori antropometrici significativi
per la risposta alle vibrazioni del corpo umano;
creare un database dei coefficienti
per ogni coefficiente della STH.
Dopo una parte introduttiva sul comfort vibrazionale e una parte descrittiva della
normativa italiana e del decreto legislativo n°187, viene illustrata la parte strumentale per
le misurazioni sperimentali ed il relativo funzionamento. Vengono in seguito presentate, a
titolo di esempio, delle analisi condotte su strade pubbliche all'interno di un veicolo, e
confrontate rispettivamente con i livelli limite di riferimento imposti dal decreto.
Nella seconda parte si è cercato di identificare un modello matematico, una funzione di
trasferimento del corpo umano, per meglio comprendere la dose di vibrazioni
effettivamente assorbita da una persona. Viene quindi descritta la prassi sperimentale per
l'acquisizione dei dati e le elaborazioni successive effettuate tramite Matlab per
individuare il modello più consono al reale comportamento del sistema uomo-veicolo.
Attraverso l’esecuzione di numerose prove sperimentali, utilizzando persone con
caratteristiche antropometriche differenti, creiamo un database di funzioni di
trasferimento del corpo umano e un database dei coefficienti
per ogni coefficiente
della STH con lo scopo di determinare un modello predittivo per lo studio del comfort
vibrazionale che sia in funzione delle caratteristiche antropometriche della persona.
Introduzione
“Meglio vivere osando che
non conoscere né vittoria né
sconfitta”
Giulio Cesare
Questo lavoro di tesi è finalizzato a riassumere i contenuti sviluppati nel corso del mio
lavoro di ricerca in Monitoraggio del Comfort Vibrazionale secondo la ISO 2631 [6]:
progetto e realizzazione di un dispositivo low cost con impostazione e validazione di un
modello predittivo in funzione delle caratteristiche antropometriche1 dell'uomo presso
l’Università degli Studi di Roma Tor Vergata.
In particolare, questa attività di ricerca si è concentrata sulla realizzazione di un database
della funzione di trasferimento STH (e quindi dell’accelerazione media r.m.s. ponderata in
frequenza) in funzione delle proprietà antropometriche delle persone.
La motivazione che mi ha portato ad intraprendere uno studio del comfort vibrazionale, al
fine di fornire uno strumento di calcolo previsionale, è stata principalmente quella, oltre
ovviamente alla passione per l’argomento, di voler vedere fondere insieme più campi di
ricerca. Infatti, problemi dell’ingegneria meccanica, della medicina, di legislazione,
dell’elettronica, di ergonomia e della teoria del controllo si fondono. È proprio questo il
punto interessante. Non è possibile guardare ad un problema, qualunque esso sia, solo da
1
Branca dell’antropologia che studia statisticamente i caratteri fisici umani
1
Introduzione
un lato. Se si vuole proporre una soluzione veramente vincente, bisogna affrontarlo
contemporaneamente da diversi punti di vista.
L’esposizione del lavoro si articolerà in quattro capitoli. Inizialmente si focalizzerà
l’attenzione sul problema del comfort vibrazionale e si illustreranno le normative vigenti a
riguardo; poi si illustrerà la metodologia e gli strumenti adottati per perseguire l’obiettivo,
descrivendo i modelli matematici proposti, e quindi si descriveranno le prove sperimentali
e si concluderà commentando i risultati ottenuti.
2
Capitolo 1
Comfort Vibrazionale
“Abituati a considerare con estrema
attenzione le parole degli altri, e per
quanto puoi entra nell'anima di chi
sta parlando”
Marco Aurelio
1.1 Introduzione
Il problema della trasmissione delle vibrazioni da un autoveicolo, o più in generale da un
mezzo di lavoro, al corpo umano è, da un paio di decenni, al centro di studi e ricerche
rivolte all’individuazione delle problematiche connesse all’esposizione umana a tali
sollecitazioni. Al centro degli studi finora compiuti ci sono non solo le valutazioni mediche
relative ai danni al fisico dovuti all’esposizione, ma anche tentativi di modellazione, sia
meccanica che matematica, atti alla valutazione indiretta delle sollecitazioni trasmesse
dal piano stradale al sedile e, dunque, all'individuo.
Lo studio biodinamico sugli esseri umani nasce nel 1918 con Hamilton il quale analizzò gli
effetti delle vibrazioni sui lavoratori di una cava: attraverso prove sperimentali, mostrò
che il corpo umano riceveva fastidio e, in un certo senso, veniva danneggiato dalle
vibrazioni stesse, ovvero ne risentiva la salute del soggetto stesso. Ulteriori ricerche
3
Capitolo 1
Comfort Vibrazionale
hanno confermato l'esistenza di una maggiore probabilità di accusare dolori lombari per i
guidatori di veicoli rispetto agli impiegati d'ufficio. Tuttavia, a causa della tendenza degli
esseri umani a “viaggiare”, la sensibilità degli individui si sta spostando verso una
maggiore attenzione a questo problema [2][7][8].
1.2 Vibrazioni trasmesse al corpo umano
La misurazione delle vibrazioni è un argomento di sentito interesse da parte soprattutto
di aziende che espongono i propri dipendenti a WBV, Whole Body Vibration. La WBV è un
fenomeno che porta l'intero corpo umano a vibrare e non esistono particolari punti locali.
Quindi in funzione delle proprietà antropometriche della persona, dell'ampiezza e della
frequenza delle vibrazioni, gli effetti biodinamici sull'organismo possono essere molto
complessi; i maggiori danni sono causati dalle frequenze della WBV vicine alle frequenze
di risonanza delle varie parti del corpo.
La Whole Body Vibration si genera quando un corpo è posto a contatto con una sorgente
vibrante. Contrariamente a quanto accade nella Local Vibration (vibrazione locale) in cui
una o più parti del corpo umano (testa, braccia, busto) sono esposte alla vibrazione, la
WBV interessa l'intero corpo e provoca dunque effetti che si trasmettono all’interno
dell’individuo. Il termine stesso di Whole Body Vibration implica che l’intero corpo è
sottoposto alla vibrazione e agli effetti della stessa. Sono molti gli ambienti che possono
provocare la WBV: tra questi, tutti i mezzi di trasporto, sia su strada che su rotaia, che in
aria e in acqua, molti mezzi operativi e addirittura alcune strutture edili. Il corpo umano è
molto sensibile al movimento: la natura della vibrazione, le caratteristiche
antropometriche delle persone e gli effetti della vibrazione stessa possono cambiare
radicalmente a seconda dell'ambiente in cui ci si trova. Queste tre aree di variabilità
contribuiscono sensibilmente al modello causa-effetto della risposta umana alla
4
Capitolo 1
Comfort Vibrazionale
vibrazione impressa. Sono diversi gli aspetti di interesse del problema: dalla risposta
biodinamica del corpo umano alla risposta dinamica del sedile e dunque alla possibilità di
smorzare le vibrazioni trasmesse, agli effetti sulla salute.
La conoscenza di come la vibrazione è trasmessa dal e attraverso il corpo umano può dare
un importante contributo alla comprensione della risposta umana alla Whole Body
Vibration. Esistono alcuni range critici di frequenza per ogni parte del corpo (occhi, spalle,
testa, collo e spina dorsale). Per ciò che riguarda le vibrazioni in un veicolo possiamo
affermare che l’intervallo di interesse (e quello che viene generalmente misurato) è
quello compreso tra 0,5 e 5
. È stato dimostrato [2] che i sedili possiedono bassi valori
di risonanza e che, dunque, amplificano gli effetti della vibrazione per frequenze inferiori
ai 10
. È necessario, inoltre, determinare un peso ad ogni componente del movimento
a seconda degli effetti provocati sul passeggero. La ISO 2631 ha fornito un metodo
generale per la misurazione degli effetti di vibrazioni comprese tra 1 e 80
sul corpo
umano. Sono stati studiati gli effetti della vibrazione sul sistema muscolo-scheletrico al
variare della frequenza e della forma della vibrazione: quelle definite pericolose sono
state stimate al di sotto dei 6
. Effetti dannosi sul corpo umano, infatti, possono essere
provocati dall'esposizione a WBV vicine alle frequenze di risonanza delle varie parti del
corpo. La spina dorsale ha una frequenza di risonanza di circa 5
, quella ovvero
prodotta da molte macchine per movimento terra: da qui, dolori e patologie e la
necessità di studiare appositi sedili.
5
Capitolo 1
Comfort Vibrazionale
1.3 Come affrontare il problema
In generale possiamo affrontare lo studio delle risposte biodinamiche degli esseri umani
attraverso due metodologie: quella statistica-sperimentale (metodo indiretto) e quella
analitica (metodo diretto). La valutazione diretta delle sollecitazioni trasmesse
all’individuo è una delle questioni più spinose da affrontare dovendo valutare
l’impedenza del corpo umano lungo le tre direzioni principali. Invece la riduzione del
fenomeno ad un modello matematico più o meno dettagliato e più o meno specifico
permette un approccio indiretto e spesso esaustivo per la stima delle sollecitazioni
trasmesse e per la prevenzione. Il metodo sperimentale può essere classificato in base ai
soggetti utilizzati nei test, dunque in base alle caratteristiche antropometriche della
persona. Le prove effettuate su soggetti di natura e caratteristiche differenti (maschio o
femmina, alto o basso, di piccola o grande corporatura) hanno portato a risultati
altrettanto differenti, in quanto le proprietà meccaniche variano da individuo a individuo
e da momento a momento. Perciò, per cercare di ricavare parametri del tutto generali e
quindi atti a caratterizzare le risposte biodinamiche di individui seduti in generici
comportamenti, Boileau et al. (1998) introdussero:
il seat-to-head transmissibility (STH);
la driving-point mechanical impedence (DPM);
la apparent mass (AM);
ricavati da dati sperimentali selezionati appositamente. Questi coefficienti di
trasmissibilità, impedenza e massa apparente sono definiti per soggetti dotati di postura
eretta, senza schienale e con i piedi appoggiati sulla piattaforma vibrante.
Parametro fondamentale per comprendere la risposta e il quantitativo di vibrazioni
assorbite da un individuo è la trasmissibilità STH, Seat To Head, che rappresenta la
funzione di trasferimento del corpo umano.
6
Capitolo 1
Comfort Vibrazionale
Questo parametro, non contemplato nella ISO 2631, chiarifica il fenomeno fisico e
soprattutto la risposta del corpo umano a WBV.
Nonostante siano entrati in vigore un decreto legislativo ed una normativa che
definiscono limiti e modalità di misurazione, non è ancora del tutto esplicito il fenomeno
fisico della trasmissione delle vibrazioni. La ISO 2631 [3], normativa italiana di riferimento
per l'esposizione dell'uomo alle vibrazioni, non considera infatti la trasmissione della WBV
all'interno del corpo. Questo limite porta a considerare come rilevanti solamente il
quantitativo di vibrazioni in ingresso al corpo stesso. Al contrario, una conoscenza di
come la vibrazione si trasmette attraverso il corpo può dare un importante contributo alla
comprensione della risposta del corpo umano sollecitato a Whole Body Vibration.
In letteratura [1] ci sono molti studi sulla trasmissibilità STH a livello teorico, quindi con
modelli a parametri concentrati, con modelli FEM (Finite Element Method) e multibody.
Per dare un riferimento al lavoro sperimentale in seguito enunciato, viene qui esposto un
ottimo modello teorico a 4 gradi di libertà che cerca di approssimare il comportamento di
un sistema uomo-veicolo. Il modello di Wan e Schimmels (1995) collega i 4 corpi di cui è
composto con elementi molla-smorzatore come in figura 1.1. Risolte le equazioni del
moto nel dominio della frequenza si giunge al valore della trasmissibilità STH,
diagrammata in figura 1.2 insieme a dati ricavati sperimentalmente.
7
Capitolo 1
Comfort Vibrazionale
Figura 1.1: Modello a 4 gradi di libertà di Wan e Shimmels
Figura 1.2: STH del modello Wan e Shimmels
8
Capitolo 1
Comfort Vibrazionale
Già graficamente è possibile valutare la bontà di tale modello che approssima la
frequenza principale di risonanza di una persona seduta e segue l'andamento del grafico
sperimentale. L'approccio utilizzato in queste trattazioni è di tipo teorico-fisico: si studia e
costruisce un determinato modello cercando di seguire il senso fisico del problema.
Al contrario, in questa trattazione si è seguito un approccio black-box2: si è cercato di
modellare il fenomeno fisico curandosi solamente delle variabili di ingresso e di uscita e
riferendosi unicamente a dati sperimentali.
Riferimenti trovati in letteratura sono stati solamente da sostegno alle tecniche utilizzate
e ai risultati ottenuti.
2
Modello black-box: si raccolgono delle misure sperimentali delle variabili di ingresso e uscita e si utilizzano
esclusivamente queste per determinare il modello matematico
9
Capitolo 2
Norma ISO 2631
“Non è mai esistito ingegno
senza un poco di pazzia”
Nullum magnum ingenium sine
mixtura dementiae fuit.
(da Tranquillitate animi)
Seneca
2.1 Introduzione
La norma ISO 2631 [3] è stata adottata come articolo base per l'intero svolgersi della tesi,
ed è una traduzione della ISO 2631-1 (edizione maggio 1997).
Lo scopo primario della presente parte della ISO 2631 è quello di definire metodi per
quantificare le vibrazioni trasmesse al corpo intero in relazione a:
la salute umana e il benessere;
la probabilità di percezione delle vibrazioni;
l’incidenza del male dei trasporti.
La presente parte della ISO 2631 tratta le vibrazioni trasmesse al corpo intero ed esclude
gli effetti pericolosi delle vibrazioni trasmesse direttamente agli arti (per esempio da
macchine utensili portatili). Veicoli (di aria, terra e mare), macchine (per esempio quelle
10
Capitolo 2
Norma ISO 2631
usate nell’industria e in agricoltura) e le attività industriali (quali battitura di pali e
brillatura di mine), espongono le persone a vibrazioni meccaniche periodiche, casuali e
transitorie che possono interferire con il benessere, le attività e la salute.
La ISO 2631 non contiene limiti all’esposizione alle vibrazioni. Tuttavia, sono stati definiti
metodi di valutazione che è possibile utilizzare come base per determinare tali limiti. La
ISO 2631 contiene metodi di valutazione delle vibrazioni che contengono valori di picco
occasionali (con elevati fattori di cresta). Le tre appendici forniscono informazioni
aggiornate sui possibili effetti delle vibrazioni sulla salute (appendice B), sul benessere e
la percezione (appendice C) e sull’incidenza del male dei trasporti (appendice D).
La presente parte della ISO 2631 non tratta gli effetti potenziali delle vibrazioni sulle
prestazioni umane e sulla capacità di svolgimento di attività, dato che una simile guida
dipende in modo cruciale dai dettagli ergonomici correlati all’operatore, dalla situazione e
dalla struttura dell’operazione.
Le vibrazioni sono spesso complesse, contengono numerose frequenze, si verificano in
diverse direzioni e cambiano nel corso del tempo. Gli effetti delle vibrazioni possono
essere molteplici e differenti tra i soggetti in relazione agli effetti biologici. Le vibrazioni
trasmesse al corpo intero possono provocare sensazioni, per esempio, di disagio o
malessere, influenzare le capacità prestazionali umane o presentare un rischio per la
salute e la sicurezza (per esempio danni patologici o cambiamenti psicologici).
11
Capitolo 2
Norma ISO 2631
2.2 Scopo e Campo di Applicazione
La norma definisce i metodi per la misurazione di vibrazioni periodiche, casuali e
transitorie trasmesse al corpo intero. La norma indica anche i principali fattori che si
uniscono per determinare il grado al quale l’esposizione alle vibrazioni risulta accettabile.
Le appendici informative indicano l’attuale opinione e offrono una guida sui possibili
effetti delle vibrazioni sulla salute, sul benessere e sulla percezione del male dei trasporti.
L’intervallo delle frequenze considerate è:
da 0,5
a 80
per salute, benessere e percezione;
da 0,1
a 0,5
per il male dei trasporti.
2.3 Misurazione delle Vibrazioni
La grandezza primaria dell’ampiezza di vibrazione deve essere l’accelerazione. Le
vibrazioni devono essere misurate secondo un sistema di coordinate che trae origine da
un punto dal quale si considera che le vibrazioni entrino nel corpo umano. I principali
sistemi di coordinate basicentrici pertinenti sono illustrati nella figura 2.1.
La norma fornisce precise indicazioni riguardo il posizionamento dei sensori, che devono
essere posti all'interfaccia tra il corpo umano e la sorgente di vibrazione e orientati come
in figura 2.1. Per la trattazione di questa tesi è stato considerato solo il caso di soggetti in
posizione seduta, essendo questo il caso più interessante nell'interazione con veicoli
terrestri.
12
Capitolo 2
Norma ISO 2631
Figura 2.1: Assi basicentrici del corpo umano
Si devono posizionare i trasduttori in modo da indicare le vibrazioni all'interfaccia tra il
corpo umano e la sorgente delle vibrazioni. Le vibrazioni trasmesse al corpo da un
materiale non rigido o resiliente (per esempio il cuscino del sedile) devono essere
misurate con il trasduttore interposto tra la persona e le principali aree di contatto della
superficie. Questo dovrebbe essere ottenuto assicurando i trasduttori su un gruppo di
supporto adeguato. Sono previsti anche dei possibili condizionamenti e un filtraggio del
segnale a circa 1,5 volte la massima frequenza di interesse per diminuire eventuali rumori
nel segnale stesso.
La durata delle misurazioni deve essere sufficiente ad assicurare una ragionevole
accuratezza statistica e a garantire che le vibrazioni siano tipiche delle esposizioni in corso
di valutazione. La durata delle misurazioni deve essere registrata.
13
Capitolo 2
Norma ISO 2631
2.4 Valutazione delle Vibrazioni
2.4.1 Ponderazione in Frequenza
Il modo in cui la WBV influenza la salute, il benessere, la percezione ed il male dei
trasporti dipende dal contenuto di frequenza delle vibrazioni. Le curve di ponderazione in
frequenza raccomandate e/o utilizzate per le varie direzioni e per le loro applicazioni sono
elencate nei prospetti 1 e 2 della norma e nelle appendici B, C e D. I valori numerici delle
curve di ponderazione sono indicati nei prospetti 3 e 4 e le definizioni esatte sono
indicate nell’appendice A. La ponderazione avviene, dunque, attraverso curve e tabelle
messe a disposizione dalla norma, e altro non sono che attenuazioni del modulo nel
dominio della frequenza.
Sono necessarie differenti ponderazioni in frequenza per i diversi assi di vibrazione. Le
ponderazioni principali in frequenza sono:
Wk per la direzione ;
Wd per le direzioni
e .
Ulteriori ponderazioni, non utilizzate nelle prove sperimentali condotte, sono riportate
all'interno della norma:
Wc misurazione dello schienale del sedile;
We misurazione delle vibrazioni rotatorie;
Wj misurazione delle vibrazioni sotto il capo di una persona distesa;
Wf ponderazione in frequenza correlata al male dei trasporti.
14
Capitolo 2
Norma ISO 2631
2.4.2 Metodo Base
La valutazione delle vibrazioni secondo la presente parte della ISO 2631 utilizza
l’accelerazione quadratica media (r.m.s.) ponderata in frequenza espressa in metri al
secondo quadrato
per le vibrazioni traslatorie e in radianti al secondo quadrato
per la vibrazione rotatoria:
dove:
aw(t ) è l’accelerazione ponderata (traslatoria o rotatoria), in funzione del tempo,
in metri al secondo quadrato
secondo quadrato
T
per le vibrazioni traslatorie e in radianti al
per la vibrazione rotatoria;
è la durata della misurazione, in secondi.
La norma prevede delle valutazioni per l'applicabilità del metodo base secondo un fattore
di cresta3, in quanto fornisce anche metodi alternativi in caso la valutazione base possa
sottostimare gli effetti delle vibrazioni.
2.4.3 Metodo degli rms costanti
Il metodo di valutazione dei valori r.m.s. costanti tiene conto degli urti occasionali e delle
vibrazioni transienti mediante l’uso di una costante di tempo di integrazione breve.
3
Il fattore di cresta è definito come il modulo del tasso del valore di picco istantaneo del segnale di
accelerazione ponderata in frequenza al suo valore r.m.s.; il valore di picco deve essere determinato sulla
durata della misurazione, per esempio, il periodo di tempo T usato per l’integrazione del valore r.m.s.
15
Capitolo 2
Norma ISO 2631
dove:
aw(t) è l’accelerazione istantanea ponderata in frequenza;
è il tempo di integrazione per la definizione della media;
t
è il tempo (variabile di integrazione);
t0
è il tempo di osservazione (tempo istantaneo).
2.4.4 Metodo della quarta potenza della dose delle vibrazioni
Il metodo alla quarta potenza della dose delle vibrazioni è più sensibile ai picchi del
metodo di valutazione di base, usando la quarta potenza al posto della seconda potenza
dell’andamento di accelerazione come base per la definizione della media
Tali ulteriori metodi non vengono approfonditi in quanto le prove sperimentali sono state
basate interamente sul valore della 2.1 nella pagina precedente.
2.4.5 Combinazione delle vibrazioni in più di una direzione
Il valore totale delle vibrazioni dell'accelerazione quadratica media, 2.1 nella pagina
precedente, nelle tre direzioni ortogonali è dato dalla 2.4:
dove:
sono le accelerazioni quadratiche medie rms ponderate in
frequenza (2.1 nella pagina precedente) dei vari assi ortogonali;
sono fattori moltiplicativi.
16
Capitolo 2
Norma ISO 2631
L’uso del valore totale delle vibrazioni,
, è raccomandato per la valutazione del
benessere. La norma consiglia dei fattori moltiplicativi unitari per la valutazione delle
vibrazioni di benessere e percezione, mentre suggerisce un valore di 1,4 per gli assi
ed
per la valutazione riguardo la salute.
2.4.6 Uso dell’accelerazione quadratica media (r.m.s.) ponderata
La valutazione quantitativa della dose di vibrazione assorbita viene documentata dalla
norma attraverso la figura 2.24:
Figura 2.2: Zone di attenzione secondo le linee guida della salute
4
Figura B.1 pagina 21 della norma ISO 2631-1:2008
17
Capitolo 2
Norma ISO 2631
La zona di attenzione secondo le linee guida per la salute è indicata dalle linee
tratteggiate in figura 2.2 nell’intervallo da 4 a 8 ore di esposizione. Le equazioni 2.5 e 2.6
indicano una diversa dipendenza dal tempo, ma coincidono per le durate di 4 e 8 ore.
In particolare le due equazioni sono:
Attraverso queste espressioni è possibile proiettare l'esposizione alla WBV durante le 4 o
8 ore. Sostanzialmente, anche con poche misurazioni, è possibile arrivare ad un risultato
equivalente sulle 8 ore da confrontare con il grafico della figura 2.2. Il grafico, tuttavia,
non risulta chiaro nella valutazione dei limiti di esposizione alle vibrazioni, come anche
citato qui [4]. Per le reazioni di benessere, invece, la norma è più quantitativa fornendo i
seguenti valori numerici come indicativi del grado di disagio riassunti in tabella 2.1.
In letteratura [2] è possibile trovare studi più approfonditi sul benessere e sulla salute
come in tabella 2.2.
18
Capitolo 2
Norma ISO 2631
2.4.7 Considerazioni sulla salute
Le prove sperimentali all'interno di questa tesi sono state svolte con riferimento alla
salute del soggetto e sono stati, quindi, considerati i fattori moltiplicativi come indicati nel
19
Capitolo 2
Norma ISO 2631
paragrafo 2.4.5. La prolungata esposizione a WBV incrementa il rischio per la salute della
colonna vertebrale e del sistema nervoso autonomo causato dal dislocamento orizzontale
e dalla torsione dei segmenti della colonna stessa. Problemi frequenti in letteratura sono i
processi degenerativi dei segmenti lombari quali spondilosi deformante, osteocondrosi
intervertebrale, artrosi deformante; la ISO 2631 non esclude problemi al sistema
digestivo, al sistema genitale ed urinario e agli organi riproduttivi femminili. L'aspetto
fondamentale di tali conclusioni nei confronti di queste patologie è la metodica
misurazione delle vibrazioni durante tutto il periodo di esposizione che può risultare
anche di diversi anni.
2.4.8 Decreto Legislativo n.187
Il Decreto Legislativo n°187 [5] del 19 agosto 2005 attua le direttive sulla salute e
sicurezza dei lavoratori soggetti a vibrazioni meccaniche. I limiti ammissibili degli indici 2.1
nella pagina 16 e 2.4 nella pagina 17 sono, quindi, previsti dalla legge anche se non
esplicitamente citati nella normativa ISO 2631. Facendo riferimento alla sola parte
relativa alla WBV, nell'articolo 3 del decreto legislativo vengono quantificati i limiti di
esposizione ed i valori di azione:
il valore limite di esposizione giornaliero, normalizzato a un periodo di
riferimento di 8 ore, è fissato a 1,15
;
il valore d'azione giornaliero, normalizzato a un periodo di riferimento di 8 ore, è
fissato a 0,5
.
Il valore d'azione precedentemente citato indica un limite di attenzione superato il quale
è necessario iniziare un programma di riduzione delle vibrazioni. Il Decreto Legislativo
ricorda anche i fattori correttivi da utilizzare nell'espressione 2.4 nella pagina 17, di 1,4
per gli assi
ed
e di 1 per l'asse .
20
Capitolo 3
Acquisizione dei dati
“Non con le forze, non con la prestezza
e l'agilità del corpo si fanno le grandi
cose, ma col senno, con l'autorità, col
pensiero”
Marco Tullio Cicerone
Lo scopo della seguente trattazione è stato di ottenere un sistema low cost di
acquisizione dati per la valutazione degli indici caratteristici 2.1 nella pagina 16 e 2.4 nella
pagina 17 della norma ISO 2631 durante l'intero periodo di esposizione alla WBV.
3.1 Strumenti
Il sistema di misura è composto da un'antenna GPS e un accelerometro triassiale
interfacciati ad un notebook tramite un programma compilato in C++ ed eseguito su
sistema operativo Windows. Grazie alla sua compattezza, tutta l'attrezzatura può quindi
essere installata su un qualsiasi veicolo terrestre ed eseguire la raccolta dei dati, per
esempio durante un turno lavorativo di 8 ore di un autista, categoria lavorativa
maggiormente soggetta a problemi di salute causati dall'esposizione a WBV.
21
Capitolo 3
Acquisizione dei dati
Segue una breve descrizione delle caratteristiche dei dispositivi.
3.1.1 Accelerometro
Figura 3.1: Accelerometro Triassiale Phidget 1059
L'accelerometro utilizzato è un Phidget 1059 [Sito 1] triassiale a funzionamento
piezoelettrico con interfaccia USB. Alcune delle caratteristiche principali sono riassunte
nella tabella 3:
Il sensore vero e proprio è un ADXL330 della Analog Device, con tecnologia MEMS5.
L'interfaccia tra il dispositivo ed il codice C++ è avvenuta direttamente con le API6 della
casa Phidget. È stato così possibile settare l'accelerometro in base al numero seriale, fare
5
6
Micro Elettro-Mechanical System: sistemi elettro-meccanici utilizzati per accelerometri di precisione
Application Programming Interface
22
Capitolo 3
Acquisizione dei dati
un check-up iniziale per verificare il corretto collegamento e funzionamento e settare la
sensibilità del sensore.
Il grande vantaggio è rappresentato soprattutto dalle dimensioni contenute che l’hanno
reso molto versatile nelle prove sperimentali. L'accelerometro è stato fissato all'interno di
un box in acciaio e annidato poi in un cuscino in neoprene per agevolare le misurazione
all'interfaccia tra il sedile ed il soggetto tester.
Figura 3.2: Box in acciaio per l’accelerometro
Figura 3.3: Rivestimento in neoprene del box
Tale piattello accelerometrico viene infatti posto sopra il sedile, come in figura 3.4, per
non essere influenzato da eventuali smorzamenti del sedile stesso e deve anche essere in
grado di resistere al peso del soggetto tester.
Figura 3.4: Piattello accelerometrico
23
Capitolo 3
Acquisizione dei dati
3.1.2 Dispositivo GPS
Figura 3.5: GPS Garmin 18x USB
L'utilizzo di tale dispositivo, assolutamente non richiesto dalla normativa italiana,
contribuisce a fornire ulteriori dati utili alla comprensione macroscopica del fenomeno. I
dati GPS, infatti, forniscono informazioni non solo sulla velocità media, ma anche sul
percorso effettuato dal veicolo in esame, permettendo un confronto tra gli indici rms
acquisiti durante il tragitto. Infatti, la gravità delle vibrazioni assorbite dal corpo umano
dipende da molti fattori, quali le caratteristiche antropometriche del soggetto, la postura,
il sedile, nonché dalle caratteristiche del veicolo e dalle asperità del tracciato.
Il GPS utilizzato è un Garmin 18x [Sito 2] con connettore USB. La scelta di questo
dispositivo GPS si è basata sulla condizione low cost del progetto stesso; le caratteristiche
sono visibili nella tabella 3.2:
24
Capitolo 3
Acquisizione dei dati
L'utilizzo del GPS ha, quindi, la duplice funzione di:
identificare il percorso del veicolo;
valutare la dipendenza dell'indice rms con il percorso stesso.
Il dispositivo è stato interfacciato al PC tramite porta USB ed integrato al codice C++
grazie alle librerie GarXface C++ [Sito 3]. Come protocollo di trasmissione dati è stato
scelto il PVT7, nativo della casa Garmin, che permette una maggior velocità (9600 bps)
rispetto al classico NMEA8. I dati in uscita sono in formato WGS849, aggiornati dal
dispositivo alla frequenza di 1
e contengono le seguenti informazioni:
latitudine e longitudine;
errore di posizione (EPE);
altitudine;
velocità.
Dai dati GPS vengono anche acquisite informazioni sulla data e l'ora di acquisizione.
Figura 3.6: Piattello accelerometrico e GPS Garmin
7
Position Velocity Time
National Marine Electronic Association
9
World Geodetic System 1984
8
25
Capitolo 3
Acquisizione dei dati
3.1.3 Apparecchiatura professionale
Figura 3.7: Svan 958 della Svantek Italia
Per meglio chiarire l'aspetto low cost del progetto vengono di seguito presentate le
caratteristiche principali di un tipico strumento professionale disponibile in commercio, lo
Svan 958 della Svantek Italia [Sito 4]:
4 Canali a 20
in tempo reale, misure simultanee di rumore e vibrazioni;
analisi FFT in tempo reale con 1920 linee per canale, banda fino a 22.4
;
opzione RPM1 parallela alle misure di vibrazioni per la misura della velocità di
rotazione;
sensibilità accelerometro triassiale 100
range di misura da 0.003
rms a 500
;
PEAK;
range di frequenza dipendente dall'accelerometro: da 0.5
SV39A/L), da 2
a 10
a 3
(con
(con 3023M2);
frequenza di campionamento 48
.
26
Capitolo 3
Acquisizione dei dati
3.2 Funzionamento software
Il programma per l'acquisizione sperimentale dei dati accelerometrici è diviso in cinque
parti ben distinte. Come interfaccia grafica l'eseguibile apre una finestra DOS dalla quale è
possibile monitorare le operazioni in corso.
3.2.1 Parametri da impostare da input
Come prima cosa, il programma chiede di inserire i parametri antropometrici dell’uomo
significativi per la mia trattazione, ossia sesso, età, peso, altezza e corporatura, che
verranno salvati in un file di testo.
Figura 3.8: Impostazione dati tester
Successivamente, viene chiesto di selezionare il dispositivo GPS. Inseriremo: 1, se si
vogliono ottenere le informazioni fornite dal GPS; 0, se si vuole procedere escludendo il
GPS poiché il percorso utilizzato per le prove non necessita delle informazioni ricavate dal
GPS stesso. Subito dopo, inseriremo il numero di acquisizioni che si desidera effettuare,
potendo scegliere tra quattro possibilità, ossia 256, 512, 2048 e 8192, tutte potenze di 2
per facilitare la successiva analisi di Fourier attraverso la FFT.
27
Capitolo 3
Acquisizione dei dati
3.2.2 Setup
Prima di iniziare l'acquisizione dati dall'accelerometro e dal GPS il programma esegue una
serie di controlli, quali il corretto collegamento dei sensori ed il calcolo dell'inclinazione
iniziale dell'accelerometro come in figura 3.9:
Figura 3.9: Setup iniziale
I comuni sedili delle autovetture, come anche la maggior parte dei sedili di veicoli
terrestri, non dispongono di una superficie orizzontale rispetto al veicolo stesso, né
ovviamente rispetto al terreno. Per minimizzare quindi l'errore dovuto all'inclinazione del
sedile, vengono preventivamente calcolati gli angoli di inclinazione del piattello
accelerometrico per usarli durante l'acquisizione dati all'interno di una matrice di
rotazione (vedi la formula 3.2 a pagina 32).
Considerando il sistema di riferimento di figura 3.10 è immediato calcolare la matrice di
rotazione totale per le due rotazioni possibili da calcolare.
28
Capitolo 3
Acquisizione dei dati
Figura 3.10: Sistema di riferimento dell’accelerometro
Tutto il setup deve essere effettuato a veicolo fermo in quanto l'unico riferimento è
l'accelerazione gravitazionale. Con il veicolo in movimento e con l'utilizzo di soli
accelerometri non è possibile fare questo tipo di misurazione, e quindi non è stato
implementato un sistema di controllo in feed-back per l'inclinazione del sedile durante
l'acquisizione dati non avendo modo di conoscere con esattezza gli angoli di inclinazione
con il veicolo in movimento. Alternativa a questo problema potrebbe essere l'utilizzo di
un giroscopio o di un sistema ottico per il continuo monitoraggio dell'inclinazione del
dispositivo, ma rimanendo nella condizione principe del progetto, ossia i costi contenuti,
si è preferito fare un unico setup iniziale a veicolo fermo.
Per il calcolo degli angoli di inclinazione, riferendoci alla figura 3.11, sono state utilizzate
delle semplici relazioni trigonometriche:
dove:
o rappresenta l'accelerazione su un generico asse dell'accelerometro;
mentre h rappresenta l'accelerazione gravitazionale
.
29
Capitolo 3
Acquisizione dei dati
Figura 3.11: Angoli di inclinazione dell’accelerometro
Calcolati gli angoli si possono poi utilizzare per comporre la matrice di rotazione che
considera solo due possibili rotazioni, ovvero attorno l'asse
Rotazioni anche evidenti attorno l'asse
e all'asse .
non sarebbero in alcun modo avvertite dal
sensore e, quindi, per evitare errori di posizionamento per questo terzo asse, deve essere
prestata una particolare attenzione durante l'installazione nel veicolo, avendo cura di
indirizzare l'asse
del dispositivo lungo la direzione di marcia del veicolo stesso.
30
Capitolo 3
Acquisizione dei dati
Figura 3.12: Posizionamento del piattello accelorometrico
Entrando quindi nella matrice 3.2 con i valori ,
il sistema di riferimento facendo coincidere l'asse
e
ricavati dall'accelerometro, si ruota
con la verticale (
). Importante è
anche la posizione assunta dal soggetto che deve rispondere ai requisiti minimi di buona
postura in un veicolo, e cioè: posizione eretta della schiena, non attaccata al sedile (per
non smorzare le accelerazioni alla testa) e busto rivolto verso la direzione di marcia come
in figura 3.13.
Figura 3.13: Postura del passeggero durante le prove
31
Capitolo 3
Acquisizione dei dati
3.2.3 Acquisizione dati
Superata la fase di setup ed inizializzazione dei dispositivi avviene l'acquisizione dati. Le
accelerazioni in
vengono salvate, insieme al rispettivo tempo di acquisizione, in file
di testo e catalogati in base al numero della prova e alle caratteristiche antropometriche
del tester. Il programma acquisisce dati fino ad un valore stabilito da input. Le API della
phidget forniscono una funzione che automaticamente aggiorna la variabile contenente i
valori accelero metrici, ma si è preferito optare per un classico ciclo for con un delay preimpostato di circa 16
, per rimanere nel range operativo riguardo la frequenza di
acquisizione di circa 60
. La funzione della phidget10, infatti, è risultata poco stabile nel
tempo e suscettibile ad ogni minima applicazione in esecuzione sul sistema operativo. Il
numero di acquisizioni è influenzato da due condizioni:
tempo di acquisizione previsto dalla norma, che va da 108 fino a 227 ;
numero di acquisizioni in potenza di 2 per migliorare la rapidità di calcolo
nell'esecuzione della FFT11.
Contemporaneamente anche il GPS, nel caso in cui si scegliesse di utilizzarlo, rileva e salva
su un file di testo caratteristiche quali:
data e ora;
latitudine e longitudine;
altitudine;
velocità;
Attraverso poi l'uso di un semplice programma freeware online, GPSvisualizer [Sito 5], è
possibile convertire il file di testo in un file .xml leggibile da Google Maps e Google Earth.
10
11
CPhidgetAccelerometer-set-OnAccelerationChange-Handler
Fast Fourier Transform
32
Capitolo 3
Acquisizione dei dati
3.2.4 Indice r.m.s.
Nel programma proposto nell’appendice A.1 non viene effettuata l’ultima parte del
programma compilato in C++ perché non necessaria per la mia trattazione, in quanto
l’indice rms viene calcolato con il software MATLAB. Viene comunque riportata la
procedura da adottare per determinare tale indice.
Dall’accelerometro ricaviamo i valori delle accelerazioni lungo gli assi di riferimento in
funzione del tempo:
dove
sono le i-esime acquisizioni. Arrivati al numero prestabilito di
acquisizioni il programma richiama una funzione che calcola il valore rms totale (2.4 nella
pagina 17) misurato in quell'arco di tempo. Il codice è stato implementato grazie alle
librerie IMSL12, che hanno fornito gli algoritmi matematici implementati nel linguaggio C.
La funzione13 IMSL utilizzata per passare nel domino della frequenza è l'algoritmo di
Cooley-Tukey, un algoritmo FFT molto diffuso. Dopo aver passato nel dominio della
frequenza, attraverso la FFT, i dati appena campionati, viene mostrato sulla finestra DOS
la massima frequenza di interesse. Il teorema del campionamento di Nyquist-Shannon
(1949) afferma che:
“La minima frequenza di campionamento necessaria per evitare ambiguità nella
ricostruzione del segnale è pari ad almeno il doppio della frequenza della componente
armonica a frequenza più alta”.
La massima frequenza apprezzabile sarà perciò attorno ai 30
di campionamento circa 60
12
13
, avendo come frequenza
. La norma prevede un range di frequenza tra 0,5 e 80
C Numerical Math Library [Sito 6]
Imsl-z-ftt-complex
33
Capitolo 3
14,
Acquisizione dei dati
anche se gli effetti più importanti di malessere e di danni all'organismo umano
avvengono in genere a frequenza inferiori ai 15
. Nonostante la strumentazione low
cost, il campionamento e lo spettro analizzabile in frequenza è più che accettabile.
Dunque ottengo:
dove
sono le i-esime acquisizioni trasformate nel dominio della
frequenza.
Si determinano poi le curve di ponderazione necessarie per filtrare il segnale visibile in
figura 3.14, oppure si possono utilizzare i valori tabellati nella norma15 (tabella 3.3).
Figura 3.14: Curve di ponderazione della norma ISO 2631-1:2008
14
15
Vedi Capitolo 2.2
Prospetto 3 pagina 7 della ISO 2631-1:2008
34
Capitolo 3
Acquisizione dei dati
dove
sono le accelerazioni ponderate in frequenza.
Grazie alle librerie IMSL viene creata una spline per riprodurre qualsivoglia delle curve di
ponderazione presenti nella norma e questo conferisce un'ottima flessibilità al
programma. Le curve generalmente più utilizzate sono la Wk e la Wd, valide per un
individuo seduto e che riguardano rispettivamente l'asse
e gli assi
e . Si procede,
quindi, alla ponderazione in frequenza del segnale e poi si torna nel dominio del tempo
utilizzando l'antitrasformata di Fourier ottenendo
, ossia le
accelerazioni ponderate in frequenza nel dominio del tempo. Ora posso calcolare l'indice
rms 2.1 nella pagina 17 per i tre assi coordinati:
dove
sono le accelerazioni quadratiche medie (r.ms.) ponderate
in frequenza per gli assi
.
Il programma calcola poi l'indice 2.4 nella pagina 17:
dove
è accelerazioni quadratiche medie (r.ms.) ponderate in frequenza totale.
35
Capitolo 3
Acquisizione dei dati
Tabella 3.3: Prospetto 3 della norma ISO 2631-1:2008
36
Capitolo 3
Acquisizione dei dati
3.2.5 Chiusura e Riconfigurazione
Prima di terminare le operazioni e riconfigurare la condizione di inizio acquisizione dati
viene salvato nel file di testo relativo alle informazioni GPS un appunto16 con tutte le
caratteristiche dell'analisi appena effettuata. Nella figura 3.15 è possibile vederne un
esempio.
Figura 3.15: Waypoint con le caratteristiche della prova
Viene riportato il numero della prova seguito dal valore dell'accelerazione rms totale.
Basta aprire il pop-up per visualizzare tutte le informazioni disponibili quali:
valore dell'accelerazione totale rms in
e in ;
valore della massima frequenza analizzata (vedi 3.2.3 nella pagina 32);
la velocità media durante l'acquisizione dati;
ora e data della prova.
La comodità dei waypoint nella lettura del percorso effettuato durante le prove è
eccezionale.
16
waypoint
37
Capitolo 3
Acquisizione dei dati
Con un unico esame della mappa del percorso è possibile estrapolare tutte le
informazioni utili per il controllo dei limiti imposti dal decreto legislativo n°18717.
Ultime operazioni del programma sono:
spostamento, in una apposita cartella, dei dati acquisiti dagli accelerometri se tali
dati vengono dichiarati affidabili dall’operatore;
ripetere le operazioni di acquisizione.
Per chiudere il programma è stata utilizzata la libreria SDL18 [Sito 7], che permette di
gestire gli eventi. Se viene premuto un tasto la funzione SDL-Event registra l'evento e ne
giudica il risultato; pertanto, se durante l'acquisizione viene premuto un tasto, il
programma finisce l'acquisizione dati in corso e poi si chiude automaticamente.
Questa procedura (ad esclusione dell’ultima parte sul calcolo dell’indice rms) viene
ripetuta per ogni individuo utilizzato come tester allo scopo di creare un database della
funzione STH in funzione delle proprietà antropometrice della persona (sesso, peso,
altezza,…).
3.3 Analisi su strada
Riporto adesso delle prove sperimentali condotte con la strumentazione analizzata in
questo capitolo (compresa la quarta parte del programma in C++ da me non utilizzata)
effettuate su percorsi stradali urbani, extraurbani e autostradali [9], allo scopo di chiarire
meglio il funzionamento della nostra apparecchiatura. Nelle mappe riportate, il colore del
percorso è parametrizzato in funzione della velocità: colori caldi (crescendo di velocità:
rosso, arancione, giallo e verde) indicano basse velocità, mentre colori freddi (celeste, blu
e viola) indicano velocità più sostenute.
17
18
Vedi Capito 2.4.8
Simple DirectMedia Layer
38
Capitolo 3
Acquisizione dei dati
3.3.1 Percorso urbano
Nella figura 3.16 è stata condotta una prova sperimentale su un breve percorso cittadino.
Figura 3.16: Analisi su percorso urbano
L'indice dell'accelerazione rms totale massimo risulta essere di 2,684 su un tempo di
acquisizione di 4,37 minuti (262,2 secondi). Il numero di acquisizioni impostato è stato
infatti di 16384 (214), con un periodo di 0,016 . Utilizzando, quindi, l'equazione 2.5 nella
pagina 19 è possibile proiettare tale valore su una durata di 8 ore in questo modo:
Come da decreto legislativo, tale valore risulta ben inferiore ai limiti stabiliti. È stato
valutato che, con un tale periodo di campionamento, il limite di azione previsto dal
decreto è raggiunto con un valore dell'accelerazione rms totale di circa 5,24
.
Utilizzando invece l'equazione 2.6 nella pagina 19 viene superato il limite di azione:
39
Capitolo 3
Acquisizione dei dati
3.3.2 Percorso extraurbano
La seguente prova è stata effettuata lungo una strada statale a scorrimento veloce. Nella
figura 3.17 si vede immediatamente l'enorme differenza di valori rms rispetto al percorso
urbano dovuto a:
velocità circa costante del veicolo;
manto stradale meno sconnesso.
Il campionamento è stato anche questa volta di 4,37 minuti di periodo e quindi con 16384
dati per acquisizione.
Figura 3.17: Analisi su percorso extraurbano
Il massimo valore riscontrato in questa prova è di 0.235
che corrisponde ad un
valore per le 8 ore di:
utilizzando l'equazione 2.5 nella pagina 19, e di:
utilizzando l'equazione 2.6 nella pagina 19.
40
Capitolo 3
Acquisizione dei dati
3.3.3 Percorso autostradale
L'analisi è stata effettuata su un percorso perlopiù autostradale. Nella figura 3.18 è
possibile osservare il percorso nonché i relativi indici rms. Il numero di campioni è stato
impostato a 32768 (215), comportando quindi un periodo di circa 8,74 minuti.
Appare evidente come il maggior periodo di esposizione e soprattutto l'influenza di una
strada a scorrimento veloce, quale un tratto autostradale, influenzino notevolmente il
valore rms delle accelerazioni, che risultano ovviamente molto contenute come nella
precedente misurazione.
Figura 3.18: Analisi su percorso autostradale
Dunque, il massimo valore riscontrato in questa prova è di 0.264
che corrisponde
ad un valore per le 8 ore di:
utilizzando l'equazione 2.5 nella pagina 19, e di:
utilizzando l'equazione 2.6 nella pagina 19.
41
Capitolo 3
Acquisizione dei dati
3.3.4 Conclusioni
Nella tabella 3.4 vengono riportati i risultati delle tre prove. Si nota che nei tratti
extraurbano e autostradale gli indici r.m.s. non superano i valori limite sanciti dal decreto
legislativo n°187; questo non accade nel tratto urbano se tale indice viene determinato
con l’equazione 2.6 della pagina 19. Questo è dovuto perché nei tratti extraurbani e
autostradali si ha:
velocità circa costante del veicolo;
manto stradale meno sconnesso.
Da queste esperienze sperimentali si intuisce il livello di approssimazione tecnico
introdotto dalla norma ISO 2631 come anche dal decreto legislativo n°187. I limiti massimi
infatti si riferiscono ad una proiezione su un tempo di 8 ore di un campionamento di
pochi minuti. È una estrapolazione su un periodo notevole con pochissimi campioni. Con
questo tipo di strumentazione è invece possibile effettuare campionamenti più lunghi
temporalmente e arrivare perfino ad analizzare le 8 ore lavorative, nonostante anche in
questa direzione non manchino problematiche tecniche. È possibile comunque disporre di
un campionamento molto più ricco di informazioni aumentando a piacere il numero di
acquisizioni.
42
Capitolo 4
Identificazione dell’indice STH
“Possiamo perdonare un bambino che
ha paura del buio.
La vera tragedia della vita è quando
gli uomini hanno paura della luce”
Platone
4.1 Introduzione
In questo capitolo verrà descritta la procedura che è stata eseguita per modellizzare la
risposta alle vibrazioni del corpo umano. La normativa ISO 2631, infatti, non comprende
pienamente il fenomeno fisico, considerando esclusivamente le vibrazioni in ingresso al
corpo umano. Molto più interessante è la funzione di trasferimento del corpo umano in
posizione seduta, nota in letteratura come STH19. La risposta, infatti, può essere molto
diversa a seconda della postura e soprattutto dei parametri antropometrici. Di
conseguenza, la risposta e la sensibilità a WBV non possono dipendere esclusivamente
dalla vibrazione all'interfaccia corpo/sedile. Verrà, quindi, descritta la metodologia
sperimentale utilizzata per ricavare un modello matematico che permetta di simulare il
comportamento di una persona seduta sottoposta a WBV. Con tale modello è cosi
19
Seat To Head
43
Capitolo 4
Analisi dei dati
possibile conoscere in maniera rapida e senza impedimenti tecnici, tipici delle misurazioni
sperimentali, quale sia l'accelerazione rms alla testa di una persona.
La strumentazione utilizzata è la stessa illustrata nel capitolo 3, salvo per il diverso
software impiegato: oltre al programma compilato in C++ sull’acquisizione dei dati
accelerometrici, vengono utilizzati dei programmi compilati in Matlab per l’elaborazione
dei dati sperimentali20.
Le prove sperimentali eseguite si riferiscono all'analisi del comportamento biomeccanico
del corpo umano soggetto a vibrazioni verticali; in particolare, si tratta di rilevare,
attraverso due accelerometri opportunamente posizionati (in testa e sul bacino), le
vibrazioni di queste due parti del corpo umano andando a caratterizzarle attraverso il
discusso coefficiente di trasmissibilità STH. Questo coefficiente è definito come il
rapporto tra l'accelerazione della testa e quella del sedile, quest'ultima valutata
attraverso l'accelerometro posto sul bacino. In questo modo si intende ricavare valori
propri di questo coefficiente e si vuole estrarre l'andamento del suddetto coefficiente in
funzione del campo di frequenza rilevato dagli accelerometri.
La procedura con la quale sono state eseguite le prove non cambia nel corso delle prove
stesse; ciò che varia sono i soggetti tester delle prove. Infatti, a seconda delle
caratteristiche antropometriche dell'individuo, si otterranno valori e quindi andamenti del
coefficiente di trasmissibilità sostanzialmente differenti. Come prima cosa si posizionano
gli accelerometri in maniera adeguata, ovvero evitando che oscillino eccessivamente,
poiché altrimenti la prova non risulterebbe soddisfacente. Particolare attenzione, inoltre,
va rivolta all'accelerometro che deve rilevare le vibrazioni della testa; questo infatti viene
posto sul cranio del soggetto tramite una opportuna cuffia. Successivamente l'individuo
tester (seduto sul lato-passeggero) si posiziona con postura eretta con le mani sulle
gambe, che a loro volta devono formare un angolo retto con il suolo del veicolo.
20
Appendice A.2 e A.3
44
Capitolo 4
Analisi dei dati
4.1.1 Problemi riscontrati
I test sperimentali sono stati effettuati su un percorso appositamente realizzato invece di
un percorso urbano costruendo la fdt21 unicamente come rapporto tra l'accelerazione
verticale alla testa e quella al sedile nel dominio della frequenza, come da definizione di
STH:
Si è scelto di effettuare le prove su un percorso appositamente realizzato invece che su un
percorso urbano perché dalla letteratura [9] sappiamo che non si sarebbero ottenuti
risultati soddisfacenti a causa di:
FFT non adatta per segnali tempo varianti;
problemi di aliasing22.
Il primo problema è un fenomeno molto noto nel campo delle misurazioni sperimentali in
quanto applicare la FFT ad un segnale tempo variante introduce delle componenti di
rumore che disturbano l'analisi in frequenza. Quando la frequenza di un segnale varia nel
tempo, come può essere l'eccitazione data da un percorso su un manto stradale, la FFT
nel riprodurre tutte le frequenze eccitate durante il periodo di campionamento sporca il
segnale stesso; è una limitazione intrinseca dell'algoritmo di Fourier che non riesce a fare
una distinzione cronologica nel dominio della frequenza. Il segnale in figura 4.1 ha delle
componenti in frequenza di 5, 10, 20, e 50
21
22
:
Funzione di trasferimento
Sottocampionamento
45
Capitolo 4
Analisi dei dati
Figura 4.1: Segnale con frequenze stazionarie nel tempo [9]
In figura 4.2, invece, è rappresentato un segnale con lo stesso contenuto in frequenza, ma
con una dipendenza temporale della frequenza.
Confrontando ora i risultati della FFT del segnale in figura 4.1 con quello in figura 4.2
risultano palesi i disturbi introdotti dalla FFT nel domino della frequenza, nonostante i
picchi di frequenza coincidano in entrambe le analisi. Il segnale in figura 4.2 a fronte è
46
Capitolo 4
Analisi dei dati
decisamente rumoroso per poter affrontare un'indagine di identificazione di un modello
matematico fedele.
Figura 4.2: Segnale con frequenze varianti nel tempo [9]
Per affrontare questa limitazione della FFT e comprendere meglio la dinamica del
fenomeno si è utilizzata l'analisi wavelet.
Il secondo problema, invece, è stato l'aliasing. Le frequenze eccitate durante le prove su
tragitti urbani erano infatti maggiori di 30 Hz, causando un pessimo campionamento da
parte degli accelerometri. Sostanzialmente la massima frequenza di interesse non si
trovava più a circa 30 Hz, come previsto dal teorema di Nyquist-Shannon (3.2.4 nella
pagina 35), ma a frequenze molto maggiori, provocando ambiguità nella ricostruzione del
segnale. È stato così realizzato un apposito tracciato al fine di eccitare precise frequenze.
47
Capitolo 4
Analisi dei dati
4.1.2 Limiti della FFT
Figura 4.3: Wavelet madre di Meyer
L'analisi wavelet (toolbox di MATLAB) rappresenta un segnale mediante l'uso di una
forma d'onda oscillante, che scala e trasla per adattarsi al segnale stesso. La mother
wavelet23, con cui poter approssimare tutto il segnale, sono moltissime in letteratura
(Meyer, Morlet, Mexican Hat...), vedi figura 4.3, superando i limiti della FFT. Attraverso
questo tipo di analisi è possibile esaminare le caratteristiche dei segnali, comprimere o
rimuovere rumori, e visualizzare griglie di segnali tradotti in matrici. Questa viene
utilizzata con il solo scopo di individuare gli intervalli di tempo in cui non vi siano
contributi frequenziali che compaiono e scompaiono. Ciò permette un'efficacia molto
maggiore della FFT sui segnali. La particolarità di questa trasformata ormai molto diffusa
nei laboratori sperimentali, è la capacità di associare una particolare frequenza di un
segnale ad un preciso intervallo di tempo. È quindi possibile riprodurre in un grafico 3D
l'andamento delle frequenze di un segnale in funzione del tempo, come in figura 4.4.
23
Ordina madre
48
Capitolo 4
Analisi dei dati
Figura 4.4: Grafico ampiezza-frequenza-tempo
4.1.3 Tracciato per il test
Il tracciato per le prove sperimentali è stato realizzato lungo un rettilineo di circa 12,5
costruendo un binario con 20 listelli di legni alti 1,5
distanziati di circa 55
, larghi 3
. Percorrendo il tracciato a circa 10
sistema con una frequenza di circa 5
,
e lunghi 2 m
equivale ad eccitare il
. Per permettere la ripetibilità delle prove, i listelli
di legno sono stati attaccati ad un telo di plastica come nelle figure.
Figura 4.5: Tracciato per le prove sperimentali
Figura 4.6: Frequenza di eccitazione circa 5
a 10
49
Capitolo 4
Analisi dei dati
4.2 Campagna sperimentale
Il programma utilizzato per la raccolta dati è stato compilato in C++ ed interagisce questa
volta con 2 accelerometri Phidget triassiali. Il secondo accelerometro è necessario per
l'acquisizione delle accelerazioni alla testa, con l'accelerometro fissato sul cranio del
tester (figura 4.8).
Figura 4.7: Strumentazione
La postura del soggetto tester è composta, con le mani sulle gambe e busto in posizione
verticale come in figura 4.9.
Figura 4.8: Accelerometro fissato sul cranio del tester con un'apposita cuffia
Figura 4.9: Postura del tester\
50
Capitolo 4
Analisi dei dati
Il programma funziona sostanzialmente come raccolta dati stabilendo alcuni parametri
della persona tester (ovvero peso, altezza, sesso, età, corporatura) e il numero di
acquisizioni, come già analizzato nel capitolo 3. L’intera analisi dei dati è stata condotta in
laboratorio utilizzando MATLAB. Lanciato il programma viene chiesto di fermare la
vettura per il calcolo degli angoli utili nella matrice di rotazione (vedi 3.2.2 nella pagina
32) e poi si avvia l'acquisizione dati che raccoglie le accelerazioni dei tre assi ,
e in file
di testo insieme al tempo di campionamento. Per questo tipo di studi i dati di interesse
riguardano solamente le accelerazioni lungo l'asse .
Time
242,475
2,569
-0,485
9,299
242,506
2,714
-0,485
9,200
242,522
2,798
-0,431
9,219
242,553
2,820
-0,490
9,251
242,584
2,982
-0,558
9,763
Tabella 4.1: Raccolta dei dati accelerometrici
Raggiunto il numero di acquisizioni desiderate si interrompe la simulazione e, tramite il
file wavelet.exe (programma compilato in Matlab), viene plottato a schermo l’analisi
wavelet per visualizzare i dati appena ricavati.
Se i dati sono ritenuti affidabili, i dati vengono salvati in un file di testo e spostati in
un’apposita cartella insieme ai dati della persona tester.
Infine, il programma chiede se si vuole ripetere la procedura di acquisizione dati.
51
Capitolo 4
Analisi dei dati
4.3 Elaborazione dati
Per quanto riguarda la fase di analisi sperimentale, la scelta di affrontare l'identificazione
del modello a posteriori e non in real-time è stata obbligata in un primo momento per i
problemi con la FFT di cui al punto 4.1.1 nella pagina 45. I dati ottenuti vengono importati
in MATLAB che li sviluppa algebricamente (ottenendo matrici e vettori) per poi eseguire,
su questa base, l'analisi “wavelet” dei segnali degli accelerometri sul bacino e in testa. In
questo modo si può osservare l'andamento del segnale (costante, continuo, …) e
individuare l'intervallo nel quale il segnale accelerometrico della testa e del bacino hanno
la stessa costanza al fine di filtrare i segnali stessi in questo campo ed effettuare la FFT.
Inizialmente infatti è stato necessario selezionare manualmente l'intervallo temporale
all'interno del quale effettuare la FFT e quindi individuare la STH.
4.3.1 Filtraggio del segnale
Fatto ciò, il segnale è stato filtrato nell'intervallo stabilito nel dominio del tempo per
eliminare le alte frequenze causate da conversioni A/D24 e da rumore, e le basse
frequenze, minori di 1
. Il diagramma di Bode del filtro utilizzato è riportato in figura
4.10. Le frequenze di taglio sono fissate a 0,01 0,1 e 60
e viene mantenuto nel segnale
il termine costante; dopo il filtraggio viene sottratta la media per eliminare il contributo
dell’accelerazione di gravità.
24
Analogico/Digitale
52
Capitolo 4
Analisi dei dati
Figura 4.10: Diagramma di Bode del filtro
Nelle due figure seguenti sono stati filtrati i segnali accelerometrici di 3 prove mediate,
effettuate dalla stessa persona tester; è evidente l'effetto del filtraggio nel pulire il
segnale dal rumore di fondo.
Nella figura 4.11 sono diagrammate i segnali non filtrati delle accelerazioni alla testa (a
sinistra) e al sedile (a destra).
Nella figura 4.12 sono diagrammate i segnali filtrati delle accelerazioni alla testa (a
sinistra) e al sedile (a destra).
53
Capitolo 4
Analisi dei dati
Figura 4.11: Segnali originali
Figura 4.12: Segnali filtrati
54
Capitolo 4
Analisi dei dati
4.3.2 Analisi Wavelet
Il segnale è stato analizzato con il Wavelet Toolbox di Matlab che ha permesso di ottenere
informazioni molto importati per procedere nelle prove. Utilizzando l'analisi wavelet è
stato possibile isolare l'intervallo del segnale in cui effettuare la FFT e, quindi, procedere
all'individuazione della funzione di trasferimento.
Nelle figure 4.13 e 4.14 è possibile osservare un esempio di segnale acquisito, filtrato e
analizzato con il Toolbox Wavelet.
Figura 4.13: Analisi wavelet del segnale al sedile
55
Capitolo 4
Analisi dei dati
Figura 4.14: Analisi wavelet del segnale alla testa
Il primo diagramma rappresenta il segnale accelerometrico filtrato. Nei due riquadri
inferiori, invece, abbiamo prima la DWT25 e poi la CWT26. La seguente analisi è stata
utilizzata solo in maniera qualitativa, non entrando quindi nel merito del significato dei
singoli coefficienti. Il grafico della CWT, l'ultimo in basso nelle figure 4.13 e 4.14, è
parametrizzato con il colore in funzione delle frequenze mentre sull'asse x è riportato il
tempo. La scala dei coefficienti segue un andamento non-lineare delle pseudo-frequenze
e possiamo, dunque, considerare bassi valori delle
corrisponde a circa
) e alti valori delle
come alte frequenze (
come frequenze via via decrescenti.
Appare chiaro ora come, durante una prova, le frequenze eccitate prima del contatto con
i listelli di legno siano molto basse. Quando invece il veicolo inizia il percorso, la frequenza
si porta ad un valore costante corrispondente a circa 5
25
26
e risulta evidente anche
Discrete Wavelet Transform
Continuous Wavelet Transform
56
Capitolo 4
Analisi dei dati
quando entrano in presa le ruote posteriori, identificate da una discontinuità nel colore
della CWT. Possiamo quindi dividere una prova sperimentale in quattro distinti momenti:
il veicolo non è ancora arrivato sui listelli di legno, o li ha appena superati;
solo le ruote anteriori sono in presa sul tracciato;
il veicolo si trova a metà percorso con entrambe le ruote sui listelli di legno;
le ruote anteriori sono uscite dal tracciato e rimangono in presa solo le posteriori.
Come meglio si osserva dalle immagini tridimensionali (vedi figure 4.15 e 4.16), è facile
capire quale intervallo utilizzare per avere un contenuto in frequenza stabile nel tempo,
ossia quando entrambe le ruote sono in presa sul tracciato.
Tale analisi ha, quindi, permesso di isolare parte del segnale per poter procedere con
un'analisi FFT significativa e priva dei problemi citati nel paragrafo 4.1.
Figura 4.15: CWT del segnale al sedile
57
Capitolo 4
Analisi dei dati
Figura 4.16: CWT del segnale alla testa
Nelle figure 4.17, 4.18 e 4.19 possiamo, invece, osservare l’analisi di Fourier. Notiamo
che, oltre al picco intorno a 6
, sono presenti delle sollecitazioni di circa 12
causate
dal fatto che le due file di ruote subiscono, ad istanti diversi, le sollecitazioni imposte dal
tracciato.
Nelle figure 4.17 e 4.18 viene diagrammato il segnale nel dominio della frequenza
ponderato secondo la norma ISO 2631 e non ponderato.
58
Capitolo 4
Analisi dei dati
Figura 4.17: Accelerazione al sedile nel dominio della frequenza per le 3 prove
Figura 4.18: Accelerazione alla testa nel dominio della frequenza per le 3 prove
59
Capitolo 4
Analisi dei dati
Figura 4.19: Coefficiente di trasmissibilità STH per le 3 prove
60
Capitolo 4
Analisi dei dati
4.3.3 Identificazione della fdt
Per identificare la funzione di trasferimento, ovvero una funzione che descrive la risposta
del corpo umano tra la testa e il bacino, è stato utilizzato l'approccio Black-Box: al
calcolatore vengono forniti i dati sperimentali sotto forma di ingressi (accelerazione del
sedile) e di uscite (accelerazione della testa) che si vogliono raggiungere. Si è cercato,
infatti, di determinare il modello matematico (la fdt) conoscendo solamente input e
output del sistema. Pertanto, il software va a ricercare la migliore funzione
approssimante la curva di uscita, noto il segnale di ingresso. Per ottenere ciò, i modelli
principalmente utilizzati sono stati l'ARX27 (vedi l’equazione 4.1), e l'ARMAX28, (vedi
l’equazione 4.2):
Intervenendo sul numero di poli al numeratore
campioni
, al denominatore
, sul ritardo dei
, sul numero di poli del polinomio di regressione del rumore
, nonché
mediando i risultati di più prove, sono stati ottenuti dei modelli matematici affidabili.
Questo avviene grazie alla possibilità della funzione ARMAX di poter variare i parametri
precedentemente esposti inserendo anche indici di ritardo e di disturbo del segnale.
In figura 4.20 viene mostrato il diagramma di Bode del modello ricavato dalla funzione
ARMAX in una prova sperimentale.
27
28
AutoRegressive with eXogeneous input
Autoregressive moving average model with exogenous inputs
61
Capitolo 4
Analisi dei dati
Figura 4.20: Diagramma di Bode del modello
Figura 4.21: Output stimato dal modello
62
Capitolo 4
Analisi dei dati
Ottenuto il modello analitico, è immediato verificarne la bontà, vedi figura 4.21,
confrontando l'accelerazione ricavata sperimentalmente dalla testa con l'output ottenuto
del modello quando in ingresso viene fornito il segnale accelerometrico del sedile. Si è
cosi modellizzato il comportamento del corpo umano soggetto a vibrazioni verticali in
posizione seduta.
Per determinare il modello analitico sono stati utilizzati i seguenti coefficienti:
Per formulare il modello viene utilizzato solo metà dei dati sperimentali mentre l’altra
metà dei dati viene utilizzata per la validazione del modello.
È stata anche effettuata un'analisi dei residui per comprendere il grado di affidabilità dei
risultati e, per il range di frequenza di interesse allo scopo degli studi, i modelli costruiti si
sono rilevati buoni. I residui, infatti, aumentano per frequenze molto elevate e, quindi,
l'errore alle basse frequenze può essere trascurato.
Figura 4.22: Analisi dei residui
63
Capitolo 4
Analisi dei dati
La funzione MATLAB che meglio approssima il fenomeno è risultata l'ARMAX. Lavorando
sui parametri caratteristici di tale modello sono stati ottenuti dei modelli matematici con
una buona capacità predittiva nella risposta del sistema uomo-veicolo. In particolare,
sono state effettuate differenti prove con soggetti tester con corporature diverse, per cui
si sono ottenuti altrettanti andamenti di coefficiente di trasmissibilità STH e di funzioni di
trasferimento: queste consentono, quindi, di descrivere il comportamento del corpo
umano tramite esperienze sperimentali ovvero non conoscendo il sistema umano in
quanto a masse ed elementi molla-smorzatore.
64
Capitolo 5
Correlazione
“Impara a tacere.
Lascia che la tua mente,
quieta,
ascolti e impari.”
Pitagora
5.1 Introduzione
Questa sezione è dedicata alla ricerca di una correlazione tra le caratteristiche
antropometriche degli individui e i coefficienti della funzione di trasferimento (STH)
determinati con la funzione "ARMAX" di MATLAB.
Inoltre, i coefficienti della funzione di trasferimento verranno correlati con la risposta di
un sistema meccanico a 3 gradi di libertà per determinare i parametri meccanici massa
, molla
e smorzatore
del corpo umano.
65
Capitolo 5
Correlazione
5.2 Acquisizione dei dati
5.2.1 Dati dei tester
Riporto di seguito una tabella riassuntiva dei dati dei tester.
Sesso
Età
Peso (Kg)
Altezza (cm)
Corporatura
Tester 1
m
25
80
186
Normale
Tester 2
m
24
70
184
Magro
Tester 3
m
24
75
180
Normale
Tester 4
m
24
71
185
Magro
Tester 5
m
28
60
175
Magro
Tester 6
m
25
65
183
Magro
Tester 7
m
26
68
170
Magro
Tester 8
f
29
55
165
Magro
Tester 9
m
29
78
184
Normale
Tester 10
m
25
75
186
Normale
Tester 11
m
26
78
175
Normale
Tester 12
f
25
68
173
Normale
Tester 13
m
23
68
174
Robusto
Tester 14
m
53
110
183
Robusto
Tester 15
f
24
45
165
Magro
Tester 16
m
25
77
182
Normale
Tester 17
m
25
68
180
Magro
Tester 18
m
31
68
172
Magro
Tester 19
f
24
51
160
Magro
Tester 20
m
27
68
183
Magro
66
Capitolo 5
Correlazione
Sesso
Età
Peso (Kg)
Altezza (cm)
Corporatura
Tester 21
m
25
82
181
Robusto
Tester 22
m
24
93
180
Robusto
Tester 23
f
25
64
167
Normale
Tester 24
m
24
88
186
Normale
Tester 25
m
26
77
185
Magro
Tester 26
m
25
82
185
Normale
Tester 27
m
24
70
182
Magro
Tester 28
m
25
73
171
Normale
Tester 29
f
24
52
165
Magro
Tester 30
m
25
92
173
Robusto
Tester 31
m
20
80
170
Robusto
Tester 32
f
25
72
166
Robusto
Tester 33
m
22
67
172
Normale
Tester 34
f
19
52
158
Magro
Tester 35
f
20
63
178
Magro
Tester 36
f
18
50
165
Magro
Tester 37
f
17
53
158
Normale
Tester 38
m
18
65
175
Magro
Tester 39
m
34
78
172
Robusto
Tester 40
m
26
57
172
Magro
Tabella 5.1: Riassunto delle caratteristiche antropometriche29
29
I tester 1, 2, 4, 5, 8, 9, 10, 11, 12, 14, 15, 16, 20, 21, 24, 27 e 33 non hanno contribuito all’identificazione
della funzione di trasferimento STH poiché il loro fit attraverso la funzione ARMAX di Matlab per
determinare l’output stimato è risultato inferiore al 70%.
67
Capitolo 5
Correlazione
5.2.2 Database dei coefficienti della funzione di trasferimento
La funzione di trasferimento determinata in MATLAB è una funzione razionale di quinto
grado al numeratore
e di sesto grado al denominatore
.
Attraverso il metodo “zoh”, la fdt viene convertita dal tempo discreto al tempo continuo
al fine di ottenere una correlazione anche con i parametri meccanici massa
e smorzatore
, molla
del corpo umano.
dove:
è l’accelerazione alla testa determinata dal modello;
è l’accelerazione al sedile
e
ricavata dai dati sperimentali;
sono i coefficienti della funzione di trasferimento calcolati nel dominio del
tempo continuo.
Una funzione di trasferimento è una rappresentazione matematica della relazione tra
l'ingresso (o input) di un sistema LTI (lineare tempo invariante) e la risposta (o output) del
sistema stesso. È necessario che il sistema sia lineare tempo invariante affinché la
trattazione teorica sia valida: in altre parole, tutti gli elementi facenti parte del sistema
devono avere un'equazione caratteristica lineare ed i valori dei parametri che
costituiscono il sistema devono essere costanti nel tempo.
dove:
è il segnale di input (accelerazione al sedile
);
è il segnale di output (accelerazione alla testa
) ricavato dal segnale di
input.
68
Capitolo 5
Correlazione
Effettuati tutti i test, vengono memorizzati in un database i valori dei coefficienti del
numeratore e del denominatore della funzione di trasferimento. Inoltre, vengono
memorizzati i valori dei poli (valori di
che annullano il denominatore della funzione di
trasferimento) e degli zeri (valori di che ne annullano il numeratore) perché il numero di
zeri e poli permette di approssimare la funzione di trasferimento.
5.3 Correlazione
Costruisco in MATLAB dei grafici in 3D per i parametri salvati nel database in funzione
delle caratteristiche antropometriche peso e altezza dei tester. I parametri del database
utilizzati sono: i coefficienti
e
di tutte le funzioni di trasferimento.
Attraverso l’utilizzo del toolbox Surface Fitting Tool di MATLAB, si ottiene una funzione:
per ogni parametro, dove:
è il peso [
] dei vari tester;
è l’altezza [ ] dei vari tester;
sono i vari coefficienti della funzione di trasferimento da correlare con
e .
Tale toolbox permette di identificare i valori affidabili alla correlazione (eliminando
manualmente gli altri) e di scegliere il tipo di correlazione. Ho scelto di utilizzare un
polinomio di secondo grado per
dove
e :
sono i coefficienti del polinomio di correlazione e
sono il grado di
e .
Si è scelto di utilizzare un polinomio del secondo ordine invece di un polinomio di grado
più alto perché la fisica del problema ci suggerisce che la funzione sia il più monotona
69
Capitolo 5
Correlazione
possibile. Una funzione troppo complessa imporrebbe alla curva numerosi massimi,
minimi e punti di flesso. Inoltre, un polinomio di grado basso, ridurrà sicuramente gli
errori di misurazioni delle accelerazioni durante la campagna sperimentale.
Riporto una tabella riassuntiva dei coefficienti delle varie
per i parametri
e
della funzione di trasferimento.
Tabella per parametri
:
a0
a1
a2
a3
a4
a5
p00
5.38659e12
3.58333e+11
1.56429e+9
1.05278e+8
2.64216e+5
7.09059e+3
p10
3.52057e10
1.67832e+9
1.43201e+7
4.28426e+5
1.99592e+3
36.33621
p01 -7.50420e+12 -4.70310e+11 -2.17770e+9 -1.35420e+8 -3.50349e+5 -9.40229e+3
p20
2.31294e+7
-1.08553e+5
-1.33584e+4 -2.91107e+2
p11 -2.21120e+10
-9.42341e+8
-7.14807e+6 -2.16754e+5 -1.04609e+3
-20.311326
p02
1.52878e+11
7.65516e+8
3.08412e+3
2.61281e+12
4.30189e+7
Tabella 5.2: Tabella riassuntiva dei coefficienti delle varie
Tabella per parametri
-1.09650
1.21261e+5
-0.00333084
per i parametri
30
:
b0
b1
b2
b3
b4
b5
p00
5.43097e+12
.51011e+11
-3.07087e+9
7.67773e+7
-4.51741e+5
4.04777e+3
p10
1.40783e+10
7.27040e+8
-4.33800e+7
3.01022e+5
-3.91278e+3
17.63954
p01 -6.74396e+12 -1.98104e+11
5.32264e+9
-9.93221e+7
6.80160e+5
-5.36837e+3
p20
1.85400e+6
-4.69510e+4
1.29775e+3
-0.49099
0.086347
p11 -1.05399e+10
-5.66550e+8
2.87343e+7
-2.84179e+5
2.27312e+3
-17.58053
p02
6.83013e+10
-2.10223e+9
3.42902e+7
-2.40837e+5
1.91319e+3
3.11215e+7
2.15731e+12
Tabella 5.3: Tabella riassuntiva dei coefficienti delle varie
30
per i parametri
30
I valori in tabella sono approssimati alla quinta cifra significativa; i risultati esatti in appendice A.4.
70
Capitolo 5
Correlazione
Grazie alla determinazione di questi coefficienti
, moltiplicati secondo l’equazione 5.2
per il peso e l’altezza di una generica persona, è possibile calcolare i parametri
e
per
tale persona, utili all’identificazione della funzione di trasferimento STH (secondo
l’equazione 5.1). Successivamente, conoscendo le accelerazioni dovute al tracciato e la
meccanica del veicolo (comportamento delle sospensioni, del sedile, ecc…), si arriva alla
determinazione dell’accelerazione alla testa del test.
A titolo di esempio, riporto il grafico del parametro
. Il resto dei grafici è in Appendice.
Figura 5.1: Grafico 3D della correlazione
Figura 5.2: Diagramma dei residui della correlazione
Lo scarto massimo che si nota dalla figura 5.2 è:
71
Capitolo 5
Correlazione
5.4 Equazione simbolica
Considerando il sistema meccanico in figura, l’equazione del moto è:
Figura 5.3: Sistema meccanico del corpo umano
Risolvendo questo sistema di equazioni si ottiene che l’accelerazione alla testa
funzione dell’accelerazione al sedile
è
ed è composta da una funzione razionale di quinto
grado al numeratore e di sesto al denominatore.
dove:
e
dipendono dai parametri meccanici massa
, molla
e smorzatore
del corpo umano.
72
Capitolo 5
Correlazione
Per risolvere il sistema e determinare l’equazione 5.4 si risolve la seguente relazione
matriciale:
Adottando questa simbologia:
la matrice
e B vengono costruite con i coefficienti del sistema di equazioni 5.3, con:
La matrice
serve per assegnare l’uscita desiderata, nel nostro caso
La matrice
viene costruita con i termini noti del sistema di equazioni 5.3:
. Dunque:
73
Capitolo 5
Correlazione
Le due espressioni di
(formula 5.1 e 5.4) hanno la stessa struttura e lo stesso grado al
numeratore e al denominatore. Dunque è possibile determinare gli 11 parametri
meccanici incogniti di un particolare tester risolvendo le 12 equazioni ottenute
eguagliando i coefficienti omologhi delle due espressioni di
(formula 5.1 e 5.4):
Il numero delle equazioni è superiore al numero delle incognite e di conseguenza
otterremo delle soluzioni multiple.
I coefficienti
e
valgono:
74
Capitolo 5
Correlazione
75
Capitolo 5
Correlazione
5.5 Esempio numerico
Vediamo adesso un esempio pratico sulla teoria esposta nel paragrafo precedente.
Consideriamo un individuo di peso
e altezza
. Considerando i valori
riportati nelle tabelle 5.2 e 5.3, e le caratteristiche antropometriche dell’esempio,
attraverso l’equazione 5.2 determino i parametri
e
:
Considerando adesso il sistema di equazioni 5.4 e le equazioni dei parametri
possibile determinare i parametri meccanici massa
, molla
e smorzatore
e
è
del
tester in esame.
Per risolvere tale sistema di 12 equazioni in 11 incognite non lineare, si è usato la
funzione fsolve di Matlab che, partendo da una soluzione di primo tentativo nota in
letteratura per un sistema a 3 gradi di libertà [7], attraverso un processo iterativo,
determina la soluzione per l’esempio numerico proposto, ossia per una persona di peso
e altezza
. Tuttavia, data la non linearità del sistema, la soluzione dipende
fortemente dalle condizioni iniziali.
76
Conclusioni
“Tutto il mio sapere è sapere
che nulla so”
“Sii più saggio degli altri, se
riesci; ma non andarglielo
mai a dire”
Socrate
Gli obiettivi preposti durante questa tesi di laurea sono stati raggiunti con un buon grado
di affidabilità. L'apparecchiatura hardware ed il software implementato per il
monitoraggio dell'indice rms secondo la ISO 2631 sono stati realizzati ed utilizzati in varie
prove sperimentali. In aggiunta a quanto esplicitamente richiesto dalla normativa italiana
è stato introdotto il dispositivo GPS, risultato elemento chiave durante l'analisi a
posteriori dei risultati ottenuti. Grazie ad un monitoraggio del percorso e della velocità
media sono state correlate e confrontate diverse prove sperimentali giungendo ad una
visione globale del fenomeno e avendo, di conseguenza, una comprensione più profonda
del problema delle vibrazioni su un veicolo a trazione terrestre. È stato possibile, quindi,
differenziare le cause che provocano elevati valori delle vibrazioni ed imputarle al veicolo
o al percorso eseguito.
Tutto il dispositivo è stato realizzato nell'ottica del low cost, riducendo notevolmente i
costi dell'attrezzatura rispetto ai dispositivi commerciali. Il software è, inoltre, in grado di
effettuare acquisizione dati anche su lunghi intervalli di tempo in aggiunta a quanto
77
Conclusioni
richiesto dalla normativa. L'algoritmo di calcolo è molto labile nell'impostazione
dell'intervallo temporale su cui calcolare l'accelerazione quadratica media ponderata in
frequenza. La normativa prevede di effettuare l'acquisizione su un significativo intervallo
temporale (generalmente qualche minuto) e poi di proiettare tale valore su un tempo di 8
ore. Il dispositivo realizzato è invece in grado di effettuare l'analisi direttamente su un
intervallo di 8 ore, non essendo la strumentazione invasiva per un monitoraggio costante.
Secondo importante risultato ottenuto è stata l'identificazione di un modello puramente
matematico per predire la risposta alle vibrazioni di un passeggero in un veicolo.
I test sperimentali sono stati effettuati su un percorso appositamente realizzato. I due
sensori utilizzati per il rilevamento delle accelerazioni sono stati posizionati uno sopra il
sedile e uno sopra la testa al fine di determinare la funzione STH. Per determinare
l’accelerazione alla testa si è deciso di fissare l’accelerometro sul cranio del tester invece
che tra i denti. Questa scelta si è dimostrata estremamente affidabile nel predire
l'accelerazione alla testa di un individuo avendo come dato solamente l'accelerazione
all'interfaccia tra il sedile ed il passeggero.
Terzo importante risultato è stato parametrizzare i coefficienti della funzione di
trasferimento in base a fattori antropometrici significativi per la risposta alle vibrazioni del
corpo umano. Ciò è stato possibile costruendo un database dei coefficienti della STH,
effettuando ripetute prove sperimentali utilizzando dei tester con differente peso,
altezza, sesso, età e corporatura. I coefficienti della funzione di trasferimento STH sono
stati correlati, attraverso una superficie generata con il toolbox di MATLAB surface fitting
tool, al peso e all’altezza dei tester, ottenendo una funzione per ogni coefficiente della
STH che dipende da queste caratteristiche antropometriche.
Quarto e ultimo importante risultato è stato correlare i coefficienti della funzione di
trasferimento STH con la risposta di un sistema meccanico a 3 gradi di libertà per
determinare i parametri meccanici massa
, molla
e smorzatore
del corpo
umano.
78
Conclusioni
Un'importante applicazione potrebbe essere l'utilizzo di tale funzione STH nel calcolo
dell'indice rms previsto dalla ISO 2631. Le curve di ponderazione della normativa, infatti,
non sono altro che una grezza approssimazione della fdt del corpo umano, ottenute con i
principi delle reti neurali. Effettuare una ponderazione in frequenza del segnale
utilizzando il modello matematico ottenuto in questa tesi di laurea significa considerare la
reale dose di vibrazioni assorbita dal corpo umano durante il periodo di esposizione. La
funzione di trasferimento analizzata ha riguardato solamente l'asse verticale, lungo la
colonna vertebrale, ma si potrebbe estendere la campagna sperimentale studiando anche
la risposta secondo le altri due direzioni principali, l'asse
e l'asse .
Un interessante approfondimento potrebbe essere quello di poter variare la frequenza di
eccitazione del sistema auto-tester variando la distanza tra i listelli e/o la velocità del
veicolo al fine di ottenere funzioni di trasferimento e indici rms ancora più generali.
Un ulteriore approfondimento potrebbe essere quello di modificare la campagna
sperimentale, ossia utilizzare, come sorgente di vibrazioni, una pedana vibrante su un
unico asse (l'asse ) invece di un veicolo che si muove lungo un tracciato, al fine di
eliminare i contributi delle vibrazioni lungo l'asse
e l'asse .
Dunque, unendo gli obiettivi principi di questa ricerca si ha: una strumentazione in grado
di monitorare durante tutto il tempo di esposizione alle vibrazioni l'indice rms fornito
dalla normativa; attraverso il database, è possibile determinare il modello di risposta del
corpo umano alle vibrazioni senza dover effettuare ulteriori prove sperimentali; e, infine,
si è giunti ad una conoscenza molto più profonda del problema delle vibrazioni su un
veicolo dell'attuale standard in questo campo di ricerca.
79
Appendice A
Codice dei programmi
“Esercitare liberamente il
proprio ingegno, ecco la vera
felicità”
“Non esiste un vero genio senza
una dose di follia”
Aristotele
A.1 Acquisizione dei dati sperimentali
L'acquisizione dati avviene con un programma compilato in C++, e richiama durante la sua
esecuzione degli eseguibili quali gnuplot.exe e wavelet.exe. Il primo è un programma
freeware disponibile in rete che plotta a video dei grafici, mentre il secondo è un
programma compilato in matlab che permette di calcolare e plottare l'analisi wavelet del
segnale. Sono presenti diversi commenti per facilitare la lettura del codice e funzioni della
Phidget, API, della IMSL e della GarXface.
Come interfaccia grafica l'eseguibile apre una finestra DOS dalla quale è possibile
monitorare le operazioni in corso.
Come prima cosa il programma chiede di inserire i parametri antropometrici dell’uomo
significativi per la mia trattazione, ossia sesso, età, peso, altezza e corporatura, che
verranno salvati in un file di testo. Successivamente viene chiesto di selezionare il
80
Codice dei programmi
Appendice A
dispositivo GPS: noi inseriremo sempre 0, ossia procederemo sempre escludendo il GPS
poiché il percorso utilizzato per le prove non necessita delle informazioni ricavate dal
GPS. Subito dopo inseriremo il numero di acquisizioni che si desidera effettuare, potendo
scegliere tra quattro possibilità, ossia 256, 512, 2048 e 8192, tutte potenze di 2 per
facilitare la successiva analisi di Fourier attraverso la FFT.
Prima di iniziare l'acquisizione dati dall'accelerometro e dal GPS il programma esegue una
serie di controlli, quali il corretto collegamento dei sensori ed il calcolo dell'inclinazione
iniziale dell'accelerometro.
Raggiunto il numero di acquisizione desiderate si interrompe la simulazione e tramite il
file wavelet.exe (programma compilato in Matlab) viene plottato a schermo l’analisi
wavelet per visualizzare i dati appena ricavati.
Se i dati sono ritenuti affidabili, i dati vengono salvati in un file di testo e spostati in
un’apposita cartella insieme ai dati della persona tester.
Infine il programma chiede se si vuole ripetere la procedura di acquisizione dati.
Riporto adesso il programma tre-accel.sln compilato in C++ per l’acquisizione dei dati.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include
#include
#include
#include
#include
#include
#include
"stdafx.h"
"phidget21.h"
<windows.h>
"GarXfaceAll.h"
<imsl.h>
<sstream>
<direct.h>
using namespace std;
d_complex *seat;d_complex *head;
int stat2 = mkdir("dati_temp");
int NUM;
int nogps=0;
double teta_1, teta_2, teta_3;
double phi_1, phi_2, phi_3;
81
Codice dei programmi
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Appendice A
double acc1_x, acc1_y, acc1_z;
double acc2_x, acc2_y, acc2_z;
double acc3_x, acc3_y, acc3_z;
GarXface4::Gps gps;
int valid;
double Latitude,Longitude,ve,vn,vu,speed,Alt;
double lat_sup=0;
double lat_inf=0;
double lon_sup=0;
double lon_inf=0;
double sum_vel=0;
tm* ptm;
CPhidgetAccelerometerHandle accel_1 = 0;
CPhidgetAccelerometerHandle accel_2 = 0;
CPhidgetAccelerometerHandle accel_3 = 0;
//Attesa in frazioni di secondo
void wait(double seconds)
{
clock_t endwait;
endwait=clock()+seconds*CLOCKS_PER_SEC;
while (clock()<endwait);
}
//Dati gps
int GPS()
{
GarXface4::PVTdata *p;
p= gps.GetPVTdata();
Latitude=GarXface4::Math::WGS84::radiansToDegrees(p>GetLatitude());
Longitude=GarXface4::Math::WGS84::radiansToDegrees(p>GetLongitude());
Alt=p->GetAltitude(); //Altitudine
ve=p->GetVelocityEast(); //Velocità verso est
vn = p->GetVelocityNorth(); //Velocità verso nord
vu = p->GetVelocityUp(); //Velocità verso l'alto
speed = GarXface4::Math::Velocity:: calculateSpeed(ve,vn,vu)*3.6;
//sum_vel=sum_vel+speed;
valid=p->GetValidData();
//Acquisisce il tempo dal GPS
bool valore=TRUE;
long timeRaw = GarXface4::Math::UTC::GarminTimeToLongTime(p>GetWnDays(),
p->GetTimeOfWeek(),p->GetLeapSeconds(),valore==TRUE);
82
Codice dei programmi
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Appendice A
time_t tempo=timeRaw;
ptm = localtime ( &tempo );
return 0;
}
//Controllo del collegamento dei dispositivi
int linking (){
int result_1,result_2,result_3;
const char *err;
//get the program to wait for an accelerometer device to be
attached
printf("\nCHECK DISPOSITIVI\n\n");
if((result_1=CPhidget_waitForAttachment((CPhidgetHandle)accel_1,
1000)))
{
CPhidget_getErrorDescription(result_1, &err);
printf("Problema con dispositivo num 52305: %s\n", err);
}
if((result_2=CPhidget_waitForAttachment((CPhidgetHandle)accel_2,
1000)))
{
CPhidget_getErrorDescription(result_2, &err);
printf("Problema con dispositivo num 50742: %s\n", err);
}
if((result_3=CPhidget_waitForAttachment((CPhidgetHandle)accel_3,
1000)))
{
CPhidget_getErrorDescription(result_3, &err);
printf("Problema con dispositivo num 50399: %s\n", err);
}
return 0;
}
//Identifica il numero seriale del dispositivo
int serial(){
int serial_1,serial_2,serial_3;
CPhidgetHandle phid_1=(CPhidgetHandle)accel_1;
CPhidget_getSerialNumber(phid_1, &serial_1);
printf("Serial Number accel_1: %10d\n", serial_1);
//Numero seriale del dispositivo
CPhidgetHandle phid_2=(CPhidgetHandle)accel_2;
CPhidget_getSerialNumber(phid_2, &serial_2);
printf("Serial Number accel_2: %10d\n", serial_2);
//Numero seriale del dispositivo
CPhidgetHandle phid_3=(CPhidgetHandle)accel_3;
CPhidget_getSerialNumber(phid_3, &serial_3);
printf("Serial Number accel_3: %10d\n", serial_3);
return 0;
}
83
Codice dei programmi
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
Appendice A
//Trasferimento dei file in dati
int trasferimento(int prove){
string name;
ostringstream file;
file <<"dati\\prova_"<<prove;
name= file.str();
file.str("");
int stat = mkdir(name.c_str());//Crea una cartella
file <<"dati\\prova_"<<prove<<"\\acc1.txt";
name= file.str();
file.str("");
CopyFile("dati_temp\\acc1.txt",name.c_str(), FALSE);
file <<"dati\\prova_"<<prove<<"\\acc2.txt";
name= file.str();
file.str("");
CopyFile("dati_temp\\acc2.txt",name.c_str(), FALSE);
file <<"dati\\prova_"<<prove<<"\\acc3.txt";
name= file.str();
file.str("");
CopyFile("dati_temp\\acc3.txt",name.c_str(), FALSE);
file <<"dati\\prova_"<<prove<<"\\gps.txt";
name= file.str();
file.str("");
CopyFile("dati_temp\\gps.txt",name.c_str(), FALSE);
return 0;
}
//Dati del soggetto tester
int tester(){
int *peso=new int; int *alt=new int; char *sesso=new char;
int *età=new int; char *corp=new char;
int *dist=new int; int *chassy=new int;
//int *gradi=new int;
FILE*tester=fopen("dati\\tester.txt","w");
printf("\nIMPOSTA DATI TESTER\n\n");
SESSO:
printf ("\nSesso (m/f): ");
scanf( "%c",sesso);
getchar();
if(*sesso!='m'){
if(*sesso!='f'){
goto SESSO;}}
84
Codice dei programmi
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
Appendice A
fprintf(tester,"Sesso: %c \n",*sesso);
ETÀ:
printf ("\nEta' : ");
scanf( "%d", età);
getchar();
if(*età<=0){
goto ETÀ;}
fprintf(tester,"\nEtà: %i anni\n",*età);
PESO:
printf ("\nPeso (kg): ");
scanf( "%d", peso);
getchar();
if(*peso<=0){
goto PESO;}
fprintf(tester,"\nPeso: %i Kg\n",*peso);
ALT:
printf ("\nAltezza (cm): ");
scanf( "%d", alt);
getchar();
if(*alt<=0){
goto ALT;}
fprintf(tester,"\nAltezza: %i cm\n",*alt);
CORPORATURA:
printf ("\nCorporatura: magro (M), normale (N) o robusto (R):
scanf( "%c",corp);
getchar();
if(*corp!='M'){
if(*corp!='N'){
if(*corp!='R'){
goto CORPORATURA;}}}
fprintf(tester,"\nCorporatura: %c \n",*corp);
fclose (tester);
delete
delete
delete
return
}
");
peso;delete dist;delete sesso;
chassy;delete alt;delete età;
corp;
0;
//Acquisizione dati
int data(){
FILE* acc1= fopen("dati_temp\\acc1.txt","w");
FILE* acc2= fopen("dati_temp\\acc2.txt","w");
FILE* acc3= fopen("dati_temp\\acc3.txt","w");
FILE* datgps=fopen("dati_temp\\gps.txt","w");
fprintf(datgps,"type,time,latitude,longitude,altitude,speed\n");
85
Codice dei programmi
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
Appendice A
double *tempo=new double[NUM];
double
double
double
double
double
double
*y_1=new
*y_3=new
*x_1=new
*x_3=new
*z_1=new
*z_3=new
double
double
double
double
double
double
[NUM];double *y_2=new double [NUM];
[NUM];
[NUM];double *x_2=new double [NUM];
[NUM];
[NUM];double *z_2=new double [NUM];
[NUM];
printf("\nPremere invio per iniziare l'acquisizione\n\n");
getchar();
clock_t clock();
for(int i=0;i<NUM;i++){
tempo[i]=0.001*(clock()/(CLOCKS_PER_SEC/1000));
//printf("tempo %f\n",tempo[i]);
if(nogps==0){
GPS();
if(Latitude>lat_sup|Longitude>lon_sup|Latitude
<lat_inf|Longitude<lon_inf)
{
fprintf (datgps,"T, %d/%d/%d %2d:%02d:%02d, ",1900+
(ptm->tm_year),
(ptm->tm_mon)+1,ptm->tm_mday, (ptm->tm_hour+1)%24,
ptm->tm_min,ptm->tm_sec);
fprintf(datgps,"%f, %f, %.3f, %.3f\n",
Latitude,Longitude,Alt,speed);
//printf("Lat: %f Long: %f\n",Latitude,Longitude);
lat_sup=Latitude+0.0002;
lat_inf=Latitude-0.0002;
lon_sup=Longitude+0.0002;
lon_inf=Longitude-0.0002;}}
//MATRICE DI ROTAZIONE 1 (macchina)
CPhidgetAccelerometer_getAcceleration(accel_1,0,&acc1_y);
CPhidgetAccelerometer_getAcceleration(accel_1,1,&acc1_x);
CPhidgetAccelerometer_getAcceleration(accel_1,2,&acc1_z);
x_1[i]=-acc1_y*sin(teta_1)*sin(phi_1)+acc1_x*cos(phi_1)+
acc1_z*cos(teta_1)*sin(phi_1);
y_1[i]=acc1_y*cos(teta_1)+acc1_z*sin(teta_1);
z_1[i]=-acc1_y*sin(teta_1)*cos(phi_1)-acc1_x*sin(phi_1)+
acc1_z*cos(teta_1)*cos(phi_1);
//Dati testa senza matrice rotazione
CPhidgetAccelerometer_getAcceleration(accel_2,0,&acc2_y);
CPhidgetAccelerometer_getAcceleration(accel_2,1,&acc2_x);
86
Codice dei programmi
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
Appendice A
CPhidgetAccelerometer_getAcceleration(accel_2,2,&acc2_z);
acc2_y=-acc2_y; //perchè montato al contrario
acc2_x=-acc2_x; //perchè montato al contrario
x_2[i]=acc2_x;
y_2[i]=acc2_y;
z_2[i]=acc2_z;
//MATRICE DI ROTAZIONE 3 (sedile)
CPhidgetAccelerometer_getAcceleration(accel_3,0,&acc3_y);
CPhidgetAccelerometer_getAcceleration(accel_3,1,&acc3_x);
CPhidgetAccelerometer_getAcceleration(accel_3,2,&acc3_z);
x_3[i]=-acc3_y*sin(teta_3)*sin(phi_3)+acc3_x*cos(phi_3)+
acc3_z*cos(teta_3)*sin(phi_3);
y_3[i]=acc3_y*cos(teta_3)+acc3_z*sin(teta_3);
z_3[i]=-acc3_y*sin(teta_3)*cos(phi_3)-acc3_x*sin(phi_3)+
acc3_z*cos(teta_3)*cos(phi_3);
printf("num: %i x: %.2f y: %.2f z: %.2f\n",
i,x_2[i],y_2[i],z_2[i]);
//Tempo di attesa in secondi
wait(0.016);
}
printf("\n");
for(int i=0;i<NUM;i++){
fprintf (acc1,"tempo: %.3f x: %.3f y: %.3f z: %.3f\n",
tempo[i],x_1[i]*9.81,y_1[i]*9.81,z_1[i]*9.81);
fprintf (acc2,"tempo: %.3f x: %.3f y: %.3f z: %.3f\n",
tempo[i],x_2[i]*9.81,y_2[i]*9.81,z_2[i]*9.81);
fprintf (acc3,"tempo: %.3f x: %.3f y: %.3f z: %.3f\n",
tempo[i],x_3[i]*9.81,y_3[i]*9.81,z_3[i]*9.81);}
delete [] x_1;delete [] x_2;delete [] x_3;
delete [] y_1;delete [] y_2;delete [] y_3;
delete [] z_1;delete [] z_2;delete [] z_3;
fclose(acc1);
fclose(acc2);
fclose(acc3);
fclose(datgps);
return 0;
}
void inclinazione(){
printf("\nFermare la macchina e premere invio\n\n");
87
Codice dei programmi
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
Appendice A
getchar();getchar();int COUNT=11;
double *x1=new double [COUNT];double *y1=new double [COUNT];
double *z1=new double [COUNT];
double *x2=new double [COUNT];double *y2=new double [COUNT];
double *z2=new double [COUNT];
double *x3=new double [COUNT];double *y3=new double [COUNT];
double *z3=new double [COUNT];
wait(0.3);
x1[0]=0; y1[0]=0; z1[0]=0; x2[0]=0; y2[0]=0; z2[0]=0;
x3[0]=0; y3[0]=0; z3[0]=0;
for(int i=1;i<COUNT;i++){
CPhidgetAccelerometer_getAcceleration(accel_1,0,&acc1_y);
CPhidgetAccelerometer_getAcceleration(accel_1,1,&acc1_x);
CPhidgetAccelerometer_getAcceleration(accel_1,2,&acc1_z);
x1[i]=acc1_x+x1[i-1]; y1[i]=acc1_y+y1[i-1]; z1[i]=acc1_z+z1[i-1];
CPhidgetAccelerometer_getAcceleration(accel_2,0,&acc2_y);
CPhidgetAccelerometer_getAcceleration(accel_2,1,&acc2_x);
CPhidgetAccelerometer_getAcceleration(accel_2,2,&acc2_z);
x2[i]=acc2_x+x2[i-1]; y2[i]=acc2_y+y2[i-1]; z2[i]=acc2_z+z2[i-1];
CPhidgetAccelerometer_getAcceleration(accel_3,0,&acc3_y);
CPhidgetAccelerometer_getAcceleration(accel_3,1,&acc3_x);
CPhidgetAccelerometer_getAcceleration(accel_3,2,&acc3_z);
x3[i]=acc3_x+x3[i-1]; y3[i]=acc3_y+y3[i-1]; z3[i]=acc3_z+z3[i-1];
wait(0.016);}
//Fa una media su 10 valori per minimizzare l'errore
acc1_y=y1[COUNT-1]/(COUNT-1); acc1_x=x1[COUNT-1]/(COUNT-1);
acc1_z=z1[COUNT-1]/(COUNT-1);
acc2_y=y2[COUNT-1]/(COUNT-1); acc2_x=x2[COUNT-1]/(COUNT-1);
acc2_z=z2[COUNT-1]/(COUNT-1);
acc3_y=y3[COUNT-1]/(COUNT-1); acc3_x=x3[COUNT-1]/(COUNT-1);
acc3_z=z3[COUNT-1]/(COUNT-1);
//Calcola l'angolo di inclinazione dei dispositivi
teta_1=-asin(acc1_y/sqrt(pow(acc1_y,2)+pow(acc1_z,2)));
phi_1=-asin(acc1_x/sqrt(pow(acc1_x,2)+pow(acc1_z,2)));
teta_2=-asin(acc2_y/sqrt(pow(acc2_y,2)+pow(acc2_z,2)));
phi_2=-asin(acc2_x/sqrt(pow(acc2_x,2)+pow(acc2_z,2)));
teta_3=-asin(acc3_y/sqrt(pow(acc3_y,2)+pow(acc3_z,2)));
phi_3=-asin(acc3_x/sqrt(pow(acc3_x,2)+pow(acc3_z,2)));
printf("Inclinazione accelerometro chassy: phi= %.1f gradi
teta=%.1f gradi\n",
phi_1*180/3.1415,teta_1*180/3.1415);
printf("Inclinazione accelerometro sedile: phi= %.1f gradi
teta=%.1f gradi\n",
phi_3*180/3.1415,teta_3*180/3.1415);
printf("Inclinazione accelerometro testa : phi= %.1f gradi
teta=%.1f gradi\n",
phi_2*180/3.1415,teta_2*180/3.1415);
88
Codice dei programmi
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
Appendice A
delete [] x1;delete [] y1;delete [] z1;
delete [] x2;delete [] y2;delete [] z2;
delete [] x3;delete [] y3;delete [] z3;
}
int main()
{
int stat = mkdir("dati");
int prove=0;
printf("\n-SOFTWARE PER ACQUISIZIONE DATI DA ACCELEROMETRI
PHIDGET-\n\n");
char nuova;char buona;
//Dati del tester
tester();
GarXface4::GpsUsbDevice usbDev;
SelectPort:
printf("\n\nSeleziona il dispositivo GPS:\n");
printf("(selezionare 0 per procedere senza GPS)\n\n");
GarXface4::UsbDeviceNameList lst;
int p;
int c = lst.GetCount();
for(int i=0; i<c; i++){
GarXface4::UsbDeviceName *n;
n = lst[i];
printf("%i) Device %i \n",i+1,i+1);}
printf("\n>");
if (!scanf( "%d", &p))
goto SelectPort;
if(p==0){
nogps=1;} //Impostando 0 si esclude il gps
else{
if ((p-1) <0 || (p-1)>=c)
{goto SelectPort;}}
if(nogps==0){
usbDev.SetDeviceName(lst[p-1]->GetDeviceName());
gps.Open(&usbDev);
gps.PvtDataOn();}
//create the accelerometer object
CPhidgetAccelerometer_create(&accel_1);
CPhidgetAccelerometer_create(&accel_2);
CPhidgetAccelerometer_create(&accel_3);
89
Codice dei programmi
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
Appendice A
//Apre i dispositivi
CPhidget_open((CPhidgetHandle)accel_1, 50742); //macchina
CPhidget_open((CPhidgetHandle)accel_2, 52305); //testa
CPhidget_open((CPhidgetHandle)accel_3, 50399); //sedile
SelectNUM:
//Imposta il numero di acquisizioni
printf("\nImposta il numero di acquisizioni\n\n");
printf("- 256\n");
printf("- 512\n");
printf("- 2048\n");
printf("- 8192\n");
printf("\n>");
scanf( "%d", &NUM);
if (NUM!=256)
{if (NUM!=512){
if (NUM!=2048){
if (NUM!=8196){
goto SelectNUM;}}}}
//Calcola l'inclinazione dei dispositivi
inclinazione();
//Acquisizione dati
data();
system("wavelet.exe");//richiama l'eseguibile compilato in
//in matlab che mostra l'analisi wavelet dei segnali
Buona:
printf("\nSalvare la prova come valida? y/n\n");
scanf( "%c", &buona);
if (!scanf( "%c", &buona))
{goto Buona;}
else{
if(buona!='y'){
if(buona!='n'){
goto Buona;}}
else{
//Ordina i file in apposite cartelle
trasferimento(prove);
prove++;
}
}
90
Codice dei programmi
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
Appendice A
Nuova:
printf("\nProcedere con una nuova acquisizione? y/n\n");
scanf( "%c", &nuova);
if (!scanf( "%c", &nuova))
{goto SelectNUM;}
else{
if(nuova!='y'){
if(nuova!='n'){
goto Nuova;}}
else{goto SelectNUM;}
}
//Interruzione
getchar();
//Chiude dispositivi
printf("\nChiusura dispositivi\n");
CPhidget_close((CPhidgetHandle)accel_1);
CPhidget_delete((CPhidgetHandle)accel_1);
CPhidget_close((CPhidgetHandle)accel_2);
CPhidget_delete((CPhidgetHandle)accel_2);
CPhidget_close((CPhidgetHandle)accel_3);
CPhidget_delete((CPhidgetHandle)accel_3);
//Interruzione
getchar();
return 0;
}
Quando il programma richiama l'eseguibile wavelet.exe, vengono letti i file acc2.txt e
acc3.txt, contenenti le accelerazioni della testa e del sedile, e poi plottate le analisi CWT
come in figura A.1 e A.2.
91
Codice dei programmi
Appendice A
Figura A.1: Analisi CWT del segnale alla testa
Figura A.2: Analisi CWT del segnale al sedile
92
Codice dei programmi
Appendice A
A.2 Analisi dei dati sperimentali
Attraverso questo programma compilato in MATLAB si è eseguita l'analisi dei dati
sperimentali: il segnale ricavato dagli accelerometri viene filtrato, successivamente viene
effettuata l'analisi Wavelet e infine viene effettuata l’analisi di Fourier attraverso la FFT.
L’analisi viene compiuta per ogni persona usata come tester.
Per minimizzare l’errore dovuto a movimenti accidentali della persona utilizzata come
tester, vengono effettuate tre prove per ogni persona e i valori delle accelerazioni,
ricavate dal precedente programma, vengono mediate e utilizzate nel seguente
programma.
Il programma filtro_wavelet_fft_x3prova.m è riportato qui di seguito:
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
%%
%
%
%
%
ANALISI DATI SPERIMENTALI
Segue la spiegazione con commenti e codice sull'analisi dei
dati sperimentali; il segnale ricavato dagli accelerometri
viene filtrato, successivamente viene effettuata l'analisys
Wavelet e infine viene effettuata la FFT.
% Per effettuare analisi vengono utilizzati i dati provenienti da
% 3 prove sperimentali
%%
clc
clear all
close all
%% CARICAMENTO DATI
% seleziona i dati corrispondenti alle prove da raggruppare
stringa = {'Dati_Guido/prova_0/',
'Dati_Guido/prova_1/','Dati_Guido/prova_2/'};
% estraggo dai file txt delle prove i valori delle accelerazioni
% alla testa e al sedile di interesse, ossia lungo z
for i=1:length(stringa)
ac2 =fopen(strcat(char(stringa(i)),'acc2.txt'),'r');
a2 = fscanf(ac2, '%*s %f %*s %f %*s %f %*s %f',[4 inf]);
a2=a2';
fclose(ac2);
93
Codice dei programmi
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Appendice A
ac3 =fopen(strcat(char(stringa(i)),'acc3.txt'),'r');
a3 = fscanf(ac3, '%*s %f %*s %f %*s %f %*s %f',[4 inf]);
a3=a3';
fclose(ac3);
time(:,i) = a2(:,1);
acc2(:,i) = a2(:,4);
acc3(:,i) = a3(:,4);
end
% valori delle accelerazioni mediate per le 3 prove
acc2=(acc2(:,1)+acc2(:,2)+acc2(:,3))/3;
acc3=(acc3(:,1)+acc3(:,2)+acc3(:,3))/3;
time=(time(:,1));
% numero di acquisizioni
[m2,n2]=size(acc2);
numero_acquisizioni=size(acc2)
Nfig = 1;
% tempo di campionamento
Ts = (time(3)-time(2)) % tempo di campionamento
%% FILTRAGGIO DEI SEGNALI
% Viene utilizzato un filtro che approssima un passa banda
%%% PARAMETRI FILTRO %%%
% guadagno statico del filtro
K = 1/(10^(199.5/20)); %ricorda che 1 =>
% prima pulsazione di rottura, zero
omega1 = 2*pi * 0.01;
% seconda pulsazione di rottura, polo
omega2 = 2*pi * 0.1;
% terza pulsazione di rottura, polo
omega3 = 2*pi * 40;
20 log_{10}(1) = 0 db
% molteplicita' dei poli in omega1 e omega3, rispettivamente, per
% aumentarne la pendenza
nz = 10;
np = 10;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tau1 = 1/omega1;
tau2 = 1/omega2;
94
Codice dei programmi
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Appendice A
tau3 = 1/omega3;
Fs = tf([1],[1]);
for i=1:nz
Fs = Fs * tf([tau1 1 ],[tau2 1]); % (tau1*s+1)/(tau2*s+1)
end
for i=1:np
Fs = Fs * tf([1],[tau3 1]); % (tau1 * s + 1)
end
Fs = K * Fs;
% Tempo di campionamento in secondi
SampleTime = Ts;
% Passaggio dalla trasformata di Laplace alla trasformata Z
% Fz = c2d(Fs,SampleTime,'foh')
% puoi utilizzare diverse approssimazioni: 'zoh'....
figure(Nfig)
Nfig = Nfig +1;
bode(Fs)
title('Diagramma di Bode del filtro') % dei filtri')
legend('Fs')%,'Fz')
grid on
% Vengono calcolati i segnali filtrati, per ora si considerano
% tutti i tempi, a seguito della wavelet analisi si selezioneranno
% i valori di tempo migliori per proseguire con l'analisi
% ricalcolo il vettore dei tempi
iinf = 1;
isup = length(time);
for i = 0:isup-iinf %length(time)
tsim(i+1) = time(iinf) - time(1) + i*Ts;
end
usim = interp1(time-time(1),acc3',tsim) - mean(acc3);
ysim = interp1(time-time(1),acc2',tsim) - mean(acc2);
% u è l'accelerazione al sedile filtrata
ufiltrata = lsim(Fs,usim,tsim);
% y è l'accelerazione che misuri alla testa filtrata
yfiltrata = lsim(Fs,ysim,tsim);
95
Codice dei programmi
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
Appendice A
% Diagrammo i segnali originali e quelli filtrati
figure(Nfig)
Nfig = Nfig +1;
subplot(2,1,1)
plot(tsim,acc2)
title('Accelerazione
xlabel('t[s]')
ylabel('A2[m/s^2]')
subplot(2,1,2)
plot(tsim,yfiltrata)
title('Accelerazione
xlabel('t[s]')
ylabel('A2[m/s^2]')
figure(Nfig)
Nfig=Nfig+1;
subplot(2,1,1)
plot(tsim,acc3)
title('Accelerazione
xlabel('t[s]')
ylabel('A3[m/s^2]')
subplot(2,1,2)
plot(tsim,ufiltrata)
title('Accelerazione
xlabel('t[s]')
ylabel('A3[m/s^2]')
Alla Testa non Filtrata (Dominio del Tempo)')
Alla Testa Filtrata (Dominio del Tempo)')
Al Sedile non Filtrata (Dominio del Tempo)')
Al Sedile Filtrata (Dominio del Tempo)')
%% WAVELET ANALYSIS
% La wavelet analisi viene utilizzata con il solo scopo di
% individuare gli intervalli di tempo in cui non vi siano
% contributi frequenziali che compaiono e scompaiono. Questo
% permette un'efficacia molto maggiore della FFT sui segnali.
signal = ufiltrata - mean(ufiltrata);
% è necessario toglierne il valore costante
signalname = 'Accelerazione Sedile';
lev
= 8;
nbcol = 128;
topa = 128; %topa <= nbcol
colorn = 256;
wname = 'db8';
waveletanalysis_dan1(signal,lev,nbcol,topa,colorn,wname,Ts,Nfig,
signalname)
signal = yfiltrata - mean(yfiltrata);
signalname = 'Accelerazione Testa';
96
Codice dei programmi
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
Appendice A
Nfig = Nfig + 1;
waveletanalysis_dan1(signal,lev,nbcol,topa,colorn,wname,Ts,Nfig,
signalname)
disp('Ora trova un intervallo di tempo con contributi frequenziali
costanti ed inserisci')
disp('indice minimo e massimo\n')
iinf = 200 %indice dei tempi inferiore
isup = 450 %indice dei tempi superiore
%iinf = input('Inserire indice dei tempi inferiore:')
%isup = input('Inserire indice dei tempi superiore:')
ufiltrataperiodo = ufiltrata(iinf:isup);
yfiltrataperiodo = yfiltrata(iinf:isup);
tsimperiodo = tsim(iinf:isup);
%% FFT ANALISYS
% Opero l'analisi di Fourier sull'intervallo determinato con la
% Wavelet Analisys
Nfig = Nfig +1;
figure(Nfig)
subplot(3,1,1)
n = pow2(nextpow2(length(ufiltrataperiodo))); % Transform length
y = fft(ufiltrataperiodo,n); % DFT
f = (0:n-1)*(1/Ts/n); % Frequency range
power1 = y.*conj(y)/n; % Power of the DF
plot(f(1:floor(length(f)/2)),power1(1:floor(length(power1)/2)))
%axis([0 250 0 0.003*max(power)])
xlabel('Frequency (Hz)')
ylabel('Power')
title('{\bf Analisi dei dati sperimentali }')
legend('Accelerazione al sedile filtrata (intervallo prescelto)')
subplot(3,1,2)
y = fft(yfiltrataperiodo,n); % DFT
power2 = y.*conj(y)/n; % Power of the DF
plot(f(1:floor(length(f)/2)),power2(1:floor(length(power2)/2)))
%axis([0 250 0 0.0005*max(power)])
xlabel('Frequency (Hz)')
ylabel('Power')
legend('Accelerazione alla testa filtrata (intervallo prescelto)')
subplot(3,1,3)
plot(f(1:floor(length(f)/2)),
power2(1:floor(length(power1)/2))./(power1(1:floor(length(power1)/
2)) + 0.1))
legend('{\bf STH filtrata (intervallo prescelto) }')
97
Codice dei programmi
Appendice A
Il filtro_wavelet_fft_x3prova.m precedente fichiama la funzione waveletanalysis_dan1.m
per la wavelet analysis:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
function
waveletanalysis_dan1(signal,lev,nbcol,topa,colorn,wname,Tsample,
Nfig,signalname)
%Perform the discrete wavelet transform (DWT) at level 5 using
db1.
[c,l] = wavedec(signal,lev,wname);
%Expand discrete wavelet coefficients for plot.
len = length(signal);
cfd = zeros(lev,len);
for k = 1:lev
d = detcoef(c,l,k);
d = d(:)';
d = d(ones(1,2^k),:);
cfd(k,:) = wkeep1(d(:)',len);
end
cfd = cfd(:);
I = find(abs(cfd)<sqrt(eps));
cfd(I) = zeros(size(I));
cfd
= reshape(cfd,lev,len);
cfd = wcodemat(cfd,nbcol,'row');
figure(Nfig)
%Perform the continuous wavelet transform (CWT) and visualize
results
set(subplot(2,1,1),'Xtick',[]);
plot(signal,'r');
title(strcat('{\bf',signalname,'}'));
set(gca,'Xlim',[1 length(signal)]);
% subplot(3,1,2);
% colormap(Hot);%(cool(colorn));
% image(cfd);
% tics = 1:lev;
% labs = int2str(tics');
% set(gca,...
%
'YTicklabelMode','manual','Ydir','normal', ...
%
'Box','On','Ytick',tics,'YTickLabel',labs ...
%
);
% title('Discrete Transform, absolute coefficients.');
% ylabel('Level');
% set(subplot(3,1,2),'Xtick',[]);
98
Codice dei programmi
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Appendice A
subplot(2,1,2);
scales = (1:topa);
cwt(signal,scales,wname,'plot');
colormap(cool(colorn));
tt = get(gca,'Yticklabel');
[r,c] = size(tt);
yl = char(topa*ones(r,c));
for k = 1:1:r , yl(k,:) = tt(k,:); end
set(gca,'Yticklabel',yl);
%
%
%
%
%
%
%
%
Nfig = Nfig +1;
figure(Nfig)
pseudof = scal2frq(scales,wname,Tsample);
plot(scales, pseudof)
ylabel('Pseudo frequency')
xlabel('scales')
title('Pseudo frequencies')
99
Codice dei programmi
Appendice A
A.3 Identificazione del modello lineare
Dopo l’analisi dei dati, questo programma compilato in MATLAB determina la funzione di
trasferimento STH attraverso uno dei tre modelli matematici proposti e salva in un
database i coefficienti del numeratore, i coefficienti del denominatore, i poli e gli zeri di
tale funzione.
Il programma Identificazionex3Prove.m è riportato qui di seguito:
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
29
30
31
32
33
34
35
%% ANALISI DATI SPERIMENTALI E IDENTIFICAZIONE MODELLO LINEARE
%
%
%
%
Segue la spiegazione con commenti e codice (sfondo pagina grigia)
dell'elaborazione dei dati sperimentali e la tecnica per identificare
la funzione di trasferimento (fdt) che lega l'accelerazione al sedile
con quella alla base del cranio.
% Miglior fitting con le prove 0-1-2 nella cartella dati
clc
clear all
close all
%%%%%%%%%%%%%%%%%%%%%%%%
%% CARICAMENTO DATI %%
%%%%%%%%%%%%%%%%%%%%%%%%
% seleziona i dati corrispondenti alle prove da raggruppare
stringa =
{'Acquisizione_Dati/Tester_40/prova_0/','Acquisizione_Dati/Tester_40/prov
a_1/','Acquisizione_Dati/Tester_40/prova_2/'};
acc2=zeros(256,3);
acc3=zeros(256,3);
for i=1:length(stringa)
ac1 =fopen(strcat(char(stringa(i)),'acc1.txt'),'r');
a1 = fscanf(ac1, '%*s %f %*s %f %*s %f %*s %f',[4 inf]);
a1=a1';
fclose(ac1);
ac3 =fopen(strcat(char(stringa(i)),'acc3.txt'),'r');
a3 = fscanf(ac3, '%*s %f %*s %f %*s %f %*s %f',[4 inf]);
a3=a3';
fclose(ac3);
100
Codice dei programmi
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Appendice A
acc2(:,i) = a1(:,4); %output (testa)
acc3(:,i) = a3(:,4); %input (sedile)
end
time1=0:0.016:(0.016*255);
time1=time1';
time = [time1,time1,time1];
Nfig = 1;
Ts = (time(3)-time(2)) % tempo di campionamento
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% FILTRAGGIO DEI SEGNALI %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% guadagno statico del filtro
K = 1/(10^(199.5/20)); %ricorda che 1 => 20 log_{10}(1) = 0 db
% prima pulsazione di rottura, zero
omega1 = 2*pi * 0.01;
% seconda pulsazione di rottura, polo
omega2 = 2*pi * 0.1;
% terza pulsazione di rottura, polo
omega3 = 2*pi * 60;
% molteplicita' dei poli in omega1 e omega3, rispettivamente, per
% aumentarne la pendenza
nz = 10;
np = 10;
tau1
tau2
tau3
Fs =
= 1/omega1;
= 1/omega2;
= 1/omega3;
tf([1],[1]);
for i=1:nz
Fs = Fs * tf([tau1 1 ],[tau2 1]); % (tau1 * s + 1)/(tau2 * s + 1)
end
for i=1:np
Fs = Fs * tf([1],[tau3 1]); % (tau1 * s + 1)
end
Filtro = K * Fs
% Filtraggio del segnale
ufiltrata=zeros(256,3);
yfiltrata=zeros(256,3);
usim=zeros(256,3);
ysim=zeros(256,3);
for i=1:length(stringa)
usim(:,i) = acc3(:,i) - mean(acc3(:,i));
101
Codice dei programmi
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
Appendice A
ysim(:,i) = acc2(:,i) - mean(acc2(:,i));
% u è l'accelerazione al sedile filtrata
ufiltrata(:,i) = lsim(Filtro,usim(:,i),time(:,i));
% y è l'accelerazione alla testa filtrata
yfiltrata(:,i) = lsim(Filtro,ysim(:,i),time(:,i));
end
%%%%%%%%%%%%%%%%%%%%%%%
%% IDENTIFICAZIONE %%
%%%%%%%%%%%%%%%%%%%%%%%
%
%
%
%
%
%
%
%
%
%
%
%
La funzione di trasferimento viene identificata mediante la funzione
"armax" che utilizza un algoritmo di proiezione ai minimi quadrati
robustificato in cui vengono passati il numero dei poli _na_ che si
suppone abbia la funzione di trasferimento (fdt) reale (radici del
denominatore), il numero degli zeri _nb_ (radici del numeratore).
Vengono inoltre passati anche i dati sperimentali di ingresso uscita,
ovvero accelerazione al sedile ed al cranio, e l'algoritmo fornisce i
coefficienti della fdt.
Identifico il modello con metà dei dati acquisiti e utilizzo l'altra
metà per validare i risultati
ufiltmeta=zeros(128,3);
yfiltmeta=zeros(128,3);
for i=1:length(stringa)
for j=1:length(ufiltrata)/2
ufiltmeta(j,i)=ufiltrata(j,i);
yfiltmeta(j,i)=yfiltrata(j,i);
end
end
% prepara i dati unendo le diverse prove sperimentali (TUTTI I CAMPIONI)
data = merge(iddata(yfiltrata(:,1),ufiltrata(:,1),Ts),...
iddata(yfiltrata(:,2),ufiltrata(:,2),Ts),...
iddata(yfiltrata(:,3),ufiltrata(:,3),Ts))
% prepara i dati unendo le diverse prove sperimentali
% (METÀ CAMPIONI SPERIMENTALI)
datameta = merge(iddata(yfiltmeta(:,1),ufiltmeta(:,1),Ts),...
iddata(yfiltmeta(:,2),ufiltmeta(:,2),Ts),...
iddata(yfiltmeta(:,3),ufiltmeta(:,3),Ts))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARAMETRI DA MODIFICARE
%
% Parametri buoni [8 8 3 2 3 2 armax] anche[7 8 2 1] [8 6 0 3]
% OTTIMO [7 8 0 0]
102
Codice dei programmi
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
Appendice A
% Con le acc della testa [8 8 0 1]
best=[6 7 0 0]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
na
nb
nc
nk
=
=
=
=
6
6
0
0
%
%
%
%
%
grado denominatore
grado numeratore +1
è il grado del numeratore che si associa al disturbo (vedi help)
RITARDO in campioni (ad esempio se nk=1 allora l'uscita risente
dei dati precedenti al tempo nk-1)
nf = 10 % grado denominatore ingresso , per PEM
nd = 2 % grado denominatore errore , per PEM
focuses = {'simulation','prediction'};
focus = 2;
%tolleranza
idtol = 1e-6;
%numero massimo di iterazioni
maxiter = 300;
% Scelta del Modello
metodo = {'arx','armax','pem'};
scelta = 2;
switch char(metodo(scelta))
case 'arx'
%A(q) y(t) = B(q) u(t-nk) + e(t)
orders = [na nb nc]
modello_totale =
arx(datameta,orders,'focus',char(focuses(focus)),'tolerance',idtol,'maxit
er',maxiter)
case 'armax'
orders = [na nb nc nk]
modello_totale =
armax(datameta,orders,'focus',char(focuses(focus)),'tolerance',idtol,'max
iter',maxiter)
case 'pem'
% A(q) y(t) = [B(q)/F(q)] u(t-nk) + [C(q)/D(q)] e(t)
orders =[na nb nc nd nf nk]
modello_totale =
pem(datameta,orders,'focus',char(focuses(focus)),'tolerance',idtol,'maxit
er',maxiter)
end
103
Codice dei programmi
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
Appendice A
Fmodello = tf(modello_totale.b,modello_totale.a,Ts)
figure(Nfig)
Nfig = Nfig +1;
bode(Fmodello,[1:0.1:180])
grid on
title('Modello')
% Confronto tra i Dati Stimati e i Dati Sperimentali delle 3 prove
figure(Nfig)
Nfig = Nfig +1;
ymodello=zeros(256,3);
for i=1:length(stringa)
ymodello(:,i) = lsim(1*Fmodello,ufiltrata(:,i),time(:,i));
end
subplot(3,1,1)
plot(time(:,1),yfiltrata(:,1),'-c',time(:,1),ymodello(:,1),'r','linewidth',1.5)
title('Confronto tra i Dati Stimati e i Dati Sperimentali delle 3 prove')
xlabel('Time (sec)','Interpreter','Latex')
ylabel('$m/sec^2$','Interpreter','Latex')
legend('Experimental data 1° Prova','Estimated data 1° Prova')
subplot(3,1,2)
plot(time(:,2),yfiltrata(:,2),'-y',time(:,2),ymodello(:,2),'b','linewidth',1.5)
xlabel('Time (sec)','Interpreter','Latex')
ylabel('$m/sec^2$','Interpreter','Latex')
legend('Experimental data 2° Prova','Estimated data 2° Prova')
subplot(3,1,3)
plot(time(:,3),yfiltrata(:,3),'-g',time(:,3),ymodello(:,3),'m','linewidth',1.5)
xlabel('Time (sec)','Interpreter','Latex')
ylabel('$m/sec^2$','Interpreter','Latex')
legend('Experimental data 3° Prova','Estimated data 3° Prova')
advice(modello_totale)
figure(Nfig)
Nfig = Nfig +1;
compare(data,modello_totale)
title('Compare')
figure(Nfig)
Nfig = Nfig +1;
e = resid(data,modello_totale,'fr')
me = arx(e,[10 10 0]);
bode(me,[1:0.1:180],'sd',3,'fill')
title('')
grid on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
104
Codice dei programmi
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
Appendice A
%% Analissi del modello %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[hsv,baldata] = hsvd(Fmodello)
% Calcolo delle funzioni di trasferimento a tempo continuo
Fmodellos = d2c(Fmodello,'zoh')
figure(Nfig)
Nfig = Nfig +1;
bode(Fmodello)
hold on
grid on
bode(Fmodellos,[0.1:0.1:100])
hold off
legend('Fmodello','Fmodellos')
% Calcolo dei coefficienti del numeratore e del denominatore della
funzione
% di trasferimento a tempo continuo
[num,den] = tfdata(Fmodellos);
NUM = cell2mat(num);
DEN = cell2mat(den);
% Calcolo degli zeri e dei poli della funzione di trasferimento a tempo
% continuo
zeri = roots(cell2mat(num))
zeri = zeri';
poli = roots(cell2mat(den))
poli = poli';
105
Codice dei programmi
Appendice A
A.4 Database
Attraverso questo programma compilato in MATLAB ho creato un database di tutte le
funzioni di trasferimento STH determinate per i vari tester. Nel database sono contenuti i
seguenti dati delle STH: i coefficienti del numeratore, coefficienti del denominatore, i poli
e gli zeri.
Il toolbox Surface Fitting Tool, crea tanti grafici quanti sono i coefficienti della STH in
funzione di peso e altezza dei tester, ricavando una relazione analitica che correla ogni
coefficiente del numeratore e del denominatore della funzione STH con peso e altezza dei
tester.
Il programma Database_STH.m è riportato qui di seguito:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
%% DATABASE DELLE FUNZIONI DI TRASFERIMENTO
clc
clear all
close all
% Costruisco le matrici dei coefficienti dei numeratori delle funzioni di
% trasferimento per i vari tester
NUM = [24.2243393243721,1630.10205011077,675139.952880164,
39866563.3167962,2425500534.45117,79974118075.9870;...
13.5943902417829,1063.96271368511,582245.665345178,48309957.8729105,
3710335422.85673,103339391443.263;...
-19.3392438792745,2802.81217968130,215967.382375743,95630308.7443074,
4391601010.33290,190551381760.202;...
10.3890221694077,583.326499932773,219456.384598063,27501937.9539223,
1659358686.08933,83593601607.9454;...
-25.3340085297602,4281.49789204299,-195082.756484670,61366266.6090101,
1794801845.31040,95641109741.1886;...
37.7762878954402,-477.485802700904,771974.270464659,9135553.22698609,
4159865317.73810,71398805988.8288;...
11.9898921131265,2524.59827841451,542779.602783956,40336478.5713114,
3298510310.33817,59396812894.4749;...
23.8186019299934,533.479957546130,627683.624460897,22100265.1796457,
2793425987.02865,36931824768.2394;...
-17.1673939095202,1445.77303286867,68271.0288104941,39052912.9110261,
1546791252.48937,78975364153.7031;...
7.73400182938754,1590.13637360556,410045.858836026,27754201.2917937,
2503647169.39841,60086167131.3021;...
106
Codice dei programmi
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Appendice A
20.1063853020235,1635.63642157106,544871.675162618,32024607.4784179,
3027532218.18990,51662301266.8802;...
24.1860145474906,1000.60975534406,892114.507942720,49607900.0352242,
6432154920.78900,166338455214.339;...
6.47314834126446,4943.17275348178,604899.535110226,72481756.2389323,
4732007303.65463,120285461660.558;...
-28.8789369634276,5286.79943477732,91263.3377543547,100901682.514823,
3010194727.98190,199715891991.428;...
31.4119533105289,3603.76760208361,713614.467351965,61797020.6753905,
3075129712.38992,142495745266.246;...
0.959375043842069,1110.65566576138,258694.402525741,62050523.2145065,
2922206514.93501,122016577367.234;...
25.2700547741937,3607.19006571643,549264.595656658,61530605.5041678,
2629003040.38235,82892693681.9933;...
43.1144062899305,3244.87081175350,1063748.06305771,61386059.5414257,
6008635678.81339,91322150185.7348;...
45.6181771322968,4528.68318405578,1190902.07337516,57442947.5936970,
5077322499.49300,62919332604.4695;...
22.4386167974024,3501.99637965812,463990.843055103,46450429.7752480,
1951753497.97182,53065732613.0233;...
20.4229772746009,1331.90727088440,445826.983237433,25448681.0266280,
2808287792.43529,54399364104.3915;...
4.16734253430390,5869.70738408524,359984.670879398,80837870.2063394,
2614327272.28846,91185007726.8813;...
-1.84825984708911,3724.70017408966,567804.887662336,59381304.6127728,
4275684684.38164,67092040566.0194;...
12.4576067018716,2057.45330113821,751820.994027899,49203650.6030292,
5139994935.86164,100885244459.936;...
45.5293764306365,860.911724683827,1338230.49269510,33331751.7651326,
7220089636.67135,146000573373.275;...
29.2954904630297,2354.06401040090,742865.150514077,50511169.5862578,
3811604792.13283,60549483206.3702;...
31.7378211522122,93.3541181386342,649181.584022354,19805149.7276248,
3841314560.15198,57453867561.8232;...
21.0958120212698,645.619133585899,524321.950088503,26240581.4631642,
3440932380.51369,58462259868.9600;...
31.4103502031238,1704.42337524461,700030.363747541,40237065.5239821,
2904249492.11547,43431949370.9669;...
57.7429813545020,2173.09588610202,1239333.26563063,38730016.1095543,
6449332738.80051,121216537301.034;...
21.5253973863644,660.731264748688,971505.632612402,35184442.9226475,
5641764136.52661,98280660126.8677;...
12.6089961553000,2040.91935746713,393338.288309308,32790673.8741150,
2299994642.01660,44091325623.6266;...
-5.26261049559018,35.0003682991436,165787.877067065,18184034.5948120,
2047579947.42772,32959108929.6042;...
68.0288275669791,4865.42299122924,1593275.98680684,83301369.7655634,
5556238756.82427,149827520193.142;...
28.6546353813193,3542.51688571729,919262.128608496,67993872.5790043,
3586529863.66720,88429367982.1870;...
48.4732099661839,3309.82188679405,1167831.22537933,51660994.4761463,
4849712370.19642,63080035778.7140;...
35.0233331392248,7186.73843416707,1074136.59719766,99239672.1863186,
107
Codice dei programmi
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Appendice A
4241754260.18845,157240129860.699;...
75.9751552832868,4858.45256731043,2067184.46373709,89536402.8165117,
9396093884.30938,138301610134.847;...
30.8261347391876,336.940692302766,982738.615048161,29239123.2259370,
5209288624.76119,105005786122.599;...
55.9974460945336,3556.58781575338,1303298.60129328,71463582.8190831,
5401620378.75800,139753330468.144];
DEN =
[1,104.301240023009,29111.0221363923,1622414.31591192,181977397.163605,
3299002315.51186,200069173574.706;...
1,153.761683929721,31305.0060636381,2346024.40881347,197456763.700514,
4884749624.54218,199639936915.227;...
1,175.872579404978,39718.5931809511,2907811.57659931,274127984.715442,
6877265120.21699,282450882541.553;...
1,135.137102565419,29801.9355736531,1919335.85353941,175008023.452496,
3612907470.67374,183119536130.958;...
1,108.737337942963,28477.7290296302,1713747.97542356,155823676.429914,
3617475717.24955,143897684765.200;...
1,142.764921009963,29592.3343356911,2167678.36481921,167320485.776234,
5184896650.83512,148377205758.537;...
1,89.5044804862163,27584.3950489168,1440469.91569749,151705461.658905,
3623199206.27570,135790738341.463;...
1,128.680390660486,29803.0010269143,1921188.25993407,177646704.970291,
3928903161.33950,157361257473.802;...
1,121.797801360529,27652.6946269832,1770454.78839725,144952713.067129,
3715424920.69854,144035158959.611;...
1,117.560373308232,28924.5074211337,1810788.98952592,150760117.922608,
3757685150.31552,136384947484.123;...
1,125.950780881477,32809.7729568109,1845082.34459405,209896292.129350,
3900370415.09210,199877491300.661;...
1,194.247411283713,34729.6888856094,3067181.79063038,227667464.644281,
7434024839.22428,234699202887.096;...
1,137.905532520584,29615.4517944556,2166573.74518641,169366559.118643,
5301896100.44078,137559412892.207;...
1,174.957886482733,37205.1438846765,2896646.48741011,243927457.669154,
6038361390.99773,265500662075.240;...
1,138.318818346116,31681.3515012049,2192529.10575502,182268688.974007,
4874384028.58235,176054811450.494;...
1,185.876394847158,32235.5739407266,2795347.64005468,188260703.953848,
5546144710.94805,176387961289.963;...
1,101.565972901383,26797.0419331963,1550982.44042464,147293522.291129,
3718147945.27481,136797830368.247;...
1,145.455900574721,28567.7439386075,2469932.63095554,165963751.763450,
6379023407.90128,136362586349.631;...
1,106.339188792263,25507.7706548682,1773558.72167482,125001574.307397,
4755348461.20403,76294040500.3070;...
1,106.236844506355,26411.1141430482,1566217.98819338,138457992.051979,
3431755218.23475,104778398077.509;...
1,147.711884221555,29796.0030214156,2264317.59259594,161345156.509122,
4411245756.85921,134932768422.751;...
1,115.754259527547,26597.8961940090,1793694.58453370,140060420.816673,
108
Codice dei programmi
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Appendice A
3280090439.99166,113896094172.873;...
1,142.113944021622,30840.1896612801,2145325.99607406,176582878.166906,
4821849105.91337,118782912174.368;...
1,152.140539577605,35669.3176796861,2741274.31025956,218504256.331848,
6666221766.79899,189066342874.992;...
1,166.200799357421,31151.9337145825,2968311.64382313,171323076.115503,
7769515650.36600,162445570467.138;...
1,108.400019833032,27873.8178730040,1800686.77444738,147432904.896106,
4218472533.77848,115760707149.905;...
1,131.537657029576,33700.2054211929,2208007.77916336,193037520.617228,
5165517384.13235,143698985038.267;...
1,112.708180350599,28081.6157678778,1709534.29817871,148194797.387299,
3895844936.26779,109075009286.951;...
1,103.746338761147,26346.5587182247,1695710.84318972,140576043.163903,
3784424186.73203,100597751887.680;...
1,132.634971063616,29884.0406899856,2290583.98936935,165128573.646994,
6325793820.51946,150941804833.455;...
1,145.576732091645,30831.3967343487,2463833.11890138,174740952.108655,
6201803759.17411,159907394332.440;...
1,93.2891109018584,26466.8210668038,1358796.77837492,133068433.374684,
2592783740.83048,90435162328.6978;...
1,116.173847064793,25572.9953462531,1723580.82111139,124357807.743677,
3550001625.60854,91953155232.6859;...
1,140.710759665166,28630.3862251221,2365628.50054672,173274269.403341,
6101617848.89224,154601829248.729;...
1,110.276346467897,27763.3946103775,1810996.86834931,139049050.574586,
3745483767.67026,113529771049.578;...
1,105.288881783718,27420.8916815116,1868949.60263031,140458441.056295,
4873695567.40719,87246599329.0103;...
1,174.121020937047,30459.3830043194,2812912.44824243,173709204.318410,
7382207507.19600,169297935512.016;...
1,175.550193214084,32006.1658292739,3183512.54761036,197228306.398248,
9162780649.92468,148403424883.796;...
1,143.436523573080,29163.5553103338,2364679.77179061,153964795.490256,
5758702320.18186,123420263430.791;...
1,142.006349294983,28264.8427664763,2401905.20401294,169236241.468288,
6347125460.75567,172672259275.899];
% Costruisco le matrici dei poli delle funzioni di trasferimento per i
vari
% tester
POLI = [-20.8714381521059 - 127.850057350234i,-20.8714381521059 +
127.850057350234i,-25.5730435032114 - 83.0849774014955i,-25.5730435032114
+ 83.0849774014955i,-5.70613835618697 - 39.3071833950601i,
-5.70613835618697 + 39.3071833950601i;...
-26.1267226833597 - 115.689918141680i,-26.1267226833597 +
115.689918141680i,-41.6541199104358 - 84.0904046434781i,-41.6541199104358
+ 84.0904046434781i,-9.09999937106488 - 39.0999534615261i,
-9.09999937106488 + 39.0999534615261i;...
-53.0537431327214 - 136.275618916004i,-53.0537431327214 +
136.275618916004i,-24.0706667566937 - 87.8528539179496i,-24.0706667566937
109
Codice dei programmi
99
100
101
102
103
104
105
106
107
108
109
110
111
Appendice A
+ 87.8528539179496i,-10.8118798130742 - 38.4035966909239i,
-10.8118798130742 + 38.4035966909239i;...
-31.3972612168119 - 120.300636906644i,-31.3972612168119 +
120.300636906644i,-30.1471228246250 - 81.1487725052420i,-30.1471228246250
+ 81.1487725052420i,-6.02416724127249 - 39.2998527603312i,
-6.02416724127249 + 39.2998527603312i;...
-20.5518318832623 - 131.974163332190i,-20.5518318832623 +
131.974163332190i,-23.1354574738529 - 69.5085706759624i,-23.1354574738529
+ 69.5085706759624i,-10.6813796143664 - 37.2682515054164i,
-10.6813796143664 + 37.2682515054164i;...
-27.8899355650201 - 122.458802904803i,-27.8899355650201 +
122.458802904803i,-23.5525681910911 - 69.0270384254582i,-23.5525681910911
+ 69.0270384254582i,-19.9399567488705 - 37.0230523714266i,
-19.9399567488705 + 37.0230523714266i;...
-17.3466707819646 - 133.243273169647i,-17.3466707819646 +
133.243273169647i,-13.9740773105648 - 72.9238330191480i,-13.9740773105648
+ 72.9238330191480i,-13.4314921505788 - 34.4064030884931i,
-13.4314921505788 + 34.4064030884931i;...
-27.8518213551345 - 123.259762594898i,-27.8518213551345 +
123.259762594898i,-27.0720151788525 - 81.7857265791538i,-27.0720151788525
+ 81.7857265791538i,-9.41635879625601 - 35.2007269987151i,
-9.41635879625601 + 35.2007269987151i;...
-24.4959013362489 - 125.571488004815i,-24.4959013362489 +
125.571488004815i,-25.0321818807229 - 63.9106051315033i,-25.0321818807229
+ 63.9106051315033i,-11.3708174632926 - 41.6957212745359i,
-11.3708174632926 + 41.6957212745359i;...
-23.8621532305191 - 132.837312553667i,-23.8621532305191 +
132.837312553667i,-22.7262677685174 - 64.3871553748205i,-22.7262677685174
+ 64.3871553748205i,-12.1917656550792 - 38.1753075230295i,
-12.1917656550792 + 38.1753075230295i;...
-38.8797432512129 - 133.844706369733i,-38.8797432512129 +
133.844706369733i,-16.7073234710858 - 86.8858840677228i,-16.7073234710858
+ 86.8858840677228i,-7.38832371843982 - 35.4932035926641i,
-7.38832371843982 + 35.4932035926641i;...
-28.1242726215422 - 109.927906657032i,-28.1242726215422 +
109.927906657032i,-53.1663218531977 - 76.0308804741765i,-53.1663218531977
+ 76.0308804741765i,-15.8331111671167 - 43.2104263094064i,
-15.8331111671167 + 43.2104263094064i;...
-25.4974379069795 - 124.691297652429i,-25.4974379069795 +
124.691297652429i,-22.7127720330611 - 71.1530796741975i,-22.7127720330611
+ 71.1530796741975i,-20.7425563202513 - 33.0461250850735i,
-20.7425563202513 + 33.0461250850735i;...
-40.6825759928082 - 128.464806193580i,-40.6825759928082 +
128.464806193580i,-38.9771284383518 - 83.4941764740746i,-38.9771284383518
+ 83.4941764740746i,-7.81923881020669 - 40.7548519107520i,
-7.81923881020669 + 40.7548519107520i;...
-29.8542286312371 - 132.069903182881i,-29.8542286312371 +
132.069903182881i,-26.4225276181442 - 69.7812760550964i,-26.4225276181442
+ 69.7812760550964i,-12.8826529236768 - 39.4817123679878i,
-12.8826529236768 + 39.4817123679878i;...
-26.5173219880934 - 114.838551080374i,-26.5173219880934 +
114.838551080374i,-55.7404607687621 - 63.5011831792401i,-55.7404607687621
+ 63.5011831792401i,-10.6804146667232 - 40.7983133257079i,
110
Codice dei programmi
112
113
114
115
116
117
118
119
120
121
122
123
124
Appendice A
-10.6804146667232 + 40.7983133257079i;...
-19.0943679842080 - 126.539149595069i,-19.0943679842080 +
126.539149595069i,-17.6800355847396 - 71.9329173696588i,-17.6800355847396
+ 71.9329173696588i,-14.0085828817439 - 36.4161566792728i,
-14.0085828817439 + 36.4161566792728i;...
-15.9046124607502 - 124.468822557154i,-15.9046124607502 +
124.468822557154i,-20.3668099852928 - 61.1231257507558i,-20.3668099852928
+ 61.1231257507558i,-36.4565278413177 - 27.5200329041853i,
-36.4565278413177 + 27.5200329041853i;...
-13.6194398401144 - 127.856807591866i,-13.6194398401144 +
127.856807591866i,-11.1781205509356 - 66.4000248565703i,-11.1781205509356
+ 66.4000248565703i,-28.3720340050814 - 14.5891879153241i,
-28.3720340050814 + 14.5891879153241i;...
-20.1226349465646 - 124.943415012345i,-20.1226349465646 +
124.943415012345i,-19.1208787121517 - 71.5547719795636i,-19.1208787121517
+ 71.5547719795636i,-13.8749085944612 - 31.6240376634936i,
-13.8749085944612 + 31.6240376634936i;...
-25.0942738383254 - 124.927110543987i,-25.0942738383254 +
124.927110543987i,-36.2817363074618 - 62.9553564965880i,-36.2817363074618
+ 62.9553564965880i,-12.4799319649903 - 37.6600379925523i,
-12.4799319649903 + 37.6600379925523i;...
-15.6166017357153 - 125.682956052935i,-15.6166017357153 +
125.682956052935i,-32.4891607297632 - 65.2349917394166i,-32.4891607297632
+ 65.2349917394166i,-9.77136729829491 - 35.2344396684893i,
-9.77136729829491 + 35.2344396684893i;...
-32.3206585503820 - 125.086823684147i,-32.3206585503820 +
125.086823684147i,-22.6515872026362 - 78.0591410657778i,-22.6515872026362
+ 78.0591410657778i,-16.0847262577926 - 28.6094031044163i,
-16.0847262577926 + 28.6094031044163i;...
-31.1609506440180 - 141.286369288166i,-31.1609506440180 +
141.286369288166i,-26.4030373633679 - 69.7328305940864i,-26.4030373633679
+ 69.7328305940864i,-18.5062817814167 - 35.8056932809790i,
-18.5062817814167 + 35.8056932809790i;...
-20.9830962997078 - 131.783345164201i,-20.9830962997078 +
131.783345164201i,-9.69022908327744 - 58.1062355844739i,-9.69022908327744
+ 58.1062355844739i,-63.3730701931682 + -0.00000000000000i,
-41.4810783982821 + -0.00000000000000i;...
-17.2706827652831 - 132.539885056791i,-17.2706827652831 +
132.539885056791i,-18.6803123589479 - 66.1259525487127i,-18.6803123589479
+ 66.1259525487127i,-18.2490147922851 - 32.2386427390655i,
-18.2490147922851 + 32.2386427390655i;...
-30.9125790041817 - 142.587426701186i,-30.9125790041817 +
142.587426701186i,-19.3612626884324 - 73.1386221321933i,-19.3612626884324
+ 73.1386221321933i,-15.4949868221737 - 30.6469600827801i,
-15.4949868221737 + 30.6469600827801i;...
-23.3917330983215 - 129.802340909010i,-23.3917330983215 +
129.802340909010i,-17.4130907077425 - 71.0097774394125i,-17.4130907077425
+ 71.0097774394125i,-15.5492663692353 - 30.5152617785445i,
-15.5492663692353 + 30.5152617785445i;...
-13.4531455969768 - 127.654045922166i,-13.4531455969768 +
127.654045922166i,-22.3037425310641 - 68.4863015126946i,-22.3037425310641
+ 68.4863015126946i,-16.1162812525328 - 30.2845993637567i,
-16.1162812525328 + 30.2845993637567i;...
111
Codice dei programmi
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
Appendice A
-21.6710034506162 - 133.020798153049i,-21.6710034506162 +
133.020798153049i,-12.2829545540108 - 64.7916865900073i,-12.2829545540108
+ 64.7916865900073i,-32.3635275271809 - 29.3841590001438i,
-32.3635275271809 + 29.3841590001438i;...
-23.7476221332041 - 130.815998200974i,-23.7476221332041 +
130.815998200974i,-18.3856702597416 - 60.1310257369306i,-18.3856702597416
+ 60.1310257369306i,-30.6550736528771 - 36.7185865490400i,
-30.6550736528771 + 36.7185865490400i;...
-19.1899828089500 - 129.977267017523i,-19.1899828089500 +
129.977267017523i,-17.9039310046178 - 71.6356663204456i,-17.9039310046178
+ 71.6356663204456i,-9.55064163736145 - 29.4899011725484i,
-9.55064163736145 + 29.4899011725484i;...
-17.8153016348956 - 123.612019791354i,-17.8153016348956 +
123.612019791354i,-21.5043008674043 - 59.7116372337016i,-21.5043008674043
+ 59.7116372337016i,-18.7673210300965 - 33.3381940736714i,
-18.7673210300965 + 33.3381940736714i;...
-15.5960033551276 - 122.894508707321i,-15.5960033551276 +
122.894508707321i,-27.1990652943254 - 63.3067497187085i,-27.1990652943254
+ 63.3067497187085i,-27.5603111831299 - 36.9109425243524i,
-27.5603111831299 + 36.9109425243524i;...
-17.3454446483195 - 133.864660983259i,-17.3454446483195 +
133.864660983259i,-22.1315833807874 - 58.9194249540857i,-22.1315833807874
+ 58.9194249540857i,-15.6611452048416 - 36.4370020755885i,
-15.6611452048416 + 36.4370020755885i;...
-13.8608820646285 - 134.269583118230i,-13.8608820646285 +
134.269583118230i,-13.8080558955651 - 66.6909765415871i,-13.8080558955651
+ 66.6909765415871i,-24.9755029316655 - 20.2131707304697i,
-24.9755029316655 + 20.2131707304697i;...
-23.6722678153857 - 120.727671984563i,-23.6722678153857 +
120.727671984563i,-12.8396741091871 - 59.5681969654670i,-12.8396741091871
+ 59.5681969654670i,-50.5485685439508 - 21.3814976628548i,
-50.5485685439508 + 21.3814976628548i;...
-19.6367225509723 - 127.076540199122i,-19.6367225509723 +
127.076540199122i,-17.6968436039079 - 65.4501228423239i,-17.6968436039079
+ 65.4501228423239i,-74.7686315554600 + -0.00000000000000i,
-26.1144293488636 + -0.00000000000000i;...
-21.5716940935152 - 128.713160126298i,-21.5716940935152 +
128.713160126298i,-15.2616963900188 - 59.1689680700956i,-15.2616963900188
+ 59.1689680700956i,-34.8848713030058 - 26.9017545781512i,
-34.8848713030058 + 26.9017545781512i;...
-14.9657963626867 - 123.256383399956i,-14.9657963626867 +
123.256383399956i,-18.3587057492573 - 57.9907730402340i,-18.3587057492573
+ 57.9907730402340i,-37.6786725355476 - 40.0945737150207i,
-37.6786725355476 + 40.0945737150207i];
% Costruisco le matrici degli zeri delle funzioni di trasferimento per i
% vari tester
ZERI = [-1.79894525239953 - 152.895837427628i,-1.79894525239953 +
152.895837427628i,-10.7853355902471 - 56.8843091616683i,-10.7853355902471
+ 56.8843091616683i,-42.1233478393858 + -0.00000000000000i;...
7.93458954052216 - 191.728202518079i,7.93458954052216 +
112
Codice dei programmi
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
Appendice A
191.728202518079i,-27.8049812085307 - 67.7168955501080i,-27.8049812085307
+ 67.7168955501080i,-38.5240519939981 + -0.00000000000000i;...
268.630720609173 + -0.00000000000000i,-36.4982931661464
- 121.443179041338i,-36.4982931661464 + 121.443179041338i,
-25.3526989041415 - 40.4745485841957i,-25.3526989041415 +
40.4745485841957i;...
36.8226890385436 - 144.892680362998i,36.8226890385436 +
144.892680362998i,-81.7350192889448 + -0.00000000000000i,
-24.0293566564164 - 61.8651144717933i,-24.0293566564164 +
61.8651144717933i;...
201.433325713353 + -0.00000000000000i,1.21316255876788 –
113.397401049585i,1.21316255876788 + 113.397401049585i,-17.4288297081630
- 33.9639661299550i,-17.4288297081630 + 33.9639661299550i;...
25.2346203536329 - 115.509454579979i,25.2346203536329 +
115.509454579979i,-10.4769309186847 - 88.8934558311010i,-10.4769309186847
+ 88.8934558311010i,-16.8755503080610 + -0.00000000000000i;...
-69.8191980959577 - 144.356910312004i,-69.8191980959577 +
144.356910312004i,-24.2119914296412 - 89.3140526332562i,-24.2119914296412
+ 89.3140526332562i,-22.4981710016749 + -0.00000000000000i;...
11.0965901921718 - 147.639110335669i,11.0965901921718 +
147.639110335669i,-15.2087297253673 - 68.9884950355361i,-15.2087297253673
+ 68.9884950355361i,-14.1733393628564 + -0.00000000000000i;...
187.510786032163 + -0.00000000000000i,-28.7867092801797 –
97.8380367881230i,-28.7867092801797 + 97.8380367881230i,-22.8605734284048
- 42.8506228021606i,-22.8605734284048 + 42.8506228021606i;...
-72.3116369679265 - 175.681337937102i,-72.3116369679265 +
175.681337937102i,-15.4943475473365 - 83.2891542201145i,-15.4943475473365
+ 83.2891542201145i,-29.9913407027852 + -0.00000000000000i;...
-2.85290606734242 - 136.446781969848i,-2.85290606734242 +
136.446781969848i,-27.8724241956323 - 78.4592707260109i,-27.8724241956323
+ 78.4592707260109i,-19.8984431046495 + -0.00000000000000i;...
14.3483295333167 - 171.815789155102i,14.3483295333167 +
171.815789155102i,-20.5357606314676 - 86.9314790791859i,-20.5357606314676
+ 86.9314790791859i,-28.9965573643419 + -0.00000000000000i;...
-642.709039594409 + -0.00000000000000i,-12.2648794826614 –
102.420099400433i,-12.2648794826614 + 102.420099400433i,-48.2019720898029
- 19.8448226985415i,-48.2019720898029 + 19.8448226985415i;...
256.351443006895 + -0.00000000000000i,-18.9116054789661 –
108.109596419265i,-18.9116054789661 + 108.109596419265i,-17.7302856505906
- 43.8778962303393i,-17.7302856505906 + 43.8778962303393i;...
-5.40171531676227 - 124.272938614958i,-5.40171531676227 +
124.272938614958i,-74.5512218479314 + -0.00000000000000i,
-14.6856713172059 - 60.9666033424587i,-14.6856713172059 +
60.9666033424587i;...
-940.619500737360 + -0.00000000000000i,-84.0763801446792 –
218.423888478503i,-84.0763801446792 + 218.423888478503i,-24.4571867536145
- 43.2460821590392i,-24.4571867536145 + 43.2460821590392i;...
1.54401017933668 - 123.998627151297i,1.54401017933668 +
123.998627151297i,-98.7706351688055 + -0.00000000000000i,
-23.5315110939300 - 40.0737678112872i,-23.5315110939300 +
40.0737678112872i;...
2.49744935645717 - 129.129426491589i,2.49744935645717 +
129.129426491589i,-31.4302677455870 - 79.4450300020632i,-31.4302677455870
113
Codice dei programmi
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
Appendice A
+ 79.4450300020632i,-17.3962325359734 + -0.00000000000000i;...
-24.5156090709326 - 130.014789665854i,-24.5156090709326 +
130.014789665854i,-18.1239751547110 - 72.8135203311062i,-18.1239751547110
+ 72.8135203311062i,-13.9944866735588 + -0.00000000000000i;...
-4.85333112697305 - 111.172391054967i,-4.85333112697305 +
111.172391054967i,-95.2340646416320 + -0.00000000000000i,
-25.5646689982288 - 36.7677296657223i,-25.5646689982288 +
36.7677296657223i;...
13.4049872770308 - 119.298989469913i,13.4049872770308 +
119.298989469913i,-34.9275699877816 - 84.3579329472089i,-34.9275699877816
+ 84.3579329472089i,-22.1709513559886 + -0.00000000000000i;...
-1355.07234581410 + -0.00000000000000i,-8.92436308694102 –
109.188286935871i,-8.92436308694102 + 109.188286935871i,-17.7901148426249
- 32.0769748486726i,-17.7901148426249 + 32.0769748486726i;...
2164.28158515956 + -0.00000000000000i,-19.8162534854016 –
93.7358468046320i,-19.8162534854016 + 93.7358468046320i,-88.8326305598070
+ -0.00000000000000i,-20.5694140715094 + -0.00000000000000i;...
-50.6144441214169 - 206.347599895263i,-50.6144441214169 +
206.347599895263i,-20.4584486551234 - 85.8942466739843i,-20.4584486551234
+ 85.8942466739843i,-23.0106004507494 + -0.00000000000000i;...
5.22636548081507 - 150.325313057389i,5.22636548081507 +
150.325313057389i,-4.40074155384688 - 82.9111001316558i,-4.40074155384688
+ 82.9111001316558i,-20.5601763782577 + -0.00000000000000i;...
3.35616873820523 - 138.117131126512i,3.35616873820523 +
138.117131126512i,-33.7500777987527 - 66.2915874371127i,-33.7500777987527
+ 66.2915874371127i,-19.5680309598985 + -0.00000000000000i;...
28.9232535926595 - 123.116748280334i,28.9232535926595 +
123.116748280334i,-22.6127493659566 - 82.2279514782317i,-22.6127493659566
+ 82.2279514782317i,-15.5624239239547 + -0.00000000000000i;...
22.6382985775767 - 138.432680761052i,22.6382985775767 +
138.432680761052i,-28.6078430434091 - 82.0213033927753i,-28.6078430434091
+ 82.0213033927753i,-18.6650486542672 + -0.00000000000000i;...
8.05427453927810 - 135.043427998331i,8.05427453927810 +
135.043427998331i,-26.1315664815455 - 59.0705830694627i,-26.1315664815455
+ 59.0705830694627i,-18.1085288863345 + -0.00000000000000i;...
2.24497575284810 - 114.057954524090i,2.24497575284810 +
114.057954524090i,-11.2217035090018 - 89.8341714364789i,-11.2217035090018
+ 89.8341714364789i,-19.6804843211889 + -0.00000000000000i;...
5.11580491531824 - 196.804718140683i,5.11580491531824 +
196.804718140683i,-11.2295103874368 - 79.0733807342073i,-11.2295103874368
+ 79.0733807342073i,-18.4680160850096 + -0.00000000000000i;...
-17.2102437401776 - 123.838583558983i,-17.2102437401776 +
123.838583558983i,-50.5924927003802 - 77.2002408014722i,-50.5924927003802
+ 77.2002408014722i,-26.2566874629700 + -0.00000000000000i;...
235.122231205113 + -0.00000000000000i,-151.172617791749 + 0.00000000000000i,-29.3123256908214 - 92.6083033725155i,-29.3123256908214
+ 92.6083033725155i,-18.6742003368419 + -0.00000000000000i;...
-7.19131248347419 - 134.748696381939i,-7.19131248347419 +
134.748696381939i,-11.7655399080662 - 58.8274407392466i,-11.7655399080662
+ 58.8274407392466i,-33.6063134979766 + -0.00000000000000i;...
-18.6594223829574 - 153.156754201796i,-18.6594223829574 +
153.156754201796i,-22.8939203443128 - 51.7214129743205i,-22.8939203443128
+ 51.7214129743205i,-40.5213711783751 + -0.00000000000000i;...
114
Codice dei programmi
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
Appendice A
-8.73825100610793 - 132.339454962139i,-8.73825100610793 +
132.339454962139i,-18.1308121435510 - 68.9799195288061i,-18.1308121435510
+ 68.9799195288061i,-14.5433407028275 + -0.00000000000000i;...
-31.8139284400964 - 117.300186808942i,-31.8139284400964 +
117.300186808942i,-103.361618323014 + -0.00000000000000i,
-19.1045553554423 - 50.7496759803841i,-19.1045553554423 +
50.7496759803841i;...
-7.61148525479897 - 142.975998515182i,-7.61148525479897 +
142.975998515182i,-16.1977643456130 - 71.9410415410772i,-16.1977643456130
+ 71.9410415410772i,-16.3294131028078 + -0.00000000000000i;...
13.4138718014835 - 161.763931344559i,13.4138718014835 +
161.763931344559i,-8.44103187083267 - 78.2421133901832i,-8.44103187083267
+ 78.2421133901832i,-20.8760379861052 + -0.00000000000000i;...
0.0309871403268076 - 133.730816407696i,0.0309871403268076 +
133.730816407696i,-15.8711011764245 - 64.2799497378279i,-15.8711011764245
+ 64.2799497378279i,-31.8331651948697 + -0.00000000000000i];
% Coefficienti della Fmodellos
nb0 = NUM(:,6);
nb1 = NUM(:,5);
nb2 = NUM(:,4);
nb3 = NUM(:,3);
nb4 = NUM(:,2);
nb5 = NUM(:,1);
na0 = DEN(:,7);
na1 = DEN(:,6);
na2 = DEN(:,5);
na3 = DEN(:,4);
na4 = DEN(:,3);
na5 = DEN(:,2);
% Caratteristiche Antropometriche
alt = [186 184 180 185 175 183 170 165 184 186 175 173 174 183 165 182
180 172 160 183 181 180 167 186 185 185 182 171 165 173 170 166 172 158
178 165 158 175 172 172];
peso = [80 70 75 71 60 65 68 55 78 75 78 68 68 110 45 77 68 68 51 68 82
93 64 88 77 82 70 73 52 92 80 72 67 52 63 50 53 65 78 57];
alt = alt';
peso = peso';
% Create a figure for the plots
Nfig = 1;
figure(Nfig)
Nfig=Nfig+1;
% Plot dei grafici della correlazione
[fitresult, gof] = createSurfaceFit_na4(alt, peso, na4, Nfig)
115
Codice dei programmi
Appendice A
Figura A.3: Grafico 3D del coefficiente
Figura A.4: Diagramma dei residui del coefficiente
116
Codice dei programmi
Appendice A
Figura A.5: Grafico 3D del coefficiente
Figura A.6: Diagramma dei residui del coefficiente
117
Codice dei programmi
Appendice A
Figura A.7: Grafico 3D del coefficiente
Figura A.8: Diagramma dei residui del coefficiente
118
Codice dei programmi
Appendice A
Figura A.9: Grafico 3D del coefficiente
Figura A.10: Diagramma dei residui del coefficiente
119
Codice dei programmi
Appendice A
Figura A.11: Grafico 3D del coefficiente
Figura A.12: Diagramma dei residui del coefficiente
120
Codice dei programmi
Appendice A
Figura A.13: Grafico 3D del coefficiente
Figura A.14: Diagramma dei residui del coefficiente
121
Codice dei programmi
Appendice A
Figura A.15: Grafico 3D del coefficiente
Figura A.16: Diagramma dei residui del coefficiente
122
Codice dei programmi
Appendice A
Figura A.17: Grafico 3D del coefficiente
Figura A.18: Diagramma dei residui del coefficiente
123
Codice dei programmi
Appendice A
Figura A.19: Grafico 3D del coefficiente
Figura A.20: Diagramma dei residui del coefficiente
124
Codice dei programmi
Appendice A
Figura A.21: Grafico 3D del coefficiente
Figura A.22: Diagramma dei residui del coefficiente
125
Codice dei programmi
Appendice A
Figura A.23: Grafico 3D del coefficiente
Figura A.24: Diagramma dei residui del coefficiente
126
Codice dei programmi
Appendice A
Figura A.25: Grafico 3D del coefficiente
Figura A.26: Diagramma dei residui del coefficiente
127
Codice dei programmi
Appendice A
Attraverso questo programma compilato in Matlab, ho creato un database dei parametri
delle curve di fitting determinati con il toolbox Surface Fitting Tool. Tale database
permette di calcolare ogni coefficiente della funzione di trasferimento STH attraverso
l’equazione 5.2, inserendo in tale equazione il peso
e i parametri
e l’altezza
di una generica persona
di questo database.
Il programma Database_pij.m è riportato qui di seguito:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
%% Database dei coefficienti della funzione di trasferimento STH
clc
clear all
close all
format long
% Coefficienti del numeratore na
ap_00 = [5.386586501038972e+012, 3.583327571030892e+011,
1.564286807237814e+009, 1.052784405739316e+008, 2.642159990731485e+005,
7.090588743108653e+003];
ap_10 = [3.520572496293646e+010, 1.678324713534276e+009,
1.432010921083026e+007, 4.284256383125449e+005, 1.995922063877925e+003,
36.336214854731111];
ap_01 = [-7.504201531683131e+012, -4.703999712655318e+011,
-2.177702870781359e+009, -1.354204396726923e+008,
-3.503491025782756e+005, -9.402291871273410e+003];
ap_20 = [2.312937959287944e+007, -1.085525794217171e+005,
-1.335838373576390e+004, -2.911066143178917e+002, -1.096503706578992,
-0.003330839853600];
ap_11 = [-2.211199402488726e+010, -9.423405829382442e+008,
-7.148070285164646e+006, -2.167537587617119e+005,
-1.046090965797873e+003, -20.311325973867259];
ap_02 = [2.612811874011628e+012, 1.528784315897210e+011,
7.655163599732522e+008, 4.301893581965424e+007, 1.212612057160226e+005,
3.084119203242728e+003];
% Coefficienti del denominatore nb
bp_00 = [5.430970454394028e+012, 1.510112447995914e+011,
-3.070872329576674e+009, 7.677732180230431e+007, -4.517408766450266e+005,
4.047768110115480e+003];
bp_10 = [1.407831592660255e+010, 7.270397852616288e+008,
-4.337994701538442e+007, 3.010220138872369e+005, -3.912783507783215e+003,
17.639535307553579];
bp_01 = [-6.743964478362296e+012, -1.981044821329369e+011,
5.322646037982367e+009, -9.932208145037758e+007, 6.801600212246003e+005,
-5.368368808173735e+003];
128
Codice dei programmi
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Appendice A
bp_20 = [3.112152929100515e+007, 1.853997149887103e+006,
-4.695096284345817e+004, 1.297748292064522e+003, -0.490992796842895,
0.086346569969099];
bp_11 = [-1.053990886796911e+010, -5.665497545504199e+008,
2.873425148582602e+007, -2.841788106861830e+005, 2.273124773479166e+003,
-17.580526973470384];
bp_02 = [2.157310321496968e+012, 6.830127861159800e+010,
-2.102231599653144e+009, 3.429018862243550e+007, -2.408360966924339e+005,
1.913187577742312e+003];
% Peso del tester
x = 70;
% Altezza del tester
y = 1.70;
% Equazione per il calcolo di na
na0 = ap_00(1)+(ap_10(1)*x)+(ap_01(1)*y)+(ap_20(1)*x^2)+(ap_11(1)*x*y)+
+(ap_02(1)*y^2)
na1 = ap_00(2)+(ap_10(2)*x)+(ap_01(2)*y)+(ap_20(2)*x^2)+(ap_11(2)*x*y)+
+(ap_02(2)*y^2)
na2 = ap_00(3)+(ap_10(3)*x)+(ap_01(3)*y)+(ap_20(3)*x^2)+(ap_11(3)*x*y)+
+(ap_02(3)*y^2)
na3 = ap_00(4)+(ap_10(4)*x)+(ap_01(4)*y)+(ap_20(4)*x^2)+(ap_11(4)*x*y)+
+(ap_02(4)*y^2)
na4 = ap_00(5)+(ap_10(5)*x)+(ap_01(5)*y)+(ap_20(5)*x^2)+(ap_11(5)*x*y)+
+(ap_02(5)*y^2)
na5 = ap_00(6)+(ap_10(6)*x)+(ap_01(6)*y)+(ap_20(6)*x^2)+(ap_11(6)*x*y)+
+(ap_02(6)*y^2)
% Equazione per il calcolo di nb
nb0 = bp_00(1)+(bp_10(1)*x)+(bp_01(1)*y)+(bp_20(1)*x^2)+(bp_11(1)*x*y)+
+(bp_02(1)*y^2)
nb1 = bp_00(2)+(bp_10(2)*x)+(bp_01(2)*y)+(bp_20(2)*x^2)+(bp_11(2)*x*y)+
+(bp_02(2)*y^2)
nb2 = bp_00(3)+(bp_10(3)*x)+(bp_01(3)*y)+(bp_20(3)*x^2)+(bp_11(3)*x*y)+
+(bp_02(3)*y^2)
nb3 = bp_00(4)+(bp_10(4)*x)+(bp_01(4)*y)+(bp_20(4)*x^2)+(bp_11(4)*x*y)+
+(bp_02(4)*y^2)
nb4 = bp_00(5)+(bp_10(5)*x)+(bp_01(5)*y)+(bp_20(5)*x^2)+(bp_11(5)*x*y)+
+(bp_02(5)*y^2)
nb5 = bp_00(6)+(bp_10(6)*x)+(bp_01(6)*y)+(bp_20(6)*x^2)+(bp_11(6)*x*y)+
+(bp_02(6)*y^2)
% Esempio di scarto massimo per il coefficiente na2
% con x = 65, y = 1.75, na2_esp = 197228306.398248 (tester 38)
%scarto = 38252738.1268
na2_esp = 197228306.398248
e = ((na2_esp - na2)/na2)*100
129
Riferimenti Bibliografici
[1]
Cho-Chung Liang C.-F. C. (2006). A study on biodynamic models of seated human
subjects exposed to vertical vibration. International Journal of Industrial
Ergonomics, 36, 869-890.
[2]
Micheal J. Griffin Yasunao Matsumoto. Handbook of Human Vibration (1990).
Academic Press.
[3]
ISO-2631 (1997). Mechanical vibration and shock. Valutazione dell'esposizione
dell'uomo alle vibrazioni trasmesse al corpo intero.
[4]
Valentini P. P. (2008). Modelli predittivi per lo studio del comfort vibrazionale degli
occupanti di autovetture. Tesi di Dottorato di Ricerca, Università di Roma Tor
Vergata.
[5]
Decreto Legislativo (2005). Attuazione della direttiva 2002/44/ce sulle prescrizioni
minime di sicurezza e di salute relative all'esposizione dei lavoratori ai rischi
derivanti da vibrazioni meccaniche.
[6]
ISO-2631 (1997). Mechanical vibration and shock. evaluation of human exposure to
whole-body vibration.
130
Riferimenti Bibliografici
[7]
Scirè F. I. (2009). Analisi numerica e ottimizzazione di modelli biomeccanici per lo
studio del comfort vibrazionale di passeggeri a bordo di veicoli.
[8]
Younggun Cho Y. S. Y. (2001). Biomechanical model of human on seat with backrest
for evaluating ride quality. International Journal of Industrial Ergonomics, 27, 331345.
[9]
Rossi Valerio (2009). Monitoraggio del Comfort Vibrazionale secondo la ISO 2631
[6]: progetto e realizzazione di un dispositivo low cost con impostazione e
validazione di un modello predittivo.
[10] Pennestrì E.; Cheli F. (2006). Cinematica e Dinamica dei Sistemi Multibody, volume
1. CEA.
[11] Pennestrì E.; Carnevale D.; Valentini P. P.; Rossi V.; Scirè F. I.; Cavacece M. (2009).
Comparison of different seat-to-head transfer functions for vibrational comfort
monitoring of car passengers. Aimeta.
[12] Schildt H. (2005). La guida completa C++. McGrawHill.
131
Siti Web Consigliati
[Sito 1] Phidget. http://www.phidgets.com/.
[Sito 2] Garmin. http://www.garmin.it/.
[Sito 3] Garxface C++ library. http://www.stempsoft.com/.
[Sito 4] Svantek italia. http://svantek.com/.
[Sito 5] Gps visualizer. http://www.gpsvisualizer.com/.
[Sito 6] Visual numerics (imsl). http://www.vni.com/.
[Sito 7] Sdl. http://www.libsdl.org/.
[Sito 8] C++. http://www.cplusplus.com/.
[Sito 9] Matlab. http://www.mathworks.com/.
[Sito 10] I.s.p.e.s.l. http://www.ispesl.it/.
132
Siti Web consultati
[Sito 11] Gnuplot. http://www.gnuplot.info/.
[Sito 12] Wavelet. http://www.wavelet.org/.
133
Elenco delle figure
1.1
Modello a 4 gradi di libertà di Wan e Shimmels………………………………………………….. 8
1.2
STH del modello Wan e Shimmels………………………………………………………………………… 8
2.1
Assi basicentrici del corpo umano……………………………………………………………………… 14
2.2
Zone di attenzione secondo le linee guida della salute………………………………………. 18
3.1
Accelerometro Triassiale Phidget 1059………………………………………………………………. 24
3.2
Box in acciaio per l’accelerometro…………………………………………………………………….. 25
3.3
Rivestimento in neoprene del box……………………………………………………………………… 25
3.4
Piattello accelerometrico…………………………………………………………………………………… 25
3.5
GPS Garmin 18x USB………………………………………………………………………………………….. 26
3.6
Piattello accelero metrico e GPS Garmin……………………………………………………………. 27
3.7
Svan 958 della Svantek Italia……………………………………………………………………………… 28
3.8
Impostazione dati tester……………………………………………………………………………………. 29
3.9
Setup iniziale……………………………………………………………………………………………………… 30
3.10
Sistema di riferimento dell’accelerometro…………………………………………………………. 31
3.11
Angolo di inclinazione dell’accelerometro…………………………………………………………. 32
3.12
Posizionamento del piattello accelorometrico………………………………………………….. 33
3.13
Postura del passeggero durante le prove…………………………………………………………… 33
134
ELENCO DELLE FIGURE
3.14
Curve di ponderazione della norma ISO 2631-1:2008……………………………………….. 36
3.15
Waypoint con le caratteristiche della prova………………………………………………………. 39
3.16
Analisi su percorso urbano………………………………………………………………………………….41
3.17
Analisi su percorso extraurbano………………………………………………………………………... 42
3.18
Analisi su percorso autostradale………………………………………………………………………… 43
4.1
Segnale con frequenze stazionarie nel tempo……………………………………………………. 48
4.2
Segnale con frequenze varianti nel tempo…………………………………………………………. 49
4.3
Wavelet madre di Meyer…………………………………………………………………………………… 50
4.4
Grafico ampiezza-frequenza-tempo…………………………………………………………………… 51
4.5
Tracciato per le prove sperimentali……………………………………………………………………. 51
4.6
Frequenza di eccitazione circa 5
4.7
Strumentazione…………………………………………………………………………………………………. 52
4.8
Accelerometro fissato sul cranio del tester………………………………………………………… 52
4.9
Postura del tester………………………………………………………………………………………………. 52
4.10
Diagramma di Bode del filtro……………………………………………………………………………… 55
4.11
Segnali originali…………………………………………………………………………………………………..56
4.12
Segnali filtrati…………………………………………………………………………………………………….. 56
4.13
Analisi wavelet del segnale al sedile…………………………………………………………………… 57
4.14
Analisi wavelet del segnale alla testa…………………………………………………………………. 58
4.15
CWT del segnale al sedile…………………………………………………………………………………… 59
4.16
CWT del segnale alla testa…………………………………………………………………………………. 60
4.17
Accelerazione al sedile nel dominio della frequenza per le 3 prove…………………… 61
4.18
Accelerazione alla testa nel dominio della frequenza per le 3 prove………………… 61
4.19
Coefficiente di trasmissibilità STH per le 3 prove……………………………………………… 62
4.20
Diagramma di Bode del modello………………………………………………………………………… 64
4.21
Output stimato dal modello………………………………………………………………………………. 64
a 10
…………………………………………………. 51
135
ELENCO DELLE FIGURE
4.22
Analisi dei residui………………………………………………………………………………………………. 65
5.1
Grafico 3D della correlazione………………………………………………………………………………73
5.2
Diagramma dei residui della correlazione………………………………………………………….. 73
5.3
Sistema meccanico del corpo umano…………………………………………………………………. 74
A.1
Analisi CWT del segnale alla testa………………………………………………………………………. 96
A.2
Analisi CWT del segnale al sedile……………………………………………………………………….. 96
A.3
Grafico 3D del coefficiente
A.4
Diagramma dei residui del coefficiente
A.5
Grafico 3D del coefficiente
A.6
Diagramma dei residui del coefficiente
A.7
Grafico 3D del coefficiente
A.8
Diagramma dei residui del coefficiente
A.9
Grafico 3D del coefficiente
A.10
Diagramma dei residui del coefficiente
A.11
Grafico 3D del coefficiente
A.12
Diagramma dei residui del coefficiente
A.13
Grafico 3D del coefficiente
A.14
Diagramma dei residui del coefficiente
A.15
Grafico 3D del coefficiente
A.16
Diagramma dei residui del coefficiente
A.17
Grafico 3D del coefficiente
A.18
Diagramma dei residui del coefficiente
A.19
Grafico 3D del coefficiente
A.20
Diagramma dei residui del coefficiente
A.21
Grafico 3D del coefficiente
A.22
Diagramma dei residui del coefficiente
……………………………………………..…………………………….120
……………………………..………………………….120
………………………………………………………..………………….121
………………………………..……………………….121
…………………………………………………..……………………….122
………………………………..……………………….122
…………………………………………………..……………………….123
………………………………..……………………….123
…………………………………………………..……………………….124
…………………………………..…………………….124
……………………………………………………..…………………….125
…………………………………..…………………….125
………………………………………………………..………………….126
………………………………..……………………….126
…………………………………………………..……………………….127
…………………………………..…………………….127
……………………………………………………..…………………….128
……………………………………..………………….128
………………………………………………………..………………….129
………………………………………..……………….129
136
ELENCO DELLE FIGURE
A.23
Grafico 3D del coefficiente
………………………………………………..………………………….130
A.24
Diagramma dei residui del coefficiente
A.25
Grafico 3D del coefficiente
A.26
Diagramma dei residui del coefficiente
……………………………..………………………….130
………………………………………………..………………………….131
……………………………..………………………….131
137
Elenco delle tabelle
2.1
Reazioni di benessere alle vibrazioni………………………………………………………………….. 19
2.2
Effetti delle vibrazioni al variare della frequenza……………………………………………….. 20
3.1
Caratteristiche del Phidget 1059………………………………………………………………………… 24
3.2
Caratteristiche del GPS Garmin 18x USB……………………………………………………………. 26
3.3
Principali ponderazioni in frequenza in bande di terzo di ottava………………………… 38
3.4
Riassunto delle prove sperimentali……………………………………………………………………. 44
4.1
Raccolta dei dati accelerometrici……………………………………………………………………….. 53
5.1
Riassunto delle caratteristiche antropometriche……………………………………………….. 69
5.2
Tabella riassuntiva dei coefficienti delle varie
per i parametri
…………. 72
5.3
Tabella riassuntiva dei coefficienti delle varie
per i parametri
…………. 72
138
Ringraziamenti
Desidero ringraziare il professor Pennestrì, che, oltre ad essere una delle persone più
sagge che conosco, è stato molto presente e disponibile; senza i suoi preziosi consigli non
sarei riuscito a sviluppare in maniera soddisfacente il mio lavoro; è stato molto di più di
un semplice relatore, è stato uno stimolo a migliorarmi.
Ho scelto l'argomento della tesi, e soprattutto il relatore della tesi, dopo un'accurata
selezione tra tutto ciò che offriva la facoltà, e non mi sono mai pentito di questa scelta;
anzi giorno dopo giorno mi sono sorpreso sempre di più del mio interesse verso queste
ricerche e del sostegno ricevuto dal professore.
Ringrazio infinitamente l'aiuto ed il supporto ricevuto dall'Ing. Carnevale e dall’Ing. Mariti,
non sarei mai riuscito da solo a raggiungere i risultati ottenuti.
Ringrazio l'Ing. Valentini, che con poche parole riusciva ad indirizzarmi nel giusto modo di
ragionamento.
Vorrei prendermi ora uno spazio per fare dei ringraziamenti più informali, quelli alle
persone più care, quelli che non faresti mai in perfetto italiano e per questo non lo farò.
Alla mia famiglia, che mi ha permesso di raggiungere quest'obiettivo e che mi ha sempre
sostenuto nei momenti più difficili, interessandosi sempre delle mie scelte senza forzarle
mai: grazie Papo e grazie Mamma.
139
Ringraziamenti
A mio fratello e a mia sorella, i ringraziamenti sono superflui, per me siete due persone
speciali.
A mia nonna, una persona UNICA e che mi ha sempre viziato.
Ai miei zii, che mi hanno sempre spronato a dare il massimo.
Ai miei amici, quelli che comunque vada gli vorrai sempre bene.
Ad Amedeo, non so come fa, ma ogni volta mi fa capire che si può fare anche ciò che tutti
credono impossibile e neanche ci provano.
A Stefano, Amedeo e a Gabriele: non sono più “un mio futuro”.
A Sara e Elisa, due ragazze uniche e speciali, che con la loro gioia mi hanno trasmesso
tanto buon umore e allegria, vi voglio un universo di bene.
Ringrazio tutti gli amici dell’università e a tutti quelli che mi hanno aiutato durante le
prove sperimentali, quelli che mi hanno sopportato, che si sono messi l’accelerometro in
testa, mentre mi sentivano borbottare con i numeri sballati.
Un ringraziamento ed un abbraccio enorme a Matteo, Andrea, Federico e Valeria che si
sono costantemente adoperati per aiutarmi in tutto il mio percorso universitario (tesi
inclusa) e nella vita.
Ringrazio infine Marco, Diego e Alessandro, delle persone e degli amici magnifici con i
quali ho affrontato numerosi esami e passato momenti indimenticabili.
140
Ringraziamenti
Le ultime righe me le dedico da solo.
Gli amici e parenti hanno fatto tanto per sostenermi ed aiutarmi, ma la realtà è che alla
fine ce l'ho fatta. Io, con il mio sudore, superando quegli esami dove il cervello dimentica
la tua data di nascita per far entrare un'equazione differenziale, quando la notte ti sogni il
problema che non riesci a risolvere e ti svegli la mattina con la soluzione, dove inizi a
vederci male e capisci che è ora degli occhiali, e quando cominci a perdere i capelli e ti
senti dire che assomigli sempre di più all’ingegnere medio: “cieco, pelato e co a panza”.
Se penso al primo giorno di università tutto questo mi sembrava impossibile e
insuperabile, e invece ce l'ho fatta.
Come direbbe Valeria (One): “forse se lo pensa, e se lo pensa sbaglia di grosso!!”.
Grazie a tutti!
Guido
141