Mobile Robots Running Tuple
Support
Implementazione di un semplice middleware
per la gestione della informazione di stato
globale in una colonia di robots
Coordinazione di Robots

Problema:
colonia di robots (agenti) con esigenza di mantenere una
informazione globale (o stato globale) al fine di agire
complessivamente in modo coordinato.

?
?
?
?
?
?
Analisi del problema (I)

Capacità di comunicazione:

alcuni nodi sono connessi direttamente, altri no
(es. a causa della morfologia del territorio)
...0100111...
Analisi del problema (II)

Capacità di comunicazione:

La capacità di comunicazione, intesa come
relazione sull’insieme dei robots, è perciò
rappresentabile attraverso un grafo che
connette con archi solo i nodi che possono
comunicare direttamente
R8
R1
R9
R4
R5
R2
R10
R7
R3
R6
R11
Analisi del problema (III)

Capacità di comunicazione:


a ciò va aggiunto il fatto che i robots sono mobili e
quindi la relazione di connessione diretta varia nel
tempo in modo non predicibile.
HP:

per ogni nodo esiste sempre un cammino di archi
che lo connette ad un qualunque altro.


non partizionamento nel tempo della rete per permettere
la coordinazione tramite scambio di informazioni
Per queste caratteristiche l’interconnessione
analizzata rappresenta un particolare tipo di
MANET
Comunicazione

Modalità di comunicazione:

Fornita
dalla
relazione
Necessità
di
coordinare
gli agenti


diretta: limitata ai nodi vicini, non necessita di
coordinamento
indiretta (oltre l’insieme dei nodi in connessione
diretta): necessita del coordinamento delle entità
del sistema. Necessaria per permettere ad un
robots di influenzare il comportamento della
colonia.
globale: caso limite della comunicazione indiretta.
Permette ad un robot di notificare la sua
informazione all’intera colonia.
Semplice esempio (I)

GOAL:


AGENTI del sistema:





estrazione di ferro e nichel
2 robot specializzati in estrazione di ferro
1 robot specializzato in estrazione di nichel
1 robot specializzato in riparazione, manutenzione
tutti i robot con capacità esplorative
SITUAZIONE INIZIALE:

robots collocati in un territorio vasto e non noto
Semplice esempio (II)
I robots acumulano
informazioni relative
al territorio e al loro
funzionamento
I robots decidono
quale parte della
loro informazione
sia utile condividere
con la colonia
La mappa globale
deve essere nota a
tutti e aggiornata
nel tempo
Semplice esempio (III)

Conclusioni:



Ogni robots accumula informazioni durante
l’esplorazione del territorio
Emerge la necessità di condividere parte
dell’informazione raccolta dai robots al fine di
ottenere coordinazione globale (nell’esempio
tramite la mappa globale)
Informazione globale (mappa) intesa come
informazione comune a tutti gli agenti

L’informazione una volta identificata come stato globale
deve perciò appartenere non ad un nodo specifico ma a
tutta la colonia
Stato e spazi di tuple

Uno spazio di tuple è in grado di modellare un
insieme di informazioni, strutturate secondo una
relazione nota, di diversa natura, e quindi si presta
anche per modellare l’informazione di stato dei
robots


Soluzione in accordo ad altre proposte per la modellazione
di informazioni in reti MANET
Particolarmente indicato per il disaccoppiamento indotto in
tempo e conoscenza reciproca
S
1
1
3
8
8
9
8
5
8
3
7
5
7
7
7
1
1
2
7
7
Stato e spazi di tuple


Modello di riferimento: LINDA
Altri modelli adottati in ambito MANET:

GVDS-based systems



GVDS intesa come struttura dati condivisa fra i nodi,
visione globale della informazione (tuple space)
presente sulle singole entità
LIME core idea: Transparent Context Maintainace

spazio di tuple globale come partizionato sui nodi e transient
sharing come meccanismo per ottenere visione globale


LIME, XMiddle, etc.
ottimo funzionamento per i nodi vicini, mancanza di pattern per
la diffusione globale di informazione
TOTA?
TOTA: tuple on the air

La tupla è definita come una coppia:

T=(P,C)



P: regole di propagazione
C: contenuto
Attraverso una copia del middleware presente
su ogni nodo (interfaccia standard) la tupla
può:

Utilizzo API del
nodo




decidere se entrare nel nodo
modificare il proprio contenuto C
modificare le regole di propagazione P
modificare l’ambiente locale del nodo
propagarsi verso i vicini
Side effects
sulla tupla
Side effects sul
nodo
TOTA: tuple on the air



In TOTA la tupla è responsabile della propria
propagazione e degli effetti che genera nei nodi
visitati
Concettualmente quindi essa viene iniettata
attraverso alla rete non appartenendo quindi ad un
nodo specifico
Questo modello è concettualmente in accordo
all’idea di stato globalmente condiviso che si vuole
realizzare per il coordinamento dei robots
P RULES
1
1
3
1
Realizzazione di un semplice
Middleware basato su TOTA

Il middleware è composto in tre parti distinte:

ENGINE o Tuple Support: presente sul nodo e accessibile alle
tuple

Componente standard, si deve occupare di:




Tuple base da cui ereditare:

Tupla come cuore del middleware, depositaria delle funzionalità
(meccanismi e politiche)



Esecuzione della tupla
Supporto per le modifiche sul nodo
Supporto alla propagazione
Ereditarietà come strumento per definire nuovi meccanismi e
politiche
Forte incapsulamento e quindi flessibilità nell’aggiunta di nuove
caratteristiche
API vere e proprie che presuppongono l’esistenza di tuple ad
hoc per la loro realizzazione
Realizzazione di un semplice
Middleware basato su TOTA

