Kss - Kinematic Sensor System
5.1 Introduzione alla documentazione
Kss, acronimo di Kinematic Sensor System, e il software di gestione del si-stema di rilevamento della cinematica corporea. Il suo sviluppo e cominciato con questo lavoro di tesi ed e fornita una documentazione completa del codice nora scritto1.
Nei successivi paragra e data una breve descrizione di quelle che sono le speciche e le caratteristiche del programma; per maggiori approfondimenti si rimanda alla documentazione vera e propria riportata in appendice A.
5.2 Speciche
Nell'ambito della realizzazione di un sistema di gestione dei segnali acqui-siti dalla maglietta sensorizzata, si vuole realizzare un software
apposita-1La struttura della documentazione e stata generata col software Doxygen. Per chi non
conoscesse l'output di questo tool basti sapere che e un sistema di documentazione auto-matica per codice scritto in C, C++, Java, IDL (Corba) e con alcune estensioni al PHP: esso riconosce la struttura logica generale del programma attraverso le sue dipendenze gerarchiche di classi, oggetti e funzioni ed e in grado di fornire una versione preliminare di documentazione in HTML e LATEX, in generale ben organizzata, da completare da parte
Kss - Kinematic Sensor System
mente dedicato. Il linguaggio di programmazione adottato e del tipo OOD (dall'inglese Object-Oriented Design).
Il primo e necessario passo e quello di eettuare la cosiddetta analisi e progettazione orientata agli oggetti (OOAD, Object-Oriented Analysis and Design), ossia si deniscono le linee guida di analisi e progettazione del si-stema per la soluzione di un dato problema. Questo deve essere denito anzitutto in maniera astratta: si ha a disposizione una maglietta sensoriz-zata, la quale e indossata da un paziente che svolge degli esercizi in fase di teleriabilitazione, fornendo ad un sistema di acquisizione un set di segnali elettrici che devono essere acquisiti, elaborati, processati ed interpretati. In-ne, vista l'attuale fase di sviluppo, deve essere possibile accedere ai dati in maniera diretta.
Si devono quindi garantire le seguenti funzionalita:
visualizzazione sullo schermo del terminale di un avatar che rappresenti in maniera intuitiva i segmenti articolari movimentati dalla maglietta sensorizzata;
visualizzazione sullo schermo del terminale degli sviluppatori della con-dizione di funzionamento della maglietta, ossia dei segnali che essa fornisce;
possibilita di accedere ai dati dei sensori e di interagire con l'utente tramite connessione remota;
5.3 Caratteristiche
Per la realizzazione di questo software sono state prese le seguenti decisioni: Come gia detto nella pesentazione e stato utilizzato solo software di tipo OS (Open Source) e tale e rilasciato il presente. Il sistema operativo adottato e il GNU/Linux (distribuzione Debian, kernel 2.4.26), ma e contemplata la possibilita di esportare il tutto verso altre piattaforme;
Il linguaggio di programmazione adottato e il C++; questo a causa della sua enorme versatilita e della sua vastissima diusione. Esso permette inoltre la realizzazione di applicazioni di tipo real time che sono richieste in questo ambito. L'editor usato e il GNU Emacs e il compilatore e il gcc versione 3.3.2;
Per i suddetti motivi di portabilita, le librerie di interfaccia graca adot-tate sono le Qt - Free edition versione 3.2.3 ([22]). Esse si programma-no in C++ e soprogramma-no supportate dalle seguenti piattaforme: M$/Windows (95, 98, NT 4.0, ME, 2000, XP), Unix/X11 (Linux, Sun Solaris, HP-UX, Compaq Tru64 UNIX, IBM AIX, SGI IRIX e molte altre), Macin-tosh (Mac OS X), Embedded (piattaforme Linux col supporto frame-buer). Sono estremamente versatili ed orono inoltre apposite classi di interfaccia con altre applicazioni;
Per quanto riguarda il rendering di oggetti tridimensionali, quali lo sono i modelli articolari adottati in questo lavoro sono state utilizzate le librerie OpenGL ([21]). Le Qt orono apposite classi di interfaccia per le applicazioni OpenGL e quindi si integrano perfettamente in questo ambiente;
Oltre alla libreria matematica fornita con la STL (Standard Templa-te Library) del C++, e stato utilizzato un'altro pacchetto di librerie matematiche: le It++ versione 3.0.3 ([13]): esso fornisce una serie di strumenti utili all'elaborazione dei segnali ed altre funzioni e classi per le applicazioni di comunicazione. Per quanto riguarda invece la visua-lizzazione graca dei segnali si sono utilizzate le librerie Qwt ([23]), versione 0.4.1, che forniscono applicazioni tecniche in ambiente Qt; Per quanto riguarda la comunicazione con l'elettronica d'acquisizione
(schede integrate National Instruments 6024E pcmcia e PCI-MIO-16E-4) sono stati utilizzati i driver OS per Linux Comedi ([3]), versioni 0.7.68 (API) e 0.7.21 (lib).
Kss - Kinematic Sensor System
Figura 5.1: Finestra principale di Kss.
5.4 Interfaccia graca
Nel rispetto delle speciche, al momento, Kss presenta le seguenti caratteri-stiche:
ambiente graco di visualizzazione tridimensionale dei modelli artico-lari sviluppati;
ambiente di acquisizione e visualizzazione graca dei segnali. ambiente di pre-elaborazione dei segnali acquisiti;
5.4.1 Kss - main window
Questa nestra, visibile in g. 5.1, e l'ambiente principale di Kss. Da essa sono accessibili le opzioni principali del programma ed e splittata in due frame orizzontali: quello dell'ambiente OpenGL e quello dei menu laterali. Nel primo frame e possibile interagire col modello attraverso varie combinazioni da tastiera:
Per cambiare il punto di vista e mouversi nell'ambiente tridimensionale si usano i tasti F1-F6 che incrementano/decrementano la posizione della telecamera lungo gli assi del sistema di riferimento principale tenendo sso il punto di osservazione;
Per quanto riguarda il controllo in cinematica diretta delle articolazio-ni, queste sono selezionabili dal relativo menu a tendina nella toolbar e si possono incrementare gli angoli che caratterizzano le coordinate lagrangiane dei vari giunti attraverso i tasti 1-7 (1-3 per i modelli a 3 gdl, come le gambe) e decrementare con i tasti Q-U (Q-E). Il tronco si muove con i tasti 8-I e K-L ed inne il collo con i tasti 9-O e 0-P; E' presente un target, ragurato da una pallina rossa. Questa e mossa
nella direzione degli assi coordinati tramite le quattro frecce ed i tasti PgUp e PgDown. Questo servira per poter eettuare degli esercizi di inseguimento ai pazienti che indosseranno la maglietta.
Dalla toolbar sono accessibili le seguenti opzioni:
selezionare se visualizzare o nascondere il target, gli assi principali del SDR OpenGL e lo sfondo, cosiccome cambiare alcune opzioni di visualizzazione;
caricare un le di dati corrispondenti ad un determinato movimento. Al momento i dati caricati sono valori interi e corrispondono alle gran-dezze angolari della coordinata lagrangiana associata alla essione del ginocchio2;
selezionare i modelli articolari da muovere attraverso il menu a tendina; ripristinare la congurazione iniziale delle coordinate lagrangiane del modello di arto selezionato (l'essere a sembianze umane e posto ini-zialmente nella cosiddetta posizione standard descritta nella sezione 2.2);
2Questa opzione e inserita, vista l'attuale presenza di una ginocchiera sensorizzata
Kss - Kinematic Sensor System
eseguire un'iterpolazione lineare sferica (Slerp) tra due posture dell'arto corrente acquisendole successivamente: i giunti sono controllati tramite gli angoli di Eulero e le posizioni sono convertite in termini di quater-nioni unitari per poi interpolare tra le due (si veda l'appendice C per maggiori delucidazioni);
collegarsi in remoto tramite connessione socket TCP/IP ad un server di acquisizione e di elaborazione dei segnali provenienti dalla maglietta; eseguire le operazioni di calibrazione e di riconoscimento di posizione; interagire con i graci di visualizzazione dei segnali;
ripristinare la congurazione iniziale di tutti i parametri, inclusa tele-camera e posizione del target (si veda piu avanti);
visualizzare la mappa dei caratteri associata al controllo dei modelli articolari.
Nella parte inferiore della nestra OGL si ha una serie di display, dei quali: il primo rappresenta la distanza tra l'end eector del braccio destro (la punta della mano) e il target; i sette successivi rappresentano l'attuale valore delle coordinate lagrangiane del modello caricato (ovviamente, per i modelli a tre gdl solo i primi tre sono attivi) e inne l'ultimo e attivo solo in fase di acquisizione e da un'indice della deformazione globale dei sensori della maglietta.
Nel secondo frame sono invece visualizzati i segnali che fornisce la ma-glietta; si hanno:
Andamento temporale dell'uscita di un determinato canale della scheda d'acquisizione;
Derivata prima del suddetto; Graco globale di tutti i canali;
Figura 5.2: Finestra di elaborazione dei dati in Kss.
5.4.2 Elaborazione dei segnali
Questa nestra, visibile in g. 5.2, e accessibile tramite la barra dei menu della nestra principale. Essa e suddivisa in due frame orizzontali: il primo, quello principale, nel quale vengono visualizzati i dati caricati e il secondo che permette le operazioni di elaborazione. Attualmente, questa netra e usata per caratterizzare le proprieta dinamiche dei sensori successivamente al vericarsi di un picco, come gia esposto nel capitolo 4.
5.4.3 Visualizzazione dei segnali
Questa nestra, visibile in g. 5.3, e accessibile tramite la barra dei menu della nestra principale. Essa e suddivisa in due frame orizzontali: il primo, quello principale, nel quale vengono visualizzati i dati dei segnali provenien-ti dalla maglietta, e il secondo che permette le operazioni di connessione all'elettronica di acquisizione e di attivare varie opzioni di elaborazione in process.
Kss - Kinematic Sensor System
Figura 5.3: Finestra di visualizzazione dei dati in Kss.
5.5 Riconoscitore di posizioni
Nello sviluppo della tecnologia dei sensori cinestetici indossabili, un obietti-vo posto e stato quello di validare la maglietta sensorizzata anzitutto come riconoscitore di posizioni. Questo e il primo passo verso una ricostruzione della cinematica vera e propria.
La logica seguita e quella di eseguire una calibrazione acquisendo un certo numero di posizioni corrispondenti a determinate uscite dei sensori, tali da costruire una relazione del tipo:
~
S ! ~Q
dove S e lo spazio dei sensori e Q e lo spazio delle congurazioni . Il primo ha dimensioni p c, dove p e il numero delle posizioni considerate e c e il numero dei canali acquisiti dalla maglietta, ognuno corrispondente ad un determinato sensore (in questa analisi si sono acquisiti c = 15 canali); il secondo ha invece dimensioni p n, com n corrispondente al numero dei gradi di liberta dell'arto in considerazione (n = 7 per l'arto superiore).
Figura 5.4: Esempio graco di riconoscimento delle posizioni tramite analisi della generica congurazione dei segnali.
Il riconoscimento avviene acquisendo ad intervalli regolari la generica con-gurazione S e confrontandola con quelle di calibrazione di ~S cercando quella a cui e piu vicina, ossia per cui e minimo lo scarto quadratico :
j = c X i=1 (S2 i S~ij2)
con i = 1 : : : p. In gura 5.4 si riporta un esempio graco di cio che si e detto. Notare bene che i segnali non sono ancora normalizzati.
Dall'analisi sperimentale si e poi visto che la deformazione dei sensori in-torno ad un'articolazione non in uisce molto sui rimanenti (anche se questo va ancora quanticato). E' quindi possibile dividere l'algoritmo di riconosci-mento in tre parti, una per ogni articolazione e quindi calibrare tre posizioni distinte in una sola acquisizione.