Lo scopo di questo progetto è quello di confrontare i dati acquisiti ( tramite l'applicazione Sensor Logger (https://github.com/tszheichoi/awesome-sensor-logger)) da diversi percorsi della stessa durata (~ 2 minuti), con e senza l'utilizzo di plantari ortopedici .
In particolare,l'analisi è stata effettuata sul sensore accelerometro, per esaminare le variazioni nell'accelerazione durante le attività.
Gli obiettivi principali che mi sono posto sono:
Il sensore utilizzato per questa analisi è l'accelerometro.
Ho applicato varie tecniche di analisi dati, tra cui calcoli delle medie, identificazione di picchi e valli e l'applicazione di un filto passa-basso.
Per esplorare e visualizzare i dati raccolti, ho importato tramite la libreria pandas i file .csv acquisiti da analizzare (convertiti in timestamp). Ho utilizzato inoltre Plotly per generare plot dinamici ed interattivi dei dati
Tramite la funzione find_peaks, ho prima individuato i picchi positivi nell'accelerazione. Ho analogamente in seguito individuato le valli (questa volta negando il segnale). La distanza minima tra i picchi è stata impostata a 25 campionamenti per evitare di rilevare picchi troppo vicini tra loro come separati (ragionamento identico applicato poi anche per le valli).
Tramite la funzione Plotly ho reso possibile la visualizzazione grafica come plot.
Sono stati infine calcolati i valori medi di picchi (e valli), al fine di fornire una stima del comportamento medio durante il periodo di rilevamento dei picchi e delle valli.
Al fine di garantire coerenza nell'analisi dei dati, ho deciso di calcolare una frequenza di campionamento media. La funzione df_acce_with['time'].diff() calcola la differenza temporale tra le misurazioni consecutive, fornendo gli intervalli di campionamento, prima per i dati raccolti con i plantari e dopo quelli senza.
Il calcolo della variabile sampling_frequency (ed ovviamente il ragionamento si applica poi per la variabile sampling_frequency_without ) mi permette di ottenere la frequenza di campionamento desiderata.
Allo scopo di ridurre il rumore nei dati raccolti, ho applicato un filtro passa-basso; nello specifico il filtro Butterworth.
Per quanto riguarda i parametri del filtro butter_lowpass, troviamo "cutoff_frequency" che rappresenta la frequenza di taglio del filtro e "order", che rappresenta l'ordine del filtro Butterworth.
Reputo i valori scelti per questi due parametri adeguati ad una pulizia sufficente da non cambiare in modo significativo il segnale
Ho applicato lo stesso ragionamento anche sul segnale filtrato.
Tramite le funzioni mean_x_with = df_acce_with['x'].mean() e mean_x_without = df_acce_without['x'].mean() ho calcolato le medie dei dati lungo l'asse x, mentre con le due seguenti sottrazioni ( diff_with = df_acce_with['x'] - mean_x_with e diff_without = df_acce_without['x'] - mean_x_without), vengono calcolate le differenze con segno rispetto alla media per i dati con e senza l'uso di plantari, in modo tale da valutare quanto ogni campione si discosta dalla media.
Riepilogando i dati analizzati, non vengono evidenziate (a mia sorpresa) grandi differenze; nelle specifiche camminate analizzate, l'uso dei plantari non sembra influire in maniera significativa sulle accelerazioni rilevate.Per capire a fondo e rilevare eventuali differenze importanti, vorrei far notare che:
- I plantari in questione sono utilizzati da diversi anni; sarebbe stato molto più interessante fare questo confronto durante i primi utilizzi.
- La breve durata delle camminate e la semplicità dei percorsi potrebbero aver limitato la rilevazione di alcune differenze; un'analisi più completa (per esempio tramite l'utilizzo di altri sensori oltre all'accelerometro) potrebbe far emergere miglioramenti della stabilità del passo grazie all'utilizzo dei plantari.