Introduzione
5
La “collaborazione” è un aspetto cruciale di questo modo di procedere e diviene
possibile mediante l’impiego di un ambiente virtuale che costituisce il “luogo” in cui i
diversi utenti geograficamente dispersi, ma collegati da una rete di comunicazione, si
trovano a cooperare [21][27].
Se questi utenti sono applicazioni che modellano il comportamento di macchine
reali (tipicamente, ma non necessariamente, robot) si può simulare il risultato della loro
interazione per riprodurlo eventualmente nella realtà [33].
2.1 Stato dell’arte
L’argomento della presente trattazione appartiene ad un campo di studio
piuttosto recente, in quanto lo sviluppo delle reti di comunicazione ha subito una fase
esplosiva solo negli ultimi anni. Le applicazioni esistenti sono, in maggioranza,
sperimentali e non sfruttano appieno tutte le potenzialità che la tecnologia mette a
disposizione: restano numerose aree ancora da investigare. Perfino la terminologia non è
ancora molto precisa sebbene esistano già tentativi di razionalizzare l’esistente,
classificandolo [18].
La materia in questione rientra nel settore della cosiddetta “realtà virtuale”,
nella quale si simula con il calcolatore un mondo che può essere o meno esistente [15].
Ma questo termine è molto generico e include una quantità notevole di progetti ed
applicazioni di tipo assai differente.
Una vasta area di programmi è costituita da quei sistemi che permettono di
lavorare in “ambienti ostili”, per esempio con apparecchiature teleguidate. Numerosi
studi sono stati svolti e progetti sviluppati per attrezzature destinate ad operare in
situazioni estreme: ambienti radioattivi [35], sott’acqua [36], sotto terra [37], nello
spazio [38].
Le potenzialità fornite dall’aumento delle capacità di calcolo e dai conseguenti
sviluppi della computer graphics hanno dato un forte impulso allo sviluppo di
Introduzione
6
“ambienti immersivi”. Si tratta di ambienti virtuali nei quali l’utente si “immerge”
grazie ad apparecchiature, corredate da un software specifico, che permettono di
osservare l’ambiente simulato come se effettivamente ci si trovasse all’interno di esso
[31]. Gli sviluppi più recenti, grazie ad algoritmi per la gestione delle “interferenze” tra
oggetti tridimensionali [39], hanno dato vita, anzi, ad ambienti nei quali si ha anche una
percezione “tattile” degli oggetti ivi contenuti. Utenti distribuiti sulla rete possono
quindi collaborare fra di loro in uno stesso luogo virtuale percependo le reazioni alle
loro azioni e interazioni [30].
L’espansione di Internet in questi ultimi anni, favorita dall’aumentata facilità di
fruizione dei suoi servizi tramite il Web, ha spianato la strada agli “ambienti
collaborativi”. Sono state costruite numerose applicazioni che si occupano, soprattutto,
di gestire l’interazione tra gruppi di lavoro geograficamente dispersi; ne esistono molti
esempi: progetti di teleconferenza [21], studi per laboratori virtuali [27], database gestiti
in modo cooperativo [19][20], stesura congiunta di documenti [22]. In questo campo,
però, gli studi, che riguardano più da vicino l’argomento del progetto qui presentato,
sono quelli tendenti allo sviluppo di applicazioni che permettano a diversi utenti di
cooperare nella realizzazione di un prodotto finito, per esempio in una “fabbrica
virtuale” [32].
Esiste un interessante studio, nel quale l’ambiente virtuale viene impiegato per
gestire una “simulazione collaborativa”: si tratta di un progetto in cui diversi utenti
cooperano su una superficie geometrica, trasformandola agendo su di essa per ottenere
una forma desiderata [28][29]. In altre parole, in questo progetto, vi sono degli “attori”
che interagiscono fra di loro, ognuno dotato di un proprio “visualizzatore” della scena a
cui sta partecipando che gli mostra il mondo dal suo punto di vista
1
. In effetti, un aspetto
non indifferente della “realtà virtuale” è il modo in cui viene presentata, ossia gli
algoritmi per la visualizzazione [25].
1
Si vedrà, nel seguito, come ciò sia di fondamentale importanza per il presente studio.
Introduzione
7
Nei prossimi paragrafi verranno esposte le caratteristiche del progetto di
ambiente virtuale che costituisce l’oggetto di questa trattazione. Inoltre, si introdurrà
un’opportuna terminologia specifica che sarà impiegata nel seguito.
2.2 Simulazione a distanza e Mondo Virtuale: la metafora del
teatro
Intendiamo per simulazione a distanza, una simulazione nella quale le varie
componenti che vi partecipano risiedono su calcolatori diversi collegati fra di loro
attraverso una rete di comunicazione
2
. Chiamiamo Mondo Virtuale, l’ambiente fittizio
in cui la simulazione si svolge.
Per meglio comprendere il significato di questi termini si può utilizzare la
metafora del teatro, nel quale il Mondo Virtuale si identifica con il palcoscenico. Lo
spettacolo che viene rappresentato è la simulazione. Naturalmente perché essa possa
avere luogo è necessaria la presenza degli attori: si tratta di componenti che partecipano
attivamente muovendosi sulla scena. Un esempi di attori sono i simulatori di catene
cinematiche che si occupano di calcolare le posizioni assunte dai bracci che
costituiscono la catena
3
.
Perché lo spettacolo sia di qualche utilità, benché ciò non sia necessario, è
auspicabile la presenza di un pubblico: gli spettatori. Nel Mondo Virtuale questi sono
telecamere che possono riprendere la scena sotto angoli visuali differenti
4
.
Un ulteriore elemento è costituito dalle cosiddette comparse: oggetti passivi che
sono presenti nella scena ma non possono muoversi autonomamente. In base a questa
definizione, le comparse si identificano con la “scenografia” della metafora. Il compito
2
In questa trattazione, sarà talora impiegato come sinonimo il termine “simulazione distribuita”
poiché, in effetti, la simulazione avviene tra componenti distribuiti sulla rete.
3
Una catena cinematica è costituita da una serie di braccia uniti mediante giunti e simula il
comportamento di un braccio robotizzato [4][5].
4
Poiché l’immagine della scena deve essere ricostruita localmente sul terminale grafico cui gli
spettatori sono collegati, essi sono propriamente dei visualizzatori.
Introduzione
8
di aggiungere e togliere le comparse è delegato ai visualizzatori
5
, ma il loro movimento
è generato dal Mondo Virtuale. Esempi di comparse sono le attrezzature della cella di
lavorazione.
Infine, il regista della rappresentazione controlla lo spettacolo intervenendo su
alcuni parametri e si identifica con un particolare tipo di componente: il controllore.
Nell’ambito del progetto, il controllore viene chiamato console: non ce ne può essere
più di uno per ogni Mondo funzionante.
Si tenga presente che tutti gli oggetti di cui sopra non risiedono fisicamente sulla
stessa macchina, ma si trovano a collaborare nello stesso ambiente virtuale coordinato
da un unico computer. Per accedere all’ambiente, i componenti richiedono la
connessione al Mondo Virtuale e, ottenutala, vi aggiungono i loro oggetti spostandoli
nell’ambito della simulazione globale che si svolge nel Mondo. In altre parole, il Mondo
Virtuale coordina in un’unica simulazione globale le simulazioni parziali degli attori
che sono collegati
6
.
2.3 Attori, oggetti e frame: chi è di scena
Un attore è un programma che simula il comportamento di un oggetto
complesso. In altre parole, ne modella le azioni e le reazioni in base ad iniziative interne
o ad eventi esterni.
In quanto oggetto complesso, un attore si compone di tante parti in qualche
modo collegate tra di loro: ossia, si suddivide in oggetti semplici con posizioni ed
orientamenti interdipendenti. Questi oggetti semplici vengono designati con il termine
di frame e sono considerati di proprietà dell’attore che li governa.
5
Si è reputato di affidare ai visualizzatori questo compito perché il comportamento delle
comparse è passivo e quindi risulta inutile creare un componente apposito che si limiti ad aggiungerle e
toglierle dalla scena. I visualizzatori agiscono, quindi, anche da scenografi in quanto, inoltre, sono essi a
“vedere” la scena. Gli attori simulano il comportamento di una serie di oggetti nel loro insieme: non era
opportuno fornire loro questa possibilità.
6
Ogni attore è, infatti, un simulatore e come tale produce delle simulazioni.
Introduzione
9
È compito dell’attore stabilire la posizione e l’orientamento di tutti i suoi frame
e comunicarli al Mondo Virtuale. Quest’ultimo non sa nulla delle relazioni esistenti tra i
frame di uno stesso attore, ma si limita a spostarli dove gli viene richiesto se
l’operazione è possibile.
Le comparse sono oggetti semplici non dotati di comportamento proprio, quindi
vengono trattate semplicemente come frame di proprietà dello spettatore che le ha
instanziate.
2.4 Collegamenti e collisioni: legami tra i frame
Fra i vari elementi presenti sulla scena possono esistere relazioni di dipendenza
per le quali il movimento dell’uno causa un analogo spostamento dell’altro. Questo
significa creare dei legami tra i frame di qualcuno e quelli di qualcun altro attraverso
un'opportuna trasformazione rigida dei sistemi di riferimento. Tale peculiarità viene
sfruttata, ad esempio, per simulare l’operazione di chiusura degli end effector di un
robot
7
.
Tutti i dettagli relativi alle relazioni di interdipendenza tra frame di componenti
diversi sono noti esclusivamente al Mondo Virtuale: è suo compito richiedere agli
interessati lo spostamento di un loro oggetto. Si noti che questo movimento potrebbe
non essere possibile, per esempio nel caso di robot che hanno uno spazio di lavoro
limitato è impossibile spostare un link al di fuori di esso: in questi casi l’attore muove
fin dove riesce il suo braccio e quindi genera un messaggio di eccezione. A seconda dei
casi si potrà avere l’eliminazione del collegamento (l’oggetto sfugge dall’end effector
che lo sta tenendo), l’annullamento dello spostamento o addirittura la rottura dei pezzi.
Nella Figura 2-1 è rappresentato il caso di due catene cinematiche in cui il frame
F4 di una è collegato al frame G4 dell’altra: lo spostamento di G4 causa il movimento
7
Nel seguito questa operazione verrà anche chiamata “operazione di grasping”. La sua opposta,
cioè l’apertura dell’end effector, sarà indicata come ungrasping.
Introduzione
10
di F4, la modifica della configurazione di tutta la catena e quindi lo spostamento anche
dei frame F1, F2 e F3
8
.
Figura 2-1 - Collegamenti tra i componenti.
Poiché i vari oggetti collaborano in un unico ambiente, è necessario prevedere
un meccanismo per gestire le collisioni che possono verificarsi tra di essi. Il Mondo
Virtuale contiene al suo interno un gestore delle collisioni che provvede a verificare ad
ogni spostamento il verificarsi di queste e ad avvisare i diretti interessati
9
che
reagiscono di conseguenza.
2.5 Le applicazioni che costituiscono il sistema
Allo stato attuale, il sistema realizzato si compone di tre applicazioni principali:
• VW: rappresenta il Mondo Virtuale e costituisce l’oggetto principale di
questo studio. I dettagli relativi all’implementazione, il suo funzionamento e
le relazioni esistenti con gli altri componenti sono ampiamente dibattuti ed
approfonditi nel seguito. Quest'applicazione ha bisogno, per funzionare in
8
Il movimento di questi tre frame è richiesto dall’attore che governa la catena cinematica rossa
perché il Mondo Virtuale non sa nulla delle relazioni esistenti tra i frame di quella.
9
Non è possibile affidare questo compito ai visualizzatori poiché ognuno di essi potrebbe
rilevarle in modo differente; inoltre il sistema dev’essere in grado di accorgersi delle collisioni anche nel
caso in cui nessuno spettatore sia collegato.
Introduzione
11
modo corretto, di due daemon denominati VWD e FTD. Tutti e tre i
programmi (VW, VWD e FTD) sono stati realizzati per i sistemi operativi
Linux, HP-UX, Windows 95 e NT.
• 3DV: implementa gli spettatori. Contiene un’interfaccia grafica mediante la
quale è possibile visualizzare la scena attraverso l’impiego di telecamere sotto
diverse angolazioni. Si possono inoltre modificare le luci che illuminano la
scena e instanziare le comparse. Quest'applicazione funziona con sistema
operativo Windows 95 e NT [46].
• KIN: è un particolare tipo di attore costituito da una catena cinematica di link
collegati mediante giunti prismatici e rotazionali. Gli utensili del braccio
robotizzato possono afferrare altri oggetti. Il programma funziona in ambiente
Windows 95 e NT [47].
Per mostrare le funzionalità di VW e 3DV è stata realizzata un’applicazione,
DRIVE, che rappresenta un semplice attore costituito da un unico frame in grado di
muoversi nello spazio. La descrizione di questo programma è fornita in appendice:
funziona in ambiente Windows 95 e NT.
È stata creata un’altra applicazione per Windows chiamata VWCONSOLE, che
si occupa di gestire diversi Mondi Virtuali anche su macchine remote attraverso
l’impiego di un’intuitiva interfaccia grafica. Un’analoga interfaccia, più semplice, è
stata sviluppata per gli ambienti Unix ed è stata chiamata CONS. Pure di questi
programmi si possono trovare dettagli maggiori in appendice.
Le relazioni esistenti tra le applicazioni sono mostrate in Figura 2-4. Ogni
riquadro rappresenta un programma che in funzione su una macchina, le frecce indicano
i canali di comunicazione che sono instaurati tra i diversi computer attraverso la rete.
Tutto il sistema comunica mediante l’impiego del protocollo TCP/IP che è utilizzato in
INTERNET.
Come si può notare, tutte le comunicazioni passano attraverso il Mondo
Virtuale: non esiste nessun canale di trasmissione diretto tra gli altri componenti.
Introduzione
12
Figura 2-2 - Relazioni tra le diversi applicazioni che compongono il sistema.
Introduzione
13
2.6 L’interno del Mondo Virtuale e struttura della trattazione
La Figura 2-3 illustra tutti gli oggetti presenti nel Mondo Virtuale e sulle
macchine ad esso collegate, la figura fotografa una situazione possibile in cui sono
evidenziate tutte e sole le caratteristiche necessarie alla comprensione del meccanismo
generale di funzionamento. La Figura 2-4 è la legenda che spiega che cosa
rappresentano i vari oggetti mostrati.
Tutte le parti del sistema troveranno un’adeguata spiegazione nel seguito della
trattazione. Nella prima sezione si illustreranno nei dettagli i principi di funzionamento
degli oggetti. La seconda sezione si occuperà invece dell’implementazione specifica
adottata e conterrà tutti i particolari relativi alle classi, alle strutture di programmazione
ed ai metodi utilizzati. Nella terza sezione si traggono le conclusioni del progetto e si
delineano i possibili sviluppi futuri.
In fondo alla terza sezione è stato incluso un glossario con una spiegazione dei
più importanti termini tecnici con particolare riferimento al significato assunto per il
progetto.
Si illustra ora, molto brevemente, la figura con l’avvertenza che per una
comprensione completa di essa è necessaria la lettura di tutti i capitoli relativi alle varie
parti ed indicati nelle note a pié di pagina.
L’applicazione vw
10
funziona su un host collegato alla rete, sullo stesso
computer funzionano i daemon vwd
11
e ftd
12
dedicati rispettivamente al mantenimento
della lista dei mondi attivi ed al trasferimento dei file. All’interno dell’applicazione vi
sono vari oggetti che puntano a o usano altre parti del sistema.
10
Cfr. Il Mondo Virtuale.
11
Cfr. I daemon - Il daemon dei mondi attivi: VWD.
12
Cfr. I daemon - l daemon per lo scambio dei file: FTD.
Introduzione
14
Il vw comunica la sua nascita e la sua morte a vwd tramite la socket
13
associata
a to_daemon e riceve le richieste di collegamento attraverso la socket associata a
sock_in.
Il vw mantiene un elenco cli_list di tutti i Client
14
collegati al Mondo, ogni
Client ha delle variabili caratteristiche che ne descrivono il tipo, le socket usate per il
trasferimento dei messaggi ed i frame
15
da esso posseduti.
Ad ogni frame è associato un file che ne descrive le caratteristiche grafiche.
Tutti i frame presenti nel sistema sono direttamente raggiungibili tramite l’insieme di
puntatori frames. Anche se non mostrato in figura, i frame contengono un puntatore
owner al Client cui appartengono.
I frame di Client diversi possono essere collegati fra di loro
16
, in modo che il
movimento di uno causi un analogo spostamento dell’altro: ogni frame può essere
collegato ad un numero qualsiasi di altri frame. Il collegamento avviene mediante un
oggetto vwlink, ogni frame contiene un insieme di collegamenti links, di cui è master,
ad altri frame, che sono slave. Nella figura, un frame appartenente all’attore KIN
agisce da master in un collegamento ad un frame slave appartenente al visualizzatore
3DV.
Per gestire correttamente le simulazioni, vw impiega un orologio, vwclock
17
, ed
una tabella dei Client attesi per i vari istanti temporali, mtable.
Inoltre esistono tre oggetti particolari:
• vwdispatcher provvede a mantenere aggiornata la situazione del Mondo sui
visualizzatori. Mantiene un elenco, visualizers, di tutti gli spettatori
attualmente collegati.
• vwcollider
18
si preoccupa di gestire le collisioni e di risolverle. Per questo
deve impiegare mtable, frames e vwdispatcher.
13
Cfr. Le comunicazioni - Meccanismi di comunicazione.
14
Cfr. I componenti.
15
Cfr. La gestione degli oggetti - I frame.
16
Cfr. La gestione degli oggetti - I collegamenti.
17
Cfr. Le simulazioni - Il tempo.
Introduzione
15
• vwconsole
19
invia i messaggi al terminale o alla console eventualmente
collegata.
Sull’host su cui sta funzionando un attore (KIN nella figura) è necessario che
venga eseguito anche ftd in modo che vw sia in grado di procurarsi i file che
eventualmente non possiede. Osservando la figura: vw richiede attraverso la socket
associata a toFTD il file che non possiede a ftd che sta funzionando sull’host di KIN;
questo ftd cerca sul disco fisso e quando trova il file lo spedisce tramite la sua socket di
uscita; vw riceve i dati attraverso una socket associata ad in di un generico componente
che viene creato apposta e distrutto quando ftd si scollega.
Analogamente, il visualizzatore (3DV in figura) che funziona su un altro host
dovrebbe poter essere in grado di comunicare con l’ftd dell’host di vw in modo da
procurarsi i file che non possiede.
Gli host che ospitano le console
20
(CONS in figura), non hanno bisogno di
dialogare con ftd perché ai controllori non importa nulla dell’aspetto geometrico degli
oggetti, e quindi dei file grafici.
18
Cfr. La gestione degli oggetti -Le collisioni.
19
Cfr. I componenti - La console.
20
Cfr. I componenti - La console e in appendice Come gestire più mondi virtuali.
Introduzione
16
Figura 2-3 - L'interno del Mondo Virtuale
Introduzione
17
Figura 2-4 - Legenda per la figura precedente
PARTE PRIMA
Il Mondo Virtuale
In questa sezione si analizzeranno tutte le parti che compongono il Mondo
Virtuale e gli elementi ad esso strettamente connessi, ossia quello che è stato chiamato
Virtual World Environment e che costituisce l’oggetto della trattazione.
Vengono esposti tutti quegli aspetti che permettono di descrivere il
funzionamento del sistema rimandando alla sezione successiva la discussione
dell’implementazione. Tuttavia si dovrà talvolta ricorrere ad una breve esposizione di
alcuni dettagli per la corretta comprensione di tutti i meccanismi.
È quindi sufficiente lo studio di questa sezione per l’utilizzo consapevole del
Mondo Virtuale e anche per la stesura di eventuali ulteriori componenti che si integrino
al progetto di simulazione distribuita qui proposto. Ai programmatori che volessero
ulteriormente approfondire la conoscenza del DSE per riutilizzare il codice scritto ed
eventualmente ampliarlo si impone la lettura anche della seconda sezione.