Definizione della classe base per la
propagazione di informazioni:
Riferimento all’ENGINE
locale del nodo che
fornisce le API di
supporto alla tupla
RunningTuple
tupleSupport: tupleSupport
void init(TupleSupport t)
Regole di propagazione P
sotto forma di codice
eseguito sul nodo
void propagate()
Legame
tra la
tupla e il
supporto
Realizzazione di un semplice
Middleware basato su TOTA

Contenuto
informativo
C
Definizione delle classi depositarie della
gestione del contenuto informativo:
Tuple
QueryTuple
attributes: attributesType
void accept(QueryTuple q)
Meccanismo del double
dispatch per l’accesso
ad una istanza di tupla da
parte di una QueryTuple
attributes: attributesType
void visit(Tuple t)
Contiene le regole
di match M
Oggetto depositario
della interrogazione
dello spazio di tuple.
Realizzazione di un semplice
Middleware basato su TOTA

Realizzazione delle API di alto livello




out: operazione di inserimento di una tupla di
stato nello spazio
inRead: lettura della tupla dallo spazio globale
in: prelievo della tupla dallo spazio globale
in e out simili alle primitive di Linda:

out: incapsulata in una RunningTuple


T=(C,P) {content; propagation rules}
in: incapsulata in una QueryTuple

T=(C,M) {content; matching rules}
Realizzazione di un semplice
Middleware basato su TOTA

out()

Necessita della coordinazione fra i nodi per la diffusione
globale della informazione:


inRead()

Azione locale sul repository delle tuple che rappresenta lo
spazio comune a tutti gli agenti


floading e stato sul nodo
in()

pattern visitor e iterazione sugli oggetti Tuple utilizzando le
regole M della tupla di in()
Rispetto alla inRead necessita di coordinazione per
aggiornamento dello spazio di tuple di tutte le entità


protocollo ad hoc basato su gestore di tupla e notifica globale
del consenso al prelievo da parte di un nodo specifico
induce un forte coordinamento nel gruppo dei robots
(sincronizzazione per accesso in mutua esclusione)
API(I): out()

Diffusione di una tupla tramite il meccanismo
implementato per la primitiva out()
sender
connection
accepted
not accepted
API(II): in()

Diffusione della richiesta e del consenso alla
operazione di in()
in()
gestore tupla
connection
query
consensus
not accepted
Realizzazione di un semplice
Middleware basato su TOTA

Si è ottenuto:


ad alto livello una interfaccia di tipo Linda
il compito di realizzare le specifiche richieste dalla
primitiva è affidato alle tuple dalla quale sono
state generate:



diffusione delle informazioni da parte delle tuple di out
ricerca del corrispondente attraverso un pattern interno
specificato da parte delle tuple di in
Il middleware garantisce in modo trasparente
che lo stato globale sia replicato su ogni
nodo, realizzando la struttura informativa
richiesta
Possibili estensioni del modello

Il modello Linda può essere ancora meglio
mappato nelle tuple del Middleware al fine di
renderlo ancora più flessibile:

LindaTuple:

T=(C,P,M,O)





C: content
P: propagation rules (sia per le in che per le out)
M: matching rules
O: output rules
Flessibilità, context-awarness, adattatività
TOTA come modello di
mobilità (I)



In definitiva cosa distingue il modello TOTA rispetto ad altri
modelli? Qual è la differenza rispetto ad un sistema MA?
Mobile Agent: insieme di codice, dati e stato di esecuzione in
grado di decidere autonomamente di migrare da un nodo ad
un altro con possibilità di riprendere la esecuzione da dove era
terminata (strong-weak mobility)
In TOTA l’elemento base è la TUPLA, essa trasporta:

C
dati



riferimento ad un automatismo (automa) comune a tutti i nodi
che opera in funzione dello stato interno della tupla stessa e dello
stato presente sul nodo

P
generici (es: attributi in accordo ad una relazione)
stato della tupla modificato durante la propagazione, dipendente
dalle precedenti propagazioni della stessa
nuovo _ stato _ nodo  FAUTOMA ( stato _ tupla, stato _ nodo)
nuovo _ stato _ tupla  F ' AUTOMA ( stato _ tupla, stato _ nodo)
side _ effect _ sul _ nodo  F '' AUTOMA ( stato _ tupla, stato _ nodo, dati)
propagazio ne  F ''' AUTOMA ( stato _ tupla, stato _ nodo, dati)
TOTA come modello di
mobilità (II)

Alla creazione della tupla avviene un legame tra la
informazione contenuta nella stessa e l’automa
depositario della propagazione



implementazione di una classe specifica che si appoggia ad
un automa specifico (contenuto nel codice della classe
stessa)
ereditarietà da altre ‘classi automa’ predefinite con
meccanismi e politiche base
La tupla contiene solo lo stato del proprio automa,
modificato durante il trasferimento sul nodo. Il codice
è presente su ogni nodo, essendo le classi note a
tutti gli agenti

T=(C,P) -> T=(C,S0,*A)


basso overhead nella diffusione della tupla!
paradigma ad oggetti per ottenere buona flessibilità
nell’aggiunta di altri meccanismi
Sviluppi futuri

Estensione del middleware:



Supporto del modello di tupla generale
(LindaTuple)


nuove API (join,etc.)
nuovi meccanismi (maggiori garanzie, etc.)
Ridefinizione delle classi base
Verifica dei modelli di stato implementabili,
anche in riferimento alla nozione di tempo fin
qui trascurata (estensione real-time?)
Scarica

presentazione