...

ppt

by user

on
Category: Documents
34

views

Report

Comments

Description

Transcript

ppt
1
Lez. 12
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 ReattivoDeliberativo 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.
6
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.
7
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.
8
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.
9
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 per
introdurre anche elementi di intelligenza.
10
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.
11
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.
12
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.
13
Il Paradigma Reattivo eliminò la componente di Pianificazione
della triade Percezione, Pianificazione, Azione, come mostrato in
Figura.
behaviour
behaviour
SENSE
behaviour
SENSE
behaviour
SENSE
behaviour
SENSE
behaviour
SENSE
SENSE
ACT
ACT
ACT
ACT
ACT
ACT
14
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.
15
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.
16
…....
17
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 si è visto nel capitolo precedente relativo ai
fondamenti biologici del paradigma reattivo, i behaviour
18
favoriscono l'uso di affordances.
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 è nonbanale 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.
19
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.
20
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.
21
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)).
22
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 che i biologi chiamerebbero
riflessi stimolo-risposta puri.
23
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.
24
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 AzionePercezione alla 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
25 che
loro stanno lavorando su robotica ecologica.
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. Questi meccanismi
26
includono combinazione, soppressione, 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 egocentrici (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.
27
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.
28
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.
29
Lez. 13
30
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 reattiva31può
essere 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.
32
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.
33
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.
34
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.
35
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.
36
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 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.
37
38
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.
39
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.
40
I behaviour sono attivati con una modalità tipo stimolorisposta, 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 ambiente.
Ognuno degli strati può essere visto come un behaviour
astratto per un particolare compito.
41
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-prenderetutto, dove il vincitore è sempre lo strato più alto.
42
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.
43
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.
44
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 quando possibile.
4. Un task è portato a termine attivando lo strato opportuno che
poi attiva gli strati più bassi sotto di lui e così via.
45
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.
46
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.
47
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.
48
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.
49
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.
50
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.
51
È 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).
52
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.
53
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
54
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
55
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.
56
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 dei 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.
57
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.
58
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.
59
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.
60
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).
L2
L1
L0
61
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
62
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
L2
vuoti negli adattamenti
dovuti a diverse velocità L1
di aggiornamento dei
diversi moduli. Si noti
che LOOK e
STAYINMIDDLE sono
alquanto sofisticati da unL0
punto di vista software.
63
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.
64
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."
65
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.
66
• 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.
67
•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.
68
•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 gli altri strati.
69
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.
70
PROPOSTE DI PROGETTI
HARDWARE
1. Simulare il comportamento di tre robot. L’ambiente è
costituito da una tana, degli ostacoli e il cibo. Un robot va in
esplorazione, cerca il cibo, quando lo trova chiama gli altri
due robot. Quando questi arrivano nei pressi del primo
robot questi concede l’accesso al cibo ai due altri robot e
regola il loro ritorno alla tana.
71
Lez. 14
72
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.
73
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.
74
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 è
75
associato un vettore.
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.
76
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).
77
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 ….”.
78
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.
79
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.
80
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 orari o antiorari; la Fig. e mostra
una rotazione oraria. Essi sono utili per spingere un robot a girare
attorno ad un ostacolo, o un robot a investigare su qualche cosa.
81
Profili di ampiezze
Si osservi che nelle 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.)
82
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
83
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.
84
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 l’oggetto inizierà a rallentare
per evitare di colpirlo.
85
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 èy l’ampiezza. b
m
 x ). Qualunque
influenza l'inizio della linea e m è l’inclinazione (
valore di m e b è accettabile. Se non è 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.
86
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à.
87
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.
88
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.
89
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.
90
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°
Vmagnitude
=
 D  d 

per d  D

 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
0.0 <= Vmagnitude <= 1.0.
91
Questo è un frammento di codice C che cattura il campo repulsivo.
typedef struct {
double magnitude;
double direction;
} vector;
vector repulsive(double d, double D)
{vector outputVector;
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;
}
92
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()
{ vector Voutput;
double reading;
reading=readSonar(); // schema percettivo
Voutput =repulsive(reading, MAX_DISTANCE);// schema
return Voutput;
// motorio
}
// ****************** MAIN **************
while (robot==ON)
{
double Vrunaway;
Vrunaway=RUNAWAY(reading); // schema motorio
turn(Vrunaway.direction);
forward(Vrunaway.magnitude*MAX_VELOCITY);
93
}
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.
94
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
95
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
96
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
97
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.
98
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.)
99
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.
100
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.
101
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.
mostra una configurazione dei sensori di distanza IR su un robot
Khepera.
102
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.
103
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);
104
}
Come si vede in Fig., 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!
105
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
106 può
essere cambiato facilmente per tener conto di più sensori.
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
107
behaviour più selettivo.
Lez. 15
108
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
109
vettore, puntando il robot nella direzione opposta.
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.
110
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à);
}
111
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
112
emergenza fuori della struttura del campo di potenziale.
Alcune differenze più sottili tra campi di potenziale e sussunzione
appaiono quando è considerato il caso del Livello 1. La stessa
funzionalità può essere portata a termine aggiungendo un solo
blocco di behaviour WANDER, come mostrato in Fig.
113
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.
114
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 followcorridor 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
115
due behaviour diversi.
L2
L1
L0
FOLLOW-CORRIDOR
116
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.
117
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ì
118
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.
119
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.
120
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.
121
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.
122
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..
123
124
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.
125
DOCKING
126
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.
127
128
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.
129
DOCKING
ATTRATTIVO
DOCKING
TANGENZIALE
DOCKING
SELETTIVO
∑
∑
130
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.
131
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.
132
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.
133
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 2D134vanno
bene anche per il 3D.
Costruire un sistema reattivo con campi di potenziale non è senza
svantaggi.
Il problema comunemente più citato con i campi di potenziale è
quello che campi multipli possono portare ad un vettore con
ampiezza 0; questo è chiamato il problema del minimo locale. Si
veda il caso del box canyon. Se il robot viene attirato in un punto
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
135
locali. Si vedano le reti neurali e il simulated annealing.
Un'altra soluzione è quella dei template di navigazione (Navigation
Templates), come quelle implementate da Mark Slack per JPL (Jet
Propulsion Lab – California Inst.of Tech.).
La motivazione è che il problema dei minimi locali spesso sorge a
causa di interazioni fra il behaviour di campo repulsivo di AVOID
e gli altri behaviour, come quello del campo attrattivo di muovereverso-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.136
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.
137
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.
138
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.
139
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.
140
• 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.
141
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.
142
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).
143
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.
144
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.
145
Fly UP