Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out

Presentazione di PowerPoint

VIEWS: 28 PAGES: 130

									1
Riprendere l’esercizio sviluppato nella prima relazione,
analizzarlo e rappresentarlo in termini di behaviour astratti
e primitivi utilizzando lo schema theory.




                                                          2
Il Paradigma Reattivo emerse nei tardi anni „80. Esso è importante da
studiare per almeno due motivi.


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

                                                                     3
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 evidenziò la sua struttura orizzontale.




                                                                        4
Invece, un esame della letteratura etologica suggerisce che l'intelligenza
è stratificata secondo una decomposizione verticale, come mostrato qui




                                                                    5
Secondo una decomposizione verticale, un agente prevede in primo
luogo behaviour di sopravvivenza primitivi ed evolve poi verso strati
nuovi di behaviour che o riusano i behaviour più bassi e precedenti,
oppure interdicono altri behaviour, o creano in parallelo behaviour 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 behaviour avanzato, i behaviour 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ù alto (come contare,
riconoscere volti, progettare), permettendo ad esempio ad una persona
che ha un danno al cervello, derivante ad esempio da un incidente
automobilistico, ancora di respirare, etc.                       6
Molti lavori di Arkin, Brooks e Payton si sono concentrati sulla
definizione dei behaviour e sui meccanismi per manipolare
correttamente situazioni quando più behaviour sono simultaneamente
attivi.


Brooks propose un approccio noto ora come sussunzione e costruì
degli insetti robot con behaviour inseriti direttamente nell‟hardware.




                                                                  7
Arkin e Payton usarono una metodologia di campi di potenziale,
favorendo realizzazioni software. Questi approcci sono praticamente
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
behaviour distinti si combinavano per formare un behaviour emergente
e più ricco.
In particolare, i behaviour 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 behaviour riflessivi
portarono alla loro accettazione da parte degli utenti, proprio nel
momento in cui i ricercatori si erano spostati verso il paradigma ibrido
                                                                     8
per introdurre anche elementi di intelligenza.
I behaviour 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 behaviour
concomitanti per produrre un behaviour emergente.




                                                                9
               Attributi del Paradigma Reattivo

L'attributo fondamentale del paradigma reattivo è che tutte le azioni
sono portate a termine attraverso behaviour.

Come nei sistemi etologici, i behaviour 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 behaviour sono semplicemente una
funzione di trasferimento che trasforma gli input sensoriali in comandi
per gli attuatori.
                                                                  10
Per gli scopi di questo corso, un behaviour 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 behaviour in termini di schemi. Ma in pratica, le
diverse realizzazioni con behaviour hanno routine motorie e percettive
riconoscibili, anche se raramente sono riportate come schemi.
                                                                11
Il Paradigma Reattivo eliminò la componente di Pianificazione della
triade Percezione, Pianificazione, Azione, come mostrato in Figura.



             behaviour
              behaviour
               SENSE
               behaviour             ACT
                SENSE                 ACT
                 behaviour
                  SENSE                ACT
                     behaviour
                     SENSE              ACT
                         behaviour
                          SENSE           ACT
                           SENSE             ACT


                                                             12
Le componenti di Percezione e Azione sono strettamente accoppiate nei
behaviour, e tutte le attività del robot emergono come il risultato di
questi behaviour che o operano in sequenza o concomitantemente.

L‟organizzazione S-A non specifica come i behaviour sono coordinati e
controllati.
La percezione nel Paradigma Reattivo è locale in ogni behaviour, o
behaviour-specifico.

Ogni behaviour ha il suo proprio sistema percettivo dedicato. In molti
casi, questo è implementato come un sensore o schema percettivo per
behaviour. Ma in altri casi, più di un behaviour può prendere lo stesso
output da un sensore e può trattarlo differentemente (tramite gli schemi
percettivi dei singoli behaviour).
Un behaviour letteralmente non sa quello che un altro behaviour sta
facendo o sta percependo. La Fig. mostra graficamente il meccanismo
percettivo del Paradigma Reattivo.                            13
…....




        14
Organizzazione S-A del Paradigma Reattivo in behaviour 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
behaviour 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 behaviour è quasi istantanea e l‟azione è molto
rapida.

Come può essere visto dal capitolo precedente sui fondamenti
biologici del paradigma reattivo, i behaviour favoriscono l'uso di
affordances.
                                                               15
Brooks disse (rumorosamente) in una conferenza, "noi non abbiamo
bisogno di rappresentazioni puzzolenti" e scrisse un lavoro dal titolo
“Gli elefanti non giocano a scacchi” (1990).

Si dovrebbe notare che spesso la parte di schemi percettivi del
behaviour deve usare una rappresentazione behaviour-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
behaviour non conta su alcuna rappresentazione centrale fornita da tutti
i sensori.
                                                                    16
Nelle prime realizzazioni del paradigma reattivo, l'idea di

"un sensore, un behaviour"

funzionò bene.

Per behaviour 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 behaviour.

                                                                17
       Caratteristiche e connotazioni dei behaviour reattivi

Come visto precedentemente, un sistema robotico reattivo
decompone le funzionalità in behaviour che accoppiano strettamente
percezione ad azione senza l'uso di interposizioni di rappresentazioni
astratte (globale).

Questa è una definizione ampia e vaga.




                                                                18
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 behaviour possono essere implementati direttamente in hardware
come circuiti, o come algoritmi di complessità computazionale
bassa (0(n)).

Questo vuole dire che i behaviour 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, limitandosi, i behaviour reattivi, a quello
                                                             19
che i biologi chiamerebbero riflessi stimolo-risposta puri.
In pratica, molti behaviour esibiscono un pattern di risposta di azione
prefissata, laddove il behaviour persiste per un periodo di tempo
corto senza la presenza diretta dello stimolo.

Il punto principale è che i behaviour 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.




                                                                 20
Le cinque caratteristiche di quasi tutte le architetture che seguono il
   Paradigma Reattivo sono:

1. 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.                       21
2. I behaviour servono come fondamenti di base per le azioni del
robot, ed il behaviour complessivo del robot è quello che emerge.

I behaviour sono entità computazionali indipendenti, ed operano
concomitantemente. Il behaviour complessivo emerge di conseguenza:
non c'è nessun modulo "controllore" esplicito che determina quello
che sarà fatto, o funzioni che chiamano altre funzioni.
Ci può essere un programma di controllo coordinato nello schema di
un behaviour, ma non c'è nessun controllore esterno di tutti i
behaviour 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 behaviour complessivo di un robot reattivo emerge dal modo con cui
i suoi behaviour 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
                                                                   22
