La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sistemi per il Governo dei robot Shakey il robot “Autonomo” Forastiere Manolo 50/007 Marrello Valentino 50/010.

Presentazioni simili


Presentazione sul tema: "Sistemi per il Governo dei robot Shakey il robot “Autonomo” Forastiere Manolo 50/007 Marrello Valentino 50/010."— Transcript della presentazione:

1 Sistemi per il Governo dei robot Shakey il robot “Autonomo” Forastiere Manolo 50/007 Marrello Valentino 50/010

2 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

3 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. Senseplanact Si passa quindi dal Senseact Al

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

5 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

6 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 m 2 ) che hanno in comune un corridoio (di 14x2 m 2 ), 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.

7 L’amipezza delle porte è maggiore dell’ampiezza di shakey.

8 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

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

10 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

11 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. Di seguito è riportata una descrizione in termini di schema theory di ciascun behavior primitivo Collide bumper Read_bumper()Stop_wheel() Always_on stop motor Schema percettivo Read_bumper() percettoBumper_status Schema motorio stop_wheel(bumper_status) Step 5 Raffinare ogni behavior(2/8)

12 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° RunAway Sonar Extract_distance() Turn() Always_on Inverti rotta Schema percettivo Extract_distance() Percetto (d,θ) Schema motorio Turn(d, θ ) Step 5 Raffinare ogni behavior(3/8)

13 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)) Wander timer Count_down() Random_walk() Always_on Direzione casuale Schema percettivo Count_down() Percetto Time_remaining Schema motorio Random_walk() Step 5 Raffinare ogni behavior(4/8)

14 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. Schema percettivo Feel_force() Percetto (d, θ) Schema motorio Avoid(d, θ) Step 5 Raffinare ogni behavior(5/8) Sonar Azioni motorie per seguire la direzione Feel_force()Avoid() Always_on Wander Avoid

15 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. Follow_corridor telecamera Extract_color()Go_straight() See_corridor 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(6/8)

16 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. Through_door telecamera Extract_color()Through_door() See_door Azioni motorie per attraversare la porta Schema percettivo Extract_color(brown) Percetto c_x Schema motorio Through_door(c_x) Step 5 Raffinare ogni behavior(7/8)

17 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. Move_to_goal telecamera Extract_color()Move_to_goal() See_goal Azioni motorie per raggiungere il goal Schema percettivo Extract_color(red) Percetto c_x Schema motorio Move_to_goal(c_x) Step 5 Raffinare ogni behavior(8/8)

18 Tabella dei behaviors ReleaserBehaviourMotor SchemePerceptsPerceptual scheme Always_onCollide()Stop_wheel(Bumper_status)Bumper_stat us Read_bumper() Always_onRunaway() Turn( d,θ ) (d,θ) Extract_Distance(sonar) Always_onAvoid() Avoid( d,θ ) (d,θ) Feel_force(wander,sonar) Not_See_Goal= Extract_color(red) Wander()Random_walk(Time_remaining)Time_remain ing Countdown() See_door= Extract_color(brown) Through doorThrough_door(c_x)c_xExtrat_color(brown) See_corridor= Extract_color(blu) Follow corridor()Go_straight(c_x)c_xExtract_color(blu) See_Goal= extrat_color(red) Move_to_goal()Move_to_goal(c_x)c_xExtract_color(red)

19 Automa a stati Finiti Start Move to goal Wander Through door Follow corridor See_goal Not_See_goal And Not_see_corridor See_goal See_corridor See_door Not_See_goal And Not_see_corridor See_door See_corridor and not _See_goal See_goal and Bumper_on stop

20 L1 L0 Bumper Sonar Forward Turn Collide RunAway Avoid Wander s 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. Step 6 Sussunzione(1/6)

21 L2 L1 L0 Bumper Sonar Forward Turn Collide RunAway Avoid Wander s Extract_color (blu ) Telecamera Go_straight s corridor 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.

22 L3 L2 L1 L0 Bumper Sonar Forward Turn Collide RunAway Avoid Wander s Extract_color (blu) Telecamera Go_straight s s Extract_color (brown) Through_door door corridor 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.

