Sistemi per il Governo dei robot
Shakey il robot
“Autonomo”
Forastiere Manolo
50/007
Marrello Valentino 50/010
Struttura del seminario
•Paradigma reattivo
Esempio di funzionamento
Passi per progettare un sistema reattivo
Architettura a sussunzione
Tabella dei behavior per sussunzione
FSA
Architettura a campi di potenziale
•Conclusioni
Nel presente seminario si vuole mostrare come Shakey, il robot
mobile dell’università di Stanford, implementato da Nilsson, nato con
lo scopo di pianificare ogni azione o task che doveva compiere prima
di poter procedere, potrebbe essere pensato utilizzando un paradigma
reattivo in modo da agire in maniera riflessiva agli stimoli
dell’ambiente in cui è immerso.
Si passa quindi dal
Al
Sense
Sense
plan
act
act
Esempio di funzionamento
Per capire come Shakey potrebbe diventare autonomo e quindi essere
adattato al paradigma reattivo, prendiamo come esempio un ambiente
costituito da stanze, porte e oggetti e vediamo, utilizzando sia
un’architettura a sussunzione che una a campi di potenziale come si
riesce a risolvere un compito come quello di cercare un oggetto della
quale non si conosce la collocazione.
Per far ciò mostriamo in sequenza i vari passi che ci portano a
descrivere la nicchia ecologica di Shakey per poi specificare i
behavior e come questi vengono integrati.
Step 1 Descrizione del task
L’obiettivo di shakey è quello girare per delle stanze attraversare
porte per individuare un oggetto di colore rosso e raggiungerlo. Per
fare questo però bisogna tener presente che nell’ambiente sono posti
degli ostacoli come pareti e oggetti.
Step 2 descrizione del robot
Shakey è un robot di circa 50 cm per 50 cm con una altezza di 150
cm. E’ dotato di due ruote motrici poste ai suoi lati e di una ruota
girevole anteriore. I sensori di cui è equipaggiato sono:
1 range finder situato sull’albero al centro orientato sul davanti del
robot, che permette di ricavare la distanza di un oggetto e
l’allineamento con lo stesso in un raggio di 2 metri;
1 telecamera a colori con un raggio d’azione in ampiezza di circa
150° e in profondità di circa 4 metri
2 Bumper detector posti uno sul davanti e uno sui lati.
Ovviamente dal momento che Shakey non deve richiedere
l’intervento dell’uomo, non sarà utilizzato il dispositivo radio che
nel paradigma gerarchico serviva per mandare istruzioni per i relativi
compiti che doveva eseguire.
Step 3 Descrizione dell’ambiente
L’ambiente in cui è immerso Shakey come già menzionato è
composto da due stanze (di 7x7 m2) che hanno in comune un
corridoio (di 14x2 m2), per accedere al corridoio dalle stanze vi
sono due porte. Nelle stanze possono essere presenti ostacoli (alti
quanto shakey) ed in una delle tre stanze viene posto l’oggetto di
colore rosso che Shakey deve trovare. Le pareti del corridoio sono
di colore blu, diverse rispetto al pavimento in modo da poterle
distinguere con la telecamera, mentre le porte sono di colore
marrone.
L’amipezza delle porte è maggiore dell’ampiezza di shakey.
Step 4 descrizione delle reazioni di shakey in risposta
all’ambiente
Possiamo ora concentrarci su ciò che Shakey dovrebbe fare cioè il
comportamento che dovrà avere in base alle situazioni ambientali che
si presentano.
Nel momento in cui Shakey viene introdotto in una delle stanze
possono essere percepite dal sistema sensoriale diverse situazioni:
1- Shakey è posto difronte ad un ostacolo e quindi deve avere un
Behavior per evitare l’ostacolo
2- Shakey vede l’oggetto che deve raggiungere e quindi bisogna
prevedere un behavior per raggiungere lo stesso
3- Se Shakey vede le pareti blu il suo behavior sarà quello di seguirle
4- Se shakey non vede ne un ostacolo ne un obiettivo, bisogna
prevedere un behavior che permetta di passeggiare per la stanza in
modo da riuscire a trovare l’oggetto
A questo punto dal momento che l’oggetto può non essere presente
nella stanza bisogna far sì che Shakey non passeggi per un tempo
indeterminato, ma prevedere che egli possa cambiare stanza. Visto
che ci sono delle porte che separano una stanza dall’altra
bisognerebbe mettere un limite al tempo che Shakey impiega nel
passeggiare casualmente e fare in modo che se dopo un determinato
tempo t non viene avvistato l’obiettivo porsi come un nuovo obiettivo
quello di attraversare una porta.
Se Shakey invece individua il corridoio allora bisogna prevedere un
behavior che gli permetta di seguirlo e nello stesso tempo di
controllare se vi sono ostacoli o obiettivi da raggiungere.
Step 5 Raffinare ogni behavior
(1/8)
A tal punto abbiamo un’idea complessiva di quello che Shakey
dovrebbe poter fare. Il robot dovrebbe essere in grado di evitare
ostacoli e pareti, di rilevare ed attraversare una porta, di rilevare ed
attraversare un corridoio, di rilevare il goal e dirigersi verso di esso.
I behavior individuati sono i seguenti:
• Collide
• RunAway
• Wander
• Avoid
• Follow_corridor
• Through_door
• Move_to_goal
Step 5 Raffinare ogni behavior
(2/8)
Di seguito è riportata una descrizione in termini di schema theory di
ciascun behavior primitivo
Il behavior collide ha lo scopo di fermare i motori nel momento in
cui lo schema percettivo “avverte” l’urto del robot con un
oggetto.
Always_on
bumper
Collide
Read_bumper()
Stop_wheel()
stop motor
Schema
percettivo
Read_bumper()
percetto
Bumper_status
Schema
motorio
stop_wheel(bumper_status)
Step 5 Raffinare ogni behavior
(3/8)
Il behavior RunAway ha lo scopo di aggirare un ostacolo presente
davanti Shakey. Il sonar dà un’indicazione della distanza
dell’oggetto da Shakey, lo schema percettivo estrae il percetto in
termini di coordinate polari (distanza,angolo) e se necessario, lo
schema motorio provvede ad inviare i comandi per arretrare e
invertire la rotta di 45°
Always_on
Sonar
RunAway
Extract_distance()
Turn()
Inverti rotta
Schema percettivo
Extract_distance()
Percetto
(d,θ)
Schema motorio
Turn(d, θ)
Step 5 Raffinare ogni behavior
(4/8)
Il behavior Wander ha lo scopo di generare una direzione casuale
ogni n secondi che Shakey dovrebbe seguire. Lo schema
percettivo potrebbe essere pensato come un timer che segnala lo
scadere degli n secondi. Lo schema motorio genera di
conseguenza una direzione casuale (in termini di coppia
(distanza,angolo))
Always_on
timer
Wander
Count_down()
Direzione casuale
Random_walk()
Schema percettivo
Count_down()
Percetto
Time_remaining
Schema motorio
Random_walk()
Step 5 Raffinare ogni behavior
(5/8)
Il behavior Avoid combina la distanza generata dal behavior
wander con la lettura proveniente dal sonar. Lo schema percettivo
somma il vettore proveniente da wander con il vettore che
individua l’ostacolo ottenendo la direzione verso cui Shakey
dovrebbe dirigersi. Lo schema motorio genera un pattern di
azioni motorie da inviare agli attuatori per seguire la direzione
desiderata.
Always_on
Sonar
Wander
Azioni motorie
per seguire
la direzione
Avoid
Feel_force()
Avoid()
Schema percettivo
Feel_force()
Percetto
(d, θ)
Schema motorio
Avoid(d, θ)
Step 5 Raffinare ogni behavior
(6/8)
Il behavior Follow_corridor permette di individuare e percorrere il
corridoio. La telecamera fornisce allo schema percettivo
l’immagine dell’ambiente, lo schema percettivo individua la
presenza del corridoio (dal colore delle pareti) mentre lo schema
motorio genera un pattern di azioni motorie per attraversare il
corridoio.
See_corridor
telecamera
Follow_corridor
Extract_color() Go_straight()
Azioni
motorie per
attraversare
il corridoio
Schema percettivo
Extract_color(blu)
Percetto
c_x
Schema motorio
Go_straight(c_x)
Step 5 Raffinare ogni behavior
(7/8)
Il behavior Through_door permette di individuare ed attraversare
una porta (oggetto di colore marrone). Lo schema percettivo
riceve dalla telecamera l’immagine dell’ambiente da cui estrae la
posizione della porta (individuandone il colore), lo schema
motorio genera un pattern di azioni motorie per attraversarla.
See_door
telecamera
Through_door
Azioni motorie
per attraversare
la porta
Extract_color() Through_door()
Schema percettivo
Extract_color(brown)
Percetto
c_x
Schema motorio
Through_door(c_x)
Step 5 Raffinare ogni behavior
(8/8)
Il behavior Move_to_goal infine permette di individuare e dirigersi
verso l’obiettivo (oggetto di colore rosso). Lo schema percettivo
riceve dalla telecamera l’immagine dell’ambiente e fornisce allo
schema motorio la posizione dello stesso. Lo schema motorio
provvede ad inoltrare i comandi giusti agli attuatori al fine di
raggiungere l’oggetto.
See_goal
telecamera
Move_to_goal
Extract_color()
Azioni motorie
per raggiungere
il goal
Move_to_goal()
Schema percettivo
Extract_color(red)
Percetto
c_x
Schema motorio
Move_to_goal(c_x)
Tabella dei behaviors
Releaser
Behaviour
Always_on
Collide()
Always_on
Runaway()
Always_on
Avoid()
Not_See_Goal=
Extract_color(red)
See_door=
Extract_color(brown)
Wander()
Through door
Motor Scheme
Percepts
Perceptual scheme
Stop_wheel(Bumper_status)
Bumper_stat
us
Read_bumper()
Turn(d,θ)
(d,θ)
Extract_Distance(sonar)
Avoid(d,θ)
(d,θ)
Feel_force(wander,sonar)
Random_walk(Time_remaining)
Time_remain
ing
Countdown()
Through_door(c_x)
c_x
Extrat_color(brown)
See_corridor=
Extract_color(blu)
Follow corridor()
Go_straight(c_x)
c_x
Extract_color(blu)
See_Goal=
extrat_color(red)
Move_to_goal()
Move_to_goal(c_x)
c_x
Extract_color(red)
Automa a stati Finiti
stop
See_goal and
Bumper_on
See_goal
Move
to goal
See_goal
See_goal
Not_See_goal
And Not_see_corridor
Start
Through
door
See_corridor
See_goal
See_door
Not_See_goal
And Not_see_corridor
See_door
Wander
Follow
corridor
See_corridor and not _See_goal
Step 6 Sussunzione
(1/6)
I livelli di competenza L0 ed L1 permettono al robot di
girovagare e nel contempo di evitare ostacoli. Nel caso in cui
avoid genera una direzione (data dalla somma fra il vettore
casuale di wander ed il vettore ostacolo), il modulo RunAway è
soppresso.
L1
Wander
Avoid
Sonar
RunAway
Bumper
Collide
s
Turn
L0
Forward
Step 6 Sussunzione
(2/6)
Il livello L2 permette al robot di attraversare il corridoio. Nel
momento in cui lo schema percettivo Extract_color(blu)
individua il corridoio, lo schema motorio Go_straight() dà al
modulo avoid la direzione necessaria per attraversarlo
sopprimendo il modulo wander. In tal caso il robot è in grado di
attraversare il corridoio evitando eventuali ostacoli.
L2
L1
Telecamera
Wander
Extract_color
(blu)
s
Go_straight
corridor
Avoid
Sonar
RunAway
Bumper
Collide
s
Turn
L0
Forward
Step 6 Sussunzione
(3/6)
Il livello L3 permette al robot di attraversare una porta. Nel
momento in cui lo schema percettivo Extract_color(brown)
individua la porta, lo schema motorio Through_door dà al
modulo avoid la direzione necessaria per attraversarla
sopprimendo il modulo wander e Go_straight. In tal caso il
robot è in grado di attraversare la porta evitando eventuali
ostacoli.
Extract_color
(brown)
L3
Telecamera
L2
L1
L0
Wander
Extract_color
(blu)
s
door
Through_door
Go_straight
s
corridor
Avoid
Sonar
RunAway
Bumper
Collide
s
Turn
Forward
Step 6 Sussunzione
(4/6)
Il livello L4 permette al robot di individuare e dirigersi verso il goal (oggetto
di colore rosso). Lo schema motorio Move_to_goal sopprime gli schemi
motori dei livelli sottostanti per poi terminare in avoid.
Extract_color
(red)
L4
Extract_color
(brown)
L3
L2
L1
L0
Telecamera
Wander
Extract_color
(blu)
s
Move_to_goal
Goal
door
Through_door
s
Go_straight
s
corridor
Avoid
Sonar
RunAway
Bumper
Collide
s
Turn
Forward
Step 6 Sussunzione
(5/6)
Una struttura del genere non è del tutto sufficiente allo scopo.
C’è il rischio che shakey abbandoni una stanza ancor prima di
averla esplorata. Infatti lo strato di competenza L3 (attraversa la
porta) sussume lo strato L1 (vaga nell’ambiente). Il problema
può essere ovviato aggiungendo un ulteriore strato di
competenza che ha lo scopo di inibire lo schema percettivo del
behavior Through_door per n minuti permettendo a shakey di
esplorare l’ambiente per almeno n minuti.
Step 6 Sussunzione
L5
(6/6)
Clock
Extract_color
(red)
L4
L3
I
Telecamera
L2
L1
Wander
I
Extract_color
(brown)
Extract_color
(blu)
s
Move_to_goal
Goal
door
Through_door
s
Go_straight
s
corridor
Avoid
Sonar
RunAway
Bumper
Collide
s
Turn
L0
Forward
Campi di potenziale
(1/13)
A differenza dell’architettura a sussunzione non c’è un behavior che
vince su tutti ma si tratta di una vera e propria fusione di più
behaviors individuali che richiedono, per la loro realizzazione, un
metodo generale di rappresentazione delle azioni prodotte.
Implementando ciascun behavior individuale come uno schema è
possibile ottenere il risultato richiesto come somma vettoriale dei
vettori attuativi che ciascun behavior produce in risposta a particolari
e ben specificati pattern percettivi. Per generare tali vettori si fa uso
della tecnica generale dei campi di potenziale.
Le architetture behavior-based che utilizzano i campi di potenziale
assumono che l'azione motoria di un behavior sia rappresentabile con
un vettore. Analogamente a quanto avviene per i vettori di forza della
meccanica, si suppone che tali vettori siano derivabile da un campo di
potenziale. Come tutti i vettori, anche nel caso della risposta di un
behavior, la rappresentazione è ottenuta assegnandone intensità e
direzione.
(2/13)
Possiamo prevedere i seguenti campi di potenziale primitivi la cui
combinazione può produrre campi di complessità arbitraria.
Campo uniforme
Campo perpendicolare
Campo attrattivo
Campo repulsivo
Si è fatta l'assunzione che l'intensità dei campi di potenziale in ogni
punto del piano sia, in generale, una funzione che dipende dalla
distanza relativa del robot dall'oggetto in questione e dal profilo
d'intensità. Si considerino, allora, i behaviors elencati nel seguito, i cui
schemi motori sono implementati con campi di potenziale
particolarmente semplici e che danno origine alla risposta del caso.
(3/13)
Move-to-goal
Si tratta di un Behavior elementare con un attrattore che definisce l'obiettivo da
raggiungere seguendo la direzione phigoal con una velocità proporzionale alla
distanza dallo stesso, che potrebbe essere pesata G in funzione del tipo di obiettivo.
Vdirection = Φgoal
Vmagnitude =
per d  D
0