combinazione, soppressione, e cancellazione.
3. Sono permessi solo behaviour-specifico locali.

L'uso di rappresentazioni della conoscenza astratte esplicite nel
trattare la percezione, anche se è behaviour-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.                                23
4. Questi sistemi seguono i buoni principi della progettazione
software.

La modularità dei behaviour favorisce la decomposizione di un task in
behaviour componenti.

I behaviour sono esaminati indipendentemente, e possono essere
assemblati a partire da behaviour primitivi.




                                                                 24
5. Modelli di behaviour ispirati ad animali sono spesso citati come
una base per questi sistemi o per un particolare behaviour.

Diversamente dai primi giorni della robotica AI, dove c'era un sforzo
consapevole di non imitare l'intelligenza biologica ma di ricorrere alla
matematica e alla logica, nel paradigma reattivo è accettabile usare gli
animali come ispirazione per una collezione di behaviour.




                                                                 25
            I vantaggi di programmare con i behaviour

Costruire un sistema robotico secondo il Paradigma Reattivo è spesso
riportato come programmare con behaviour, poiché il componente
fondamentale di ogni realizzazione sono i behaviour.
Programmare con behaviour ha molti vantaggi, la maggior parte dei
quali sono coerenti coi buoni principi di ingegneria del software.
I behaviour sono inerentemente modulari e facili da testare isolati dal
sistema (i.e., essi forniscono unità di test).
I behaviour forniscono anche possibili espansioni incrementali delle
capacità di un robot. Un robot diviene più intelligente avendo più
behaviour. 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 behaviour sono
realizzati in economia, allora la realizzazione reattiva può essere
                                                                    26
lenta.
Generalmente, la velocità di reazione di un robot reattivo è
equivalente ai tempi di stimolo-risposta negli animali.
I behaviour rappresentano dei buoni principi di ingegneria del
software utilizzando la decomposizione, la modularità e i test
incrementali.
Se il sistema robotico è 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.
                                                                27
                    Architetture rappresentative

Per implementare un Sistema Reattivo il progettista deve identificare
    il set di behaviour necessario per il task. I behaviour possono
    essere o nuovi o si possono usare behaviour esistenti. L'azione
    complessiva del robot emerge da behaviour multipli e
    concomitanti.

Quindi un'architettura reattiva deve offrire meccanismi per

1) gestire behaviour

2) determinare quello che accade quando behaviour multipli sono
   attivi allo stesso tempo.

Un'altra caratteristica che distingue tra loro le architetture reattive è
   come esse definiscono un behaviour.
                                                                   28
Ci sono molte architetture che vanno bene con il Paradigma Reattivo.
Le due più conosciute e meglio formalizzate sono la sussunzione e i
campi di potenziale.
La sussunzione fa riferimento a come i behaviour sono combinati.
Le metodologie a campi di potenziale costringono i behaviour ad
essere implementati come campi di potenziale, ed i behaviour risultanti
sono ottenuti dalla sommatoria dei rispettivi campi di potenziale.
Un terzo stile di architettura reattiva che è popolare in Europa e in
Giappone è il rule encoding, dove il componente schema motore del
behaviour ed il meccanismo di combinazione sono implementati
secondo regole logiche. Le regole per combinare i behaviour sono
spesso ad hoc, e perciò non le tratteremo in questo corso.
Altri metodi per combinare behaviour esistono, incluso metodi fuzzy e
il vincitore-prende-tutto, ma questi tendono ad essere dettagli di
realizzazione piuttosto che una vera e propria architettura.   29
Si legga e commenti in una relazione l‟articolo di Brooks:

        Elephants dont‟t play chess
                  distribuito a lezione.

       La relazione è attesa tra una settimana.




                                                             30
                    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 behaviour 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.                           31
32
Il termine "behaviour" nell'architettura a sussunzione ha un significato
meno preciso che nelle altre architetture.

Un behaviour è 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 coordinato in un schema comportamentale. In termini di
teoria degli schemi, un behaviour di sussunzione è una raccolta di uno
o più schemi in un behaviour astratto.


                                                                 33
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
                                                                     Inserisci
                                       il cancello
                                                                      moneta     34
input/stato 1 (bloccato)    2 (sbloccato)

Moneta      2 (sbloccato)   2 (sbloccato)

Persona     1 (bloccato)    1 (bloccato)



                                 Inserisci moneta


                    1 bloccato                      2 sbloccato


                                 Persona attraversa
                                                                  Inserisci
                                     il cancello
                                                                   moneta

Le Macchine a Stati Finiti Augmented (AFSM) sono FSM a cui
vengono aggiunte alcune facilities (registri, sistemi di timing etc.)
                                                                              35
I behaviour 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 behaviour
   astratto per un particolare compito.
                                                                36
2. I moduli in un strato più alto possono avere la priorità, o
sussumere, l’output del behaviour 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.




                                                                37
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 behaviour come
essere spaventati o affamati, ma una buona progettazione li
minimizza.

                                                               38
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.




                                                            39
Ci sono quattro aspetti interessanti della sussunzione in termini di
   attivazione e controllo :

1. I moduli sono raggruppati in strati di competenza.

2. I moduli in un strato più alto possono avere la priorità, o
   sussumere, l’output del behaviour nello strato adiacente più
   basso.

3. L'uso di stati interni è evitato.

4. Un task è portato a termine attivando lo strato opportuno che
   poi attiva gli strati più bassi sotto di lui e così via.



                                                              40
                                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.

                                                                  41
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.

                             42
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.




                                                                               43
Il behaviour osservabile consiste nella verifica che il robot fa di non
trovarsi in un spazio occupato. Questo behaviour si ripete finché un
ostacolo non arriva vicino al robot. Se l'ostacolo è su un lato del
robot, il robot girerà di 180° nella direzione opposta e andrà 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.
Il livello 0 mostra come un set abbastanza complesso di azioni può
emergere da moduli molto semplici.




                                                                   44
È 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 behaviour concorrenti verso l'attuatore. I
behaviour sono indipendenti.
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).




                                                                 45
Per gli scopi di questo corso, un behaviour 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 behaviour primitivi riflettono i due percorsi attraverso lo strato. Uno
potrebbe essere chiamato il behaviour di RUNAWAY e l'altro il
behaviour di COLLIDE. Insieme, i due behaviour creano un behaviour
per evitare ostacoli, o uno strato di competenza.



                                                                      46
