Scopri tutti gli articoli e le iniziative nelle varie sezioni del portale

Più consultati


Tags

Un robot autonomo che ha bisogno dei suoi spazi

02/12/2016


Un nuovo ospite per TIM Open: Matteo Luperto si occupa di Intelligenza Artificiale e Robotica presso il Dipartimento di Elettronica, Informazione e Bioingegneria del Politecnico di Milano. Ci racconta il prossimo big step per avere robot autonomi, ovvero il superamento della loro difficoltà nel riconoscere gli spazi

I robot nel nostro futuro

Una delle cose che più ci aspettiamo dal futuro, sin dai nostri sogni di bambini, è che ci siano dei robot che ci assistono durante le nostre attività giornaliere. Piccoli aiuti in questo senso li riceviamo già, come nel caso dei robot aspirapolvere, ma gli aiutanti-robot tipici della fantascienza sono molto lontani dallo stato della ricerca attuale.

Quanto e cosa ci manca, però, per avere dei robot che vivano tra noi?

Intuitivamente il problema sembra essere nella meccanica: l’attuazione, in altre parole nel corpo del robot.  Un robot infatti è un oggetto complesso, pieno di sensorimotoriconnessioni: molti di quelli che costruiamo oggi sembrano delle scatole con braccia, ruote e telecamere, più che degli eleganti umanoidi come ci si aspetterebbe. Quelli che già esistono, almeno in potenza possono esserci molto utili: se radio-comandati da un essere umano possono pulire casa, sistemare la tavola, riordinare e, più in generale, comportarsi in maniera simile ad un aiutante.

Un esempio si può vedere nell’interessante video di Pieter Abbeel https://www.youtube.com/watch?v=qBZPSTR96N4), dove risulta evidente come, se teleoperato, i task che un robot può già compiere sono innumerevoli. Se cerchiamo di dare loro autonomia, però, riescono a fare ben poche cose.  Il limite attuale non è tanto il loro corpo, quindi, quanto la loro mente.

Problemi di spazio

I robot hanno difficoltà a  comprendere l’ambiente in cui si trovano. Questo task cognitivo nell’ambito è definito comprensione dellasemantica, ovvero l’associazione di un significato a porzioni dello spazio in cui il robot opera, similarmente a come farebbe una persona: identificare le singole stanze (‘corridoio’, ‘cucina’) e gli oggetti che contengono. Questo processo è detto semantic mapping.

Viviamo in ambienti che sono creati per supportarci e agevolarci, come ad esempio le nostre case e gli uffici: questi stessi ambienti che facilitano la vita umana complicano l’attività del robot, costringendoli a interagire con un’enorme fonte di dati e stimoli sensoriali che, fino a che non vengono correttamente processati, costituiscono una fonte di errori ed incertezza. Ad esempio, un robot, se non adeguatamente istruito, non riesce a capire se un ostacolo che gli impedisce il cammino sia un oggetto, una persona, o una parete.

Il semantic mapping

Per un robot il riconoscimento della semantica dell’ambiente avviene partendo dalla mappa e grazie all’utilizzo dei sensori. Questi sensori, le proprietà percettive del robot, forniscono dati eterogenei, rumorosi (ovvero imprecisi) e difficili da gestire in maniera unitaria.

[FIGURA1]

Per gestire questa mole di dati disomogenei, il mapping semantico si rifà tipicamente a tecniche probabilistiche provenienti da ambiti diversi, come il Machine Learning, la Computer Vision e l’Intelligenza Artificiale. I dati sensoriali, analizzati singolarmente, vengonoaggregati in un framework dove l’ambiente in cui si muove il robot viene rappresentato a più livelli da astrazione:

  • Il più basso, e quindi più concreto, è la mappa metrica dell’ambiente, che considera solo l’occupazione dell’ambiente.
  • Il più alto, tipicamente rappresentato come un’ ontologia, viene usato per ragionare e trovare associazioni come, ad esempio, le relazioni che possono sussistere tra i vari oggetti rilevati in una stanza. Questo tipo di rappresentazione astratta è particolarmente importante, perché permette di effettuare inferenza logica (ad esempio derivando l’esistenza di alimenti all’interno di un frigorifero senza averli direttamente visti, semplicemente identificando l’oggetto “frigorifero”). Questo tipo di conoscenza di alto livello può essere integrata anche con l’interazione con le persone, ad esempio estraendo dalla frase “il bagno è in fondo al a destra” concetti come la presenza, la locazione e il contenuto di una stanza non ancora vista.

