Home
Sviluppo di un gioco tramite l`interazione di un robot ed il controller
Contents
1. Di seguito riportiamo i dettagli tecnici delle caratteristiche da noi utilizzate 2 1 1 Bluetooth Il Wiimote comunica attraverso un collegamento wireless Bluetooth tramite il chip Broadcom 2042 Le Sviluppo di un gioco tramite l interazione 2 1 Nintendo Wii Remote di un robot ed il controller Wii Remote comunicazioni seguono lo standard Bluetooth HID Human Interface Device Il Wiimote non richiede nessun tipo di autentificazione per potersi connettere con esso necessario solamente che sia in discoverable mode questo avviene quando si premono contemporaneamente i tasti 1 e 2 o il pulsante sync Una volta connesso il Wiimote invia le seguenti informazioni caratteristiche Name Nintendo RVL CNT 01 Vendor ID 0x057e Product ID 0x0306 Il Wiimote invia report sul suo stato tasti premuti valori dell accelerazione con una frequenza massima di 100 Hz Di default viene inviato un report solo se viene inviata una richiesta al Wiimote viene premuto un pulsante l accelerometro o il sensore ad infrarossi rilevano una qualche variazione si connette ad esso un qualunque dispositivo esterno E comunque possibile impostare il Wiimote in modo da inviare in ogni caso un report ogni 1 100 di secondo Una singola interfaccia Bluetooth pu gestire pi Wiimote contemporaneamente 2 1 2 Accelerometro Nel Wiimote presente un accelerometro a 3
2. Rettangolo Triangolo diviso Trapezio Impulso a Figura 2 11 Tipi di insieme fuzzy utilizzabili in Brian 23 Sviluppo di un gioco tramite l interazione 2 4 Logica fuzzy e Mr Brian di un robot ed il controller Wii Remote 2 4 2 Definizione dei predicati Una volta definite le variabili fuzzy e la loro tipologia necessario dichiarare i predicati ad esse associati In logica fuzzy un predicato un letterale a cui si associa un valore di verit da 0 a 1 Ad esempio DistanzaCentroFar D DistanzaDalCentro FAR definisce il predicato DistanzaCentroClose che avr un valore di verit uguale al grado di appartenenza del dato DistanzaDalCentro all interno dell insieme CLOSE definito precedentemente Ad esempio se Distanza dal centro vale 120 il suo valore di appartenenza all insieme CLOSE 0 all insieme NEAR 1 all insieme FAR 0 4 e quindi il predicato DistanzaDalCentro vale 0 4 vedi figura 2 10 E possibile poi definire predicati composti a partire da altri tramite le operazioni booleane canoniche che in logica fuzzy sono cos definite NOT P 1 lt P gt Q AND P min lt 0 gt lt P gt Q OR P max lt 0 gt lt P gt dove P e Q sono generici predicati lt P gt e lt O gt sono i loro valori 2 4 2 Scelta dei comportamenti da attivare CANDO In Brian tramite regole fuzzy possibile stabilire quali comportamenti possono essere attivati condizioni CANDO Ad ogni comport
3. TOR STRONG 20 25 TOR EXIST 13 13 RAN SNG PLUS 1 SNG MINUS 1 TAN2SPEED TOR FAST_FORWARD 5 10 TRA FORWARD 0 0 10 15 TRA BACKWARD 15 10 0 0 TOL FAST BACKWARD 10 5 68 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote Predicati Predicati distanza modulo angolo dal Goal GoalDClose D DtoGoal CLOSE GoalDNear D DtoGoal NEAR GoalDFar D DtoGoal FAR GoalACloseF D AtoGoal CLOSEF GoalANearLF D AtoGoal NEARLF GoalANearRF D AtoGoal NEARRF GoalAFarLF D AtoGoal FARLF GoalAFarRF D AtoGoal FARRF GoalACloseBR D AtoGoal CLOSEBR Goa lACloseBL D AtoGoal CLOSEBL Goa lACloseB OR P GoalACloseBR P GoalACloseBL GoalANearLB D AtoGoal NEARLB GoalANearRB D AtoGoal NEARRB GoalAFarLB D AtoGoal FARLB GoalAFarRB D AtoGoal FARRB altri predicati per il Goal OR P GoalDNear P GoalDFar GoalNotTooClose Goa lAligned OR OR GoalAFarRF R P GoalAFarLB 0 GoalNotAligned NOT OR NOT P GoalAFarLF P P GoalAFarRB P GoalACloseF P GoalACloseB GoalANearL OR P GoalANearLB GoalANearR OR P GoalANearRB GoalAFarR OR P GoalAFarRB GoalAFarL OR P GoalAFarLB P GoalANearLF P GoalANearRF P GoalAFarRF P GoalAFarLF GoalF OR OR P GoalACloseF GoalANearLF P GoalANearRF P Go
4. In questa sezione vengono descritti tutti gli strumenti hardware e software su cui il nostro progetto si basa nonch alcuni precedenti utilizzi degli stessi e gli aspetti teorico matematici Robowii In questa sezione viene descritto nel dettaglio il nostro lavoro e la sua realizzazione Per prima cosa viene presentata la struttura del software che gestisce le comunicazioni col Wiimote e con il robot Successivamente sono descritti i comportamenti assegnati al robot Risultati In questa sezione viene mostrato lo schema complessivo di gioco esemplificato con grafici che ne mostrano il funzionamento Conclusioni In questa sezione si riassumono i risultati ottenuti vengono descritte le problematiche riscontrate nell attuale implementazione e i possibili sviluppi futuri al lavoro da noi svolto A ppendice A Si espone un metodo per calcolare la posizione del Wiimote in 6 gradi di libert utilizzando 4 LED e la libreria ArToolKit A ppendice B Si elenca il codice di configurazione da noi utilizzato per Mr Brian Sviluppo di un gioco tramite l interazione 1 INTRODUZIONE di un robot ed il controller Wii Remote Sviluppo di un gioco tramite l interazione 1 INTRODUZIONE di un robot ed il controller Wii Remote 2 SOFTWARE E TECNOLOGIE UTILIZZATE 2 1 Nintendo Wii Remote Il Nintendo Wii Remote di seguito abbreviato in Wiimote il principale controller per la console Nintendo Wii Rispetto
5. HIT Hit HIT 67 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote Insiemi fuzzy delle variabili in ingresso Insiemi fuzzy delle variabili in ingresso DDISTANCE TRA CLOSE 0 0 30 50 TRA NEAR 0 50 100 150 TOR FAR 100 150 ADISTANCE TRA CLOSE 20 10 10 20 TRA NEARL 5 10 50 60 TRA NEARR 60 50 10 5 TOR FARL 40 50 TOL FARR 50 40 A2DISTANCE TRA CLOSEF 10 10 10 10 TRA NEARLF 5 10 50 60 TRA NEARRF 60 50 10 5 TRA FARLF 40 50 90 90 TRA FARRF 90 90 50 40 TRA FARRB 90 90 130 140 TRA FARLB 140 130 90 90 TRA NEARRB 120 130 177 178 TRA NEARLB 178 177 130 120 TOL CLOSEBL 170 170 TOR CLOSEBR 170 170 IRDIR CLOSEL 100 50 0 0 CLOSER 0 0 50 100 NEARL 300 50 0 0 TRA NEARR 0 0 50 300 FARL 640 200 FARR 200 640 EXIST 640 640 640 640 HIT SNG V 1 SNG F 0 CDDISTANCE TRA NEAR 0 0 325 350 TOR FAR 325 350 TOR VERY_FAR 390 400 CADISTANCE TRA CLOSE 30 25 25 30 NEARL 0 0 60 70 NEARR 70 60 0 0 FARL 50 60 FARR 60 50 NEARF 85 75 75 85 NEARBL 105 95 NEARBR 95 105 FARML 110 105 75 70 FARMR 70 75 105 110 PANGLE TRI POINTING 5 30 70 ACC TRA WEAK 0 0 25 30
6. Wii Remote PARSER crisp_data_list 7 ae FUZZYFIER cms l Parser A file fuzzy_data_list PREACHER I predicate_list i CANDOER cs I eni Parser m file I IWANTER active_behavior_list BEHAVIOR Pars Ge ENGINE n I Parser file IENA proposed_action_list zi N ica i Parser file COMPOSER weight_want_list action_list DEFUZZYFIER TIE Rs l Parser m i file i command_list MESSENGER Figura 2 9 Schema di funzionamento di Brian seguendo la terminologia utilizzata dal programma 2 4 1 Fuzzyficazione Per prima cosa necessario specificare i valori di input e le tipologie di variabili fuzzy ad essi associate Ad esempio DistanzaDalCentro DISTANCE dichiara che il dato in ingresso DistanzaDalCentro di tipo DISTANCE A questo punto necessario specificare il tipo di dato fuzzy DISTANCE Ad esempio DISTANCE TRA CLOSE 0 0 30 50 TRA NEAR 0 30 150 200 TOR FAR 150 200 22 Sviluppo di un gioco tramite l interazione 2 4 Logica fuzzy e Mr Brian di un robot ed il controller Wii Remote definisce il tipo di variabile DISTANCE come in figura 2 10 DISTANCE Figura 2 10 Esempio di insiemi fuzzy In figura 2 11 sono rappresentate tutte le forme utilizzabili in Brian per definire tipi di dati fuzzy Triangolo Rampa in discesa Rampa in salita
7. ad un tradizionale controller ha la capacit di determinare gli spostamenti a cui soggetto tramite l utilizzo di 2 dispositivi unaccelerometro ADXL330 un sensore ottico PixArt sensibile all infrarosso E alimentato con 2 batterie standard AA ed pensato per un utilizzo wireless comunicando tramite il protocollo Bluetooth Il Wiimote presenta inoltre 10 tasti digitali standard pi un tasto power e un tasto sync uno speaker 4led un piccolo motore elettrico interno collegato ad una massa eccentrica che gli consente di vibrare una memoria EEPROM di 16 KiB Inoltre tramite una porta di espansione possibile collegare Figura 2 1 Il controller Wii Remote ad esso altri dispositivi ad esempio il Nunchuk che contiene un ulteriore accelerometro nonch uno stick analogico e 2 tasti digitali Sebbene l utilizzo principale sia quello di permettere di interagire nei videogiochi per la console Nintendo Wii tramite l utilizzo di varie librerie possibile collegare il Wiimote ad un PC per ricevere i dati inviati e comunicare con esso Questo ha reso interessante il suo utilizzo in svariate applicazioni vedi sezione 2 3 come ad esempio interfacce aptiche o in generale modalit alternative di interazione uomo computer Inoltre dato il basso costo e l insieme di tecnologie in esso contenute stato utilizzato anche per lo studio di problemi di localizzazione tramite visione ed accelerometri
8. assi ADXL330 con un range minimo di 3g su ogni asse e una sensibilit del 10 La forza rilevata su ogni asse digitalizzata con una precisione di 8 bit Il processo di fabbricazione dell accelerometro rende necessario calibrare singolarmente ognuno di essi All interno della memoria EEPROM del Wiimote quindi memorizzato il valore digitalizzato equivalente a 0g e a 1g su ognuno dei 3 assi Il funzionamento dell accelerometro deve essere esplicitamente abilitato dopo che stata inizializzata la connessione 2 1 3 Sensore ad infrarossi Un sensore PixArt presente nella parte anteriore del Wiimote e permette di tracciare la posizione relativa di LED ad infrarossi In particolare il sensore funziona come una normale telecamera pin hole ma rileva solamente onde elettromagnetiche nel campo dell infrarosso con una sensibilit massima intorno ai 940 nm Inoltre non viene inviata l intera immagine rilevata ma da essa vengono automaticamente identificati fino a 4 punti che corrispondono alle coordinate della proiezione sul piano immagine di particolari LED ad infrarossi Per questo motivo solitamente si utilizza una sensor bar una barra che contiene 2 gruppi di LED infrarossi ad una distanza precisa Figura 2 2 Un modello di Sensor Bar in evidenza i 2 gruppi di LED ad infrarossi 10 Sviluppo di un gioco tramite l interazione 2 1 Nintendo Wii Remote di un robot ed il controller Wii Remote Qu
9. assi di traslazione e rntazianno dol Wiiimato ucatan Considerazioni analoghe valgono per l angolo di roll e pitch nelle posizioni rappresentate rispettivamente dalle figure figura 2 4 Wiimote 2 e figura 2 4 Wiimote 3 Questi valori sono accessibili dai seguenti campi della struttura A dati relativa al Wiimote wm gt orient roll wm gt orient pitch wm gt orient yaw E anche possibile ottenere una versione filtrata di roll e pitch Figura 2 4 In queste posizioni un angolo di rotazione non determinabile tramite l accelerometro Sviluppo di un gioco tramite l interazione 2 2 Librerie di un robot ed il controller Wii Remote wm gt orient a_roll wm gt orient a_pitch E importante sottolineare come questi dati siano significativi solo in assenza di altre accelerazioni oltre a quella di gravit situazione determinabile verificando che la somma vettoriale delle accelerazioni rilevate sui vari assi sia in modulo uguale o simile ad 1 2 2 3 3 Dati relativi al sensore ad infrarossi Le librerie Wiluse restituiscono le coordinate sul piano immagine del punto in cui i LED infrarossi sono rilevati nei campi wm gt ir dot i rx wm gt ir dot i ry Questi valori sono ribaltati rispetto alle coordinate effettivamente rilevati dal sensore Utilizzando questa convenzione sono pi comodi per usare il Wiimote come dispositivo di puntamento I campi wm gt ir dot i x wm gt ir dot i y contengono
10. cattivo allineamento fra il robot ed il Goal 13 18 Il robot prosegue verso il Goal 18 22 Trovandosi gi vicino al Goal lo spostamento del robot verso di esso rallenta L angolazione viene corretta pi volte 23 Il robot ha raggiunto il Goal e ha mantenuto la posizione per pi di 3 secondi per questo realizza un punto 56 Sviluppo di un gioco tramite l interazione 4 3 EscapeIR di un robot ed il controller Wii Remote 4 3 EscapelR In questa sessione abbiamo verificato il comportamento di fuga del robot dal giocatore quando quest ultimo tenta di colpirlo con il Wiimote GotoGoal StaylnArea RoboHit 1000 2000 3000 4000 5000 6000 7000 8000 600 IrCenter AtoGoal 500 DtoGoal 400 300 200 100 100 200 1000 2000 3000 4000 5000 6000 7000 8000 57 Sviluppo di un gioco tramite l interazione 4 3 EscapeIR di un robot ed il controller Wii Remote Tanspeed _ RotSpeed _ 1000 2000 3000 4000 5000 6000 7000 8000 Dai grafici si vede che 0 5 4 Il robot puntato col Wiimote da sinistra IrCenter lt 0 per sfuggire al giocatore ruota verso sinistra RotSpeed lt 0 e si muove all indietro leggermente TanSpeed 7 L angolo fra il robot ed il Goal aumenta non essendo pi il robot allineato al Goal il livello di attivazione del comportamento GotoGoal va a 0 4 4 5 Il robot muovendosi all indietro si allontanato dal centro del campo di gioco P
11. gestione degli agenti Un agente un entit astratta rappresentata nel codice sorgente da classi di tipo Expert Nel seguito si preferisce usare la parola agente in quanto la parola esperto descrive solamente una entit che ha determinate esperienze e capacit in certi campi applicativi mentre un agente non solo pu essere considerato un esperto ma anche un entit che compie determinati servizi per conto di altri I vari agenti per funzionare hanno bisogno di eseguire i loro compiti in modo parallelo e di scambiarsi messaggi DCDT permette di creare un sistema multiagente senza gravare l utente degli aspetti legati alla programmazione in multithreading e della comunicazione fra thread diversi e permette di gestire con facilit la creazione e la comunicazione di pi agenti anche in esecuzione su computer diversi 2 5 1 Inizializzazione del Dispatcher e creazione degli agenti La dinamica di funzionamento dello scambio dei messaggi descrivibile con un modello di un ipotetico ufficio postale che ha il compito di ricevere smistare e consegnare i messaggi mediante una classe chiamata Dispatcher che svolge il lavoro di postino DCDT ha una politica pubblica sottoscrivi che nasconde la distribuzione fisica dei messaggi In questo modello tutti gli agenti hanno la possibilit di pubblicare messaggi inviandoli all ufficio postale Ad ogni messaggio assegnato un tipo un agente ha la possibilit di sottoscriversi ad una lista d
12. numero maggiore di frame 34 Sviluppo di un gioco tramite l interazione 2 6 Localizzazione di un robot ed il controller Wii Remote 2 7 Robot utilizzato Il Robot da noi utilizzato un robot a 2 ruote parallele fisse figura 2 17 Le 2 ruote sono mosse da 2 motori DC Maxon alimentati con 4 batterie al piombo da 6 Volt e 4 5 Ah l una collegate in serie Ai motori sono collegati 2 encoder HEDS 5640 Il robot pu raggiungere una velocit massima di circa 1 m s Per la localizzazione stata montata sull asse di rotazione del robot una telecamera Unibrain Fire I 1 2 con interfaccia Firewire 400 ed una risoluzione di 640x480 a 30 fps Figura 2 17 Modello di telecamera da noi utilizzato La scheda di controllo da noi utilizzata chiamata AirBoard stata sviluppata dal Politecnico di Milano La scheda alimentata dalle batterie e a sua volta alimenta i motori regolando la velocit di rotazione delle ruote tramite segnali di potenza in PWM La regolazione della velocit si avvale di un controllore PID che ha in ingresso la velocit di rotazione delle ruote desiderata e quella rilevata dagli encoder Sull Airboard presente anche un controllore fuzzy da noi non utilizzato Le comunicazioni verso l AirBoard avvengono attraverso una porta seriale RS 232 DB9 tramite la quale possibile inviare la velocit desiderata per ognuna delle 2 ruote inoltre tramite un apposito comando l AirBoard restituisce il numer
13. nuovo report non ancora trascoro 1 100 di secondo 40 Sviluppo di un gioco tramite l interazione 3 2 Moduli software sviluppati di un robot ed il controller Wii Remote altrimenti se modalit MANUALE invia comandi direttamente a MotorExpert altrimenti esegui lo schema di gioco vedi sezione 3 2 1 calcola i valori di gioco invia messaggio a BrianExpert con i valori di gioco Le uniche istruzioni che vengono eseguite indipendentemente dal Wiimote sono quelle relative all acquisizione del messaggio di posizione Questo messaggio viene inviato dai moduli che calcolano la posizione E importante sottolineare che l istruzione per la ricezione dei messaggi di tipo MSG POSITION eseguita in modo non bloccante quindi l esecuzione di WilmExpert nel caso non venga ricevuto nessun nuovo messaggio prosegue In questo caso come posizione del robot verr utilizzata l ultima ricevuta E stata implementata anche una modalit di controllo manuale del robot utile nella fase di test e messa a punto del sistema tramite la quale possibile controllare il robot tramite la croce direzionale presente sul Wiimote inviando direttamente i comandi al modulo MotorExpert Come evidenziato anche dallo schema di gioco il modo in cui effettivamente si deve muovere il robot non gestito da WiilmExpert bens da BrianExpert WiimExpert si limita ad inviare a quest ultimo il valore delle varie variabili come ad esempi
14. robotico Essendo il Wii Remote di seguito abbreviato in Wiimote dotato di un accelerometro di una telecamera sensibile all infrarosso di uno speaker di 4 led e della possibilit di vibrare pu essere utilizzato come interfaccia uomo computer in svariate applicazioni della robotica In particolare abbiamo sviluppato un sistema di gioco Robowii che consiste nel cercare di colpire un bersaglio montato su di un robot mentre il robot stesso cerca di raggiungere una determinata posizione Abbiamo utilizzato un robot a 2 ruote fisse parallele controllabili separatamente Robowii stato sviluppato in Linux utilizzando il linguaggio C La comunicazione con il Wiimote stata ottenuta tramite la libreria Wiluse Sono stati inoltre utilizzati 1 seguenti software precedentemente sviluppati dal Politecnico di Milano all interno del progetto MRT Milan Robocap Team DCDT per lo scambio di messaggi all interno dei vari componenti di Robowii Mr Brian per la programmazione dei comportamenti del robot tramite logica fuzzy Inoltre abbiamo utilizzato il software di localizzazione precedentemente sviluppato per il progetto Lurch per permettere al robot di localizzare la sua posizione all interno del campo di gioco utilizzando una telecamera ed appositi marker Questo software si basa sulle librerie ArtToolkitPlus Di seguito viene fornita una breve descrizione delle sezioni che compongono la tesi Software e Hardware utilizzato
15. sia muovendosi in avanti in questo caso sar vero il predicato GoalF che all indietro in questo caso sar vero il predicato GoalB 3 3 2 2 Snaking Per rendere il comportamento complessivo del robot meno prevedibile abbiamo implementato questo comportamento che lo fa rallentare e spostare a zigzag se probabile che l umano stia cercando di mirare al robot Questo ottenuto analizzando l angolo di pitch del Wiimote che deve essere leggermente puntato verso il basso e l accelerazione complessiva dello stesso Le condizioni di CANDO e WANT sono CANDO Snaking OR P GAccExist P Pointing WANT Snaking OR P GAccExist P Pointing e fanno si che questo comportamento sia attivo solo quando presente un accelerazione sufficientemente intensa sul Wiimote o l angolo di pitch dello stesso sia leggermente verso il basso Le regole che compongono il comportamento sono le seguenti GAccWeakR gt RotSpeed RIGHT GAccStrongR gt RotSpeed FAST RIGHT GAccWeakL gt RotSpeed LEFT 48 Sviluppo di un gioco tramite l interazione 3 3 Configurazione comportamenti Mr Brian di un robot ed il controller Wii Remote GAccStrongL gt RotSpeed FAST LEFT AND Pointing RandomPlus gt RotSpeed FAST LEFT AND Pointing RandomMinus gt RotSpeed FAST RIGHT propTanSpeedFF gt TanSpeed FORWARD propTanSpeedF gt TanSpeed SLOW FORWARD propTanSpeedB gt TanSpeed BAC
16. solo se non gi su di esso Inoltre evitano che il robot tenti di muoversi verso il Goal se non orientato in modo corretto Il comportamento AlignToGoal composto dalle seguenti regole GoalANearL gt RotSpeed LEFT GoalANearR gt RotSpeed RIGHT Goa lAFarL gt RotSpeed FAST LEFT Goa lAFarR gt RotSpeed FAST RIGHT Queste regole fanno allineare il robot al Goal pi velocemente se l angolo di rotazione da compiere maggiore Inoltre abbiamo deciso che il robot potendo muoversi sia in avanti che all indietro si pu allineare al Goal in entrambi i modi Questo stato ottenuto definendo i predicati GoalANearL GoalANearL GoalAFarL GoalAFarR come visualizzato in figura 3 3 47 Sviluppo di un gioco tramite l interazione 3 3 Configurazione comportamenti Mr Brian di un robot ed il controller Wii Remote GoalACloseF GoalANearR GoalANearL GoalAFarR GoalAFarL GoalAFarR GoalAFarL GoalANearL GoalANearR GoalACloseB Figura 3 3 Rappresentazione grafica del valore dei predicati nei principali utilizzati dai comportamenti AlignToGoal e GotoGoal Il comportamento GotoGoal composto dalle seguenti regole AND GoalF GoalDNear gt TanSpeed FORWARD AND GoalF GoalDFar gt TanSpeed FAST FORWARD AND GoalB GoalDNear gt TanSpeed BACKWARD AND GoalB GoalDFar gt TanSpeed FAST BACKWARD anche in questo caso il robot pu raggiungere il Goal
17. Dai valori TanSpeed e RotSpeed sono calcolati i valori di velocit delle 2 ruote da inviare alla scheda di controllo tramite la seguente formula Velocit Motore Dx TanSpeed RotSpeed Velocit Motore Sx TanSpeed RotSpeed Per calcolare l odometria viene letto il valore di Tick dall ultima lettura per ogni motore ed applicata la seguente formula mm_Sx Tick Motore Sx Coefficiente Sx mm_Dx Tick Motore Dx Coefficiente Dx movement mm Sx mm Dx 2 orientation mm Sx mm Dx distanza ruote 42 Sviluppo di un gioco tramite l interazione 3 2 Moduli software sviluppati di un robot ed il controller Wii Remote dove Coefficiente Dx e Coefficiente Sx sono il numero di Tick corrispondenti ad uno spostamento di un millimetro Il valore movement rappresenta la variazione di posizione lungo l orientamento attuale e orientation la variazione nell orientamento del robot in radianti 3 2 4 PositionDummyExpert Questo modulo calcola la posizione del robot direttamente dai valori inviati da BrianExpert ai motori MSG_TO MOTION Ricevendo la velocit di rotazione e quella tangenziale desiderata del robot ne aggiorna la sua posizione che invia tramite un messaggio di tipo MSG POSITION Questo modulo stato utilizzato solamente durante la fase di sviluppo del sistema per poter verificare i comportamenti anche senza dover utilizzare il robot 3 2 5 VisionExpert Il modulo VisionExpert determina la pos
18. IR EscapeIR rul level 4 RobotHit RobotHit rul level 5 StayInArea StayInArea rul GotoGoal AND GoalF GoalDNear AND GoalF GoalDFar gt gt TanSpeed FORWARD TanSpeed FAST_FORWARD AND GoalB GoalDNear gt TanSpeed BACKWARD AND GoalB GoalDFar gt TanSpeed FAST _BACKWARD AligntoGoal GoalANearL gt RotSpeed LEFT GoalAFarL gt RotSpeed FAST LEFT GoalANearR gt RotSpeed RIGHT GoalAFarR gt RotSpeed FAST RIGHT Snaking GAccWeakR gt RotSpeed RIGHT GAccStrongR gt RotSpeed FAST RIGHT GAccWeakL gt RotSpeed LEFT GAccStrongL gt RotSpeed FAST LEFT AND Pointing RandomPlus gt RotSpeed FAST LEFT AND Pointing RandomMinus gt RotSpeed FAST _RIGHT propTanSpeedFF gt TanSpeed FORWARD propTanSpeedF gt TanSpeed SLOW FORWARD propTanSpeedB gt TanSpeed BACKWARD propTanSpeedFB gt TanSpeed SLOW BACKWARD EscapelR IRDirClose gt amp DEL RotSpeedANY amp DEL TanSpeed ANY IRDirClose gt TanSpeed FAST BACKWARD IRDirNear gt TanSpeed BACKWARD IRDirCloseR gt RotSpeed FAST_RIGHT IRDirCloseL gt RotSpeed FAST LEFT IRDirNearR gt RotSpeed RIGHT IRDirNearL gt RotSpeed LEFT 71 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote EscapeIR RoboH
19. IWAR 99 October San Francisco USA 1999 19
20. KWARD propTanSpeedFB gt TanSpeed SLOW BACKWARD I predicati del tipo GAcc e Random cambiano valore ciclicamente ogni 2 secondi permettendo un andamento a ZigZag I predicati del tipo propTanSpeed corrispondono alla velocit tangenziale proposta dal livello 1 che viene diminuita 3 3 2 3 EscapelR Il comportamento EscapeIR serve per far fuggire il robot nel caso sia puntato dal Wiimote Le regole che lo compongono sono le seguenti IRDirClose gt amp DEL RotSpeed ANY amp DEL TanSpeed ANY IRDirClose gt TanSpeed FAST BACKWARD IRDirNear gt TanSpeed BACKWARD IRDirCloseR gt RotSpeed FAST RIGHT IRDirCloseL gt RotSpeed FAST LEFT IRDirNearR gt RotSpeed RIGHT IRDirNearL gt RotSpeed LEFT IRDirClose indica che il robot puntato in modo preciso pu essere colpito se viene premuto B IRDirNear indica che il robot puntato ma in modo non sufficientemente preciso per essere colpito Le regole sopra enunciate fanno si che se il robot puntato in maniera precisa annulla tutti gli spostamenti suggeriti dai livelli inferiori livelli 1 e 2 e va velocemente indietro altrimenti si muove indietro ma pi lentamente in ogni caso ruota dalla parte opposta rispetto a quella dove puntato 3 3 2 4 RobotHit Questo comportamento ha lo scopo nel caso che venga totalizzato un punto dal robot o dall umano di fare tornare il robot nella posizione iniziale di H
21. POLITECNICO DI MILANO Corso di laurea in Ingegneria Informatica Dipartimento di Elettronica e Informazione Sviluppo di un gioco tramite l interazione fra un robot ed il controller Wii Remote AIR Lab Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano Relatore Prof Andrea Bonarini Tesi di laurea di Antonio Bianchi Ben Chen Anno Accademico 2007 2008 Sviluppo di un gioco tramite l interazione RINGRAZIAMENTI di un robot ed il controller Wii Remote RINGRAZIAMENTI Ringrazio i miei genitori che a loro modo mi hanno sempre aiutato e supportato i miei amici che mi hanno sopportato anche quando mi si visto poco in giro e mio fratello che mi ha aiutato con 1 disegni Vorrei inoltre ringraziare il prof Andrea Bonarini che ci ha supportato in questo nostro progetto e ci ha fatto conoscere il mondo dell AirLab Un ringraziamento a tutte le persone che abbiamo incontrato durante la nostra permanenza all AirLab per il loro sostegno concreto e morale Un grazie speciale va a Simone Ceriani che ci ha fornito il codice di localizzazione nonch dell ottima e abbondante assistenza tecnica Ringrazio chi produce e diffonde tutta la buona musica che rende le mie ore davanti al pc un po meno tristi Infine grazie a tutte le persone che condividono gratuitamente il loro tempo le loro conoscenze ed i loro file senza di loro realizzare tutto questo e molto altro non sarebbe mai stato possibil
22. a a a a a aS 21 2 Accelerometro stia Ri 2 1 3 S nsor ad Infrarossi sian rincari lara CI E A 6 PRESA EE E RA RES O CORATO DST TRITIO 2 2 1 Libretie prncipali is ccasalo alare aaa o 222 Wirusercardtieristiche praimvipali sc elle lo ei ARRE UPADA EE n Yy levriero 2 3 Altrr tilizzi del Wiimote ella 2 3 1 Wiimote head tracking desktop VR display ssessessseessesesseeesseessessseessseessseesseesseesseeesseesssee 2 3 2 Low Cost Multi point Interactive Whiteboards Using the Wiimote 24 Logica fuzzy Mr Bilan e ii ZA AVAA A VAO N A E ORARI nt a 2 42 Definizione der predicdti sca lore ein ia esi 2 4 2 Scelta dei comportamenti da attivare CANDO i 24 3 Valutazione delle resgle uranio atina 244 FUSIONE SU Aia Rata 2 40 DEE CAIO lai ia 2A O Mr Biol eco 2 5 DCDT Device Communities Developement Toolkit 2 5 1 Inizializzazione del Dispatcher e creazione degli agenti 2 5 2 La classe StrmeModuleMember iiuur ria a anatra 2 0 Localizzazione sura laicale ur 2 6 1 ArToolKit ed ArToolKitPlUS inpren IRINA rari 2 6 2 Calcolo della matrice di rototraslazione usare 2 0 5 Calibrazione dei markers rara I eine ta 2 Robot O talea alal ROBI paella lariana lola riesi eA ESEA EnDie KO FEA 018 0E E EE E E E E EA E bee Sil Descrizione ego A EE AE A E A E E A 312 Pseudocodi e ena aaa iaia ala 3 Ir3 Altre cafatteristi
23. a classe StringModuleMember che implementa i vari metodi per la creazione e l invio di messaggi Di seguito analizzeremo i principali NewMessage TIPO MESSAGGIO ID AGENTE Questo metodo crea un nuovo messaggio con sintassi XML con i seguenti campi lt MESSAGE id ID AGENTE sender INDIRIZZO IP _ AGENTE timestamp MICROSECONDI module NOME AGENTE gt Dove id sender e module sono riferiti all agente che ha creato il messaggio In seguito possibile aggiungere campi dati al messaggio modificando il membro mCurrentMessage ad esempio nel seguente modo mCurrentMessage lt lt lt C gt lt lt COMANDO VALORE lt lt lt C gt n Infine per chiudere ed inviare il messaggio si utilizzano queste istruzioni CloseMessage SendAllStringMessages 29 Sviluppo di un gioco tramite l interazione 2 6 Localizzazione di un robot ed il controller Wii Remote 2 6 Localizzazione Per localizzare la posizione del robot abbiamo utilizzato un sistema di fiducial marker precedentemente sviluppato dal Politecnico di Milano per il progetto 5 che a sua volta fa uso delle librerie ArToolKitPlus per identificare e localizzare la posizione dei marker nell immagine fornita dalla telecamera Questo sistema ricava la posizione e l orientamento del robot rilevando la posizione relativa del robot rispetto ad una serie di marker che nel nostro caso sono stati posizionati sul soffitto La procedura di localizzazione composta pri
24. a destra del bersaglio e negativo se punta una zona a sinistra Arobot orientamento assoluto del robot DtoHome distanza fra il robot e la home ovvero l area in cui posizionarsi all inizio del gioco o quando viene totalizzato un punto AtoHome angolo fra il robot e la home Hit indica se stato totalizzato un punto e il robot deve tornare nella home HomeRot indica se il robot deve orientarsi all interno della home in posizione di inizio gioco DtoCenter distanza fra il robot ed il centro del campo di gioco AtoCenter angolo fra il robot e il centro del campo di gioco WiiMotePitch indica l inclinazione del Wiimote lungo l angolo di pitch GAcc indica l accelerazione complessiva a cui sottoposto il Wiimote Random valore che alterna in modo ciclico fra 1 e 1 ProposedTanSpeed velocit tangenziale proposta dai comportamenti di livello 1 3 3 2 Comportamenti Per il funzionamento di Robowii abbiamo sviluppato 6 comportamenti diversi 46 Sviluppo di un gioco tramite l interazione 3 3 Configurazione comportamenti Mr Brian di un robot ed il controller Wii Remote AligntoGoal si occupa di allineare il robot con il Goal cio l area che deve raggiungere per totalizzare un punto livello 1 GotoGoal si occupa di muovere il robot verso il Goal nel caso sia allineato con esso livello 1 Snaking fa assumere al robot un comportamento pi cauto nel caso sia probabile che l umano stia tentando di colpirlo li
25. alAFarRF GoalB OR OR P GoalACloseB GoalANearLB P GoalANearRB P GoalAFarRB HAHA HA AAA AAA OR P OR P GoalAFarLF OR P OR P GoalAFarLB distanza modulo angolo da Home HomeDClose D DtoHome CLOSE HomeDNear D DtoHome NEAR HomeDFar D DtoHome FAR HomeAClose D AtoHome CLOSE HomeANearL D AtoHome NEARL HomeANearR D AtoHome NEARR HomeANear OR P HomeANearL P HomeANearR HomeAFarL D AtoHome FARL HomeAFarR D AtoHome FARR angolo assoluto del robot RobotAClose D ARobot CLOSE RobotANearL D ARobot NEARL RobotANearR D ARobot NEARR RobotAFarL D ARobot FARL RobotAFarR D ARobot FARR HEHE HEHE HAHA RR RR 4444444444444444 4444 IR direzione IRDirCloseR D IRCenter CLOSER IRDirCloseL D IRCenter CLOSEL IRDirNearR D IRCenter NEARR IRDirNearL D IRCenter NEARL IRDirFarR D IRCenter FARR IRDirFarL D IRCenter FARL IRDirClose OR P IRDirCloseR P IRDirCloseL IRDirNear OR P IRDirNearR P IRDirNearL IRExist D IRCenter EXIST 14444 HA colpito gt goto Home HitV D Hit V HomeRotV D HomeRot V ti aia dida aaa dia raie a diana reo di iaiee ein iare a niaiaiee aiar ieie iaia 69 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote Predicati distanza modulo angolo dal centro D DtoCenter NEAR D D
26. amento viene associato un predicato il cui valore corrisponder al valore con cui esso dovr essere attivato Ad esempio VaiAlCentro NOT P DistanzaCentroClose indica che il comportamento VaiAlCentro pu essere attivato se la distanza dal centro non troppo piccola 2 4 3 Valutazione delle regole Dopo aver valutato i comportamenti attivi cio quelli il cui valore di attivazione superiore ad una determinata soglia Brian valuta le singole regole relative ad ognuno di essi Ogni regola espressa nel seguente modo antecedente gt variabile VALORE variabile VALORE Dove l antecedente un predicato o una composizione di essi variabile il nome di una variabile fuzzy corrispondente ad un uscita e VALORE l insieme fuzzy di valori assegnati a tale variabile La variabile fuzzy assume il valore indicato se il valore dell antecedente maggiore ad una certa soglia alla coppia variabile valore proposta dalla regola associato anche il valore dell antecedente della regola stessa che rappresenta l importanza della regola e quindi del valore da essa generato Pi regole possono specificare valori diversi per la stessa variabile in questo caso il comportamento proporr pi coppie variabile valore per la stessa variabile e ad ognuna di esse sar associata un importanza diversa in base al valore dell antecedente della regola che l ha generata 24 Sviluppo di un gioco tramite l interazione 2 4 Log
27. bili sia le informazioni relative all odometria che quelle di posizione assoluta provenienti da VisionExpert abbiamo pensato a creare un modulo che integrasse le 2 informazioni Infatti odometria e visione sono metodi complementari di localizzazione e il loro utilizzo combinato pu portare a posizioni pi precise Nella tabella seguente proposto un confronto delle 2 tecniche 43 Sviluppo di un gioco tramite l interazione 3 2 Moduli software sviluppati di un robot ed il controller Wii Remote ODOMETRIA VISIONE Informazione differenziale istante per istante ho Informazione assoluta istante per istante ho la la velocit di spostamento posizione Precisa per piccoli spostamenti Poco precisa Errore crescente Errore costante Informazioni odometriche sempre disponibili Informazioni non sempre disponibili marker al di fuori dal campo di visione o coperti errata illuminazione Lo schema di funzionamento complessivo del modulo PositionExpert il seguente leggi messaggio inviato da VisionExpert se la posizione inviata da VisionExpert valida invia la nuova posizione a WiimExpert altrimenti leggi il messaggio inviato da MotorExpert se l ultima posizione valida ricevuta da VisionExpert stata da meno di 10s stima la nuova posizione da i dati di odometria invia la nuova posizione a WiimExpert altrimenti invia messaggio di posizione non valida a WiilmExpert La posizione s
28. ch avallare aa la ani Sviluppo di un gioco tramite l interazione INDICE di un robot ed il controller Wii Remote S2 Modulisolware sali ppalisra saletta SC MIIDERTleeaenolileelicarapaalil role sl BAER rile 3 2 3 Motor EXpert pri Rat 3 2 4 PositonD mimy Expert ieinu ne a y e a RE ri 3 2 9 VISIONEX PETU i eo e ET A E T EA AEE T E A IR 3 2 0 PoSIHOnEXpert ciali A A a E R pala COMA LI RARI RI SIA AI E EE 3 3 Configurazione comportamenti Mr Brian ii Sal Dal in N are S O e a r E a N EOE a a S A EE E i A A 332 Comportamenti eie a N E a a E A A RISULTA P reia aE E e a 4 1 AltentoGoal e Goron roi aiar clan 4 Stay IAT a n aLaaa a er II oe d e EE O E E SE A A TA ISCONELUSIONI rele 51 Sviluppidelsistema di d1000 iatale ia S2 Sviluppi del sistema di localizzazione i i i a APPENDICE Arron Ei E O R E TEET E ia APPENDICE B iupira lalla alain Variabili in 1NBTESSO i IAA POT EE a E PRA ARR I Insiemi fuzzy delle variabili 1MiNgresso suite abano aa rio PrediCati ili lei ili regia ioiisni Noale iaia i Sa lio Insiemi fuzzy delle variabili inaisetta coniata reali Elenco comportamenti sc iolanda GotoG al ei A E A E A ibra ria rien a li ii Sviluppo di un gioco tramite l interazione INDICE di un robot ed il controller Wii Remote 1 INTRODUZIONE Lo scopo del nostro lavoro di tesi quello di studiare l utilizzo del Wii Remote il controller principale della console Nintendo Wii in ambito
29. cos registrati possono essere visualizzati in tempo reale tramite GnuPlot o Matlab vedi sezione 4 3 2 3 MotorExpert Il modulo MotorExpert si occupa di ricevere i messaggi provenienti da BrianExpert MSG_TO MOTION effettuare il parser dei messaggi tramite un parser creato con FLEX stabilire i comandi da inviare alla scheda di controllo leggere dalla scheda di controllo i valori degli encoder ed inviare un messaggio MSG_FROM MOTION con i loro valori Il periodo di MotorExpert stato impostato a 0 ma l istruzione per la ricezione dei messaggi di tipo MSG _TO MOTION eseguita in modo bloccante Quindi MotorExpert verr eseguito solamente in risposta ad un messaggio MSG _TO MOTION inviato da BrianExpert in caso di controllo automatico o direttamente da WiimExpert in caso di controllo manuale Inoltre per evitare di inviare troppi comandi alla scheda di controllo e saturare la porta seriale usata per la comunicazione i comandi ad essa sono inviati solamente 5 volte ogni secondo I messaggi del tipo MSG_TO MOTION e MSG FROM MOTION seguono la sintassi XML descritta nella sezione 2 5 2 I messaggi MSG_TO MOTION nella nostra implementazione contengono 2 campi ulteriori lt b gt TanSpeed VALORE lt D gt lt b gt RotSpeed VALORE lt D gt mentre nei messaggi di tipo MSG _FROM MOTION utilizziamo i seguenti campi aggiuntivi lt D gt movement VALORE lt D gt lt D gt orientation VALORE lt D gt
30. de Per rendere pi interessante il gioco stato implementato un meccanismo di carica Non infatti possibile colpire il bersaglio se prima non lo si puntato anche in modo approssimativo per un tempo sufficiente Questo realizzato incrementando una variabile quando il Wiimote percepisce in una posizione qualunque i 2 LED della barra e decrementandola quando non li rileva Il robot verr considerato colpito solo se quando viene premuto il tasto B il livello di carica sar sufficientemente alto altrimenti il livello di carica andr a 0 3 1 2 Pseudocodice Lo schema complessivo di gioco risulta il seguente se TornaInPosizioneIniziale TRUE se Posizione POSIZIONE INIZIALE e TempoTrascorso gt 3 TornaInPosizioneIniziale FALSE altrimenti se i LED sono inquadrati aumenta carica altrimenti diminuisci carica se stato premuto il tasto B se il bersaglio puntato correttamente e carica gt SOGLIA PunteggioGiocatore PunteggioGiocatore 1 TornaInPosizioneIniziale TRUE 36 Sviluppo di un gioco tramite l interazione 3 1 Struttura di gioco di un robot ed il controller Wii Remote carica 0 se Posizione 0BIETTIVO ROBOT e TempoTrascorso gt 3 PunteggioRobot PunteggioRobot 1 3 1 3 Altre caratteristiche Per aumentare l interattivit del gioco abbiamo aggiunto anche le seguenti funzionalit Il livello di carica viene visualizzato sul Wiimo
31. e Antonio Bianchi RW Ringraziamenti REGNIAIICRE NA TRAMETRE Ringrazio i miei genitori che sanno amarmi pi di quanto amino se stessi k 9 WR mia sorella fk 9 4h 2 mia nonna la mia ragazza Clo per il suo incoraggiamento e soprattutto per il suo amore Antonio Bianchi il socio che mi ha sopportato per tutto il periodo della realizzazione della tesina Eugenio Ferramola un fidato amico e compagno di avventure Alessandro Arnone Gianni Bombelli Siegfried Cattaneo Elena Bartolone la mia pi cara amica tutti coloro che lavorano in AirLab per il loro aiuto in particolar modo professor Andrea Bonarini e Simone Ceriani le persone che hanno contribuito allo sviluppo del free software e dell open source senza i quali non avremmo mai potuto realizzare ci che abbiamo fatto ed infine me stesso perch mi piace davvero un sacco fare quello che faccio Ben Sviluppo di un gioco tramite l interazione RINGRAZIAMENTI di un robot ed il controller Wii Remote Sviluppo di un gioco tramite l interazione RINGRAZIAMENTI di un robot ed il controller Wii Remote INDICE RINGRAZIAMENTI ie a n a aaa a ae a a a ssa 3 INDICE payne ennn a E tarato aaa 5 T INTRODUZION Ece teis lla ile 2 SOFTWARE E TECNOLOGIE UTILIZZATE eeseeeesseseesseessessesseessessesseessessosseesseosoesorsseosseeessseessso 2A Nintendo Wir Remote aneio ea A E N E E EE a e lane D Bluetooth a e a a E a E E E a N
32. e vari livelli di difficolt del gioco rendendo ad esempio pi o meno reattivo il comportamento del robot Ad esempio si pu pensare a variare la velocit di rotazioni che il robot ha quando cerca di evitare di essere puntato oppure di rendere pi o meno veloce il suo dirigersi verso il Goal Si potrebbe rendere il robot colpibile in pi punti ad esempio sia anteriormente che posteriormente per fare questo sarebbe necessario collocare ulteriori LED su di esso per bisognerebbe fare in modo che il robot potesse capire verso quale bersaglio il giocatore stia puntando Questo potrebbe essere reso possibile posizionando i LED secondo configurazioni ben definite e diverse per ogni bersaglio Si pu anche pensare ad un estensione della nostra applicazione nella quale pi persone collaborano per colpire il robot compito facilmente realizzabile in quanto le librerie da noi utilizzate permettono di gestire pi Wiimote contemporaneamente oppure si potrebbe far si che il robot tenti di colpire il giocatore che in questo caso dovrebbe indossare un qualche dispositivo con LED ad infrarossi L interattivit del gioco potrebbe essere migliorata aggiungendo suoni provenienti dal Wiimote questo tecnicamente possibile in quanto il Wiimote presenta uno speaker al suo interno ma il suo funzionamento non stato ancora totalmente implementato in nessuna libreria disponibile Un altra possibile miglioria al gioco quella di rendere il robot in g
33. er questo motivo il comportamento StayInArea si attivato livello di attivazione gt 0 2 Questo comportamento evita che il robot esca dall area di gioco e per fare questo impone che la velocit tangenziale sia uguale a 0 4 5 5 7 Il robot continua a girare ed indietreggiare per evitare il Wiimote 5 7 Il giocatore punta il Wiimote dalla direzione opposta la velocit angolare si inverte 5 7 8 5 Il giocatore non punta pi il robot L angolo fra il robot e il Goal di circa 170 gradi quindi il robot si trova gi allineato al Goal anche se per raggiungerlo deve muoversi all indietro Il moto del robot proseguo quindi con RotSpeed 0 e TanSpeed lt 0 58 Sviluppo di un gioco tramite l interazione 4 3 EscapeIR di un robot ed il controller Wii Remote 59 Sviluppo di un gioco tramite l interazione 4 3 EscapeIR di un robot ed il controller Wii Remote 5 CONCLUSIONI Durante il nostro lavoro abbiamo sviluppato un sistema di gioco basato sull interazione del Wiimote con un robot a ruote abbiamo integrato diversi componenti comunicazione con il Wiimote comunicazioni con il robot localizzazione odometria utilizzando DCDT e creando un unico ambiente software in cui essi collaborano A partire dal nostro lavoro sono possibili vari sviluppi 60 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote 5 1 Sviluppi del sistema di gioco Per prima cosa possibile crear
34. esto metodo evita di utilizzare una grande banda per trasmettere l intera immagine rilevata dalla telecamera utilizzare una qualunque tecnica per l identificazione di marker per estrapolare le coordinate sul piano immagine della barra in quanto in condizioni normali i LED risultano l unica fonte intensa di infrarossi Bisogna per notare che in alcune situazioni particolari ad esempio inquadrando lampadine ad incandescenza i LED non risultano pi l unica sorgente di infrarossi rilevata e questo pu risultare problematico La larghezza di campo di circa 45 gradi in orizzontale e 35 in verticale la risoluzione spaziale di 1024x768 la frequenza di scansione 100 Hz Il sensore invia inoltre un informazione su una scala da 1 a 15 che indica in modo approssimativo l intensit con cui un LED rilevato Anche il sensore ad infrarossi deve essere esplicitamente abilitato dopo che stata inizializzata la connessione con il Wiimote Il suo eventuale non utilizzo cos come per l accelerometro permette di risparmiare il consumo di energia La sensor bar consente di utilizzare facilmente il Wiimote come un dispositivo di puntamento vedi sezione 2 2 3 3 ma non possibile localizzare in modo esatto un Wiimote cio conoscere la sua posizione e il suo orientamento in 6 gradi di libert utilizzando semplicemente 2 LED vedi appendice A 11 Sviluppo di un gioco tramite l interazione di un robot ed il contro
35. guardi ad esempio 3 una logica polivalente in cui una proposizione pu avere un grado di verit compreso tra 0 e 1 La logica fuzzy trova ampio impiego in robotica in quanto permette di programmare robot seguendo un approccio comportamentale In questo modo il comportamento definitivo del robot ottenuto dalla collaborazione di vari comportamenti atomici ed indipendenti ognuno dei quali esprime una connessione diretta fra gli input sensoriali e gli output rivolti verso gli attuatori Brian permette di sviluppare rapidamente ed in modo modulare i comportamenti che si vogliono fare assumere al robot e nella sua estensione Mr Brian consente di specificare le modalit con cui essi interagiscono essendo possibile definire anche delle gerarchie fra gli stessi Per una descrizione completa del funzionamento di Mr Brian si rimanda al manuale utente Tralasciando inizialmente gli aspetti legati alle gerarchie fra i vari comportamenti e riferendoci quindi al software Brian il processo che a partire dai dati di input produce in output l azione di controllo il seguente 1 Fuzzyficazione dei dati di ingresso 2 Valutazione del valore di verit dei predicati 3 Scelta dei comportamenti da attivare 4 Valutazione delle regole dei singoli comportamenti 5 Fusione dei risultati 6 Defuzzyficazione dei risultati 21 Sviluppo di un gioco tramite l interazione 2 4 Logica fuzzy e Mr Brian di un robot ed il controller
36. i a cui stato tolto l effetto della rotazione il triangolo bianco rappresenta il punto effettivamente puntato dal Wiimote Il cerchio interno azzurro rappresenta la zona entro la quale nel caso venga premuto il pulsante B il robot considerato colpito Nella parte inferiore della finestra sono rappresentate la posizione del robot ed il suo orientamento freccia rossa il campo di gioco circonferenza azzurra la posizione che il robot deve raggiungere per totalizzare N n un punto circonferenza nera Figura 3 2 Esempio di finestra I o n co f disegnata da LogExpert l area in cui il robot si posiziona per iniziare la partita o x dopo che stato totalizzato un punto circonferenza bianca 45 Sviluppo di un gioco tramite l interazione 3 2 Moduli software sviluppati di un robot ed il controller Wii Remote 3 3 Configurazione comportamenti Mr Brian Di seguito illustreremo come abbiamo configurato Mr Brian per ottenere il comportamento complessivo del robot da noi desiderato Si rimanda all appendice B per un elenco analitico della configurazione da noi usata 3 3 1 Dati in ingresso Mr Brian riceve in ingresso diversi valori dal modulo WiimExpert e in base ad essi DtoGoal distanza fra il robot e il goal AtoGoal angolo fra il robot e il goal IRCenter distanza fra il centro del bersaglio e il punto puntato dal Wiimote questo valore positivo se il Wiimote punta una zona
37. i interesse specificando il tipo di messaggi che intende ricevere In questo modo solo i diretti interessati possono ottenere le informazioni precedentemente richieste e non vengono quindi prodotte copie inutili dello stesso messaggio aumentando l efficienza e l affidabilit del sistema Nel caso in cui dei messaggi arrivano nell ufficio postale e non esiste nessun agente che ha sottoscritto quella tipologia di messaggio i messaggi vengono scartati Il file principale necessario alla creazione di un robot kernel cpp del quale analizzeremo adesso 1 punti principali Per una guida completa a DCDT si rimanda al suo manuale utente Nell esempio sotto si illustra la possibile creazione del dcdt con inserimento di un esperto WiimExpert dichiarazione dell esperto define WIIM ifdef WIIM include WiimExpert h int period 0 in microsecondi endif definizione del file di configurazione di dcdt permette di impostare se DCDT deve lavorare in locacale su una singola macchina o su una rete in tal caso vanno impostati i parametri TCP IP string dcdt config file config dcdt conf int main int argc char argv 27 Sviluppo di un gioco tramite l interazione 2 5 DCDT Device Communities Developement Toolkit di un robot ed il controller Wii Remote creazione del dispatcher ModuleDispatch Dispatch new ModuleDispatch basename argv 0 dcdt config file creazione della lista degli agenti std vecto
38. i valori precedenti a cui stato tolto l effetto della rotazione del Wiimote questo viene ottenuto ruotando intorno al centro del piano immagine i punti per un angolo opposto all angolo di roll rilevato dall accelerometro Considerando l utilizzo normale del Wiimote cio puntandolo verso una barra contenente 2 gruppi di LED i campi wm gt ir ax wm gt ir ay rappresentano le coordinate del punto effettivamente puntato sulla barra dove 512 1024 2 e 384 768 2 sono le coordinate del centro della barra Questi valori sono ottenuti calcolando la media delle coordinate dei punti rilevati dopo aver tolto ad essi l effetto della rotazione del Wiimote vedi figura 2 5 e 2 6 15 Sviluppo di un gioco tramite l interazione 2 2 Librerie di un robot ed il controller Wii Remote Figura 2 5 Esempio di puntamento Il Wiimote in figura sta puntando in alto a destra rispetto ai LED i cerchi blu rappresentano le coordinate rilevate dal sensore ad infrarossi del Wiimote 16 Sviluppo di un gioco tramite l interazione 2 2 Librerie di un robot ed il controller Wii Remote Figura 2 6 Coordinate dei LED rilevate dal sensore ad infrarossi punti blu e quelle restituite dalla libreria Wiiuse punti rossi quest ultime risultano ribaltate in orizzontale ed in verticale Per calcolare i punti gialli le coordinate di quelli rossi sono ruotate intorno al centro di un angolo opposto all angolo di roll rilevato dall accelerometro Pe
39. ica fuzzy e Mr Brian di un robot ed il controller Wii Remote 2 4 4 Fusione dei risultati Su tutte le coppie variabile valore proposte da tutte le regole di tutti i comportamenti attivi viene calcolata la media dell importanza tale media sar pesata sul valore di WANT associato ad ogni behavior 1 behavior n Speed Speed Speed Speed Speed weight want list fast slow fast Dr fast slow 0 785 0 968 0 24 1 i t t i weight composer ia L float composer Composer j g 1 Speed Speed fast slow Yyyy XXXX Figura 2 12 Meccanismo di fusione dei risultati comportamento E infatti possibile associare ad ogni comportamento con la stessa sintassi delle regole CANDO alcune regole WANT che rappresentano quando e con che intensit un certo comportamento deve essere eseguito 2 4 5 Defuzzyficazione Cos come i dati in ingresso variabili reali sono trasformati in variabili fuzzy i valori fuzzy proposti dai vari comportamenti sono trasformati in valori reali Brian implementa attualmente solo insiemi di tipo impulsivo per definire le variabili fuzzy usate come output In questo caso il processo di defuzzyficazione consister semplicemente nel calcolare la media dei vari valori associati ad una variabile pesata sull importanza di ogni coppia variabile valore 2 4 6 Mr Brian L approccio di Bria
40. ico thread non bloccante codice sorgente disponibile e documentato con licenza aperta 12 Sviluppo di un gioco tramite l interazione 2 2 Librerie di un robot ed il controller Wii Remote implementazione di tutte le funzionalit principali richieste dal nostro utilizzo 2 2 3 Wiiuse utilizzo Per una guida completa delle funzioni e delle strutture dati di Wiiuse vedere la documentazione disponibile sul sito ufficiale di seguito illustreremo solamente le principali con particolare attenzione a quelle da noi utilizzate o che potrebbero essere utili per sviluppi futuri 2 2 3 1 Inizializzazione connessione e ciclo principale Una volta compilate e installate per utilizzare le librerie Wiluse in ambiente Linux usando come compilatore GCC sufficiente includere il file wiluse h e compilare il proprio eseguibile con il flag lwiluse Per inizializzare una connessione si usano le seguenti istruzioni wiimotes wiiuse init MAX WIIMOTES found wiiuse find wiimotes MAX WIIMOTES CONNECTION TIME if found printf No wiimotes found return 0 connected wiiuse connect wiimotes MAX WIIMOTES if connected printf Connected to i wiimotes of i found n connected found else printf Failed to connect to any wiimote n return 0 wiiuse motion sensing wiimotes 0 1 wiiuse set ir wiimotes 0 1 La funzione wiluse_init inizializza un array di MAX WIIMOTES elementi poi trami
41. it HitV gt amp DEL RotSpeed ANY amp DEL TanSpeed ANY RotSpeed AHEAD RotSpeed LEFT RotSpeed LEFT RotSpeed RIGHT RotSpeed FAST LEFT ananannannannannannannannnannan RotSpeed FAST_RIGHT AND HomeAClose HomeDFar gt TanSpeedFAST_FORWARD AND HomeAClose HomeDNear gt TanSpeed FORWARD AND NOT HomeRotV AND HomeANear HomeDClose gt TanSpeed SLOW FORWARD AND NOT OR HomeRotV HomeDClose HomeAClose gt AND NOT OR HomeRotV HomeDClose HomeANearL gt AND NOT OR HomeRotV HomeDClose HomeANearL gt AND NOT OR HomeRotV HomeDClose HomeANearR gt AND NOT OR HomeRotV HomeDClose HomeAFarL gt AND NOT OR HomeRotV HomeDClose HomeAFarR gt AND HomeRotV RobotANearL AND HomeRotV RobotANearR AND HomeRotV RobotAFarL gt RotSpeed LEFT gt RotSpeed RIGHT otSpeed FAST LEFT AND HomeRotV RobotAFarR tSpeed FAST RIGHT AND HomeRotV RobotAClose gt gt R gt Rot Ro otSpeed AHEAD StaylInArea CenterAFarM gt TanSpeed STEADY CenterANearF gt TanSpeed FORWARD CenterANearB gt TanSpeed BACKWARD anana CenterDVery_ Far gt amp DEL RotSpeed ANY amp DEL TanSpeed ANY AND NOT HitV CenterDFar gt amp DEL TanSpeed ANY AND CenterDVery Far TanSpeed FORWARD AND CenterDVery_ Far OR CenterANearL gt R
42. ite l interazione 4 RISULTATI di un robot ed il controller Wii Remote 4 RISULTATI Di seguito illustreremo varie sessioni di gioco Di esse abbiamo generato i grafici rappresentanti la posizione del robot i livelli di attivazione dei comportamenti principali e i comandi inviati alla scheda di controllo Per quanto riguarda i grafici dei livelli di attivazione dei comportamenti abbiamo disegnato il minore fra il valore di CANDO e quello di WANT il che equivale a mettere in AND le 2 condizioni Il tempo sui grafici espresso in millisecondi mentre per far riferimento ad istanti o intervalli temporali si indicheranno 1 secondi fra parentesi tonde 52 Sviluppo di un gioco tramite l interazione 4 1 AlignToGoal e GotoGoal di un robot ed il controller Wii Remote 4 1 AlignToGoal e GotoGoal In questa prima sessione di gioco abbiamo attivato il robot mentre il giocatore rimaneva fermo quindi gli unici comportamenti attivi sono stati inizialmente AlignToGoal e GotoGoal Successivamente dopo che il robot ha raggiunto il Goal e ha totalizzato un punto stato attivato il gomportamento RoboHit GotoGoal o 5000 10000 15000 20000 25000 30000 35000 40000 TanSpeed RotSpeed o 5000 10000 15000 20000 25000 30000 35000 40000 53 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote 4 1 AlignToGoal e GotoGoal Dal grafico della posizione del robot possiamo vedere che esso si
43. izione del robot in base alla immagini provenienti dalla telecamera utilizzando come riferimento marker posizionati sul soffitto vedi sezione 2 6 La posizione restituita nel piano cio espressa in termini di coordinate x ed y e rotazione Q Il modulo stato solo leggermente modificato rispetto a quello gi sviluppato per il progetto Lurch Le nostre modifiche sono state le seguenti Le coordinate restituite dal sistema di analisi dei frame sono state scalate e traslate in un sistema pi adatto al gioco da noi sviluppato E stato aggiunto un filtro a media mobile che restituisce la media degli ultimi 7 valori rilevati La posizione ritenuta valida se almeno in un frame degli ultimi 7 analizzati stato rilevato un marker La media pesata in modo tale da dare maggiore valore agli ultimi dati rilevati Il periodo del modulo stato impostato con un periodo di 100ms ed invia quindi 10 messaggi al secondo di tipo MSG _POSITION contenenti la posizione del robot Nel caso che la posizione rilevata non sia valida viene inviato un particolare messaggio e in questo caso il modulo WiimExpert interrompe per motivi di sicurezza ogni movimento automatico del robot Il modulo pu essere impostato anche per inviare messaggi di tipo MSG POSITION P invece che MSG POSITION In questo caso i messaggi saranno ricevuti dal modulo PositionExpert invece che da WilmExpert vedi sezione 3 2 6 3 2 6 PositionExpert Avendo disponi
44. ker con posizione e orientamento corretti un oggetto tridimensionale vedi figura 2 12 Di queste funzionalit solo le prime 2 sono state utilizzate dalla nostra applicazione I marker utilizzati da ArToolKit sono formati da un quadrato con un bordo nero contenente un immagine ben definita Oltre ad alcuni marker standard possibile registrare tramite un apposita procedura nuovi marker che verranno poi riconosciuti dalla libreria WI BCO Figura 2 13 Marker di base utilizzati da ArToolKit Nella nostra applicazione per abbiamo utilizzato un evoluzione della libreria ArToolKitPlus che introduce alcune migliorie ed utilizza marker di tipo diversi I marker utilizzati in questo caso hanno un contenuto predefinito che li identifica e non quindi possibile memorizzarne di personalizzati Figura 2 14 Tipologia di marker utilizzata da ArToolKitPlus Questa libreria offre alcuni vantaggi l utilizzo di marker predefiniti garantiscono un meccanismo pi rapido e preciso rispetto ai metodi di correlazione usati da ArToolKit per riconoscere e distinguere i marker migliore meccanismo di soglia in grado di riconoscere i marker anche in condizione di illuminazione fortemente disomogenea compensazione del fenomeno di vignettatura zone scure sul bordo dell immagine che pu presentarsi con alcune telecamere semplificazione del processo di calibrazione della telecamera compatibile con vari tool esterni nel nostro ca
45. ller Wii Remote 2 1 Nintendo Wii Remote 2 2 Librerie 2 2 1 Librerie principali Anche se le specifiche del protocollo di comunicazione del Wiimote non sono pubbliche essendo conformi al protocollo Bluetooth HID stato possibile tramite reverse engineering sviluppare facilmente svariate librerie per comunicare con esso Di seguito riportiamo uno schema riassuntivo delle principali NOME LICENZA LINGUAGGIO SISTEMA NOTE OPERATIVO Wiiuse GPLv3 C Linux Interfaccia a singolo thread non LGPLv3 Windows bloccante WiiuseJ GPLv3 Java Linux Bind della libreria Wiluse in Java Windows DarwiinRemote BSD Objective C OSX WiiremoteJ Freeware Java Linux Necessita di una libreria che closed Windows implementi lo standard JSR 82 ad source OSX esempio BlueCove o aventana wiigee LGPL Java Linux Necessita di una libreria che Windows implementi lo standard JSR 82 OSX Questa libreria permette di riconoscere il tipo di movimento eseguito impugnando il Wiimote 2 2 2 Wiiuse caratteristiche principali Abbiamo scelto di utilizzare la libreria Wiiuse perch si rivelata la pi facile da integrare con il software di controllo del robot da noi utilizzato vedi sezione 2 3 e 2 4 3 Infatti la libreria Wiiuse ha le seguenti caratteristiche compatibilit con Linux e con il driver Bluetooth nativo del kernel 2 6 Bluez utilizzo del linguaggio C utilizzo di un un
46. luppo di un gioco tramite l interazione 2 2 Librerie di un robot ed il controller Wii Remote restituisce TRUE durante tutti i report in cui il pulsante tenuto premuto tranne il primo IS_RELEASED wm WIIMOTE BUTTON_ A restituisce TRUE nel primo report successivo al rilascio del pulsante 18 Sviluppo di un gioco tramite l interazione 2 2 Librerie di un robot ed il controller Wii Remote 2 3 Altri utilizzi del Wiimote Di seguito descriveremo brevemente alcuni interessanti progetti gi sviluppati che utilizzano il Wiimote 2 3 1 Wiimote head tracking desktop VR display Usando la videocamera ad infrarossi de Wiimote e due sensori LED montati sulla testa possibile stimare la posizione della testa Mediante questa tecnica si pu utilizzare un display per fornire immagini virtuali dipendenti dalla visione Questo progetto stato sviluppato da Johnny Lee trasformando un display a due dimensioni in un portale per un ambiente virtuale ed interattivo Il display reagisce al movimento della testa e crea sullo schermo l illusione di una finestra reale fornendo la sensazione di profondit e di spazio VR Display with head tracking VR Display with head tracking Figura 2 7 2 3 2 Low Cost Multi point Interactive Whiteboards Using the Wiimote Dal momento che il Wiimote pu tracciare sorgenti di luci ad infrarossi si pu individuare la posizione di una particolare penna su c
47. matrice MT restituisce valori stabili la sua inversa TM risulta essere molto instabile Il motivo geometrico alla base di questo problema che un piccolo errore nel calcolo della rotazione intorno 7 am U Figura 2 15 Le convenzioni usate per il sistema di riferimento del marker e della telecamera Per quanto riguarda le rotazioni con Q si intende la rotazione intorno all asse z con B quella intorno a y e con Y quella intorno a x agli assi x e y fare riferimento alle convenzioni in figura 2 15 nella matrice MT porta ad un grande errore nel calcolo della posizione del robot soprattutto se esso posto come nel nostro caso ad una distanza elevata dal marker Inoltre proprio questi valori sono i pi difficili da stimare dall immagine rilevata del marker in quanto una differenza anche di pochi pixel porta a determinare orientamenti del tutto diversi del marker intorno all asse x e y angoli B e Y vedi immagine 2 16 YY Sviluppo di un gioco tramite l interazione 2 6 Localizzazione di un robot ed il controller Wii Remote GG Figura 2 16 I 2 marker sono ruotati intorno all asse rosso di circa 30 gradi il primo e 30 gradi il secondo Nonostante questo le differenze fra le immagini non sono molto consistenti Bisogna per considerare che nel nostro contesto applicativo il robot si muover unicamente lungo gli assi x ed y e subir rotazioni solamente attorno all asse z Il valore della traslazione l
48. menta i ritorna al punto 1 E necessario specificare che i dati in ingresso al punto 1 saranno oltre ai dati sensoriali anche i valori in uscito al punto 6 del livello precedente e che i predicati dipendenti da essi saranno rivalutati ad ogni livello Le regole dei vari comportamenti potranno quindi basarsi su predicati che rappresentano i valori proposti dai livelli precedenti Inoltre possono annullare del tutto i valori proposti dai livelli precedenti Ad esempio il comportamento EvitaOstacolo pu annullare ogni spostamento proposto dagli altri comportamenti se posto ad un livello superiore con la seguente regola OstacoloVicino gt amp DEL Velocit Rotazione ANY amp DEL Velocit Tangenziale ANY 26 Sviluppo di un gioco tramite l interazione 2 5 DCDT Device Communities Developement Toolkit di un robot ed il controller Wii Remote 2 5 DCDT Device Communities Developement Toolkit Un aspetto essenziale sotto l aspetto dello sviluppo e dell implementazione di un progetto di robotica consiste nell integrare e far comunicare fra loro i vari componenti che comandano il robot Per soddisfare tale scopo stata necessaria la creazione di un sistema base un middleware che riesca a incorporare i vari strumenti disponibili e che ne garantisca la loro interazione in modo semplice e dinamico Il software DCDT Device Communities Developement Toolkit 4 sviluppato all interno dell Airlab un sistema orientato alla
49. metodo ReceiveLastMessage riceve l ultimo messaggio del tipo specificato ed elimina l esperto this dalla lista degli esperti in attesa di ricezione if ReceiveLastMessage MSG POSITION buffer false gt 0 28 Sviluppo di un gioco tramite l interazione 2 5 DCDT Device Communities Developement Toolkit di un robot ed il controller Wii Remote DE gg E importante precisare che il metodo RunDuty viene eseguito in modo ciclico ad intervalli regolari definiti dalla costante period in fase di inizializzazione dell agente Se questa costante impostata a zero l agente sar eseguito in modo continuo Il tempo di esecuzione di un agente influenzato anche dall istruzione di ricezione dei messaggi ReceiveLastMessage infatti se il secondo parametro impostato TRUE l esecuzione dell agente sar interrotta fino a quando non venga ricevuto un messaggio del tipo inviato Se invece impostato FALSE l esecuzione andr avanti anche se non disponibile nessun nuovo messaggio del tipo richiesto La creazione e l invio dei messaggi saranno trattati nel prossimo paragrafo 2 5 2 La classe StringModuleMember DCDT non impone nessun vincolo sul payload dei messaggi n nessun meccanismo di creazione e parsing dello stesso All interno del progetto MRT stata sviluppata un estensione a DCDT che aggiunge alcune funzionalit per la creazione e l invio dei messaggi Ogni agente viene dichiarato come sottoclasse dell
50. mosso seguendo una traiettoria in larga misura rettilinea sia durante la fase di avvicinamento al Goal sia durante quella di ritorno alla Home Dagli altri grafici si pu rilevare che fra parentesi l intervallo di tempo in secondi in cui l evento avviene 7 il robot effettua una correzione della traiettoria ruotando leggermente 8 15 il robot rallenta vicinanze del Goal trovandosi nelle 15 17 effettua un altra correzione della traiettoria a causa del comportamento AligntoGoal 17 il robot realizza un punto A questo punto prima che il gioco riprenda il robot deve ritornare alla Home ed il comportamento RoboHit attivo Essendo questo comportamento attivo 1 livelli di attivazione di AligntoGoal e GotoGoal non sono pi significativi 17 19 il robot si allinea verso la Home 19 34 il robot raggiunge la Home 35 37 il robot si allinea verso il Goal A questo punto il gioco riprende 100 200 300 400 300 posizione robot 200 100 200 150 100 50 o 50 100 150 200 Possiamo notare come il sistema di localizzazione calcoli la posizione del robot in maniera abbastanza precisa anche se a volte commette degli errori Ad esempio nel punto indicato dalla freccia rossa viene commesso un errore nel calcolo della posizione 54 Sviluppo di un gioco tramite l interazione 4 2 StayInArea di un robot ed il controller Wii Remote 4 2 StayInArea In que
51. n permette di sviluppare i comportamenti in modo modulare e riutilizzabile Inoltre dividendo le condizioni CANDO da quelle WANT permette quando si riutilizza un comportamento in situazioni diverse di riutilizzare le condizioni CANDO modificando solo quelle WANT Questo approccio per non permette di gestire eventuali conflitti che possono crearsi fra comportamenti diversi ad esempio il comportamento EvitaOstacolo potrebbe proporre di ruotare a destra mentre nello stesso momento il comportamento VaiObiettivo potrebbe proporre di girare a 25 Sviluppo di un gioco tramite l interazione 2 4 Logica fuzzy e Mr Brian di un robot ed il controller Wii Remote sinistra compromettendo il risultato voluto dal comportamento EvitaOstacolo Situazioni del genere potrebbero essere evitate modificando opportunamente le condizioni CANDO e WANT associate ai comportamenti ma questo andrebbe contro il principio di sviluppo modulare degli stessi Questo problema viene risolto da Mr Brian introducendo la possibilit di imporre una gerarchia ai vari comportamenti Il ciclo di controllo di Mr Brian risulta quindi il seguente 1 Fuzzyficazione dei dati di ingresso 2 Valutazione del valore di verit dei predicati 3 Scelta dei comportamenti da attivare 4 Valutazione delle regole dei singoli comportamenti del livello i 5 Fusione dei risultati 6 Defuzzyficazione dei risultati 7 sei l ultimo livello allora fine altrimenti incre
52. ncipalmente dai seguenti passi acquisizione dell immagine dalla telecamera libreria libraw1394 identificazione e riconoscimento dei marker nell immagine acquisita ArToolKitPlus calcolo della posizione relativa fra 1 marker visualizzato ed il robot in 6 gradi di libert ArToolKitPlus calcolo della posizione relativa fra 1 marker visualizzato ed il robot in 3 gradi di libert modulo VisionExpert calcolo della posizione del robot in coordinate assolute e filtraggio modulo VisionExpert 2 6 1 ArToolKit ed ArToolKitPlus ArToolKit una libreria sviluppata per applicazione di realt aumentata argumented reality dove sull immagine proveniente dalla telecamera viene disegnato un oggetto tridimensionale in corrispondenza di appositi marker L oggetto sar disegnato sull immagine del mondo reale proprio come se si trovasse nella posizione in cui viene rilevato il marker cio con la stessa posizione ed orientamento del marker Figura 2 12 Nell esempio ArToolKit disegna l oggetto tridimensionale un cubo nella stessa posizione ed orientamento del marker Per fare questo ArToolKit individua e riconosce nel caso ce ne fossero pi di uno i marker nell immagine inviata dalla 30 Sviluppo di un gioco tramite l interazione 2 6 Localizzazione di un robot ed il controller Wii Remote telecamera calcola la posizione e l orientamento relativo fra la telecamera ed i marker disegna sopra i mar
53. o la distanza e l angolo fra il robot e l obiettivo piuttosto che la posizione dove il Wiimote sta puntando che utilizzer per decidere il comportamento da attuare 3 2 2 BrianExpert Il modulo BrianExpert si occupa di ricevere i messaggi provenienti da WilmExpert MSG _TO BRIAN effettuare il parser dei messaggi tramite un parser creato con FLEX stabilire i comandi da inviare ai motori tramite il software Mr Brian vedi sezione 2 4 inviare questi comandi in un messaggio al modulo MotorExpert MSG _TO MOTION I messaggi del tipo MSG _TO BRIAN seguono la sintassi XML descritta nella 2 5 2 inoltre per ogni variabile reale inviata presente il seguente campo lt A gt VALORE AFFIDABILITA lt A gt Il periodo di BrianExpert stato impostato a 0 ma l istruzione per la ricezione dei messaggi di tipo MSG_TO BRIAN eseguita in modo bloccante Quindi BrianExpert verr eseguito solamente in risposta ad un messaggio MSG_TO BRIAN inviato da WiimExpert I comportamenti impostati in Mr Brian saranno analizzati nel dettaglio nella sezione 3 3 Abbiamo inoltre aggiunto al modulo la possibilit di scrivere istante per istante i seguenti valori in un file di log 41 Sviluppo di un gioco tramite l interazione 3 2 Moduli software sviluppati di un robot ed il controller Wii Remote le variabili reali di ingresso 1valori di CANDO e WANT per ogni comportamento i valori reali di uscita I valori
54. o di Tick misurati dagli encoder dall ultima richiesta nonch la velocit espressa in termini di Tick al secondo Figura 2 18 Il robot da noi utilizzato in evidenza la posizione dei 2 gruppi di LED cerchi gialli e quella della telecamera cerchio rosso Sviluppo di un gioco tramite l interazione 3 ROBOWII di un robot ed il controller Wii Remote 3 ROBOWII 3 1 Struttura di gioco 3 1 1 Descrizione Il gioco da noi implementato consiste nel tentare di colpire un obiettivo posto sul robot puntandolo con il Wiimote e premendo il tasto B Per ottenere il punto del robot puntato dal Wiimote il software si basa sui dati provenienti dal sensore ad infrarossi Infatti l obiettivo da colpire posizionato al centro di una barra contenente 2 gruppi di LED E quindi possibile capire se il Wiimote puntato verso l obiettivo in base alla posizione sul piano immagine in cui i LED sono rilevati dal Wiimote stesso come descritto nella sezione 2 2 3 3 Nel caso in cui l obiettivo venga colpito si totalizza un punto Il robot invece per totalizzare un punto deve partendo da una posizione iniziale fissata raggiungere e mantenere per 3 secondi una posizione determinata sul terreno di gioco Contemporaneamente per cercher di evitare di essere puntato dal Wiimote Quando l umano o il robot totalizzano un punto il gioco si ferma e il robot ritorna nella posizione iniziale a quel punto dopo 3 secondi il gioco ripren
55. oll per capire qual il LED che si trova pi in alto vedi figura 6 1 65 Sviluppo di un gioco tramite l interazione APPENDICE A di un robot ed il controller Wii Remote Figura 6 1 Per determinare qual il LED posizionato pi in alto necessario eliminare l effetto della rotazione roll A questo punto possibile numerare le coordinate dei punti gialli cos ottenuti determinando la loro posizione rispetto al centro bianco Invertendo la matrice di rototraslazione restituita da ArGetTransMat si pu ricavare la posizione del Wiimote rispetto al quadrato di LED La misura soggetta agli stessi errori ottenuti utilizzando questa tecnica per la localizzazione del robot Si pu per pensare di correggere la matrice inserendo in essa i valori di rotazione determinati dall accelerometro prima di calcolarne l inversa in modo simile a come nel meccanismo di localizzazione del robot gli angoli B e y venivano determinati durante la fase di calibrazione 66 Sviluppo di un gioco tramite l interazione APPENDICE B di un robot ed il controller Wii Remote APPENDICE B Di seguito elenchiamo il codice da noi usato per configurare Mr Brian Variabili in ingresso DtoGoal DDISTANCE AtoGoal A2DISTANCE DtoCenter CDDISTANCE AtoCenter CADISTANCE IRCenter IRDIR WiiMotePitch PANGLE GAcc ACC ARobot ADISTANCE Random RAN DtoHome DDISTANCE AtoHome ADISTANCE ProposedTanSpeed TAN2SPEED HomeRot
56. ome orientato nel verso giusto Per fare questo quando viene totalizzato un punto il modulo WiimExpert invia il dato Hit con valore 1 che fa si che il comportamento RobotHit venga attivato Quando il robot ha raggiunto l area di Home il modulo WiimExpert invia il dato HomeRot con valore 1 che fa si che il robot si allinei correttamente A questo punto il gioco riprende e i dati Hit ed HomeRot non sono pi inviati Quando il comportamento attivo vengono annullati tutti gli spostamenti proposti dai livelli inferiori 49 Sviluppo di un gioco tramite l interazione 3 3 Configurazione comportamenti Mr Brian di un robot ed il controller Wii Remote 3 3 2 5 StayInArea Questo comportamento evita che il robot esca dall area di gioco Il comportamento agisce in modo diverso nel caso che il robot si trovi all estremo dell area di gioco o al di fuori di essa Nel primo caso viene annullato ogni spostamento tangenziale proposto dai livelli precedenti e imposto uno spostamento in avanti o all indietro a secondo dell orientamento del robot per far si che esso si diriga verso il centro dell area di gioco Nel secondo caso sono annullati anche i movimenti di rotazione il robot viene prima fatto allineare con il centro dell area di gioco e poi mosso verso di essa 50 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote 3 3 Configurazione comportamenti Mr Brian 51 Sviluppo di un gioco tram
57. oni dalle quali visibile pi di un marker contemporaneamente 33 Sviluppo di un gioco tramite l interazione 2 6 Localizzazione di un robot ed il controller Wii Remote 3 4 5 A partire da questo filmato il sistema di calibrazione calcola i parametri B Y e z per ogni marker come media dei valori determinati in tutti i frame in cui lo specifico marker stato inquadrato Per ogni coppia di marker m1 m2 calcolata la matrice di rototraslazione MM che porta dal marker ml a quello m2 Anch essa viene determinata come media delle matrici di rototraslazione fra la specifica coppia di marker calcolate in ogni frame Viene creato un grafo i cui nodi sono i marker rilevati e gli archi il numero di frame in cui ogni coppia stata rilevata contemporaneamente Utilizzando questo grafo possibile ottenere la matrice di rototraslazione MA che porta da ogni marker al sistema di riferimento assoluto Per ogni marker si determina il percorso ottimale che porta da esso al sistema di riferimento assoluto la matrice di rototraslazione sar quindi ottenuta dal prodotto di tutte le matrici MM lungo il percorso Per determinare il percorso ottimale vanno privilegiati i percorsi con numero minore di archi e fra di essi quelli con maggior peso sugli archi In questo modo si sommano il meno possibile gli errori di stima delle matrici MM e si scelgono quelle matrici MM che sono statisticamente pi precise in quanto calcolate su un
58. otSpeed LEFT AND CenterDVery Far OR CenterANearR gt RotSpeed RIGHT CenterAClose gt CenterAFarL CenterAFarR 12 Sviluppo di un gioco tramite l interazione StayInArea di un robot ed il controller Wii Remote BIBLIOGRAFIA 1 A Bonarini M Matteucci and M Restelli A novel model to rule behavior interaction In Proceedings of the 8th Conference on Intelligent Autonomous Systems IAS 8 page 199 206 Amsterdam 2004 IOS Press 2 Andrea Bonarini Giovanni Invernizzi Thomas Halva Labella and Matteo Matteucci An architecture to coordinate fuzzy behaviors to control an autonomous robot Fuzzy Sets and Systems 134 2003 3 Sergio Bittanti Identificazione dei Modelli e Sistemi Adattativi sesta edizione capitolo 5 Pitagora Editrice Bologna 2004 4 Paolo Meriggi Processing and Communication Systems for Device Communities PhD thesis Universit degli studi di Brescia 2005 5 Simone Ceriani Sviluppo di una carrozzina autonoma d ausilio ai disabili motori Tesi di Laurea Specialistica Politecnico di Milano 2006 6 G Schweighofer A Pinz Robust Pose Estimation from a Planar Target TR EMT 2005 01 submitted to IEEE Trans on Pattern Analysis and Machine Intelligence PAMI 05 2005 7 Kato H Billinghurst M Marker Tracking and HMD Calibration for a video based Augmented Reality Conferencing System In Proceedings of the 2nd International Workshop on Augmented Reality
59. r lt StringModuleMember gt agents ifdef WIIM creazione dell esperto WiimExpert WiimExpert pWiim new WiimExpert Dispatch period aggiunta dell esperto alla lista di agenti agents push back pWiim endif assegnamento della lista degli agenti al dispatcher for std vector lt StringModuleMember gt iterator i agents begin i agents end i Dispatch gt AddMember i attivazione di tutti gli agenti creati for std vector lt StringModuleMember gt iterator i agents begin i agents end i Dispatch gt ActivateMember i attivazione del dispatcher Dispatch gt LetsWork Ogni singolo agente dovr implementare i metodi RunInit e RunDuty e seguir una struttura come quella dell esempio seguente costruttore WiimExpert WiimExpert ModuleDispatch kernel int period StringModuleMember kernel period WiimExpert ti distruttore WiimExpert WiimExpert ki il metodo RunInit viene eseguito al momento della creazione dell agente void WiimExpert RunInit cout lt lt nWiimExpert built lt lt endl cout lt lt WiimExpert destroyed lt lt endl nel nostro caso dichiariamo di voler ricevere tutti i messaggi di tipo MSG POSITION AddMessageRequest MSG POSITION LOCAL cout lt lt WiimExpert initialized lt lt endl ti il metodo RunDuty viene eseguito in modo ciclico void WiimExpert RunDuty il
60. r determinare il punto puntato dal Wiimote punto bianco sufficiente calcolare la media delle coordinate dei punti gialli Nel caso che venga rilevato un solo LED ma la libreria stima che ne esistano almeno 2 questa condizione verificata quando esiste un report precedente in cui sono stati rilevati almeno 2 LED e da esso al report corrente sempre stato rilevato almeno un LED allora il centro calcolato come la posizione dell unico LED rilevato a cui sommato un valore di correzione Altrimenti le coordinate del centro saranno semplicemente quelle dell unico LED rilevato Tramite il sensore ad infrarossi anche calcolata la distanza fra il Wiimote e la barra wm gt ir zZ rappresentata con un valore indicativo su scala da 0 a 1023 ottenuto considerando che la distanza fra il Wiimote e la barra inversamente proporzionale alla distanza sul piano immagine a cui vengono rilevati 2 LED A partire da questo valore calcolato sempre in modo indicativo l angolo di yaw wm gt orient yaw 2 2 3 4 Pulsanti Le librerie Wiiuse permettono di rilevare quando un pulsante stato premuto e rilasciato in particolare riferendoci al pulsante A IS JUST PRESSED wm WIIMOTE BUTTON A restituisce TRUE nel primo report inviato dopo la pressione del pulsante IS PRESSED wm WIIMOTE BUTTON A restituisce TRUE in tutti i report in cui il pulsante tenuto premuto IS HELD wm WIIMOTE BUTTON A 17 Svi
61. rado di capire gli spostamenti e il tipo di movimento che il giocatore sta facendo Per questi scopi si potrebbero usare i dati provenienti dall accelerometro dati che per risultano altamente rumorosi e comunque incompleti per poter determinare l orientamento del Wiimote nello spazio soprattutto se in movimento Nonostante queste difficolt tecniche esistono librerie appositamente studiate per riconoscere i movimenti effettuati impugnando il Wiimote che si basano su tecniche di apprendimento e riconoscimento Tramite di esse sarebbe possibile capire se il giocatore si sta muovendo o semplicemente sta ruotando tenendolo fermo il Wiimote e quindi stimare la sua posizione in modo da evitarlo La stima della posizione dell umano potrebbe essere fatta anche utilizzando tecniche pi sofisticate basate sui LED come quella esposta nell appendice A 6l Sviluppo di un gioco tramite l interazione 5 1 Sviluppi del sistema di gioco di un robot ed il controller Wii Remote 5 2 Sviluppi del sistema di localizzazione Il sistema di localizzazione da noi utilizzato basato su marker ed odometria pu essere migliorato in molti suoi aspetti In primo luogo la stima dei parametri z R e y fatta durante la fase di calibrazione per diminuire l errore di calcolo della posizione del robot rispetto ai marker comunque non ottimale in quanto presuppone che una volta effettuata la calibrazione la telecamera rimanga sempre esattamente nella stes
62. re sviluppati di un robot ed il controller Wii Remote 3 2 1 WiimExpert Il modulo WiimExpert gestisce le comunicazioni con il Wiimote nonch la sessione di gioco rappresenta quindi il cuore di tutta l applicazione Il suo periodo stato impostato a 1000 microsecondi 3 2 1 1 Comunicazione con il Wiimote Una volta creato il modulo prova a connettersi con un Wiimote ed entra in ciclo fino a che non ne trova uno disponibile Una volta trovato un Wiimote la connessione ad esso viene segnalata facendo lampeggiare i LED dello stesso Il modulo a questo punto si occupa anche di leggere i valori a noi utili relativi al Wiimote come ad esempio i tasti premuti i dati del sensore ad infrarossi Per calcolare le coordinate del punto puntato dal Wiimote si fa riferimento ai campi wm gt ir ax wm gt ir ay Questi valori sono filtrati applicando ad essi una media mobile sugli ultimi 15 valori e considerando il punto non pi valido solo quando non viene rilevato nessun LED per 15 valori consecutivi La media pesata in modo tale da dare maggior importanza agli ultimi valori rilevati L accelerometro ed il sensore ad infrarossi sono attivati subito dopo la connessione al Wiimote inoltre viene settato un apposito flag nella configurazione del Wiimote wiiuse set flags wm WIIUSE CONTINUOUS Impostando questo il flag il Wiimote invier report ad una frequenza di 100 Hz sia se su di esso rilevato un cambiamento di
63. ropTanSpeedF D ProposedTanSpeed FORWARD propTanSpeedFB D ProposedTanSpeed FAST BACKWARD propTanSpeedB D ProposedTanSpeed BACKWARD CANDO GotoGoal AND P GoalNotTooClose P GoalAligned EscapeIR P IRExist AligntoGoal P GoalNotTooClose RobotHit P HitV Snaking OR P GAccExist P Pointing StayInArea P CenterDFar WANT GotoGoal P GoalNotTooClose EscapeIR P IRExist AligntoGoal P GoalNotAligned RobotHit P HitV Snaking OR P GAccExist P Pointing StayInArea P CenterDFar 70 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote Variabili in uscita Variabili in uscita VERY FAST BACKWARD 30 TanSpeed RotSpeed Insiemi fuzzy delle variabili in uscita TANSPEED ROTSPEED SNG VERY FAST FORWARD 30 SNG VERY FAST_RIGHT 40 SNG FAST FORWARD 10 SNG FAST RIGHT 20 SNG FORWARD 5 SNG RIGHT 10 SNG SLOW FORWARD 3 SNG SLOW RIGHT 5 SNG VERY SLOW FORWARD 1 SNG AHEAD 0 SNG STEADY 0 SNG SLOW LEFT 5 SNG VERY SLOW BACKWARD 1 SNG LEFT 10 SNG SLOW BACKWARD 3 SNG FAST LEFT 20 SNG BACKWARD 5 SNG VERY_FAST_LEFT 40 SNG FAST_BACKWARD 10 Elenco comportamenti level 1 AligntoGoal AligntoGoal rul level 1 GotoGoal GotoGoal rul level 2 Snaking Snaking rul level 3 Escape
64. sa posizione relativa rispetto al robot Si potrebbe pensare ad un metodo di calibrazione diverso oppure all utilizzo di pi marker contemporaneamente per la stima della posizione Calcolando la posizione del robot rispetto a pi marker si potrebbe trovare un dato pi affidabile Attualmente i dati di odometria sono utilizzati solamente quando non disponibile il dato di posizione in arrivo dal sistema di visione invece sarebbe pi opportuno utilizzarli in ogni momento per correggere la posizione stimata dal sistema di visione tramite ad esempio filtro di Kalman 62 Sviluppo di un gioco tramite l interazione 5 2 Sviluppi del sistema di localizzazione di un robot ed il controller Wii Remote 63 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote 64 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote APPENDICE A Determinare la posizione e l orientamento del Wiimote nello spazio non possibile n utilizzando l accelerometro n il sensore ad infrarossi e 2 LED cos come accade durante il suo normale utilizzo Abbiamo cercato di sviluppare un sistema di localizzazione del Wiimote in 6 gradi di libert sfruttando l algoritmo di calcolo della posizione dei marker utilizzato dalla libreria ArToolKit Infatti al posto di un marker possibile utilizzare 4 LED posizionati su uno stesso piano in modo da formare un quadrato Pi precisamente la fun
65. senza del robot VisionExpert calcola la posizione del robot analizzando le immagini provenienti dalla telecamera identificando marker in posizioni note PositionExpert calcola la posizione del robot utilizzando i valori provenienti da VisionExpert e nel caso che questi non siano disponibili utilizza i dati di odometria provenienti da MotorExpert LogExpert visualizza la posizione del robot e la posizione dei LED ad infrarossi rilevata dal Wiimote In figura 3 1 rappresentato uno schema riassuntivo di come essi interagiscono fra di loro 38 Sviluppo di un gioco tramite l interazione 3 2 Moduli software sviluppati di un robot ed il controller Wii Remote 4 a rS SITION MSG_TO_LOG MSG_TO_BRIAN s MSG_POSITION MSG_TO_MOTION i N Di Y MSG_POSITIONP i MSG_FROM_MOTION Figura 3 1 Schema riassuntivo di tutti i moduli da noi utilizzati con i relativi messaggi I moduli ed i messaggi tratteggiati sono quelli sviluppati solo per necessit di sviluppo e messa a punto Specifichiamo subito che l esistenza di 3 moduli diversi per la gestione della posizione dovuta principalmente ad esigenze di sviluppo e messa a punto del sistema il quale nella sua versione finale utilizzer solo il modulo PositionExpert per determinare la posizione del robot Di seguito verranno descritti nel dettaglio 39 Sviluppo di un gioco tramite l interazione 3 2 Moduli softwa
66. so stato utilizzato lo strumento predefinito delle librerie OpenCV utilizzo di un algoritmo di stabilizzazione della stima della matrice di rototraslazione Robust Planar Pose Tracking 6 fra la telecamera ed il marker 2 6 2 Calcolo della matrice di rototraslazione Le librerie ArToolKitPlus tramite la funzione ArGetTransMat restituiscono la matrice di 31 Sviluppo di un gioco tramite l interazione di un robot ed il controller Wii Remote 2 6 Localizzazione rototraslazione del marker rispetto alla telecamera Il procedimento utilizzato descritto in 7 I parametri principali in ingresso a questa funzione sono una struttura dati rappresentante il marker individuato con i seguenti campi principali un numero identificativo del marker l intervallo di confidenza con cui il marker stato rilevato le coordinate sul piano immagine degli spigoli del marker le equazioni delle rette passanti per gli spigoli del marker l orientamento del marker pi precisamente quale spigolo attualmente quello con coordinata x minore nell immagine la matrice di calibrazione della telecamera Dalla matrice di rototraslazione MT restituita possibile calcolandone l inversa TM MT ricavare la matrice di rototraslazione della telecamera rispetto al marker e da essa estrarre le coordinate e l orientamento in termini ad esempio di rool pitch yaw del robot rispetto al marker Mentre la
67. sta sessione abbiamo verificato il funzionamento del comportamento StayInArea che fa si che il robot non si allontani troppo dall area di gioco e nel caso in cui questo accada ad esempio per un temporaneo errore nel calcolo della posizione fa dirigere il robot verso il centro 0 5000 10000 15000 20000 25000 600 AtoCeter AtoGoal 500 DtoCenter DtoGoal 400 300 200 100 100 0 5000 10000 15000 20000 25000 55 Sviluppo di un gioco tramite l interazione 4 2 StayInArea di un robot ed il controller Wii Remote 40 TanSpeed RotSpeed 30 20 10 10 20 30 40 0 5000 10000 15000 20000 25000 Dai grafici possiamo vedere che escludendo il primo secondo in cui il robot in controllo manuale 1 2 Il comportamento StayInArea attivo il robot inizia ad allinearsi con il centro AtoCenter diminuisce 2 5 Il robot incomincia a muoversi lentamente verso il centro DtoCenter diminuisce e contin ad allinearsi ad esso AtoCenter tende a 0 5 Non essendo pi attivo il comportamento StayInArea il robot effettua una piccola correzione orientamento che lo porta ad allinearsi verso il Goal invece che verso il centro 5 13 Il robot gi sostanzialmente allineato verso il Goal quindi si dirige verso il Goal ua di 13 Il robot si allinea in modo migliore verso il Goal si pu notare che il livello di GotoGoal scende intorno al secondo 13 appunto a causa del
68. stato ad esempio viene mosso ma anche se non viene rilevato nulla Questa scelta si resa molto utile in primo luogo fa si che tutti i segnali in arrivo dal Wiimote vengano campionati dallo stesso ad una frequenza ben precisa quindi una volta ricevuti non necessario effettuare nessuna misura per calcolare l intervallo di tempo trascorso fra 2 report si supponga ad esempio di voler stimare la posizione integrando i segnali di accelerazione Tale misura risulterebbe in ogni caso imprecisa a causa dei ritardi di comunicazioni dovuti al protocollo Bluetooth e al sistema operativo 3 2 1 2 Ciclo principale L altro motivo che ci ha portati a impostare il flag WIIUSE CONTINUOUS risiede nella struttura generale del software da noi sviluppato I moduli principali si attivano in sequenza a partire dal messaggio MSG TO BRIAN inviato da WiimExpert Per questo motivo ragionevole temporizzare lo stesso in modo preciso inviando messaggi ad intervalli regolari indipendentemente dalla variazione o meno dello stato del Wiimote D altra parte temporizzare in modo arbitrario WiimExpert indipendentemente dalla comunicazione con il Wiimote avrebbe portato problemi alla gestione dello stack Bluetooth dei messaggi Il ciclo principale di WilmExpert risulta strutturato secondo il seguente schema se ricevuto messaggio relativo alla posizione del robot memorizza la nuova posizione del robot se wiiuse poll wm 1 FALSE return nessun
69. te accendendo in sequenza i LED Quando viene totalizzato un punto il Wiimote vibra per 2 secondi e i LED mostrano la differenza di punteggio fra il giocatore ed il robot Quando il gioco riprende una leggera vibrazione avverte il giocatore Quando il giocatore preme il tasto B senza per colpire il robot avverte una leggera vibrazione 37 Sviluppo di un gioco tramite l interazione 3 1 Struttura di gioco di un robot ed il controller Wii Remote 3 2 Moduli software sviluppati Lo sviluppo del software di controllo del robot ci ha portato allo sviluppo di vari moduli che abbiamo poi integrato e fatto comunicare fra loro tramite il software DCDT Di seguito con il termine modulo si intender un agente come quelli descritti nella sezione 2 5 e tutti i file contenenti funzioni ed oggetti utilizzati da esso I moduli da noi sviluppati sono i seguenti WiimExpert gestisce le comunicazioni con il Wiimote e il ciclo principale di gioco BrianExpert in base ai dati ricevuti da WiimExpert stabilisce il comportamento che il robot deve avere tramite la valutazione di regole in logica fuzzy utilizzando Mr Brian MotorExpert invia i comandi ricevuti in termini di velocit angolare e tangenziale alla scheda di controllo invia inoltre i dati relativi all odometria PositionDummyExpert calcola la posizione del robot basandosi sui comandi in arrivo BrianExpert E usato per verificare l efficacia dei comportamenti in as
70. te wiluse_find vengono cercati per CONNECTION TIME secondi Wiimote in discoverable mode a cui connettersi infine la funzione wiiuse_connect completa la connessione e restituisce il numero di Wiimote a cui ci si connessi Le funzioni wiiuse motion sensing e wiiuse set ir abilitano rispettivamente l accelerometro e il sensore ad infrarossi nell esempio solo per il primo Wiimote rilevato Il ciclo principale del programma va strutturato nel seguente modo while 1 if wiiuse poll wiimotes MAX WIIMOTES x A wiiuse cleanup wiimotes MAX WIIMOTES return 0 E necessario utilizzare un loop infinito in quanto le librerie non implementano nessun meccanismo ad 13 Sviluppo di un gioco tramite l interazione 2 2 Librerie di un robot ed il controller Wii Remote eventi o multithreading La funzione wiiuse poll restituisce il numero di Wiimote su cui avvenuto un qualche evento Dopo l esecuzione di questa funzione la struttura dati rappresentante un Wiimote aggiornata con il suo stato corrente Ad esempio wiimotes 0 gt event assumer il valore corrispondente all evento appena generato su di esso oppure wiimotes 0 gt orient roll restituisce l angolo di roll attuale Di seguito supporremo di essere collegati ad un singolo Wiimote e ci riferiremo ad esso con la variabile struct wiimote t wm 2 2 3 2 Dati relativi all accelerometro Per accedere ai dati relativi alle accelerazioni s
71. timata tramite i dati di odometria con la seguente formula t tempo trascorso dall ultimo messaggio di odometria nuovo angolo vecchio angolo velocit rotazione t nuovo x vecchio x velocit tangenziale cos nuovo angolo t nuovo y vecchio y velocit tangenziale sin nuovo angolo t Abbiamo inoltre ritenuto opportuno considerare non valida la posizione dopo 10 secondi che non vengono ricevuti messaggi di posizione valida da VisionExpert in quanto dopo questo intervallo di 44 Sviluppo di un gioco tramite l interazione 3 2 Moduli software sviluppati di un robot ed il controller Wii Remote tempo l errore accumulato dall odometria risulta considerevole 3 2 7 LogExpert Abbiamo creato un modulo il cui scopo principale quello di visualizzare la posizione del robot e i dati provenienti dal sensore ad infrarossi Questo ci servito principalmente nella fase di sviluppo e messa a punto del sistema in quanto ci ha permesso di sviluppare i comportamenti senza necessariamente verificarli con il robot Inoltre ci ha permesso di verificare e calibrare il sistema di posizionamento Il modulo crea una finestra grafica utilizzando le librerie OpenGL Nella parte superiore della finestra appaiono 1 dati rilevati dal sensore ad infrarossi vedi sezione 2 2 3 3 in particolare 1 triangoli rossi rappresentano la posizione rilevata dei LED 1triangoli gialli rappresentano la posizione degli stess
72. toCenter FAR CenterDVery Far D DtoCenter VERY_FAR CenterAClose D AtoCenter CLOSE CenterANearL D AtoCenter NEARL CenterANearR D AtoCenter NEARR D AtoCenter FARL D AtoCenter FARR CenterDNear CenterDFar CenterAFarL CenterAFarR CenterANearF D AtoCenter NEARF CenterANearBL D AtoCenter NEARBL CenterANearBR D AtoCenter NEARBR CenterAFarL D AtoCenter FARL CenterAFarR D AtoCenter FARR CenterAFarM OR P CenterAFarL P CenterAFarR CenterANearB OR P CenterANearBL P CenterANearBR CenterAFar OR P CenterAFarL OR P P CenterAFarR CenterANear P CenterANearR HHRHH HEHE HEHE HEHE HEHE HE HEHE HEHE HHHH HHHHHHHHHHHHHHHHHHHHHHHHHHH CenterANearL Probabile puntamento Pointing D WiiMotePitch POINTING aaa a ala aaa aie a ala ai ee aiainia e iaieiaie e aiaiiaia iaia ree iaia eat accelerazione globale GAccWeak D GAcc WEAK GAccStrong D GAcc STRONG RandomPlus D Random PLUS RandomMinus D Random MINUS GAccWeakL AND P GAccWeak P RandomPlus GAccWeakR AND P GAccWeak P RandomMinus GAccStrongL AND P GAccStrong P RandomPlus GAccStrongR AND P GAccStrong P RandomMinus GAccExist D GAcc EXIST VIa aia Riga aaa daniele a diana reo di iaiaie ai iare a niaiaieie diarree iaia Predicati multilivello propTanSpeedFF D ProposedTanSpeed FAST_FORWARD p
73. ui stata montata una sorgente IR Puntando un Wiimote verso uno schermo di proiezione o su un display LCD si pu creare una lavagna interattiva a basso costo Dato che un Wiimote pu tracciare fino 4 punti IR si possono utilizzare fino a 4 penne Virtuali utilizzo di una penna IR Il Wiimote punta verso lo schermo calibrazione della lavagna utilizzo della lavagna interattiva Figura 2 8 Sviluppo di un gioco tramite l interazione 2 3 Altri utilizzi del Wiimote di un robot ed il controller Wii Remote 2 3 3 Wiinstrument Wiinstrument una applicazione che consente di utilizzare il Wiimote con il Nunchuk per simulare una batteria elettronica Tale applicazione sfrutta i dati rilevati dagli accelerometri per successivamente identificarne un possibile movimento di percussione e nel caso di positivit sfrutta un driver midi per generare un suono tipico della batteria 20 Sviluppo di un gioco tramite l interazione 2 3 Altri utilizzi del Wiimote di un robot ed il controller Wii Remote 2 4 Logica fuzzy e Mr Brian Per sviluppare i comportamenti del robot abbiamo deciso di programmare gli stessi utilizzando regole espresse tramite logica fuzzy In particolare ci siamo appoggiati al software Mr Brian Multilevel Ruling BRIAN 1 estensione di BRIAN BRIAN Reacts by Inferring ActioNs 2 sviluppato dal Politecnico di Milano all interno del progetto MRT La logica fuzzy per un introduzione ad essa si
74. ui 3 assi sufficiente utilizzare wm gt accel x wm gt accel y wm gt accel z Questo il valore raw rilevato il valore in termini di forza di gravit viene restituito invece da wm gt gforce x wm gt gforce y wm gt gforce z Questo valore ottenuto dalle librerie interpolando linearmente il dato raw con i valori di 0g e 1g memorizzati nel Wiimote Supponendo il Wiimote non soggetto ad accelerazioni esterne Y l unica rilevata quella di gravit In questo caso possibile Pitch determinare l orientamento del Wiimote in base a su che assi essa 7 viene rilevata Riferendoci alla convenzione adottata in figura 2 3 l angolo di roll ottenibile con la funzione atan2 x z quello di pitch con atan2 y z e l angolo yaw con atan2 x y dove x y z sono le accelerazioni di gravit sui rispettivi assi Queste equazioni per restituiscono valori affidabili solo sotto particolari condizioni ad esempio in caso di utilizzo normale cio impugnando il Wiimote perpendicolarmente alla forza di gravit e con i pulsanti verso l alto figura 2 4 Wiimote 1 una variazione di yaw non provoca nessun cambiamento significativo nell accelerazione rilevata sugli assi x e y Per questo motivo il calcolo di questo angolo risulta poco significativo e non implementato nelle librerie L angolo di yaw invece determinato con l utilizzo del Figura 2 3 La convenzione sensore ad infrarossi vedi sezione 2 2 3 4 sugli
75. ungo z cos come quello delle rotazioni intorno e Y pu essere considerato costante per ogni marker Per questo motivo durante la fase di calibrazione del sistema vedi sezione 2 6 3 questi parametri saranno stimati per ogni singolo marker e ritenuti fissi durante i movimenti del robot Il calcolo delle coordinate del robot rispetto al marker non sar pi effettuato calcolando l inversa della matrice MT ma della matrice MT ottenuta sostituendo i valori B e y e quello della traslazione lungo z predeterminati durante la procedura di calibrazione 2 6 3 Calibrazione dei marker Prima di poter utilizzare il sistema di localizzazione necessario effettuare la sua calibrazione Questa procedura ha 2 scopi principali stimare le posizioni relative rappresentate come matrici di rototraslazioni fra ogni marker stimare le posizioni relative fra ogni marker ed un determinato sistema di riferimento assoluto stimare i parametri di rotazione intorno all asse x ed y e delle traslazione z fra ogni marker ed il robot La procedura composta dalle seguenti fasi 1 Per prima cosa si imposta il sistema di riferimento assoluto Per fare questo si sceglie un marker come principale e si imposta la matrice di rototraslazione che porta da esso al sistema di riferimento assoluto 2 Siregistra un filmato ottenuto spostando il robot in modo da inquadrare durante il suo percorso tutti i marker cercando di privilegiare quelle posizi
76. vello 2 EscapeIR si occupa di muovere il robot in modo tale da evitare il puntamento col Wiimote da parte dell umano livello 3 RobotHit se il robot o l umano totalizzano un punto questo comportamento fa tornare il robot nella sua posizione iniziale livello 4 StayInArea evita che il robot esca dall area di gioco livello 5 Di seguito li analizzeremo uno per uno nel dettaglio 3 3 2 1 AlignToGoal e GotoGoal Questi comportamenti sono situati al livello pi basso della scala gerarchica di Mr Brian Infatti abbiamo deciso che il robot deve tentare di totalizzare un punto solo quando non ha nessun altro obiettivo In particolare evitare di essere colpito prioritario rispetto a raggiungere il Goal I due comportamenti agiscono contemporaneamente in modo sinergico uno allineando il robot verso il Goal e l altro facendolo spostare verso di esso Le condizioni di CANDO e WANT per AlignToGoal sono AlignToGoal CANDO P GoalNotTooClose AlignToGoal WANT P GoalNotAligned Queste condizioni impongono che il robot pu allinearsi al Goal se non gi allineato ad esso o se non troppo vicino ad esso Questa scelta serve ad evitare che il robot cerchi di allinearsi al Goal quando in pratica si trova gi su di esso Le condizioni di CANDO e WANT per GotoGoal sono GotoGoal CANDO AND P GoalNotTooClose P GoalAligned GotoGoal WANT P GoalNotTooClose Queste condizioni fanno si che il robot si avvicini al Goal
77. zione ArGetTransMat della libreria ArToolKit richiede in ingresso una struttura dati che definisce la posizione sul piano immagine del marker Nel nostro caso invece riempiremo questa struttura dati con le coordinate dei LED rilevate dal sensore ad infrarossi del Wiimote In particolare ArGetTransMat richiede i seguenti dati coordinate dei 4 spigoli del marker da noi saranno sostituite con le coordinate dei LED rilevate dal sensore ad infrarossi wm gt ir dot i rx wm gt ir dot 1 ry equazioni nella forma ax by c 0 delle rette passanti per gli spigoli del marker nel nostro caso verranno calcolate le equazioni passanti per le coordinate dei LED rilevati coordinate del centro del marker da noi sostituite con coordinate con wm gt ir ax wm gt ir ay un parametro che indica quale dei 4 angoli si trova pi in altro nell immagine e determina quindi l orientamento del marker un parametro che indica la lunghezza reale di un lato del marker da noi sostituito con la distanza a cui abbiamo posizionato i LED Nel nostro caso determinare quale dei 4 LED si trovi pi in alto nell immagine non facile come nel caso di marker dove salvo simmetrie ogni angolo ben identificabile Infatti il Wiimote non implementa nessun meccanismo per poter distinguere un LED da un altro e l ordine in cui vengono restituiti dalle librerie arbitrario Per possibile sfruttare l informazione dell accelerometro angolo di r
Download Pdf Manuals
Related Search
Related Contents
User manual DRS-I Dynamic Relay Station type I importante Omega 150 - Outback Direct K001RB K002RG标准中英文说明书.cdr Copyright © All rights reserved.
Failed to retrieve file