Si noti che i behaviour usano una percezione diretta, o affordances. La
presenza di una lettura di distanza indica che c‟è un ostacolo; il robot
non sa 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 a sussunzione, può essere aggiunto un secondo strato di
competenza (Livello 1).


      L1




      L0
                                                                 47
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
                                                               48
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 facendo 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.




                                                                 49
Il problema ora è quello di stabilire 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:

1. 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 è spento. L‟inibizione agisce come un rubinetto,
   cambiando da on a off l‟output.
                                                               50
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 uno switch, 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 di AVOID va a TURN.
                                                             51
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 è buona 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.




                                                                 52
La Fig. mostra il Livello 1 rivisto come behaviour. Nota che
FEELFORCE è usato da RUNAWAY e AVOID.
FEELFORCE è la componente percettiva (nello schema) di ambo i
behaviour, con i moduli AVOID e RUNAWAY che sono il
componente motorio. Spesso accade che i behaviour sono chiamati
con il nome dell'azione osservabile. Questo vuole dire che il
behaviour (che consiste di percezione ed azione) e la componente
azione hanno lo stesso nome. La figura non mostra che i behaviour
AVOID e RUNAWAY hanno lo stesso schema percettivo
FEELFORCE. Come sarà visto nel prossimo capitolo, le proprietà
object-oriented dello schema theory facilitano il riuso e la
condivisione di componenti percettive e motorie.




                                                           53
Ora supponiamo di aggiungere un terzo strato per permettere al robot di muoversi
lungo un corridoio, come mostrato in Fig. (il terzo strato nel lavoro originale di
Brooks è "esplorare", perché lui stava considerando un task di mappatura). Il modulo
di LOOK esamina il plot polare del sonar ed identifica un corridoio. (Si noti che
questo è un altro esempio di behaviour che condivide gli stessi dati sensoriali ma li
usa localmente per scopi diversi). Poiché identificare un corridoio è più costoso
computazionalmente che estrarre solo i dati di distanza, LOOK può richiedere più
tempo di elaborazione di quello richiesto dai behaviour a livelli più bassi. LOOK
passa il vettore che rappresenta la direzione in mezzo al corridoio al modulo
STAYINMIDDLE. STAYINMIDDLE sussume il modulo WANDER e manda il suo
output al modulo AVOID che può eventualmente girare attorno agli ostacoli.


                     L2

                     L1




                     L0                                                      54
Ma come fa il robot se il modulo di LOOK non ha calcolato una
direzione nuova? In questo caso il modulo INTEGRATE sta
osservando il moto attuale del robot dagli shaft encoders degli
attuatori. Questo dà una stima di quanto lontano dal centro il robot
abbia viaggiato dall'ultimo aggiornamento di LOOK.
STAYINMIDDLE può usare i dati raccolti per calcolare il vettore per
il nuovo corso. Questo serve a colmare i vuoti negli adattamenti
dovuti a diverse velocità di aggiornamento dei diversi moduli. Si noti
che LOOK e STAYINMIDDLE sono alquanto sofisticati da un punto
di vista software.

                  L2

                  L1




                 L0                                              55
INTEGRATE è un esempio di modulo che si preoccupa di un
eventuale stato interno pericoloso: esso opera sulla base di un
feedback dal mondo reale. Se per qualche ragione, il modulo di
LOOK non aggiorna mai, allora il robot potrebbe operare senza alcuni
dati sensoriali per sempre. O almeno finché non si rompe! Perciò,
sistemi con lo stile a sussunzione includono costanti di tempo sulla
soppressione e sull'inibizione.
Se la soppressione da STAYINMIDDLE funziona più a lungo di n
allora la soppressione cessa. Il robot comincia a vagare con una buona
speranza che qualunque sia il problema (come essere entrato in un
ambiente molto grande) che aveva condotto alla perdita dei segnali si
risolva.




                                                                56
Chiaramente, un altro problema è: come sa il robot che non ha
cominciato a percorrere il corridoio come avrebbe dovuto?

Risposta: non lo sa.

Il progetto presume che un corridoio sarà sempre presente nella
nicchia ecologica del robot.

Se non c‟è, il robot non si comporta come previsto.

Questo è un esempio della connotazione i che sistemi reattivi sono
"senza memoria."

                                                                  57
                        Sommario Sussunzione

• La sussunzione ha una debole definizione di behaviour come
accoppiamento stretto di percezione e azione. Anche se non è
un'architettura a schema-theory, essa può essere descritta in questi
termini.
Essa raggruppa moduli tipo schema in strati di competenza, o
behaviour astratti.

• Strati più alti possono sopprimere e inibire behaviour in strati più
bassi, ma behaviour in strati più bassi non sono mai riscritti o
sostituiti. Da un punto di vista della programmazione, questo può
sembrare strano. Comunque, così si imita l'evoluzione biologica. Si
ricordi che il behaviour descritto per le rane (Lez. 3) era il risultato di
due behaviour, uno che si muoveva sempre verso gli oggetti in
movimento e l'altro che sopprimeva questo behaviour quando
l'oggetto era grande.
                                                                    58
• Il progetto di strati e componenti di behaviour per una realizzazione
della sussunzione, come con ogni altro progetto comportamentale, è
difficile; è più un'arte che una scienza. Questo è vero per tutte le
architetture reattive.

• Non vi è nulla che assomigli ad una pianificazione tipo STRIPS
nella sussunzione. Invece i behaviour sono attivati dalla presenza
dello stimolo nell'ambiente.




                                                                59
•La sussunzione risolve il Frame problem eliminando il bisogno di
modellare il mondo. Non ci deve preoccupare se il mondo aperto è
non-monotono e non ha un tipo di meccanismo di mantenimento di
verità, perché i behaviour non ricordano il passato. Ci può essere della
persistenza percettiva che conduce ad un tipo di behaviour con un
pattern di azione fisso (e.g. seguire un corridoio), ma non c'è nessun
meccanismo che evidenzi i cambi nell'ambiente. I behaviour
semplicemente rispondono a qualunque stimolo dell'ambiente.
•La Percezione è diretta, usando le affordances. Il releaser per un
behaviour è quasi sempre il percetto per guidare lo schema motore.
•La percezione è ego-centrica e distribuita. Nell'esempio del
WANDER (strato 1), il plot polare del sonar è relativo al robot. Un plot
polare nuovo viene creato ad ogni aggiornamento dei sensori. Il plot
polare è anche disponibile per qualunque processo ne abbia bisogno
(memoria globale e condivisa), permettendo ai moduli utente di essere
distribuiti. L‟output dallo schema percettivo può essere condiviso con
                                                                 60
