• 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!
55
0
0

Testo completo

(1)

Sistemi per il Governo dei Robot

Silvia Rossi - Lezione 13

(2)

Esempio

E’ utile considerare come RUNAWAY per evitare ostacoli è implementato comunemente su veri robot.

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.

(3)

Esempio

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.

(4)

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);

(5)

Box Canyon

(6)

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 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!

(7)

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.

(8)

La funzione RUNAWAY esibisce una coesione funzionale, dove la funzione fa una sola cosa e bene ed ogni asserzione nella

funzione ha direttamente qualche cosa a che fare con lo scopo della funzione.

La coesione funzionale è desiderabile, perché questo vuole dire che è improbabile che la funzione presenti side effects nel programma principale o che sia dipendente da un'altra funzione.

L'organizzazione complessiva mostra l’accoppiamento dei dati, dove ogni chiamata di funzione prende un semplice argomento.

L’accoppiamento dei dati è buono, perché ciò vuole dire che

tutte le funzioni sono indipendenti; per esempio, il programma

può essere cambiato facilmente per tener conto di più sensori.

(9)

L'alternativa alla instanziazione multipla è fare in maniera che lo schema percettivo di RUNAWAY processi tutte le 8 letture di

distanza.

Un approccio è quello di sommare internamente tutti gli 8

vettori. (Si può facilmente vedere che il vettore risultante è lo stesso).

Questo non è elegante dal punto di vista dell’ingegneria del

software perché il codice ora è specifico del robot (si dice che la funzione ha una coesione procedurale), e può essere usato solamente con un robot che ha otto sensori di distanza in

quelle ubicazioni.

Un altro approccio che produce un behaviour emergente

diverso è quello che prevede che lo schema percettivo ritorni la direzione e la distanza delle sole letture di distanza più grandi.

Questo rende il behaviour più selettivo.

(10)

Campi di Potenziale e Sussunzione

Come possiamo formare un behaviour emergente più complicato dei semplici behaviour?

Alla stessa maniera dei campi di potenziale più complicati che sono costruiti da campi primitivi:

combinando instanziazioni multiple di behaviour primitivi.

Questo può essere visto rivisitando il behaviour di

esempio che descriveva l'architettura di sussunzione.

Nel caso del Livello 0 nella sussunzione, se non ci sono ostacoli all'interno del raggio d’azione, il robot non sente la forza repulsiva ed è immobile. Se un ostacolo entra

all'interno del raggio d’azione ed è rivelato da più di un sonar, ognuna delle letture sonar crea un vettore,

puntando il robot nella direzione opposta.

(11)

Nell'esempio della sussunzione, si può immaginare, che questi vettori vengano sommati nel modulo

RUNAWAY come mostrato.

In un sistema a campi di

potenziale, ciascuna lettura sonar rilascia un’istanza del behaviour RUNAWAYpf.

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.

(12)

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à);

}

(13)

Il modulo COLLIDE nella sussunzione non coincide con un behaviour nella metodologia a campi di potenziale.

Si ricordi che lo scopo di COLLIDE è fermare il robot se tocca un ostacolo; e questo accade se il behaviour RUNAWAY fallisce.

Questa descrizione va bene per la definizione di behaviour, cioè: ha un input sensorio (distanza dall’ostacolo = 0) ed un pattern riconoscibile dell'attività motoria (si ferma).

Ma non produce un campo di potenziale, a meno che un campo uniforme di vettori di ampiezza 0 non sia considerato lecito.

Se fosse trattato come un behaviour, il vettore a cui esso contribuisce sarebbe sommato con gli altri vettori prodotti dagli altri behaviour. Ma un vettore di ampiezza 0 è la funzione identità per la somma dei vettori, così un vettore COLLISION non avrebbe alcun impatto.

Invece le collisioni sono spesso trattate come situazioni di "panico",

provocando una risposta di emergenza fuori della struttura del campo

di potenziale.

(14)

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.

(15)

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.

(16)

Le differenze principali in questo esempio sono che i campi di

potenziale esplicitamente incapsulano percezione e azione in behaviour primitivi, e non devono sussumere nessun behaviour più basso. Come con la sussunzione, il robot diventa più “intelligente” quando il

behaviour WANDERpf viene aggiunto al behaviour RUNAWAYpf.

Ora vediamo, per il Livello 2, come sarebbe implementato follow- corridor in un sistema a campo di potenziale.

In questo caso si vede bene la differenza concettuale tra i due approcci.

Il robot avrebbe due behaviour concorrenti: RUNAWAYpf e follow- corridor. RUNAWAYpf rimarrebbe lo stesso di prima, ma WANDER potrebbe essere scartato.