d
 D  G per d  D
Noise
Questo behavior permette al robot di uscire da eventuali punti morti grazie ad una
risposta costante in intensità e ad una direzione che viene cambiata ogni p secondi
cosicchè tale consistenza determina la persistenza della direzione. Ne risulta un
behavior elementare di wandering.
Vdirection = direzione casuale cambiata
ogni p secondi
Vmagnitude = valore fissato di guadagno
(4/13)
Avoid
Permette l'allontanamento da ostacoli fissi che possono risultare pericolosi, evitando in
questo modo la collisione. Con questo behavior il robot si allontana da un ostacolo con
velocità linearmente decrescente all'aumentare della distanza da esso. Tale azione
repulsiva è percepita da un appropriato sensore di distanza (range finder) fino ad una
distanza massima D dall'ostacolo. Si noti, comunque, che D non deve necessariamente
coincidere con il raggio d'azione del sensore. Ovviamente il valore del campo dipende
dal valore corrente della distanza d dall'ostacolo.
Vdirection=180°
Vmagnitude =
per d  D
0

(D  d )
 D  G per d  D
Move-ahead
(5/13)
Si tratta di un behavior elementare che permette l'avanzamento nella direzione phibussola
indicata dalla bussola con velocità costante c.
Vdirection =
Φbussola
Vmagnitude = C
Stay-on-path
Il behavior in questione costringe il movimento del robot verso il centro di una corsia,
strada o corridoio per cui la traiettoria del robot tende a stabilizzarsi lungo il suo asse
mediano. Nel calcolo dell'intensità del campo (velocità) bisogna tener conto della
larghezza W del cammino, la distanza d dal centro, il guadagno G sul cammino
contrapposto a quello P fuori di esso.