gli altri strati.
                     PROPOSTE DI PROGETTO

                          SIMULAZIONE
1. Operai – Dato un ambiente con ostacoli fissi di colore blu,
   contenenente un certo numero di oggetti gialli. Progettare un team
   di robot (da due a 5 a scelta) che individuano gli oggetti gialli e li
   spingono (o trasportano insieme) in una prefissata posizione di
   accumulo.




                                                                  61
                 PROPOSTE DI PROGETTI


                          HARDWARE


1. Cataglyphis. Simulare il comportamento di due formiche
   Cataglyphis. Entrambe partono dalla tana e in maniera casuale
   vanno a cercare il cibo. Quando una delle due lo trova, accende
   una luce si fa raggiungere dall‟altra e poi va direttamente alla
   tana. La stessa cosa farà la seconda formica.




                                                               62
                 Metodologie a Campi di potenziale

Un altro stile di architettura reattiva è basato sui campi di potenziale.
Le architetture specifiche che usano il tipo a campi di potenziale sono
troppo numerose per essere descritte tutte, per cui ci limiteremo ad
una generalizzazione.
Lo stile a campo di potenziale dei behaviour fa uso sempre di vettori
per rappresentare i behaviour e della somma vettoriale per combinare
vettori di behaviour diversi per produrre un behaviour emergente.




                                                                  63
              Visualizzazione dei campi di potenziale

Il primo dogma di un'architettura a campi potenziale è che l'azione
motoria di un behaviour deve essere rappresentata come un campo di
potenziale .

Un campo di potenziale è un array, o campo di vettori.

Un vettore è una struttura matematica che consiste di una ampiezza ed
una direzione.

Un vettore V può essere descritto anche come un coppia (m,d), dove
m sta per ampiezza e d per direzione.

Per convenzione l‟ampiezza è un numero reale tra 0 e 1, ma in
generale può essere qualunque numero reale.
                                                                64
L'array rappresenta una regione di spazio.
In molte applicazioni robotiche lo spazio è bidimensionale,
rappresentando una prospettiva a volo di uccello del mondo come
fosse una mappa.
La mappa può essere divisa in quadrati, creando una griglia (x,y).
Ogni elemento dell'array rappresenta un quadrato dello spazio. Oggetti
percepibili nel mondo esercitano un campo di forza sullo spazio
circostante.
Il campo di forza è analogo ad un campo magnetico o gravitazionale.

Il robot può essere pensato come una particella che entra nel campo
emesso da un oggetto o da un ambiente. Il vettore rappresenta la forza,
cioè la direzione di rotazione e l‟ampiezza o velocità da intraprendere
in quella direzione.

 I campi di potenziale sono continui e ad ogni punto nello spazio è
associato un vettore.
                                                                 65
La Fig. mostra come un ostacolo produce un campo sul robot e lo fa fuggire. Se il
robot è vicino all'ostacolo, diciamo entro i 5 metri, esso è nel campo di potenziale,
allora si genera una forza che lo spinge ad allontanarsi dall'ostacolo.

Se il robot non è all'interno del raggio dell'ostacolo, esso resta là perché nessuna forza
è applicata su lui. Si noti che il campo rappresenta quello che dovrebbe fare il robot
(lo schema motorio) se il robot percepisse un ostacolo (lo schema percettivo).

Il campo non dà conto di come il robot arriva vicino all'ostacolo; il robot sente la
stessa forza sia se si sta muovendo all'interno del raggio sia se sta fermo al suo
interno.




                                                                                 66
Un modo di pensare ai campi di potenziale è di immaginare un
campo di forza che agisce sul robot. Un altro modo è pensare a loro
come ad una superficie di energia potenziale in tre dimensioni (la
gravità spesso è rappresentata così) ed il robot come una palla di
marmo. In questo caso, il vettore indica la direzione verso cui il
robot rotolerebbe sulla superficie.

Dossi sulla superficie fanno sì che il robot rotoli via o giri intorno (i
vettori dovrebbero puntare lontano dalla "vetta" della collina), e le
valli fanno sì che il robot rotoli verso il basso (vettori che puntano
verso il fondo).




                                                                    67
Ci sono cinque campi di potenziale di base, o primitivi che possono essere
combinati per costruire campi più complessi:
uniforme, perpendicolare, attrattivo, repulsivo, e tangenziale.
La Fig. a mostra un campo uniforme.
In un campo uniforme, il robot dovrebbe sentire la stessa forza indipendentemente
da dove si trova e quale orientamento abbia. Esso dovrebbe sentire il bisogno di
girare e allinearsi alla direzione della punta della freccia e muoversi in quella
direzione ad una velocità proporzionale alla lunghezza della freccia. Un campo
uniforme si usa spesso per descrivere il behaviour "va in direzione di ….”.




                                                                            68
La Fig. b mostra un campo perpendicolare, dove il robot è orientato
perpendicolarmente all'oggetto o al muro o al confine. Il campo mostrato
è diretto fuori dal muro grigio, ma un campo perpendicolare può essere
puntato anche verso un oggetto.




                                                                 69
In Fig. c si illustra un campo attrattivo. Il cerchio al centro del campo
rappresenta un oggetto che sta esercitando un'attrazione sul robot.
Dovunque il robot sia, il robot sentirà una forza dovuta all'oggetto. I
campi attrattivi sono utili per rappresentare un qualche tropismo, dove
l'agente è letteralmente attirato da luce, cibo o una meta. L'opposto di un
campo attrattivo è un campo repulsivo, mostrato in Fig. d. I campi
repulsivi sono associati comunemente agli ostacoli, o cose che l'agente
dovrebbe evitare. Più vicino il robot è all'oggetto, più è forte la forza
repulsiva che lo allontana di 180° via da lui.




                                                                    70
L‟ultimo campo primitivo è il campo tangenziale in Fig. e.
Il campo è una tangente attorno all'oggetto (si pensi ad un vettore
tangente come perpendicolare alle linee radiali che si estendono verso
l‟esterno dell'oggetto).
I campi tangenziali possono essere destrorsi o antiorario; la Fig. e mostra
una rotazione destrorsa. Essi sono utili per spingere un robot a girare
attorno ad un ostacolo, o un robot a investigare su qualche cosa.




                                                                   71
                           Profili di ampiezze