La mappa

La base della conoscenza a disposizione di un robot è, quindi, una mappa metrica, rappresentazione simile ad una pianta dell’ambiente  ricavata dai sensori. In molti casi applicativi, la mappa non è nota al robot, oppure si evolve nel tempo, come ad esempio in un bar in cui i tavolini vengono spesso spostati. In altri casi, la presenza di molti ostacoli rende la mappa particolarmente complessa da comprendere.

[FIGURA2]

Il robot deve quindi mappare l’ambiente e, contemporaneamente, localizzarsi all’interno della mappa che si è creato: questo processo è noto come SLAM, o Simoultaneous Localization and Mapping, ed è studiato oramai da molti di anni, anche con buoni risultati. Una mappa ottenuta dallo SLAM è puramente metrica, cioè dirà al robot in quali zone può passare e in quali no perché ci sono ostacoli, senza aggiungere alcuna informazione sulla semantica dell’ambiente. Un tipico esempio di mappa è una Occupancy  Grid Map, dove l’ambiente viene rappresentato con delle celle contenenti un valore che rappresenta la probabilità di occupazione.

I sensori

Al fine della percezione dell’ambiente, il sensore principale utilizzato da un robot mobile è uno scanner laser o lidar. Un lidar è composto da un laser che, ruotando su sé stesso, ottiene una scansione del circondario del robot di ampiezza di 180° o 360° gradi con una frequenza di campionamento tra i 2 ed i 100 hz,  rilevando in questo modo quanto siano distanti gli ostacoli dal robot.

L’output del lidar, in istanti successivi, viene aggregato incrementalmente per costruire la mappa (fare SLAM) usando un filtro probabilistico (tipicamente un Particle Filter, come il Rao-Blackwellized Particle Filter), che permette di correggere eventuali errori nell’odometria del robot (le errate misurazioni riguardo allo spostamento stimato del robot in base ai suoi dati di attuazione). I lidar, inoltre, sono usati per capire, a grandi linee, in che tipo di stanza il robot si trova; le scansioni vengono difatti classificate (usando ad esempio delle SVMs o più recentemente metodi di Deep Learning) in base alla loro categoria semantica: ad esempio, se l’ambiente è stretto e lungo, sarà probabilmente un corridoio.

L’informazione del laser è però molto semplice ed essenziale, e poco utile per capire la semantica dell’ambiente; più interessante è invece ragionare su cosa vede il robot, attraverso le videocamere: dai dati della visione si può capire quali oggetti sono presenti nell’ambiente (object recognition), se vi sono delle persone (e se si stanno muovendo) e qual è l’aspetto dell’ambiente circostante.

Oltre alle classiche camere sono molto usati dei sensori RGB-D, che associano all’immagine informazioni sulla profondità degli ostacoli rilevati. Un esempio di sensore RGB-D, molto usato per il suo prezzo economico e la sua versatilità d’uso, è il Microsoft Kinect(nonostante sia stato sviluppato inizialmente come videogioco, è molto apprezzato come strumento dalla comunità scientifica).

Il training di un robot

Dai dati ottenuti dalle camere e dalle immagini RBG-D vengono estratte delle features caratterizzanti dell’ambiente (dei descrittori dell’immagine, come ad esempio le SIFT), e attraverso l’uso di un classificatore (anche in questo caso SVMs e classificatori che usano Deep Learning) vengo ottenute delle etichette semantiche che descrivono l’ambiente. Queste, vengono collegate usando un framework probabilistico diretto o indiretto, come ad esempio un Markov Random Field o dei Bayesian Networks.

Nonostante il gran numero d’informazioni usate, una delle caratteristiche principali del mapping semantico è l’incertezza che contraddistingue tutti i dati ottenuti e che complica la loro fase di classificazione: se le condizioni di luce cambiano, e questo vuol dire anche solo dal mattino al pomeriggio, lo stesso posto può avere immagini completamente diverse.

Anche i metodi che riconoscono la presenza degli oggetti nell’ambiente si basano su features ottenute dalle immagini, e quindi risentono di queste problematiche. Inoltre, un robot, può riconoscere solo quegli oggetti che gli sono stati “insegnati” in precedenza. La fase di training del riconoscimento può essere complicata e richiede o una gran mole di dati (ad esempio migliaia di immagini dello stesso oggetto prese automaticamente da una fonte come Flickr o Google Immagini) o un training diretto del robot, cui viene mostrato da diverse prospettive l’aspetto dell’oggetto al fine di identificare dei pattern di features dalle immagini che fungeranno da identificatori dell’oggetto stesso. Notate come qui non si parla ancora di interagire con l’ambiente, cercando di spostare una sedia o prendendo in mano un barattolo: tutte queste problematiche sono relative soltanto alla percezione e alla comprensione dell’ambiente, non all’interazione.