23 L4 L3 L2 L1 L0 Bumper Sonar Forward Turn Collide RunAway Avoid Wander s Extract_color (blu) Telecamera Go_straight s s Extract_color (brown) Through_door Extract_color (red) Move_to_goal s Goal door corridor 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.

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

25 L4 L3 L2 L1 L0 L5 Bumper Sonar Forward Turn Collide RunAway Avoid Wander s Extract_color (blu) Telecamera Go_straight s s Extract_color (brown) Through_door Extract_color (red) Move_to_goal s Goal door corridor Clock I Step 6 Sussunzione(6/6) I

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

27 Possiamo prevedere i seguenti campi di potenziale primitivi la cui combinazione può produrre campi di complessità arbitraria. 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. (2/13) Campo repulsivo Campo uniforme Campo perpendicolare Campo attrattivo

28 Move-to-goal Si tratta di un Behavior elementare con un attrattore che definisce l'obiettivo da raggiungere seguendo la direzione phi goal con una velocità proporzionale alla distanza dallo stesso, che potrebbe essere pesata G in funzione del tipo di obiettivo. 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. V direction = Φ goal V magnitude = V direction = direzione casuale cambiata ogni p secondi V magnitude = valore fissato di guadagno (3/13)

29 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. V direction =180° V magnitude = (4/13)

30 Move-ahead Si tratta di un behavior elementare che permette l'avanzamento nella direzione phi bussola indicata dalla bussola con velocità costante 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. V magnitude V direction = In direzione della linea centrale. V direction = Φ bussola V magnitude = C (5/13)

31 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: Noise Avoid timer sonar Wander Σ Move to goaltelecamera (6/13)

32 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; } Vector pfield_noise (angle,G) { V.magnitude = C*G; V.direction = angle; return V; } double random_percept (p) { for time=p downto 1 do { } return random(); } (7/13) Schema motorio Schema percettivo

33 Avoid Vector Avoid () { double distanza; double G; Vector V; double D; D = sfera di influenza dell’ostacolo; distanza = read_sonar(); // schema percettivo V = pfield.repulsive(distanza,G,D); // schema motorio return V; } 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; } (8/13) Schema motorio

34 Move to goal Vector move to goal () { centroide position; Vector V; double G; centroide = extract_color(red); // schema percettivo V = pfield.actraction (centroide,G); // schema motorio return Voutput; } Vector pfield.actration(centroide,G) { V.magnitude = V.direction=0; V.magnitude = linear_dropoff(goal_strength)*G; V.direction = goal_angle; } return V; } centroide extract_color(goal_color) { if not_see(goal_color) then{ Centroide.goal_angle=0; Centroide.goal_strength =0; else … } return centroide; } type def struct { double goal_angle double goal_strength } centroide (9/13) Schema motorio Schema percettivo

35 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); } Infine avremo che i precedenti tre behaviors andranno fusi mediante la funzione di controllo del behavior astratto wander (10/13)

36 Follow corriddor Per ottenere il behavior follow corridor si può pensare di sommare le uscite dei seguenti cinque behavior primitivi: Stay on path Move ahead Lateral-sonar sonar Follow corridor Σ Avoid Move to goal Noise telecamera timer bussola (11/13)

37 Throught door Per ottenere il behavior Throught door si può pensare di sommare le uscite dei seguenti due behavior primitivi: sonar Throught door Σ Avoid telecamera Go throught door (12/13)

38 Noise Avoid timer sonar Wander Σ Move to goaltelecamera Stay on path Move ahead Lateral-sonar sonar Follow corridor Σ Avoid Move to goal Noise telecamera timer bussola sonar Throught door Σ Avoid telecamera Go throught door Action COORDINATORCOORDINATOR (13/13)

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

40 Riferimenti Arkin R., 1998. “Behavior-based robotics” Appunti del corso


Scaricare ppt "Sistemi per il Governo dei robot Shakey il robot “Autonomo” Forastiere Manolo 50/007 Marrello Valentino 50/010."

Presentazioni simili


Annunci Google