Si osservi che in Fig. c,d,e la lunghezza delle frecce è diversa a seconda
della distanza dall'oggetto. Il modo in cui l‟ampiezza dei vettori cambia
nel campo è stata chiamata profilo di ampiezza. (Il termine “profilo di
ampiezza” è usato qui perché il termine profilo di velocità è usato dagli
ingegneri di controlli automatici per descrivere come i motori di un robot
accelerano e rallentano per produrre un particolare movimento senza
dare scosse.)




                                                                  72
Si consideri il campo repulsivo in Fig.
Matematicamente, il campo può essere rappresentato in coordinate polari
ed il centro del campo è l'origine (0, 0):
(4.1) Vdirection       = -Ф
        Vmagnitude = c
In questo caso, l‟ampiezza è un valore costante c; la lunghezza delle
frecce cioè rimane la stessa. Questo può essere visualizzato con un plot
della ampiezza mostrata in Fig. a.




                                          a
                                                                 73
Questo profilo dice che il robot fuggirà (la direzione verso cui correrà è
-Ф) sempre alla stessa velocità, non importa quanto vicino sia
all'oggetto, finché è nel raggio dell'ostacolo. Appena il robot esce dal
raggio d‟azione dell'ostacolo, la velocità cade a 0, fermando il robot.
Il campo è essenzialmente binario: il robot o sta fuggendo a velocita'
costante o si ferma.
In pratica c‟è qualche problema con l‟ampiezza costante. Si può infatti
produrre un moto a scatti lungo il perimetro del raggio d‟azione del
campo. Questo si nota quando un robot andando in una particolare
direzione, incontra un ostacolo. Fugge, lasciando quasi
immediatamente il campo, poi torna indietro di nuovo sul suo percorso
originale, incontra il campo di nuovo, e così via.

                                                                   74
I profili di ampiezza rendono anche possibile al progettista rappresentare
la riflessività (una risposta che dovrebbe essere proporzionale alla forza
dello stimolo) e creare risposte interessanti.
Si consideri il profilo in Fig. b. Esso può essere descritto dal
comportamento visto da un osservatore che guarda il robot :
se il robot è lontano dall'oggetto, esso andrà in giro e si muoverà
rapidamente, quando si dirige verso lui inizierà a rallentare per evitare di
colpire l'oggetto.




                                                                    75
In matematica, questo andamento è detto linear drop off (esaurimento
lineare), perché la velocità alla quale l‟ampiezza si esaurisce può essere
rappresentata da una linea retta. La formula di una retta è y = mx + b
dove x è la distanza e y è l‟ampiezza. b influenza l'inizio della linea e m è
                     
l‟inclinazione ( m  y ). Qualunque valore di m e b è accettabile. Se non
                     x
è specificato, m = 1 o -1 (una inclinazione di 45° in su o in giù) e
b = 0 per le funzioni lineari.
Il profilo lineare in Fig. b soddisfa il behaviour desiderato dal progettista
di avere un robot che reagisca di più, quanto più è vicino.




                                                                     76
Per catturare il bisogno di una reazione forte e più accentuata si deve
usare un altro profilo. Un tale profilo è una funzione detta a
esaurimento esponenziale in cui l‟esaurimento è proporzionale al
quadrato della distanza: per ogni unità di distanza dall'oggetto la
forza sul robot diminuisce della metà.




                                                                  77
Come si può vedere dagli esempi precedenti, quasi nessun profilo di
ampiezza è accettabile. La motivazione di usare profili di ampiezza è
quella di raffinare il behaviour.

È importante notare che il robot calcola solamente i vettori che
agiscono su di lui nella sua posizione corrente. Le figure, invece,
espongono il campo intero per tutte le possibili ubicazioni del robot.

La domanda che sorge è: perché le figure mostrano un campo intero
su uno spazio?

Prima di tutto, questo aiuta a visualizzare quello che il robot farà
complessivamente, non solo ad un particolare istante di tempo.

Secondo, siccome i campi sono rappresentazioni continue, questa è
una semplificazione che conferma se il campo è corretto e rende
subito evidente ogni cambio improvviso.                     78
                  Campi di potenziale e percezione

Negli esempi precedenti, la forza del campo di potenziale in ogni dato
punto era una funzione del profilo di ampiezza e della distanza
relativa tra il robot ed un oggetto.

La forza di un campo di potenziale può però essere una funzione dello
stimolo, indipendentemente dalla distanza. Come esempio si richiama
dalla lez. 3 il behaviour di cibo per il piccolo di rondine artica dove il
behaviour cibo è guidato dallo stimolo "rosso." Questo può essere
modellato da un campo attrattivo. Più grande e rosso è un oggetto nel
campo visivo del piccolo, più forte l'attrazione, suggerendo un profilo
di ampiezza che usa una funzione esponenziale crescente.

Un altro importante punto che già è stato menzionato è che i campi di
potenziale sono ego-centrici perché la percezione di un robot è ego-
centrica.
                                                                    79
        Programmazione di un singolo campo di potenziale

I campi di potenziale sono facili da programmare, specialmente
quando sono ego-centrici rispetto al robot.

La visualizzazione di un intero campo può indurre a pensare che il
robot e gli oggetti sono in un sistema di coordinate fisso, assoluto, ma
in realtà non lo sono.

Il robot calcola l'effetto del campo di potenziale, di solito come una
linea retta, ad ogni aggiornamento senza memoria di dove era prima o
dove il robot si è mosso.

Vediamo alcuni esempi.


                                                                 80
Un campo di potenziale primitivo è rappresentato usualmente da una
sola funzione. Il vettore che ha un impatto sul robot è calcolato ad ogni
aggiornamento. Si consideri il caso di un robot con un solo sensore di
distanza rivolto in avanti. Il progettista decide che è adatto un campo
repulsivo con una attenuazione lineare.
La formula è:
          Vdirection       = -180°
                                D  d            
                                          per d  D
          Vmagnitude       =    D                  
                               0
                                         per d  D 
                                                 > 
  dove D è il range massimo dell'effetto del campo, o la massima
  distanza a cui il robot può scoprire l'ostacolo.
  (D non è sempre la distanza di rilevamento. Può essere la distanza alla quale il
  robot dovrebbe rispondere ad un stimolo. Per esempio, molti sonar possono
  scoprire ostacoli lontani 60 cm, producendo una risposta quasi infinitesima nel
  behaviour emergente ma richiedendo un alto runtime per la chiamata di funzione.
  In pratica, un robotico metterebbe un D di 2 metri).
  Si noti che la formula produce un risultato quando
                                                                           81
                  0.0 <= Vmagnitude <= 1.0.
    Questo è un frammento di codice C che cattura il campo repulsivo.