Occlusione e inferenza

Un altro problema che spesso inficia le capacità percettive di un robot è quello dell’occlusione, problema significativo sia con gli scanner laser che con le camere RGB-D. Ogni oggetto che è presente nell’ambiente nasconderà al robot tutto ciò che gli sta dietro: se vedo un divano non vedrò i mobili dietro ad esso, se ho una sedia in mezzo alla stanza nella mia mappa avrò probabilmente un buco a forma di sedia perché non ho modo di capire cosa essa nasconde. I robot, per loro natura, considerano solo quello che hanno visto, che per loro esiste, mentre il resto, vuoto, non esiste. Un oggetto che viene quindi parzialmente occluso, risulterà di difficile percezione, e aree occluse nella mappa vengono considerate come ignote. Questo comportamento è innaturale: sarebbe come se una persona andasse alla casa nuova di un proprio amico supponendo che questa non abbia il bagno fino a che non ci sia andato per la prima volta. Il compito di andare a identificare delle nuove caratteristiche dell’ambiente non ancora completamente osservate viene dettoinferenza, e, allo stato attuale, viene visto come una conseguenza delle fase di mapping e di processing dei dati sensoriali. L’inferenza logica classica, sviluppata e testata in robotica già dagli anni 70 applicando tecniche standard di intelligenza artificiale, aiuta poco in questo compito, permettendo di inferire dell’informazione di scarsa utilità o poco supportata dai dati.

L’interpretazione di un ambiente, che a noi viene naturale e immediata, è quindi un compito molto arduo per una macchina: presuppone una serie di operazioni che avvengono simultaneamente e che sono una dipendente dall’altra.

Nonostante queste limitazioni e la difficoltà dell’ambito, pensare a dei robot che ci supportino  non è una utopia. In particolare possono essere sviluppati (e in alcuni casi esistono già, anche se solo in ambito di ricerca) robot che svolgono un compito preciso, in un ambito ben definito. Queste applicazioni sono facilitate da una comunità attiva e partecipativa di robotici soprattutto anche grazie alla condivisione di risorse e conoscenze. Un esempio notevole in questa direzione è ROS, un sistema operativo per robot basato su linux e sviluppato dalla comunità in cui ogni ricercatore può trovare dei moduli per alcune attività già implementati e pronti all’uso, ed un supporto per l’utilizzo immediato di robot commerciali (anche di prezzo abbordabile) e didattici come i Turtlebot.

[FIGURA3]

Quali sono le caratteristiche di un Turtlebot?

  • costo contenuto (intorno al migliaio di euro)
  • costruzione su di una piattarforma mobile creata su di un roomba, cui sono montati un computer e dei sensori a basso costo come il Kinect
  • sviluppo su sistema operativo ROS

L’utilizzo di questo tipo di macchina permette di avere dei feedback diretti ed immediati sulle capacità di un robot mobile autonomo senza avere alti costi di acquisto, manutenzione e sviluppo, fattore che fino a qualche anno fa limitava il progresso scientifico nella materia.

Per concludere, facendo da guida in un museo, aiutando a trovare un reparto in un ospedale o un negozio in un centro commerciale, i robot saranno via via sempre più parte della nostra vita quotidiana. Ogni nuovo robot che viene sviluppato, anche per un compito limitato e circoscritto, è un piccolo passo verso la soluzione di quell’obiettivo complicato ma futuribile che è costruire la robotica mobile autonoma.

Bio:

Matteo Luperto è un Ph.D Candidate in Intelligenza Artificiale e Robotica presso il Dipartimento di Elettronica, Informazione e Bioingegneria del Politecnico di Milano, dove si è laureato in Ingegneria Informatica. Nel 2012, da studente magistrale, ha partecipato e vinto a Città del Messico la RoboCup Search&Rescue Virtual Robot Competition, assieme agli studenti del team “PoAReT” del Politecnico di Milano.

Matteo si occupa di robotica mobile autonoma, e in particolar modo di metodi per il mapping e la percezione semantica di edifici, concentrandosi sui suoi utilizzi legati all’esplorazione di ambienti non noti.