Blog
Lingua:
Italiano English
Torna agli articoli

Cinetica della pedalata: conversione e filtraggio su OpenSim

Introduzione

Il presente progetto nasce dall'esigenza di integrare dati di movimento acquisiti tramite sensori inerziali all'interno dell'ambiente di simulazione biomeccanica OpenSim, con l'obiettivo di ottenere una ricostruzione affidabile del gesto della pedalata. Nelle fasi iniziali del lavoro non erano disponibili protocolli operativi consolidati né procedure standardizzate per la conversione e l'elaborazione dei dati, rendendo necessario lo sviluppo di un workflow dedicato.

I primi tentativi di importazione hanno evidenziato significative criticità legate all'incompatibilità tra il formato dei dati acquisiti e i requisiti strutturali richiesti da OpenSim. In particolare, il disallineamento tra i sistemi di riferimento utilizzati dai sensori e quello adottato dal software di simulazione determinava un'errata configurazione spaziale del modello biomeccanico, compromettendo la corretta riproduzione della postura del ciclista sulla bicicletta. Parallelamente, la presenza di anomalie nella lettura e nell'interpretazione dei dati grezzi generava movimenti discontinui e privi della necessaria coerenza cinematica, limitando la possibilità di effettuare analisi biomeccaniche attendibili.

Alla luce di tali problematiche, il progetto si è orientato verso la definizione di una pipeline di elaborazione in grado di convertire, correggere e ottimizzare i dati acquisiti, garantendo la compatibilità con OpenSim e la qualità delle successive analisi del movimento.

Obiettivo

L'attività svolta ha avuto come obiettivo generale la realizzazione di una procedura affidabile per l'importazione e l'analisi di dati cinematici all'interno di OpenSim, applicata allo studio del gesto della pedalata. A tal fine, il lavoro si è concentrato sul raggiungimento di tre obiettivi specifici.

In primo luogo, è stata sviluppata una procedura di scaling personalizzato del modello biomeccanico, finalizzata a riprodurre in modo accurato le caratteristiche antropometriche del soggetto analizzato, superando l'utilizzo di modelli generici e consentendo una rappresentazione più realistica della configurazione corporea del ciclista.

Successivamente, è stato affrontato il problema del disallineamento tra i sistemi di riferimento dei sensori e quello di OpenSim, attraverso la definizione di una strategia di correzione e allineamento spaziale che permettesse di ricostruire correttamente la posizione di guida all'interno dell'ambiente virtuale.

Infine, sono state implementate tecniche di elaborazione del segnale volte a ridurre il rumore presente nelle acquisizioni strumentali e a minimizzare le discontinuità cinematiche. L'obiettivo finale di questa fase è stato ottenere un'animazione fluida e biomeccanicamente coerente, priva di artefatti, idonea alle successive analisi quantitative del movimento.

Sviluppo del progetto

a. Script MATLAB per la conversione dei file

Sviluppo dell’algoritmo da .mvn a .mot

Per superare l’incompatibilità dei file nativi generati dai sistemi di Motion Capture inerziale e consentire l’animazione dello scheletro virtuale, è stato utilizzato e adattato uno script MATLAB originariamente sviluppato per la conversione dei dati cinematici Xsens in file .mot compatibili con OpenSim. Questo script funge da vero e proprio ponte tecnologico, automatizzando la traduzione dei dati cinematici grezzi (formato .mvn o .mvnx esportato dal software Xsens) nel formato nativo richiesto dall’ambiente di simulazione OpenSim (file di movimento con estensione .mot).

L’obiettivo primario dell’algoritmo è convertire e mappare matematicamente gli angoli definiti nel software Xsens in modo che siano coerenti con i gradi di libertà e le convenzioni geometriche dei modelli muscolo-scheletrici di OpenSim.

Analisi strutturale e geometrica dei formati La necessità di sviluppare un convertitore dedicato risiede nelle profonde differenze strutturali e fisiche dei due formati di file:

Fasi logiche dell’elaborazione nello Script

Per convertire con successo il movimento e popolarne la struttura, l’algoritmo segue una sequenza logica divisa in tre macro-operazioni:

di salvataggio è vitale, poiché OpenSim rifiuta l’importazione o crasha se riscontra una colonna mancante rispetto a quelle dichiarate nell’header.

