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