next up previous contents
Next: L'architettura software del robot Up: Il robot Previous: La struttura fisica

L'architettura software: generalità

Un robot è una unità complessa di sistemi di percezione, elaborazione, attuazione, che devono integrarsi in una struttura organica. La forma da dare a questa struttura è tutt'ora oggetto di ricerca [3, ] e di animata discussione. Tuttavia, le architetture realizzate finora si possono raccogliere in due generi principali e in un genere ibrido, prodotto dalla commistione degli altri due.

L'approccio più convenzionale, originato dalle ricerche di intelligenza artificiale negli anni `70, sviluppa la struttura del robot in una gerarchia di livelli di astrazione.

I livelli più alti nella gerarchia operano a un livello più astratto dei livelli inferiori. Ogni livello ha il compito di isolare i livelli superiori dai dettagli del suo funzionamento e dalla variabilità del mondo reale, utilizzando i dati ai quali ha localmente accesso e deve fornire informazione corretta, al meglio delle proprie possibilità, ai moduli superiori. Questi sistemi si strutturano in un insieme di ``scatole nere'', ognuna con ingressi, uscite e finalità proprie. Una sottocomponente è influenzata e influenza le altre in modo limitato e solamente attraverso interfacce ben definite. I livelli delle architetture classiche sono costituiti da: acquisizione di dati sensoriali, costruzione del modello del mondo, pianificazione delle azioni, controllo dell'attuazione.

L'esempio paradigmatico di questo tipo di architettura è Shakey, il robot mobile dell'Università di Stanford, implementato da Nilsson []. Shakey si muove all'interno di una serie di stanze appositamente preparate per il robot: tutti gli oggetti sono costituiti da prismi opachi, con le faccie di colori contrastanti. I sensori che il robot utilizza per esaminare il mondo circostante sono di tipo visivo.

Il livello percettivo, estrae i bordi dalle immagini dei prismi e genera una descrizione simbolica della scena osservata, in termini di solidi geometrici.

Il livello di pianificazione progetta un percorso facendo uso della descrizione simbolica, producendo una traiettoia.

Il livello di attuazione converte la traiettoia in una serie di comandi per i motori.

La realizzazione di Shakey ha rappresentato un importante punto di verifica e confronto. Tuttavia i risultati non erano incoraggianti: malgrado le semplificazioni introdotte nell'ambiente, Shakey richiedeva enormi risorse di calcolo ed era molto sensibile ai cambiamenti che avvenivano nel suo ambiente: anche lo spostamento delle ombre dovuto al movimento del sole confondeva il sistema percettivo.

L'approccio classico è considerato impraticabile, nel caso migliore, a causa della complessità computazionale [2] del compito di mantenere un modello esplicito del mondo circostante, e nel caso peggiore dell'impossibilità di generare un modello del mondo a causa dell'impredicibilità del mondo reale e dei sensori. D'altro canto, questo approccio di tipo simbolico possiede i pregi di interfacciarsi in modo naturale con sistemi esperti e pianificatori tradizionali, è in grado di interpretare comandi in forma simbolica (per esempio, ``vai nel mio ufficio'' è un comando di tipo simbolico), ed è semplice fornire un comportamento finalizzato al sistema.

L'approccio opposto è rappresentato dalle architetture di tipo reattivo, il cui esempio paradigmatico è la subsumption architecture di Brooks [].

I comportamenti che si vogliono implementare sul robot vengono tradotti in una gerarchia livelli comportamentali. I livelli non operano a livelli di astrazione differenti, ma si differenziano per lo scopo al quale tendono. Ogni livello è rappresentato da una funzione di controllo che connette lo stato dei sensori con i comandi da inviare agli attuatori, nel modo più diretto possibile. Spesso il ciclo di controllo è privo di memoria, e l'azione di controllo dipende solo dallo stato istantaneo dei sensori. La generazione di modelli astratti del mondo a partire dai dati è minima o assente, citando Brooks: ``il mondo è il miglior modello di sè stesso''.

La rigidità e la limitatezza dei singoli livelli vengono superate mediante i meccanismi di interazione tra i livelli. Ogni livello tende a un proprio scopo in modo autonomo, risolvendo i conflitti con gli altri livelli mediante un meccanismi di inibizione: un livello può sopprimere temporaneamente o permanentemente gli ingressi e le uscite degli altri livelli.

Un sistema di navigazione viene implementato a partire dal livello più basso: il primo comportamento è di non muoversi in una direzione dove i sensori hanno rivelato un ostacolo. Il secondo livello cerca di dirigersi verso una direzione precisa, senza preoccuparsi degli ostacoli, affidandosi al fatto che il livello inferiore si occuperà di modificare i comandi motorî quel tanto che basta per impedire collisioni. Il terzo livello può cercare di portare a termine un compito più complesso, come la ricerca di oggetti specifici, affidandosi alle capacità dei moduli inferiori per i dettagli della navigazione, e così via.

I sistemi reattivi sono caratterizzato da un ``comportamento emergente'', non completamente determinato in fase di progettazione, ma generato dalle interazioni dinamiche dei diversi moduli. La complessità delle possibili interazioni tra livelli permette al robot di disporre di un gran numero di comportamenti, rendendolo adattabile anche a situazioni per le quali non è stato esplicitamente predisposto.

Le architetture di tipo reattivo hanno il pregio di richiedere un carico computazionale ridotto, grazie al quale sono in grado di esibire reazioni rapide e appropriate allo stato del mondo. Inoltre sono in grado di avvantaggiarsi opportunisticamente di avvenimenti inaspettati. Le caratteristiche negative sono la difficoltà di finalizzare i comportamenti e di interfacciarle con sistemi simbolici.

In sintesi:

Le architetture di tipo ibrido tentano di prendere le caratteristiche migliori delle due, conciliandone gli opposti estremismi.

L'architettura Atlantis, sviluppata al JPL, è un buon esempio di sistema ibrido. Erann Gat, uno dei progettisti, in [6], riassume la sua esperienza, traendone una serie di considerazioni generali.

Le conclusioni di Gat sul modo di progettare un sistema robotico sono riassumibili in questi punti:

  1. Le architetture di controllo dei robot dovrebbero essere eterogenee. Tentare di usare le medesime strutture per la pianificazione ad alto livello e il controllo a basso livello dei motori, come spesso si è tentato di fare, non è ragionevole. Utilizzare strutture specializzate per ogni compito è un approccio semplice e funzionante.

  2. Le architetture di controllo dei robot dovrebbero essere asincrone Computazioni lente devono avvenire parallelamente a quelle veloci, in modo da poter reagire velocemente agli imprevisti. Le azioni dovrebbero avvicendarsi in modo continuo, permettendone la sovvrapposizione o la terminazione prematura in risposta a situazioni inaspettate.

  3. La pianificazione classica, l'astrazione e i modelli centralizzati del mondo sono almeno utili, se non necessari, per la costruzione di robot autonomi operanti nel mondo reale. Sebbene sia possibile implementare pianificatori e modelli del mondo in modo non classico o distribuito, non offre evidenti vantaggi rispetto al metodo classico. L'astrazione è un potente mezzo per gestire l'imprevidibilità dell'ambiente.

  4. I piani dovrebbero guidare l'azione ma non controllarla questa ipotesi è stata avanzata da Agre e Chapman, col nome di ``plans-as-communications'' o ``plans-as-advice'' [1].

  5. I robot dovrebbero essere progettati in modo bottom-up


next up previous contents
Next: L'architettura software del robot Up: Il robot Previous: La struttura fisica



Alex Cozzi
Fri Dec 8 19:08:26 MET 1995