W

Vdirection = In direzione della linea centrale.
per d  (W/2)
P
Vmagnitude  
 d
W / 2  G per d  (W / 2)
(6/13)
A questo punto vediamo come i vari behavior primitivi presentati
devono essere fusi per ottenere un behavior più astratto.
Wander
Per ottenere il behavior wander infatti si può pensare di sommare le
uscite dei seguenti tre behavior primitivi:
Wander
timer
sonar
telecamera
Noise
Avoid
Move to goal
Σ
Pseudocodice dei behavior primitivi di Wander
Noise
Vector Noise ()
{
Double G;
Double angle;
Vector V;
angle = random_percept(p); // schema percettivo
V = pfield_noise(angle,G);
// schema motorio
return V;
}
Schema motorio
Vector pfield_noise (angle,G)
{
V.magnitude = C*G;
V.direction = angle;
return V;
}
Schema percettivo
double random_percept (p)
{
for time=p downto 1 do
{ }
return random();
}
(7/13)
(8/13)
Avoid
Vector Avoid ()
{
double distanza;
double G;
Vector V;
double D;
D = sfera di influenza dell’ostacolo;
distanza = read_sonar();
V = pfield.repulsive(distanza,G,D);
return V;
}
Schema motorio
Vector pfield.repulsive (distanza,G,D)
{
Vector V;
V.magnitude=V.direction=0;
If distanza <= D
{
V.magnitude = ((D-d)*G)/D ;
V.direction = 180°; }
return V;
}
// schema percettivo
// schema motorio
(9/13)
Move to goal
Vector move to goal ()
{
centroide position;
Vector V;
double G;
type def struct {
centroide = extract_color(red);
V = pfield.actraction (centroide,G);
motorio
return Voutput;
}
// schema percettivo
// schema
double goal_angle
double goal_strength } centroide
Schema motorio
Vector pfield.actration(centroide,G)
{
V.magnitude = V.direction=0;
V.magnitude = linear_dropoff(goal_strength)*G;
V.direction = goal_angle;
}
return V;
}
Schema percettivo
centroide extract_color(goal_color)
{
if not_see(goal_color) then{
Centroide.goal_angle=0;
Centroide.goal_strength =0;
else …
}
return centroide;
}
(10/13)
Infine avremo che i precedenti tre behaviors andranno fusi mediante la
funzione di controllo del behavior astratto wander
Void Wander ()
{
vector V, V1,V2,V3;
While (robot==on)
{
V1 = noise ();
V2 = move_to_goal();
V3 = Avoid();
V= SumVectors(V1,V2,V3);
Turn (V.direction);
Forward(V.magnitude);
}
}
Follow corriddor
(11/13)
Per ottenere il behavior follow corridor si può pensare di
sommare le uscite dei seguenti cinque behavior primitivi:
Follow corridor
Lateral-sonar
Stay on path
bussola
Move ahead
sonar
telecamera
timer
Avoid
Move to goal
Noise
Σ
Throught door
(12/13)
Per ottenere il behavior Throught door si può pensare di
sommare le uscite dei seguenti due behavior primitivi:
Throught door
sonar
Avoid
Σ
telecamera
Go throught door
Wander
timer
sonar
telecamera
(13/13)
Noise
Avoid
Σ
C
Move to goal
O
O
Follow corridor
Lateral-sonar
Stay on path
bussola
Move ahead
R
D
sonar
Σ
Avoid
telecamera
timer
I
N
Move to goal
A
T
Noise
O
Throught door
sonar
R
Avoid
Σ
telecamera
Go throught door
Action
Conclusioni
Nello sviluppo di una versione di shakey reattiva, le principali
difficoltà riscontrate sono state l’individuazione dei behavior
primitivi e come coordinare gli stessi. Infatti mentre nel
paradigma gerarchico ad ogni percezione del mondo
corrispondeva una pianificazione e poi un’azione, qui più
behavior possono essere attivi contemporaneamente
e
teoricamente conflittuali. Mentre nell’architettura a sussunzione la
coordinazione è risolta con l’uso di livelli di competenza basati su
una strategia del “vincitore prende tutto”, in quella a campi di
potenziale la coordinazione è risolta per mezzo del principio di
sovrapposizione per cui l’azione emergente è meno facile da
prevedere. Ne deriva che l’unico modo per essere certi del
funzionamento è di provarlo sul campo.
Riferimenti
•Arkin R. , 1998. “Behavior-based robotics”
•Appunti del corso
Scarica

Autonomo - Sistemi per il Governo dei Robot