Home
Visualizza/apri - POLITesi
Contents
1. Le ulteriori due batterie da 12V ali mentano rispettivamente il sensore Kinect e il router Linksys utilizzato per il collegamento remoto con il robot La ripartizione cosi effettuata garantisce un autonomia di diverse ore a pieno utilizzo 29 3 1 7 Sonar E 2 equipaggiato anche di una cintura sonar utilizzata per misu rare la distanza tra un oggetto ed il trasmettitore stesso La cintura sviluppata ed assemblata in AIRLab dotata di 7 sensori Maxbotix EZ 2 Fig 3 6b collegati ad un micro controllore che si occupa di se quenziare i sensori e trasmettere ai nodi le distanze misurate a Distribuzione sensori b Sensore Maxbotix EZ 2 Figura 3 6 Sonar E 2 I dispositivi utilizzati sono in grado di rilevare la presenza di ogget ti o persone ad una distanza compresa tra 0 e 6 metri Questi sensori vengono utilizzati per controllare se una persona situata accanto al robot mentre questo sta procedendo in direzione dello stand Le limi tazioni fisiche dei dispositivi quali il raggio di trasmissione e ricezione degli impulsi ca 20 hanno richiesto un riposizionamento dei sen sori che sono stati situati a coppie di tre ai lati del corpo Fig 3 6a lasciando un solo sensore anteriormente quest ultimo viene utilizzato come sensore aggiuntivo al rilevamento di ostacoli frontali 3 1 8 Kinect Il robot infine equipaggiato con un sensore Kinect posizionato sopra la testa del robot Originariamente conosciuto
2. else if result gt action_id 3 robot action_completed initialize 75 Pp else if state toString ABORTED af if result gt action_id 3 robot action_aborted initialize La funzione navDoneCallback permette quindi di passare tra i vari step presenti nel modulo in questione selezionando di volta in volta il passo successivo da compiere Inoltre il modulo stato dotato di una componente emotiva basata su una funzione che valuta le azioni che il robot riesce a compiere con successo e quelle che invece falliscono string temp_status robot status if robot action_aborted robot action_completed robot status normal_ else if robot action_completed gt robot action_aborted robot status happy_ if robot action_completed robot action_aborted gt 3 robot status good_ i else if robot action_aborted gt robot action_completed robot status angry_ if robot action_aborted robot action_completed gt 3 robot status frustrated_ if strcmp temp_status c_str robot status c_str 0 robot_talk get_random_speech robot status voiceClient gt waitForResult i7 Questa valutazione viene valutata ad ogni iterazione del nodo e il robot esprime differenti comportamenti definiti come frasi e movimenti del collo e del volto per manifestare il suo stato a seguito del cambia mento di stato della funzione Questi stati vengono poi
3. stato risolto utilizzando pi set point nella risalita e nella discesa del movimento adottando un andamento a rampa per le velocit dei servomotori che si tradotto in un movimento pi fluido e naturale 6 3 Il modulo e2_voice Il modulo e2_voice come annunciato in precedenza si occupa della ge stione del software di sintesi vocale utilizzato La definizione dell azione di tale modulo riportata all interno del file Voice action contenuto nella cartella action del modulo in analisi goal definition uint8 action_id string text uint8 neck_action uint8 face_action result definition uint8 action_id string result 83 feedback uint8 action_id string status Listing 6 3 Implementazione Voice action Come si pu osservare dal dettaglio implementativo sopra riportato il goal di tale azione definito ricorrendo a quattro variabili e action id questo parametro identifica l insieme di azioni da ri chiamare Questo consente di annullare cod 0 una azione corrente o di sintetizzare una frase ricevuta dal nodo cod 1 e text questo parametro identifica la stringa di testo che deve essere sintetizzata dal nodo in modo da essere convertita in un file audio e essere poi riprodotta dal nodo e neck_action definisce una specifica azione che deve essere com piuta dal robot durante la riproduzione di una frase e face_action identifica quale espressione facciale deve essere as sociata alla frase riprodott
4. e Parlato l interazione con un robot per mezzo della voce sia per dare istruzioni che per ricevere risposte costituisce uno degli obiettivi fondamentali nello sviluppo di interfacce uomo robot Con l aumentare del livello di complessit nei robot e la possi bilit di eseguire compiti specifici il linguaggio naturale appare un alternativa pi che desiderabile rispetto alla selezione di un co mando tramite tastiera o attraverso la visualizzazione su di uno schermo e Gesti il riconoscimento dei gesti umani un area di ricerca in continuo sviluppo e diversi studi si sono interessati al ruolo della gestualit nell interazione uomo robot proponendo innumerevoli tecniche di riconoscimento e relativa produzione di gesti in fase di conversazione e collaborazione e Espressioni Facciali nell ambito dell interazione uomo robot la capacit di riconoscere e produrre espressioni facciali permette al robot di allargare le proprie capacit comunicative consenten dogli da un lato di interpretare le emozioni che si dipingono sul volto del proprio interlocutore dall altro di tradurre i propri in tenti comunicativi in espressioni da modellare sulla propria faccia robotica 12 Un esempio ricorrente in letteratura in merito alla capacit di un robot di produrre espressioni facciali Kismet Fig 2 5a poi sostituito da Leonardo un robot costruito presso lAr tificial Intelligence Laboratory del MIT 11 Grazie ai 15 gradi
5. 1 message_filters Subscriber lt EncoderStamped gt sub_enc_2 nh enc_2 1 message_filters Subscriber lt EncoderStamped gt sub_enc_3 nh enc_3 1 TimeSynchronizer lt EncoderStamped EncoderStamped EncoderStamped gt sync sub_enc_1 sub_enc_2 sub_enc_3 10 sync registerCallback boost bind amp encoderCallback _1 _2 _3 ros Subscriber sub_cmd_vel nh subscribe vel_topic 10 getRobotVelocity 46 ros Publisher odom_pub nh advertise lt nav_msgs Odometry gt odom 1 Listing 4 1 Sincronizzazione messaggi encoder Una volta ricevuti tutti i dati necessari viene espletato il calcolo della nuova posizione mediante le formule 4 5 e 4 6 I valori ottenuti vengono quindi trasmessi sul topic odom e verranno in seguito utiliz zati dal modulo AMCL per stimare la posizione del robot sulla map pa associando queste informazioni con quelle provenienti dal sensore Kinect 4 2 3 AMCL AMCL Adaptive Monte Carlo Localization 18 un sistema di loca lizzazione probabilistico per robot che si muovono su mappe 2D Questo pacchetto implementa l approccio Monte Carlo che utilizza un filtro di particelle per determinare la posa del robot rispetto ad una mappa utilizzando i dati provenienti dai sensori in questo caso Kinect per effettuare una stima riguardo alla posizione del robot L utilizzo di questo sistema deriva dal fatto che il robot non pu sapere con certez za la sua posizione attuale per questo mediante un
6. Che cosa parla neck_action 0 face_action 2 Speech id joke_2 text Sapete perch U FFFD la neve cade a fiocchi e non a nodi Perch U FFFD se cadesse a nodi farebbe molta pi U FFFD fatica a sciogliersi neck_action 6 face_action 2 Speech id joke_3 text Va bene va bene Lo capisco che non sono accettato dal fatto che non sanguino neck_action 0 face_action 2 Speech id joke_4 text Ero andato a comprare dei chiodi di garofano Devo piantare la mia fidanzata e volevo dirglielo con i fiori neck_action 5 face_action 2 Listing 6 6 Frasi di E 2 86 Capitolo 7 Verifiche Sperimentali L esperienza il tipo di insegnante pi difficile Prima ti fa l esame poi ti spiega la lezione Oscar Wilde In questa sezione verranno illustrati i risultati ottenuti mediante le prove svolte sul robot al fine di valutare pregi e difetti del sistema di controllo e per determinare l accuratezza dei modelli impiegati nella sua realizzazione Verranno quindi discussi e valutati i sistemi di visione e di navi gazione utilizzando come fonte di conoscenza l esperienza maturata durante i vari test condotti 7 1 Valutazione del Sistema di Navigazione La valutazione del sistema di navigazione tiene in considerazione l af fidabilit del sistema di localizzazione e la percentuale di fallimenti dovuti a collisioni con oggetti o ostacoli Il robot riesce a fronteggiare senza problemi ostacoli frontal
7. con il nome in codi ce di Progetto Natal il Kinect un dispositivo per il rilevamento dei movimenti progettato e commercializzato da Microsoft come periferica aggiuntiva per la console Xbox360 al fine di permettere all utente di interagire con essa senza l utilizzo di alcun controller ma tramite gesti 30 e comandi vocali Figura 3 7 Microsoft Kinect La scelta di utilizzare Kinect da ricercarsi nelle potenzialita di mo tion sensing di tale dispositivo Questo apparato mette a disposizione numerosi sensori spesso utilizzati nell ambito della visione artificiale quali una camera RGB un sensore di profondita una camera ad infra rossi un array di microfoni un accelerometro ed un piede motorizzato che ne permette il movimento Il posizionamento invece stato dettato dalla necessit di visualizzare nel migliore dei modi il volto dell utente con cui il robot dovr interagire facilitando quindi l analisi dei com portamenti e delle espressioni dell interlocutore Tale posizionamento stato stimato anche sulla base dell angolo di veduta del dispositivo che di circa 57 sul piano orizzontale e 43 sul piano verticale il piede mo torizzato infine permette di inclinare il dispositivo di un angolo di 60 rispetto all asse verticale Inoltre il sensore viene utilizzato per ricevere informazioni riguardo all ambiente e agli ostacoli permettendo al robot di localizzarsi senza dover utilizzare costosi senso
8. considerata semplicemente un input per futuri sviluppi ABORT AH B AO RT ARE AAR ARE 2 ER DO D UW E_TWO IY T UW FEEL ip INC 15 FIND FAYND GO G OW HELL HH EH L HELLO HH AH L OW HELLO 2 HH EH L OW HOW HH AW JOKE JH OW K LAW L AO 77 LAW 2 L AA NEWS N UW Z NEWS 2 N Y UW Z PEOPLE P IY P AH L TELL Wiel Ie THANK TH AE NG K YOU Y UW Listing 6 1 File dizionario Il vocabolario implementato qui sopra stato generato automatica mente da un parser grammaticale e prevede il riconoscimento di alcune parole con cui possibile interagire con il robot Accanto ad ogni pa rola sono associati i fonemi propri della parola che verranno usati dal riconoscitore sphinx per determinare la parola pronunciata Le informazioni provenienti dal microfono vengono quindi elabora te dal nodo pocketphinax e vengono inviate sul topic recognizer output a cui si sottoscrive il modulo e2_brain questi dati verranno successi vamente processati dalla funzione get VoiceCommands che le elaborer per determinare quale azione o risposta compiere ros Subscriber subVoiceCommand nh subscribe recognizer output 10 getVoiceCommands Nel listato seguente possibile avere un idea di come vengano rico nosciuti i comandi dal robot std size_t found command data find e_two if found std string npos if ROS_ERROR e2_brain Voice Ho ricevuto un comando found command data find find people if found
9. contenitori o ad un sistema di movimentazione intelligente in grado di muoversi in uno stabilimento dove circolano persone altri mezzi di movimentazione e spesso le aree sono occupate da merci 21 Un area di applicazione emergente quella dei veicoli autonomi co me sommergibili veicoli terrestri su ruote o cingolati o veicoli volanti Un sistema di visione artificiale pu sia supportare un pilota di que sti veicoli in varie situazioni sia occuparsi dell intera navigazione nel caso di veicoli fully autonomous In questo caso importante saper riconoscere gli ostacoli e riuscire a produrre una mappa della zona cir costante per capire dove sia possibile muoversi Esempi in questa area sono warning system nelle automobili sistemi per l atterraggio auto matico degli aerei o sistemi per la guida automatica di autovetture Quest ultima tecnologia anche se studiata e prodotta non ha ancora raggiunto i costi e l affidabilita sufficienti per essere lanciata sul mer cato Le applicazioni militari sono probabilmente una delle pi grandi aree che sfrutta i benefici della visione artificiale anche se solo una pic cola parte del lavoro svolto in questo ambiente viene reso pubblico Esempi sono i sistema di guida di missili e droni sugli obiettivi Una delle maggiori e promettenti aree quella medica Quest area caratterizzata dall estrazione di informazioni dall immagine con l in tento di effettuare la diagnosi di un paz
10. da seguire un global planner un local planner e un recovery behaviours Figura 4 5 Il primo viene utilizzato per generare il percorso che dovr seguire il robot a seguito della ricezione di un punto obiettivo mentre il secondo verr utilizzato per generare la cinematica di movimento che permetta alla base di seguire la traiettoria precedentemente generata Infine il modulo recovery behaviors gestisce le situazioni di stallo in cui il robot impossibilitato a muoversi generando delle traiettorie per liberarsi e riprendere il percorso originario 48 move_base_simple goal nav_core interfaces geometry_msgs PoseStamped global planner global costmap nav_core BaseGlobalPlanner internal nav_msgs Path recovery_behaviors nav_core RecoveryBehavior local planner lt local_costmap nav_core BaseLocal Planner cmd_vel geometry_msgs Twist nav_core plugin interface Figura 4 5 Architettura Path Planner 4 3 1 Global Planner Il Global Planner fornisce un interfaccia per pianificare una traiettoria globale che il robot dovr seguire per raggiungere un punto obietti vo Tuttavia il percorso generato a volte risulta troppo ottimistico ad esempio una traiettoria potrebbe trovarsi in un uno spazio non suffi cientemente ampio da permettere il passaggio del robot Come planner globale stato utilizzato navfn 2 Il pianificatore opera su una cost map per trovare un piano di costo minimo da un
11. del laboratorio airlab2 utilizzando la password interna L accesso al sistema ottenuto tramite connessione ssh con l ac count AIRLab2 e la solita password A 2 Compilazione sorgenti L intero progetto pu essere scaricato dal repository git disponibile al l indirizzo https github com boottp e2 Il progetto deve essere scaricato nella cartella src del proprio work space catkin Per farlo basta lanciare il seguente comando all interno della cartella git clone https github com boottp e2 A 2 1 Compilazione ann library Per compilare la libreria che elabora le informazioni basta digitare i seguenti comandi all interno della cartella appena creata e2 cd e2 ann ann build make installed cp ann lib R A 2 2 Compilazione Sistema L intero sistema stato sviluppato con il nuovo sistema catkin quindi la compilazione si effettua compilando il workspace Entrare nel proprio workspace catkin roscd e digitare il seguente comando catkin_make Una volta terminata la compilazione il sistema pronto per l utiliz ZO A 2 Compilazione sorgenti 99 A 2 3 Creazione Ambiente di lavoro La creazione della mappa dell ambiente di lavoro deve essere effettuata prima di poter avviare il robot Questa operazione resa disponibile tramite lo script collegare il joystick del robot e digitare roslaunch e2_launch e2_robot_ambient_map launch Una volta avviato si aprir il simulatore rviz che mo
12. ek a e ee Verifiche Sperimentali 7 1 Valutazione del Sistema di Navigazione 7 2 Valutazione del Sistema di Visione 7 3 Variazioni Luminose 002 7 4 Valutazioni generali La ed ek a Conclusioni e Sviluppi futuri Documentazione del software A 2 Compilazione sorgenti A 2 1 Compilazione ann library A 2 2 Compilazione Sistema A 2 3 Creazione Ambiente di lavoro A 2 4 Avvio del Sistema A 2 5 Avvio processo interazione A 3 Simulatore aoe a E a 61 62 65 67 69 73 74 79 83 87 87 88 89 90 91 Capitolo 1 Introduzione you just can t differentiate between a robot and the very best of humans Isaac Asimov I Robot Le interazioni uomo robot sono da sempre oggetto di discussione sia nel mondo accademico sia in quello letterario e nel corso degli anni si sono lentamente inserite nella vita di tutti i giorni spesso modifican do il nostro rapporto con il quotidiano Nonostante i robot siano stati tipicamente utilizzati in attivit statiche e ripetitive oggi sono sempre pi coinvolti in compiti complessi e meno strutturati in particolare nella collaborazione e nell interazione con l uomo In questo ambito si colloca il presente elaborato che vuole mostrare un sistema di control lo autonomo per un robot da esibizione tale E 2 verranno descritte le azioni che la macchina in grado di compiere e com
13. in avanti I moduli adiacenti vengono utilizzati per permettere movimenti di lateralit con una inclinazione di 30 sia per il lato destro che per quello sinistro Da ultimo il mo dulo intermedio utilizzato per accompagnare gli spostamenti frontali e posteriori conferendo un movimento pi naturale Figura 3 3 Visualizzazione grafica collo E 2 La testa del robot contiene 4 servomotori per muovere gli occhi 2 per le sopracciglia uno per la bocca ed uno per favorire la rotazione della testa di E 2 Al suo interno posizionata la scheda utilizzata per il controllo dei servomotori la Pololu Mini Maestro Il dispositivo permette di memorizzare differenti posizioni nel tempo degli attuatori in grado di replicare azioni che si traducono in espressioni facciali e movimenti del collo 28 Figura 3 4 Moduli collo E 2 3 1 5 Dispositivi Audio Il robot si avvale di un unico altoparlante portatile Western WS Q9 Quest ultimo sostituisce gli speaker precedentemente montati sulla mac china migliorando l ingombro e la resa dell audio e favorendo un rispar mio a livello energetico garantito dalla batteria interna al dispositivo Figura 3 5 Altoparlante WSTER WS Q9 3 1 6 Alimentazione Il robot utilizza una corrente continua a 24V basata su una coppia di batterie al piombo da 12V collegate in serie per alimentare i mo tori della base un altra coppia alimenta il computer di bordo ed i servomotori del collo di E 2
14. info user lost true init_detect_time ros Time now else ROS_INFO Navigation Sonar Utente a sinistra guest_user_info_ user_lost false init_detect_time ros Time now yp else ROS_ERROR Navigation Sonar User Lost by LEFT sonar guest_user_info_ user_lost true La funzione riceve costantemente informazioni dal sonar valutando le distanze percepite Si considera che la persona si trovi accanto al 57 robot quando la distanza misurata risulta inferiore ai 45 cm Inoltre stato introdotto un meccanismo che faciliti il rilevamento di falsi po sitivi dovuti alla presenza di muri L idea di fondo che i sonar non sono in grado di percepire contemporaneamente la persona a causa del la loro posizione e dell angolo di ricezione Per questo motivo quando tutti e tre i sensori rilevano la stessa distanza con un margine di errore di 5cm sar molto probabile che questa misurazione sia dovuta alla presenza di un muro Quando il robot rileva la mancanza della persona dovuta alla man cata percezione della persona in un tempo di 3 secondi viene lan ciato il meccanismo di UserDetection descritto dalla funzione Naviga tion user_detectTimer che permette al robot di ritrovare la persona ROS_INFO Navigation Checking user presence First Stop every robot action irobot_ gt cancell_all_goal Remove current navigation goal path_planned_ false user_r
15. interazione Capitolo 6 Processo di interazione vengono descritte le componenti che collaborano al processo di interazione che il robot stabilisce con una persona descrivendo dettagliatamente i nodi coinvolti Capitolo 7 Verifiche Sperimentali vengono presentati i risultati otte nuti nei test effettuati allo scopo di valutare il processo di navigazione e di visione del robot Vengono infine mostrati possibili accorgimenti attraverso i quali sarebbe possibile aumentare il livello di coinvolgimen to della persona durante l interazione Da ultimo nell appendice A viene riportato il manuale dell utente per l utilizzo del software e del simulatore adoperato nelle varie fasi di svi luppo 10 Capitolo 2 Stato dell arte Imparare senza pensare fatica perduta pensare senza imparare perico loso Confucio Dialoghi Gli sviluppi tecnologici degli ultimi decenni unitamente ai progressi nel campo dell intelligenza artificiale e dell elaborazione del linguaggio naturale hanno portato ad un sostanziale sviluppo nel campo della ro botica con applicazioni sempre pi orientate verso l interazione uomo robot Uno dei principali sviluppi ha visto la graduale introduzione dei ro bot all interno della societ con impatto significativo nei vari campi di applicazione Le nuove generazioni di robot classificati come ro bot sociali nascono con l obiettivo di offrire alle persone un esperienza piacevol
16. modi Un primo approccio consiste in un design biologico che tenta riprodurre comportamenti o azioni tipiche del mondo animale 7 Fig 2 3a 2 3b 2 4a un altra possibilit definita come design funzionale si pone l obiettivo di costruire un robot che appaia esteriormente social mente intelligente nonostante il suo design interno non sia corredato 15 a Cebrennus rechenbergi b Spider Robot Figura 2 3 Robot ispirato al movimento del ragno Cebrennus rechenbergi da una base rigorosamente scientifica 24 Fig 2 4b a Big Dog b iCub Figura 2 4 Design per alcuni robot In conclusione al fine di decidere quali abilit sociali e fisiche siano utili per un robot importante attuare un analisi dettagliata di diversi aspetti quali il dominio applicativo la natura e la frequenza con cui il robot entrer in contatto e interagir con l uomo 16 2 3 Modalit di interazione La comunicazione tra un robot ed un essere umano puo avvenire sia at traverso i dispositivi classici dell Interazione Uomo Computer tastiera mouse monitor ecc oppure utilizzando modalit interattive pi na turali human friendly tipiche dell interazione uomo uomo in grado di coinvolgere tutti i sensi umani e i canali di comunicazione come il linguaggio la visione la gestualit ed il tatto Dal lavoro Cappelli et al 13 si possono estrapolare sei categorie principali di modalit d interazione del robot
17. namet navigate_target amp Navigation navigate_target_service this Listing 4 4 Servizi Navigazione Per poter funzionare correttamente inoltre il nodo si sottoscrive a diversi topic Il nodo utilizza messaggi provenienti dal topic com che trasmette le informazioni delle persone rilevate da Kinect In questo modo il robot in fase di approccio ha sempre una posizione aggiornata e coerente della persona che deve raggiungere Il topic odom invece fornisce continuamente informazioni sulla posizione del robot rispetto al frame map in questo modo il robot riesce a salvare l ultima posi zione in cui si trovava a seguito del rilevamento di una persona I topic emd vel e e2 sonar vengono utilizzati per avere informazioni riguar do al tipo di movimento che sta compiendo il robot ad esempio se sta ruotando sul posto e per ricevere informazioni dai sonar quest ultimi indispensabili per avere dati riguardo alla posizione dell utente durante la navigazione verso lo stand Questi dati sono vitali per l interazio ne in quanto durante la navigazione il robot utilizza il sensore Kinect orientato frontalmente per rilevare ostacoli durante il tragitto e si sup pone che la persona segua il robot affiancandolo da un lato dello stesso Suscribers face_sub_ nh_ subscribe com 1 amp Navigation face_callback this odom_sub_ nh_ subscribe odom 10 amp Navigation odometry_callback this vel_sub_ nh_ subscribe cmd_v
18. on oaoa 2 4 2 Organizzazione di un sistema di visione 3 Architettura del sistema 3 1 Componenti Hardware o oo oa 3 1 1 Base Mobile oaoa aaa a 3 1 2 Elettronica 000 3 1 3 Calcol Ato Lea dae da 3 1 4 Collo e Testa posi mise i e a a a e a G 3 1 5 Dispositivi Audio 3 1 6 Alimentazione ooa a a a a a a a a a 3 1 7 Sonar ALS Kici s rea seee a RE 3 2 Software 3 2 1 ROS Robot Operating System 3 2 2 Architettura software 0 0 0 0020 4 Sistema di navigazione 4 1 Navigazione 11 12 14 17 20 21 22 25 26 26 27 28 28 29 29 30 30 32 32 35 41 4 2 Localizzazione iui gia Ee bowen Soe doa 4 2 1 Odometria cure Gekko a ee Goa BR a 4 2 2 Il modulo e2 odometry 4 2 5 42 3 JANI a poaa toia aan ok ae e ae ee Ga 43 Path Pie gt p saor aor aacr Re oa eor GEA OS a 4 3 1 Global Planner iii a 432 Local PIMMMEr ppi urlata 4 4 Recovery Behaviours 40 AS Jl modulo e2_navigation 2 24 spa da ae 4448s 4 5 1 Ricerca e Avvicinamento 4 5 2 Navigazione Stand Obiettivo Sistema di Visione 5 1 Rilevamento volti 5 2 Il modulo face recognition 5 2 1 Memorizzazione Volto 5 2 2 Riconoscimento Volto Processo di Interazione 6 1 Il modulo e2 brai ii cases ig a e dala ek dae 6 2 Il modulo e2_neck_controller 6 3 Il modulo e2_voice 2 2b
19. rileva gli oggetti pi grandi nell immagine e insieme al parametro HAAR DO ROUGH SEARCH costringe la funzione a non cercare candidati di dimensioni inferiori quando stato trovato l oggetto Questi parametri consentono di ve locizzare di molto l analisi dell immagine Infine la variabile scale de termina quanto deve essere scalata la finestra di ricerca tra scansioni successive Il valore 1 1f si traduce in un incremento del 10 per la dimensione della finestra Definiti tutti i parametri viene lanciata la funzione cuHaarDetectObjects che restituisce una set di rettangoli le cui coordinate in pixel identificano la porzione in cui presente un volto 5 2 1 Memorizzazione Volto Una volta rilevato un volto e se l azione corrente di memorizzarlo il nodo procede al salvataggio di un numero di immagini definite in fase di inizializzazione cvSaveImage cstr equalizedImg NULL La funzione cuSavelmage effettua il salvataggio della porzione di immagine del volto definita dalla variabile cuSavelmage nella cartella data presente nel pacchetto in esame identificata dalla variabile cstr I nomi delle immagini vengono inoltre salvati all interno del file train tzt 67 utilizzando il parametro ricevuto tramite la definizione del goal Ven gono salvate un numero di 25 immagini nel processo soglia che si dimostrata ampiamente sufficiente nella fase di riconoscimento Estrazione eigenfaces Training Set X eige
20. stato sviluppato un modello 3D del robot e un ambiente simile a quello di una fiera che permette di simulare il funzionamento dei vari sotto sistemi all interno simulatore V Rep All interno del pac chetto e2_simulator si trovano i nodi che consentono di interfacciarsi con l architettura ROS e base controller trasforma i messaggi provenienti dallo stack di navigazione in movimenti del robot simulato controllandone la velocit delle ruote e fake odom vengono generati i dati riguardo la posizione del robot utilizzando le informazioni provenienti dal simulatore e depthbuffer to img questo nodo stato creato per risolvere una limitazione del simulatore che non era in grado di riprodurre lo stream di profondit del Kinect Per una maggiore documentazione a riguardo dell ambiente di si mulazione e dell utilizzo dei pacchetti si rimanda all appendice A che contiene la descrizione dettagliata del software prodotto e le istruzioni per l utilizzo del simulatore 39 40 Capitolo 4 Sistema di navigazione Da soli possiamo fare cos poco insieme possiamo fare cos tanto Helen Adams Keller Una delle novit del lavoro svolto nel corso di questo progetto di tesi caratterizzata dall aggiunta al sistema precedente dello stack di na vigazione che permette al robot di localizzarsi e muoversi liberamente nell ambiente in cui opera La realizzazione di questa funzionalit ha evidenziato una serie di problem
21. std string npos ROS_ERROR e2_brain Voice Trova persone robot_talk get_speech_by_name ack initialize find_user true return i 78 found command data find tell joke if found std string npos al ROS_ERROR e2_brain Voice Racconto una barzelletta robot_talk get_speech_by_name ack voiceClient gt waitForResult robot_talk get_random_speech string joke_ voiceClient gt waitForResult return found command data find how do you feel if found std string npos sl ROS_ERROR e2_brain Voice Robot Status robot_talk get_random_speech robot status voiceClient gt waitForResult return Per poter interagire con il robot necessario pronunciare il suo nome prima del comando o della richiesta che si vuole eseguire Ad esempio pronunciando E 2 how do you feel il robot identifichera la richie sta e risponder in base al suo stato emotivo interno come calcolato dalla funzione descritta nei paragrafi precedenti Inoltre il robot do tato di un ampia conoscenza di barzellette e aneddoti sulla robotica che possono essere richiamate mediante le richieste tell joke e tell news Nonostante la semplice implementazione il sistema un utile stru mento per mostrare le capacit meccaniche ed interattive del robot attraverso un interfaccia basata sul linguaggio 6 2 Il modulo e2 neck controller Il modulo e2_neck_co
22. sul robot e mostran do l importanza della HRI quale chiave di sviluppo nei robot di nuova generazione Ringraziamenti Desidero ricordare tutti coloro che mi hanno aiutato nella stesura della tesi con suggerimenti critiche ed osservazioni a loro va tutta la mia gratitudine Ringrazio anzitutto il professor Andrea Bonarini che in questi mesi mi ha seguito ed aiutato nel fronteggiare ogni problema che si presenta va proponendomi sempre nuove sfide che mi hanno aiutato a crescere ed a confrontarmi con problemi reali permettendomi di avere una vi sione pi completa del mondo della robotica Ringraziando inoltre tutto il personale e i ragazzi dell AIR Lab in particolare Martino Migliavacca che mi ha aiutato nella risoluzione dei misteriosi problemi della base del robot Un ringraziamento particolare va anche a Stefano Cappelli che mi ha coadiuvato durante lo sviluppo del codice del collo dell agente passando intere serate all interno dei laboratori Infine ringrazio tutte le persone che mi sono state accanto durante questo periodo sopportando le mie follie e la mia famiglia che in questi anni mi ha sempre sostenuto aiutandomi a raggiungere questo traguar do A tutti voi un grazie di cuore Indice Sommario Ringraziamenti 1 Introduzione 2 Stato dell arte 2 1 Robotica 2 2 Robot Sociali 2 3 Modalit di interazione oaoa 0 a a a a 2 4 Visione Artificiale a a a a a a a a a 2 4 1 Campi Applicativi
23. P3 dard TA e rf 3L Ipotizzando che sia indipendente nel tempo le formule sopra descrit te possono essere semplificate e sviluppate come 45 x c08 3 8 cos 3 3sinZ 3 A cos cos 5 0 2 cos cos 0 g3 dt a DI 4 5 y San a G 0 4 sin 3 O pi sind sin 3 0 63 sin 0 sin 0 ps dt 9 Gi Ga Ys 4 6 gi Le equazioni mostrano che la posizione del robot pu essere estra polata direttamente se il robot non compie rotazioni mentre si muove verso la nuova posizione Se 0 cambia il suo valore da zero l origine del sistema di coordinate deve essere spostato rispetto alla nuova va riazione e si pu procedere al calcolo Nonostante le equazioni facciano l assunzione che sia costante 0 viene sostituito nelle formule 4 5 con l angolo calcolato dalla 4 6 Con il metodo appena descritto viene no tevolmente ridotto il presentarsi di errori di accumulazione rispetto ad un approccio differenziale 4 2 2 Il modulo e2_odometry Il codice necessario al calcolo implementato nel pacchetto e2_odometry che recupera i dati dagli encoder ed utilizza questi dati per determinare la nuova posizione del robot Nel listato 4 1 si pu vedere come i dati ricevuti dagli encoder vengano sincronizzati prima di poter effettuare il calcolo mediante la libreria message_filter message_filters Subscriber lt EncoderStamped gt sub_enc_1 nh enc_1
24. POLITECNICO DI MILANO Scuola di Ingegneria Industriale e dell Informazione Corso di Laurea Magistrale in Ingegneria Informatica E2GoHome Sistema di controllo per un robot da esibizione AI amp KR Lab Laboratorio di Intelligenza Artificiale e Robotica del Politecnico di Milano Relatore Prof Andrea Bonarini Tesi di Laurea di Lorenzo Ripani matricola 739364 Anno Accademico 2013 2014 alla mia famiglia Sommario L interesse sempre crescente nei campi della robotica e dell intelligenza artificiale ha portato a notevoli sviluppi nelle interazioni tra uomo e ro bot Human Robot Interaction HRI che sempre pi frequentemente riscontriamo nella vita di tutti i giorni Inoltre la possibilit di disporre di sensori performanti a basso costo ha incentivato la costruzione di robot capaci di percepire l ambiente ad un livello sempre pi profondo incrementando la capacit di rispondere prontamente ad eventi esterni che si presentano operando in un mondo dinamico sottoposto a repen tini cambiamenti Lo scopo di questa tesi stato quello di realizzare un sistema di control lo per un robot mobile da esibizione che permetta al robot di interagire in piena autonomia con le persone e gli garantisca il supporto necessario per muoversi liberamente nell ambiente senza la supervisione umana Il documento illustra il sistema di controllo e il processo di interazione ottenuto attraverso l utilizzo di sensori montati
25. Ricerca Il primo step consiste nella ricerca di una persona nel l ambiente con cui iniziare un interazione Il robot inizia ad esplo rare lo spazio di lavoro fin quando Kinect non identifica un volto umano ricevendo i dati sulla sua posizione e Avvicinamento il passo successivo consiste nell avvicinarsi alla persona identificata fino ad una distanza di interazione di un metro e Valutazione interesse in questa fase il robot inizia a dialogare con la persona cercando di carpire la sua risposta emotiva e grado di interesse mostrato a seguito di una serie di affermazioni del robot Questa parte e stata sviluppata in una tesi precedente e per maggiori informazioni sul processo di valutazione si rimanda a Mandelli and Zamponi 23 e Navigazione una volta stabilito che la persona interessata il robot procede ad accompagnarla verso lo stand obiettivo come descritto nel capitolo relativo alla navigazione Il nodo ha visto una riscrittura in funzione della nuova architettura catkin presente nelle nuove versioni del meta sistema ROS Questo ha permesso di poter dialogare con tutti i vari sistemi del robot che sono stati realizzati con il paradigma catkin Il nodo inoltre dialoga con tre componenti principali il modulo di navigazione il modulo per la mo vimentazione del kinect e con il sistema voce Una volta inizializzato il sistema resta in attesa di comandi tramite il relativo servizio esportato dalla macchina Service
26. a dal robot Le altre specifiche del file Voice action riguardanti feedback e re sult sono le stesse descritte in precedenza per il nodo e2_neck_controller Inoltre il modulo voce utilizza il programma pico2wave per sintetizzare stringhe di testo in un file audio Questo programma utilizza SVOX un sintetizzatore vocale che garantisce ottime prestazioni ed utilizzato nei principali sistemi di navigazione in commercio A causa di alcune limitazioni la voce italiana disponibile solo nella versione femminile quindi data la natura mascolina del robot E 2 stato implementato un filtro per modulare la voce risultante e aumentando le basse fre quenze si ottenuta una voce pi consona al robot Di seguito viene mostrata l implementazione del comando usato per sintetizzare la voce di E 2 string command pico2wave l it IT w tmp e2 wav msg gt text amp amp play tmp e2 wav pitch 190 stretch 0 9 band 3000 500 treble 10 gt dev null 2 gt k1 Listing 6 4 Comando sintetizzatore vocale 84 Inoltre il modulo voce gestisce automaticamente la movimentazio ne della bocca del robot in modo da avere un movimento sincrono tra la riproduzione della voce e l attuazione del controllo dei servomotori della faccia Infine come descritto in precedenza possibile associare alla frase riprodotta una particolare espressione facciale o movimento della faccia Questo stato ottenuto nella definizione del vocabolario d
27. algoritmo vengono generate delle ipotesi sulla posizione in cui si trover il robot in seguito ad uno spostamento Queste supposizioni vengono chiamate particelle ed ognuna di queste rappresenta una possibile posa del robot indican do posizione e orientamento tramite un vettore sulla mappa Fig 4 3 Ogni particella contiene quindi una descrizione completa di un possibi le stato futuro e ogni qual volta il robot osserva l ambiente attraverso i dati di Kinect scarta le particelle inconsistenti con quell osservazio ne e genera un numero di particelle che appaiono coerenti con i dati osservati Ne risulta che la maggior parte delle particelle converge alla posizione in cui il robot si trova realmente Il nodo integrato in ROS attraverso un sistema di messaggi che contengono la trasformata dal frame map frame al frame odom Figu ra 4 4 che in conclusione migliora la stima della posa del robot con l ausilio dei dati odometrici migliorandone la localizzazione 47 Tat ts Figura 4 3 Le frecce arancioni rappresentano le ipotesi del robot AMCL Map Localization Odometry Dead Drift Reckoning map_frame analai base_frame Estimated by AMCL Figura 4 4 Architettura modulo AMCL 4 3 Path Planning Con il termine Path Planning si identificano tutte quelle tecniche che hanno lo scopo di determinare un percorso che vada da un punto A ad un punto B Il robot si avvale di tre moduli per programmare le traiettorie
28. am bi gli stream di immagini sincronizzate sync registerCallback boost bind amp FaceRecognition imageCB this _1 _2 DIE La funzione effettua il processo di rilevamento solo a seguito della ricezione del goal corretto Indipendentemente dal fatto che si voglia riconoscere o salvare un volto la prima azione da compiere quella di rilevare i volti nell imma gine L immagine ricevuta dal kinect viene quindi trasformata in scala di grigio e viene applicata la funzione detectFaceInImage che rileva i volti in un immagine La funzione riceve due parametri l immagine in 66 esame e il classificatore Haar cascade le cui informazioni sono salvate nel file haarcascade_frontalface_alt cml presente all interno del nodo in esame const CvSize minFeatureSize cvSize 20 20 const int flags CV_HAAR_FIND_BIGGEST_OBJECT CV_HAAR_DO_ROUGH_SEARCH const float search_scale_factor 1 if Detect faces rects cvHaarDetectObjects detectImg CvHaarClassifierCascade cascade storage search_scale_factor 4 flags minFeatureSize All interno della funzione sono evidenziati i parametri con cui verr lanciato il processo di detection La variabile minFeatureSize definisce la dimensione della porzione su cui applicare le varie feature per l iden tificazione del volto Viene usata una dimensione di 20x20 pixel La va riabile flags identifica quale tipologia di oggetti devono essere rilevati Il valore HAAR_FIND_BIGGEST_OBJECT
29. are servizi e Messaggi i nodi comunicano tra di loro mediante lo scambio di messaggi Questi non sono altro che semplici strutture dati composte da campi tipizzati Vengono supportati tutti i principali tipi primitivi integer float boolean etc array degli stessi e strutture nidificate come accade nel linguaggio C e Topics i messaggi precedentemente descritti vengono indirizzati attraverso un sistema di trasporto con una semantica publish suscribe Un nodo pu mandare un messaggio pubblicandolo su 33 un determinato topic Il topic quindi non altro che un nome che identifica il contenuto del messaggio nella rete ROS Ne segue che un nodo interessato ad un determinato tipo di dato non deve far altro che sottoscriversi al topic di interesse per ricevere i mes saggi di cui ha bisogno Possono esserci pi nodi che pubblicano messaggi sullo stesso topic come anche molti suscriber Il topic in definitiva pu essere pensato come un message bus specifico di una fonte di dati in cui ogni nodo pu mandare o ricevere messaggi su quel determinato topic e Servizi l architettura publisher suscriber un paradigma di co municazione molto flessibile ma non adatto ad interazioni del tipo richiesta risposta che sono spesso necessarie in un sistema distribuito Queste interazioni vengono gestite con l ausilio dei servizi che vengono esportati dai nodi Ogni nodo pu definire un determinato numero di servizi a seconda delle e
30. assificatore pi robursto 63 Figura 5 2 Applicazione di diverse feature ad un immagine In questo modo il numero finale di applicazioni delle feature risulta drasticamente ridotto circa 6000 partendo dalle 180 000 precedente mente identificate Quindi una volta ottenuta un immagine viene ap plicato questo insieme ridotto di feature per condurre l analisi Per ridurre ulteriormente il tempo di elaborazione viene fatta un ulteriore semplificazione Se una regione dell immagine non un volto non verr pi processata focalizzando quindi l attenzione su altre regioni dove pi probabile che si trovi un viso riducendo cos il numero di elabora zioni Per questo stato introdotto il concetto di Cascade of Classifiers Invece di applicare tutte le 6000 feature in una finestra queste vengo no raggruppate in differenti passi che vengono applicati in cascata se l applicazione di un set di feature fallisce al primo stadio la porzione di immagine in esame viene scartata e il processo continua senza consi derare le restanti feature nella porzione di finestra in esame Se invece questa viene accettata si procede allo stage successivo fin quando tutte le feature non sono applicate correttamente e la porzione considerata viene rilevata come un volto Nel progetto sviluppato il classificatore implementato utilizzando la libreria OpenCV 3 Open Source Computer Vision Library un framework open source per la compu
31. atiche che sono state affrontate per poter ottenere dei buoni risultati Un aiuto alla risoluzione di alcune problematiche stato dato dalla piattaforma ROS che ha semplificato alcuni compiti complessi mettendo a disposizione una serie di pacchet ti altamente configurabili che consentono di gestire fasi cruciali della navigazione senza sacrificare troppo costi e performance in fase di uti lizzo Affinch il robot possa spostarsi in piena autonomia questi deve comprendere l ambiente che lo circonda attraverso la rappresentazio ne dei dati catturati dai sensori deve inoltre essere consapevole della sua posizione sulla mappa per poter pianificare una traiettoria su cui muoversi L ambiente in cui opera il robot E 2 quello di uno spazio espositivo altamente dinamico poich possono comparire in breve tempo oggetti o persone nel campo di percezione ostacolandone la traiettoria di navigazione Quest ultimo problema implica la necessit di poter prevedere ostacoli ed evitarli aggiungendo un ulteriore livello di complessit al sistema stesso Di seguito viene prima presentato lo stack di navigazione implemen tato in ROS vengono descritte le operazioni effettuate durante un task di navigazione e successivamente vengono mostrate le componenti che si inseriscono accanto a questa architettura per completare la fase di controllo 4 1 Navigazione Lo stack di navigazione si compone di pi nodi i quali collaborano tra di loro s
32. cambiandosi informazioni sullo stato del robot la sua po sizione e la percezione dell ambiente In Figura 4 1 viene mostrata l architettura ROS che ha il compito di pianificare il movimento del la base evidenziando i nodi coinvolti nell operazione il modulo amc fornisce i dati riguardo il posizionamento del robot il map_server si occupa di tener traccia della mappa in cui il robot opera aggiornando le informazioni riguardanti eventuali ostacoli infine il nodo move_base ha il compito di pianificare la traiettoria di movimento utilizzando i dati provenienti dal sensore Kinect e dal nodo amcl move_base_simple goal EERE geometry_msgs PoseStamped map server move_base y intemal nav_msgs Path sensor topics L sensor_msgs LaserScan sensor_msgs PointCloud A provided node N optional provided node platform specific node Figura 4 1 Navigation overview Lo stack di navigazione tiene traccia della posizione del robot uti lizzando una rappresentazione di frame di coordinate che determinano 42 Vorientamento e la posizione di un oggetto rispetto ad un frame sta tico In questo modo possibile avere costantemente una relazione tra il robot e la mappa dell ambiente 16 Il robot utilizza una mappa statica generata mediante telecontrollo la quale viene aggiornata a seguito della ricezione dei dati provenienti dal Kinect utilizzando il sensore di profondita che trasforma le distanze percepit
33. cinanza alla traiettoria globale e velocit 4 Vengono eliminate le traiettorie che generano collisioni 5 Viene scelta la traiettoria con la valutazione pi alta e vengono inviate le relative velocit attraverso messaggi alla base mobile 6 Si ricomincia il processo dal punto 1 finch non viene raggiunto l obiettivo 50 4 4 Recovery Behaviours Il robot configurato per utilizzare dei comportamenti da usare in caso di situazioni di stallo o se non nelle condizioni di seguire la traiettoria prestabilita Vengono eseguite le seguenti azioni per tentare di liberare il robot da queste situazioni In prima istanza gli ostacoli esterni alla mappa locale vengono eliminati per poter essere aggiornati da nuove informazioni provenienti dal sensore Kinect In seguito se possibile il robot tenter di effettuare una rotazione sul posto per controllare se sono ancora presenti gli ostacoli che ne impediscono il movimento Se tutte queste azioni falliscono il robot considera il suo goal non raggiun gibile e notifica il fallimento della navigazione ai sistemi di controllo stuck Clearing Rotation stuck Aborted move_base Default Recovery Behaviors S Conservative Reset Clearing Rotation Aggressive Reset clear clear Navigating Figura 4 7 Recovery Behaviours 4 5 Il modulo e2_navigation Il modulo e2_navigation stato sviluppato per supportare il robot du rante il processo d
34. comu nicare con un sistema robotico ottenuta combinando varie modalit d interazione ricorrendo quindi ad una interfaccia multimodale Perch l interazione uomo robot abbia successo necessario sfruttare le tecni che a disposizione per far si che il robot manifesti il pi possibile la sua intenzionalit l uomo deve poter credere che il robot abbia opinioni desideri e intenzioni 19 2 4 Visione Artificiale Uno degli obiettivi primari della Computer Vision consiste nell identifi cazione di oggetti e corpi all interno di immagini digitali bidimensionali o 3D Un sistema di visione artificiale costituito dall integrazione di componenti ottiche elettroniche e meccaniche che permettono di ac quisire registrare ed elaborare immagini sia nello spettro della luce visibile che al di fuori di essa Il risultato dell elaborazione il ricono scimento di determinate caratteristiche dell immagine per varie finalit di controllo classificazione selezione e via dicendo Un Sistema di Visione si compone di diverse componenti telecamere e ottiche sistema di illuminazione il sistema di acquisizione e di elaborazione dell immagine le interfacce uomo macchina e le interfacce con l ambiente esterno Ad esempio in un sistema di ispezione visiva per controllo di qua lit le parti da ispezionare vengono posizionate spesso attraverso sistemi di movimentazione automatica di fronte a una o p
35. di libert presenti nella sola testa sopracciglia orecchie labbra palpebre e bocca ed altri 4 gradi di libert di cui dotata la 17 piattaforma su cui posizionato Kismet in grado di riprodurre una vasta gamma di espressioni facciali Altri esempi sono Paro 22 Fig 2 6 un robot di compagnia per persone anziane an che questo dotato di pelliccia ed una ampia gamma di movimenti riproducibili a Kismet b Leonardo Figura 2 5 Robot costruiti presso l Artificial Intelligence Laboratory del MIT e Tracciamento dello sguardo la direzione dello sguardo gioca un ruolo importante nell interazione sociale umana e in particola re nell identificazione del focus di attenzione di una persona Un sistema robotico dotato di questa funzionalit in grado cio di identificare il punto focale ove la persona sta guardando e a cosa sta prestando attenzione sar in grado di capire ad esempio se questa persona si sta rivolgendo al robot o ad altri e Prossemica e cinesica modalit di comunicazione pi sofisti cate sono la prossemica e la cinesica la prima riguarda la distanza tra gli interlocutori la variazione della quale pu fornire un uti le indizio circa la disponibilit o la reticenza alla conversazione Esempi di prossemica sono stati condotti ricorrendo al sopracita to Kismet la sua testa infatti reagisce alla distanza del proprio interlocutore e quando questo si avvicina troppo invadendo il suo spazio
36. e basata su un interazione amichevole ed informativa Questo livello di comunicazione tuttavia richiede un gran numero di abilit di cui deve disporre la macchina Per questa ragione lo studio di sistemi robotici in grado di percepire l ambiente in modo complesso e capaci di interagire con esso uno dei temi pi attuali nei principali laboratori di robotica nel mondo soprattutto riferito all interazione uomo robot e allo sviluppo di interfacce basate sull elaborazione del linguaggio Utilizzare un robot in un contesto dinamico abitato da esseri umani impone precisi requisiti riguardanti la percezione sensoriale la mobilit e la destrezza nonch la capacit di pianificare compiti prendere de cisioni ed effettuare ragionamenti In questo capitolo verranno discus si i principali argomenti che hanno influenzato lo sviluppo di questo progetto 2 1 Robotica La robotica ha radici culturali assai profonde Nel corso dei secoli l uomo ha costantemente cercato di individuare dei suoi sostituti che risultassero in grado di emulare il suo comportamento nelle molteplici occasioni di interazione con l ambiente circostante La robotica ha stimolato la fantasia di molti scrittori che con la loro immaginazione hanno guidato lo sviluppo tecnologico degli ultimi decenni Il termine robotica si riferisce allo studio e all uso dei robot termine diffusosi tramite i libri dello scrittore Isaac Asimov 8 Fig 2 1 Figura 2 1 I
37. e cod 3 Permette di effettuare lo studio dei volti per estrapolare le informazioni e salvarle nel database 65 4 Terminazione cod 4 Permette di terminare ogni operazione in corso e di uscire dal nodo Il parametro order_argument viene usato per associare un nome al la fase di rilevamento e memorizzazione che viene associato ai dati nel database Il nodo inoltre fornisce risposte sotto forma di messaggi che ripor tano informazioni utili alla posizione della persona rispetto al centro dalla camera Le informazioni che vengono inviate come risposta so no l identificativo dell azione in esame order_argument langolo e la distanza dal centro ottico del sensore Kinect angle distance il nome della persona trovata names e il valore di confidenza del matching Il nodo riceve le informazioni real time dal sensore Kinect sottoscri vendosi ai topic messi a disposizione dal sistema ROS tramite i driver Openni I topic di interesse sono quelli relativi al sensore RGB e quelli del sensore di profondit image_topic_rgb_ input_rgb image_topic_depth_ input_depth rgb_image_sub_ nh_ image_topic_rgb_ 10 depth_image_sub_ nh_ image_topic_depth_ 10 sync MySyncPolicy 10 rgb_image_sub_ depth_image_sub_ Inoltre necessario sincronizzare la ricezione dei due stream di im magini utilizzando la libreria message_filters In questo modo la fun zione FaceRecognition imageCB verr richiamata utilizzando entr
38. e come profondit o assorbimento di onde soniche o elettromagnetiche Pre processing Prima di poter applicare ogni tipo di analisi all immagine per estrapolare delle informazioni necessario pro cessare l immagine per determinare se soddisfa i vincoli imposti dall analisi da effettuare Ad esempio alcuni metodi proposti da questa tesi richiedono che le immagini siano su scala di grigio e quindi devono essere processate per rispettare tali vincoli Estrazione Feature Le caratteristiche dell immagine vengono estrapolate a vari livelli di complessit per determinare contorni o estrapolare pattern utili all identificazione di un oggetto Rilevamento Ad un certo punto nel processo viene presa una decisione riguardo a quali punti o porzioni dell immagine sono rilevanti o per effettuare ulteriori elaborazioni Elaborazioni Alto Livello In questa fase i dati di analisi sono tipicamente ridotti e ci si trova nelle condizioni di poter effettua re le analisi finali o altro a seconda del tipo di sistema che si costruito 23 24 Capitolo 3 Architettura del sistema I am definitely not a fucking toaster Jim Chaseley Z14 In questa sezione viene mostrata l architettura di E 2 Fig 3 1 un robot sviluppato all interno del laboratorio di intelligenza artificiale e robotica del Politecnico di Milano che stato oggetto di studio nel corso di questo progetto Il robot si compone di tre parti principali
39. e con cui il robot interagisce Le analisi disponi bili sono di due tipi la prima permette di determinare l interesse di una persona a seguito di una serie di affermazioni di E 2 basato sullo studio dei movimenti muscolari della faccia mentre la seconda aiuta a rilevare la stessa persona nel corso del tempo dotando il robot di una memoria visiva I pacchetti che ne fanno parte sono descritti qui di seguito e user tracker modulo ROS che permette di rilevare il centro di massa e la stima della posizione della testa dell interlocutore con cui condurre l interazione Tali dati verranno comunicati al resto del sistema tramite pubblicazione all interno del topic com e head analyzer modulo ROS che sulla base dei dati provenien ti dallo user tracker e sfruttando lo stream IR dato dal modu lo openni kinect ha l obiettivo di estrarre informazioni utili alla stima del grado di attenzione e di interesse dell interlocutore e face recognition modulo ROS che permette al robot di memo rizzare il volto di una persona e di riconoscerlo nell arco dell intero processo di interazione head_analyzer JeyesData neadData user_tracker face_recognition e2_nav_messages e2_odometry N lt actionlib gt ausriseseenenezeneone r Subcriber Publisher rosne Figura 3 11 Architettura del sistema di controllo kinect motor e2_neck_controller e2_sonar 38 Infine
40. e in una map pa 2D mediante algoritmi di SLAM Simultaneous localization and mapping 4 2 Localizzazione Definito l ambiente di lavoro necessario stabilire dove si trova il robot sulla mappa determinandone la posizione e orientamento della base Il problema della localizzazione uno dei pi importanti sui robot mo bili a causa di fattori che possono presentarsi sotto diverse forme Ad esempio un attuatore non perfettamente collegato ad una ruota gene ra un errore dovuto allo slittamento dell asse prima che intervenga la frizione dei due oggetti per far muovere la ruota Un altro errore qua si sempre presente causato dalle approssimazioni nei calcoli causati dalle operazioni di differenziazione e integrazione ed ancora l utilizzo di dati quantizzati e quindi non precisi che con il passare del tempo incrementa l errore di posizionamento Esistono tuttavia diverse so luzioni per risolvere questi problemi ognuna con pregi e difetti ed il sistema utilizzato varia di norma in base ai sensori disponibili sul robot e in base alle necessit di precisione richieste Per lo scopo dell elaborato era richiesto un buon grado di precisione dato che il robot deve operare in piena autonomia nell ambiente evi tando ostacoli e persone La tecnica implementata prevede un sistema di controllo misto che si compone di due componenti una di Dead Rec koning che utilizza i dati odometrici per calcolare lo spostamento del robot ed
41. e questa riesca ad interagire con le persone durante la navigazione nell ambiente Lo scopo di E 2 e quello di avvicinare persone in un ambiente fieristico fornire loro informazione rispetto a un espositore rilevarne l eventuale interesse nel qual caso deve offrirsi di accompagnare la persona allo stand dell espositore in questione Per il conseguimento di tali obbiettivi si resa necessaria l analisi di numerose informazioni provenienti dai sensori distribuiti sul corpo del robot quali telecamere IR sonar ed encoder Un importante con tributo per l ottenimento di questi dati stato fornito dal dispositivo Kinect che in questo elaborato viene utilizzato come sensore di naviga zione e di localizzazione e per l analisi condotta sul volto delle persone con le quali il robot stabilisce un interazione Il robot stato oggetto di diverse modifiche durante lo sviluppo del progetto che hanno portato alla sostituzione della precedente base mobile e ad una ristrutturazione del software che permettesse a tutte le componenti di dialogare fra di loro per il corretto funzionamento del sistema Successivamente stato sviluppato un sistema di navigazione che consente al robot di spostarsi autonomamente nell ambiente allo scopo di cercare persone con cui iniziare un processo di interazione Infine lo sviluppo si concentrato sull analisi del volto delle persone permettendo al robot di memorizzarne il volto in modo da poterle r
42. ecognized_ false ro ro s Time init_detection ros Time now s Duration timeout 30 0 while ros Time now init_detection lt timeout amp amp user_recognized_ if rotating if guest_user_info_ user_left irobot_ gt base_rotate const_cast lt char gt LEFT else irobot_ gt base_rotate const_cast lt char gt RIGHT Check user presence user_detect guest_name_ ros spinOnce r_ sleep irobot_ gt base_stop Inizialmente il robot arresta i vari task in esecuzione sul robot fer mandosi nella posizione in cui si trova Successivamente il robot inizia 58 una rotazione rispetto alla posizione in cui si trovava la persona pri ma di essere persa La funzione user_detect richiede al nodo di face recognition di identificare la persona che stava accompagnando verso lo stand Il processo termina se la persona viene identificata o si supera un timeout di 30 secondi Se la persona viene identificata viene lanciata la funzione Naviga tion user_wait che pone il robot in una situazione di attesa Questa ha il compito di richiamare la persona attraverso l utilizzo della voce per notificare la posizione del robot se la persona si trova ad una distanza superiore ai 2 metri e mezzo dal robot Se dopo un intervallo di tempo il robot percepisce ancora una distanza elevata dalla persona questi si avvicina a lei e la invita a seguirlo prima di poter riprendere la sua navigazione verso lo s
43. el 10 amp Navigation velocity_callback this sonar_sub_ nh_ subscribe e2_sonar 1 amp Navigation sonar_callback this Listing 4 5 Topic sottoscritti Terminato il processo di inizializzazione il modulo resta in attesa di richieste da parte del nodo e2_brain A seguito della ricezione di un task viene effettuata una chiamata alla funzione executeCB che ha il compito di scegliere l azione corretta da eseguire void executeCB const e2_navigation NavGoalConstPtr amp msg switch goal_id_ case 0 Abort current action ROS_DEBUG ROS_NODE_NAME Abort current action 54 nav gt ActionReset as_ setAborted return break case 1 Find user to start interaction ROS_DEBUG ROS_NODE_NAME Looking for user nav gt LookingUser break case 2 Aproach user if he s still far from the robot ROS_DEBUG ROS_NODE_NAME Aproaching user nav gt ApproachUser break case 3 Start Navigation for interested people ROS_DEBUG ROS_NODE_NAME Start navigation to target nav gt NavigateTarget break ros Rate rate ROS_NODE_RATE Start Navigation Controller while g_request_shutdown amp amp nav gt isActionCompleted amp amp nav gt isActionAborted af nav gt ActionController ros spinOnce rate sleep result_ action_id goal_id_ if nav gt isActionCompleted as_ setSucceeded result_ 0K else as_ setAborted re
44. el all interno delle regioni di due rettangoli come mostrato in Figura 5 1 I rettangoli hanno la stessa forma e dimensione e posso no essere orizzontalmente o verticalmente adiacenti L elaborazione di questi valori genera un elevato insieme di dati basti pensare che uti lizzando una finestratura di 24x24 pixel per l elaborazione possibile estrapolare un numero di 180 000 feature dalla porzione in esame n B a Edge Features E m b Line Features c Four rectangle features Figura 5 1 Features utilizzate nel processo di classificazione Tuttavia non tutte le feature calcolate sono rilevanti ai fini dell ana lisi Ad esempio esaminando la Figura 5 2 si pu evincere quali feature contribuiscano al rilevamento di pattern utili La prima feature in esa me si focalizza sulla propriet che la regione degli occhi sia pi scura di quella del naso e mento mentre la seconda evidenzia che gli occhi sono pi scuri rispetto al collegamento stabilito dal naso Ma applicando la stessa finestra sul mento o ad altre regioni del volto non si ottengono informazioni rilevanti Per scartare quindi tutte queste feature viene applicato un algoritmo di machine learning AdaBoost 19 Questo algoritmo di boosting permette di incrementare notevola mente la precisione di un algoritmo in fase di apprendimento il cui obiettivo quello di generare una serie di classificatori con scarse pre stazioni per poi combinarli in modo da avere un cl
45. ella funzio ne findNearestNeighbor consiste nel valutare la distanza euclidea per misurare la differenza tra due feature vectors 69 projectedTestFace float cvAlloc frl nEigens sizeof float cvEigenDecomposite equalizedImg frl nEigens frl eigenVectArr 0 0 frl pAvgTrainImg projectedTestFace Rileva il volto iNearest frl findNearestNeighbor projectedTestFace amp confidence nearest frl trainPersonNumMat gt data i iNearest Volto sconosciuto Proiezione nello spazio dei volti feature vector eigenfaces Database Ricerca Feature vector pi simile FacelD feature vector FacelD distanza Distanza lt soglia i volto ss a a facelD Volto sconosciuto Figura 5 5 Processo di rilevamento possibile utilizzare anche un altro metodo la distanza di Maha lanobis che funziona meglio in quanto tiene in considerazione il fatto che quando si proietta l immagine di un volto nel sottospazio ottenu to tramite PCA ogni dimensione viene compressa o espansa a seconda dell autovalore associato ifdef USE_MAHALANOBIS_DISTANCE distSq d_i d_i eigenValMat gt data fl i Mahalanobis distance else distSq d_i d_i Euclidean distance endif Terminato il processo se la confidenza del risultato sufficiente mente elevata verr generato un messaggio come mostrato nel dettaglio implementativo successivo in cui sono riporta
46. ello che la parola dice ombra informe sul suolo della sua possibilit di intendere Fernando Pessoa Il libro dell inquietudine Come descritto nel corso del Capitolo 2 l importanza di progettare comportamenti quanto pi possibili human like determinano la buona riuscita di un robot sociale capace di interfacciarsi con un essere uma no Affinch l interlocutore risulti realmente coinvolto nell interazione indispensabile che il robot comunichi una propria intenzionalit ossia riesca a far credere alla persona di avere opinioni ed intenzioni Inol tre la capacit del robot di recepire comandi attraverso il parlato ne aumenta notevolmente il grado di partecipazione dando all interlocu tore anche se solo apparentemente l idea di comunicare con un essere senziente Il capitolo si articola descrivendo il modulo e brain che stato og getto di modifiche rispetto alla precedente realizzazione in modo da aumentarne le potenzialit per poi descrivere i moduli che interven gono nelle varie attivit del robot e che si adoperano per aumentare il livello di coinvolgimento e interazione con le persone 6 1 Il modulo e2 brain Il modulo e2 brain si occupa di gestire le fasi principali del processo di interazione con l utente Il nodo stato rivisitato e corretto im plementando nuove funzionalit Il processo di interazione articolato seguendo quattro passi necessari per un interazione con una persona e
47. endo maggiormente la persona dando l impressione di dialo gare con un essere senziente In conclusione il progetto concluso ha portato alla realizzazione di un robot in grado di svolgere il compito proposto che si pone come un punto di partenza per lo sviluppo di robot sociali aventi l obiettivo di riprodurre un interazione human like in differenti contesti operativi 92 Bibliografia 10 11 12 a RL www ros org actionlib RL http wiki ros org navfn RL opencv org RL www ros org U U U U URL http cmusphinx sourceforge net wiki U RL http airlab ws dei polimi it index php Triskar2 Tracy L Anderson and Max Donath Animal behavior as a para digm for developing robot autonomy Robotics and Autonomous Systems 6 1 145 168 1990 Isaac Asimov I Robot Mondadori 1950 Andrea Bonarini Matteo Matteucci Martino Migliavacca and Davide Rizzi R2p An open source modular architecture for ra pid prototyping of robotics applications In Embedded Systems Computational Intelligence and Telematics in Control number 1 pages 68 73 2012 Cynthia Breazeal Toward sociable robots Robotics and autonomous systems 42 3 167 175 2003 Cynthia Breazeal and Brian Scassellati A context dependent attention system for a social robot rn 255 3 1999 Allison Bruce Illah Nourbakhsh and Reid Simmons The role of expressiveness and attention in human robot interaction In Robotics and A
48. entificano gli obiettivi di navigazione nh_ param lt bool gt en_auto find_user_ true nh_ param lt bool gt en_neck en_neck true nh_ param lt bool gt en_voice en_voice true nh_ param lt bool gt en_train en_train true nh_ param lt bool gt en_kinect en_kinect true nh_ param marker_config marker_config ros package getPath e2_config map_config sim_marker_config yaml nh_ param speech_config speech_config ros package getPath e2_config speak_config speech_config yaml Listing 4 3 Parametri Configurabili Inoltre sempre in fase di inizializzazione vengono esportati diversi servizi che permettono di testare il corretto funzionamento del modulo senza dover avviare il modulo e2_brain che prevede lunghi tempi di interazione Enable Services abort_service_ nh_ advertiseService name abort amp Navigation abort_service this goto_service_ nh_ advertiseService name test_goto amp Navigation goto_service this talk_service_ nh_ advertiseService name test_voice amp Navigation talk_service this neck_service_ nh_ advertiseService name test_neck amp Navigation neck_service this find_user_service_ nh_ advertiseService name find_user amp Navigation find_user_service this 53 approach_user_service_ nh_ advertiseService name approach_user amp Navigation approach_user_service this navigate_target_service_ nh_ advertiseService
49. eseguiti chia 76 mando la funzione robot_talk che carica dal file di configurazione il testo da riprodurre e le azioni da compiere Per una maggiore documentazio ne fare riferimento al modulo e2_voice che descrive l implementazione del file di configurazione per questo genere di comportamenti Una delle novit proposte in questo elaborato consiste in un sistema di elaborazione del linguaggio naturale che permette al robot di recepi re comandi impartiti dalla persona per ampliare il livello di interazione con questa Nonostante questa funzionalit sia ad un primo stadio di sviluppo fornisce un idea di quanto tale funzionalit sia importante per garantire un alto livello di interazione Il sistema si appoggia a CMU Sphinx 5 un riconoscitore del par lato che mediante l utilizzo di una grammatica riesce a riconoscere la voce percepita da un microfono con una buona approssimazione Il sistema stato testato con un semplice vocabolario di frasi Per il cor retto funzionamento necessario disporre di un vocabolario di frasi che verranno riconosciute un modello che riconosca i fonemi delle parole e un modello statistico basato sulla frequenza con cui si presenteranno le varie parole Il sistema pu essere adattato per riconoscere anche la lingua italia na ma sarebbe necessario generare un modello specifico che richiede rebbe diverse ore di sviluppo e non era previsto nei compiti del progetto Questa grammatica pu essere
50. esti problemi si sono verificati in condizioni di illuminazione minime che difficilmente possono presen tarsi in contesti quali quelli in cui il robot sar chiamato ad operare ove si sono riscontrati falsi positivi con un tasso prossimo allo zero nella 89 maggior parte delle interazioni con il robot Figura 7 4 Processo di interazione di E 2 7 4 Valutazioni generali Valutare il processo di interazione generale molto complesso in quan to la logica del sistema dipende da molti moduli che devono collaborare tra di loro e quindi anche l analisi deve essere valutata considerando ogni aspetto del problema Complessivamente tutti i sistemi riescono a collaborare e il sistema di navigazione proposto riesce ad adattarsi ai vari ambienti dopo una accurata costruzione della mappa Il robot riesce poi ad effettuare l in tero processo di interazione non evidenziando problemi se non dovuti a condizioni di luce proibitive Quindi nel complesso il sistema ca pace di gestire un interazione completa e continuativa con le persone dimostrando di aver centrato gli obiettivi posti per questa tesi 90 Capitolo 8 Conclusioni e Sviluppi futuri There is no real ending It s just the place where you stop the story Frank Herbert Lo scopo di questo lavoro era quello di creare un sistema di controllo autonomo per un robot da esibizione tale E 2 che fosse in grado di muoversi autonomamente in ambienti complessi e dinamic
51. etto degli errori che si accumulano nella navigazione la postura x y 0 del robot nell ambiente diven ta rapidamente diversa da quella stimata Questo problema stato risolto parzialmente utilizzando un metodo di calcolo diretto che eli minasse le approssimazioni dovute a integrazioni e differenziazioni nei calcoli ottenendo un risultato pi preciso In Figura 4 2a si vede una rappresentazione della base sul piano cartesiano Definiamo con L la distanza che intercorre tra la ruota e il centro di massa del robot con r il raggio di una ruota del robot e con 1 2 Y3 le posizioni lette dai tre encoder La formulazione utilizzata 25 26 permette di calcolare diretta mente i valori di x y e 0 utilizzando come parametro il vettore delle velocit delle ruote Il calcolo fa uso delle equazioni di moto e richiede il calcolo della formula S r Wo bat 4 1 Dove 44 Ti we Tz X a Struttura Base b Movimenti Base Figura 4 2 E 2 Rappresentazione base mobile T T p1 p2 p3 S ly y 1 2 03 4 2 9 9 01 p2 p3 sin 8 cos L W sin 7 0 cos 7 0 L 4 3 sin 0 cos 0 L Sviluppando i calcoli si ottiene un sistema di equazioni cos definito car Zin 0 cost 0 1 cos 90 cos z 0 Bo cos 0e cos 7 0 3 dt dl sin sin 0 sin 6 i 4 4 sin 6i sin 3 0 9 sin 0s sin 7 9 gs dt P Yo
52. ficati o memorizzati pos sono essere ricondotti a classi generiche usalmente insieme alla loro posizione 2D o 3D nella scena e Identification viene individuata un istanza specifica di una clas se Es Identificazione di un volto impronta digitale o veicolo specifico e Detection L immagine e scandita fino all individuazione di una condizione specifica Es Individuazione di possibili cellule anor mali o tessuti nelle immagini mediche o di difetti in parti mecca niche o tessuti Altro compito tipico la ricostruzione della scena date 2 o pi im magini 2D si tenta di ricostruire un modello 3D della scena Nel caso pi semplice si parla di un set di singoli punti 3D Casi pi complessi tentano di generare superfici 3D complete Generalmente importante trovare la matrice fondamentale che rappresenta i punti comuni prove nienti da immagini differenti Una parte significativa dell intelligenza artificiale si occupa di gesti re sistemi interfacciati a robot o macchine che si muovono nello spazio o compiono movimenti Questa tipologia di processi implica spesso l acquisizione di informazioni fornite da un sistema di visione artificiale che occupa il ruolo di sensore visivo Esistono sistemi in grado di diri gere manipolatori robot antropomorfi o carrelli in ambienti industriali non noti a priori Ad esempio robot di carico e scarico che devono in dividuare la posizione esatta di oggetti diversi e posizionarli su pallet o in
53. hu man hrp 4c In Humanoid Robots 2009 Humanoids 2009 9th IEEE RAS International Conference on pages 7 14 IEEE 2009 Cory D Kidd Will Taggart and Sherry Turkle A sociable ro bot to encourage social interaction among the elderly In Robo tics and Automation 2006 ICRA 2006 Proceedings 2006 IEEE International Conference on pages 3972 3976 IEEE 2006 Cristian Mandelli and Deborah Zamponi Studio e realizzazione di un sistema d interazione uomo robot 2012 Giorgio Metta Giulio Sandini David Vernon Lorenzo Natale and Francesco Nori The icub humanoid robot an open platform for 94 95 25 ar TS DI 27 i 28 research in embodied cognition In Proceedings of the 8th workshop on performance metrics for intelligent systems pages 50 56 ACM 2008 Alireza Fadaei Tehrani Ali Mohammad Doosthosseini Hamid Re za Moballegh Peiman Amini and Mohammad Mehdi DaneshPa nah A new odometry system to reduce asymmetric errors for omnidirectional mobile robots In RoboCup 2003 Robot Soccer World Cup VII pages 600 610 Springer 2004 Ching Chih Tsai Li Bin Jiang Tai Yu Wang and Tung Sheng Wang Kinematics control of an omnidirectional mobile robot In Proceedings of 2005 CACS Automatic Control Conference pages 13 18 2005 Matthew A Turk and Alex P Pentland Face recognition using eigenfaces In Computer Vision and Pattern Recognition 1991 Proceedings CVPR 91 IEEE Computer Society Confere
54. i conoscere nel corso del tempo L elaborato si articola in sei capitoli che descrivono nel dettaglio le componenti sviluppate e come queste collaborino al raggiungimento dei propri obiettivi e dell obiettivo globale I capitoli sono strutturati come elencato di seguito Capitolo 2 Stato dell arte vengono presentati i recenti sviluppi otte nuti in merito a tematiche di HRI riconoscimento facciale e motion planning descrivendo il mondo della robotica e gli argomenti che han no influenzato lo sviluppo dell elaborato Capitolo 3 Architettura del sistema nella prima parte vengono espo sti i principali componenti hardware del robot E 2 utilizzati per il raggiungimento degli obiettivi del progetto Nelle seconda parte in vece viene presentato l ambiente ROS utilizzato come framework di sviluppo e l architettura del software realizzato Capitolo 4 Il sistema di navigazione vengono qui presentati i mo duli sviluppati con la relativa documentazione in merito al sistema di navigazione del robot In particolare vengono illustrati il processo di localizzazione ed il sistema di motion planning che consente al robot di muoversi autonomamente nell ambiente Capitolo 5 I sistema di visione qui viene descritto il processo di rile vamento dei volti tramite il sensore Kinect focalizzando l attenzione su come viene effettuata la memorizzazione e la successiva identificazione delle persone con cui il robot intrattiene un
55. i teleca mere ed illuminati in modo appropriato in modo cio da evidenziare il pi possibile i difetti da individuare Il sistema ottico forma un im magine sul sensore della telecamera che produce un segnale elettrico in uscita Questo segnale verr digitalizzato e memorizzato L immagi ne catturata e resa in questo modo comprensibile da un calcolatore potr quindi essere elaborata con un apposito software che comprende particolari algoritmi di calcolo ed analisi in grado di individuare le ca ratteristiche dell immagine e amplificarne alcuni aspetti ad esempio contorni spigoli forme strutture allo scopo di eseguire i controlli e le verifiche per i quali il sistema stato concepito Sulla base dei risultati dell elaborazione il sistema prender decisioni in merito alla destinazione dell oggetto ad esempio smistarlo fra i buoni o scartarlo e fornir le informazioni opportune al resto del sistema produttivo 20 2 4 1 Campi Applicativi Un problema classico nella visione artificiale quello di determinare se l immagine contiene o no determinati oggetti Object recognition Il problema pu essere risolto efficacemente e senza difficolt per oggetti specifici in situazioni specifiche per esempio il riconoscimento di speci fici oggetti geometrici come poliedri riconoscimento di volti o caratteri scritti a mano In letteratura troviamo differenti variet del problema e Recognition uno o pi oggetti prespeci
56. i E 2 tramite un file formattato tramite YAML una libreria che permette di avere una buona standardizzazione nella definizione di un file Queste azioni vengono espletate prima di iniziare a riprodurre il movimento della voce come si pu osservare dall estratto successivo Add face expression if msg gt face_action 0 i n_goal action 1 n_goal sub_action msg gt face_action ac_nc gt sendGoal n_goal ac_nc gt waitForResult Add neck action if msg gt neck_action 0 n_goal action 2 n_goal sub_action msg gt neck_action ac_nc gt sendGoal n_goal ac_nc gt waitForResult Start Moving mouth n_goal action 1 n_goal sub_action 6 ac_nc gt sendGoal n_goal Listing 6 5 Comando sintetizzatore vocale Il robot stato dotato di una serie di frasi che possono essere ri prodotte durante la navigazione o a seguito di una richiesta della per sona Tra queste possibile trovare un ampia gamma di barzellet te aneddoti sulla robotica ed un insieme di frasi utilizzate durante i processi di interazione facilmente estendibili Queste sono definite nel file speech_config all interno del pacchetto e2_config nella cartella speak_config di cui viene mostrata parte dell implementazione 85 PRR EHERHREHHRHERARE ERE RIE REESE EHE RHEA RAPER H EH EHEH EHE Jokes HHHHHHHHHEHRHRRHRHERHERHRRHER HERRERA RRR R ERR Speech id joke i text Squilla il telefono un robot si avvicina e chiede
57. i e a superarli senza troppe difficolt riuscendo a spostarsi senza problemi anche in spazi delle dimensioni pari al doppio della sua larghezza Il sistema di localizzazione infine garantisce un buon grado di ap prossimazione nonostante il semplice utilizzo del sensore Kinect Nelle prove effettuate in un laboratorio del Politecnico il sistema ha mo strato un tasso di errore prossimo allo zero riuscendo a terminare il Poe i I Pa Figura 7 1 Vista degli ostacoli rviz percorso di navigazione senza collisioni L accuratezza del sistema di navigazione difficile da stimare lungo tutto il tragitto In una prova condotta in laboratorio utilizzando distanze fisse si riscontrato un errore medio di posizione di 4cm sulla componente lineare e inferiore ai 10 per la posa finale del robot Questo errore tuttavia viene com pensato da AMCL che riesce a garantire che l errore non aumenti nel tempo Alcune limitazioni sono state imposte dal pianificatore di movimen to che viene utilizzato con una bassa frequenza e simulando brevi tra iettorie di movimento per non sovraccaricare troppo l elaboratore nelle situazioni di pieno carico operativo in cui si potrebbero degradare le prestazioni Inoltre alcuni problemi si sono evidenziati nell attuazio ne meccanica delle ruote che vengono alimentate a massima potenza senza effettuare alcun controllo sulla velocit Questo problema potreb be essere riso
58. i e che fosse in grado di instaurare un interazione con le persone presenti mirata a convincerle a seguirlo a uno stand specifico Il sistema realizzato ha dimostrato come con il semplice utilizzo di un sensore Kinect sia stato possibile ottenere un robot in grado di trovare persone in un ambiente esteso e complesso di analizzare il loro stato attenzionale e di mantenere un buon grado di interazione con lo ro Lo studio si poi concentrato sulle azioni compiute dal robot come espressioni facciali associate a particolari frasi espresse dalla macchina a seguito delle sue azioni o di quelle della persona Guardando a sviluppi futuri i miglioramenti sono limitati sempli cemente dalla fantasia dei creativi programmatori umani Una delle possibili migliorie potrebbe riguardare l espansione del modulo e2_brain in merito all interfaccia di elaborazione del linguaggio natu rale per aumentare il numero di interazioni del robot Ad esempio il robot potrebbe essere esteso per rispondere a comandi o quesiti della persona utilizzando una base di conoscenza pi estesa affiancata da un parser linguistico per determinare grammaticalmente il tipo di azione da compiere ad esempio se si tratta di un quesito o di un ordine L im plementazione attuale generata su una grammatica molto semplice e riconosce comandi o domande specifiche Uno sviluppo in questa dire zione aumenterebbe notevolmente il grado di interazione con il robot coinvolg
59. i navigazione gestendo le fasi di tracking e avvicina mento alle persone e pianificando le azioni da compiere mentre procede verso lo stand obiettivo Il modulo pu essere attivato utilizzando i ser vizi abilitati tramite interfaccia ROS o attraverso i messaggi ricevuti dal modulo e2_brain che verr descritto nel Capitolo 6 La definizione delle azioni disponibili di tale modulo riportata al l interno del file Nav action contenuto all interno della cartella action del modulo in analisi 5l goal definition uint8 action_id result definition uint8 action_id string result feedback uint8 action_id string status Listing 4 2 Implementazione Nav action Come si puo osservare dal dettaglio implementativo riportato sopra il goal di tale azione definito ricorrendo alla variabile action_id che determina quale azione deve compiere il modulo Le azioni richiamabili dal nodo sono quattro e Ricerca questa funzione permette al robot di generare una tra iettoria casuale nello spazio di lavoro con lo scopo di trovare una persona con cui iniziare un processo di interazione Avvicinamento richiamando questa funzione il robot utiliz zando i dati in suo possesso genera una traiettoria di avvicina mento verso la persona appena trovata Navigazione genera una traiettoria di navigazione verso lo stand obiettivo abilitando le funzioni di controllo per determinare se una persona lo sta seguendo e per cercarla in cas
60. i vocale ed in grado di compiere movimenti attraverso piccoli passi e mostrare differenti stati emotivi tramite un sistema di espressioni facciali Questo esempio mostra il tentativo di creare agenti sempre pi com plessi in grado di poter interagire con la societ che li circonda Questi sviluppi hanno portato alla nascita dei cosiddetti robot sociali descritti nel paragrafo successivo 2 2 Robot Sociali Secondo la definizione di Fong et al 15 i robot sociali rappresentano agenti inseriti in un gruppo eterogeneo siano essi robot o esseri umani Sono in grado di riconoscersi iniziare una interazione sociale e sono in grado di comunicare ed apprendere gli uni dagli altri Breazeal 10 fornisce una classificazione dei robot sociali basata sia sulla capacit del robot di supportare il modello sociale che gli stato attribuito sia sulla complessit dello scenario d interazione che il robot in grado di gestire Le categorie identificate sono 14 e Suggestivi socially evocative robot che hanno fatto affidamen to sulla propensione umana ad antropomorfizzare e capitalizzare le sensazioni provate nel momento in cui allevano si prendono cura o sono coinvolti dalla loro creazione e Collocati socially situated robot circondati da un ambiente so ciale in grado di percepirlo e di reagire ad esso I robot di questa categoria sono capaci di distinguere nel contesto dell ambiente gli esseri umani da qualsiasi altr
61. iente Tipicamente l immagine acquisita attraverso microscopia raggi X angiografia e tomografia Esempi di informazioni che possono essere dedotte dalle immagini sono la presenza di tumori arteriosclerosi o altre disfunzioni maligne 2 4 2 Organizzazione di un sistema di visione L organizzazione del sistema di visione dipende molto dal campo di applicazione Alcuni sistemi sono singole applicazioni che risolvono uno specifico problema di rilevamento o una misurazione mentre altri costituiscono sottosistemi pi ampi contenendo anche attuatori mec canici di movimento database interfacce uomo macchina Un altra caratteristica relativa all implementazione dipende anche dal tipo di operazioni da compiere ad esempio se sono funzionalit prestabilite o se necessario adattare i modelli di elaborazione durante le operazioni Tuttavia si possono stabilire alcuni processi che si possono trovare nella maggior parte dei sistemi visivi 1 Acquisizione Immagine Una immagine prodotta da uno o pi sensori che possono presentarsi sotto diverse forme dispositivi sensibili alla luce sensori di profondit radar camere ad ultra suoni A seconda dei sensori l immagine risultante potr essere 22 2D o 3D o una sequenza di immagini I valori dei pixel tipica mente corrispondono all intensit luminosa percepita in una o pi bande spettrali scale di grigio o a colori ma possono essere asso ciati anche a misurazioni fisich
62. inito dal parametro action Queste azioni verranno descritte in dettaglio successivamente I campi result e feedback sono sostanzialmente uguali con l eccezio ne che il feedback viene costantemente inviato durante l esecuzione di un azione per controllarne lo stato mentre il messaggio di result viene inviato una volta sola al completamento e o al fallimento di una azio ne Questi messaggi sono generati con la seguente descrizione e action id identifica il set dell azione in corso 80 e result status il parametro rappresentato da una stringa iden tifica lo stato dell attivita in corso o di quella terminata Ad esempio a seguito di un azione completata viene inviata la stringa SUCCEDEED o in caso di fallimento la stringa ABORTED Il robot quindi in grado di mostrare differenti espressioni facciali attraverso l attuazione dei servomotori Le possibili espressioni sono state configurate utilizzando lo script interno alla scheda Mini Maestro Pololu che gestisce il movimento della parte superiore del robot Le possibili espressioni mostrate sono elencate di seguito con riferimento al codice identificativo del parametro sub_action e Standard cod 1 espressione neutrale del robot utilizzata come posizione di partenza per i servomotori e Happy cod 2 espressione utilizzata dal robot ogni qualvolta riesce in un task o riceve complimenti da una persona e Angry cod 3 espressione utilizzata dal robot a seg
63. loat for i 0 i lt nTrainFaces i 68 int offset i nEigens cvEigenDecomposite faceImgArr i nEigens eigenVectArr 0 0 pAvgTrainImg projectedTrainFaceMat gt data fl i offset Salva i dati appresi in un file xml storeTrainingData Una volta condotta l analisi le informazioni vengono salvate su un database in formato xml abilitando il riconoscimento del volto appena appreso 5 2 2 Riconoscimento Volto Il riconoscimento dei volti viene eseguito effettuando due step principa li Inizialmente viene estratto il feature vector associato all immagine in esame nel sottospazio dei volti identificati Successivamente il vet tore estrapolato sar usato per effettuare il confronto di pattern simili a quelli presenti nel database creato nel paragrafo precedente 4 2 6 2 Face Immagine xy Immagine Feature Identit Video Allineata vector 7 w h Face Detection Feature Feature i e m Face Alignment gt Tracking Extraction Matching 4 2 6 2 4 2 6 2 Database Identit Features Figura 5 4 Processo di rilevamento Nel primo step viene quindi proiettata l immagine nel sottospazio dei volti dopo averla centrata rispetto alla mean face Il secondo pas so consiste invece nel trovare l immagine del training set che meglio approssima la sottofinestra in esame e prende il nome di Nearest Nei ghbor matching La soluzione pi semplice implementata n
64. lto aggiungendo un controllo proporzionale direttamente nelle schede motori riducendo le oscillazioni che si presentano sul collo dovuto a brusche accelerazioni e decellerazioni 7 2 Valutazione del Sistema di Visione L obiettivo del sistema di visione era di poter disporre di un meto do che permettesse al robot di riconoscere un volto umano in differenti contesti dinamici in cui il robot dovr operare Era necessario valutarne le prestazioni utilizzando differenti condizioni ambientali per valutare la risposta del sistema I test sono stati condotti con differenti fonti luminose per valutarne l impatto e utilizzando differenti posture del volto per determinare il tasso di successo nelle fasi di detection 88 Figura 7 2 Fase di rilevamento volto La fase di tracking viene eseguita correttamente senza problemi e il robot in grado di seguire lo spostamento di una persona sen za difficolt una volta identificatala e generato lo scheletro del corpo utilizzando il firmware del Kinect Figura 7 3 Sistema di tracking 7 3 Variazioni Luminose Le variazioni dell intensit luminosa incidono notevolmente sulla fase di addestramento del volto Si riscontrato un minor numero di succes si se l apprendimento del volto avviene in condizioni di illuminazione diverse da quelle in cui viene effettuata la detection Questo problema si riscontrato anche se con un tasso inferiore nell identificazione dei volti Tuttavia qu
65. me in questo caso lo sviluppo del modulo di visione stato un passo fondamentale per gli scopi del presente elaborato Il sistema sviluppato si affianca a quello precedentemente realizzato estendendo le funzionalit del robot dotandolo della capacit di rilevare volti e di memorizzarli per poterli poi riconoscere nell arco del processo di interazione Il capitolo articolato descrivendo come vengono individuati i vol ti tramite classificazione per poi focalizzare l attenzione sul modulo face recognition che implementa le funzionalit di rilevamento e rico noscimento 5 1 Rilevamento volti Il riconoscimento facciale una tecnica di intelligenza artificiale utiliz zata in biometria per identificare o verificare l identit di una persona a partire da una o pi immagini che la ritraggono Tipicamente l identificazione avviene mediante tecniche di elabo razione digitale delle immagini ignorando tutto quello che non rap presenta una volto come edifici oggetti o corpi estranei che vengono solitamente considerati come sfondo Si pu affermare che si tratta di un riconoscimento di pattern dove il pattern in questione il volto umano Per facilitare l individuazione di una faccia i primi sistemi tenevano conto di caratteristiche topologiche quali la presenza di due occhi un naso ed una bocca Tuttavia con i recenti sviluppi nel cam po ora possibile riconoscere una persona anche se questa ha il viso ruotato o c
66. nce on pages 586 591 IEEE 1991 Paul Viola and Michael Jones Rapid object detection using a boosted cascade of simple features In Computer Vision and Pat tern Recognition 2001 CVPR 2001 Proceedings of the 2001 IEEE Computer Society Conference on volume 1 pages 1 511 IEEE 2001 96 Capitolo 8 Conclusioni e Sviluppi futuri Appendice A Documentazione del software Il sistema stato sviluppato inizialmente sul simulatore V Rep per poi spostare lo sviluppo sul calcolatore del robot sul quale installato il sistema operativo Ubuntu Linux 14 04 LTS Per poter utilizzare il sistema correttamente necessario installare una versione ROS Robot Operating System seguendo il processo de scritto sul sito www ros org Il sistema stato sviluppato utilizzando la versione Hydro anche se stato correttamente testato sulla versione Indigo dello stesso Inoltre necessario installare i seguenti pacchetti se ancora non presenti e ros hydro navigation e ros hydro openni tracker e ros hydro actionlib e ros hydro pocketshinx e ros hydro openni launch e pico2wave Infine per testare il funzionamento del robot usando gli ambienti creati necessario installare il simulatore V REP seguendo le proce dure descritte sul sito http www coppeliarobotics com 98 Appendice A Documentazione del software A 1 Accesso Remoto E 2 Per accedere da remoto al robot possibile sfruttare la connessione interna
67. ne ed esecuzione di codice anche in forma distribuita su pi computer Da un punto di vista concettuale ROS puo essere diviso in tre livelli e Filesystem level definisce uno standard per la gestione e la creazione dei moduli che comporranno il sistema di controllo e Computation Graph level il grafo computazionale una rete peer to peer di processi ROS che si scambiano messaggi tra loro e pu considerarsi come il cuore dell architettura ROS e Community level una serie di strumenti messi a disposizione per favorire lo scambio di conoscenze e software e per il mante nimento dei pacchetti all interno della community Il Computation Graph una rete peer to peer dei processi ROS at tualmente in esecuzione Le entit di cui costituita tale rete sono principalmente le seguenti e Nodi i nodi sono processi che svolgono una computazione ROS stato progettato per essere un sistema altamente modulare e per questo motivo ogni singolo nodo dovrebbe occuparsi di un ristretto numero di obiettivi come il controllo delle ruote o i dati provenienti da un sensore come un laser o un sonar Per la scrittura dei nodi vengono messe a disposizione due librerie roscpp e rospy rispettivamente per il linguaggio C e Python e Master il nodo Master fornisce metodi per la ricerca e la regi strazione a tutti i nodi che fanno parte del Computational Graph Senza questo i nodi non sarebbero capaci di trovarsi scambiarsi messaggi o invoc
68. nfdtes gt Database 0 Proiezione training set _ nello spazio dei volti facelD feature vector eigenfaces Figura 5 3 Processo di addestramento Una volta salvate le immagini viene effettuato un processo di PCA Principal Component Analisys una tecnica statistica per trovare pattern con dimensionalit elevata Questa tecnica permette di identi ficare pattern nei dati e li esprime mettendo in risalto le loro differenze e similitudini Il PCA rappresenta i pixel dell immagine nello spazio delle coordinate definito dalla base ortonormale formata da alcuni degli au tovettori della matrice di covarianza Tale tecnica sfrutta il fatto che i template in esame cio le facce sono altamente correlate e quindi mol te coordinate sono poco significative Gli autovettori che definiscono il sottospazio dei volti vengono chiamati eigenfaces Turk and Pentland 27 e le immagini possono essere definite come combinazione lineare di questi ultimi Mediante l utilizzo della funzione cuEigenDecomposite poi viene ef fettuata la riduzione di dimensionalit delle immagini da salvare ot tenendo un feature vector che viene salvato in un database che verr usato per le operazioni di riconoscimento future Analisi immagini con PCA PCA Proietta le immagini da allenare nel sottospazio PC projectedTrainFaceMat cvCreateMat nTrainFaces nEigens CV_32FC1 offset projectedTrainFaceMat gt step sizeof f
69. ntroller stato implementato per garantire il cor retto dialogo con gli altri sistemi del robot e gestire le azioni della strut tura superiore di E 2 durante l interazione con le persone Il modulo si occupa della messa in funzione dei servomotori presenti all interno della testa e del collo di E 2 al fine di dare al robot un espressione coerente con la fase d interazione in atto La definizione delle azioni 79 disponibili di tale modulo riportata all interno del file Neck action contenuto all interno della cartella action del modulo in analisi goal definition uint8 action uint8 sub_action result definition uint8 action_id string result feedback uint8 action_id string status Listing 6 2 Implementazione Neck action Come si pu osservare dal dettaglio implementativo riportato sopra il goal di tale azione definito ricorrendo a due variabili e action questo parametro identifica i possibili set di azioni che possono essere richiamati Gli insiemi di azioni disponibili sono quattro e sono cosi ripartiti 1 identifica azioni per il movimento della faccia 2 abilita le azioni disponibili per il collo del robot 4 Identifica un insieme di azioni che permettono la configurazione real time del collo come velocit e accelerazione dei servomotori nonch una funzione per permettere di scollegare in sicurezza il collo del robot e sub_action identifica l azione specifica relative all insieme de f
70. o da ricercarsi nella necessit di ricevere costantemen te informazioni riguardo lo stato interno dei nodi sicch il robot sia sempre al corrente dello stato delle attivit In particolare questa li breria permette di creare un paradigma client server come mostrato in Figura 3 10 attivando una comunicazione attraverso il ROS Action 35 Protocol definito sopra lo stack dei messaggi ROS 1 Il paradigma permette di avere un nodo dedicato che si comporta come un server che resta in attesa di ricevere un goal proveniente da uno o pi client che ne fanno richiesta In tal modo pi nodi possono effettuare richie ste simultaneamente allo stesso nodo senza preoccuparsi che le loro richieste si sovrappongano o vengano perse Client Application Server Application user code user code callbacks function calls Action client sendGoal gt void executeGoal g Client function calls 4 callbacks Figura 3 10 Architettura interfaccia Actionlib Il sistema di controllo consta di un singolo nodo che ha lo scopo di pianificare le azioni che il robot dovr compiere per perseguire i suoi obiettivi Il nodo in questione e2_brain il quale decide valutando informazioni quali distanza interesse della persona e stato interno dei nodi quale sia la migliore azione da compiere Infine lo stack si com pone di una serie di pacchetti di configurazione e di avvio necessari per il corretto funzionamento dell inter
71. o di smarrimento Abort questa funzione permette al robot di annullare ogni task di navigazione attivo Viene utilizzata per permettere il blocco totale del robot da parte di un operatore Il nodo stato implementato utilizzando due classi di ogetti La prima definita nel file Navigation h definisce la classe Navigation in cui sono implementati i metodi precedentemente descritti e le funzio ni necessarie alla definizione di obiettivi sotto forma di coordinate sul piano cartesiano Inoltre sono disponibili i metodi che permettono di controllare lo stato del raggiungimento delle posizioni target e le fun zioni che controllano i comportamenti di rilevamento e recovery delle persone con cui si sta interagendo 52 La seconda classe la RobotInterface ha lo scopo di semplificare il dialogo con i nodi che controllano il collo del robot il sistema vocale il sistema di riconoscimento facciale e il movimento del motore del ki nect in modo da semplificare la stesura del codice e il dialogo con i vari sottosistemi Il nodo stato pensato in modo da essere altamente configurabile in modo da abilitare o disabilitare le funzionalit utilizzabili dal nodo in esame possibile disabilitare i sistemi di voce movimentazione del collo e kinect e disabilitare l addestramento del volto delle perso ne Inoltre si possono impostare file differenti da quelli di default in cui sono definiti le frasi da riprodurre e i marker che id
72. o oggetto e Socievoli sociable robot che di loro iniziativa entrano in con tatto con gli essere umani con l obiettivo di raggiungere i loro scopi sociali guidarli suscitare emozioni etc Questi robot richiedo no l implementazione di un modello complesso delle competenze ed attitudini sociali e Intelligenti socially intelligent robot che manifestano carat teristiche dell interazione sociale tipica dell uomo basandosi su modelli della cognizione umana e delle competenze sociali Il termine robot sociali interattivi Socially Interactive Robots iden tifica tutti quegli agenti per i quali l interazione sociale rappresenta un ruolo fondamentale distinguendo cos tali macchine da quelle carat terizzate da un interazione uomo robot convenzionale come i robot utilizzati per gli scenari di teleoperazione Un altra caratteristica importante dei robot interattivi sociali il loro design Molti robot infatti assumono sembianze sempre pi an tropomorfe per soddisfare le aspettative di comunicazione tipiche degli esseri umani In questo modo la comunicazione tra un robot ed un essere umano sar pi piacevole per una persona se questa si trova a suo agio Per questo motivo spesso vengono inseriti occhi e lab bra meccanici capaci di simulare movimenti e dare l impressione di una comunicazione con un con agente intenzionale Per quanto attiene al design questi robot possono essere ulteriormente classificati in due
73. o sistema A seguire lo stack di navigazione si compone di tutti quei nodi che supportano il robot nella movimentazione nello spazio di lavoro I pac chetti che ne fanno parte sono e e2 navigation questo nodo riceve i task di navigazione prove nienti dal modulo e2 brain pianifica e controlla le fasi di ricerca ed approccio verso una persona e la successiva fase di navigazione verso lo stand obiettivo e e2_nav_messages il robot una volta pianificata una traiettoria trasmette una serie di messaggi sotto forma di velocit lineari e angolari per seguire correttamente la via stabilita Il compito di questo nodo di convertire questi messaggi in un formato che 36 sia comprensibile dalla base omnidirezionale permettendone il movimento e e2_odometry il nodo riceve costantemente informazioni prove nienti dagli encoder delle ruote aggiornando periodicamente la posizione del robot nello spazio Pu essere utilizzato in due mo di differenti calcolando la posizione mediante i dati degli encoder o utilizzando i messaggi di velocit generati dal pianificatore nel caso i dati dagli encoder non siano disponibili ad esempio a se guito di un guasto Quest ultimo nodo ha un importanza cruciale per il corretto funzionamento del sistema di navigazione sen za un accurata informazione sul suo posizionamento il robot si sposterebbe seguendo una traiettoria non corretta La sezione di astrazione dell hardware raccoglie i nodi che c
74. omunque non in posizione frontale utilizzando tecniche pi raffinate ed algoritmi pi robusti Per questo progetto stato utilizzato un classificatore Haar like Ca scade Viola and Jones 28 Il punto di forza di questo sistema risiede in un algoritmo robusto ed estremamente rapido per il rilevamento di oggetti e nella possibilit di poter essere applicato facilmente per in dividuare volti umani Il modello si presta bene per lo scopo data l estrema velocit dettata dalla frequenza di ricezione di immagini e per l utilizzo di immagini definite sulla scala di grigio tutte caratte ristiche tipiche del sensore Kinect L algoritmo garantisce un tasso di errore molto basso nel rilevamento circa 1 di falsi negativi e il 40 di falsi positivi utilizzando un classificatore costruito utilizzando semplici Haar like features Il sistema di face detection composto da una cascata di classifi catori detti stage La cascata di classificatori riceve una sottofinestra dell immagine di partenza e restituisce come output il risultato della classificazione indicando se la porzione in esame un volto umano Gli stage sono posti in sequenza e in ordine di selettivit crescente Una finestra per essere classificata come contenente un volto deve superare con successo tutti i vari stage La procedura di rilevamento classifica le immagini utilizzando delle 62 feature il cui valore viene calcolato come la differenza tra la somma dei pix
75. ontrol lano i vari sistemi hardware del robot Ognuno di questi implementa le actionlib in modo da poter essere richiamati facilmente dai sistemi che ne fanno richiesta I pacchetti di cui si compone sono e e2_neck_controller tale modulo esporta tutte le funzionalit del collo e del volto di E 2 permettendo di richiamare movimenti ed espressioni pre programmate sulla Mini Maestro Pololu e e2_voice questo nodo riceve messaggi di testo che vengono pro cessati e trasformati in file audio per essere poi riprodotti dal robot consentendo il dialogo con la persona Il modulo imple menta la libreria SVOX garantendo una migliore resa audio e una maggiore fluidit del linguaggio A causa della mancanza di una voce maschile stato inoltre applicato un filtro audio real time per rendere la voce femminile disponibile in una pi mascolina e profonda e e2_sonar interpreta i dati ricevuti dai sensori ad ultrasuoni posti attorno alla base del robot per poi ritrasmetterli ai nodi che ne fanno richiesta tramite pubblicazione all interno del topic e2_sonar Queste informazioni sono un utile strumento per deter minare la posizione della persona durante la fase di avvicinamento verso lo stand obiettivo e kinect_motor si occupa di controllare il motore del sensore Ki nect modificandone l inclinazione verticale a seconda delle esi genze 37 Lo stack di analisi facciale permette di condurre due tipi di analisi dei volti delle person
76. pendenti le une dalle altre e sono state progettate tenendo in considerazione il costo di realizzazione ognuna di esse implementa una singola funzionalit della base controllo dei motori comunicazione interfaccia sensori interfaccia Ethernet esse sono collegate attraverso CAN bus in modo da partecipare ad una architettura publisher suscriber supportata dal sistema operativo real time ChiBiOS 14 Questo permette che l interazione tra le varie schede sia espletata in real time Ognuna di esse include un proces sore ARM intorno al quale sono sviluppate le singole funzionalit del modulo 27 3 1 3 Calcolatore Il robot dotato di un mini pc Shuttle DS81 supportato da un proces sore Intel Core i7 4770S 3 10GHz 8GiB di memoria ram e un Hard disk da 60GiB su cui installato il sistema operativo Linux Ubuntu 14 04 LTS Tale piattaforma riesce a garantire una sufficiente potenza computazionale senza sacrificare eccessivamente spazio e consumi 3 1 4 Collo e Testa Il collo progettato come una struttura mobile con differenti gradi di libert ed costituita da cinque moduli Fig 3 4 che ne permettono il movimento conferendo allo stesso tempo solidit e sicurezza all intero sistema La Figura 3 3 documenta una rappresentazione grafica della struttura del collo Il modulo superiore e quello inferiore sono identici ed insieme forniscono una inclinazione di 30 nei movimenti posteriori e di 60 per gli spostamenti
77. personale il robot si ritrae per segnalare il proprio disagio La cinesica invece la modalit che riguarda il movimento e l assunzione di posizioni si occupa dei gesti compiuti utilizzando una o pi parti del corpo ed in particolare l uso delle mani della mimica facciale e della postura Questa gestualit se opportuna 18 mente interpretata risulta essere una preziosa fonte aggiuntiva di informazione Aptica tutto quanto attiene al senso del tattile puo essere clas sificato con il termine aptica definito come l acquisizione dell in formazione e la manipolazione attraverso il tatto La realizzazio ne di interfacce aptiche sofisticate utilizzabili con robot sociali strettamente legata alla conoscenza dell aptica umana la com prensione delle abilit percettive motorie e cognitive dell utente infatti sono indispensabili per la realizzazione di un interfaccia aptica uomo robot Un esempio dei risultati ottenuti in quest a rea di ricerca Leonardo Fig 2 5b Questo piccolo robot stato rivestito da una soffice pelle sintetica capace di percepire e localizzare la pressione la densit dei sensori sparsi sul corpo del robot varia in funzione della frequenza con la quale una certa area entra in contatto con gli oggetti e le persone maggiore sulle mani e minore sulla schiena Figura 2 6 Paro Robot terapeutico per anziani e bambini Come descritto da questi studi l interfaccia utilizzata per
78. punto iniziale a un punto finale su una griglia in cui sono riportati sotto forma di costi ostacoli e muri ed utilizzando l algoritmo di Dijkstra viene pianificato un percorso di costo minimo da seguire 4 3 2 Local Planner Il local planner provvede al controllo e alla movimentazione della base mobile nello spazio Questo pianificatore pu essere visto come uno strato che collega il global planner al robot Il pianificatore crea una 49 Figura 4 6 In verde la traiettoria generata dal global planner traiettoria cinematica affinch il robot possa muoversi sotto forma di messaggi di velocit interpretabili dalla base Questo modulo agisce su una mappa di dimensioni ridotta con il robot al centro di essa ed uti lizza una funzione di valore basata sul costo per determinare le velocit di traslazione e di rotazione da seguire L algoritmo utilizzato il DWA Dynamic Window Approach 17 del quale viene riportato schematicamente il funzionamento 1 Viene fatto un campionamento di velocit nello spazio di controllo del robot dx dy dtheta 2 Per ogni velocit campionata viene effettuata una simulazione dallo stato corrente del robot per prevedere cosa accadr se la velocit in esame fosse applicata per un breve periodo di tempo 3 Viene valutata ogni traiettoria ottenuta dalla simulazione utiliz zando una metrica che incorpora caratteristiche come prossimit degli ostacoli vicinanza all obiettivo vi
79. rame che identifica il volto e il corpo di una persona rilevata nell ambiente Questi dati vengono utilizzati per generare una traiettoria e portarsi ad una distanza di interazione valutata intorno al metro di distanza dall interlocutore 4 5 2 Navigazione Stand Obiettivo Una volta rilevata una persona interessata il modulo procede alla navi gazione verso lo stand obiettivo Viene chiamata la funzione train_user che effettua laddestramento del volto della persona da condurre questa 56 fase verra descritta nel capitolo successivo Una volta terminato il pro cesso il robot procede come segue Viene dapprima generata una traiet toria verso lo stand obiettivo mediante la funzione nav_goto target_name_ e vengono abilitati i servizi che permettono di tener traccia della posi zione della persona rispetto al robot L estratto successivo mostra come viene attivato il comportamento di userDetection utilizzato quando il robot perde il contatto con una persona if path_planned_ amp amp rotating amp amp navigate_target Left Data if guest_user_info_ user_left if msg gt sonar6 gt 0 msg gt sonar5 gt 0 msg gt sonar4 gt 0 amp amp msg gt sonar6 lt USER_SONAR_DISTANCE msg gt sonar5 lt USER_SONAR_DISTANCE msg gt sonar4 lt USER_SONAR_DISTANCE float diff_ abs msg gt sonar6 msg gt sonar4 Er al ROS_INFO Navigation Sonar Fake data Maybe a Wall 3 guest user
80. ri quali laser scanner Il corpo del sensore contenuto in una barra orizzontale connes so ad un piccolo piedistallo motorizzato ideato per essere posizionato sopra o sotto il televisore utilizzato con la console Esso contiene una camera RGB un sensore di profondit un accelerometro ed un array di microfoni Il controllo avviene tramite firmware proprietario che consente il riconoscimento e l analisi del movimento di un corpo in una scena 3D ed il riconoscimento dei comandi vocali impartiti dall utente Sia il sensore di profondit che la camera RGB integrati all interno del dispositivo producono un segnale a 30 Hz 30fps con una risoluzione di 640x480 pixel 8 bit VGA nel caso della camera RGB 11 bit VGA nel caso del sensore di profondit che permette di discernere tra 2 048 31 livelli di sensitivit Tale sensore nello specifico costituito da un proiettore laser infrarosso combinato ad un sensore CMOS monocro matico il quale permette di catturare dati video in 3D sotto qualsiasi condizione di luce L array di microfoni formato da 4 periferiche processa un segnale audio a 16 bit 16KHz per ogni canale Il dispositivo infine alimen tato tramite connessione USB supportata da un alimentazione di 12V aggiuntiva che ha richiesto l inserimento di un ulteriore batteria all in terno del robot La principale innovazione proposta dal Kinect consiste nel software proprietario incluso al suo interno che consen
81. s ros ServiceServer start_service nh advertiseService e2_brain start start_callback 74 ros ServiceServer stop_service nh advertiseService e2_brain abort stop_callback I servizi esportati in fase di inizializzazione attendono comandi da parte di una persona per iniziare il processo di interazione Una volta avviato il robot il servizio notifica ai vari sistemi le varie azioni da compiere mediante goal definiti tramite actionlib if find_user i if navHandlerFree ROS_ERROR e2_brain Request to find a user sent at e2_navigation module navGoal action_id 1 navClient sendGoal navGoal amp navDoneCallback amp navActiveCallback amp navFeedbackCallback navHandlerFree false navClient waitForResult Il nodo resta poi in attesa del completamento dell operazione rice vendo le notifiche dai sistemi chiamati e gestendo le azioni da compiere Parte dell implementazione mostrata nell estratto seguente che mo stra come vengono gestite le chiamate terminate rispetto al modulo di navigazione void navDoneCallback const actionlib SimpleClientGoalState state const e2_navigation NavResultConstPtr amp result navHandlerFree true ROS_INFO e2_brain Navigation for task d s result gt action_id state toString c_str if state toString SUCCEEDED if result gt action_id 1 a find_user false approach_user true check_user_interested true
82. saac Asimov A lui si deve l idea delle leggi della robotica riportate qui di seguito e la visione di un mondo in cui i robot diventano parte integrante della societ e nel quale la robotica costituisce una potente industria 12 e Legge zero Un robot non pu causare danno all umanit 0 a causa della sua inazione permettere che l umanit venga danneg grata e Prima legge Un robot non pu causare danno ad un essere umano o permettere che un essere umano venga danneggiato e Seconda Legge Un robot deve obbedire ad un ordine impartito da un essere umano e Terza legge Un robot deve proteggere se stesso La visione che Asimov enuncia nei suoi libri non si discosta di molto da quanto effettivamente accaduto negli ultimi anni che hanno visto la lenta ma graduale introduzione dei robot nella vita di tutti i giorni come partner in ambito lavorativo come ausilio nella riabilitazione e assistenza ai disabili 0 addirittura come compagni di gioco nel tempo libero I tentativi di creare robot in grado di esibire comportamenti so ciali ed interagire con gli essere umani hanno popolato la storia della recente robotica La ricerca nel settore si rapidamente estesa dalla progettazione di macchine ispirate alle caratteristiche biologiche e com portamentali di organismi animali a quella di robot sociali ispirati alle modalit di relazione e comunicazione degli esseri umani Ripercorrendo la storia della robotica si no
83. se mobile omni direzionale Fig 3 2 composta da tre bracci in alluminio che sostengono la piat taforma in ABS Acrilonitrile Butadiene Stirene ove sono alloggiate le schede ed il calcolatore del robot La struttura fisica della base stata realizzata all interno dell AIRLab con elementi meccanici della Item ed i motori e i sottosistemi di trasmissione sono stati progettati cer cando di minimizzare il numero di elementi meccanici 6 Ogni braccio della struttura si compone dei seguenti elementi e Una combinazione motore trasmissione ed encoder della Maxon che coni 70 Watt erogati fornisce una forza sufficiente per muovere il robot anche a velocit elevate fino a circa 1 5 m sec e Due cuscinetti bloccanti Koyo model UP000 e Una ruota omni direzionale Opteq del diametro di 100mm 26 e Un giunto elastico Item utilizzato per collegare l albero di tra smissione alla ruota e per ridurre la trasmissione di sollecitazioni meccaniche La struttura cosi composta permette al robot di compiere movi menti fluidi e di muoversi in piena sicurezza nell ambiente Questa struttura ha sostituito la precedente base aumentandone la stabilit e migliorando le prestazioni complessive di navigazione Figura 3 2 Base modulo Triskar 3 1 2 Elettronica Gli elementi elettronici della base sono basati sull architettura R2P 9 un approccio modulare sviluppato da Martino Migliavacca all interno di AIRLab Le schede sono indi
84. service call e2_brain start 100 Appendice A Documentazione del software Il robot inizier a cercare autonomamente persone nell ambiente con cui iniziare un processo di interazione Per terminare il processo si pu usare il servizio stop esportato dallo stesso nodo rosservice call e2_brain stop Inoltre possibile testare singolarmente le funzionalit dei sistemi di navigazione mediante i servizi resi disponibili dal nodo Di seguito vengono presentati i principali servizi esportati con relativa funzione di utilizzo per il nodo e2 navigation 1 test_goto param Questo servizio permette di far muovere il robot fino al punto obiettivo identificato dalla variabile param come definito nel file marker_config 2 abort Permette di terminare ogni attivit presente nel nodo in esame 3 find_user Effettua la ricerca di una persona nell ambiente finch non ne viene identificata una 4 navigate_target Procede verso lo stand obiettivo effettuando le procedure di detection e backtracking Figura A 1 Ambiente Simulazione A 3 Simulatore Il robot viene in dotazione con degli ambienti gi configurati per il simulatore V Rep Per testare il funzionamento del robot avviare A 3 Simulatore 101 il simulatore e caricare uno degli ambienti disponibili nella cartella vrep_scenario Si aprir un ambiente come quello mostrato in Figura A 1 eseguire quindi il comando qui di seguito per avviare il con
85. sigenze con un dato nome Il cliente che richiede il servizio resta poi in attesa fino al completamento dell azione Publication Subscription Publication Figura 3 8 Esempio di un sistema ROS e Bags il bag un formato definito all interno di ROS per salvare i dati dei messaggi Sono un utile meccanismo per memorizzare in formazioni effettuare prove su algoritmi e per testare il funziona 34 mento dei pacchetti creati senza dover per forza agire fisicamente sul robot L architettura cosi presentata permette quindi di sviluppare un si stema di controllo anche molto complesso e facilmente estendibile at traverso la creazione di semplici nodi che utilizzino la struttura di comu nicazione appena descritta facilitando la fase di sviluppo e di testing Service invocation u a eeu un Publication Subscription Figura 3 9 Architettura Publisher Subscriber 3 2 2 Architettura software Come descritto nel paragrafo precedente l intero sistema di control lo adotta lo stile tipico del framework ROS in modo che ogni pac chetto gestisca una singola funzionalit del robot Concettualmente l architettura pu essere suddivisa in quattro strati 1 Controllo 2 Navigazione 3 Analisi Facciale 4 Astrazione Hardware I nodi che si occupano di gestire le componenti hardware del robot sono stati sviluppati utilizzando l interfaccia actionlib I motivi di que sta scelta son
86. stra la creazione della mappa mentre si guida il robot nello spazio Una volta ottenuta una mappa soddisfacente salvarla con il comando rosrun map_server map_saver f mappa Copiare la nuova mappa all interno del pacchetto e2_config nel la cartella map Creare un nuovo file di configurazione per gli stand obiettivo sulla falsa riga di quelli presenti nella cartella map_config del lo stesso pacchetto Infine aggiornare i riferimenti nello script di avvio e2_robot launch A 2 4 Avvio del Sistema Il sistema pu essere avviato richiamando lo script di avvio attraverso il comando roslaunch e2_launch e2_robot launch Il comando appena digitato avvier automaticamente tutti i nodi richiesti per il funzionamento dell intero processo Opzionalmente possibile avviare singolarmente ogni componente Ogni sottosistema o dispositivo che pu essere avviato dotato di un proprio script di avvio Per avviare singolarmente digitare roslaunch e2_launch components textit sistema launch sostituendo sistema con lo script che si vuole caricare Questo per mette di controllare singolarmente ogni modulo del robot Per mag giori informazioni sugli script disponibili esaminare il contenuto del pacchetto e2_launch nello specifico la cartella launch A 2 5 Avvio processo interazione Una volta che il robot pronto e carico pu essere avviato il processo di interazione attraverso il servizio start esportato dal nodo e2_brain ros
87. sult_ FAILED nav gt ActionReset Listing 4 6 Funzione Gestione task navigazione La funzione Navigation ActionController il cuore del modulo e viene utilizzata per espletare il task richiesto Questa viene eseguita ci clicamente fino al completamento dell attivit controllando al termine di ogni esecuzione la posizione del robot per stabilire il completamento dell attivit 55 4 5 1 Ricerca e Avvicinamento La prima tipologia di azioni attuabili dal nodo consiste nella ricerca di una persona nello spazio di lavoro Il robot genera una traiettoria causale utilizzando i punti di via definiti all interno dei file del pacchetto e2_config presenti nella cartella map_config Marker alls name base position 10 18 leon Ol orientation 0 0 1 0 Marker delg al name target position 11 2477 5 457 0 orientation 0 013 0 999 Marker delg 2 name random_1 position Ii352 078530 orientation 0 723 0 69 Come si vede nel codice riportato il file definisce differenti punti di via tramite il formato YAML I primi due punti identificano rispetti vamente il punto dal quale il robot inizia il suo processo di interazione e lo stand obiettivo che dovr raggiungere I marker successivi vengono richiamati per generare traiettorie casuali nell ambiente Una volta generata la traiettoria il robot si pone in attesa di rice vere informazioni dal nodo openni tracker il quale restituisce un f
88. ta come ogni nuova ge nerazione sviluppata tenda ad aumentare il proprio livello di autono mia assumendo comportamenti sempre pi inclini alla socialit e alla collaborazione Inizialmente i primi sviluppi erano incentrati su appli cazioni rigorosamente orientate nel campo industriale con la nascita dei primi manipolatori programmabili Fig 2 2a In seguito gli sforzi si sono concentrati verso il rapporto macchina ambiente garantendo un migliore percezione dell ambiente di lavoro tutto questo si tradotto nella creazione di agenti mobili in grado di muoversi nell ambiente cir costante e capaci di interagire con gli oggetti che li circondano Esempi evidenti di robot mobili si hanno nel campo dell esplorazione spaziale Fig 2 2b ove il robot deve far fronte ad eventi imprevedibili e quindi necessita di un elevato grado di autonomia Infine gli ultimi sviluppi hanno portato ad una nuova generazione di robot con sembianze antro pomorfe creando di fatto le prime forme di androidi ne sono esempi 13 j x J d 4 se 1 F he I iJ i Es a Manipolatore b Mars Rover c HRP 4C Figura 2 2 Alcune tipologie di Robot Actroid e HRP 4C Fig 2 2c HRP 4C un androide con un volto femminile creato dall istituto nazionale Giapponese per la scienza e la tecnologia AIST e mostrato in pubblico a Tokio il 16 marzo 2009 21 Il robot dotato di capacit di riconoscimento e sintes
89. tand obiettivo Se invece la funzione di userDetection non rileva la persona il robot esegue un altro comportamento quello di Backtracking che permette al robot di tornare all ultima posizione in cui era stata rilevata visiva mente la persona e viene generata una traiettoria fino a quel punto interrogando il nodo di face_recognition Se il robot arriva alla posi zione senza trovare la persona l azione viene annullata in quanto si considera la persona scomparsa ed il robot comunica il suo fallimento al nodo e2_brain che in seguito decider l azione successiva da compiere 59 60 Capitolo 5 Sistema di Visione Il vero viaggio di scoperta non consiste nel cercare nuove terre ma nell a vere nuovi occhi Marcel Proust Uno degli obiettivi primari della Computer Vision consiste nell identifi cazione di oggetti e corpi all interno di immagini digitali bidimensionali o 3D Un sistema di visione artificiale costituito dall integrazione di componenti ottiche elettroniche e meccaniche che permettono di ac quisire registrare ed elaborare immagini sia nello spettro della luce visibile sia al di fuori di essa Il risultato dell elaborazione il ricono scimento di determinate caratteristiche dell immagine per varie finalit di controllo classificazione selezione e via dicendo Il riconoscimento di oggetti in tempo reale quindi uno dei requisi ti fondamentali per numerose applicazioni robotiche e co
90. te un avanza to riconoscimento di gesti e movimenti Il software permette infatti il riconoscimento contemporaneo all interno della scena fino ad un mas simo di 6 utenti per due dei quali possibile l estrazione di 20 giunti tramite skeleton capability Tale funzionalit permette previa sincro nizzazione tramite l assunzione da parte dell utente di una determinata posa per alcuni secondi l estrazione dello schema dello scheletro del l utente e l identificazione dei 20 giunti principali Questo sensore si presta molto bene quindi per le elaborazioni ri chieste dal progetto ed pienamente supportato dall ambiente ROS 4 su cui stato sviluppato il software di controllo 3 2 Software In questa sezione verr descritto ROS Robot Operating System am biente utilizzato per lo sviluppo del sistema di controllo del robot intor no al quale sono state sviluppate le varie componenti dell architettura software Successivamente verr presentata l architettura software del sistema di controllo 3 2 1 ROS Robot Operating System ROS un meta sistema operativo progettato e sviluppato per la gestio ne ed il controllo di robot Esso mette a disposizione servizi tipici dei comuni sistemi operativi quali astrazioni hardware controllo di dispo sitivi di basso livello scambio di messaggi tra processi ed un sistema di gestione dei propri pacchetti A questo si aggiungono tool e librerie 32 per la scrittura compilazio
91. ter vision e il machine learning che implementa nativamente questo genere di classificazione 64 5 2 Il modulo face recognition Il modulo face recognition come descritto precedentemente ha il com pito di rilevare i volti delle persone e di confrontarli con quelli memo rizzati all inizio del processo di interazione con una persona Il nodo stato implementato per gestire due azioni principali memorizzare il volto di una persona e riconoscerlo all interno di una immagine Le chiamate al nodo vengono effettuate tramite la definizione di goal utilizzando l interfaccia actionlib Di seguito viene mostrata la definizione del FaceRecognition action goal definition uint8 order_id string order_argument result definition uint8 order_id float32 angle float32 distance string names float32 confidence feedback uint8 order_id float32 angle float32 distance string names float32 confidence Il goal definito da un valore numerico definito dalla variabile order_id che identifica le seguenti azioni 1 Riconoscimento volto cod 0 e 1 Il nodo pu riconoscere il volto di una persona singolarmente su un singolo frame pre so in esame o continuativamente aggiornando continuamente le informazioni provenienti da Kinect 2 Acquisizione volto cod 2 Permette di salvare immagini del volto della persona che verranno analizzate per effettuare il riconoscimento 3 Estrazione Featur
92. ti la soglia di confidenza valutata dal processo di matching la distanza dalla persona e l angolo 70 rispetto al centro della camera result_ names push_back frl personNames nearest 1 c_str result_ confidence push_back confidence result_ angle push_back angle result_ distance push_back distance as_ setSucceeded result_ Queste ultime due informazioni vengono valutate rispettivamente ap plicando il rettangolo del volto identificato sullo stream di profondita del Kinect e utilizzando la misurazione del centro dell immagine l ango lo invece viene calcolato attraverso una semplice interpolazione lineare viene calcolata la distanza dal centro dell immagine rispetto all asse x e questa misurazione viene moltiplicata per la formula 57 Ka 7 5 1 6402 4802 2 la quale esprime il rapporto tra l angolo e i pixel del sensore Kinect Nonostante il metodo non sia estremamente preciso in quanto l angolo di vista orizzontale di 57 del sensore frutto di una approssimazione e varia leggermente da dispositivo a dispositivo un Kinect ben tarato fornisce buoni risultati con questa semplice applicazione 71 72 Capitolo 6 Processo di Interazione Nessuno comprende l altro Siamo come ha detto il poeta isole nel mare della vita tra noi si inserisce il mare che ci limita e separa Per quanto una persona si sforzi di sapere chi sia l altra persona non riuscir a sapere niente se non qu
93. trollo roslaunch e2_launch simulation_robot launch Una volta avviato si possono testare le funzionalit come descritto nel paragrafo precedente rite with VED version 3101 00 REP DIO EDU Verse Figura A 2 Vista E 2
94. uito di un fallimento nel processo di interazione o quando il robot rileva di parlare con una persona sgarbata e Interested cod 4 espressione utilizzata quando il robot interagisce con un interlocutore particolarmente interessato e Invitation cod 5 espressione utilizzata nella fase di invito all interlocutore a seguire il robot verso un particolare punto di interesse e Start Speaking cod 6 Permette di attivare il movimento della bocca e Stop Speaking cod 7 Permette di terminare il movimento della bocca Inoltre queste espressioni possono esser mostrate assieme all emis sione di frasi da parte del robot come verr spiegato nel modulo e2_voice Tra i movimenti possibili nella sezione del robot possibile attivare una serie di movimenti del collo anche questi utilizzati duran te la comunicazione con una persona e per manifestare particolari stati emotivi di E 2 81 b Happy d Invite e Angry f Annoyed Figura 6 1 Espressioni riproducibili su E 2 Straight Neck cod 1 la posizione base del collo utilizzata durante la fase di navigazione importante far notare che per ottenere una corretta navigazione il collo deve trovarsi in posi zione eretta per non compromettere la validit dei dati ricevuti dal kinect che verranno poi processati dal nodo amcl Invitation Left cod 2 il collo effettua una movimento dia gonale all indietro verso sinistra prima di ritornare in posi
95. un sistema di localizzazione probabilistico AMCL che aiuti a migliorare la corretta predizione della posizione La scelta di utilizza re questo sistema garantisce un sistema robusto e facilmente adattabile ad altri robot senza richiedere elevate risorse computazionali o sensori dal costo elevato quest ultima richiesta era una prerogativa del pro getto Per questo stato utilizzato un semplice sensore Kinect che si affiancasse agli encoder del robot evitando l utilizzo di sensori pi pre 43 cisi quali laser scanner di costo molto superiore Di seguito vengono descritti i due sistemi che collaborano per effettuare la localizzazione del robot 4 2 1 Odometria L odometria una tecnica usata per stimare la posizione di un veico lo su ruote che si basa su informazioni provenienti da sensori interni al robot per calcolare lo spazio percorso e l orientamento I sensori utilizzati nel progetto sono tre encoder incrementali montati a monte dell asse motore e che forniscono le velocit in tempo reale delle ruote di E 2 In questo modo il robot in grado di valutare la distanza percorsa risultando una componente importante anche nell approccio ad ostacoli presenti nell ambiente 20 Tuttavia a causa della natura quantizzata dei valori ricevuti nel tempo le operazioni di differenziazione e integrazione non possono es sere applicate senza incorrere in approssimazioni che si traducono in un errore di posizionamento Per eff
96. una base mobile un collo articolato ed una testa meccanica in grado di mostrare differen ti espressioni facciali La testa Fig 3 la oltre a contenere al suo interno tutta la meccanica ed i servomotori per il controllo di occhi so pracciglia e bocca sostiene il sensore Kinect utilizzato per il sistema di visione artificiale e come sensore di navigazione Il collo stato proget tato per garantire da un lato una buona rigidit di tutta la struttura e dall altro per avere un buon numero di movimenti riproducibili Esso costituito da 5 servomotori che conferiscono i gradi di libert neces sari per compiere anche movimenti particolarmente complessi La base del robot infine contiene al suo interno tre coppie di motori elettrici per il controllo delle ruote che ne permettono il movimento un mini PC e sei batterie da 12 V che alimentano tutte le componenti del robot Tutto il controllo viene effettuato sul calcolatore del robot che uti lizza il framework ROS per supportare e facilitare lo scambio e la co municazione dei vari sottosistemi della macchina a Volto E 2 b E 2 Figura 3 1 E 2 robot sviluppato presso AIRLab Politecnico di Milano 3 1 Componenti Hardware Di seguito vengono presentate le principali componenti hardware del robot E 2 con particolare riferimento a quelle che hanno avuto un ruolo decisivo nello sviluppo dell elaborato 3 1 1 Base Mobile La struttura su cui poggia il robot una ba
97. utomation 2002 Proceedings ICRA 02 IEEE In ternational Conference on volume 4 pages 4138 4142 IEEE 2002 93 13 14 uu 15 ar 16 ji N 18 19 20 21 22 23 24 Amedeo Cappelli Emiliano Giovannetti and KDD Laboratorio L interazione uomo robot Technical report RoboCare Technical Reports 2003 Giovanni Di Sirio Chibios rt homepage ChibiOS RT free embedded RTOS Terrence Fong Ilah Nourbakhsh and Kerstin Dautenhahn A survey of socially interactive robots Robotics and autonomous systems 42 3 143 166 2003 Tully Foote tf The transform library In Technologies for Practical Robot Applications TePRA 2013 IEEE International Conference on pages 1 6 IEEE 2013 Dieter Fox Wolfram Burgard and Sebastian Thrun The dyna mic window approach to collision avoidance IEEE Robotics amp Automation Magazine 4 1 23 33 1997 Dieter Fox Wolfram Burgard Frank Dellaert and Sebastian Th run Monte carlo localization Efficient position estimation for mobile robots AAAI IAAI 1999 343 349 1999 Yoav Freund and Robert E Schapire A desicion theoretic gene ralization of on line learning and an application to boosting In Computational learning theory pages 23 37 Springer 1995 Giuseppina Gini and Vincenzo Cagliotti Robotica 2007 Kenji Kaneko Fumio Kanehiro Mitsuharu Morisawa Kanako Miura Shinichiro Nakaoka and Shuuji Kajita Cybernetic
98. zione eretta Questo movimento seguito da una frase sta ad indicare all interlocutore l invito del robot a seguirlo Invitation Right cod 3 effettua un movimento simmetri co al precedente con la differenza del lato in cui diretto Il significato il medesimo Give a Bow cod 4 il collo effettua un breve inchino prima di rialzarsi in posizione eretta Questo movimento stato utilizzato al termine del processo di interazione per permettere al robot di manifestare la sua gratitudine ad averlo seguito 82 e Bend Forward cod 5 il collo viene inclinato in avanti Questo rimane in questa posizione fin quando non viene richiesto di rialzarsi in posizione eretta e Bend Back cod 6 permette il movimento all indietro del collo Questo rimane in questa posizione fin quando non viene richiesto di rialzarsi in posizione eretta e Bend Left cod 7 permette di inclinare il collo del robot verso sinistra Come per le precedenti il robot resta in attesa in questa posizione e Bend Right cod 8 come il precedente con la differenza del movimento verso destra Inoltre gli script presenti sulla scheda Pololu sono stati modificati per permettere un movimento pi naturale del collo A causa della natura dei servomotori si verificavano vistose oscillazioni meccaniche dovute alle velocit di arrivo alle posizioni finali Questo causava una collisione con il blocco meccanico presente al fine corsa Questo proble ma
Download Pdf Manuals
Related Search
Related Contents
Tripp Lite OMNISMART 1050M User's Manual GA-78LMT-USB3 NO Monteringsanvisning 2 GB Installation manual 4 SE abbriata mini round hay baler user`s manual R&S VSE-K70 VSA User Manual PIANO VETROCERAMICA - Istruzioni per l'uso GLASKERAMIK 星崎 食器洗浄機 User guide for TF6000MHP Copyright © All rights reserved.
Failed to retrieve file