typedef struct {
       double magnitude;
       double direction;
             } vector;
vector repulsive(double d, double D)
{
       if (d <=D)
       {
       outputVector.direction =180; // si gira!
       outputVector.magnitude = (D-d)/D; // decadimento
                                                  lineare
         }
       else {
             outputVector.direction=O.O
             outputVector.magnitude=O.O
             }
  return outputVector;
}                                                                82
A questo punto, è facile illustrare come un campo di potenziale può
essere usato da un behaviour, RUNAWAY, per il robot con un solo
sensore. Il behaviour RUNAWAY userà la funzione repulsive() come
schema motorio, ed una funzione readSonar() come schema percettivo.
L‟output del behaviour è un vettore.
RUNAWAY è chiamato dal robot ad ogni ciclo di aggiornamento.

vector RUNAWAY()
{
  double reading;
  reading=readSonar(); // schema percettivo
  vector=repulsive(reading, MAX_DISTANCE); // schema
                                                motorio
  return Voutput;
}
while (robot==ON)
{
      Vrunaway=runaway(reading); // schema motorio
      turn(Vrunaway.direction);
      forward(Vrunaway.magnitude*MAX_VELOCITY);      83

}
               Combinazione di behaviour e Campi

Come affermato precedentemente, il primo attributo di una vera
metodologia di campi di potenziale è che essa richiede che tutti i
behaviour siano implementati come campi di potenziale.

Il secondo attributo è che essa combini i behaviour non mediante una
sussunzione uno dell‟altro, ma mediante una sommatoria di vettori.

Un robot avrà generalmente forze agenti su lui provenienti da
behaviour multipli e concomitanti.

Vogliamo fornire due esempi di come behaviour multipli sorgono e
come sono implementati e sono combinati.
                                                              84
Un primo esempio è la semplice navigazione di un robot che sta
perseguendo una meta (specificata come "10.3 m in direzione Θ")
ed incontra un ostacolo. Lo schema motorio del behaviour di
move2goal è rappresentato con un campo di potenziale attrattivo che
usa gli shaft encoder del robot per dire se è giunto alla posizione di
meta. Il behaviour RUNAWAY è un campo repulsivo ed usa un
sensore di distanza per scoprire se qualche cosa è di fronte a lui.


                                             G
                               O




                                                                85
La Fig. mostra una vista a volo di uccello dell'area di azione, e mostra
una visualizzazione del campo di potenziale. Il behaviour di
move2goal in Fig. b esercita un campo attrattivo sull‟intero spazio;
dovunque sia il robot, esso sarà attratto dalla meta. Il behaviour
RUNAWAY in Fig. a esercita un campo repulsivo in un raggio attorno
all'ostacolo (tecnicamente il campo repulsivo si estende su tutto lo
spazio come fa move2goal, ma la ampiezza della repulsione è 0.0 oltre
il raggio d‟azione). Il campo combinato è mostrato in Fig. 4.16 c.


                     G
        R     O




                                                                 86
Ora si consideri il behaviour emergente del robot immerso in questo
campo quando parte dall'angolo in basso a sinistra, mostrato in Fig.
Al tempo t0, il robot sente il mondo. Può percepire solamente la meta
e non può percepire l'ostacolo, così l'unico vettore che sente è
attrattivo (runaway ritorna un vettore di ampiezza 0.0). Esso si
muove su una linea retta verso la meta. A t2, aggiorna i suoi sensori ed
ora percepisce la meta e l'ostacolo. Entrambi i behaviour offrono un
vettore; i vettori sono sommati ed il robot ora si allontana. A t3, il
robot si è mosso già oltre l'ostacolo e la meta va ora esercitando la
forza più forte. A t4, riprende la corsa e raggiunge la meta.


                                             O
                     G
                                   t3   t4       t5
                              t2

                         t1
                t0
                                                                  87
L'esempio illustra anche altri punti sui metodi a campi di potenziale: l'impatto della
velocità di aggiornamento e i minimi locali. Si noti che la distanza (lunghezza delle
frecce) tra aggiornamenti è diversa. Questo è dovuto ai cambi nella ampiezza del
vettore di output che controlla la velocità del robot. Se il robot ha un vettore più
"corto", viaggia più lentamente e, perciò, copre meno distanza nello stesso
ammontare di tempo. Può anche superare il segno tra un aggiornamento e l‟altro
come visto tra t3 e t4 dove il robot va veloce senza girare e quindi deve tornare
indietro. Il cammino sarà più breve se l‟aggiornamento è più frequente. Un altro
aspetto della frequenza di aggiornamento è che il robot può superare la meta,
specialmente se sta usando shaft encoders (la meta è a 10.3 metri da dove il robot è
partito). Qualche volta i progettisti usano campi attrattivi con una ampiezza che si
attenua man mano che il robot si avvicina, facendo rallentare il robot che così può
dire che è giunto alla meta. (I programmatori mettono di solito una tolleranza
sull'ubicazione della meta, per esempio invece di 10.3m la meta è l0.3m0.5m.)




                                                                                88
I campi di potenziale trattano il robot come se fosse una particella che
può cambiare istantaneamente velocità e direzione. Questo non è vero
per i robot reali. Robot di ricerca come Khepera (mostrato in Fig.)
possono girare in qualunque direzione, ma devono fermarsi prima e
c'è un ammontare misurabile di errore a causa dell‟attrito tra le ruote e
la superficie. Molti robot hanno Ackerman, o sterzi di automobile, e
chiunque ha tentato di parcheggiare un'automobile sa che una
macchina può andare solamente in certe direzioni.




                                                                   89
Un terzo problema è che i campi possono anche dare somma 0. In Fig.,
si disegni una linea tra la Meta e l'Ostacolo. Lungo questa linea dietro
all‟ostacolo, i vettori hanno solamente una testa (direzione della
freccia) e nessun corpo (lunghezza della freccia). Questo vuole dire
che l‟ampiezza è 0 e che il robot se raggiunge quel posto, si fermerà e
non si muoverà più. Questo stato è chiamato un problema di minimo
locale, perché il campo di potenziale ha un minimo, o un avvallamento
che intrappola il robot. Soluzioni al problema di minimi locali saranno
descritte alla fine del capitolo.




                                                                 90
            Esempio che usa un behaviour per sensore

Per avere un altro esempio di come è potente questa idea di sommatoria
di vettori, è utile considerare come RUNAWAY per evitare ostacoli è
implementato comunemente su veri robot. La Fig. 4.18 mostra una
configurazione dei sensori di distanza IR su un robot Khepera.




                                                               91
Siccome i sensori sono montati permanentemente sulla piattaforma, il
loro angolo αi, relativo al fronte è conosciuto. Se un sensore riceve
una lettura di distanza, qualche cosa è di fronte a quel sensore. Sotto un
campo repulsivo per RUNAWAY, il vettore di input sarà di 180°
opposto a αi. Il sensore non è capace di dire molto sull'ostacolo: solo
che si trova diritto di fronte a lui ed è ad esso perpendicolare.

Se questo sensore fosse l'unico sensore sul robot, il behaviour
RUNAWAY sarebbe molto stringente. Ma cosa accade se, come nel
caso di Khepera, il robot ha più sensori di distanza? Gli ostacoli più
grandi saranno scoperti da più sensori allo stesso tempo.

In genere si ha un behaviour RUNAWAY per ogni sensore.
Questa operazione è chiamata istanziazione multipla dello stesso
behaviour.                                                92
Nel frammento di codice a istanziazione multipla sottostante si nota che
tutto quello che deve essere fatto è di aggiungere un ciclo per sondare
ogni sensore.

In questo caso sfruttiamo le due proprietà della somma vettoriale:
associativa (a+b+c+d) può essere calcolata come ((a + b) + c) + d),
commutativa (non importa in che ordine i vettori sono sommati).