In termini di campi di potenziale, il task di seguire un corridoio richiede

due behaviour simili, mentre il task di vagare richiede due behaviour

diversi.

(17)

Follow-corridor

(18)

Il behaviour follow-corridor è interessante, perché richiede un campo di potenziale più complesso.

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.

(19)

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.

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ì

PS:

Find-wall

MS: Perp.

MS: Uniform S

Sonars

orientation

(20)

Representation of a wall?

It’s not really reasoning that it’s a wall, rather it is reacting to the stimulus which happens to be

smoothed (common in neighboring neurons)

(21)
(22)

1 pfield per behavior

(23)

Follow-corridor e Avoid

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?

(24)

Design Trade Spaces

Is it really a discrete behavior or an emergent behavior?

Is there something different (such as perception) for having following versus just two instances of avoid obstacle for really long duration?

What is the modularity and reusability?

Can you “find” and debug the intended behavior?

Does it degrade gracefully?

(25)

Follow-corridor e Avoid

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.

(26)

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.

(27)

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.

(28)

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

(29)

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.

(30)
(31)

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.

(32)

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.

(33)

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.

(34)

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.

(35)
(36)

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.

(37)

Class Discussion:

When Does a Field End?

• Imagine the case of a “SodaPup” robot (MIT)

– task: find and pick up a Coca-Cola can

– environment: red cans are only red object in world

– behavior: ??

(38)

Vantaggi e svantaggi

L’architettura a campo di potenziale ha molti vantaggi.

Il campo di potenziale è una rappresentazione continua che è facile visualizzare su una grande regione dello spazio. Di

conseguenza, è più facile per il progettista visualizzare il behaviour complessivo del robot.

È anche facile combinare campi, e, linguaggi come C++, forniscono strumenti per la creazione di biblioteche

comportamentali.

I campi di potenziale possono essere parametrizzati: il loro range di influenza può essere limitato e una funzione continua può

esprimere il cambio in ampiezza rispetto alla distanza (lineare, esponenziale, ecc.).

Inoltre un campo bi-dimensionale di solito può essere esteso ad

un campo tri-dimensionale, e così behaviours sviluppati per 2D

(39)

Pfields Summary

• Reactive Paradigm: SA, sensing is local

Solves the Open World problem by emulating biology

Eliminates the frame problem by not using any global or persistent representation – Perception is direct, ego-centric, and distributed

Two architectural styles are: subsumption and pfields

• Behaviors in pfield methodologies are a tight coupling of sensing to acting;

modules are mapped to schemas conceptually

• Potential fields and subsumption are logically equivalent but different implementations

• Pfield problems include

– local minima (ways around this) – jerky motion

– bit of an art

(40)

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;

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.

(41)

Un'altra soluzione è quella dei template di navigazione (Navigation Templates), come quelle implementate da Mark Slack per JPL (Jet Propulsion Lab – California Inst.of Tech.).

La motivazione è che il problema dei minimi locali spesso sorge a causa di interazioni fra il behaviour di campo repulsivo di AVOID e gli altri behaviour, come quello del campo attrattivo di muovere- verso-una-meta.

Il problema dei minimi scomparirebbe se il campo di potenziale

AVOID fosse in qualche modo più intelligente. In NaTs, il behaviour AVOID riceve come input il vettore somma degli altri behaviour.

Questo vettore rappresenta la direzione verso cui il robot andrebbe se non ci fossero ostacoli vicino. Per gli scopi di questo corso,

questo sarà chiamato vettore strategico.

Se il robot ha un vettore strategico, quel vettore dice che se c’è un

ostacolo esso deve essere superato sulla destra o sulla sinistra.

(42)

Se il robot sta attraversando un ponte, 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.

(43)

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.

(44)

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.

(45)

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

(46)

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.

La percezione di solito è gestita da percezioni

dirette o affordances.

(47)

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.

(48)

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.

(49)

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.

(50)

ARCHITETTURE REATTIVE

(51)
(52)
(53)
(54)

ARCHIETTURE REATTIVE

(55)

Other Compatitive Methods

Voting

Each behavior gets a vote for an outcome

Variants: Multiple votes == gain

Winner takes all

Riferimenti

Documenti correlati

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

Nelle architetture di controllo reattive l’esecuzione di un compito è suddivisa tra moduli ognuno dei quali ha assegnata una specifica competenza e attua un determinato

 Forward planning simply searches the space of world states from the initial to the goal state... Need for an

network (HTN) planning, uses abstract operators to incrementally decompose a planning problem from a high-level goal statement to a primitive plan network. Primitive

La dipendenza da un global world model, e cioè del frame problem, fa sì che queste architetture non sono molto generali ma risentono delle applicazioni per le quali