• Non ci sono risultati.

Sistemi per il Governo dei Robot

N/A
N/A
Protected

Academic year: 2021

Condividi "Sistemi per il Governo dei Robot"

Copied!
44
0
0

Testo completo

(1)

Sistemi per il Governo dei Robot

Silvia Rossi - Lezione 18

(2)

PROGETTAZIONE DI UN SISTEMA REATTIVO

(3)

Una delle prime applicazioni alla quale molti robotici guardarono consisteva nel raccogliere e depositare in un secchio una lattina di una qualche bevanda.

Questo problema implica che il robot vada alla ricerca di una lattina, si muova verso la lattina, quando l’ha

trovata la raccolga, cerchi il bidone della spazzatura, si muova verso il bidone, lasci cadere la lattina.

E’ controintuitivo pensare che questi behaviors siano concorrenti o fusi.

(C'è certamente la possibilità di concorrenza, per

esempio quando evita gli ostacoli mentre si muove

(4)

Le tecniche introdotte per controllare sequenze di behavior sono per la maggior parte

concettualmente equivalenti alla costruzione di macro-behavior, dove la struttura dello schema è usata ricorsivamente per semplificare la

programmazione del programma di controllo.

Primo, è presentato un approccio diretto alla programmazione a oggetti per i behavior.

Il caso di studio enfatizza l'importanza di stabilire

una nicchia ecologica per un robot reattivo.

(5)

Secondo, sono presentate due tecniche per

maneggiare sequenze di behavior: automi a stati finiti e script.

Tecniche sembreranno molto simili all’IRM di

Tinbergen e Lorenz.

(6)

Assemblaggio di behaviors

Il caso di studio precedente ha illustrato i principi di base del progetto di behavior reattivi. In esso, ci sono un numero banale di behavior. Cosa accade quando ci sono molti behavior, alcuni dei quali devono funzionare concomitantemente ed altri in

sequenza?

Ci sono, da qualche parte nel sistema, dei releaser che

determinano la sequenza. Il problema è come rappresentare

formalmente i releaser e le loro interazioni in una qualche forma di sequenza logica.

Se un set di behavior forma un pattern prototipico di azione, essi possono essere considerati “meta" o "macro" behavior, dove un behavior è compattato, a partire da altri behavior

primitivi, in un behavior astratto.

Di qui il problema di come incapsulare il set di behavior e la

loro sequenza logica in un modulo separato.

(7)

La stessa struttura a schema dell’OOP, usata per

rappresentare uno Schema Percettivo ed uno schema motore in un behavior, può essere usata per

rappresentare più behavior in un behavior astratto, come mostrato in Fig dal behavior composto di behavior.

Il programma di controllo coordinato, membro del

behavior astratto, fornisce i releaser per i behavior

componenti.

(8)

Resta il problema di come rappresentare formalmente i releaser in

maniera che il robot li possa eseguire ed il progettista umano li possa visualizzare e diagnosticare.

Ci sono tre maniere per rappresentare una sequenza di behavior:

automi a stati finiti, scripts e skills.

Gli automi a stati finiti (FSA) e gli scripts sono logicamente equivalenti, ma danno luogo a modi lievemente diversi di implementazione.

Gli skills raccolgono i tipo-behavior primitivi, chiamati Reazione-

Azione Packages (RAPs), in un "piano abbozzato" che può essere poi riempito man mano che il robot li esegue.

Coordinazione e controllo con behavior tipo FSA furono usati con successo dal team della Georgia che vinse nel 1994 la gara di

raccolta della spazzatura dell’AAAI, e dal team LOLA vincente nella

stessa competizione dell’JCAI nel 1995.

(9)

Gli Scripts furono usati dalla squadra della CSM nella competizione del 1995; essi dal punto di vista comportamentale funzionarono

come per le squadre vincenti ma la squadra non entrò in classifica a causa di una penale dovuta alla mancanza di un manipolatore.

Queste squadre usarono al massimo otto behavior, anche se LOLA aveva un gripper più sofisticato della squadra del Georgia Tech. Al contrario, CHIP la squadra che vinse il secondo posto nella

competizione dell’IJCAI, aveva 34 skill e 80 RAP per fare lo stesso task.

Poiché in generale gli skills portano ad una implementazione più complessa degli FSA e degli scripts, non li tratteremo.

Il punto più importante da ricordare nell'assemblaggio dei behavior

è di tentare di avere un sistema di trigger, o releaser, per decidere il

prossimo passo nella sequenza, piuttosto che contare su un

(10)

Georgia T.

LOLA

(11)

Automi a Stati Finiti (FSA)

Gli Automi a Stati Finiti (FSA) sono un meccanismo utile per specificare quello che un programma

dovrebbe fare ad un certo tempo o circostanza.

Il FSA può essere scritto come una tavola o

progettato come un diagramma di stato, dando

così al progettista una rappresentazione visiva. La maggior parte dei progettisti fanno entrambe le

cose.

Ci sono molte varianti di FSA, ma lavorano tutte

pressappoco allo stesso modo.

(12)

Per cominciare, il progettista deve essere capace di specificare un numero limitato di stati distinti nei quali il robot potrebbe trovarsi.

Il set di stati è rappresentato da K, e ogni stato q ∈ K è una lista dei behavior che dovrebbero/

potrebbero essere attivi contemporaneamente.

Nel caso della competizione precedente, c’erano solamente due stati: seguire la linea e muoversi in avanti. Gli stati sono rappresentati in una tavola

sotto l'intestazione q, e da cerchi in un grafico.

(13)
(14)

Per convenzione, vi è sempre un stato di Start, ed il robot dovrebbe partire sempre di là. Lo stato di

Start è spesso scritto come s o q0 e disegnato con un doppio cerchio.

Nel caso dell'UGR, (Unmanned Ground Vehicle) lo stato di following-line era sempre lo stato di inizio poichè il robot cominciava col behavior di follow- line attivo.

La successiva parte del FSA è l’input (anche detto

alfabeto). Gli input sono i releaser comportamentali,

ed appaiono sotto la colonna dove campeggia σ. La

tavola del FSA considera quello che accade ad ogni

stato q per tutti i possibili input.

(15)
(16)

La terza parte del FSM è la funzione di transizione, detta δ che specifica in che stato va il robot dato uno stimolo in input.

Il set di stimoli o affordances che può essere riconosciuto dal robot è rappresentato da Σ.

Questi stimoli sono rappresentati da frecce. Ogni freccia rappresenta il releaser per un behavior. Il nuovo behavior triggerato dal releaser dipende dallo stato nel quale il robot si trova. Questo è lo stesso dell’IRM, dove letteralmente vengono

ignorati i releaser che non sono rilevanti per lo

stato corrente.

(17)
(18)

Si ricordi anche che in un esempio precedente nella implementazione del programma seriale dell’IRMs l'agente "osservava“ i releaser ogni secondo.

Ad ogni iterazione, l’agente avrebbe potuto avere fame e “sarebbe entrato" nello stato di alimentarsi.

Nella successiva iterazione, ancora avrebbe potuto avere fame e sarebbe rientrato nello stato di

alimentarsi.

Questo può essere rappresentato avendo frecce

che partono dallo stato di alimentarsi e puntano di

nuovo allo stesso stato.

(19)

enum Releaser={PRESENT, NOT_PRESENT};

Releaser food, hungry, nursed, predator;

while (TRUE)

{ predator = sensePredator() ; if (predator==PRESENT) flee() ; food = senseFood();

hungry = checkStateHunger() ; parent = checkStateParent() ; if (hungry==PRESENT)

searchForFood() ;

if (hungry==PRESENT && food==PRESENT) feed() ;

if(hungry== NOT_PRESENT && parent==PRESENT)

nurse() ;

(20)

UGV competition

Il robot comincia nello stato di seguire una linea.

Questo vuole dire che il robot non è preparato a gestire una distrazione visuale (range near) finché non ha cominciato a seguire una linea.

Se lo fa, il programma può fallire perché il FSA chiaramente mostra che non risponderà alla

distrazione per almeno un ciclo di aggiornamento.

In questo periodo, il robot può dirigersi in direzioni

sbagliate. Cominciare nello stato di following-line

andava bene per la competizione di UGR, dove si

sapeva in anticipo che non c'erano balle di fieno

vicino alla linea iniziale.

(21)

Caso più generale

(22)

Il quarto pezzo di informazione che un progettista ha bisogno di sapere è quando il robot ha completato il task.

Ogni stato che il robot può raggiungere e che termina il task è un membro del set di stati finali, F.

Nell'esempio di UGV il robot non si ferma mai e non c’è uno stato finale - il robot funziona finché non è

spento a mano o si scarica la batteria. Così, entrambi gli stati (Follow_line e Move_ahead) sono stati finali.

Se il robot potesse riconoscere la linea di arrivo, allora

potrebbe aversi un stato finale.

(23)

La notazione M = {K, Σ, δ, s, F}

è usata per ricordare che per usare un FSA il progettista

deve sapere tutti i q stati (K), gli input σ le transizioni tra gli stati δ, lo stato iniziale speciale s=q0 e lo stato/i finale (F).

Ci deve essere una freccia nel diagramma di stato per ogni riga nella tabella .

FSA Behavior

K Tutti i behaviors per un task

Σ I releaser per ciascun behavior in K

δ La funzione che calcola il nuovo stato

s Behavior di start per il robot

(24)

FSA Summary

• “State” doesn’t mean “state of world” (bad); it means more “where the innate releasing

mechanism is currently at” (good)

• Advantages

– Formal mechanism

– Have to fill in the table, so a way of spotting unforseen effects

• Disadvantages

– Hard to keep up with implicit behaviors

• Ex. Avoid obstacle is often running throughout ALL states, gets tedious to express it formally

– Tend to add explicit variable for transitions, rather than rely on emergent

behavior from environment

(25)

Coca-cola and trash

(26)

Behavior Table

(27)

FSA

(28)
(29)

L’FSA permette di esprimere la sequenza dei

behavior. Questo avviene al prezzo di non poter mostrare con precisione come la sequenza vada implementata, incoraggiando così il progettista a creare stati interni.

Nel caso in esame il programmatore dovrebbe

implementare due behavior di wander, ciascuno

istanziato da releaser differenti, e due move-to-

goal.

(30)

Molti progettisti progettano e interpretano gli FSA come estrattori di releaser.

Per esempio la transizione corretta da GRAB TRASH a

WANDER FOR TRASH CAN (cerca il bidone per le lattine) è FULL AND NO_BLUE, ma un progettista potrebbe essere tentato di etichettare le frecce solo come NO_BLUE perchè per raggiungere quello stato il gripper deve essere FULL.

Questo è un errore molto pericoloso poichè presume che l’implementazione terrà conto in quale stato interno sia il

robot (inizializzando una variabile), invece di permettere che attributi direttamente percepibili dal mondo informino il

robot in quale stato egli si trovi.

Il concetto di stato interno è incompatibile con la reattività.

(31)

In una implementazione in termini di schema-theory, la logica degli FSA può vedersi da due punti di vista.

Se l’unico compito del robot è riciclare scatole di coca cola, la logica di controllo potrebbe essere messa nel programma principale.

Se il robot avesse molti compiti da fare, la capacità di riciclare immondizia sarebbe un behavior astratto, chiamato dal programma principale ogni qualvolta il robot ha bisogno di riciclare immondizia.

In questo caso, la logica del FSA sarebbe messa

nello slot del programma di controllo coordinato

(32)

Mentre i behavior di wander-to-goal e di move_to_goal possono essere implementati facilmente con una

metodologia a campi potenziale, drop-trash non lo può.

Drop-trash in realtà non è un behavior di navigazione.

Esso è però riconducibile ad un behavior rappresentato in termini di schema theory:

ha ovviamente uno schema motore (apri il gripper, gira le ruote),

ha uno schema Percettivo (leggi gli encoders del

gripper, e delle ruote), ha un programma di controllo coordinato (apri THEN gira),

ha un releaser (il bidone delle lattine).

(33)

Behavior Astratti

Gli automi a stati finiti sono uno strumento utile per scrivere un programma di controllo coordinato di un behavior astratto e

quindi diventano un buon strumento di programmazione per i behavior astratti stessi.

In primo luogo in molti casi, l'assemblaggio di behavior

rappresenta una sequenza prototipica di eventi che dovrebbero essere adattati facilmente a situazioni diverse, in pratica, un

template o behavior astratto.

Nel caso della gara Raccogli l’Immondizia, riciclare le lattine di Coca Cola era solo una parte del compito; si supponeva che i robot trovassero anche tazze bianche e le depositassero in

bidoni di immondizia gialli.

I behavior rappresentati dal FSA possono allora essere raccolti

(34)

In secondo luogo, i templates hanno bisogno di gestire condizioni di inizializzazione diverse.

L’inizializzazione non è un grande problema per Pic-up-the- trash, ma lo può essere per le altre applicazioni.

Per esempio, il behavior emergente del robot descritto

precedentemente per la competizione di Unmanned Ground

Vehicle potrebbe essere descritto come un behavior astratto di

"follow-path".

Si ricordi che il programma del robot presumeva che esso partisse con la telecamera rivolta verso la linea bianca.

Per gestire una più ampia gamma di condizioni iniziali sarebbe necessario un general purpose behavior di follow-path

riutilizzabile come, ad esempio, partire di fronte ad una balla di

fieno o non essere perfettamente allineato alla linea bianca.

(35)

Un altro behavior comune usato per l’inizializzazione è

l’imprinting, dove al robot è presentato un oggetto e esso si ricorda il colore percepito (o qualche altro attributo

dell'oggetto) per usarlo con un behavior nominale (in realtà si fa una calibrazione del sensore).

Nella competizione del Pick up the Trash, molte squadre

letteralmente mostravano al robot la lattina di Coca Cola per consentirgli di determinare i migliori valori di "rosso" nelle

condizioni di illuminazione correnti.

Analogamente, alcuni behavior astratti avrebbero bisogno di speciali behavior di terminazione.

Nel caso della gare del UGR, i behavior di terminazione

erano NULL, ma sarebbero potuti essere la danza della

(36)

In terzo luogo, delle volte i robot falliscono nel loro compito; questi eventi spesso sono chiamati

eccezioni.

Una eccezione potrebbe essere quando il robot non raccoglie la lattina di coca cola entro 10

minuti. Allora può intervenire un altro behavior (fai una scansione raster piuttosto che un wander

casuale) o usa un set alternativo di parametri (l'uso

di valori diversi per il rosso).

(37)

Gli Scripts

I Behavior astratti spesso usano script o una struttura analoga

chiamata skills, per creare template (o modelli) di assemblaggi di behavior generici.

Gli script offrono un modo diverso di generare la logica per un assemblaggio di behavior.

Essi incoraggiano il progettista a pensare al robot e al suo compito letteralmente in termini di una sceneggiatura.

Gli script sono stati usati originariamente nella elaborazione del

linguaggio naturale (NLP) per aiutare il pubblico (un computer) a capire gli attori (persone che parlano col computer o scrivono sommari di

quello che fanno).

Nel caso dei robot, gli script possono essere usati più letteralmente, in

quanto gli attori sono robot che leggono lo script. Lo script lascia più

spazio all’improvvisazione.

(38)

La sequenza principale di eventi è chiamata una catena causale. La catena causale è critica, perché incarna il

programma logico di controllo coordinato così come avviene in un FSA.

Può essere implementato nello stesso modo. In NLP, gli script permettono al computer di tenere conto di una

conversazione che può essere abbreviata.

(39)

Scripts

• UGV competition really didn’t have a sequence of behaviors, just toggling back and forth

• USAR victim detection has more of a typical

sequence or order of behaviors (like digger wasps mating)

Imagine trying to do an FSA for the USAR task

• Scripts are equivalent to FSA but may be more

natural or readable for sequences

(40)

Scripts

Script Behavior Analog Examples

Goal Task Find victims in rubble

Places

Environment, applicability or

“taskability” for new tasks

Collapsed buildings

Actors Behaviors explore(), dance(), avoid(), crawl, move2void, move2victim

Props, cues Percepts Voids: Dark, concave

Victims: heat, motion, color Causal

Chain Sequence of behavior Explore, dance, move2void, crawl, move2victim, dropRadio Subscripts Exception handling If lose communications, return

home

(41)

Per esempio, si consideri un computer che tenta di leggere e tradurre un libro dove i protagonisti principali si sono fermati in un ristorante.

I buoni scrittori spesso eliminano tutti i dettagli di un evento per

concentrarsi su quelli significativi. Questa informazione mancante, ma implicita, è facile da estrarre per il lettore.

Supponiamo che il libro cominci con "John ordinò un’aragosta." Questo è un indizio che serve per identificare l'evento corrente o rilevante dello

script (mangiare al ristorante), ignorando gli eventi passati (John è arrivato al ristorante, John ha chiesto un menu, ecc.).

Gli script concentrano inoltre l'attenzione del sistema sul prossimo evento più probabile (cerca una frase che indica che John ha fatto una

ordinazione), così il computer può instanziare la funzione che cerca questo evento.

Se la prossima frase è "Armand servì l'aragosta e versò di nuovo il vino

bianco", il computer può inferire che Armand è il cameriere e che John

(42)

Nel programmare un robot, le persone spesso

preferiscono abbreviare le parti delle routine di controllo e si concentrano sulla rappresentazione e il debug della sequenza di eventi più importanti.

Gli automi a stati finiti costringono il progettista a

considerare ed enumerare ogni possibile transizione, mentre gli script semplificano la specifica.

I concetti di indexing e focalizzazione dell’attenzione sono estremamente preziosi per coordinare i behavior nei robot in una maniera efficiente ed intuitiva.

Le realizzazioni effettive richiedono processi asincroni, ma l’implementazione di questi processi è oltre lo

scopo di questo corso.

(43)

Scripts Summary

• Advantages

– A more storyboard like way of thinking about the behaviors – If-then, switch style of programming like FSA

– Since a Script is “in” a behavior, other behaviors such as avoid can be running concurrently without having to appear “in” the script

– Exception handling is a big plus in Real Life

• Disadvantages

– Can be a bit of overkill for simple sequences, especially with C++

(44)

Summary

• Design of reactive systems is identical to design of object- oriented software systems

– Highly modular, can test behaviors independentl

• Follows the basic steps in the Waterfall Lifecycle

– Describe task, robot, environment, how robot should act, refine behaviors, test independently, test together.

– Except lots more iteration, making it more like Spiral

Behavior tables can help keep track of what’s a behavior and its releasers and percepts

• Sequences of behaviors, rather than combinations, can be controlled by a separate routine or by adding a routine to the coordinated control program in the behavioral schema

FSA and Scripts are two main methods

Riferimenti

Documenti correlati

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

If left-sensor is just right (0.33) and forward sensor is too far (0.33 for the ex.) then drive straight.. If left-sensor is too far (0.00) and forward sensor is too (0.00) far

Lo schema percettivo doveva usare la linea bianca per calcolare la differenza fra dove era il centroide della linea bianca e dove il robot avrebbe dovuto essere, mentre gli

• Define each of the following terms in one or two sentences: proprioception, exteroception, exproprioception,proximity sensor, logical sensor, false positive, false negative,

La rappresentazione del mondo viene modificata ogni volta che il robot percepisce l’ambiente e il piano delle azioni viene stabilito sulla base di tale rappresentazione..

una conoscenza a priori del mondo quando è disponibile e stabile può essere usata per configurare o riconfigurare i behavior efficientemente modelli del mondo acquisiti

• P,S-A, deliberation uses global world models, reactive uses behavior-specific or

– Coverage (ex. Spread out to cover as much as possible) – Convergence (ex. Robots meet from different start positions) – Movement-to (ex. Doesn’t require agents to know about