while(robot==ON) {
vector.mag=vector.dir=0.0; //inizializza a 0
for (i=0; i<=numberIR; i++ {
vectorCurrent=Runaway(i); guarda un certo sensore

vectorOutput=VectorSum(tempVector,vectorCurrent);
}
turn(vector.dir);
forward(vector.mag*MAX_VELOCITY);           93
}
Come si vede in Fig. 4.19, il robot è capace di uscire fuori da una
trappola tipo caverna, detta un box canyon, senza costruire un modello
del muro. Ogni istanza offre un vettore, alcuni dei quali hanno una
componente X o Y che lo porta fuori.
Da una prospettiva etologica, il programma è elegante perché è
equivalente alla instanziazione di behaviour negli animali.
Si ricordi, nel Ch. 3 il modello di rana computrix e la sua controparte
nella vita reale, il rospo, dove ogni occhio vede e risponde
indipendentemente dall'altro occhio al passaggio di una mosca. In
questo caso, il programma tratta il robot come se avesse 8 occhi
indipendenti!




                                                                94
Da un punto di vista robotico, l'esempio illustra due punti importanti.
Primo, l'accoppiamento diretto delle operazioni di sentire e di agire.
Secondo, la programmazione con behaviour è consistente con le
buone pratiche di ingegneria del software. La funzione RUNAWAY
esibisce una coesione funzionale, dove la funzione fa una sola cosa e
bene ed ogni asserzione nella funzione ha direttamente qualche cosa a
che fare con lo scopo della funzione. La coesione funzionale è
desiderabile, perché questo vuole dire che è improbabile che la
funzione presenti side effects nel programma principale o che sia
dipendente da un'altra funzione. L'organizzazione complessiva mostra
l‟accoppiamento dei dati, dove ogni chiamata di funzione prende un
semplice argomento. L‟accoppiamento dei dati è buono, perché ciò
vuole dire che tutte le funzioni sono indipendenti; per esempio, il
programma può essere cambiato facilmente per tener conto di più
sensori.                                                       95
L'alternativa alla instanziazione multipla è fare in maniera che lo
schema percettivo di RUNAWAY processi tutte le 8 letture di distanza.
Un approccio è quello di sommare internamente tutti gli 8 vettori. (Si
può facilmente vedere che il vettore risultante è lo stesso) . Questo non
è elegante dal punto di vista dell‟ingegneria del software perché il
codice ora è specifico del robot (si dice che la funzione ha una
coesione procedurale), e può essere usato solamente con un robot che
ha otto sensori di distanza in quelle ubicazioni.

Un altro approccio che produce un behaviour emergente diverso è
quello che prevede che lo schema percettivo ritorni la direzione e la
distanza delle sole letture di distanza più grandi. Questo rende il
behaviour più selettivo.

                                                                  96
         I campi di potenziale comparati con la sussunzione

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 di 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.                           97
Nell'esempio della sussunzione , si può immaginare, che questi vettori
vengano sommati nel modulo RUNAWAY come mostrato in Fig. In un
sistema a campi di potenziale, ciascuna lettura sonar rilascia un‟istanza
del behaviour RUNAWAYpf ("pf" è usato per rendere chiaro quale
RUNAWAY è assegnato). Il behaviour di RUNAWAYpf 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.




                                                                  98
While (robot==ON)
{
       vector.magnitude=vector.direction=0;
       For (i=0; i<=numberSonars; i++)
{
       Reading=readSonar ();               // schema percettivo
       currentVector=runaway(reading);     // schema motorio
       vector=vectorSum(vector, currentVector);
}
       turn(vector.direction);
       forward(vector.magnitude*MAX_velocità);
}


                                                                  99
Il modulo COLLIDE nella sussunzione non coincide con un
behaviour nella metodologia a campi di potenziale.
Si ricordi che lo scopo di COLLIDE è fermare il robot se tocca un
ostacolo; e questo accade se il behaviour RUNAWAY 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 COLLISION non avrebbe alcun impatto. Invece le
collisioni sono spesso trattate come situazioni di "panico",
provocando una risposta di emergenza fuori della struttura del campo
                                                                 100
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 WANDER, come mostrato in Fig.




                                                              101
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 WANDER con l‟output dei
vettori di RUNAWAYpf, il bisogno di un nuovo behaviour AVOID è
eliminato. Il vettore WANDER è sommato al vettore repulsivo e di
conseguenza, il robot si allontana contemporaneamente dagli ostacoli
e va verso la direzione desiderata. Questo è mostrato in Fig.




                                                                102
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 WANDERpf viene aggiunto al behaviour
RUNAWAYpf.
Ora vediamo, per il Livello 2, come sarebbe implementato follow-
corridor 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: RUNAWAYpf e follow-
corridor. RUNAWAYpf rimarrebbe lo stesso di prima, ma WANDER
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
                                                               103
behaviour diversi.
L2
L1



     FOLLOW-CORRIDOR
L0




                       104
Il behaviour follow-corridor è interessante, perché richiede un campo
di potenziale più complesso.
Come mostrato in Fig., 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 e
che punta al centro, ed un campo uniforme perpendicolare al confine
destro 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.




                                                               105
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 così




                                                                   106
Il behaviour di follow-corridor usa gli stessi dati dei sonar di AVOID;
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 follow-
corridor?


Prima di tutto i behaviour sono indipendenti. Se c'è un behaviour
follow-corridor, 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.


                                                                 107
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, follow-
corridor può sopprimere le istanze di AVOID 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 follow-corridor tratterà il profilo dell'ostacolo
come un muro e si sposterà più vicino al centro.


                                                                  108
Gli schema motori per un behaviour possono essere ordinati in
sequenza. Un esempio di questo è il behaviour di docking. Docking
(approccio) è quando un robot si deve muovere verso una specifica
ubicazione (la stazione di docking) 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 docking 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 alle sue
spalle; il robot si fermerebbe dietro la 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 docking, come
mostrato in Fig. 4.24.

                                                                  109
Sfortunatamente l'attrazione selettiva non copre il caso di quando il
robot si avvicina dalla parte posteriore o di lato. 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 dock 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 Fig..




                                                                110
111
Un aspetto interessante del behaviour di docking è quando il robot sta
operando in prossimità del dock.
Il dock rilascia un‟istanza di AVOID che impedisce al robot di andare
vicino alla posizione desiderata.
In questo caso, i behaviour di docking devono attenuare l‟ampiezza
(il guadagno) del vettore di output dell‟ AVOID instanziato nell'area
di dock.
Essenzialmente questo è come se inibisse in parte il behaviour di
AVOID in alcune regioni selezionate.
Avremo quindi che tra attrazione e repulsione il robot si ferma dove
l'attrazione selettiva del dock 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
dock, non può istanziare i campi.

                                                                112
DOCKING




          113
E‟ probabile che un robot industriale sappia la direzione relativa di
un dock molto di più di quanto un'ape ricordi la direzione del suo
alveare. Perciò una forza attrattiva attira il robot vicino al dock, e poi
quando il robot vede il dock, comincia l‟effetto di incanalamento
verso la posizione con l‟orientamento corretto anche in presenza di
ostacoli, come si vede in Fig.




                                                                    114
115
Almeno tre schemi percettivi sono necessari per il behaviour di
docking. Uno è necessario per estrarre la direzione relativa del dock
per l'attrazione regolare.


Un altro è uno schema percettivo capace di riconoscere il dock 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 attenzione
selettiva e deve essere capace di interagire con la parte anteriore del
dock e valutare la distanza e l‟orientamento relativo del robot.
                                                                   116
      DOCKING
     ATTRATTIVO

    DOCKING
  TANGENZIALE
 DOCKING
SELETTIVO




                  ∑

                      ∑




                          117
Il behaviour di docking è definito quindi come costituito da tre schemi
percettivi e tre schemi motorii (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.




                                                                118
Nel caso del behaviour di docking, una macchina a stati finiti è una
scelta ragionevole per coordinare la sequenza di schemi percettivi e
motorii.

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 dock sotto
l‟influenza dei campi tangenziali e dell‟attenzione selettiva. Se una
persona gli passa davanti, essa occluderebbe la vista del dock e quindi
cesserebbe l‟attrazione. Allora si riattiva lo schema motorio di
attrazione generale, e insieme allo schema percettivo associato
rivalutano la direzione del dock alla luce del nuovo ostacolo.
Il nuovo vettore permetterebbe al robot di evitare la persona andando in
una direzione favorevole al raggiungimento del dock e tentare di
raggiungerlo.                                                    119
Il behaviour di docking 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 dock.


Similmente il raggio del campo tangenziale e di attrazione selettiva è
determinato dalla distanza alla quale il robot può percepire il dock.


                                                                  120
                         Vantaggi e svantaggi

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.                                      121
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 dietro 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.
                                                                122
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 AVOID e gli
altri behaviour, come quello del campo attrattivo di muovere-verso-
una-meta. Il problema dei minimi scomparirebbe se il campo di
potenziale AVOID fosse in qualche modo più intelligente. In NaTs, il
behaviour AVOID 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. 123
Per esempio, se il robot sta attraversando un ponte (vedi Fig.), 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.




                                                                   124
NaTs implementa questa semplice euristica nel campo di potenziale per
RUNAWAY, promuovendolo ad un vero AVOID. 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 AVOID 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.                125
Per riassumere i punti principali sulle architetture a campi di
potenziale:

• I behaviour sono definiti come formati da uno o più behaviour di
schemi motori e percettivi. Lo schema motorio per un behaviour deve
essere un campo di potenziale.

• Tutti i behaviour operano concomitantemente ed i vettori di output
sono sommati. I behaviour sono trattati alla pari e non sono stratificati,
anche se ci possono essere, come vedremo, behaviour astratti che
internamente ordinano in sequenza i behaviour. Il programma di
controllo coordinato non è specificato; il progettista può usare la
logica, oppure macchine a stati finiti, ogni qualvolta è ritenuto
opportuno. L‟ordinare in sequenza è di solito controllato da percezioni
o affordances presenti nell'ambiente che sono viste come releasers.
                                                                  126
• Anche se tutti i behaviour sono trattati ugualmente, i behaviour
possono dare contributi diversi all'azione complessiva del robot. Un
behaviour può cambiare i guadagni rispetto a un altro behaviour,
riducendo o aumentando l‟ampiezza del suo output. Questo vuole dire
che i behaviour possono inibire o eccitare gli altri behaviour, anche se
questo è usato in pratica raramente.

• La percezione di solito è gestita da percezioni dirette o affordances.

• Una percezione può essere condivisa da diversi behaviour. Una
conoscenza a priori può essere data allo schema percettivo, per
simulare un sensore specializzato che è più sensibile ad eventi come i
confini di un corridoio.
                                                                   127
             La valutazione delle Architetture Reattive
Come visto dall'esempio di follow-corridor, 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.




                                                                 128
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.
                                                                  129
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.

                                                               130

								
To top