• Non ci sono risultati.

5.3 Secondo metodo

5.3.6 Modello Simulink basato sulla ICA

Il modello che ´e stato realizzato per attuare il metodo appena descritto ´e rappresentato nella figura 5.13.

Se espandiamo il blocco Subsystem otteniamo il sottomodello riportato in figura 5.15. Il blocco acquisition ´e quello che consente di acquisire i dati provenienti dai sensori. Se infatti lo espandiamo si ottiene la figura 5.14 in cui ´e rappresentata la scheda di acquisizione PCI-6071E della National In- struments; nel nostro caso i canali della scheda utilizzati sono 24. Inoltre si ha anche qui, come nel modello precedente, il filtro FIR che ci serve per la decimazione.

Riprendendo la figura 5.15, i dati in uscita dal blocco acquisition vengono

Metodo per il raggiungimento di target

5.3 Secondo metodo

Figura 5.15: Sottomodello ottenuto dall’espansione del blocco Subsystem

Metodo per il raggiungimento di target

Figura 5.16: Espansione dei blocchi l limb e r limb

suddivisi tramite il Demux : 12 canali vengono usati per il polso destro e 12 per il sinistro. I segnali vanno in ingresso ai blocchi r limb e l limb: al loro interno (figura 5.16) ci sono gli host scope che consentono di acquisire i dati. Dal momento che uno scope non pu´o avere in ingresso pi´u di 8 segnali, ´e stato necessario utilizzare due host scope per ogni polso.

Il blocco Rate Transition trasferisce i dati dall’uscita di un blocco che opera ad una certa velocit´a all’ingresso di un altro blocco che opera a ve- locit´a differente. I parametri di questo blocco (figura 5.16) permettono di specificare le opzioni che mantengono l’integrit´a dei dati ed il trasferimento deterministico a velocit´a pi´u elevate eo con requisiti di memoria minori. I parametri da specificare per questo blocco sono(figura 5.17):

