1.31k likes | 1.45k Views
CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.4 Paradigma Reattivo prof. Ernesto Burattini. Proposta di progetto Sia assegnato un ambiente chiuso con ostacoli. Assegnata una tana, si vogliono raccogliere una serie di cubi accumulati in alcuni luoghi non noti all’interno dell’ambiente.
E N D
CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.4 Paradigma Reattivo prof. Ernesto Burattini
Proposta di progetto Sia assegnato un ambiente chiuso con ostacoli. Assegnata una tana, si vogliono raccogliere una serie di cubi accumulati in alcuni luoghi non noti all’interno dell’ambiente. Raccogliere un cubo alla volta e portarlo alla tana, evitando gli ostacoli e cercando il percorso migliore. Terminati i cubi accumulati in un posto cercare gli altri. Gli ostacoli sono di colore blu, i cubi di colore rosso, la tana di colore giallo. Dotare il robot di un sistema sensoriale facendo ricorso a sensori disponibili sul mercato (sonar, bumper, bussole, luminosità (colore), suoni, etc.). Può esserci una piccola memoria ma il paradigma di riferimento deve essere quello reattivo. http://www.informatik.uni-bremen.de/simrobot/index_e.htm
Il Paradigma Reattivo emerse nei tardi anni ‘80. Esso è importante da studiare per almeno due ragioni. Primo, i sistemi robotici operanti in domini ristretti con compiti limitati sono ancora oggi costruiti usando architetture reattive. Secondo, il Paradigma Reattivo è la base per il Paradigma Reattivo-deliberativo Ibrido
Il Paradigma Reattivo scaturì dall'insoddisfazione del paradigma gerarchico e dalle idee provenienti dall'etologia. Anche se i vari sistemi reattivi possono o non possono aderire strettamente ai principi dell'intelligenza biologica, generalmente imitano alcuni aspetti della biologia. L'insoddisfazione del Paradigma Gerarchico fu molto bene compendiata da Rodney Brooks, che caratterizzò quei sistemi come aventi una decomposizione orizzontale come mostrato
Invece, un esame della letteratura etologica suggerisce che l'intelligenza è stratificata secondo una decomposizione verticale, come mostrato qui
Secondo una decomposizione verticale, un agente prevede in primo luogo behavior di sopravvivenza primitivi ed evolve poi verso strati nuovi di behavior che o riusano i behavior più bassi e precedenti, oppure interdicono i behavior più vecchi, o creano tracce parallele di behavior più avanzati. Gli elementi paralleli possono essere pensati a strati, accatastati verticalmente. Ogni strato ha accesso a sensori ed attuatori indipendentemente da qualunque altro strato. Se accade qualche cosa ad un behavior avanzato, i behavior di livello più basso restano ancora operativi. Questo ritorno ad un livello più basso imita il degrado di funzioni autonome nel cervello. Le funzioni nel cervello funzionano (come il respirare) continuamente indipendentemente da funzioni di ordine più alte (come contare, riconoscere volti, progettare), permettendo ad esempio ad una persona che ha un danno di cervello da uno scontro di auto ancora di respirare, etc.
Lavori da Arkin, Brooks e Payton si sono concentrati sulla definizione dei behavior e sui meccanismi per manipolare correttamente situazioni quando più behavior sono simultaneamente attivi. Brooks propose un approccio noto ora come sussunzione e costruì degli insetti robot con behavior inseriti direttamente nell’hardware.
Arkin e Payton usarono una metodologia di campi potenziale, favorendo realizzazioni software. Entrambi gli approcci sono equivalenti. Il Paradigma Reattivo incontrò inizialmente una forte resistenza da parte dei clienti tradizionali di robotica, particolarmente i militari e le agenzie per il controllo nucleare. Questi utenti delle tecnologie robotiche erano preoccupati del modo impreciso in cui behavior distinti si combinavano per formare un behavior emergente e più ricco. In particolare, i behavior reattivi non sono assoggettabili a dimostrazioni matematiche che mostrano che essi sono sufficienti e corretti per un certo compito. Alla fine, i tempi di esecuzione rapidi associati coi behavior riflessivi portarono alla loro accettazione da parte degli utenti, proprio nel momento in cui i ricercatori si erano spostati verso il paradigma Ibrido per esplorare anche strati di intelligenza
I Behavior possono operare concomitantemente e sequenzialmente. Di seguito le due architetture rappresentative, sussunzione e campi di potenziale, sono confrontate e contrapposte usando lo stesso task come esempio. Vedremo in questa parte come una architettura manipola behavior concomitanti per produrre un behavior emergente.
Attributi del Paradigma Reattivo L'attributo fondamentale del paradigma reattivo è che tutte le azioni sono portate a termine attraverso behavior. Come nei sistemi etologici, i behavior sono un mapping diretto degli input dei sensori con un pattern di azioni motorie che sono usate poi per realizzare il compito. Da una prospettiva matematica, i behavior sono semplicemente una funzione di trasferimento, trasformando gli input sensori in comandi per gli attuatori.
Per gli scopi di questo corso, un behavior sarà trattato come uno schema, e consisterà di almeno un schema motore ed uno schema percettivo. Lo schema percettivo contiene l'algoritmo per estrarre il percetto e la sua forza (o valore), lo schema motore contiene l'algoritmo per generare il pattern di azione per un attuatore fisico. Teniamo presente però che solo poche architetture di robot reattivi descrivono i loro behavior in termini di schemi. Ma in pratica, le realizzazioni più behaviorali hanno routine motorie e percettive riconoscibili, anche se raramente sono riportate come schemi.
BEHAVIOR BEHAVIOR BEHAVIOR BEHAVIOR BEHAVIOR BEHAVIOR SENSE SENSE SENSE SENSE SENSE SENSE ACT ACT ACT ACT ACT ACT Il Paradigma Reattivo letteralmente eliminò la componente di Pianificazione della triade Percezione, Pianificazione, Azione, come mostrato in Figura.
Le componenti di Percezione e Azione sono strettamente accoppiate nei behavior, e tutte le attività del robot emergono come il risultato di questi behavior che o operano in sequenza o concomitantemente. L’organizzazione S-A non specifica come i behavior sono coordinati e controllati; questo è un importante tema evidenziato dalle architetture. La percezione nel Paradigma Reattivo è locale in ogni behavior, o behavior-specifico. Ogni behavior ha il suo proprio sistema percettivo dedicato. In molti casi, questo è implementato come un sensore e schema percettivo per behavior. Ma in altri casi, più di un behavior può prendere lo stesso output da un sensore e può trattarlo differentemente (tramite lo schema percettivo del behavior). Un behavior letteralmente non sa quello che un altro behavior sta facendo o sta percependo. La Fig. mostra graficamente il meccanismo percettivo del Paradigma Reattivo.
Organizzazione S-A del Paradigma Reattivo in behavior multipli e concomitanti Questo paradigma, come già detto, è fondamentalmente opposto al modello di mondo globale usato nel paradigma gerarchico. Il percetto è immediatamente disponibile per lo schema percettivo del behavior che può fare poca o molta elaborazione secondo le necessità per estrarre il percetto prevalente. Se è usata una affordance, computazionalmente poco costosa, allora la parte percettiva del behavior è quasi istantanea e l’azione è molto rapida. Come può essere visto dal capitolo precedente sui fondamenti biologici del paradigma reattivo, i behavior favoriscono l'uso di affordances.
Brooks disse (rumorosamente) in una conferenza, "noi non abbiamo bisogno di rappresentazione puzzolenti." Si dovrebbe notare che spesso la parte di schemi percettivi del behavior deve usare una rappresentazione behavior-specifica o una struttura dati per rivelatori specializzati capace di estrarre affordances. Per esempio, estrarre una regione rossa in un'immagine è non-banale per un computer comparato con un animale che vede il rosso. Il punto è che mentre un programma di computer può dovere avere strutture dati per simulare un semplice funzionamento neurale, il behavior non conta su alcuna rappresentazione centrale fornita da tutti i sensori.
Nelle prime realizzazioni del paradigma reattivo, l'idea di "un sensore, un behavior" funzionò bene. Per behavior più avanzati, divenne utile fondere l’output di sensori multipli all'interno di uno schema percettivo per avere maggiore precisione o una migliore misura della forza dello stimolo. Questo tipo di fusione di sensori è permesso all'interno del paradigma reattivo finché la fusione è locale al behavior.
Caratteristiche e connotazioni dei behavior reattivi Come visto precedentemente, un sistema robotico reattivo decompone la funzionalità in behavior che accoppiano strettamente percezione ad azione senza l'uso di interposizioni di rappresentazioni astratte (globale). Questa è una definizione ampia e vaga.
La connotazione primaria di un sistema robotico reattivo è che risponde rapidamente. L'accoppiamento stretto di percezioni ed azioni permettono al robot di operare in tempo reale, muovendosi alla velocità di 1-2 cm per secondo. I behavior possono essere implementati direttamente in hardware come circuiti, o come algoritmi di complessità computationale bassa (0(n)). Questo vuole dire che i behavior reagiscono non solo rapidamente rispetto al processo, ma sono particolarmente veloci se comparati alle velocità di esecuzione di Shakey e di altri robot legati al paradigma gerarchico. Una connotazione secondaria è che i sistemi robotici reattivi non hanno nessuna memoria, limitando i behavior reattivi a quello che i biologi chiamerebbe riflessi stimolo-risposta puri.
In pratica, molti behavior esibiscono un pattern di risposta di azione-prefissata, laddove il behavior persiste per un periodo di tempo corto senza la presenza diretta dello stimolo. Il punto principale è che i behavior sono controllati da quello che sta accadendo nel mondo, duplicando così lo spirito di meccanismi di releasing innati, piuttosto che dal memorizzare e ricordare quello che il robot ha fatto di recente.
Le cinque caratteristiche di quasi tutte le architetture che seguono il Paradigma Reattivo sono: • I robot sono agenti situati che operano in una nicchia ecologica. Come visto nella prima Parte, agente situato vuole dire che il robot è una parte integrante del mondo. Un robot ha le sue proprie mete ed intenzioni. Quando un robot agisce, cambia il mondo, e riceve una reazione immediata dal mondo attraverso i sensori. Quello che il robot percepisce influenza le sue mete e il tentativo di soddisfarle, genera un nuovo ciclo di azioni. • Attenzione che la situatedness è definita da un ciclo Azione-percezione di Neisser. Similmente, le mete del robot, il mondo nel quale opera e come esso può percepire il mondo formano la nicchia ecologica del robot. • Per enfatizzare questo molti ricercatori di robotica dicono che loro stanno lavorando su robotica ecologica.
2. I behavior servono come fondamenti di base per le azioni del robot, ed il behavior complessivo del robot è quello che emerge. I behavior sono entità computazionali indipendenti, ed operano concomitantemente. Il behavior complessivo emerge di conseguenza: non c'è nessun modulo "controllore" esplicito che determina quello che sarà fatto, o funzioni che chiamano le altre funzioni. Ci può essere un programma di controllo coordinato nello schema di un behavior, ma non c'è nessun controllore esterno di tutti i behavior per un dato compito. Come con gli animali, l’ "intelligenza" del robot è nell'occhio dell'osservatore, piuttosto che in un specifico pezzo di codice. Poiché il behavior complessivo di un robot reattivo emerge dal modo con cui i suoi behavior individuali interagiscono, le maggiori differenze tra le architetture reattive risiedono di solito nello specifico meccanismo per le interazioni. Ricordiamo dal Capitolo 3 che questi meccanismi includono combinazione, soppressione, e cancellazione.
3. Sono permessi solo behavior-specifico percettivi locali. L'uso di rappresentazioni della conoscenza astratte esplicite nel trattare la percezione, anche se è behavior-specifico, è evitato. Qualunque percetto che richiede rappresentazione è espresso mediante coordinate ego-centriche (robot-centriche). Per esempio, si consideri l’evitare un ostacolo. Una rappresentazione ego-centrica vuole dire che non è importante che un ostacolo è nel mondo alle coordinate (x,y,z), ma solamente dove è relativamente al robot. I dati sensoriali, con l'eccezione del GPS, sono inerentemente ego-centrici (e.g., un range finder ritorna una distanza dall'oggetto più vicino al transducer), questo elimina l’elaborazione necessaria per creare un modello del mondo, mentre estrae solo la posizione degli ostacoli relativamente al robot.
4. Questi sistemi seguono i buoni principi della progettazione software. La modularità dei behavior favorisce la decomposizione di un task in behavior componenti. I behavior sono esaminati indipendentemente, e possono essere assemblati a partire da behavior primitivi.
5. Modelli animali di behavior sono spesso citati come una base per questi sistemi o per un particolare behavior. Diversamente dei primi giorni della robotica AI, dove c'era un sforzo consapevole di non imitare l'intelligenza biologica, è molto più accettabile nel paradigma reattivo usare gli animali come una motivazione per una collezione di behavior.
I vantaggi di programmare con i behavior Costruire un sistema robotico sotto il Paradigma Reattivo è spesso riportato come programmare con behavior, poiché il componente fondamentale di ogni realizzazione sono i behavior. Programmare con behavior ha molti vantaggi, la maggior parte dei quali sono coerenti coi buoni principi di ingegneria del software. I Behavior sono inerentemente modulari e facili da esaminare isolati dal sistema (i.e., essi forniscono unità di test). I Behavior forniscono anche possibili espansioni incrementali delle capacità di un robot. Un robot diviene più intelligente avendo più behavior. La decomposizione comportamentale dà luogo ad una realizzazione che opera in tempo reale ed è di solito computazionalmente poco costosa. Ciononostante vedremo che alcune volte la duplicazione di alcuni sensori specializzati (come i flussi ottici) è lenta. Se i behavior sono realizzati in economia, allora la realizzazione reattiva può essere lenta.
Generalmente, la velocità di reazione di un robot reattivo è equivalente ai tempi di stimolo-risposta negli animali. I behavior supportano buoni principi di ingegneria del software attraverso la decomposizione, modularità e i test incrementali. Se è programmato con il più alto grado di indipendenza possibile (anche detto accoppiamento basso), il progettista può mettere su biblioteche facili da capire, da manutenere, e può riusare moduli che minimizzano i side effects. Accoppiamento basso vuole dire che i moduli possono funzionare indipendentemente l'uno dall'altro con minimi collegamenti o interfacce, promuovendo così un facile riuso. Coesione vuole dire che i dati e le operazioni contenute in un modulo si riferiscono solo al goal di quel modulo.
Architetture rappresentative • Per implementare un Sistema reattivo il progettista deve identificare il set di behavior necessario per il task. I behavior possono essere o nuovi o si possono usare behavior esistenti. L'azione complessiva del robot emerge da behavior multipli e concomitanti. • Quindi un'architettura reattiva deve offrire meccanismi per • gestire behavior • determinare quello che accade quando behavior multipli sono attivi allo stesso tempo. • Un'altra caratteristica che distingue tra loro le architetture reattive è come esse definiscono un behavior. • Si noti che alcuni autori usano terminologie particolari.
Ci sono molte architetture che vanno bene con il Paradigma Reattivo. Le due più conosciute e meglio formalizzate sono la sussunzione e le metodologie dei campi di potenziale. La sussunzione fa riferimento a come i behavior sono combinati. Le Metodologie a Campi di potenziale costringono i behavior ad essere implementati come campi di potenziale, ed i behavior sono combinati dalla sommatoria dei campi. Un terzo stile di architettura reattiva che è popolare in Europa e in Giappone è il rule encoding, dove il componente schema motore del behavior ed il meccanismo di combinazione sono implementati come regole logiche. Le regole per combinare i behavior sono spesso ad hoc, e perciò non le tratteremo in questo corso. Altri metodi per combinare behavior esistono, incluso metodi fuzzy e il vincitore-prende-tutto, ma questi tendono ad essere dettagli di realizzazione piuttosto che una vera e propria architettura.
Architettura a Sussunzione L'architettura a sussunzione di Rodney Brooks è la più nota nei sistemi puramente Reattivi. Parte della popolarità scaturisce dalla pubblicità che circonda i molti robot naturalistici costruiti con la sussunzione. Come si può vedere in Fig., questi robot davvero sembrano insetti dell’ordine di grandezza di una scatola di scarpe, con sei gambe ed antenne. In molte realizzazioni, i behavior sono inseriti direttamente nel hardware o su piccoli micro-microprocessori, permettendo ai robot di avere tutta la capacità di calcolo on-board (questo non era vero per i microprocessori poco potenti di metà degli anni 1980). Inoltre, i robot di Brooks furono i primi ad essere capaci di camminare, evitando collisioni, salire su ostacoli senza le pause del "muovi-pensa-muovi-pensa" di Shakey.
Il termine "behavior" nell'architettura a sussunzione ha un significato meno preciso che nelle altre architetture. Un behavior è una rete di moduli percezione-azione che portano a termine un task. I moduli sono Augmented Finite State Machine AFSM, che hanno registri, temporizzatori, e altri miglioramenti per permettere loro di essere connessi con gli altri moduli. Un AFSM è equivalente all'interfaccia tra gli schemi e la strategia di controllo coordinata in un schema comportamentale. In termini di teoria degli schemi, un behavior di sussunzione è una raccolta di uno o più schemi in un behavior astratto.
Inserisci moneta 1 bloccato 2 sbloccato Persona attraversa il cancello Inserisci moneta Una Macchina a Stati Finiti (FSM) è un sistema computazionale che cambia il suo stato in funzione dello stato corrente e dell’input. Essa può assumere un numero finito di stati differenti e passa da uno stato all’altro secondo precise regole. Un esempio è un cancelletto girevole che si apre con una moneta. Se il cancelletto è bloccato (stato 1) e si inserisce una moneta allora la macchina cambia stato (stato 2 - cancelletto sbloccato). Se l’input ora è una persona, cioè qualcuno cerca di entrare, e si inserisce una moneta allora si sblocca e subito dopo però torna allo stato 1. Se è sbloccato e si inserisce una moneta, la macchina resta nello stato 2. Se è bloccato (stato 1) e l’input è una persona esso rimane bloccato.
Inserisci moneta 1 bloccato 2 sbloccato Persona attraversa il cancello Inserisci moneta Le Macchine a Stati Finiti Augmented (AFSM) sono FSM a cui vengono aggiunte alcune facilities (registri, sistemi di timing etc.)
I Behavior sono attivati con una modalità tipo stimolo-risposta, senza un programma esterno che li coordini e controlli esplicitamente. Ci sono quattro aspetti interessanti della sussunzione in termini di attivazione e controllo : 1. I moduli sono raggruppati in strati di competenza. Gli strati riflettono una gerarchia dell'intelligenza, o della competenza. Strati più bassi incapsulano funzioni di sopravvivenza di base come evitare collisioni, mentre livelli più alti creano azioni dirette alla meta come ad esempio il mapping di un oggetto. Ognuno degli strati può essere visto come un behavior astratto per un particolare compito.
2. I moduli in un strato più alto possono avere la priorità, o sussumere, l’output del behavior nello strato adiacente più basso. Gli strati comportamentali operano concomitantemente ed indipendentemente, quindi si ha bisogno di disporre di un meccanismo che si occupi dei conflitti potenziali. La soluzione nella sussunzione è del tipo il vincitore-prendere-tutto, dove il vincitore è sempre lo strato più alto.
3. L'uso di stati interni è evitato. Per stato interno in questo caso si intende un qualunque tipo di rappresentazione locale e persistente che rappresenta lo stato del mondo, o un modello. Poiché il robot è un agente situato, la maggior parte delle sue informazioni dovrebbero venire direttamente dal mondo. Se il robot dipende da una rappresentazione interna, quello che esso crede può cominciare a divergere pericolosamente dalla realtà. Alcuni stati interni sono necessari per attivare behavior come essere spaventati o affamati, ma una buona progettazione li minimizza.
4. Un task è portato a termine attivando lo strato opportuno che poi attiva gli strati più bassi sotto di lui e così via. In pratica, i sistemi a sussunzione non sono facilmente taskable, ovvero, non possono ricevere l’ordine di fare un altro task senza essere riprogrammati.
Esempi Questi aspetti sono illustrati meglio da un esempio, preso e modificato estensivamente dai lavori originali di Brooks al fine di essere consistente con la terminologia della teoria degli schemi e facilitare il paragone con la metodologia dei campi di potenziale. Un robot capace di muoversi in avanti e non collidere con niente potrebbe essere rappresentato con un solo strato, Livello 0. In questo esempio, il robot ha sonar multipli (o altri sensori di distanza), ognuno che punta in una direzione diversa, e due attuatori, uno per andare avanti ed uno per girare.
Il modulo Sonar legge il range dei sonar, fa ogni possibile filtraggio del rumore, e produce un grafico polare. Un grafico polare rappresenta le letture di distanze in coordinate polari, (r, ), intorno al robot. Come mostrato in Fig., la trama polare può essere sviluppata linearmente.
Se la lettura del range del sonar rivolto in avanti è sotto una certa soglia, il modulo COLLIDE annuncia una collisione e spedisce il segnale di alt all'attuatore che gestisce il FORWARD. Se il robot si sta muovendo in avanti, ora si ferma. Nel frattempo, il modulo di FEELFORCE sta ricevendo lo stesso grafico polare. Esso tratta ogni lettura del sonar come una forza repulsiva che può essere rappresentata come un vettore. FEELFORCE può essere pensato come un sommatore di vettori formati da ognuna delle letture sonar. Questo dà luogo ad un vettore nuovo. Il vettore repulsivo è passato poi al modulo di TURN. Il modulo di TURN fornisce la direzione per girare e la invia all'attuatore di svolta. TURN passa il vettore anche al modulo FORWARD che usa la grandezza del vettore per determinare la grandezza del prossimo movimento in avanti (quanto lontano o quanto veloce). Così il robot gira e va via per una piccola distanza dall'ostacolo.
Il behavior osservabile è che il robot verifica che non si trova in un spazio occupato e fa questo finché un ostacolo non gli arriva vicino. Se l'ostacolo è su un lato del robot, il robot girerà di 180° nella direzione opposta e va via. Il robot può reagire ad un ostacolo se l'ostacolo (o robot) è immobile o in lento movimento; la risposta è calcolata ad ogni aggiornamento dei sensori. Se parte dell'ostacolo, o un altro ostacolo, è messo davanti, il robot si fermerà, poi applicherà i risultati di RUNAWAY. Cioè si fermerà, girerà e comincerà a muoversi di nuovo in avanti. La fermata impedisce al robot di urtare l'ostacolo mentre sta girandosi e sta muovendosi in avanti. Il livello 0 mostra come un set abbastanza complesso di azioni può emergere da moduli molto semplici.
È utile rivedere l'architettura a sussunzione nei termini usati finora in questo corso, come mostrato in Fig. Si noti come questo somiglia alla decomposizione verticale del lucido 4: i dati sensoriali circolano attraverso i behavior concorrenti verso l'attuatore, l’indipendenza di questi behavior fa sì che il robot faccia la cosa giusta. Il modulo SONAR potrebbe essere considerato come un'interfaccia globale verso i sensori, mentre i moduli TURN e FORWARD sarebbero considerati come parte dell'attuatore (un'interfaccia).
Per gli scopi di questo corso, un behavior deve consistere di uno schema percettivo e di uno schema motorio. Gli schemi percettivi sono connessi ad un sensore, mentre gli schemi motori sono connessi ad attuatori. Per il Livello 0, gli schemi percettivi sarebbero contenuti nei moduli FEELFORCE e COLLIDE. Gli schemi motori sono i moduli RUNAWAY e COLLIDE. COLLIDE combina sia il processo percettivo (estrae il vettore dal sonar che guarda direttamente avanti) sia il pattern attuativo (dà l'alt se c'è una lettura negativa). I behavior primitivi riflettono i due percorsi attraverso lo strato. Uno potrebbe essere chiamato il behavior di RUNAWAY e l'altro il behavior di COLLIDE. Insieme, i due behavior creano un behavior per evitare ostacoli, o uno strato di competenza.
Si noti che i behavior usano una percezione diretta, o affordances. La presenza di una lettura di distanza indica che c’è un ostacolo; il robot non deve sapere di che tipo di ostacolo si tratti. Supponiamo di costruire un robot che va in giro invece di stare immobile, ma sempre capace di evitare ostacoli. Sulla base dello schema della sussunzione, può essere aggiunto un secondo strato di competenza (Livello 1). L1 L0
In questo caso, il Livello 1 consiste di un modulo WANDER che elabora un andamento casuale ogni n secondi. L'andamento casuale può essere pensato come un vettore. Esso ha bisogno di passare la sua indicazione ai moduli TURN e FORWARD. Ma non può essere passato direttamente al modulo TURN. Questo infatti sacrificherebbe l’evitare gli ostacoli, perché TURN accetta solamente un input. Una soluzione è di aggiungere un altro modulo al Livello 1, AVOID che combina il vettore di FEELFORCE col vettore di WANDER. L1 L0
Aggiungendo un nuovo modulo AVOID si offre un'opportunità di creare una risposta più sofisticata agli ostacoli. AVOID combina la direzione della forza da evitare con la direzione desiderata. Questo dà luogo alla direzione attuale che è rivolta più verso una direzione corretta che verso la svolta che il robot avrebbe dovuto fare perdendo un avanzamento diretto. (Si noti anche che il modulo AVOID è capace di "spiare" le componenti dello strato più basso). L’output di una direzione di AVOID ha la stessa rappresentazione dell’output di RUNAWAY così che TURN può accettare input da entrambe le fonti.
Il problema ora sembra essere quando accettare il vettore di direzione e da quale strato. • La sussunzione rende questo semplice: l’output dal livello più alto sussume l’output dal livello più basso. • La sussunzione è realizzata in uno di due seguenti modi: • inibizione. • Nell’inibizione, l’output del modulo di sussunzione è connesso all’output di un altro modulo. Se l’output del modulo che sussume è "on" o ha un qualunque valore, l’output del modulo sussunto è bloccato o spento. L’inibizione agisce come un rubinetto, cambiando da on a off l’output.
2. soppressione. Nella soppressione, l’output del modulo che sussume è connesso all’input di un altro modulo. Se l’output del modulo che sussume è on, esso sostituisce l’input normale al modulo sussunto. La soppressione agisce come un interruttore, scambiando un input con un altro. In questo caso, il modulo AVOID sopprime (segnato nel diagramma con una S) l’output da RUNAWAY. RUNAWAY sta ancora operando, ma il suo output non va da nessuna parte. Invece, l’output da AVOID va a TURN.
L'uso di strati e sussunzione permette a nuovi strati di essere costruiti sopra lo strato meno competente, senza cambiare gli strati più bassi. Questa è buon ingegneria del software, poichè facilita la modularità e semplifica il test. Essa aggiunge anche un po' di robustezza nel senso che se qualche cosa dovesse disabilitare il Livello 1, il Livello 0 è probabile che rimanga intatto. Il robot sarebbe almeno capace di preservare il suo meccanismo di autodifesa e quindi di fuggire quando si avvicina agli ostacoli.