Come possiamo formare un behaviour emergente più complicato dei semplici behaviour?
Alla stessa maniera dei campi di potenziale più complicati che sono costruiti da campi primitivi: combinando instanziazioni multiple di behaviour primitivi.
Questo può essere visto rivisitando il behaviour di esempio che descriveva l’architettura a sussunzione.
Nel caso del Livello 0 nella sussunzione, se non ci sono ostacoli all’interno del raggio d’azione, il robot non sente la forza repulsiva ed è immobile. Se un ostacolo entra all’interno del raggio d’azione ed è rivelato da più di un sonar, ognuna delle letture sonar crea un vettore, puntando il robot nella direzione opposta.
Nell’esempio della sussunzione , si può immaginare, che questi vettori vengano sommati nel modulo GENERAZIONE_MOTO come in figura. In un sistema a campi di potenziale, ciascuna lettura sonar rilascia un’istanza del behaviour GENERAZIONE_MOTOpf (“pf” è usato per rendere chiaro quale GENERAZIONE_MOTO è assegnato). Il behaviour di GENERAZIONE_MOTOpf usa un campo di potenziale repulsivo. I vettori di output sono quindi sommati, e il vettore risultante è usato per guidare la svolta e l’avanzamento del motore.
Il modulo RILEVATORE_DI_COLLISIONI nella sussunzione non coincide con un behaviour nella metodologia a campi di potenziale.
Si ricordi che lo scopo di RILEVATORE_DI_COLLISIONI è fermare il robot se tocca un ostacolo; e questo accade se il behaviour GENERAZIONE_MOTO fallisce.
Questa descrizione va bene per la definizione di behaviour, cioè:
ha un input sensorio (distanza dall’ostacolo = 0) ed un pattern riconoscibile dell’attività motoria (si ferma).
Ma non produce un campo di potenziale, a meno che un campo uniforme di vettori di ampiezza 0 non sia considerato lecito. Se fosse trattato come un behaviour, il vettore a cui esso contribuisce sarebbe sommato con gli altri vettori prodotti dagli altri behaviour. Ma un vettore di ampiezza 0 è la funzione identità per la somma dei vettori, così un vettore RILEVATORE_DI_COLLISIONI non avrebbe alcun impatto. Invece le collisioni sono spesso trattate come situazioni di “panico”, provocando una risposta di emergenza fuori della struttura del campo di potenziale.
Alcune differenze più sottili tra campi di potenziale e sussunzione appaiono quando è considerato il caso del Livello 1. La stessa funzionalità può essere portata a termine aggiungendo un solo blocco di behaviour VA_IN_GIRO, come mostrato in figura.
Come prima, il behaviour genera una direzione nuova per muoversi ogni n secondi. Questo potrebbe essere rappresentato da un campo di potenziale uniforme dove il robot sente la stessa attrazione ad andare in una certa direzione, incurante di dove si trova, per n secondi. Comunque, combinando l’output di VA_IN_GIRO con l’output dei vettori di GENERAZIONE_MOTOpf, il bisogno di un nuovo behaviour EVITA è eliminato. Il vettore VA_IN_GIRO è sommato al vettore repulsivo e di conseguenza, il robot si allontana contemporaneamente dagli ostacoli e va verso la direzione desiderata. Questo è mostrato nella figura a lato.
Le differenze principali in questo esempio sono che i campi di potenziale esplicitamente incapsulano percezione e azione in behaviour primitivi, e non devono sussumere nessun behaviour più basso. Come con la sussunzione, il robot diventa più “intelligente” quando il behaviour VA_IN_GIROpf viene aggiunto al behaviour GENERAZIONE_MOTOpf.
Ora vediamo, per il Livello 2, come sarebbe implementato SEGUI IL CORRIDOIO in un sistema a campo di potenziale.
In questo caso si vede bene la differenza concettuale tra i due approcci.
Il robot avrebbe due behaviour concorrenti: GENERAZIONE_MOTOpf e SEGUI IL CORRIDOIO. GENERAZIONE_MOTOpf rimarrebbe lo stesso di prima, ma VA_IN_GIRO potrebbe essere scartato.
In termini di campi di potenziale, il task di seguire un corridoio richiede due behaviour simili, mentre il task di vagare richiede due behaviour diversi.
Il behaviour SEGUI IL CORRIDOIO è interessante, perché richiede un campo di potenziale più complesso.
Sarebbe desiderabile per il robot stare nel mezzo del corridoio. Questo può essere fatto usando due campi di potenziale: un campo uniforme perpendicolare al confine sinistro fig. a) e che punta al centro, ed un campo uniforme perpendicolare al confine destro fig. b) che punta al centro. Si noti che entrambi i campi hanno un decremento lineare in ampiezza non appena il campo si avvicina al centro del corridoio. In pratica questo abbassamento impedisce al robot di oscillare al centro.
Si noti anche che i due campi uniformi non sono sufficienti perché non permettono al robot di muoversi in avanti; il robot si muoverebbe nel mezzo del corridoio e si fermerebbe là. Perciò si aggiunge un terzo campo uniforme che è parallelo al corridoio. Questi tre campi combinati producono un campo smussato che spinge il robot nel mezzo del corridoio secondo una funzione di prossimità al muro, mentre contemporaneamente il robot va spostandosi in avanti. La figura sotto mostra i campi coinvolti. Si ricordi, in questo esempio, che il robot non sta proiettando confini passati o futuri del corridoio; la visualizzazione del campo lo fa apparire come in fig. c)
Il behaviour di SEGUI IL CORRIDOIO usa gli stessi dati dei sonar di EVITA; perciò i muri produrranno un campo repulsivo che generalmente spingerebbe il robot verso il mezzo del corridoio.
Perché non usare un solo campo parallelo uniforme per SEGUI IL CORRIDOIO?
Prima di tutto i behaviour sono indipendenti. Se c’è un behaviour SEGUI IL CORRIDOIO, esso deve essere capace di seguire i corridoi senza dipendere da effetti collaterali dagli altri behaviour. Secondo, la simmetria polare dei campi repulsivi può causare oscillazioni, così c’è un vantaggio pratico ad avere un behaviour separato.
L’uso di conoscenza di behaviour-specifico del dominio (data al momento dell’instanziazione come un parametro di inizializzazione opzionale) può migliorare ulteriormente il behaviour complessivo del robot. Se il robot conosce l’ampiezza del corridoio a priori, SEGUI IL CORRIDOIO può sopprimere le istanze di EVITA perché per gli ostacoli sa che quella è la forma del confine del muro. Quindi eviterà solamente gli ostacoli che sono nel corridoio. Se non ci sono ostacoli, follow-corridor produrrà una traiettoria diritta. Se gli ostacoli sono prossimi ad un muro, il SEGUI IL CORRIDOIO tratterà il profilo dell’ostacolo come un muro e si sposterà più vicino al centro.
Gli schema motori per un behaviour possono essere ordinati in sequenza. Un esempio di questo è il behaviour di ACCOSTA. ACCOSTA (approccio) è quando un robot si deve muovere verso una specifica ubicazione (la stazione di ACCOSTA) con un certo orientamento.
Questo è utile per i robot che maneggiano materiali in una industria. Per prendere un pezzo di materiale da trasportare il robot deve, nella sua posizione finale, essere abbastanza vicino al lato giusto del nastro trasportatore e trovarsi rivolto verso di esso.
Poiché il ACCOSTA richiede una specifica posizione ed orientamento, non può essere fatto con un schema motorio attrattivo. Con questo campo il robot andrebbe in linea retta verso il nastro, anche se fosse alle sue spalle; il robot si fermerebbe nella posizione giusta con l’orientamento sbagliato. Invece, è necessario un campo di attrazione selettivo. Qui il robot “sente” solamente la forza attrattiva quando è all’interno di un certo range angolare della stazione di ACCOSTA, come mostrato in fig. a.
Sfortunatamente l’attrazione selettiva non copre il caso di quando il robot si avvicina dalla parte posteriore o alle sue spalle. Come si può muovere un robot in un’area dove c’è un campo di attrazione selettivo? Un modo per fare questo è avere un campo tangenziale che permette al robot di orbitare attorno al MOLO finché non entra nell’area di attrazione selettiva. La combinazione dei due schemi motori produce un campo continuo che fa convergere il robot nella posizione ed orientamento corretto, come mostrato in figura.
Un aspetto interessante del behaviour di ACCOSTA è quando il robot sta operando in prossimità del MOLO.
Il MOLO rilascia un’istanza di EVITA che impedisce al robot di andare vicino alla posizione desiderata.
In questo caso, i behaviour di ACCOSTA devono attenuare l’ampiezza (il guadagno) del vettore di output dell’ EVITA instanziato nell’area di MOLO.
Essenzialmente questo è come se inibisse in parte il behaviour di EVITA in alcune regioni selezionate.
Avremo quindi che tra attrazione e repulsione il robot si ferma dove l’attrazione selettiva del MOLO si bilancia con la repulsione.
I campi selettivi e tangenziali non sono sufficienti in pratica, a causare delle limitazioni percettive. Se il robot non può vedere il MOLO, non può istanziare i campi.
E’ probabile che un robot industriale sappia la direzione relativa di un MOLO molto di più di quanto un’ape ricordi la direzione del suo alveare. Perciò una forza attrattiva attira il robot vicino al MOLO, e poi quando il robot vede il MOLO, comincia l’effetto di incanalamento verso la posizione con l’orientamento corretto anche in presenza di ostacoli, come si vede in fig. a)
Almeno tre schemi percettivi sono necessari per il behaviour di ACCOSTA. Uno è necessario per estrarre la direzione relativa del MOLO per l’attrazione regolare.
Un altro è uno schema percettivo capace di riconoscere il MOLO in generale, anche dalla parte posteriore o dai lati, al fine di sostenere il campo tangenziale.
Il terzo schema percettivo è necessario per il campo di attrazione selettiva e deve essere capace di interagire con la parte anteriore del MOLO e valutare la distanza e l’orientamento relativo del robot.
Il behaviour di ACCOSTA è definito quindi come costituito da tre schemi percettivi e tre schemi motori (potrebbero essere raggruppati in 3 behaviour primitivi). Una rappresentazione in termini di schema-theory indica che il behaviour ha alcuni programmi di controllo per coordinare e controllare questi schemi.
Nel caso del behaviour di ACCOSTA, una macchina a stati finiti è una scelta ragionevole per coordinare la sequenza di schemi percettivi e motori.
Essa fornisce una maniera formale per rappresentare la sequenza, ed anche ricorda al progettista di considerare transizioni di stato fuori dell’ordinario.
Il robot per esempio potrebbe stare muovendosi verso il MOLO sotto l’influenza dei campi tangenziali e dell’attrazione selettiva. Se una persona gli passa davanti, essa occluderebbe la vista del MOLO e quindi cesserebbe l’attrazione. Allora si riattiva lo schema motorio di attrazione generale, e insieme allo schema percettivo associato rivalutano la direzione del MOLO alla luce del nuovo ostacolo.
Il nuovo vettore permetterebbe al robot di evitare la persona andando in una direzione favorevole al raggiungimento del MOLO e tentare di raggiungerlo.
Il behaviour di ACCOSTA illustra anche quale impatto hanno le capacità sensoriali del robot sui parametri dello schema motorio.
Si noti che l’ampiezza angolare del campo di attenzione selettivo è determinata dagli angoli ai quali il terzo schema percettivo potrebbe identificare il MOLO.
Similmente il raggio del campo tangenziale e di attrazione selettiva è determinato dalla distanza alla quale il robot può percepire il MOLO.
L’architettura a campo di potenziale ha molti vantaggi.
Il campo di potenziale è una rappresentazione continua che è facile visualizzare su una grande regione dello spazio. Di conseguenza, è più facile per il progettista visualizzare il behaviour complessivo del robot.
È anche facile combinare campi, e, linguaggi come C++, forniscono strumenti per la creazione di biblioteche comportamentali.
I campi di potenziale possono essere parametrizzati: il loro range di influenza può essere limitato e una funzione continua può esprimere il cambio in ampiezza rispetto alla distanza (lineare, esponenziale, ecc.).
Inoltre un campo bi-dimensionale di solito può essere esteso ad un campo tri-dimensionale, e così behaviours sviluppati per 2D vanno bene anche per il 3D.
Costruire un sistema reattivo con campi di potenziale non è senza svantaggi.
Il problema comunemente più citato con i campi di potenziale è quello che campi multipli possono portare ad un vettore con ampiezza 0; questo è chiamato il problema del minimo locale. Si veda il caso del box canyon. Se il robot viene attirato in un punto dentro il box canyon, il vettore attrattivo annullerebbe il vettore repulsivo ed il robot rimarrebbe fermo perché tutte le forze si annullerebbero. Il problema del box canyon è un esempio di raggiungimento di un minimo locale.
In pratica, vi sono molte soluzioni eleganti per questo problema. Una è quella di avere un schema motorio che produce vettori di piccola ampiezza a partire da rumore casuale. Il rumore nello schema motorio servirebbe a sbattere il robot fuori dai minimi locali.
Si vedano le reti neurali e il simulated annealing.
Un’altra soluzione è quella dei template di navigazione (Navigation Templates), come quelle implementate da Mark Slack per JPL (Jet Propulsion Lab – California Inst.of Tech.).
La motivazione è che il problema dei minimi locali spesso sorge a causa di interazioni fra il behaviour di campo repulsivo di EVITA e gli altri behaviour, come quello del campo attrattivo di muovere-verso-una-meta. Il problema dei minimi scomparirebbe se il campo di potenziale EVITA fosse in qualche modo più intelligente. In NaTs, il behaviour EVITA riceve come input il vettore somma degli altri behaviour. Questo vettore rappresenta la direzione verso cui il robot andrebbe se non ci fossero ostacoli vicino. Per gli scopi di questo corso, questo sarà chiamato vettore strategico.
Se il robot ha un vettore strategico, quel vettore dice che se c’è un ostacolo esso deve essere superato sulla destra o sulla sinistra.
Per esempio, se il robot sta attraversando un ponte (vedi fig. a), vorrà passare alla sinistra degli ostacoli che stanno a destra per stare nel mezzo. Nota che il vettore strategico definisce quello che sta a sinistra e quello che sta a destra.
NaTs implementa questa semplice euristica nel campo di potenziale per GENERAZIONE_MOTO, promuovendolo ad un vero EVITA. Il campo di repulsione viene completato con un campo a orbita tangenziale. La direzione dell’orbita (in senso orario o anti orario) è determinato dalla posizione del robot cioè se è a destra o a sinistra del vettore strategico.
L’output del behaviour EVITA può essere chiamato vettore tattico, perché persegue la meta strategica del robot di fronte a sfide immediate.
Una più recente soluzione al problema di minimi locali è stata quella di esprimere i campi come funzioni armoniche. I campi di potenziale implementati come funzioni armoniche sono garantiti dal non avere un minimo locale pari a 0. Lo svantaggio di questa tecnica è che è computazionalmente costosa, e deva essere implementata su un chip VLSI per operare in tempo reale per grandi aree.
Per riassumere i punti principali sulle architetture a campi di potenziale:
Come visto dall’esempio di SEGUI IL CORRIDOIO, le due architetture, sussunzione e campi di potenziale, sono molto simili nella filosofia e nei tipi di risultati che si ottengono. Essenzialmente, sono equivalenti.
In termini di supporto alla modularità, entrambe decompongono, le azioni e le percezioni necessarie per trasformare un task in un behaviour, anche se c’è disaccordo sul livello di astrazione di un behaviour.
La sussunzione sembra favorire una realizzazione hardware, mentre i metodi dei campi di potenziale hanno interessanti proprietà per un sistema orientato al software.
Un problema ancora aperto è se queste architetture mostrano una buona trasportabilità verso altri domini. I sistemi reattivi sono limitati a applicazioni che possono essere portate a termine con behaviour riflessivi. Essi non possono essere trasferiti a domini dove il robot ha bisogno di fare pianificazione, ragionando sull’allocazione delle risorse, ecc. (questo ha portato al Paradigma Ibrido).
In pratica, veramente pochi dei livelli dell’architettura a sussunzione possono essere trasferiti a nuove applicazioni di navigazione senza fare cambiamenti. Le diverse applicazioni creano strati che hanno bisogno di sussumere differentemente gli strati più bassi.
La metodologia dei campi potenziale fa un po’ meglio nel senso che il progettista può creare una libreria di behaviour e schemi tra cui scegliere, senza un implicito ricorso ad uno strato più basso.
Nessuna architettura propone sistemi che potrebbero essere detti veramente robusti.
La stratificazione della sussunzione impone un certo degrado se un livello superiore è distrutto, ma non ha nessun meccanismo per evidenziare che c’è stato un degrado.
Come negli animali, un robot reattivo farà cose consistenti con la sua percezione del mondo, ma non sempre quelle giuste.
1. Introduzione
4. Esempi di applicazione del paradigma gerarchico
11. Schema Theory
13. Architetture Reattive a Sussunzione
14. Architetture a Campi di Potenziale
15. Architetture a Campi di Potenziale e Sussunzione
16. Progettazione di un sistema Reattivo - 1
17. Progettazione di un sistema Reattivo - 2
18. Progettazione di un sistema Reattivo - 3