- Ensure data integrity during data transfer : settare questa opzione con- sente di mantenere l’integrit´a dei dati da trasferire. Se il trasferimento ´e di tipo non deterministico (vedi l’opzione Ensure deterministic data transfer, il codice generato usa un doppio buffering per evitare che il blocco pi´u veloce interrompa il trasferimento dei dati. In caso contrario, per effettuare il trasferimento dei dati, viene effettuata una copia dei dati da trasferire: questa operazione di copia consuma meno memoria rispetto al doppio buffering ma pu´o essere interrotta, portando cos`ı al-

5.3 Secondo metodo

Figura 5.17: Parametri da settare per il blocco Rate Transition

la perdita di dati durante il trasferimento non deterministico. Questa opzione pu´o essere settata nel caso in cui si vogliano trasferire i dati alla massima velocit´a e, nel contempo, ci si voglia assicurare l’integrit´a dei dati.

- Ensure deterministic data transfer : la selezione di questa opzione gen- era un codice che trasferisce i dati alla stessa velocit´a del blocco pi´u lento, cio´e in modo deterministico. In caso contrario, il trasferimento dei dati avviene non appena il blocco source rende disponibile un nuovo dato e il blocco receiver ´e pronto a riceverlo. Questo evita il bisog- no di un trasferimento ritardato, assicurando cos`ı la massima velocit´a di risposta da parte del sistema. Nel contempo per´o questo significa anche che il trasferimento avviene in modo impredicibile, cosa che in determinate applicazioni ´e sconsigliata

- Initial conditions: questo parametro fa riferimento solo a transizioni slow to fast ; esso specifica l’output iniziale del Rate Transition all’inizio

Metodo per il raggiungimento di target

della transizione, ossia quando il blocco pi´u lento non manda ancora dati in ingresso al Rate Transition.

- Output port sample time: specifica la frequenza di uscita in cui ´e con- vertita quella di ingresso. Il valore di default -1 (che anche noi abbiamo usato) indica che la frequenza di uscita viene ereditata dal blocco a cui ´e connessa la porta di uscita del Rate Transition.

Riprendendo il modello di figura 5.13 si vede che dal blocco Subsystem escono 2 segnali ciascuno dei quali viene suddiviso a sua volta in due segnali: per entrambi i polsi, infatti, si dividono i segnali dei sensori che sono posizionali sulla parte superiore del polso da quelli posizionati sulla parte inferiore. I 6 segnali che si ottengono in questo modo vengono multiplexati: alla fine si hanno 4 segnali (2 per il polso destro e 2 per il sinistro) ciascuno dei quali va in ingresso ad un altro blocco Subsystem. Questi blocchi contengono il medesimo algoritmo, che ´e quello che ci consente di calcolare le componen- ti indipendenti. Il sottosistema in questione ´e riportato nella figura 5.18: i guadagni che sono presenti in questo sottosistema sono usati per dare ai segnali lo stesso peso. I segnali di ingresso vanno nel blocco GlovetoAngles (figura ??) in cui, dopo essere stati messi nella giusta forma tramite il Re- shape, sono moltiplicati per la matrice A che ´e la matrice, fissata nella fase di calibrazione, che estrae la prima componente indipendente dai segnali.

L’altro blocco fondamentale del modello di figura 5.13 ´e il blocco alg: esso contiene l’algoritmo che mi consente di avere i parametri per lo spostamento della wheelchair. Ai segnali che entrano in questo sottosistema (figura 5.19) viene sottratto il relativo offset; il risultato della sottrazione va in ingresso ad un passabasso (realizzato mediante il bloccodelay1 ) che ripulisce il segnale; il blocco seguente, delay, invece, rappresenta una funzione di trasferimento che ritarda il segnale. Questo mi consente cos`ı di andare a realizzare l’op- erazione di derivazione sottraendo al segnale di partenza lo stesso segnale ritardato. Questo metodo consente di ottenere segnali pi´u puliti rispetto al caso in cui applicassi la derivata vera e propria. Ci´o che si ottiene dall’oper- azione di derivazione sono una serie di picchi (vedi figura). I blocchi seguenti

5.3 Secondo metodo

Figura 5.18: Sottomodello ottenuto dall’espansione del blocco Subsystem

(guadagni, smooth e death zone) sono stati inseriti per ripulire ulteriormente il segnale. Il ruolo svolto dal blocco Saturation ´e quello di farmi ottenere solo picchi positivi; la caratteristica di questo blocco ´e, infatti, quella di imporre un limite superiore e un limite inferiore al segnale: quando il segnale ´e al- l’interno del range specificato dai parametri Upper limit e Lower limit passa inalterato, altrimenti viene tagliato al limite superiore o a quello inferiore. Successivamente si fa l’integrale del segnale cos`ı ottenuto grazie al blocco Integrator : in questo modo, dai picchi si passa ad un segnale a gradini. Un movimento del polso fa variare il segnale e consente di passare da un gradino ad un altro, incrementando o decrementando il valore della velocit´a o del- l’angolo di rotazione.

All’uscita dai blocchi alg abbiamo quattro segnali: i due per la velocit´a (positiva e negativa) sono governati dai movimenti del polso sinistro, mentre i due per la rotazione (angoli positivi e negativi) da quelli del polso destro. I due segnali per la velocit´a vengono sommati tra loro e al segnale risultante viene sottratto un offset in modo che, quando parte la prova, la velocit´a della wheelchair sia nulla. Lo stesso avviene per la rotazione.

Il Target Scope mi grafica sul computer target questi 6 segnali: velocit´a posi-

Metodo per il raggiungimento di target

Figura 5.19: Sottomodello ottenuto dall’espansione del blocco alg: questo sottosistema mi consente di calcolare i valori della velocit´a e della rotazione da applicare alla wheelchair

5.3 Secondo metodo

Figura 5.20: Modello utilizzato per realizzare l’animazione che simula il movimento della wheelchair

tiva, velocit´a negativa, velocit´a totale, rotazione positiva, rotazione negativa e rotazione totale.

L’Host Scope, invece, rileva i parametri che serviranno poi per le funzioni che realizzano la calibrazione e il settaggio dell’offset.

Documenti correlati