Capitolo 1 - Università degli Studi dell`Insubria

Transcript

Capitolo 1 - Università degli Studi dell`Insubria
WE-FREE: STUDIO E
SVILUPPO DI
UN’APPLICAZIONE PER
L’USO DI VIDEOGIOCHI
NELLA RIABILITAZIONE PER
DISABILITA’ MOTORIE
Relatore: Ing. Spoletini Paola
Correlatore: Ing. Campi Alessandro
Elaborato di laurea di:
Giacomo Rolli
Matr. 677273
Valsecchi Laura
Matr. 706501
Politecnico di Milano
Anno Accademico 2008-2009
1
Indice
Indice ..................................................................................................................................... 1
Capitolo 1.
Introduzione .................................................................................................. 4
Capitolo 2.
Le Console di settima generazione ............................................................... 5
Capitolo 3.
Nintendo Wii ................................................................................................ 8
3.1
La console Nintendo Wii e il controller Wii Remote ............................................ 8
3.2
Specifiche Tecniche della console Nintendo Wii [2] .......................................... 12
3.3
Nintendo Wii Fit .................................................................................................. 14
Capitolo 4.
Determinazione e controllo della posizione del centro di massa ............... 18
4.1
Che cosa è il centro di massa ............................................................................... 18
4.2
Cinematica e dinamica per il controllo dei robot ................................................ 19
4.3
Cinetica inversa per il controllo della posizione del centro di massa .................. 21
4.4
“Segmental method” ........................................................................................... 26
4.5
Determinazione del centro di massa di una persona in posizione seduta ........... 29
Capitolo 5.
Ambiente di sviluppo................................................................................... 34
5.1
Microsoft Visual Studio 2008.............................................................................. 34
5.2
Microsoft XNA Game Studio 3.1 ........................................................................ 35
5.2
Microsoft XNA Game Studio 3.1 ........................................................................ 35
5.3
Autodesk 3DS Max ............................................................................................. 36
5.4
Libreria WiiMote ................................................................................................ 38
Capitolo 6.
Implementazione e realizzazione................................................................. 41
6.1
Specifiche del gioco............................................................................................. 41
6.2
Implementazione del gioco ................................................................................. 43
6.2.1
La classe Game1 .......................................................................................... 43
6.2.2
La classe GameObject ................................................................................. 45
6.2.3
La classe Giocatore ...................................................................................... 45
6.2.4
La classe Fisioterapista ................................................................................ 45
6.2.5
La classe CentroDiMassa ............................................................................ 46
6.2.6
Angolo di piegamento ................................................................................. 48
6.2.7
La telecamera ............................................................................................... 51
2
6.2.8
I modelli 3D ................................................................................................. 52
6.2.9
Detection Collision ...................................................................................... 54
Capitolo 7.
Sviluppi futuri ............................................................................................. 55
Elenco figure........................................................................................................................ 56
Elenco Tabelle ..................................................................................................................... 57
Bibliografia .......................................................................................................................... 58
Ringraziamenti..................................................................................................................... 61
3
Capitolo 1.
Introduzione
Nel 2006 Nintendo ha lanciato sul mercato una console del tutto innovativa, Nintendo Wii,
i cui controller non sono dei semplici telecomandi che permettono di comandare il gioco
premendo dei pulsanti, ma sono dei dispositivi che rilevano il movimento del corpo
permettendone così un controllo diretto.
Uno di questi controller è la Balance Board, una pedana che determina i movimenti
dell’utente rilevando lo spostamento del suo peso.
La maggior parte dei giochi che utilizzano questo controller devono essere eseguiti stando
in piedi sulla pedana, non permettendone così l’uso a persone affette da patologie che non
consentono tale postura.
Il software infatti calibra il gioco calcolando il baricentro del giocatore in posizione eretta,
se quindi l’utente si dovesse sedere sulla Balance Board, invece che stare in piedi, non
riuscirebbe ad avere un perfetto controllo del gioco.
L’obiettivo di questo progetto è rendere possibile l’uso della Balance Board anche a
persone che potrebbero incontrare questo problema, in particolare a soggetti paraplegici e
tetraplegici, permettendogli di giocare stando seduti sulla pedana.
Parlando con Dario Pometto, fisioterapista all’Unità spinale dell’Ospedale Niguarda e con
la Dottoressa Tiziana Redaelli , primario dell’Unità spinale dell’Ospedale Niguarda, si è
capito che si sarebbe potuto fare un gioco che, oltre ad intrattenere, permettesse degli
esercizi riabilitativi in un’ottica divertente.
I movimenti sui quali si sarebbe potuto puntare inizialmente sarebbero potuti essere gli
spostamenti del busto laterali, anteriori e posteriori.
La tesi è stata così suddivisa in due parti. In un primo momento si è affrontato il problema
principale della determinazione del centro di massa di un soggetto seduto, in seguito si è
sviluppato un gioco che obbliga a compiere movimenti utili alla riabilitazione del soggetto,
calibrati in base livello della lesione.
4
Capitolo 2. Le
Console
settima generazione
di
Una console è un dispositivo elettronico concepito esclusivamente o primariamente per
giocare con videogiochi.
Magnavox Odyssey è stata la prima console. Progettata da Ralph H. Baer nel 1968, fu
distribuita sul mercato da Magnavox 4 anni più tardi.
Si trattava di una macchina alimentata a batterie, sprovvista di audio e dotata di una grafica
decisamente approssimativa: basti pensare che insieme alla console venivano fornite una
serie di cover colorate trasparenti da posizionare sullo schermo della TV per ottenere gli
sfondi di gioco.
Odyssey non ebbe un gran successo commerciale, ma si trattò comunque di una vera e
propria rivoluzione considerando che era la prima volta che veniva concepito uno
strumento per videogiochi dedicato all’ambiente domestico.
Negli anni a seguire, numerose aziende si sono avvicinate a questo mercato e hanno
cercato di superarsi tra loro con continue innovazioni.
I primi modelli permettevano di giocare solo ad un numero limitato di videogiochi
implementati al loro interno. Nella implementazione più evoluta la console invece è
diventata sempre più simile a un computer che esegue videogiochi, permette di vedere
film, ascoltare musica, connettersi a internet per giocare online...
Attualmente ci troviamo nella settima generazione di console per videogiochi, che include
prodotti sviluppati dal 2004 ad oggi.
Le console di questa generazione che stanno avendo maggior successo sono Nintendo DS e
Wii di Nintendo, Playstation Portable e Playstation 3 distribuite da Sony, Xbox 360
prodotta da Microsoft con la collaborazione di IBM, ATI Technologies e Samsung.
Nintendo DS è una console portatile presentata nel 2004.
La console presenta un design a conchiglia, possiede due schermi LCD al suo interno ,uno
dei quali è touch screen.
Altre caratteristiche, volte ad aumentarne l'interattività, sono il microfono integrato per il
riconoscimento vocale e la tecnologia Wi-Fi per il multigiocatore. Nintendo DS consente il
5
gioco in LAN nel raggio di 30 metri circa, fino a 8 giocatori; è inoltre possibile giocare
online tramite il servizi gratuito Nintendo Wi-Fi Connection che permettere di sfidare via
Internet giocatori da tutto il mondo.
Wii è succeduta al Nintendo GameCube. GameCube è una console da tavolo, migliore dal
punto di vista grafico rispetto alle precedenti, ma comunque senza nulla di particolarmente
innovativo rispetto agli altri prodotti presenti sul mercato.
La sua caratteristica più distintiva è il controller senza fili, il Wiimote ,simile ad un
telecomando, che reagisce alle forze vettrici e all'orientamento rispetto allo spazio
tridimensionali attraverso un sistema di accelerometri e giroscopi presente al suo interno,
riproducendo così i movimenti effettuati dall’utente che lo tiene in mano.
È inoltre disponibile la funzione WiiConnect24 che permette di essere costantemente
connessi alla rete Internet, potendo ricevere messaggi, trucchi ed altri dati anche mentre
non si sta giocando, e il sistema Wi-Fi Connection, presente anche in Nintendo DS.
La PSP è una console portatile prodotta e venduta dalla Sony Computer Entertainment a
partire dagli inizi del 2005.
La PlayStation Portable offre la possibilità di giocare, vedere video, ascoltare musica,
visualizzare immagini, fornendo anche la possibilità di utilizzare un browser internet
apposito.
L’azienda Sony ha inoltre distribuito nel 2006 la nuova Play Station 3, che succede alla
PS2, migliorandone la grafica, grazie al processore centrale Cell e alla scheda grafica RSX.
Supporta l'alta definizione, gestendo risoluzioni Full HD fino a 1080p, e la maggior parte
dei giochi sono distribuiti su dischi Blu-ray che consentono di memorizzare una grande
quantità di contenuti multimediali.
Come Nintendo, anche Sony offre un servizio online gratuito, PlayStation Network, che
comprende un browser per navigare in internet, un sistema di chat e di e-mail, la possibilità
di giocare on-line e un negozio virtuale dove acquistare video, trailer, immagini, sfondi,
temi, giochi (gratuiti o a pagamento), demo e accessori virtuali per personalizzare i giochi.
XBOX 360, distribuita nel novembre del 2005 da Microfoft, è una console da tavolo con
supporto per la tecnologia ad alta definizione, concorrente della PS3.
Il servizio di gioco on-line offerto dalla Microsoft Corporation che permette di giocare in
multiplayer attraverso internet è Xbox Live.
6
Tale servizio dispone anche di un mercato virtuale on-line dal quale è possibile scaricare
contenuti come trailer, video, espansioni di giochi, demo e aggiornamenti per il sistema.
7
Capitolo 3.
Nintendo Wii
3.1 La console Nintendo Wii e il controller
Wii Remote
Alla fine del 2006 (il 7 dicembre in Italia) ha debuttato sul mercato l’ultima console
firmata Nintendo, la Nintendo Wii.
Nell’ampio mercato dei videogiochi, questa console è andata a riempire un segmento fino a
quel momento vuoto. Infatti la console permette di comandare il gioco direttamente tramite
i movimenti del proprio corpo.
Le partite di tennis non sono più confinate alla semplice pressione di un pulsante. Grazie
all'innovativo controller, Nintendo ti permette di prendere parte all'azione: usi il
telecomando Wii per colpire la pallina, come se avessi in mano una racchetta.
Figura 1: Wii Sport Tennis
È nato così un modo di giocare completamente nuovo, senza più joystick o tastiere.
Lo sviluppo della console Wii è iniziato subito dopo il lancio del GameCube.
Nello sviluppo di una nuova console, per quel che riguarda i singoli componenti e la
tecnologia applicata, non si riparte sempre da zero, ma ci si basa sulle tecnologie esistenti.
8
Figura 2: Console Nintendo Wii
Nel mondo della tecnologia ci sono sempre state le cosiddette road map (ovvero i
programmi relativi alla tempistica e alla modalità in cui le nuove tecnologie si riveleranno
al pubblico in futuro). I vari settori dell'industria cercano di prevedere la modalità di
evoluzione delle tecnologie basate sui semiconduttori, come quelle per il supporto dati o
per la comunicazione wireless. In genere, ingegneri e sviluppatori fanno riferimento a
queste road map durante lo sviluppo delle macchine che verranno lanciate in futuro.
La console Wii è invece una console la cui esistenza è totalmente avulsa dagli schemi
previsti dalle road map.
Se avessero seguito le road map, gli sviluppatori di Nintendo avrebbero cercato di
realizzare un qualcosa di "più potente e più bello" di GameCube, in grado di generare una
grafica migliore in minor tempo, ma evidentemente non è stato così.
Per segnare il lancio di Wii, il presidente e amministratore delegato di Nintendo, Satoru
Iwata, ha condotto una serie unica di interviste (Iwata chiede: Wii” [1] ) per documentare
nel dettaglio la creazione della nuova console Nintendo.
Dalle interviste emerge chiaramente che l’obiettivo intrapreso nello sviluppo è stato un
altro.
“Più o meno un anno dopo l'inizio dello sviluppo della console Wii, dopo aver parlato con
alcuni sviluppatori nostri partner, arrivai alla conclusione che i desideri di quelli che
vogliono "sempre di più" non hanno limiti. Se hanno uno, vogliono due. Una volta ottenuto
due, non vogliono tre, ma cinque, dieci, trenta, o anche cento. Desiderano sempre di più e,
alla fine, cercare di accontentarli non ci porterebbe da nessuna parte. Circa un anno dopo
l'inizio dello sviluppo della console Wii ho capito che c'era qualcosa di sbagliato in
9
quell'approccio.”
Afferma
Takeda-san,
il
principale
responsabile
del
progetto,
nell’intervista.
Così invece di puntare a cercare di aumentarne la capacità di calcolo e la potenza, cosa che
avrebbe fatto aumentare anche le dimensioni e il consumo energetico del chip, gli
sviluppatori Nintendo hanno sfruttato la tecnologia per minimizzare il consumo energetico
della console Wii, realizzando così una macchina che può essere lasciata sempre accesa,
sfruttando la tecnologia allo stato dell'arte in un modo unico rispetto a tutte le altre
macchine.
Un altro obiettivo era quello di fare della console Wii non un semplice giocattolo per
bambini, ma una console adatta a tutta la famiglia.
Proprio questo motivo ha spinto la ricerca di un design adeguato che ha portato ad ottenere
una console che possiede le funzionalità e la durevolezza di un giocattolo, ma senza
apparire tale.
La parte più innovativa della Wii è il controller Wii Remote, più comunemente chiamato
Wiimote. Il suo sviluppo è stato influenzato dal Nintendo DS in quanto l’idea di poter
toccare direttamente lo schermo, che sta alla base di tale console, ha fatto molto scalpore.
L’idea più ovvia sarebbe stata quella di installare un touch screen sul controller Wii, come
molti si aspettavano, o di usare un dispositivo per il puntamento simile al mouse di un
computer o al touchpad, come inizialmente avevano pensato gli sviluppatori.
Alla fine però si è arrivati ad ottenere un qualcosa di molto diverso e completamente
innovativo, come spiega nell’intervista Kenichiro Ashida, disegner dell’azienda:
“Io credevo fermamente nel fatto che il controller del GameCube fosse il culmine di tutti i
controller che lo avevano preceduto e che non sarebbe stato possibile migliorarlo con delle
aggiunte. Più che altro, sentivo che io e il controller stavamo diventando incompatibili.
Avendo una famiglia, diminuiva il tempo a disposizione per giocare a giochi difficili e si è
creato un divario tra il "me stesso creatore" e il "me stesso giocatore". Quando invece ho
compreso il concetto alla base della console Wii, ho capito che mi avrebbe fatto divertire.
In realtà ho compreso che era ora di cambiare l'idea che avevo del videogioco come
momento in cui afferrare il controller con tutte e due le mani e restare incollato davanti al
televisore fino al mattino. Non sto rinnegando quel tipo di esperienza di gioco, ma trovo
che il passare dall'uso delle due mani vicine a un uso semplice, come se si disegnasse su
una lavagna, apra una finestra sul futuro.”
10
Lo sviluppatore era convinto che quando si gioca, la cosa più vicina al giocatore è il
controller, per questo motivo, il controller doveva essere percepito non tanto come
un'estensione della console, quanto come un'estensione del giocatore stesso.
Tutto ciò a portato allo sviluppo di Wiimote, controller simile ad un telecomando da tenere
con una sola mano, che comunica con la console utilizzando la tecnologia Bluetooth.
Le sue dimensioni sono compatte: è largo circa 3,5 cm e lungo 14 cm, con uno spessore
inferiore ai 3 cm. Le parti piu' importanti del Wiimote sono l'accelerometro e la telecamera
IR.
L'accelerometro ADXL330 è un accelerometro a tre assi
e permette di rilevare il
movimento del Wiimote (accelerazione, rotazione, inclinazione, ecc..).
Figura 3: Il controller WiiMote
La telecamera IR permette, interagendo con la Wii Sensor Bar, barra con dei led sensori
alle sue estremità da porre sopra o sotto il televisore, di utilizzare il Wiimote come
dispositivo di puntamento e di determinare la distanza tra il esso e la console.
Figura 4: Wii Sensor Bar
Nel Wiimote e' poi presente un “rumble pack” che consente al telecomando di vibrare
all'occorrenza.
11
Oltre al WiiMote sono stati progettati altri controller per permettere agli utenti di interagire
facilmente con i diversi giochi.
3.2 Specifiche Tecniche
Nintendo Wii [2]
della
console
Nintendo ha diffuso poche informazioni sulle specifiche tecniche della console, comunque
grazie a ricerche e analisi tecniche sono state dedotte le principali caratteristiche della
macchina sebbene non possano essere considerate ufficiali.
Processore:
CPU: IBM Broadway, basato su architettura PowerPC con processo a 90 nm SOI
con tecnologia CMOS, con frequenza di 729 MHz (frequenze clock non ufficiali)
GPU: ATI Hollywood con processo a 90 nm CMOS, con frequenza di 243 MHz
Performance complessiva della CPU 30 GFLOPS.
Memoria:
88 MB memoria principale (24 MB "interna" 1T-SRAM integrata nel chip grafico,
64 MB esterna GDDR3 SDRAM)
3 MB GPU per le texture.
Porte e periferiche:
Da uno a quattro Wii Remote Controller (collegati via Bluetooth)
Quattro porte Nintendo GameCube controller (di cui una usabile insieme a quattro
Wii Remote Controller per multiplayer in cinque persone nei titoli nativi per Wii)
Due porte Nintendo GameCube Memory Card
Uno slot per schede Secure Digital
2 Porte Universal Serial Bus 2.0
Porta per il sensor Bar
Porta accessoria posta sul fondo del WiiMote
Mitsumi DWM-W004 WiFi 802.11b/g wireless module[12]
12
Compatibile con l'adattatore USB2.0 to Ethernet per la connessione a una rete
locale
Porte multi uscita videocomposito, component e S-Video
Riconosce la gestione dei contenuti vietati dei seguenti enti:
BBFC, CERO, ESRB, OFLC, OFLC (NZ), PEGI, USK
Memoria non volatile:
512 MB built-in NAND memoria flash
Espandibili tramite lo slot SD per SD e SDHC card fino a 32 GB
Nintendo GameCube Memory Cards (per salvare solo i giochi GameCube)
Lettore ottico slot-loading compatibile con i dischi 8 cm Nintendo GameCube
Game Disc e 12 cm Wii Optical Disc
Mask ROM di Macronix
Video:
50/60Hz 480p (PAL/NTSC) o 576i (PAL/SECAM), standard 4:3 e 16:9
Uscita video componente RGB SCART (solo PAL), S-Video (solo NTSC), uscita
composita, o D-Terminal
Multimedia: formati video e foto supportati (per visualizzare i contenuti è necessario
inserire una SD con file nei seguenti formati):
AVI (MJPG)
MOV (MJPG).
JPEG
Audio:
Principale: Stereo - Dolby Pro Logic II
Controller: speaker integrato
13
3.3 Nintendo Wii Fit
Successivamente (in Europa il 24 aprile 2008) la Nintendo ha lanciato sul mercato un
prodotto chiamato Wii Fit, che trasforma la console Wii in una piattaforma che con i
videogiochi tradizionali ha poco a che fare: Wii Fit è un sistema di allenamento per restare
in forma ed eventualmente pianificare il proprio dimagrimento, migliorando la tonicità
muscolare, perfezionando la postura e bilanciando correttamente il baricentro, il tutto
semplicemente restando davanti alla tv e divertendosi.
Figura 5: Nintendo Wii Fit
L’idea iniziale di questo software fu di Miyamoto-san, Managing Director di Nintendo.
Nell’intervista “Iwate chiede: Wii Fit” [1], egli racconta la sua abitudine di tener
controllato il proprio peso regolarmente registrandolo su delle tabelle e creando dei grafici,
e spiega come proprio questa sua abitudine gli abbia dato l’idea per creare Wii Fit.
“Normalmente quando ci si pesa, ci si toglie i vestiti e lo si fa in privato in bagno, non
davanti agli altri, giusto?” Racconta. “Tuttavia, ci sembrava divertente creare un gioco
grazie al quale tutta la famiglia potesse riunirsi in salotto, pesarsi e guardare insieme i
risultati degli altri. E magari prendere in giro il papà, che è ingrassato un po', o fare i
complimenti alla mamma, che è riuscita a dimagrire.
14
Pensavo che sarebbe stato molto bello riuscire a creare questo tipo di comunicazione
all'interno della famiglia e comunque, anche se può sembrare un'affermazione esagerata,
pesarsi è una cosa divertente e può aiutare a mantenersi in forma. ”
Ma l’idea ci ha messo un po’ di tempo per prendere piede in quanto non si riusciva a
trovare un obiettivo chiaro.
“Ma un giorno un membro dello staff ha comprato due bilance e ci siamo resi conto che
era molto divertente salirci sopra e cercare di mantenere l'equilibrio su entrambe. Ho
chiesto al programmatore di collegare le bilance a un computer e abbiamo provato a
visualizzare dei dati sullo schermo della tv in modo da poter calcolare la distribuzione del
peso a colpo d'occhio. Il risultato ci ha impressionato positivamente e da quel momento la
misurazione dell'equilibrio è diventata il nostro nuovo tema. Abbiamo fatto delle ricerche
e, come pensavamo, esistono anche metodi per mantenersi in forma legati all'equilibrio.” E
così lo sviluppo di Wii Fit è iniziato.
Nel software Wii Fit disponibili oltre 40 esercizi diversi suddivisi in quattro discipline
d'allenamento. Si può bruciare calorie con gli esercizi aerobici, migliorare equilibrio e
postura con i giochi di equilibrio, potenziare la massa muscolare con gli esercizi muscolari
o imparare ad allungarsi e rilassarsi con le posizioni yoga.
Il programma permette inoltre di seguire costantemente i propri miglioramenti, pianificare
obiettivi e avere a disposizione un personal trainer pronto a
mostrare gli esercizi,
spiegandoli e segnalando immediatamente gli eventuali errori.
Tutto ciò è possibile grazie alla Wii Balance Board: una pedana sensibile al peso che
rileva gli spostamenti di equilibrio in qualsiasi direzione permettendo agli utenti di seguire
i movimenti assicurandosi il pieno controllo delle attività sullo schermo.
Figura 6: Wii Balance Board
15
La Balance Board è una particolare bilancia di forma rettangolare, larga 51 cm e lunga
31.6 cm con uno spessore di 5,32 cm, dotata di sensori di peso grazie ai quali valuta lo
spostamento del baricentro della persona situata sulla pedana. È collegata alla Wii tramite
un collegamento bluetooth, ed è alimentata con quattro batterie AA.
Figura 7: Retro della Wii Balance Board
La rilevazione dei pesi viene effettuata tramite dei dispositivi di misurazione detti
estensimetri, incorporati direttamente nei quattro piedini ai vertici della pedana.
Si tratta di sensori che misurano le sollecitazioni a cui è sottoposto un oggetto sfruttando il
principio fisico secondo il quale la resistenza elettrica in un sottile filo di metallo aumenta
man mano che il filo stesso viene allungato. Essi emettono 60 segnali al secondo e li
inviano alla console tramite tecnologia bluetooth.
Figura 8: Sensori situati nei piedini della Wii Balance Board
I quattro segnali indicano quindi il peso supportato dal relativo piedino, in questo modo se
il soggetto sulla pedana sposta ad esempio tutto il proprio peso verso destra i sensori dei
piedini di destra rileveranno un peso maggiore di quelli di sinistra.
16
Oltre ai giochi del software Wii Fit, numerosi sono i software in commercio o in fase di
sviluppo che supportano questa periferica, alcuni di questi sono: Skate It, Family Ski,
Rayman Raving Rabbids TV Party, Shaun White Snowboard, Kororimpa 2…
17
Capitolo 4. Determinazione
e
controllo della posizione del
centro di massa
Nel seguente capitolo viene spiegato cosa è il centro di massa e sono illustrati vari metodi
per determinarlo.
In particolare si descrive in modo più accurato il metodo da noi utilizzato, il “segmental
method”, spiegando come lo si è utilizzato per il calcolo del centro di massa di una persona
in posizione seduta.
4.1 Che cosa è il centro di massa
Il centro di massa di un corpo generico è il punto intorno al quale la massa del corpo è
equamente distribuita.
In un sistema discreto di N punti materiali, le coordinate del centro di massa sono date da:
(1)
dove M = m1 + m2 + ... + mN è la massa totale del sistema e le quantità ri sono i raggi
vettori dei punti materiali rispetto al sistema di riferimento usato.
Per quanto riguarda un corpo con densità uniforme, il suo centro di massa coincide con il
centro geometrico.
Ciò non vale per il corpo umano, dove la distribuzione di massa cambia continuamente con
la postura facendo così variare la posizione del centro di massa.
In un soggetto in posizione eretta il centro di massa è localizzato nella zona dell’osso
sacro, generalmente al 55% dell’altezza totale del corpo.
18
Il centro di massa è comunemente detto baricentro.
Questo nome (che etimologicamente significa centro del peso) deriva dal fatto che quando
un corpo è immerso in un campo di gravità uniforme (come avviene, con buona
approssimazione, sulla superficie terrestre, dove l'accelerazione di gravità si può ritenere
costante), allora il moto del baricentro è equivalente al moto di caduta, sotto l'azione della
forza peso, di un punto materiale in cui fosse concentrata la massa totale del corpo.
4.2 Cinematica e dinamica per il controllo
dei robot
Nel campo della robotica sono stati effettuati diversi studi per la determinazione di
algoritmi che gestiscono il movimento dei robot.
Un manipolatore, o robot, può essere visto come sistema di corpi rigidi (bracci) connessi
tramite dei giunti (joint) o articolazioni, a formare quella che è generalmente denominata
catena cinematica. Un estremo della catena è vincolato alla base, l’altro estremo, detto endeffector (organo terminale), è libero di muoversi.
I due metodi principali che sono stati utilizzati per il controllo dei bracci articolati sono la
cinematica e la dinamica.
La cinematica è lo studio del movimento senza però considerare l’effetto delle forze. Essa
si divide in diretta (Forwards Kinematics) e inversa (Inverse Kinematics).
La cinematica diretta, nota la posizione di una singola articolazione, cioè l’angolo formato
dai corpi che essa connette, determina la posizione dell’end-effector. Al contrario, la
cinematica inversa risolve la posizione e l’orientamento dell’articolazione nota la posizione
dell’end-effector.
Mentre la soluzione di un problema di cinematica diretta è univoca, il problema inverso è
più complesso e può portare a soluzioni multiple, a infinite soluzioni o a nessuna soluzione
ammissibile, data la struttura del manipolatore.
19
Figura 9: Robot costituito da due bracci
Tramite questo esempio possiamo vedere la differenza tra i due approcci.
La Figura 9 mostra una semplice struttura costituita da due bracci che si muovono entrambi
sul piano.
La posizione dell’estremo x, utilizzando la cinematica diretta, ci viene dalla trigonometria,
ed è
X
(l1 cos
l2 cos(
1
2
), l1 sin
1
l2 sin(
1
2
))
(2)
Applicando semplici regole trigonometriche, siamo in grado di calcolare la soluzione
inversa, e quindi di risolvere anche il problema cinematico inverso.
2
1
arccos
(x2
y 2 l12
2l1l2
l22 )
(l2 sin 2 ) x (l1 l2 cos 2 ) y
(l2 sin 2 ) y (l1 l2 cos 2 ) x
(3)
(4)
Entrambi i calcoli diventano più complessi con il crescere della complessità della struttura
robotica: ogni articolazione in più aggiunge almeno un grado di libertà e almeno una
dimensione del vettore di stato θ.
20
Con lo studio dinamico si è ottenuto un livello di realismo maggiore poiché la descrizione
degli oggetti include anche attributi fisici come la massa totale, il centro di massa, il
momento di inerzia, etc …
Anche la dinamica si suddivide in diretta ed inversa. Nella dinamica diretta, il movimento
è approssimato mediante una serie di passi discreti; ad ogni passo si risolve l’equazione del
moto per le accelerazioni che gli oggetti subiscono sottoposti a determinate forze. Data la
posizione e la velocità di un oggetto al passo precedente, l’accelerazione a può essere
integrata due volte per determinare la nuova velocità e posizione al passo attuale.
In generale c’è una equazione del moto per ogni grado di libertà. Questo ci conduce ad un
grosso sistema di equazioni che deve essere risolto con metodi numerici, i quali sono
computazionalmente molto costosi.
La dinamica inversa determina automaticamente le forze e i momenti di inerzia necessari
per spostare l’oggetto nel punto desiderato.
4.3 Cinetica inversa per il controllo della
posizione del centro di massa
Basandosi sui concetti di cinematica e dinamica dirette e inverse, che stanno alla base degli
algoritmi di controllo dei robot, sono stati sviluppati diversi studi per il controllo della
postura.
In [3] [4] [5] vi è uno studio di progettazione e di analisi della postura del corpo umano.
Questi studi identificano quattro categorie di controllo della figura umana.
I “behavioral parameters” (parametri comportamentali) consentono di impostare i limiti
sulla posizione di piedi, tronco, testa, mani e altezza del centro di massa.
I “passive behaviors” (comportamenti passivi) esprimono delle relazioni tra diverse parti
del corpo che devono essere contemporaneamente soddisfatte; solitamente sono parametri
connessi al controllo del bilanciamento.
Gli “active behaviors” (comportamenti attivi) hanno dimensione temporale, si presentano
cioè al verificarsi di determinati eventi e hanno durata limitata.
21
Per esempio, lo “stepping movement” si verifica per ripristinare l’equilibrio quando il
centro di massa lascia l’area di supporto.
Infine, le “manipulation primitives” (primitive di manipolazione) permettono l’interazione
con l’utente, che può ad esempio comandare in modo diretto lo spostamento del centro di
massa.
Tutti questi aspetti del controllo del centro di massa corrispondono ad un approccio
sviluppato in [2], in cui il centro di massa è considerato come un end-effector attaccato alla
regione inferiore del tronco.
Questo approccio si è dimostrato efficace nella gestione della posizione del centro di
massa, ma alcuni aspetti rendono il suo utilizzo piuttosto limitato.
In primo luogo, è molto specifico per la postura eretta, quindi non può essere generalizzato
per la figura umana con diversi sostegni (seduta, appesa per le mani, etc …). In secondo
luogo, l’influenza cinetica dei movimenti delle articolazioni che uniscono i segmenti non è
valutata rispetto alla distribuzione di massa di tutto il corpo.
Un controllo dinamico della figura articolata è stato invece proposto in [6] e [7].
Il recente approccio riportato in [6] fornisce ad esempio un algoritmo di controllo per
generare movimenti realistici di corsa e di salto.
Come emerge chiaramente, uno degli aspetti più difficoltosi che la dinamica inversa
incontra nel controllo di attività di strutture articolate come la figura umana è l’obbligo di
gestire la forza di reazione del suolo.
Tutti questi studi mostrano come sia un approccio dinamico, sia cinematico, non riescano
a rappresentare in modo corretto ed esaustivo il problema.
Gli approcci basati sul controllo dinamico, anche se risultano essere più realistici dal punto
di vista fisico, presentano come già detto dei problemi di gestione di alcuni fattori come
l’immagazzinamento di energia, le forze di reazione del suolo, etc …
Un’altra limitazione deriva dall’elevata dimensione della figura umana ( in [2] , ad
esempio, si afferma che abbia 88 gradi di libertà) che ostacola l’interazione in tempo reale
sulle attuali workstation per la simulazione del controllo ottimale. Viceversa, la cinematica
inversa manca di una garanzia fisica.
Per queste ragioni, uno studio del Dipartimento di Matematica e Computer Science del
Politecnico di Losanna [8], propone un’estensione della cinematica inversa, che tiene conto
22
della distribuzione di massa in tutto il corpo, sviluppando un nuovo controllo chiamato
“Inverse Kinetics” (cinetica inversa).
Tale studio si basa su modello di scheletro umano con otto gradi di libertà: il dito del piede,
la caviglia,il ginocchio, l’anca, la parte toracica e la parte lombare della colonna vertebrale,
l’articolazione della spalla e il gomito.
È utilizzato un modello 2D del corpo umano in quanto si è rivelato sufficiente per illustrare
l’interesse dell’approccio.
Il principio base è quello di valutare l’influenza cinematica della articolazioni basandosi
sulla frazione di massa corporea che supportano, detta “augmented body”.
Il metodo consiste inizialmente in una valutazione dell’influenza cinetica della variazione
istantanea delle articolazioni sulla traslazione del centro di massa ( Direct Kinetics). In una
seconda fase, la matrice della trasformazione lineare risultante
viene invertita in un
processo simile alla cinetica inversa, ma poiché integra i dati della distribuzione di massa,
si chiama Inverse Kinetics.
Consideriamo una catena di corpi elementari con massa complessiva m. Ogni corpo
elementare i ha massa mi, origine locale Oi e centro di massa Gi.
La posizione del centro di massa G della catena è così determinata
(5)
Introducendo dei link intermedi tra O1 e Gi si ottiene
(6)
Derivando rispetto al tempo, si ottiene il vettore di traslazione istantanea del centro di
massa VG sul sistema di riferimento S0
(7)
(8)
23
Ogni derivata prima rispetto al tempo del vettore può essere espresso in funzione del
vettore istantaneo di rotazione ωj dato dalla variazione del parametro θj, chiamato θ’j,
lungo/per il vettore normalizzato rj:
(9)
(10)
(11)
(12)
(13)
Possiamo ora introdurre la posizione del centro di gravità Gaj dell’augmented body ( di
massa maj) associato con il parametro θj. La formula del baricentro diventa quindi
(14)
Ora usando la (9) e la (14), la (13) diventa
(15)
E infine otteniamo
(16)
dove JG è la matrice jacobiana pesata rispetto alle masse degli augmented body sulla massa
totale del corpo e mette in relazione la traslazione istantanea del centro di massa con
l’istantanea variazione dei parametri.
Al contrario, la pseudo-inversa di questa matrice Jacobiana può essere valutata,
permettendo di fornire una variazione istantanea dei parametri relativi alla traslazione
istantanea del centro di massa desiderata.
24
È quindi corretto proporre i termini di diretta e inversa Kinetics, perché si estende in modo
significativo la gamma dalla Direct and Inverse Kinematics per il controllo delle strutture
articolate.
Possiamo anche applicare il principio di conservazione della quantità di moto del centro di
gravità
degli augmented body per dimostrare la relazione fondamentale della direct
kinetics.
Noi abbiamo, in questo caso, il vettore di traslazione istantanea VGaj di Gaj, dato
dall’istantanea variazione θ’j dell’articolazione j lungo l’asse normalizzato rj, data da
(17)
Così la (15) diventa
(18)
Se noi ora vediamo come la traslazione istantanea del centro di massa totale, causata dalla
variazione dell’articolazione j, otteniamo
(19)
(20)
La (20) calcola il principio di conservazione della quantità di moto applicato a tutto il
corpo e a tutti gli augmented body per il movimento dell’articolazione j.
Figura 10
25
4.4 “Segmental method”
Il “segmental method” è un metodo per il calcolo del centro di massa di un corpo in una
qualsiasi postura. [9]
Tale metodo si basa su una visione del corpo umano come un sistema di segmenti (link)
uniti tra loro tramite articolazioni (join) e determina la posizione del centro di massa
dell’intero sistema in funzione della posizione dei centri di massa dei vari segmenti.
Il primo step del “segmental method” consiste nel quantificare la postura del soggetto in
esame. Quantificare la postura significa determinare le coordinate delle articolazioni agli
estremi di ogni segmento, dette rispettivamente distal end e proximal end, rispetto a un
sistema di riferimento scelto.
Tale metodo usa un’approssimazione bidimensionale del corpo umano, considerandone
solo le dimensioni di altezza e larghezza. Tale approssimazione è corretta in quanto il
centro di massa di ogni segmento si trova al centro rispetto allo spessore del segmento
stesso, dato che la massa è distribuita generalmente in modo simmetrico rispetto a tale
dimensione.
Il corpo umano viene quindi considerato piatto, senza spessore.
Dato ogni segmento saranno note le coordinate x,y e z di ogni sua estremità, rispetto al
sistema cartesiano.
Il centro di massa di ogni singolo segmento è dato da:
XCM = (XD)(%cm) + (XP)(1 - %cm) oppure (XP) + (%cm)(XD - XP)
(21)
YCM = (YD)(%cm) + (YP)(1 - %cm) oppure (YP) + (%cm)(YD - YP)
(22)
ZCM = (ZD)(%cm) + (ZP)(1 - %cm) oppure (ZP) + (%cm)(ZD - ZP)
(23)
Dove %cm è la posizione del centro di massa del segmento in percentuale rispetto alla
lunghezza totale del segmento. Per esempio il CM dell’avambraccio di una donna è
localizzato al 45,59% della lunghezza totale del segmento considerando come origine il
gomito.
26
Figura 11: Segmento
Date le coordinate dei CM di tutti i segmenti costituenti il corpo, le coordinate del CM
complessivo sono date dalla somma dei prodotti della massa del segmento per le
coordinate del CM del segmento diviso la massa totale del corpo.
mi X CMi
X CM
i
mi
mi YCMi
YCM
i
i
mi
mi Z CMi
Z CM
i
i
mi
(24)
i
Dove (XCMi, YCMi, ZCMi ) sono le coordinate del CM del segmento i-esimo rispetto al
sistema di riferimento scelto e mi è la massa del segmento i-esimo.
La massa di un segmento e la collocazione del centro di massa al suo intermo sono misure
presenti nelle tabelle BSP (Body Segment Parameters) che riportano dati sui vari segmenti
del corpo umano. Tali parametri sono stati ottenuti inizialmente tramite studi su cadaveri
effettuati negli anni ’50-’60-’70 [10][11][13].
Successivamente negli anni ’80 nell’Unione Sovietica sono state effettuate nuove ricerche,
utilizzando però soggetti vivi, che hanno portato allo sviluppo di nuove tabelle:
Zatsiorsky’s BPS [14][15][16][17]. Aggiustamenti alle Zatsiorsky’s BPS sono stati
pubblicati nel 1996 da Paolo De Leva che ha effettuato delle ricerche sul corpo umano
tramite radioisotope scanning [12].
27
Figura 12: Descrizione grafica della tabella BSP (Body Segment Parameters) di Paolo De Leva in cui
sono riportate le posizioni del centro di massa di ogni segmento rispetto alla lunghezza del segmento.
28
Segmento
%
Endpoint
% Mass
Proximal Distal
Donna
Uomo
Donna
Uomo
Testa
VERT
CERV
6.68
6.94
58.94
59.76
Tronco
CERV
MIDH
42.57
43.46
41.51
44.86
Braccio
SJC
EJC
2.55
2.71
57.54
57.72
18.8
WJC
1.38
1.62
45.59
45.74
14.5
Avambraccio EJC
% CM
Lunghezza
18.2
Mano
WJC
MET3
0.56
0.61
74.74
79.00
Coscia
HJC
KJC
14.78
14.16
36.12
40.95
24.5
Gamba
KJC
LMAL
4.81
4.33
44.16
44.59
24.6
Piede
HEEL
TTIP
1.29
1.37
40.14
44.15
8.9
Tabella 1: Body segment parameter data” di Zatsiorsky (1990), modificati da De Leva(1996)
4.5 Determinazione del centro di massa di
una persona in posizione seduta
Nel nostro caso specifico è necessario calcolare il CM di una persona in posizione seduta.
Il calcolo è effettuato considerando il soggetto posizionato nel sistema di riferimento come
in Figura 13.
Figura 13: Sistema di riferimento utilizzato
29
L’origine del nostro sistema di riferimento si trova all’altezza della coscia, sotto
l’ombelico, il piano zy, detto piano frontale mediano, taglia quindi il corpo esattamente in
due parti uguali, ovvero con identica distribuzione di massa.
Si considera il corpo costituito dai 15 segmenti: testa e collo, tronco superiore e inferiore,
braccio, avambraccio, mano, coscia, stinco, piede.
Figura 14: Rappresentazione grafica del modello del corpo umano a 15 segmenti
Nota l’altezza della persona in posizione eretta e il suo peso complessivo, si sono calcolati
peso e lunghezza di ciascun segmento, usando i dati della tabella “Body segment parameter
data” aggiornati da De Leva (Tabella 1).
Considerando il sistema di riferimento citato sopra è evidente che il baricentro giace nel
piano zy e quindi la coordinata XCM è nulla, il problema si riduce così al calcolo delle sole
coordinate ZCM e YCM.
Per poter applicare il Segmental Method è inoltre necessario conoscere le coordinate
dell’estremità dei segmenti.
Nota la lunghezza di tutti i segmenti, si sono quindi determinate tali coordinate, riferendosi
al sistema di riferimento sopra descritto.
Ad esempio, la spalla ha coordinata z pari alla lunghezza del tronco e coordinata y nulla in
quanto la spalla è situata nel piano zx, stessa cosa per il collo.
30
Coordinata z
Coordinata y
Fine testa
Lunghezza tronco + lunghezza testa-collo
0
Collo
Lunghezza tronco
0
Spalla
Lunghezza tronco
0
Gomito
Lunghezza tronco - lunghezza braccio
0
Polso
Lunghezza tronco - lunghezza braccio – 0
lunghezza avambraccio
Fine mano
Lunghezza tronco - lunghezza braccio – 0
lunghezza avambraccio – lunghezza mano
Bacino
0
0
Ginocchio
0
Lunghezza coscia
Caviglia
- lunghezza stinco
Lunghezza coscia
Tabella 2: Coordinate delle "articolazioni" che connettono i segmenti
Dai diversi calcoli effettuati con il segmental method si è visto che il centro di massa in
una persona in posizione seduta si trova generalmente al di sotto dell’ombelico spostato in
avanti di circa 8-10 cm (vedi Figura 15).
Figura 15: Posizione del centro di massa di una persona seduta
31
Per effettuare una verifica dell’attendibilità dei risultati ottenuti con questo metodo, si è
effettuato un confronto con i dati presenti in uno studio della NASA [18] per lo sviluppo di
sistemi spaziali abitati.
Tabella 3: Tabella Nasa per il calcolo della posizione del baricentro
Postura
Dimensione
In piedi
In piedi
(con le mani alzate sopra la testa)
A
B
C
x
y
z
-0,035
0,000
0,486
0,024
0,021
-0,014
11,008
8,609
-4,775
x
y
z
-0,040
0,000
0,416
0,020
0,021
-0,007
12,632
8,609
0,305
x
y
z
0,080
0,000
0,344
0,010
0,021
-0,004
4,450
8,609
7,327
x
y
z
0,041
0,000
0,212
0,022
0,021
-0,002
7,405
8,610
21,582
x
y
z
0,075
0,000
0,355
0,010
0,021
-0,010
4,628
8,609
7,389
Seduta
Seduta
(con le gambe piegate)
Seduta
(con le braccia giu)
32
Utilizzando i dati presenti in Tabella 3, tale studio determina la posizione del centro di
massa utilizzando la seguente formula:
Posizione del centro di massa = [ A x (altezza, cm) ] + [ B x (peso, in libre) ] + [C]
I dati in Tabella 3 sono però specifici per un possibile membro maschile dell’equipaggio,
che si presume sia in buona salute, con completo sviluppo fisico e di età media 40 anni.
33
Capitolo 5. Ambiente di sviluppo
Per lo sviluppo dell’applicazione abbiamo utilizzato l’ambiente di sviluppo XNA Game
Studio 3.1 che estende Microsoft Visual Studio 2008.
È stato poi utilizzato il software Autodesk 3DS Max per realizzare e modificare i modelli
3D degli elementi del gioco.
In questo capitolo vengono descritti brevemente questi software.
5.1 Microsoft Visual Studio 2008
Visual Studio 2008 è un ambiente di sviluppo integrato (Integrated development
environment o IDE) sviluppato da Microsoft e lanciato sul mercato nel febbraio 2008, che
supporta diversi tipi di linguaggio, quali C++, C#, Visual Basic .Net e ASP .Net, e
permette la realizzazione di applicazioni, siti web, applicazioni web…
È multipiattaforma: con esso è possibile realizzare programmi per server, workstation,
smartphone, browser, etc…
Visual Studio 2008 integra un debugger che consente di correggere eventuali errori logici e
sintattici senza compilare tutta l'applicazione.
Il software è stato scaricato da http://msdn.microsoft.com/ con la licenza per gli studenti
del Politecnico di Milano.
34
5.2 Microsoft XNA Game Studio 3.1
XNA
Game
Studio
3.1
è
un
ambiente
di
sviluppo
integrato
che estende Microsoft Visual Studio, per lo sviluppo di giochi per Windows-based PC,
Xbox 360 e Zune digital media player.
Studio XNA Game 3.1 utilizza il XNA Framework 3.1, che fornisce agli sviluppatori con
uno scheletro XNA game per cominciare e la possibilità di personalizzare ed estendere tale
gioco.
Prima di istallare Studio XNA Game 3 è necessario installare Visual Studio 2008 Standard
Edition o superiore o Visual C # 2008 Express Edition.
XNA Game Studio 3.1 è scaricabile gratuitamente sul sito della Microsoft nella sezione
Download.
35
5.3 Autodesk 3DS Max
3DS Max (chiamato anche 3D Studio Max) è un software di modellazione, animazione e
rendering (processo di generazione di un'immagine a partire da una descrizione matematica
di una scena tridimensionale interpretata da algoritmi che definiscono il colore di ogni
punto dell'immagine) 3D, realizzato dalla divisione Media & Entertainement di Autodesk.
È un programma object-oriented, infatti, qualunque elemento creato con 3D Studio MAX è
un oggetto: geometria, cineprese e luci della scena sono oggetti, così come i modificatori, i
controller dell’animazione, i bitmap e le definizioni dei materiali.
Gli oggetti creati in 3D Studio MAX contengono informazioni sulle funzioni su di essi
eseguibili e sul comportamento che è considerato valido per ciascun oggetto.
3D Studio Max è stato utilizzato per creare o modificare i modelli 3D degli elementi del
gioco sviluppato (la canoa, le paperelle, gli alberi…) e per creare l’ambientazione del
gioco.
È possibile creare un oggetto utilizzando le funzioni del pannello CREATE, che
permettono di assegnare al modello tipo, dimensioni, posizione e orientamento.
Figura 16: Creazione di un oggetto in 3DS Max
36
Ad esso è poi possibile applicare un numero qualsiasi di modificatori dell’oggetto, per
esempio pieghe o estensioni. Tali modificatori sono applicabili all’intero oggetto o a una
sua componente (denominata sub-oggetto).
Tutti gli oggetti hanno proprietà uniche che non sono né i parametri degli oggetti di base né
il risultato di modificatori o di trasformazioni. Queste proprietà includono elementi come il
nome dell’oggetto, il colore wireframe, il materiale assegnato, la capacità di proiettare
ombre… Tali proprietà possono essere visualizzate o impostate utilizzando la finestra di
dialogo OBJECT PROPERTIES.
37
5.4
Libreria WiiMote
Tutti i controller Wii usano la tecnologia Bluetooth per comunicare, quindi possono essere
connessi facilmente anche a un PC.
Per usare i vari controller con .NET è disponibile in rete la libreria Wiimote.Lib che
fornisce tutte le classi e i metodi necessari per interagire con il dispositivo Wii utilizzato,
che esso sia il Wiimote, la Balance Board, il Nunchuk, o il controller di Guitar Hero.
Per prima cosa è necessario connettere il dispositivo, nel nostro caso la Balance Board, al
PC:
1. Avviare il software bluetooth e ricercare un dispositivo.
2. Aprire il coperchio delle batterie presente sul lato inferiore della Balance Board e
premere il pulsante di sincronizzazione, di colore rosso.
Il led sul retro della pedana inizierà a lampeggiare e deve continuare a farlo durante
tutta la fase di sincronizzazione affinché questa vada a buon fine.
Se si sta connettendo il Wiimote è necessario tenere premuti durante tutta la fase di
inizializzazione della connessione i pulsanti contrassegnati con 1 e 2).
3. Il controller deve comparire nella lista dei dispositivi trovati, la Balance Board
verrà visualizzata come Nintendo RVL-WBC-01 e il Wiimote come Nintendo
RVL-CNT-01 .
4. Se viene richiesto l’inserimento di un codice PIN di sicurezza, non immettere alcun
numero e passare al passo successivo.
5. Terminare la procedura.
Se l’operazione è andata a buon fine, il led sul retro della Balance Board devo continuare a
lampeggiare e il dispositivo deve essere presente nella lista dei dispositivi Bluetooth
connessi, in caso contrario è necessario eseguire di nuovo tutte le istruzioni riportate.
A questo punto per usare il controller connesso è sufficiente creare un’istanza Wiimote,
indipendentemente da quale sia il particolare controller in uso, settare i parametri necessari,
scegliere il tipo dei dati di ritorno desiderato e quindi chiamare il metodo Connect.
La libreria corrente supporta solo alcuni dei tipi di dato, riportati in Tabella 4, che i
controller Wii sono in grado di produrre, ma questi sono comunque sufficienti per ottenere
ciò che necessario per la Balance Board.
38
Tipo
Descrizione
Status
Status report
ReadData
Legge i dati dalla memoria locale
OutputReportAck
Register write complete
Buttons
Solo dati dai pulsanti
ButtonsAccel
Dati dai pulsanti and accelerometer dati
IRAccel
IR sensor e accelerometer data
ButtonsExtension
Dati dai pulsanti e extension controller data
ExtensionAccel
IRExtensionAccel
Extension controller data and accelerometer
data
IR
sensor,
extension
controller
and
accelerometer data
Tabella 4: Tipi di dati generati dai controller Wii supportati dalla libreria Wiimote
Il tipo di ritorno può essere impostato chiamando il metodo Set ReportType e passandogli
come primo parametro uno dei tipi di dato appena elencati e impostando il secondo
parametro true, se si desidera che i dati siano inviati continuamente, false, se devono essere
mandati solo quando lo stato del controller cambia.
La Wii Fit Balance Board verrà visualizzato come un controller Wiimote con un'estensione
allegata. Il tipo di dato di ritorno è impostato internamente quindi in realtà qualsiasi
tentativo di impostare un nuovo tipo su questo dispositivo verrà ignorato.
Esempio C#:
Wiimote wm;
wm = new Wiimote();
crea un’istanza della classe Wiimote
wm.Connect();
si connette al primo Wiimote che trova
wm.SetReportType(InputReport.IRExtensionAccel, true); setta il
ritorno
tipo
di
Se si desidera connettero più dispositivi Wii è necessario istanziare un oggetto
WiimoteCollection, chiamare il metodo FindAllWiimotes per inizializzare, e quindi
utilizzare ogni oggetto della collezione individualmente.
39
I dati elaborati dal controller possono essere recuperati dall’applicazione sul PC in due
modi: con la modalità ad eventi o con il polling.
Nella modalità ad eventi si deve sovrascrivere l’evento WiimoteChange della classe
Wiimote, che è l’evento che generato quando lo stato del Wiimote cambia.
Se non si sceglie di utilizzare il modello ad eventi, si può semplicemente recuperare in
qualsiasi momento le informazioni sullo stato del controller dalla proprietà WiimoteState
della classe Wiimote.
Esempio C#:
Wiimote wm;
WiimoteState ws;
ws = wm. WiimoteState;
pesotot = ws.BalanceBoardState.WeightKg;
40
Capitolo 6. Implementazione
e
realizzazione
Nel quarto capitolo viene inizialmente descritta l’applicazione realizzata e, in una seconda
parte, vengono illustrati al lettore i passi fondamentali svolti per la sua realizzazione.
6.1 Specifiche del gioco
Il gioco che si é sviluppato consiste in un percorso a tempo con una canoa.
L'utente, che é seduto sulla Balance Board, deve piegarsi a destra e a sinistra per evitare o
colpire gli oggetti, a seconda del caso.
E' infatti possibile incontrare delle tartarughe verdi e degli squali, lo scontro con i primi fa
perdere 25 punti, lo scontro con i secondi fa invece perdere una vita.
Vi sono poi le paperelle che invece devono essere presi in quanto aumentano il punteggio
di 50 punti, e i diamanti che permettono di guadagnare una vita.
Il gioco é suddiviso in 3 livelli.
In ogni livello il giocatore ha a disposizione 120 secondi per effettuare un certo numero di
punti necessari per passare al livello successivo.
Nel primo livello é necessario raggiungere un punteggio di almeno 1000 punti, nel secondo
livello 1500 punti, nel terzo livello 2500 punti.
Velocità e numero di elementi più “pericolosi” (che fanno perdere punti o vite) aumentano
gradualmente nei tre livelli.
All' inizio del gioco, l'utente ha a disposizione tre vite terminate le quali “muore” e,
indipendentemente dal livello che ha raggiunto, il gioco ricomincia dal primo livello. Se
invece, al termine di un livello, il giocatore non ha raggiunto il punteggio necessario per
proseguire al livello successivo, può riprovare senza dover necessariamente ripartire dal
livello iniziale.
41
All'avvio del gioco vi é una fase di settaggio in cui l'utente o il fisioterapista, oltre
ovviamente a inserire nome, sesso, peso e altezza, deve impostare l'angolo massimo che il
giocatore può compiere piegandosi lateralmente, seduto sulla Balance Boad.
Sesso, peso e altezza sono necessari per il calcolo della posizione del centro di massa
tramite il “Segmental Method”.
L'angolo massimo raggiungibile è necessario per impostare il giocatore in modo che si
trovi nella posizione limite nel campo di gioco quando compie un piegamento pari a tale
angolo.
Questo semplice gioco ha diversi benefici per pazienti con traumi midollari nella fase di
riabilitazione; permette infatti di effettuare semplici esercizi sullo spostamento del peso e
sul controllo del busto in modo divertente.
42
6.2
Implementazione del gioco
Il gioco è stato scritto in C#.
Sono state definite le seguenti classi
Classe
Descrizione
Game1
Gestisce la grafica e la logica del gioco
GameObject
Descrive un oggetto 3D dell’applicazione
CentroDiMassa
In questa classe viene implementato il
“segmental method” per determinare il
centro di massa di un soggetto, in
posizione seduta, noti altezza, peso e sesso
Classe che contiene i dati del giocatore
Giocatore
seduto sulla Balance Board
Fisioterapista
Serve per permettere al fisioterapista, o
direttamente
all’utente,
di
impostare
l’angolo massimo di piegamento
Tabella 5: Classi del gioco
6.2.1
La classe Game1
Game1 è la classe fondamentale dell’applicazione, nella quale si gestisce tutta la logica del
gioco. In ogni progetto XNA Game Studio è presente tale classe e la sua struttura di base è
la seguente:
using
using
using
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
Microsoft.Xna.Framework;
Microsoft.Xna.Framework.Audio;
Microsoft.Xna.Framework.Content;
Microsoft.Xna.Framework.GamerServices;
Microsoft.Xna.Framework.Graphics;
Microsoft.Xna.Framework.Input;
Microsoft.Xna.Framework.Media;
Microsoft.Xna.Framework.Net;
Microsoft.Xna.Framework.Storage;
43
namespace WindowsGame1
{
public class Game1 : Microsoft.Xna.Framework.Game
E’ la classe principale del gioco.
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected override void Initialize()
Questo metodo viene eseguito solo all'avvio del
programma
{
base.Initialize();
}
protected override void LoadContent()
All’interno di questo metodo vengono caricati i
contenuti del gioco.
Viene eseguito solo all'avvio del programma.
{
spriteBatch = new SpriteBatch(GraphicsDevice);
}
protected override void UnloadContent()
{ }
protected override void Update(GameTime gameTime)
Questo metodo viene eseguito 60 volte al secondo .
Al suo interno viene scritto il codice che gestisce la
logica del gioco.
{
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
Questo metodo viene eseguito 60 volte al secondo .
Al suo interno viene scritto il codice per disegnare i
vari elementi del gioco.
{
GraphicsDevice.Clear(Color.CornflowerBlue);
base.Draw(gameTime);
}
}
}
44
6.2.2
La classe GameObject
Identifica tutti gli elementi 3D dell’applicazione (kayak,paperelle, diamanti, alberi,
terreno…).
Tabella 6: Attributi della classe GameObject
Attributo
Tipo
Descrizione
model
Model
Modello 3D
scale
float
Dimensione
rotation
Vector3
Rotazione del modello
position
Vector3
velocity
Vector3
alive
boolean
6.2.3
Coordinate della posizione
del modello
Velocità di movimento del
modello
Indica se l’elemento è vivo
La classe Giocatore
Tabella 7: Attributi della classe Giocatore
Attributo
Tipo
Descrizione
Nome
String
Nome del giocatore
Peso
float
Peso del giocatore
Altezza
float
Altezza del giocatore
6.2.4
La classe Fisioterapista
Tabella 8: Attributi della classe Fisioterapista
Attributo
Tipo
Descrizione
Parametro
AngoloMax
Float
che
l’utente
riesce a raggiungere nel
piegamento laterale
45
6.2.5
La classe CentroDiMassa
Tabella 9: Attributi della classe CentroDiMassa
Attributo
Tipo
Descrizione
massaTot
double
Peso del giocatore
altezza
double
Altezza del giocatore
sesso
boolean
Sesso del giocatore
zCMtot
double
Altezza del centro di massa del giocatore
seduto sulla Balance Board.
Array delle altezze dei centri di massa di
zCM
double[]
ogni segmento del corpo dell’utente
seduto sulla Balance Board.
spessoreSegmentoCoscia
double
Spessore approssimativo della coscia
dell’utente.
Array delle lunghezze dei segmenti del
lunghezzaSegmenti
double[]
corpo dell’utente seduto sulla Balance
Board.
massaSegmenti
double[]
Array delle masse dei segmenti del corpo
dell’utente seduto sulla Balance Board.
Array contenete la percentuale di massa
percMassU
double[]
di ogni segmento del corpo di un uomo
rispetto alla sua massa totale.
Array contenete la percentuale di massa
percMassD
double[]
di ogni segmento del corpo di una donna
rispetto alla sua massa totale.
Array
percLung
double[]
contenete
la
percentuale
di
lunghezza di ogni segmento del corpo di
un individuo rispetto alla sua altezza
totale.
46
Array contenete posizione in percentuale
percPosCMU
del centro di massa di ogni segmento
double[]
rispetto
alla
lunghezza
totale
del
segmento stesso, per gli uomini.*
Array contenete posizione in percentuale
percPosCMD
del centro di massa di ogni segmento
double[]
rispetto
alla
lunghezza
totale
del
segmento stesso, per le donne. *
* I dati dei vari segmenti sono memorizzati negli array nel seguente ordine: testa-troncobracci-avambraccio-mano-coscia-gamba-piede.
Tabella 10: Metodi della classe CentroDiMassa
Metodo
Descrizione
Riceve come input altezza, peso e sesso del
GetCentroDiMassa
giocatore e torna l’altezza del centro di massa
dell’utente seduto sulla sulla Balance Board.
47
6.2.6
Angolo di piegamento
Come già detto la Wii Balance Board è dotata di quattro bilance posizionate ai suoi vertici.
Per determinare la posizione del centro di massa della persona seduta sulla pedana, si
considerano i quattro sensori come dei corpi puntiformi con massa pari al peso che
rilevano, e si determina il centro di massa del sistema costituito da questi quattro corpi
applicando la formula (1).
Considerando come origine del nostro sistema di riferimento il centro della Balance Board,
le quattro bilance hanno quindi le seguenti coordinate:
TopLeft
TopRight
BSL BSW
,
2
2
BottomLeft
BSL BSW
,
2
2
BSL BSW
,
2
2
BottomRight
BSL BSW
,
2
2
dove
BLS è pari alla lunghezza della Balance Board, 43 cm
BSW è pari alla larghezza della Balance Board, 24 cm.
Figura 17: Modello Balance Board
Quindi
X CM
YCM
massaTopLeft * X TopLeft
massaTopRight * X TopRight
massaBottomLeft * X BottomLeft
massaTopLeft massaTopRight massaBottomLeft
massaTopLeft * YTopLeft
massaTopRight * YTopRight
massaBottomRight
massaBottomLeft * YBottomLeft
massaTopLeft massaTopRight massaBottomLeft
massaBottomRight * X BottomRight
massaBottomRight * YBottomRight
massaBottomRight
48
La libreria WiimoteLib utilizzata fornisce la proprietà CenterOfGravity dell’attributo
BalanceBoardState della classe WiimoteState che effettua il calcolo sopra citato e ci
fornisce le coordinate del centro di massa.
Vediamo come è possibile mettere in relazione il centro di massa appena determinato con
l’altezza del centro di massa determinata con il “Segmental Method”.
Si considerino due soggetti A e B, tali che l’altezza del centro di massa in A è maggiore di
quella in B.
Se A e B effettuano un piegamento è evidente che B dovrà fare un angolo maggiore per
spostare la proiezione sul piano x del proprio centro di massa di una lunghezza pari allo
spostamento compiuto dalla proiezione del centro di massa di A.
Figura 18
Si è quindi deciso di calibrare il controllo nel gioco sull’angolo di piegamento fatto dal
giocatore seduto sulla pedana.
49
Vediamo come si determina tale angolo.
Figura 19
Supponiamo che, quando la persona è seduta in posizione esattamente verticale sulla
pedana, il suo baricentro sia in A e A’ sia la proiezione di tale punto sulla pedana.
Se il soggetto si piega di un angolo α il suo baricentro si sposta in B e B’ è la sua posizione
sulla Balance Board.
Le distanze AA’ e BA’ sono pari all’altezza del baricentro, determinata con il “Segmental
Method”.
A’B’ è invece pari allo spostamento rilevato sulla Balance Board.
Si determina così α:
90
BB’A’ è un triangolo rettangolo, quindi si ha
cos
quindi
A' B'
A' B
da cui
90
arccos
arccos
A' B'
A' B
A' B'
A' B
50
Si determina quindi lo spostamento nel gioco applicando la proporzione secondo cui
l’angolo realmente fatto sta alla posizione raggiunta come l’angolo massimo, che si
impone che il giocatore possa fare, sta alla massima posizione raggiungibile nel gioco.
6.2.7
La telecamera
Uno degli aspetti più importanti di un gioco 3D è la telecamera che rappresenta il punto di
vista dell’utente e si deve spostare rispetto ai movimenti effettuati all’interno del gioco.
Scegliere il tipo migliore di telecamera e implementarla correttamente è fondamentale
affinché il gioco possa funzionare.
E' necessario definire dove si trova la camera, a cosa punta, e altre proprietà.
In XNA la camera è implementata tramite 2 matrici (oggetti della classe Matrix)
cameraViewMatrix e cameraProjectionMatrix.
cameraViewMatrix contiene le informazioni che determinano dove la camera è situata
nello spazio, in quale direzione punta e quale è il suo orientamento.
Per creare la “Viewmatrix” si utilizza il metodo statico CreateLookat della classe Matrix,
che accetta i parametri riportati in tabella 8.
Tabella 11: Parametri del metodo Matrix.CreateLookAt
Parametro
Tipo
cameraPosition
Vector3
cameraTarget
Vector3
Descrizione
punto nello spazio in cui si
trova la telecamera
punto nello spazio a cui
punta la camera
orientamento della camera,
cameraUpVector
Vector3
che per noi sarà sempre Up,
cioè, sarà allineata con
l'orizzonte
cameraProjectionMatrix contiene informazioni come l'angolo di vista, quanto distante può
vedere la camera etc ... In sostanza definisce il campo 3D visibile dalla telecamera.
51
Ogni oggetto all'interno di tale zona è visualizzato sulle schermo, a meno che non sia
oscurato da un altro elemento che si trova tra esso e la camera.
Per creare tale matrice si utilizza il metodo statico CreateProspectiveFieldOfView della
classe Matrix.
Tabella 12: Parametri del metodo Matrix. CreateProspectiveFieldOfView
Parametro
Tipo
fieldOfView
float
Descrizione
Angolo
di
vista
della
camera, in radianti
Tipicamente è dato dal
float
aspectRatio
rapporto tra la larghezza e
l’altezza dello schermo
nearPlaneDistance
float
Da dove a dove la camera
farPlaneDistance
float
vede
6.2.8
I modelli 3D
XNA permette di creare modelli 3D, ma in genere quando questi sono particolarmente
complessi è consigliabile realizzarli tramite un software di modellazione 3D, come ad
esempio 3D StudioMax, Maya, Blender e poi importarli.
Per l’applicazione creata si sono utilizzati modelli già pronti, tranne che per
l’ambientazione di gioco il cui modello è stato creato da noi, che sono stati modificati con
3D Studio MAX.
È stato necessario istallare un plug in per esportare i modelli nel formato .FBX, in quanto
XNA supporta solo i formati .FBX e .X.
Il modello 3D creato e le eventuali texture associate devono essere salvate nella cartella
Game/Content /Model del progetto.
È stata definita la classe GameObject (paragrafo 6.2.2) per identificare tutti gli elementi
3D dell’applicazione (kayak,paperelle, diamanti, alberi, terreno…).
I vari modelli vengono caricati nel metodo loadContent().
Nel metodo draw(), che viene eseguito ad ogni fotogramma, viene invece chiamato per
ogni elemento da disegnare il metodo drawGameObject().
52
void DrawGameObject(GameObject gameobject)
{
foreach (ModelMesh mesh in gameobject.model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting();
effect.PreferPerPixelLighting = true;
effect.World =
Matrix.CreateFromYawPitchRoll(
gameobject.rotation.Y,
gameobject.rotation.X,
gameobject.rotation.Z) *
Matrix.CreateScale(gameobject.scale) *
Matrix.CreateTranslation(gameobject.position);
effect.Projection = cameraProjectionMatrix;
effect.View = cameraViewMatrix;
}
mesh.Draw();
}
}
ModelMesh è una classe XNA che identifica le mesh ( i “pezzi”) che compongono un
modello 3D: per modificare il modello è necessario impostare le proprietà delle sue mesh.
La proprietà PreferPerPixelLighting e la funzione EnableDefaultLighting() servono per
settare l’illuminazione dell’oggetto.
World è una matrice che imposta posizione, rotazione e dimensione del modello. View e
Projection sono invece le due matrici che gestiscono la visualizzazione tramite la
telecamera ( vedi paragrafo 6.2.7).
53
6.2.9
Detection Collision
E' stato necessario realizzare un rilevamento delle collisioni per determinare quando il
giocatore sulla canoa si scontra con i vari oggetti.
Uno dei metodi più semplice e veloce per implementare il rilevamento delle collisioni è
l'algoritmo “Bounding-box” che consiste nel “disegnare” una scatola invisibile intorno ad
ogni elemento e quindi controllare se le scatole si intersecano.
Anziché delle scatole è anche possibile utilizzare delle sfere, in base alla forma
dell'oggetto.
Nel nostro caso si è scelto di utilizzare il “Bounding-box” per la canoa e il “BoundigSphere” per le paperelle e i diamanti.
Come è intuibile, questo metodo di rilevamento delle collisioni non è preciso al 100% in
quanto gli oggetti non hanno esattamente forma sferica o di parallelepipedo .
Per ovviare a questo problema è possibile usare più BoundingBox e BoundingSphere di
dimensione diversa per ogni modello, oppure usare un metodo molto accurato che verifica
la presenza di collisioni triangolo per triangolo.
Nel nostro caso abbiamo deciso di implementare il metodo più semplice, usando una sola
box o sfera per ogni modello, in quanto tale metodo si è rivelato sufficientemente accurato.
XNA fornisce le classi BoundingBox e BoundingSphere che implementano i relativi
metodi di collision detection.
BoundingSphere sfera= new BoundingSphere (posizioneSfera, raggio)
(il primo parametro, posizioneSfera, è di tipo Vector3).
BoundingBox box= new BoundingBox (min, max)
(min e max sono di tipo Vector3 e rappresentano le coordinate dei vertici
minimo e massimo del parallelepipedo).
Tali classi possiedono il metodo Intersect:
BoundingSphere.Intersect (BoundingBox)
che restituisce true se l'oggetto corrente di tipo BoundingSphere si interseca con l'oggetto
BoundingBox passato come parametro.
54
Capitolo 7.
Sviluppi futuri
La libreria Wiimote fornisce i metodi per poter utilizzare i dati del controller Wiimote: si
potrebbe simulare il movimento di una vogata per far avanzare la canoa, questo
estenderebbe il numero di muscoli coinvolti nella riabilitazione, sia della parte superiore
del tronco sia delle braccia e, incrementerebbe lo sforzo fisico del paziente.
Per rendere più accattivante il gioco si potrebbe lavorare su alcuni aspetti della grafica che
non sono stati ritenuti essenziali.
In particolare, i modelli 3d potrebbero essere resi più realistici e, aggiungendo alcuni effetti
all'acqua ed al terreno, si accentuerebbe l'idea del movimento.
Si potrebbe indurre il paziente ad effettuare piegamenti non solo laterali, ma anche avanti e
indietro grazie all'aggiunta di alcuni livelli bonus,nei quali la tipologia di gioco è
leggermente diversa. Ad esempio, introducendo un percorso cronometrato, a slalom tra
coppie di boe, si potrebbe sfruttare lo spostamento anteriore o posteriore del baricentro per
aumentare o ridurre la velocità della canoa.
55
Elenco figure
Figura 1: Wii Sport Tennis .................................................................................................... 8
Figura 2: Console Nintendo Wii ............................................................................................ 9
Figura 3: Il controller WiiMote ........................................................................................... 11
Figura 4: Wii Sensor Bar ..................................................................................................... 11
Figura 5: Nintendo Wii Fit .................................................................................................. 14
Figura 6: Wii Balance Board ............................................................................................... 15
Figura 7: Retro della Wii Balance Board ........................................................................... 16
Figura 8: Sensori situati nei piedini della Wii Balance Board ............................................ 16
Figura 9: Robot costituito da due bracci .............................................................................. 20
Figura 10 .............................................................................................................................. 25
Figura 11: Segmento ............................................................................................................ 27
Figura 12: Descrizione grafica della tabella BSP (Body Segment Parameters) di Paolo De
Leva in cui sono riportate le posizioni del centro di massa di ogni segmento rispetto alla
lunghezza del segmento. ...................................................................................................... 28
Figura 13: Sistema di riferimento utilizzato ........................................................................ 29
Figura 14: Rappresentazione grafica del modello del corpo umano a 15 segmenti ............ 30
Figura 15: Posizione del centro di massa di una persona seduta ......................................... 31
Figura 16: Creazione di un oggetto in 3DS Max ................................................................. 36
Figura 17: Modello Balance Board ..................................................................................... 48
Figura 18 .............................................................................................................................. 49
Figura 19 .............................................................................................................................. 50
56
Elenco Tabelle
Tabella 1: Body segment parameter data” di Zatsiorsky (1990), modificati da De
Leva(1996)........................................................................................................................... 29
Tabella 2: Coordinate delle "articolazioni" che connettono i segmenti .............................. 31
Tabella 3: Tabella Nasa per il calcolo della posizione del baricentro ................................. 32
Tabella 4: Tipi di dati generati dai controller Wii supportati dalla libreria Wiimote .......... 39
Tabella 5: Classi del gioco................................................................................................... 43
Tabella 6: Attributi della classe GameObject ...................................................................... 45
Tabella 7: Attributi della classe Giocatore .......................................................................... 45
Tabella 8: Attributi della classe Fisioterapista .................................................................... 45
Tabella 9: Attributi della classe CentroDiMassa ................................................................. 46
Tabella 10: Metodi della classe CentroDiMassa ................................................................. 47
Tabella 11: Parametri del metodo Matrix.CreateLookAt .................................................... 51
Tabella 12: Parametri del metodo Matrix. CreateProspectiveFieldOfView ........................ 52
57
Bibliografia
[1]
Iwata chiede: Wii
http://wiiportal.nintendo-europe.com/654.html
[2]
http://it.wikipedia.org/wiki/Wii#cite_note-IGN_Wii_FAQ-11
[3]
Philips C.B., Zhao J., Badler N.I. "Interactive Real -Time Articulated Figure
Manipulation Using Multiple Kinematic Constraints", Computer Graphics 24
(2),pp 245-250, 1990
[4]
Phillips C.B., Badler N. " Interactive Behaviors for Bipedal Articulated Figures"
Computer Graphics 25 (4), pp 359-362, July 1991
[5]
Badler N.I., Phillips C.B., Webber B.L., "Simulating Human, Computer Graphics
Animation and Control", Chapter 4 "Beh avioral Control", Oxford University Press
1993.
[6]
Raibert M.H., Hodgins J.K., "Animation of Dynamic Legged Locomotion",
Computer Graphics 25 (4), pp 349-358, 1992
[7]
McKenna M., Zeltzer D., "Dynamic Simulation of Autonomous Legged
Locomotion", Computer Graphics 24 (4), pp 29-38, 1990
[8]
Ronan Boulic, Ramon Mas, “Inverse Kinetics for Center of Mass Position Control
and Posture Optimization”, Politecnico Federale di Losanna, Settembre 1994
[9]
Young-Hoo Kwon of Texas Woman’s University, EXSS 323 CENTER OF MASS
LAB, http://oregonstate.edu/instruct/CM_Lab/Center_Of_Mass.htm
58
[10]
Chandler RF, Clauser CE, McConville JT, Reynolds HM, & Young JW
(1975). Investigation of inertial properties of the human body (AMRL Technical
Report 74-137). Wright-Patterson Air Force Base, OH: Aerospace Medical
Research Laboratories.
[11]
Clauser CE, McConville JT, & Young JW (1969). Weight, volume, and
center of mass of segments of the human body (AMRL Technical Report 69-70).
Wright-Patterson Air Force Base, OH: Aerospace Medical Research Laboratories.
[12]
de Leva, P (1996). Adjustments to Zatsiorsky-Seluyanov's segment inertia
parameters. Journal of Biomechanics, 29(9), 1223-1230.
[13]
Dempster, WT (1955). Space requirements for the seated operator (WADC
Technical Report 55-159). Wright-Patterson Air Force Base, OH: Wright Air Development
Center.
[14]
Zatsiorsky V & Seluyanov V (1983). The mass and inertia characteristics of the
main segments of the human body. In H. Matsui & K. Kobayashi (Eds.), Biomechanics
VIII-B (pp. 1152-1159). Champaign, IL: Human Kinetics.
[15]
Zatsiorsky V & Seluyanov V (1985). Estimation of the mass and inertia
characteristics of the human body by means of the best predictive regression equations. In
DA Winter, RW Norman, RP Wells, KC Hayes & AE Patlaa (Eds.), Biomechanics IX-B
(pp. 233-239). Champaign, IL: Human Kinetics.
[16]
Zatsiorsky V, Seluyanov V, Chugunova L (1990). In vivo body segment inertial
parameters determination using a gamma-scanner method. In N. Berme & A. Cappozzo
(Eds.), Biomechanics of Human Movement: Applications in Rehabilitation, Sports and
Ergonomics (pp. 186-202). Worthington, OH: Bertec Corp.
[17]
Zatsiorsky VM, Seluyanov VN, & Chugunova LG (1991). Methods of determining
mass-inertial characteristics of human body segments. In GG Chernyi & SA Regirer
(Eds.), Contemporary Problems of Biomechanics (pp. 272-291). Moscow: Mir.
59
[18]
Man-Systems
Integration
Standards
Revision
B,
“Anthropometry
and
Biomechanics”, Volume 1 Section 3, July 1995
60
Ringraziamenti
Giunti al termine di questo lavoro desideriamo ringraziare ed esprimere la nostra
riconoscenza nei confronti di tutte le persone che, in modi diversi, ci sono state vicine e
hanno permesso e incoraggiato sia i nostri studi che la realizzazione di questa tesi.
I nostri più sentiti ringraziamenti vanno al nostro relatore Ing. Paola Spoletini per la sua
disponibilità nei chiarimenti e suggerimenti che ci hanno permesso di intraprendere ogni
volta le scelte più appropriate e per la revisione dei vari capitoli di questa tesi.
Vorremo inoltre ringraziare la dottoressa Tiziana Redaelli, il fisioterapista Dario Pometto
e Flavia dell’Ospedale Niguarda per la loro disponibilità.
Ringraziamo anche le nostre famiglie e gli amici che ci sono stati molto vicini in tutti
questi anni, che oltre ad averci sempre “supportato” ci hanno più di tutto “sopportato”.
61