Attraverso una logica condizionale (if-elseif strcmp), il vettore signs (inizialmente composto da soli valori 1 viene modificato inserendo un valore -1 in corrispondenza degli indici critici per invertire chirurgicamente la polarità cinematica in base al modello OpenSim selezionato:

L’operazione matematica finale si traduce in una moltiplicazione elemento per elemento (operatore matriciale .* di MATLAB) tra il vettore dei segni e la matrice globale dei movimenti, a cui viene successivamente concatenata la colonna temporale convertita in secondi:

"Angles_Matrix"="signs".*("Angles_Matrix")

Il file finale .mot viene infine scritto fisicamente stampando riga per riga l’header testuale rigoroso, rendendo i dati pronti, puliti e digeribili per il risolutore di cinematica inversa di OpenSim.

b. Analisi e filtraggio del segnale

Dopo aver convertito il file dal formato nativo .mvn a .mot seguendo la procedura descritta, i dati di movimento sono stati filtrati mediante uno script MATLAB. Prima di procedere con il filtraggio, è stato condotto uno studio del segnale nel dominio della frequenza: applicando la Trasformata Rapida di Fourier (FFT) a una componente cinematica, sono state identificate le componenti armoniche del movimento della pedalata per isolarle dal rumore di fondo.

Come si nota dal grafico, a frequenze molto basse è presente un picco di ampiezza elevato. Questo picco rappresenta la componente continua (l'offset medio del segnale nel tempo) che, nel nostro specifico setup, custodisce l'informazione biomeccanica fondamentale sulla posizione geometrica reclinata iniziale del soggetto.

Durante la conversione dei dati per OpenSim, si è riscontrato un ulteriore problema: un artefatto visivo consistente in una rotazione istantanea di 360° del modello. Questo fenomeno è legato al wrapping (avvolgimento) degli angoli di Eulero, i cui valori vengono matematicamente limitati nell'intervallo [-180°, +180°], generando discontinuità artificiali quando il movimento reale supera tale soglia. Per risolvere questo errore numerico, è stata applicata la funzione di unwrap sul segnale cinematico prima dell'importazione in OpenSim. L'algoritmo ha identificato i salti in prossimità dei ± 180° e vi ha sommato algebricamente multipli di 360° (2π rad). Questo intervento ha rimosso i picchi fittizi di velocità angolare, garantendo la continuità della traiettoria e una simulazione coerente.

Per quanto riguarda la pulizia dei dati, è stato preferito un filtro passa-basso rispetto a un filtro passa-banda. I movimenti volontari del corpo umano sono infatti fenomeni a bassa frequenza, il cui contenuto informativo si attesta generalmente sotto i 6-10 Hz, mentre il rumore di misura si concentra alle alte frequenze; il filtro passa-basso permette quindi di eliminare il disturbo preservando il segnale utile. La scelta di un filtro passa-banda è stata scartata poiché l'introduzione di una frequenza di taglio inferiore avrebbe eliminato proprio le frequenze molto basse, azzerando l'offset posturale di partenza e inficiando i successivi calcoli di dinamica inversa in OpenSim.

Criticità

Le criticità che abbiamo riscontrato sono state:

Conclusioni e sviluppi futuri

Mediante il lavoro svolto è stato possibile ottenere un'animazione biomeccanica stabile e coerente con il gesto reale della pedalata, un movimento del modello più fluido e realistico all'interno di OpenSim, migliorando la qualità dell'animazione e la robustezza delle analisi

successive.

In prospettiva futura, il workflow potrà essere ulteriormente migliorato mediante l'automazione delle procedure di conversione e filtraggio, rendendo la pipeline più rapida, standardizzata e

facilmente replicabile per acquisizioni differenti.

La disponibilità di dati cinematici affidabili in OpenSim apre inoltre la strada ad analisi biomeccaniche avanzate, quali la Dinamica Inversa, la stima delle forze muscolari tramite Static

Optimization, l'analisi dei carichi articolari e lo studio dell'influenza della postura sulla performance del ciclista. Tali strumenti potranno supportare l'ottimizzazione ergonomica del veicolo e future attività di progettazione integrate con simulazioni multidisciplinari.