Relazione di stage in versione scaricabile
Transcript
Relazione di stage in versione scaricabile
UNIVERSITA’ DEGLI STUDI MILANO BICOCCA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica PROGETTAZIONE E IMPLEMENTAZIONE DI UN MODELLO MULTIAGENTE PER LA SIMULAZIONE IN UN AMBIENTE 3D Relatore: Correlatore: Prof.ssa Stefania BANDINI Dott. Giuseppe VIZZARI Riassunto relazione finale di: Giorgio Pizzi Matr. 032347 Anno Accademico 2002-2003 prova Indice 1. Introduzione e obbiettivi .........................................................................................3 2. Il problema di localizzazione e di ottimizzazione ...................................................5 °°°° 2.1. Contesti d’uso ..................................................................................................7 °°°° 2.2. Stato dell’arte ...................................................................................................9 3. Una proposta basata su paradigma ad agenti ........................................................13 3.1. 4. Descrizione dell’architettura del sistema ..............................................................19 4.1. Studio di fattibilità .........................................................................................19 4.2. Progettazione .................................................................................................22 4.2.1. Procedura ...............................................................................................25 4.2.2. Scenari possibili .....................................................................................26 4.3. Paradigma ad agenti...............................................................................28 4.3.2. Linguaggio di programmazione .............................................................34 Dimostrazione d’uso ......................................................................................42 Sviluppi futuri .......................................................................................................50 6.1. 7. Protocollo di comunicazione tra applicazione 2D e 3D ................................36 Implementazione ...................................................................................................39 5.1. 6. Teorie e strumenti utilizzati...........................................................................28 4.3.1. 4.4. 5. Modellazione .................................................................................................14 Conclusioni ....................................................................................................54 Riferimenti ............................................................................................................55 7.1. Risorse Web ...................................................................................................56 8. Indice delle figure..................................................................................................57 9. Indice delle tabelle ................................................................................................58 10. Ringraziamenti ......................................................................................................59 2 1. Introduzione e obbiettivi L’obbiettivo di questa tesi è l’analisi e la progettazione di uno strumento di supporto alle simulazioni di sistemi complessi nella progettazio ne e nella pianificazione di aree urbane. In particolare, questo lavoro è focalizzato nella modellazione tridimensionale di ambienti ed entità che agiscono ed interagiscono autonomamente al suo interno. Le motivazioni di questo approccio sono duplici. Da una parte consente di ottenere efficaci e realistiche visualizzazioni dell’evoluzione del sistema, rendendo maggiormente comprensibile le sue dinamiche anche a persone non esperte nel dominio di applicazione. D’altra parte può anche essere utile per modellare in modo più preciso quei particolari meccanismi inerenti le interazioni tra le entità del sistema. Le tecnologie attuali ci consentono di inserire varie riproduzioni virtuali realistiche anche di ambienti molto estesi. Tuttavia, queste risorse possono risultare alienanti perché prive di ogni elemento dinamico o addirittura poco utilizzate perché non interfacciate da applicazioni scientifiche e professionali. Questa integrazione può ottenere simulazioni maggiormente realistiche, utili nella progettazione di nuove strutture architettoniche o negli interventi di quelle già esistenti (scuole, stazioni ferroviarie, musei, stadi…). Con questi propositi ho voluto amalgamare le funzionalità derivanti dall’uso di paradigmi ad agenti per la modellazione comportamentale di avatar e le caratteristiche avanzate di grafica per l’aspetto maggiormente dinamico del sistema. Nello spazio tridimensionale sono stati implementati alcuni sensori in modo maggiormente realistico, coinvolgendo le proprietà fisiche degli oggetti e l’ambientazione volumetrica: la forza gravitazionale influisce sui movimenti dei personaggi che sono costituiti con le stesse caratteristiche fisiche di quelle reali, la capacità di evitare ostacoli e di definire abilità comportamentali, interagire con l’ambiente e con gli altri personaggi della scena. Il valore aggiunto attraverso questo strumento risiede particolarmente negli aspetti dinamici che rendono maggiormente reale una simulazione: i movimenti analoghi a quelli abitualmente riscontrabili intorno a noi, la fisica legata ai nostri sensi e quella relativa alle strutture rigide, il realismo visivo ambientale e quello comportamentale. Il modello teorico che è stato preso in considerazione e riguardante le modalità in cui le informazioni hanno origine, si diffondono, e vengono percepite dagli agenti si basa sulla teoria dei campi e più specificatamente sul paradigma ad agenti. L’applicativo utilizzato per la rappresentazione grafica tridimensionale è 3DS Max 5.0 congiuntamente al plug- in Character Studio 4 tramite cui è stata realizzata un’interfaccia con cui è possibile creare in pochi passi l’intera scena ed essere pronti per risolvere la simulazione. Per testare lo strumento creato, sono stati considerati quattro tipi diversi di spazi sia in una situazione in cui tutti gli agenti percepiscono correttamente i campi, sia nel caso in cui alcuni di essi si trovano in uno stato confusionale dovuto all’emergenza. E’ stata descritta l’architettura del sistema, i metodi implementativi utilizzati, i potenziali contesti d’uso e lo stato dell’arte di analoghe applicazioni e delle relative tecnologie. 3 Ne sono stati considerati gli sviluppi possibili ipotizzando che, proseguendo nello sviluppo di nuove funzionalità, sarà possibile fare previsioni riguardo la sicurezza e la gestione di emergenze in strutture architettoniche, simulando un numero arbitrario di persone e ricreando condizioni di fumo e fuoco difficilmente riproducibili in altro modo. 4 2. Il problema di localizzazione e di ottimizzazione I problemi di localizzazione si riferiscono alle indicazioni per il posizionamento di un oggetto, o un insieme di oggetti, in uno spazio. In generale esistono due tipi diversi di significato riguardo questo tipo di attività: riferendosi al tipo di controllo di un sistema o alle questioni di progettazione, pianificazione e configurazione. Proprio quest’ultima definizione, ovvero la scelta di posizionare nel migliore dei modi alcuni oggetti all’interno di un ambiente, sarà trattata di seguito e potrà essere considerata anche come un problema di ottimizzazione. Il problema della localizzazione e quello di ottimizzazione sono trattati diffusamente il letteratura e riguardano innumerevoli aspetti: il posizionamento strategico di insediamenti militari, quello di aeroporti, stazioni metropolitane o ferroviarie e quello della cartellonistica, la progettazione di circuiti elettronici [23] e il percorso più breve da compiere [24]. Generalmente questo tipo di problemi sono NP-Complessi e vengono trattati con algoritmi e tecniche euristiche. In alcuni casi però, in mancanza di precise condizioni che regolano il sistema, non è sempre possibile definire delle funzioni per la valutazione quantitativa. Ci sono situazioni, infatti, in cui la valutazione della configurazione dell’intero sistema è dipendente da elementi dinamici che agiscono autonomamente nell’ambiente. Invece di trattare questo genere di problemi in maniera globale, definendo un metodo di soluzione centralizzato, essi possono essere efficacemente riformulati in termini di agent i locali che interagiscono e cercano di perseguire i propri obbiettivi coordinandosi e agendo competitivamente. In questo modo, la soluzione nel collocare elementi all’interno dell’ambiente, viene ottenuto come effetto emergente del comportamento individua le e locale di ogni agente. Per questo motivo è possibile prendere in considerazione modelli basati su MAS (Multi Agent System) che consentono di focalizzarsi sugli aspetti delle interazioni tra gruppi di agenti e di folle con comportamenti intelligenti, ottenendo risultati per problemi complessi. Data la difficoltà computazionale di questi sistemi che possono coinvolgere decine di agenti, il metodo risolutivo sarà ciclico: in una prima fase si fanno delle scelte preliminari riguardo il posizionamento degli oggetti, successivamente si esegue la simulazione valutando le scelte fatte ed infine si analizzano i risultati ottenuti modificando eventuali aspetti di ottimizzazione. Questo processo può iterarsi diverse volte fino a che si ottengono risultati soddisfacenti. Nell’articolo di S.Bandini, S.Manzoni e G.Vizzari :”MMASS Approach to Localization Problems”, si prende in esame il modello MMASS (Multi Agent Situated System) per risolvere problemi come la localizzazione di centri commerciali in aree extra- urbane, il posizionamento di guide all’interno di musei e l’allestimento di spazi pubblicitari all’interno delle città. La caratteristica principale del modello MMASS è quella di fornire una chiara definizione dell’ambiente in cui gli agenti sono localizzati e quella di consentire comportamenti e interazioni tra agenti in dipendenza della struttura spaziale. Il modello descrive la struttura spaziale dell’ambiente come un grafo non orientato multilivello di siti. L’ambiente in cui gli agenti sono localizzati può riprodurre uno spazio fisico, ma è tuttavia possibile definire uno “spazio virtuale” in cui gli agenti possono vagare e interagire. Le interazioni hanno luogo quando due o più agenti vengono attratti in un rapporto dinamico spaziale tramite una sequenza di azioni 5 reciproche, causando un’influenza sul comportamento futuro degli agenti. I MAS localizzati sono generalmente composti di agenti reattivi, ossia agenti elem entari senza memoria con una posizione definita nel tempo e nello spazio. Gli agenti reattivi localizzati svolgono le loro azioni come conseguenza della percezione di segnali provenienti sia da altri agenti che dall’ambiente e sono sensibili ai rapporti spaziali che determinano limiti e capacità nelle azioni, come pure rapporti privilegiati di cooperazione. Esistono due tipi di meccanismi d’interazione dipendenti dalla disposizione : la reazione ( interazione sincrona che avviene tra agenti adiacenti) e l’emissione – diffusione - percezione dei campi (interazione asincrona tra agenti posti a distanza). Il comportamento degli agenti è basato sul meccanismo di percezione – valutazione – azione che ha luogo quando il segnale emesso da altri agenti viene propagato nell’ambiente e percepito da certi altri. Le principali caratteristiche che contraddistinguono un sistema MMASS sono: • gli agenti localizzati: ciascun agente è associato con un sito di uno spazio MASS (Multi Agent Situated System) e il comportamento dell’agente è fortemente influenzato dalla sua posizione nella struttura topologica di questo ambiente; • le interazioni tra agenti all’interno del MMASS dipendenti dallo spazio: il comportamento dell’agente è influenzato da altri agenti (ad es., dalla loro presenza o dai segnali che emettono) ed entrambi i tipi di interazione sono fortemente dipendenti dalla struttura spaziale dell’ambiente in cui si trovano gli agenti. La presenza dell’agente è percepita solo da quelli vicini, mentre i segnali si propagano secondo la struttura topologica dell’ambiente; • il comportamento dell’agente: sia lo stato che la sua posizione possono variare attraverso l’agente stesso secondo il meccanismo di percezione – valutazione – azione. Perciò ogni agente reagente che costituisce l’MMASS dopo la percezione dei segnali emessi da altri agenti, seleziona l’azione locale da intraprendere (a seconda del suo stato, posizione e tipo) e la esegue; • l’eterogeneità: gli agenti sono inoltre caratterizzati dal tipo, che determina la loro sensibilità percettiva e le loro capacità. Quindi, un MASS è un sistema eterogeneo di agenti, dove agenti con caratteristiche e capacità diverse coesistono ed interagiscono. Inoltre, l’ambiente può essere caratterizzato da una struttura topologica multilivello che è composta da spazi topologici multipli, eterogenei e interconnessi. Una descrizione formale del modello MMASS è fornita nell’articolo [3]. 6 2.1. Contesti d’uso L’informatica è una disciplina che si occupa prevalentemente nella risoluzione di problemi con l’ausilio di computer. Sfortunatamente, compiti che sembrano molto semplici e intuitivi agli uomini, sono molto spesso più complessi di quello che sembrano a prima vista, in particolare, quando devono comunicare o essere eseguiti da una macchina. Per poter superare questa complessità viene creato un modello. Un modello è una semplificazione del problema originale e il cui compito è quello di rendere comprensibile qualcosa di difficile, non solo per le macchine ma anche per uomini. L’obbiettivo di una simulazione è di riprodurre il comportamento di un sistema reale. In questo contesto, le simulazioni sono perciò un modello di questi sistemi. § La sperimentazione: le simulazioni consentono all’utente di controllare degli ambienti per fare sperimentazioni. Quanto più è possibile parametrizzare una simulazione o cambiare il comportamento delle entità simulate e tanto maggiore sono le possibilità di osservare i cambiamenti nel sistema. § Le scoperte: tramite la sperimentazione di una simulazione è possibile scoprire come alcuni parametri o soluzioni strategiche possano influenzare l’ambiente in cui la simulazione viene eseguita. Queste nuove conoscenze possono essere poi utilizzate per comprendere meglio il mondo reale. § La predizione: dopo aver modellato adeguatamente un certo problema con una simulazione, è possibile utilizzare la ricostruzione per predire i risultati che si otterranno in diverse condizioni. § La formazione: le simulazioni possono essere utilizzate come guide e supporto alle persone. Uno dei primi usi di questo tipo di utilizzo sono stati i simulatori di volo per gli aspiranti piloti. § Il divertimento: molte simulazioni sono utilizzate nei videogiochi. Alcuni di essi, tra i più famosi, sono Microsoft Flight Simulator, The Sims, SimCity, Civilization che sono oltretutto basati su elementi sociali, politici e culturali. In generale si possono distinguere due tipi differenti di simulazione: quelle coinvolte in spazi discreti e in spazi continui. La maggior parte delle simulazioni avviene in spazi discreti proprio per la semplificazione dei compiti che ne consegue. Una prima simulazione trattata in [2] è inerente alla migliore localizzazione di centri commerciali in aree extra-urbane. Si tratta di un problema ampiamente studiato da economisti e urbanisti, in cui è necessario prendere in considerazione aspetti come la presenza di strade, la distribuzione della densità abitativa e la distanza con altri elementi in competizione. Questo sistema è stato sviluppato per identificare nuove aree potenzialmente strategiche alla creazione di nuove strutture, ma anche nella possibilità di successo in un’area Figura 1 : localizzazione di centri già servita da altri esercizi commerciali. commerciali in aree extra-urbane. Per risolvere tali problematiche sono 7 state prese in considerazione sia aspetti geografici che competitivi. Il contesto potrebbe essere traslato da un’area extra- urbana a quella urbana sempre nella verifica di spazi adatti ad occupare attività commerciali o strutture pubbliche come musei, stazioni, cinema, ecc… In questa situazione macroscopica, rispetto all’applicazione descritta precedentemente, vene a far parte un elemento fondamentale che precedentemente poteva essere considerato irrilevante: l’individuo, l’unita di cui si compone la popolazione assume in questo caso un’importanza rilevante. Tramite questo elemento è possibile creare una folla, una società e una popolazione. Per questo motivo, si rende necessaria l’analisi e l’implementazione di una simulazione in cui ogni aspetto caratterizzante l’individuo assume un valore fondamentale in una realizzazione quanto più realistica. Altro aspetto fondamentale è l’ambientazione tridimensionale: il volume occupato dagli elementi che costituiscono lo spazio rappresenta un’informazione importante, in quanto le nostre azioni sono composte dalle nozioni che ci giungono attraverso i nostri sensi e quindi dall’ambiente che ci circonda. Innanzi tutto per descrivere una persona, oltre l’aspetto fisico, si fa riferimento ai suoi comportamenti, gesti, azioni, stato sociale e stato culturale. Per creare un modello adeguato di una persona è necessario dotarlo di sensi (sensori), capacità motorie, caratteristiche cognitive e capacità relazionali. Con questi elementi a disposizione è possibile creare simulazioni di diverse tipologie e con differenti scopi. Un esempio è dato dall’implementazione di un sensore visivo che consentirebbe di analizzare le informazioni percepite dall’agente. In questo modo si otterrebbero, ad esempio, chiare indicazioni sul miglior posizionamento di indicazioni stradali, uscite di emergenza e cartelli pubblicitari. Allo scopo di realizzare una simulazione realistica in grado di coinvolgere decine di persone in una situazione d’emergenza, è, infatti, indispensabile tener conto dello spazio coinvolto e di tutti i nostri sensi che utilizziamo in quelle situazioni: olfatto, Figura 2: esempio di agenti con coni visivi. tatto, vista e udito. Attualmente una simulazione così realistica non è stata implementata, ma esistono i presupposti per poterla creare. Nella realizzazione di nuove strutture architettoniche si tengono in considerazione solo gli aspetti di sicurezza imposti dalle leggi. Queste ultime sono state create e modificate negli anni in base all’esperienza e alle conoscenze che ci si tramanda. Spesso però queste imposizioni risultano fallimentari perché non vi è modo di verificarne l’efficacia in situazioni diverse. Il più efficace strumento di analisi attraverso cui è possibile ricostruire un incidente, solo dopo che è accaduto, sono le immagini video. Non sono infatti riproducibili, in modo sicuro ed economico, situazioni di panico con fuoco e fumo in cui decine di persone reali si comportano coerentemente alle loro sensazioni e al loro stato emotivo. L’intento è quello di realizzare uno strumento professionale in grado di predire incidenti di massa in modo economico e privo di rischi, con la possibilità di ricreare ambienti fedeli alla realtà e simulare le condizioni in modo parametrizzabile. 8 2.2. Stato dell’arte Le tecnologie attuali consentono di ottenere delle riproduzioni virtuali fedeli alla realtà di ambienti anche molto estesi. Tuttavia, tali risorse possono risultare alienanti perché prive di ogni elemento dinamico o addirittura poco utilizzate perché esenti da applicazioni professionali. Insieme alle applicazioni esistenti, è possibile ottenere simulazioni maggiormente realistiche e utili nella progettazione di nuove strutture architettoniche o negli interventi di quelle già esistenti ed a uso pubblico (scuole, stazioni, musei, stadi…). Questo tipo di risorsa è fondamentale nella riuscita di una simulazione il cui obbiettivo è quello di verificare una corretta Figura 3: immagine virtuale del quartiere progettazione. D’altra parte, la Ramat Gan a Tel Aviv. qualità riscontrabile nella Figura 3 è superiore ai requisiti necessari per poter utilizzare un applicativo come quello realizzato. Gli architetti e gli ingegneri utilizzano già alcuni strumenti informatici per il loro lavoro (il più famoso dei quali è sicuramente Autocad che appartiene alla stessa società di 3DS Max). Questi progetti, dopo aver apportato alcune semplici modifiche di sviluppo in altezza, sono facilmente importabili in 3DS. Nell'anno accademico 2001-2002 lo studente Michele Caletti si laurea con una tesi dal titolo: "Definizione ed implementazione di un modello computazionale basato su agenti per la simulazione di comportamenti ed interazioni in città virtuali." Nel documento si descrive un modello di folle virtuali in cui i singoli agenti hanno un comportamento plausibile ed un determinato grado d’interazione con l'utente e tra loro stessi. E' stato inoltre progettato e sviluppato un prototipo d’applicazione che implementa il modello attraverso il linguaggio di programmazione C++. L’interfaccia di programmazione grafica utilizzata è DirectX 9 ed è stato sfruttato il paradigma ad agenti per la Figura 4: ambiente tridimensionale con folla creata tramite un modello ad agenti modellazione di avatar e di altri elementi rilevanti presenti nel sistema. Questo sistema è stato analizzato profondamente nella sua complessità. Il progetto è composto di numerosi moduli: un motore grafico, un sistema di gestione delle collisioni, un parser per l’importazione dal formato di 3DS, gli oggetti della scena, la sensoristica degli agenti. Diversi tipi di simulazione sono possibili: un’aggregazione di persone per verificare il comportamento emergente di folle, una 9 visita guidata in un museo, un insieme di interazioni tra un numero arbitrario di agenti. Nel complesso è risultata una piattaforma molto potente e con vasti campi applicativi: divertimento, professionale e web. Nonostante queste stupefacenti qualità, globalmente è sembrata un’applicazione poco stabile e dipendente dall’hardware nonostante l’utilizzo di librerie grafiche DirectX che si propongono essere molto flessibili. Inoltre, benché sia stato affrontato l’argomento con studi precedenti, il codice, un insieme di istruzioni C++ e DirectX, è stato ostico da interpretare e da poter apporvi modifiche. Proprio prendendo spunto da questo progetto si è pensato di realizzare lo strumento descritto in questa relazio ne. Gli argomenti trattati precedentemente hanno però convogliato le mie scelte di strumenti di sviluppo verso l’utilizzo diretto di 3DS Max. In questo modo, infatti, si ha indipendenza sia da librerie DirectX che OpenGL, la stabilità è garantita dalla professionalità riconosciuta nel mondo e la flessibilità che, insieme agli standard che si sono formati sui suoi formati, questo software si è aggiudicato negli anni è dimostrabile attraverso lavori congiunti di molti team nella creazione di film di animazione come Bugs Life e Shrek. Oltre a tutto ciò vi è da aggiungere che con tale strumento si ha costantemente un prodotto aggiornato nelle proprie tecnologie e, per queste ragioni, è possibile scindere in modo più netto gli aspetti grafici da quelli derivanti da teorie applicative, in quanto, esistono, e saranno aggiunti anche in futuro, molti moduli predefiniti che assistono nelle problematiche della grafica tridimensionale. Applicazioni simili a quella precedente, sono state sviluppate da altre persone, ma sono prevalentemente indirizzate al loro uso in internet. Questo tipo di piattaforme si basano sul formato grafico VRML o, diversamente, su plug- in proprietari: Blaxxun, Superscape, ecc… Tutte queste tecnologie sono oramai diventate obsolete perché non offrono quella qualità grafica che videogiochi come Quake 3 o Unreal ci hanno abituato a considerare. Nel documento [13] viene trattato il problema di generare automaticamente un tour in ambienti tridimensionale presenti su web. Nonostante sia riscontrabile nella Figura 5 una sottostante griglia, e quindi un possibile approccio ad automi cellulari o agenti, nel documento non è riscontrabile nessuna teoria di questo tipo. L’unica trattazione effettuata è riguardo il problema di path pla nning e l’architettura Figura 5: path planning in un ambiente VRML dell’intero sistema basata su VRML. Un interessante articolo è apparso su Wired alcuni anni fa, in cui si cita un lavoro presso i laboratori nazionali di Los Alamos il cui intento è di creare un sistema reale di vita tramite il videogioco Sim City. Lo scopo è di fornire un aiuto ai cittadini e alle autorità competenti durante l’evacuazione della città a causa di 10 inaspettate emergenze come terremoti, attacchi chimici o biologici, incidenti industriali o uragani. La prima città interessata nel progetto sarà Los Angeles ma attualmente, nonostante numerose ricerche effettuate, non si conoscono gli sviluppi che questa applicazione ha avuto negli ultimi anni: l’impressione è che tutto si sia fermato nel 1998, data a cui risale l’ultimo documento disponibile[12]. Nella simulazione, vengono presi in considerazione i trasporti, la distribuzione di energia elettrica, il tempo climatico, le infrastrutture, la distribuzione di acqua, l’ecosistema, la geografia e la Figura 6: una vista di Sim City. demografia. Riguardo questi elementi vi è un’ampia descrizione delle risorse a disposizioni degli stessi laboratori. Il sistema urbano da essi realizzato è composto da vari altri sotto-sistemi che comprendono analisi delle comunicazioni, della distribuzione di cibo, di aree economiche e zone geologiche. Alcuni moduli di cui è costituito l’intero sistema sono: § RAMS (Regional Atmospheric Modeling System); § HOTMAC (Higher Order Turbolence Model for Atmospheric Circulation); § SWMM (Storm Water Managment Model); § RUNOFF (per la diffusione di sostanze chimiche in aree urbane); § WASP (Water Qualità Analysis Simulation Program); § TOXI5 e EUTRO5 (per i calcoli della dissolvenza di sedimenti nel terreno); § DYNHYD (per la simulazione idrodinamica dell’acqua); § EIP (Electrical Power Infrastructure); § HAZUS (programma per la Federal Emergency Management Administration); § CaISO (database dei terremoti). Lungo la descrizione di questi elementi, e degli enti con cui collaborano, vi anche una dimostrazione di come i vari componenti comunicano tra loro e di come vengono visualizzati i corrispondenti risultati. Il progetto più aderente a quello che è stato realizzato si trova nell’articolo [14] in cui si descrive l’importanza di considerare la presenza di un leader nelle simulazioni di evacuazione. Questo componente può essere identificato in un poliziotto, una guardia, un uscere o più realisticamente come una qualunque persona che in tali situazioni ha un potere attrattivo, verso gli altri, maggiore della norma. Gli esperimenti sono stati condotti nel contesto di un allarme antincendio con venti avatar eventualmente comandati attraverso internet. Una simulazione svolta in questo modo, non consente, a mio parere, di rispecchiare quello stato d’animo in cui si trova normalmente una persona allarmata, in quanto, l’utente a distanza, può trovarsi comodamente adagiato sulla poltrona del suo ufficio. 11 Due tipologie sperimentali sono state svolte: la prima in cui veniva impartito di seguire una determinata direzione, la seconda in cui e stato chiesto di seguire una persona. Dopo alcuni raffinamenti è stato possibile verificare l’efficacia del secondo metodo rispetto al primo. Tali risultati sono visibili nel diagramma riportato in Figura 7. Per tale simulazione è stato utilizzato lo strumento FlatWalk che controlla simultaneamente venti e più agenti ed è basato sul linguaggio Q, molto simile al LISP. Anche in questo caso la simulazione viene svolta solo bidimensionalmente e solo successivamente rappresentata in un ambiente tridimensionale attraverso FreeWalk. Quest’ultimo permette di Figura 7: risultati dei due metodi stabilire comunicazioni tra avatar sia in sperimentali. modo visivo che verbalmente. Figura 8: simulazione con FlatWalk ( a sinistra) e con FreeWalk (a destra). Molte altre letture sono state effettuate riguardo teorie e implementazioni di agenti negli ambienti tridimensionali urbani [15,16,17,18,19,28,29,30], di comportamenti artificiali [25,27], nella generazione e visualizzazione di attività pedestri [20,21,31,32], riguardo problemi di ottimizzazione e localizzazione [22,23,24] e altri ancora per le situazioni di emergenze [26] La loro trattazione è molto lunga e a volte laterale rispetto le argomentazioni trattate in questa relazione, ma hanno comunque supportato ed integrato le scelte teoriche e implementative di questo progetto. 12 3. Una proposta basata su paradigma ad agenti Nell’articolo di S.Bandini, S.Manzoni e G.Vizzari [1] viene descritto un approccio MAS (Multi Agent Systems) basato sul modello SCA (Situated Cellular Agents) [3] adatto alla modellazione di folle. Questo ultimo è un tipo speciale di MMASS (Multilayered Multi Agent Situated System) che fornisce una rappresentazione esplicita delle strutture spaziali e dei diversi strumenti di interazione tra agenti. Gli agenti eterogenei possono essere ottenuti dalla definizione di vari tipi di agenti, specificando diversi comportamenti e capacità percettive. Questo modello è radicato su alcuni principi fondamentali di Automi Cellulari (ad es., la definizione di geometrie adiacenti), ma prende anche in considerazione l’autonomia delle singole entità , con la loro propria architettura interna. Una situazione di emergenza può alterare il comportamento degli individui in modo davvero drastico: ad esempio, in genere le persone escono dai locali dalla porta da cui sono soliti entrare, non dalla parte più stretta o affollata. Vari modelli di successo per dinamiche pedonali nel continuo sono basati su un criterio analitico. Un importante esempio sono i modelli di forza sociale, in cui gli individui sono trattati come particelle soggette a forze. Altri modelli analitici prendono spunto dalle forze fluido dinamiche e magnetiche per la rappresentazione dei flussi pedonali. Un criterio diverso per le creazioni di individui fornisce la scelta di Automi Cellulari (CA), con una discreta rappresentazione spaziale dell’ambiente e discreti indici temporali. Le regole di transizione devono essere stabilite per indicare l’evoluzione dello stato di ciascuna cella; esse sono basate sul concetto di vicinato di una cella, una precisa sequenza di celle il cui stato sarà considerato nel calcolo della propria regola di transizione. Le interazioni locali tra celle possono rappresentare il moto di un individuo nello spazio e l’applicazione sequenziale di questa regola nello spazio cellulare totale può portare a comportamenti emergenti e collettivi, ad esempio formazione di una coda e configurazioni per l’evacuazione . Nonostante il criterio basato su Agenti Cellulari (CA) sia in generale meglio compreso dagli esperti rispetto ai modelli analitici, entrambi questi criteri possiedono in comune il limite di considerare gli individui come ent ità omogenee e in genere non forniscono elementi di flessibilità e dinamismo, come i cambiamenti di comportamento delle persone. Ciò può non essere un problema per le simulazioni su larga scala, in cui un certo grado di approssimazione è inevitabile e spesso contrastato dalla scelta di un criterio casuale, tuttavia in altre simulazioni può essere rilevante valutare questo tipo di informazione. Ad esempio, la valutazione della collocazione della segnaletica dipende da diversi fattori legati alla loro efficacia e quindi alla loro visibilità. Quest’ultima dipende fortemente dal comportamento degli individui che si muovono attraverso l’ambiente, dai loro obiettivi e destinazioni, ma anche dalla loro capacità percettiva. Questi fattori sono fondamentali nella scelta della direzione da prendere; pertanto, includere questi concetti in un Automa Cellulare (CA) richiederebbe un eccessivo numero di regole, uno stato cellulare molto ampio e probabilmente l’estensione del concetto di vicinato per la simulazione delle interazioni a distanza. 13 3.1. Modellazione Il modello SCA (Situated Cellular Agents) fornisce una chiara rappresentazione (anche irregolare) delle strutture spaziali e diversi strumenti di interazione agente: reazioni sincrone tra agenti adiacenti e interazioni a distanza asincrone attraverso un meccanismo di emissione-diffusione-percezione. Si possono ottenere agenti eterogenei attraverso la definizione di vari tipi agenti che stabiliscono diversi comportamenti e capacità percettive. Queste ultime forniscono un meccanismo per filtrare le informazioni in entrata attraverso la definizione di recettività e sensibilità dei diversi tipi di campo. Un sistema SCA si definisce formalmente con una tripla : Space, F , A dove A e F sono insiemi finiti che comprendono rispettivamente gli agenti e i campi, e Space è l’ambiente su unico livello in cui gli agenti sono situati, agiscono in autonomia ed interagiscono. E’ possibile definire diversi tipi di agente, introducendo la possibilità di stabilire diverse abilità e capacità percettive. Definendo T come l’insieme dei tipi, è appropriato suddividere l’insieme degli agenti in sottoinsiemi disgiunti in corrispondenza ai diversi tipi. L’insieme degli agenti può perciò essere definito come segue: A = Uτ ∈T A dove Aτ i ∩ Aτ j per τ i ≠ τ j . Un agente di tipo τ è definito dalla tripla: Στ , Perceptionτ , Actionτ Dove: Στ Definisce il set degli stati possibili, [ ] [ Perceptionτ : Στ → N × W f 1 K N × W f F ] è la funzione che associa ad ogni agente un vettore di coppie: ((c (s ),t (s )), (c (s ), t (s ))K(c 1 τ 1 τ 2 τ 2 τ F τ )) (s ), tτF (s ) in cui per ogni coppia i, cτi ( s ) e tτi (s ) esprimono rispettivamente un coefficiente da applicare al campo in input e la soglia di sensibilità al campo nello stato s. In questo modo, gli agenti localizzati alla stessa distanza dall’agente che emette un campo, possono avere diverse capacità di percepire tale campo. Actionτ indica l’insieme delle azioni che l’agente di tipo τ può rappresentare. 14 Space consiste di un insieme P di siti disposti in una rete (ad es., un grafo indiretto di siti). Ogni sito p ∈ P può contenere al massimo un agente ed è definito da a p , Fp , Pp dove a p ∈ A ∪ {⊥ } è l’agente situato in p (a p =⊥) quando p è vuoto; Fp ⊆ F è l’insieme dei campi attivi in p ( Fp = ø ) quando nessun campo è attivo in p ); e Pp ⊂ P è l’insieme dei siti adiacenti a p . Un campo f τ ∈ F che può essere emesso da agenti di tipo τ è indicato da: W f , Diffusion f , Compare f , Compose f Dove: denota il set dei valori che il campo può assumere nella sua diffusione nello spazio Wf { }+ Diffusion f : P × W f × P → W f è la funzione di distribuzione del campo su di un certo sito e tiene conto dell’origine del campo e della sua intensità all’origine. Il valore può non essere unico, dato che tra l’origine e il sito valutato vi possono essere più di un cammino, e possono essere di lunghezza diversa. ( )+ → W f esprime come i campi si compongono ( se dello stesso tipo) per ottenere un unico campo . Compose f : W f Compare f : W f × W f → {True, False} è la funzione che compara il valore di un campo in un punto con la soglia di sensibilità per verificare se un agente percepisce il campo. Lo spazio di ogni SCA è popolato da un set di individui chiamati agenti . Ogni agente a ∈ A è definito dalla tripla: s , p,τ Dove s ∈ Στ denota lo stato dell’agente e può assumere uno dei valori previsti per il tipo, p ∈ P è il sito dello spazio dove l’agente è situato τ è il tipo dell’agente, e specifica il set di stati che può assumere, una funzione che esprima la sensibilità ai campi e il set di azioni che un agente può compiere. Una posizione p ∈ P viene descritta nella maniera seguente: p = a , F p , Pp 15 Dove Fp è il set dei campi attivi in p e Pp è il set dei siti adiacenti a p. denota un set di azioni che l’agente a di tipo τ può compiere. Esse possono essere: Actionsτ -trigger: determina come la percezione del campo crei nell’agente una transizione di stato. -transpor: determina lo spostamento dell’agente in base al campo percepito. -emit: determina l’emissione del campo da parte dell’agente in maniera asincrona. -reaction: simile alla precedente ma relativa ad un altro agente particolare e dunque sincrona. Gli agenti interessati devono essere contigui. L’Automa Cellulare può essere visto come un tipo di Sistema Multi Agente (MAS), in cui la struttura spaziale dell’ambiente agente è precisa e strutturata su di una griglia, gli agenti sono immobili, omogenei e compatti (ciascuna cella del CA è identica e comprende la rappresentazione dell’agente) e il loro comportamento è sincrono. Questo non è il caso generale dei modelli basati sul MAS, dato che gli agenti eterogenei e asincroni potrebbero convivere nello stesso ambiente anche non strutturato. Un MAS consiste di un numero di agenti definiti a seconda del loro comportamento e dei parametri caratteristici e sono localizzati in un ambiente che rende possibili le loro interazioni. Il comportamento di un MAS è descritto come l’insieme degli effetti globali delle interazioni locali tra agenti autonomi che popolano l’ambiente. MABS (Multi Agent Based Simulation) è basato sul concetto che è possibile rappresentare il comportamento globale di un sistema dinamico come il risultato delle interazioni che accadono tra un insieme di agenti con la loro propria autonomia operativa. Il MAS è stato utilizzato per simulare mondi artificiali come pure fenomeni naturali e sociali. Nel MABS gli agenti potrebbero rappresentare animali in ecosistemi, veicoli nel traffico, persone nelle folle o personaggi indipendenti in animazioni e giochi. Nelle applicazioni MABS il sistema di simulazione è basato sugli agenti autonomi e distribuiti. Nonostante il fatto che un’ampia categoria di problemi sia contraddis tinta da proprietà spaziali prestabilite che richiedono il relativo criterio di modellazione dello spazio, difficilmente nei modelli MAS viene presa in considerazione la struttura spaziale dell’ambiente in cui gli agenti sono localizzati. Diversamente i modelli CA offrono un interessante framework per creare e simulare i fenomeni naturali ed artificiali che riguardano lo spazio, a causa della loro definizione e struttura di base e del ruolo preponderante che occupa lo spazio. Il sistema CA è stato impiegato nell’analisi di vari fenomeni urbani (es., simulazione di traffico, urbanizzazione regionale, dinamiche di uso terrestre) che trattano precisamente della relazione spaziale e dell’interazione tra le locazioni. Sono stati ottenuti risultati interessanti attraverso la combinazione di MAS e di CA. Il criterio consiste nel posizionamento di un MAS in uno spazio cellulare ed è stato soprattutto applicato per analizzare le dinamiche del sistema urbano e l’attività pedonale. Nel dominio applicativo scelto, gli individui possono essere creati in qualità di agenti e la struttura spaziale in cui si trovano può venire rappresentata come un 16 grafo di siti. Uno degli elementi fondamentali che caratterizza questo modello è la possibilità di definire gli obiettivi e i comportamenti delle entità create. Un possibile metodo per determinare la tendenza di un agente a muoversi attraverso aree specifiche è la definizione di campi attrattivi e di azioni precise per stabilire una reazione adatta alla loro percezione. Un semplice campo d’attrazione f assume valori in R+, le sue funzioni Compose e Compare sono rispettivamente la somma e la quantità minore della relazione e ∀p ∈ P si ha: ( ) Diffusion f p 0, f p0 , p = { f p0 − dist ( p0 , p ) _ se _ dist ( p 0 , p ) < f p0 0 _ diversamente dove p 0 e f p0 sono rispettivamente il sito in cui il campo è stato emesso e il valore alla sua emissione. Una possibile funzione di percezione per gli agenti sensibili a questo tipo di campo, mappa ogni stato s in c, t , dove c può essere parte dello stato agente (e quindi un possibile valore dinamico) indicando la sua recettività a questo tipo di campo, mentre t è una soglia per filtrare campi a bassa intensità. Dato un agente situato nel sito p, l’insieme di siti vuoti adiacenti dove un campo d’attrazione f è attivo viene descritto da: { Ppf = p ′ ∈ Pp a p′ =⊥ ∧ f ∈ Fp′ } In questo framework, l’indicazione specifica del comportamento per gli agenti che dovrebbero ricercare il sito dove il valore di campo è (localmente) massimo, dovrebbe comprendere un’azione di transport in cui il termine di condizione aggiuntiva è indicato come : condition (q ) = q ∈ Ppf ∧ ∀r ∈ Ppf , f r < f q dove f x indica il valore del campo f in un sito x . Gli agenti potrebbero essere definiti come sorgenti di specifici campi d’attrazione e sensibili solo ai segnali emessi da quello precedente. In questo caso, la condizione aggiuntiva dell’azione di trasporto potrebbe comprendere: condition (q ) = q ∈ Ppf ∧ f l < f q < f h dove f l e f q sono soglie costanti che indicano il minimo e il massimo di intensità di campo auspicabile per quel tipo di agente. Una conseguenza negativa per questa soluzione di modellazione è legata all’elevato numero di tipi di campo che devono essere definiti (almeno uno per ogni agente). Un’altra possibile scelta di modellazione prevede l’inserimento dell’identificatore dell’entità emittente (sorgente di campo) nel valore del campo d’attrazione. Più precisamente, un più flessibile campo d’attrazione potrebbe essere definito come segue: 17 Fh =< Wh , Diffusion h , Compareh , Composeh > con Wh = N × R + . Per ogni wh ∈ W h , wh =< f Id , f In > , dove il primo componente del valore del campo indica l’identificatore della sorgente di campo, mentre l’ultimo rappresenta la sua intensità. Lo stato dell’agente potrebbe essere definito come una coppia s, Sens in cui il primo componente contiene delle altre informazioni interne dell’agente, mentre il secondo è l’insieme delle entità identificatrici i cui campi d’emissione saranno percepiti e valutati. In questo framework, un valore di campo f fId , f In è percepito da un agente snSens , p,τ solo quando il valore di intensità di campo è maggiore della soglia di sensibilità dell’agente e il campo identificatore è contenuto nell’insieme Sens dell’agente. Poiché lo stato dell’agente è dinamico, l’eventualità di includervi l’identificatore della sorgente di campo offre la possibilità di forzare gli agenti a seguire un percorso specifico. A questo scopo, la ricerca del massimo locale di alcuni valori di campo potrebbe essere adeguatamente combinata; le sorgenti di campo statico possono essere introdotti in qualità di way-points e gli agenti possono venire forniti con due tipi di azioni: una per seguire il gradiente di campo e l’altra per spostarsi verso il successivo way-point. 18 4. Descrizione dell’architettura del sistema 4.1. Studio di fattibilità Tre diversi approcci sono stati considerati come possibili soluzioni alla realizzazione di simulazioni con visualizzazione 3D realistica: Ø Lo sviluppo completo dell’intero sistema, comprendente una parte dedicata alla simulazione vera e propria ed un’altra relativa all’interfaccia utente. Ø Lo sviluppo di un sistema di visualizzazione 3D, di un’applicazione di simulazione e l’integrazione dei due moduli. Ø L’interfacciamento di un sistema di simulazione ad un’applicativo esistente per la visualizzazione dei risultati della simulazione. Per ognuna di queste possibilità sono stati valutati i seguenti aspetti: Ø Ø Ø Ø Ø Strumenti di sviluppo Prerequisiti didattici. Complessità d’implementazione. Qualità dei risultati. Supporto e possibilità d’importazione/esportazione di altri formati. Per lo sviluppo integrale dell’intero sistema si sono considerati i seguenti linguaggi di programmazione grafica: DirectX e OpenGL. Pur essendo la seconda maggiormente performante, entrambe le soluzioni offrono un’elevata integrazione con i più comuni linguaggi di programmazione ma rendono necessaria l’implementazione di un motore grafico 3D. Solo questo elemento richiede una completa conoscenza del linguaggio; a ciò vi è da aggiungere la complessità nel creare sensori e comportamenti, di gestire le collisioni e implementare le regole fisiche che governano la scena. Esiste la possibilità di sfruttare motori grafici esistenti ed a uso pubblico (un esempio è quello di Quake), ma anche in questo caso si richiede un’elevata conoscenza tecnica dell’intero sistema, a volte molto poco documentata. Il vantaggio fondamentale dei linguaggi di programmazione grafica è quello di ottenere una visualizzazione real-time, ma, d’altra parte, un progetto anche lievemente spurio causa scarsa portabilità e instabilità. Nel complesso sono molto elevati i requisiti ed è difficile realizzare un progetto completo in breve tempo. La seconda e la terza possibilità hanno vagliato l’ipotesi di utilizzare le seguenti piattaforme grafiche: Poser, 3DS Max, Maya, VegaPrime. La prima opzione è stata scartata rapidamente per le difficoltà riscontrate sin dall’inizio nell’uso dello stesso strumento: interfaccia poco usabile e difficoltà di ottenere documentazione ufficiale, in quanto la piattaforma è open source e molti hanno modificato le sue funzionalità senza fornire adeguati riferimenti. VegaPrime è un ibrido tra un sistema a tempo-reale e una piattaforma di sviluppo grafico: l’integrazione verso l’esterno avviene tramite un linguaggio proprietario, supportato da alcuni strumenti di sviluppo visuali. Nel complesso però è sembrato piuttosto artificioso 19 nella creazione di nuove funzionalità come sensori e comportamenti. Anche i risultati grafici che si possono ottenere non sono sicuramente comparabili a prodotti come Maya e 3DS Max. Proprio questi ultimi hanno riscontrato la maggiore attenzione: forniscono l’interfacciamento attraverso linguaggi proprietari, ma anche standard, consentendo in questo modo una maggiore flessibilità di sviluppo degli aspetti legati agli agenti, ai sensori e ai comportamenti, consentono un realismo molto avanzato, dispongono di una vasta documentazione e assicurano affidabilità. La differenza tra i due gruppi distinti precedentemente riguarda il rapporto che si stabilisce tra le capacità di visualizzare una scena in real-time e la complessità di calcolo necessaria per effettuare una simulazione a scopi professionali. Più precisamente, è improbabile riuscire ad implementare un sistema in tempo reale in cui sia possibile calcolare tutti gli aspetti necessari ad una simulazione con requisiti sofisticati. Tale onere computazionale è, infatti, sostenibile solo con piattaforme grafiche in cui è possibile eseguire i calcoli e visualizzarne i risultati in tempi differenti. Oltre a ciò è possibile configurare in modo più rapido la qualità visiva desiderata, fornendo, in questo modo, una maggiore scalabilità del rapporto qualità / rapidità di risoluzione. A seguito delle valutazioni precedentemente descritte si è scelto di utilizzare 3DS Max che, attraverso plug- in come Character Studio e Pysique, fornisce le seguenti caratteristiche: Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Indipendenza tra librerie grafiche DirectX e OpenGL. Linguaggi di sviluppo orientati agli oggetti: C++ e MaxScript. Visualizzazioni off- line. Creazione di ambientazioni realistiche e di forme umane rapidi ed efficaci. Possibilità di implementare nuovi sensori o parametrizzare quelli predefiniti. Gestione della dinamica fisica automatica e modificabile. Gestione delle collisioni configurabile. Possibilità di implementare nuovi comportamenti e parametrizzare quelli predefiniti. Possibilità di integrazione col paradigma ad agenti. Rendering avanzato della scena e delle dinamiche in essa contenute. Stabilità ed estendibilità del prodotto. Supporto didattico vasto e completo. Formati grafici standard con possibilità di esportare/importare nei più diffusi formati. Con questi strumenti a disposizione è stato creato uno script che con un migliaio di linee di codice è in grado di: Ø Importare attraverso un parser i dati riguardanti lo spazio e le dinamiche di una applicazione esterna. Ø Creare una semplice rappresentazione 3D della scena in modo completamente automatizzato. Ø Creare una rappresentazione dei nodi importati e dei percorsi effettuati dagli agenti. Ø Creare gli agenti in qualità di avatar con movimenti altamente realistici. 20 Ø Gestire le collisioni in modo avanzato e automatico. Ø Utilizzare un motore grafico performante che supporta sia DirectX che OpenGL. Ø Utilizzare comportamenti parametrizzabili che consentono di definire diversi tipi di simulazioni. Ø Risolvere la simulazione vedendo immediatamente i risultati ottenuti. 21 4.2. Progettazione Il sistema completo è composto fondamentalmente da tre elementi principali: l’applicazione bidimensionale, il supporto per la condivisione dei dati, l’applicazione tridimensionale. Applicazione 2D File ASCII Applicazione 3D Figura 9: schema ad alto livello dell’intero sistema. Applicazione bidimensionale: si tratta di una libreria che permette di simulare un considerevole numero di agenti anche durante particolari situazioni di emergenza. La libreria creata utilizza una piattaforma, implementata precedentemente, per le simulazioni basate su modello MMASS (Multilayered Multi Agent Situated System). La libreria è costituita da un insieme di moduli(le locazioni e il grafo, lo spazio, la diffusione, gli agenti, i campi e il MasManager che rappresenta il gestore del sistema multiagente) costruiti concettualmente uno sopra all’altro e alla cui sommità vengono posizionate le simulazioni. Oltre ai moduli fondamentali, atti a implementare il MMASS, sono inclusi nella libreria alcuni servizi utili, quali l’editor per lo spazio (consente di costruire delle strutture spaziali generiche tramite un’interfaccia grafica) e il viewer (utile per visualizzare lo spazio, gli agenti e i campi durante la simulazione). Supporto per la condivisione dei dati: si tratta di un file ASCII contenente i dati riguardanti ogni agente presente nell’applicazione bidimensionale. Per ognuno di essi è presente la descrizione analitica della sua configurazione iniziale e di ogni evoluzione nello spazio e nel tempo. Queste informazioni sono lette dall’applicazione tridimensionale realizzata attraverso un parsing del file in ingresso. Una descrizione esauriente viene fatta successivamente nel paragrafo 4.4 di questo stesso capitolo. Applicazione tridimensionale: sviluppata attraverso il linguaggio di scripting disponibile in 3DS Max è composta da vari moduli di origine prevalentemente grafica. I dati provenienti dal supporto per la condivisione dei dati vengono tradotti e memorizzati in una struttura dati per essere maggiormente accessibili. Attraverso varie funzioni e passaggi, di seguito descritti in dettaglio, viene creata una scena composta da agenti nell’aspetto di umanoidi (Biped) e da un rappresentante per ognuno di loro sotto forma di piramide (Delegate), da percorsi creati tramite linee spline formate dai nodi importati, da un oggetto crowd che raggruppa gli agenti, da un piano aggiuntivo per una migliore rappresentazione dell’ambiente in cui si svolge la simulazione e un’ambientazione delle strutture architettoniche generate automaticamente. Node: è una forma circolare che rappresenta il nodo importato tramite la fase di parsing. Node Spline Input Data Parsing Plane Delegate Crowd Figura 10: schema della fase iniziale di creazione della scena. Spline: è una curva definita tramite due o più nodi. Il livello di segmentazione e quindi anche di curvatura è definito tramite il suo coefficiente di interpolazione. Plane: è una superficie piana che indica lo spazio cartesiano su cui si svolge la simulazione. Delegate: è uno strumento ausiliario a forma piramidale usato nelle animazioni di folle. La punta della piramide indica la direzione del movimento. Può essere associato ad un biped o a qualsiasi altro elemento che si voglia animare. Tramite l’accesso ai suoi attributi è possibile impostare la velocità, l’accelerazione e la decelerazione massima, gli angoli massimi di rotazione, visualizzare le forze agenti su di esso come vettori ed altri parametri. Team: è una struttura astratta che consente di raggruppare infiniti Delegate. Crowd: è uno strumento ausiliario che controlla uno o più Delegate. Tramite questo oggetto è possibile creare infiniti team ed associarli ai Behavior creati. Biped: è una figura umanoide che rappresenta, nel nostro caso, un agente. Si tratta di una collezione di forme geometriche con particolari vincoli secondo una gerarchia predefinita. Hanno caratteristiche avanzate per quello che riguarda i movimenti complessivi del corpo ma anche del singolo elemento. Attraverso lo strumento Physique che realizza le forze agenti nel mondo reale, come la forza di gravità, si ottengono simulazioni molto realistiche. Come per ogni altro oggetto inoltre, è possibile una personalizzazione visiva del personaggio attraverso texture e skin, ma poiché tali caratteristiche implicano un costo computazionale elevato, non saranno utilizzate in questa dimostrazione. Trasformation Controller: viene anche detto “body controller” perché consente di modificare la posizione e la rotazione dell’intero biped o, a scelta, solo uno dei componenti appartenenti alla sua gerarchia operando sulle matrici di rototraslazione di ogni vertice. Viene applicato al bacino che rappresenta la radice della gerarchia di tutte le parti del corpo. 23 Delegate 1 1 Biped 1 Team 1 N N N Trasformation Controller Behavior N Crowd 1 1 Motion Flow 1 Cognitive Controller 1 N Clip Figura 11: schema delle associazioni tra i componenti costituenti un delegate MotionFlow: è un grafo composto da una o più Clip in relazione tra loro tramite una serie di transizioni. Tale schema permette di specificare quale Clip possa essere utilizzata durante la simulazione, con quale probabilità e in quale momento. Viene reso possibile decidere quali direzioni e gesti possano essere svolti dall’agente a partire dallo stato precedente in cui si trovava. Clip: singolo elemento costituente un grafo MotionFlow. Ad ogni Clip viene associato un file esterno che contiene i dati relativi ad una particolare sequenza di movimento. Behavior: è il comportamento assegnato al team. Esistono una decina di comportamenti prestabiliti e parametrizzabili ma vi è la possibilità di definirne di nuovi tramite script. Ad ogni delegate è possibile associare infiniti comportamenti con diverse priorità tra loro. Cognitive Controller: è un grafo costituito da stati e transizioni. Ogni stato contiene uno script che consente di costruire istruzioni condizionali per le simulazioni dinamiche dipendenti dalla situazione. Ogni oggetto Crowd può avere un unico controllo cognitivo. Se un Biped ha finito di seguire il proprio percorso è possibile decidere, ad esempio, se farlo fermare o farlo sedere. 24 4.2.1. Procedura L’applicazione che esegue la simulazione nel piano bidimensionale, crea inizialmente un file di testo contenente la configurazione iniziale: per ogni agente coinvolto, identificato tramite una numerazione univoca, viene descritta la posizione del nodo in cui si trova in termini di coordinate cartesiane. Essendo la situazione ancora statica, ognuno di essi avrà un indice temporale uguale a uno; tale informazione, viene aggiunta alle precedenti. Ad ogni iterazione, comandata secondo le regole locali dell’applicazione, fino al termine dell’evoluzione, viene aggiunto al file un nuovo record contenente le informazioni precedentemente descritte, aggiornate e con l’indice temporale incrementato ad ogni ciclo. Ogni record contiene un ulteriore campo: un coefficiente moltiplicativo. Questo ultimo permette di rappresentare nell’ambiente tridimensionale una distanza elevata tra due nodi senza varia rne la rappresentazione nell’applicazione originaria. Una volta completata la scrittura del file è possibile ricreare all’interno di 3DS Max un’ambientazione molto più realistica ed importare i dati molto semplicemente. Una funzione infatti ne legge il contenuto separando i singoli record e campi. La memorizzazione viene effettuata in un array bidimensionale che ha come indici il valore identificativo dell’agente e quello temporale. Ogni cella contiene le coordinate cartesiane rivalutate secondo il relativo coefficiente moltiplicativo. A questo punto è possibile creare la scena visualizzando il piano di lavoro calcolato trovando le coordinate di valore maggiore per ogni direzione, i cerchi che rappresentano ogni nodo importato, le spline che costituiscono i percorsi di ogni agente lungo l’asse temporale, i delegate con i rispettivi Biped e l’oggetto Crowd. Durante tale fase, percepibile dall’utente solo attraverso una barra di progressione, viene creato un unico strumento ausiliario Crowd, vengono realizzati tanti Delegate quanti memorizzati nell’array e associati ad un unico oggetto Biped. Per ogni Delegate si crea/associa un nuovo Trasformation Controller che consente la creazione di un grafo MotionFlow, a sua volta costituito da un set predefinito di Clip che caricano i corrispondenti file esterni. Ogni Delegate viene assegnato ad un unico Team a cui vengono attribuiti i Behavior necessari. In questa applicazione verranno utilizzati solo i seguenti comportamenti: § Segui percorso formato dalla rispettiva spline. § Evita collisioni con gli altri agenti e gli oggetti della scena. § Trova obbiettivo. Successivamente il Team costituito viene a far parte di Crowd a cui è possibile legare un Cognitive Controller. Tale elemento, congiuntamente al MotionFlow, rende possibile la scelta delle azioni da intraprendere da parte dell’agente durante la simulazione. A questo punto è sufficiente premere un tasto per ottenere una prima risoluzione della simulazione. Ogni elemento descritto è altamente parametrizzabile ed estendibile; ciò consente di ottenere, a partire da un unico set di informazioni iniziali, diverse tipologie di simulazioni. Se ad esempio si aggiungono Clip per i movimenti durante la corsa e si realizzano adeguatamente i corrispondenti MotionFlow e Cognitive Controller è possibile simulare situazioni di emergenza. Aggiungendo e creando nuovi Behavior si otterranno risultati rispecchianti in modo più fedele la realtà. Anche controllando i valori dei parametri a disposizione e che realizzano dei sensori è possibile ottenere risultati molto differenti tra loro. 25 4.2.2. Scenari possibili Poiché l’intero sistema è composto da vari elementi e funzionalità che possono essere prese in considerazione, sono stati definiti tre fondamentali scenari possibili per la computazione. Tale distinzione non è categorica e può essere modificata inserendo nuovi aspetti non ancora definiti. ESATTA Configurazione iniziale 2D Rappresentazione bidimensionale dello stato complessivo iniziale. Gestione percorso 2D Viene calcolato attraverso la emissione-diffusionepercezione di campi e crea un file con la descrizione analitica di ogni passo del percorso. Gestione collisioni 2D Attraverso l’emissione di campi repulsori o di un layer statiche aggiuntivo indicante i siti percorribili. Gestione collisioni 2D Attraverso la presenza di un unico agente in ogni sito. dinamiche Comportamento 2D Traverso le specifiche di intra-actions e inter-actions agents. Configurazione finale 2D Rappresentazione bidimensionale dello stato complessivo finale. Tabella 1: rappresentazione “Esatta” delle funzionalità nel 2D e nel 3D. In questo tipo di scenario, ogni aspetto viene calcolato bidimensionalmente e l’applicazione 3D ha la funzione di creare solamente una rappresentazione grafica tridimensionale dei risultati ottenuti. APPROSSIMATA Configurazione iniziale 2D Gestione percorso 2D 3D Gestione collisioni 2D statiche Gestione collisioni 3D dinamiche Comportamento 2D 3D Configurazione finale 3D Rappresentazione bidimensionale dello stato complessivo iniziale. Viene calcolato attraverso la emissione-diffusionepercezione di campi e crea un file con la descrizione analitica di ogni target del percorso gestito poi da script e motion flow. Attraverso l’emissione di campi repulsori o di un layer aggiuntivo indicante i siti percorribili. Viene calcolato attraverso tool integrati preesistenti ma parametrizzabili. Attraverso intra-actions e inter-actions agents viene creato un file con la descrizione analitica della sequenza e viene gestito poi da script, motion flow e controller cognitivi. Rappresentazione tridimensionale dello stato finale. Tabella 2: rappresentazione “Approssimata” delle funzionalità nel 2D e nel 3D. Questo tipo di separazione delle funzionalità svolte nell’ambiente 2D e in quello 3D, consente una spartizione dei costi computazionali, permette di ottenere una rappresentazione grafica tridimensionale adeguata mantenendo la parte più rigorosa del dinamismo presente nell’applicazione bidimensio nale. 26 SEPARATA Configurazione iniziale 3D Gestione percorso 3D Gestione collisioni 3D statiche Gestione collisioni 3D dinamiche Comportamento 3D Configurazione finale 3D Viene proposta una configurazione specifica o una random. Viene calcolato attraverso script, motion flow e controller cognitivi. Viene calcolato attraverso tool integrati preesistenti ma altamente parametrizzabili. Viene calcolato attraverso tool integrati preesistenti ma altamente parametrizzabili. Viene calcolato attraverso behaviour script e controller cognitivi. Rappresentazione tridimensionale dello stato complessivo finale con annessi risultati analitici. Tabella 3: rappresentazione “Separata” delle funzionalità nel 2D e nel 3D. Quest’ultima soluzione proposta rappresenta la delega di ogni aspetto e funzionalità all’ambiente di sviluppo tridimensionale. Ciò comporta sicuramente notevoli difficoltà implementative e può essere considerato come obbiettivo finale per la creazione di una piattaforma a scopo commerciale. Nella realizzazione di questo progetto, è stato possibile ricreare le condizioni per ottenere un tipo di scenario “esatto”, ma anche “approssimato”. Tale distinzione può essere effettuata attraverso il tool creato, semplicemente scegliendo l’opzione di utilizzo esclusivo dei Delegate o diversamente in modo congiunto con l’integrazione tra Delegate e Biped. Solo applicando un avatar ad ogni rappresentante, infatti, è possibile aggiungere la gestione delle collisioni statiche e di quelle dinamiche. In questo modo si hanno ripercussioni anche sui percorsi effettivamente compiuti e nei comportamenti intrapresi dagli agenti. 27 4.3. Teorie e strumenti utilizzati 4.3.1. Paradigma ad agenti Nonostante le potenti funzionalità disponibili in 3DS Max per la realizzazione di rappresentazioni realisticamente adeguate per quanto riguarda la fisica del mondo che ci circonda e di cui ne siamo parte, ci sono aspetti così complessi che ci coinvolgono che restano difficilmente proiettabili in un ambiente grafico. Le informazioni che percepiamo con i nostri sensi, quelle insite negli oggetti, nelle persone e nell’ambiente sono sfumature essenziali del nostro essere così come la nostra memoria e la nostra capacità di apprendere. Per poter ottenere risultati apprezzabili in una simulazione è tassativo prendere in considerazione tali aspetti. Una possibile discretizzazione del nostro mondo è stata realizzata attraverso i modelli basati su paradigma ad agenti. Esiste una vasta letteratura riguardo agli agenti, la loro definizione, la loro implementazione, e le possibilità d’impiego. Ovviamente non vi è accordo assoluto su quali siano i diversi requisiti perché una certa entità software possa essere definita “agente”: esistono definizioni più rigide che prevedono totale autonomia di movimento, percezione, decisione e azione sul mondo, mentre altre definizioni più transigenti definiscono come agenti anche entità che godono solo di alcune di queste proprietà in modo integrale. In un articolo [33], Stan Franklin e Art Graesser introducono una tassonomia di agenti e citano diverse definizioni possibili, sottolineando che spesso esse sono il frutto di osservazioni su specifiche implementazioni, e che quindi ne riflettono le peculiarità e le limitazioni. “Un agente è qualunque cosa che percepisca il proprio ambiente attraverso sensori ed agisca su di esso attraverso effettori“ [7]. Questa definizione dipende pesantemente da cosa si intenda con ambiente, sensori ed effettori: per giungere ad una separazione tra agenti e programmi si dovranno restringere le suddette nozioni. “Agenti autonomi sono sistemi computazionali Figura 12: rappresentazione di un agente. che abitano un ambiente dinamico e complesso, percepiscono e agiscono autonomamente in questo ambiente e facendo ciò realizzano una serie di scopi o compiti per cui sono disegnati” [35]. Si aggiunge un punto cruciale, l’aspetto della realizzazione di un compito. Inoltre gli ambienti devono essere complessi e dinamici. “Il termine agente è usato per rappresentare due concetti ortogonali. Il primo è l’abilità dell’agente di eseguire compiti autonomamente, il secondo è la capacità di eseguire ragionamenti orientati al dominio dell’agente stesso.”. L’esecuzione 28 autonoma è chiaramente il punto focale, e gli altri concetti sono ad esso subordinati. Franklin e Graesser elaborano a loro volta una definizione di agente: “un agente autonomo è un sistema situato dentro un ambiente ma separato da esso che percepisce il suddetto ambiente e agisce su di esso, nel tempo, per raggiungere scopi propri, e compiendo azioni che percepirà in futuro”. Il punto chiave che permette di separare agenti da programmi semplici (dato che tutti gli agenti software sono programmi, ma non tutti i programmi sono agenti) è la parte finale, secondo cui un vero agente deve avere un feedback delle proprie azioni, cosa che non accade nei semplici programmi, a meno di estendere forzosamente l’ambiente sino a includere l’utente. Vengono individuate quindi alcune classi di agenti, classi che però sono suscettibili di modifica, rimozione o aggiunta, dato che la classificazione è dichiaratamente non univoca. Le definizioni riportate non sono mutuamente esclusive, e si possono in gran parte combinare per creare agenti con particolari proprietà. Proprietà Reattivo Altri nomi Percettivo e attivo Autonomo Pro-attivo Goal oriented, Con scopo Temporalmente continuo Comunicativo Sociale Learning Adattivo Mobile Personaggio credibile Flessibile Significato Risponde in tempo reale ai cambiamenti dell’ambiente Esercita controllo sulle proprie azioni Non agisce solo in reazione all’ambiente È’ un processo che esiste in un tempo continuo o in una buona approssimazione di esso Comunica con altri agenti, ed eventualmente con persone. Modifica il proprio comportamento in base all’esperienza In grado di passare da una macchina all’altra. Con personalità, stati emotivi. Le azioni non fanno parte di uno script Tabella 4: distinzione di classi di agente. Chiaramente tutti queste proprietà e queste definizioni non possono essere facilmente soddisfatte contemporaneamente, e andrà quindi scelto un sottoinsieme appropriato alle necessità e al dominio in esame. Si potrebbe considerare che un agente non flessibile (che agisce su script) non può essere autonomo. D’altra parte un agente potrebbe coordinare autonomamente diversi script di basso livello in comportamenti complessi ed intelligenti. Di nuovo le possibilità interpretative sono ampie. 29 E’ evidente che partendo da cosa è necessario, e non da un’idea precostituita di agente che si deve di volta in volta adeguare, è più semplice dividere cosa si può considerare agente da quello che non lo è. Daniel Thalmann [8,36] introduce vari criteri tassonomici per classificare gli agenti per categorie, sotto diversi punti di vista. Inizialmente viene definito [36] un set di caratteristiche minime per la simulazione di agenti dal comportamento umanoide: § Percezione: attraverso sensori virtuali l'agente percepisce il mondo che lo circonda al fine di ottenere informazioni e compiere azioni guidate dal feedback sensoriale. § Emozione: le azioni sono originate da uno stato d'animo, e a loro volta le emozioni sono generate da eventi esterni, esiti di azioni, percezioni.. Si può pensare, in termini più “meccanicistici” di stato interno. § Comportamento: il comportamento ha una natura gerarchica, ovvero esistono macro-comportamenti di alto livello e poi via via di livello più basso. Essi sono la risposta verso l'ambiente del complesso percezione/emozione. § Azione: Il comportamento è solo la delibera di azioni, che sono determinate quindi da percezione emozione, comportamento, in cascata. Il risultato è vagliato dalla percezione e può portare ad un feedback nell'agente. In aggiunta a tutto questo vi è un altro parametro fondamentale: § Memoria: Interviene insieme agli altri parametri ed influenza il risultato finale. Non è posta eccessiva enfasi su questa parte, tuttavia. In [8] si sottolinea che in particolari situazioni intervengono parametri aggiuntivi altrimenti poco rilevanti (in caso di simulazione di incendio la capacità respiratoria in costante diminuzione) o alcuni parametri emotivi vengono fortemente esaltati (situazioni di panico totale, annullamento della volontà..) La necessità di agenti autonomi nasce dall'osservazione che essi, in molti campi reali, semplificherebbero molto il compito dell'utilizzatore umano, e aumenterebbero la qualità del prodotto finale: basti pensare all'animazione di folle in sequenze CGI (Computer Generated Images) da inserire in un film, se il loro comportamento fosse auto determinato attraverso regole semplici e comportamenti emergenti complessi, si otterrebbe il doppio vantaggio di un risultato più plausibile dell'animazione “a mano” raggiunto con minor sforzo. 30 Thalmann [36] riconosce tre livelli di autonomia: § Agenti Guidati: seguono uno script in modo abbastanza rigido. § Agenti Programmati: gestiscono script o macro-azioni predefinite seguendo gli eventi. § Agenti Autonomi: il più possibile indipendenti, tendono ad usare memoria ed analisi semantica per raggiungere lo scopo. Livello di autonomia L'agente si sposta verso una degli agenti: locazione determinata Guidato Necessitano di una serie di punti liberi da collisione attraverso i quali spostarsi Programmato Autonomo L'agente compie un'azione Necessita di informazioni comp lete su cosa, quando e come agire. Path più o meno fisso, Gestisce le azioni con programmati per gestire le una certa autonomia collisioni all'interno di una gamma stabilita. Usa percezione e memoria per Decide quando raggiungere l'obbiettivo scegliendo compiere azioni, e la il path autonomamente modalità è guidata in parte dalla programmazione, in parte dalla memoria. Tabella 5: livelli di autonomia di un agente. I paradigmi proposti non sono da intendere come rigidi in maniera assoluta, si possono unire elementi diversi, come agenti programmati con memoria, o autonomi, ma senza di essa. Le soluzioni vanno tarate sul dominio applicativo in questione. La classificazione proposta [36] si può applicare anche alle folle, oltre che ai singoli agenti: § § § Folle Guidate Folle Programmate Folle Autonome Il parallelismo con gli agenti singoli è molto forte, dato che l'autore immagina la folla come una sorta di macro-agente. Questo approccio può essere discutibile, dato che in questo modo si escludono i meccanismi di comportamento emergente dato dalla somma delle individualità degli agenti. Il vantaggio è che determinando a priori regole applicate alla folla come ente unico, il risultato è sicuro e prevedibile, oltre che regolabile con semplicità e sicurezza. Altrove [8] lo stesso autore propone invece folle a comportamento emergente, con differenze, dipendenti dalle varie situazioni (interazione sociale ad un party, evacuazione per incendio..), dei comportamenti individuali. Pone anche accento sia sul lato interattivo più generico, che su quello pienamente cooperativo, 31 evidenziando come i meccanismi che rendono una società virtuale realistica siano numerosi e sfaccettati. In [8] si introducono ulteriori classificazioni e gerarchie, con suddivisioni in: § § § Folle Gruppi Agenti dove l'elemento chiave è il gruppo che contiene informazioni aggiuntive rispetto gli individui, mentre le folle sono collezioni di gruppi. I gruppi possono avere o meno un leader, che può essere imposto dall'utente, scelto a caso o selezionato con regole sociali. I gruppi, come già gli agenti e le folle possono essere: § § § Gruppi Guidati: obbediscono a ordini esterni, cioè all'utente Gruppi Programmati: obbediscono a uno script, che funge da simulazione di comportamenti innati. Non serve intervento esterno. Gruppi Autonomi: obbediscono a regole di comportamento che permettono quindi un grado di adattabilità all'ambiente superiore e di autonomia sia dai comportamenti innati che dai comandi dell'utente. Thalmann [8] sottolinea che è importante differenziare gli individui sia sotto il lato comportamentale macroscopico, che sotto quello attinente ai singoli gesti, alle posture, alle caratterizzazioni individuali. Un mondo popolato da personaggi visivamente identiche che si comportano in modo differenziato suona falso e irrealistico, come pure personaggi con animazioni e rappresentazioni varie che agiscono identicamente risultano immediatamente inadeguati. Entrambi gli aspetti hanno un grande peso nel realismo complessivo. Per implementare umani credibili, essi vanno dotati di un modello percettivo realistico. Un modello eccessivamente semplice potrebbe dar luogo a effetti di apparente “stupidità ” dell'agente, che in realtà manca più che di regole efficaci, di dati completi da elaborare. Thalmann [8] sottolinea che sebbene la modellazione debba essere ad imitazione dei sensi biologici, essi non devono essere strettamente simulati. In altre parole basterà che il comportamento del sensore sia macroscopicamente simile a quello reale, e non sarà necessario modellare meccanismi acustici, ottici, tattili complessi. Il dominio applicativo scelto porta alla definizione di agenti con precisi requisiti. Informalmente un agente software può essere definito come un’entità inserita in un contesto (il suo mondo) ed in grado di: - percepire elementi del proprio mondo - spostarsi autonomamente nel mondo per fare ciò l’agente dovrà avere: - una rappresentazione del mondo e/o del proprio stato (stato interno) - un set di regole di decisione che permettano di effettuare passaggi da uno stato all’altro, azioni sul mondo, spostamenti in esso. Il modello teorico preso in considerazione e riguardante le modalità in cui le informazioni hanno origine, si diffondono, e vengono percepite dagli agenti si basa sulla teoria dei campi. L’SCA (Situated Cellular Agents) è un approccio per la 32 modellazione di folle basato sul modello MAS (Multi Agent Systems). Si tratta di una particolare categoria di MMASS (Multilayered Multi Agent Situated System) che ha origine dal modello CA (Cellular Automata). Un’esposizione analitica di tale modello viene fornita al capitolo 3. 33 4.3.2. Linguaggio di programmazione Maxscript è il linguaggio messo a disposizione per interfacciarsi e complementare le funzionalità di 3DS Max. Internamente è object-oriented, tutte le classi predefinite sono localizzate secondo una gerarchia ereditaria. La maggior parte delle funzioni predefinite sono polimorfiche ma quelle create non lo sono. Ha molte caratteristiche e costrutti speciali come il contesto del sistema di coordinate, le primitive degli oggetti fino ad arrivare ai più sofisticati concetti di materiali e luci disponibili abitualmente tramite le interfacce del software stesso. L’accesso agli elementi della scena avviene attraverso la stessa gerarchia che caratterizza ogni oggetto 3DS Max. Voluminose collezioni di oggetti sono gestite internamente in modo efficiente. Consente di realizzare rapidamente semplici applicazioni o prototipi e di creare interfacce per estendere quelle esistenti e predefinite. Tramite questo strumento è possibile creare utility, macroscript e plug- in. Vantaggi • • • • • • • • • • • La sintassi del linguaggio è semplice e richiama quella del C++ Un comando come b=box() crea un cubo con i parametri di default ma in realtà, per avere un controllo completo è necessario conoscere tutti gli attributi e i metodi di tale oggetto. Benché l’array abbia un costrutto complesso, è consentito l’uso di array dinamici. L’accessibilità a ogni parametro dell’oggetto lo rende uno strumento molto avanzato. Accesso ai file ASCII sia per esportare che per importare dati da altre applicazioni . Ereditarietà, tramite cui è possibile definire una sottoclasse di una classe esistente in modo da estenderne il comportamento. Polimorfismo che permette di utilizzare un determinato oggetto in un contesto in cui ne venga richiesto un altro, a patto che l’oggetto utilizzato sia una sottoclasse di quello richiesto. Garbage collector, si occupa di ripulire la memoria dagli oggetti non più referenziati e quindi non più utilizzati. Avviene in automatico ma può essere svolto anche manualmente. Information Hiding ovvero l’incapsulamento prevede che il contenuto informativo di una classe rimanga nascosto all’utente, in modo tale che i metodi siano l’unica via per interagire con un determinato oggetto. Permette l’uso di interfacce consentendo di associare un tipo ad una collezione di metodi privi di implementazione. La possibilità di utilizzare comandi di 3DS direttamente tramite script. Apprezzabile lo strumento VisualScript Editor che consente di creare interfacce semplici ma funzionali. 34 Figura 13: screenshot di VisualScript Svantaggi • La struttura dati onnipresente è l’array e non esiste la possibilità di creare matrici di dimensioni superiori a 4 X 3. Ogni oggetto, anche molto complesso, è costituito da un insieme di vertici ognuno dei quali è definito tramite una matrice 4 X 3. • Non è possibile definire classi astratte ovvero classi con metodi privi di implementazione. • No overloading, ovvero non esiste la possibilità di dichiarare all’interno di una classe più metodi con lo stesso identificatore, specificando volta per volta una lista di parametri diversi per numero e/o per tipo in modo da adeguarlo a contesti d’uso differenti. • No overriding, ovvero non è possibile estendere il comportamento di una classe aggiungendo nuovi metodi o ridefinendo metodi già dichiarati nella superclasse. • Frequentemente si hanno eccezioni di sistema sconosciute che rendono poco affidabile il codice scritto. • Si sente la mancanza di un debugger più efficiente e avanzato. Quello a disposizione è poco più di un editor di testo in cui è possibile inserire i singoli comandi e verificarne l’esecuzione. Figura 14: screenshot del Listener (sinistra) e del MaxScript editor (destra). 35 4.4. Protocollo di comunicazione tra applicazione 2D e 3D Per facilitare la distinzione da file contenenti altri tipi di dati necessari in futuro, quello successivamente descritto ha estensione *.23D. Di seguito viene specificato come si presenta il singolo record all’interno di un qualsiasi file di testo: Type#aaa#bbb#ccc#xxx#yyy#zzz@ Elenco campi: Type aaa bbb ccc xxx yyy zzz # @ • • • • • • : stringa che identifica il tipo di record. : numero intero che identifica univocamente il record rispetto al tipo. : numero intero indicante la sequenza temporale. : numero intero indicante il coefficiente moltiplicativo. : numero intero indicante la coordinata X. : numero intero indicante la coordinata Y. : numero intero indicante la coordinata Z. In questo caso valore fissato a 000. : delimitatore di campo. : delimitatore di record. La lunghezza di ogni campo può essere variabile se si utilizzano dei delimitatori, diversamente, deve essere fissata a priori per evitare possibili problemi di lettura. Nel nostro caso si adottano entrambe le soluzioni. Per semplicità di lettura il delimitatore di campo e di record può essere un qualsiasi carattere non alfanumerico. La voce Type identifica il tipo di record presente. Questo campo è stato introdotto per una rapida espansione del protocollo in situazioni in cui sono presenti diversi tipi di agente, di informazioni o di spazi multilivello. In queste simulazioni sono stati utilizzati due tipi di record: uno per indicare gli agenti e un altro per definire lo spazio discreto in cui si opera. Il campo che contiene l’identificativo permette di avere in un unico file i dati riguardanti tutti gli agenti e gli spazi coinvolti. Diversamente, senza nessun tipo di distinzione, si sarebbe dovuto creare un file per ogni agente. La sequenza temporale consente di ricostruire lungo l’asse del tempo ogni movimento effettuato. Tramite la lettura di questo valore e del relativo tracciamento di posizione è possibile ottenere sincronicità o meno tra i diversi componenti. La posizione iniziale dell’agente avrà come indicatore temporale il valore 000. Il coefficiente moltiplicativo consente di specificare il livello di discretizzazione per ogni singola distanza. Il valore di default per questo campo è 001 dove si assume che la distanza che intercorre tra la posizione precedente e quella successiva sia pari a 1 unità. Questo parametro consente di rappresentare nel 2D una distanza elevata tra due nodi come una qualsiasi altra. Il suo utilizzo è semplice: durante la lettura del record, i valori delle coordinate x,y,z vengono moltiplicate per questo coefficiente. Il valore unità può essere associato a qualsiasi altra unità di misura: miglia, metri, chilometri. 36 • • Tutte le coordinate sono riferite rispetto all’origine assoluta localizzata nel punto (0,0,0). In questa applicazione non saranno utilizzati valori diversi da 000 per il campo #zzz@. La sua presenza consente comunque di estendere le funzionalità di questo protocollo anche per progetti futuri che utilizzano più livelli. STEP 0 STEP 1 Asse Y (0,0) Asse Y Asse X (0,0) Asse X Figura 15: rappresentazione di interazioni di due agenti in uno spazio discreto Nella figura di sinistra (STEP 0), l’agente, in questo caso l’Avatar 001 è posizionato nel nodo di coordinate (4,3,0) e successivamente (STEP 1) si sposta in (3,2,0). L’Avatar 002 è posizionato nel nodo di coordinate (3,5,0) (STEP 0) e successivamente (STEP 1) si sposta in (3,4,0). Sebbene la distanza tra i nodi (4,3,0) e (3,2,0) è rappresentata bidimensionalmente nello stesso modo delle altre, nel 3D avrà una lunghezza dieci volte maggiore perché il coefficiente moltiplicativo del secondo nodo è pari a 10. Nel file di testo si avrà la seguente configurazione: Avatar#001#001#001#004#003#000@ Avatar#002#002#001#003#005#000@ Avatar#001#002#010#003#002#000@ Avatar#002#001#001#003#004#000@ Space#001#001#001#001#006#000@ Space#001#002#001#002#005#000@ Space#001#003#001#004#005#000@ Space#001#004#001#004#004#000@ Space#001#005#001#003#004#000@ Space#001#006#001#003#002#000@ Space#001#007#001#004#002#000@ Space#001#008#001#005#002#000@ Definizione della dinamica delle entità Definizione della struttura spaziale Come è possibile notare dalla configurazione precedentemente descritta è possibile inserire i vari record in ordine sparso sia rispetto al valore identificativo 37 dell’agente, sia rispetto il valore indicante la sequenza temporale. L’unica eccezione a queste flessibilità è data dalla necessità della presenza cronologica di ogni step in ordine continuo e con una numerazione iniziale pari a 001. Anche per quanto riguarda il campo identificativo la numerazione deve iniziare con 001. L’esempio seguente chiarisce la restrizione: Avatar#000#001#001#004#003#000@ Avatar#000#003#010#003#002#000@ In questo caso, mancando il nodo dell’Avatar 001 allo Step 002 viene generato il percorso fino allo Step 001 e viene omesso lo Step 003 poiché manca continuità temporale tra lo Step 001 e lo Step 003. In realtà nessun percorso generato poiché l’identificativo dell’Avatar è 000 che non è consentito. 38 5. Implementazione Tramite l’interfaccia realizzata è possibile creare in pochi passi l’intera scena ed essere pronti per risolvere la simulazione. Innanzitutto è necessario scegliere l’applicazione AI Tool tra le utility caricate e disponibili nel menu a discesa del rollout “Script” presente in 3DS Max. La prima operazione da effettuare è di caricare i dati memorizzati nel file di testo con estensione 23D. Ogni altro pulsante è infatti disabilitato finché ogni record non è stato letto dal parser ed inserito nell’array. La barra di avanzamento permette di avere un feedback visivo durante tutte le operazioni che richiedono un tempo non immediato. L’indice “Global Increase” consente un incremento delle dimensioni dell’intera scena modificando direttamente le coordinate al momento della memorizzazione nella struttura dati. Nel secondo gruppo di opzioni si trovano i pulsanti per generare il piano in cui si svolge la simulazione e una rappresentazione dei nodi importati e corrispondenti a quelli presenti nel grafo dell’applicazione di origine. Il terzo elemento crea, in modo completamente autonomo, un’ambientazione tridimensionale semplice ma di notevole impatto visivo. Eccetto quest’ultimo bottone, che aggiunge un comportamento agli agenti per evitare collisioni, i rimanenti non influiscono sui risultati della simulazione. La scelta di separare e rendere opzionali questi elementi è motivata dalla possibilità di inserire un ambiente virtuale esterno creato da terze parti. Nel gruppo “Simulation” si sceglie se utilizzare le figure umanoidi durante la risoluzione. Questa casella di controllo influisce sostanzialmente nel costo computazionale complessivo e nei risultati ottenibili. L’utilizzo dei bipedi aggiunge il calcolo di leggi fisiche, modifica la volumetria dell’agente e le azioni possibili da intraprendere. Se vi è la necessità di apportare modifiche alla simulazione è utile disabilitare Figura 16: interfaccia di questa funzione per avere in questo modo una AI Tool. risoluzione più rapida visualizzando un rappresentante in qualità dell’agente. “Render Object” aggiunge i nodi e i percorsi nella creazione del rendering finale. Un ultimo passo nella generazione della scena è dato dal pulsante “Draw Scene” che opera disegnando i percorsi sotto forma di polilinee che compieranno gli agenti; oltre a ciò vengono aggiunti tutti gli avatar e per ognuno il relativo delegato nel punto di origine corrispondente. A questo punto si è in grado di avviare la simulazione con la semplice pressione del secondo pulsante di questo gruppo che, inoltre, orienta ogni agente nella direzione corretta del proprio percorso. Vi sono inoltre altri cinque bottoni non ancora descritti, ma il cui funzionamento è chiaro: eliminano gli oggetti corrispondenti. 39 Questo strumento consente di ottenere una rappresentazione grafica tridimensionale di qualsiasi applicazione che fornisca i propri risultati attraverso un file ASCII rispecchiando il protocollo descritto nel paragrafo 4.4. Nell’immagine a fianco è possibile osservare i risultati ottenuti tramite questa utility senza operare nessuna modifica aggiuntiva; gli elementi visibili in colore turchese sono le pareti dell’ambiente ricostruito, i cerchi rappresentano i nodi con la medesima disposizione dell’ambiente bidimensionale. Questi anelli si differenziano nel colore per identificare Figura 18: rappresentazione grafica completa di una quelli utilizzati durante la simulazione. simulazione (rossi), da quelli che costituiscono semplicemente lo spazio del grafo di origine (verdi). Durante la risoluzione sono presenti sia gli avatar che i loro delegati. La comunione di questi due elementi rappresenta il singolo agente. Il delegato è visualizzato attraverso un triangolo con la punta rivolta verso la direzione di movimento iniziale. Altri elementi sono visibili nell’immagine di lato: tutte le Figura 17: ingrandimento della scena durante la forze agenti vengono risoluzione. rappresentate tramite vettori di vario colore e di lunghezza corrispondente al loro modulo. Nel caso del delegato rappresentato in Figura 19 sono presenti la velocità e il raggio d’azione del sensore per la ricerca dell’obbiettivo. Il volume entro cui sono calcolate eventuali collisioni è definito attraverso una sfera bianca visibile nella parte superiore della Figura 17, mentre gli obbiettivi determinati dinamicamente lungo il percorso sono di colore blu e di dimensioni minori. E’ possibile ottenere ulteriori informazioni Figura 19: possibili vettori agenti su un delegato visive ma l’insieme risulterebbe 40 troppo caotico. Figura 20: diverse visualizzazioni della medesima scena. L’effetto della casella di controllo “Render Object” è osservabile nella Figura 20 dove è possibile notare (immagine di destra) diverse rappresentazioni umanoidi. La scelta di tale opzione è utile nella verifica della corrispondenza tra le posizioni calcolate nelle interazione dell’applicativo bidimensionale e quelle che avvengono in questo strumento. In effetti vi è spesso una certa differenza tra i risultati, dovuti al calcolo aggiuntivo che rende maggiormente realistica questo tipo di simulazione. Aspetti come le collisioni con altri agenti sono risolti nei grafi o nelle griglie, semplicemente ponendo il vincolo che in ogni nodo o cella può essere presente un solo agente per ogni interazione. Inoltre gli spostame nti avvengono nella maggior parte dei casi in modo sincrono. Per ottenere dei movimenti fluidi e realistici, questo sistema opera in modo asincrono, causando però, conseguentemente, potenziali collisioni tra avatar gestite tramite variazioni di percorso, rallentamenti o soste. Nonostante la possibilità di rendere questi oggetti come parte della scena, le presentazioni non comprenderanno tali elementi che conferiscono un aspetto maggiormente artificiale alla simulazione. Esistono innumerevoli parametri, comportamenti e oggetti che si possono aggiungere per raffinare, migliorare o mutare il risultato complessivo dell’elaborazione. Probabilmente verranno aggiunte in futuro ulteriori interfacce per impostare questi aspetti ma ora sarebbero state di intralcio all’obbiettivo di creare un strumento di immediato utilizzo. 41 5.1. Dimostrazione d’uso Nel corso degli studi effettuati durante questo periodo di stage, è stato possibile collaborare con un altro laureando e utilizzare gli scenari da lui creati per verificare l’uso di AI Tool. Sono stati considerati quattro tipi diversi di spazi. Per i primi tre è stata analizzata sia una situazione di evacuazione in cui gli agenti si trovano in uno stato normale, sia in uno stato di shock. Nelle varie stanze vengono diffusi tre campi : • Entrata: campo che viene diffuso dalla porta di entrata • Emergenza: campo che viene diffuso dalle porte di emergenza. • Fine: campo che viene diffuso dagli agenti-attrattori posti nei contenitori. Questi tre campi vengono diffusi nello stesso modo, ma con intensità opportune e differenti tra loro, scelte in base alle dimensione della stanza e al numero di agenti. L’intensità dei campi “entrata” ed “emergenza” è la stessa, mentre il campo “fine” è diffuso solo all’interno del contenitore di fine simulazione, e gli agenti lo possono percepire solo una volta attraversata la porta. L’unica azione permessa agli agenti è quella di tipo “transport”. Essa viene regolata dalla ricezione dei segnali emessi dagli agenti statici delle porte di emergenza. Gli individui seguono il segnale, se sono in grado di percepirlo, muovendosi in una cella adiacente alla propria, nella quale sia attivo il campo ed esso abbia intensità maggiore. Nel caso in cui, diversamente, il campo non sia percepile, l’agente si muoverà in modo casuale. L’agente avrà raggiunto il vano della porta quando si troverà in una cella la cui intensità del campo sia maggiore della più grande intensità presente tra le celle adiacenti. A questo punto l’agente cambia sensibilità e inizia a seguire il campo di tipo “fine”; questo instante segna, come già detto, la fine della simulazione, essendo ininfluente il comportamento una volta varcata la porta. Essendo il contenitore modellato in forma di corridoio, l’agente cercherà di avvicinarsi il più possibile all’attrattore posto al termine di esso. 42 SIMULAZIONE 1 In questo primo esempio sono presenti 20 agenti per un totale di 474 interazioni. Viene rappresentato un locale molto ampio come quello di un museo, in cui la linea composta da nodi verdi è un ostacolo posto al centro della stanza mentre i due nodi verdi presenti a lato del primo nodo rosso (agente), sono campi attrattori posti come stipiti di una porta e utilizzati per dirigere gli agenti verso l’uscita. L’elemento di colore giallo è il punto finale da raggiungere. Il grafo di questa immagine rappresent a lo stato finale della simulazio ne in cui tutti gli agenti Figura 21: spazio bidimensionale sono della prima usciti e si simulazione. recano nel corridoio. Questo ultimo elemento non è stato rappresentato ma il risultato Figura 22: stato iniziale dello spazio tridimensionale non cambia. della prima simulazione. Le immagini di Figura 22 e Figura 23 rappresentano rispettivamente lo stato iniziale e quello finale durante la simulazione a tre dimensioni. Sebbene tutti gli agenti riescano ad uscire dalla stanza, i tempi richiesti durante le due simulazioni sono differenti. Ciò è dovuto al tempo richiesto nei movimenti degli agenti che devono evitarsi a vicenda e contemporaneamente raggirare gli ostacoli posti nell’ambiente. Questa simulazione considera tutti gli agenti in uno stato emozio nale equilibrato, mentre le successive immagini descrivono i risultati ottenuti quando alcuni di essi si Figura 23: stato finale dello spazio tridimensionale trovano in uno stato della prima simulazione. confusionale. Tale situazione influisce sulle loro capacità percettive e quindi nelle loro reazioni. Questo aspetto viene realizzato esclusivamente nell’applicazione di origine in quanto è parte delle specifiche del modello ad agenti SCA. Per elaborare tale sistema sono state necessarie 622 interazioni. 43 Figura 24: stato iniziale e finale della simulazione con alcuni agenti in stato confusionale. 44 SIMULAZIONE 2 Nella successiva dimostrazione ci sono due stanze comunicanti; nella prima sono presenti 10 avatar che a seguito di 243 interazioni, si spostano verso l’altro locale Figura 25: grafo bidimensionale e stato iniziale, intermedio e finale della seconda simulazione. Gli agenti si spostano da un locale a quello adiacente per trovare l’uscita più vicina. alla ricerca di un’uscita. Poiché ve ne sono due disponibili, la scelta di quella più prossima viene valutata attraverso l’intensità di campo generato e propagato dai nodi presenti presso gli stipiti della porta. Figura 26: stato iniziale e finale con agenti nello stato di shock. Questi ultimi non trovano la via per dirigersi verso l’uscita ubicata nel locale adiacente. 45 Nella Figura 26 ci sono due screen shot riguardanti la dimostrazione con dieci agenti di cui due in stato di agitazione e un totale di 344 interazioni. Anche in questo caso è possibile notare come gli agenti confusi non riescano a perseguire il proprio obbiettivo trovando l’uscita. 46 SIMULAZIONE 3 Questa ricostruzione aumenta le difficoltà generali dell’intero sistema. Sono infatti presenti 48 agenti che interagiscono attraverso 1455 passi risolutivi. Ciò che si è voluto creare è un ambiente simile ad un’aula scolastica o ad una libreria. La complessità dovuta ad un numero elevato di personaggi ha richiesto che la simulazione utilizzasse, almeno inizialmente, i delegati in sostituzione delle figure umanoidi. Tramite l’uso esclusivo di questi rappresentanti è infatti possibile eliminare temporaneamente il problema delle collisioni, ottenere una rapida visualizzazione dell’intero sistema e solo in un secondo momento, dopo aver eventualmente apportato modifiche alle strutture, completare la simulazione con l’aggiunta degli avatar. I risultati ottenuti in questo modo sono visibili nelle immagini della Figura 27. Nello schema a fianco è possibile risalire alla disposizione iniziale degli agenti (rossi) e dei campi attrattori presso le uscite (verdi). Sono presenti inoltre altri nodi di colore verde che rappresentano le indicazioni verso le porte. Le parti che costituiscono lo spazio percorribile sono Figura 28: grafo di un’aula scolastica in nero mentre quelli gialli sono i punti con campi attrattori verso le uscite. finali in cui si raggruppano tutti gli agenti Figura 27: due diverse rappresentazioni della medesima simulazione. In alto vengono utilizzati gli avatar mentre in basso i loro delegati. 47 che trovano la via d’uscita dalla stanza. Ogni altro spazio non rappresentato da un nodo, è il caso delle aree comprese tra due file di agenti, viene a far parte delle strutture rigide della rappresentazione virtuale. Di seguito è possibile osservare i risultati grafici ottenuti e quelli derivanti dalla simulazione di agenti con uno stato interno normale, utilizzando un avatar per ognuno di loro o più semplicemente un delegato. Utilizzando sempre lo stesso numero di agenti, ma definendone alcuni, durante la simulazione, in stato confusionale, sono stati ottenuti diversi risultati (Figura 29). I delegati che restano nella stanza durante l’evacua zione sono cerchiati di rosso e i tragitti fatti da ognuno sono visibili Figura 29: risultato finale della attraverso le linee che creano delle simulazione ottenuta con alcuni agenti in geometrie simili a quadrati. Nel stato confusionale. rettangolo verde sono invece evidenziati quelli che hanno trovato la via d’uscita nella parte destra dell’aula. Per tale scopo si sono rese necessarie 1883 interazioni nell’applicazione sorgente. 48 SIMULAZIONE 4 Un ultimo esperimento è stato fatto prendendo in considerazione la morfologia architetturale di un’area dell’ultimo piano dell’edificio U6. Sono stati presi in esame 25 agenti per un totale di 1024 interazioni. Come indicato nella Figura 30 l’ambiente è composto da due stanze (il laboratorio LABIC e l’aula seminari), un corridoio orizzontale e due laterali in cui convogliano le persone durante un’evacuazione. Tale schema è stato ripreso direttamente dai disegni esposti lungo il corridoio e che indicano le uscite di emergenza. I nodi di colore rosa indicano gli ostacoli presenti all’interno dei locali. I risultati ottenuti dimostrano che la presenza di un’unica indicazione al centro del corridoio induce gli agenti uscenti dalla seconda porta da sinistra a dirigersi verso il corridoio a maggior distanza da loro. Figura 30: grafo utilizzato dall’applicazione bidimensionale per la simulazione ad agenti. Figura 31: stato iniziale (sinistra) e finale (destra) della simulazione ambientata in un settore del quarto piano dell'edificio U6. 49 6. Sviluppi futuri • L’ipotesi di rendere 3DS Max l’unica applicazione necessaria per la realizzazione di simulazioni come quella descritta in questo documento è un obbiettivo possibile ma ostico. Ciò significa riuscire ad implementare il modello ad agenti all’interno del codice principale; il problema maggiore sarebbe quello di trovare un metodo per poter passare da uno spazio continuo, Livello 2 come un ambiente vasto di una città, a quello discreto, Livello 1 come quello presentato nelle dimostrazioni d’uso di questo documento, Livello 0 su cui poter realizzare i Figura 32: tre possibili livelli di discretizzazione. calcoli di maggiore complessità e onere computazionale. Una possibile soluzione a tale problematica può essere, almeno in via teorica, quello di rappresentare l’ambiente come un “continuo di spazi discreti”. Nella Figura 32 vengono rappresentati tre livelli di discretizzazione: il livello 0 rappresenta lo spazio continuo come può essere una città; il livello 1 è un primo livello di discretizzazione che rappresenta nel nostro esempio un quartiere e il livello 2 è l’area intorno ad un singolo palazzo. Il principio è quello dell’algoritmo Quadtree molto diffuso negli ambienti di grafica. Altre questioni giungono comunque immediate: come distribuire l’intelligenza negli oggetti Max e come farli interagire tra loro e con il mondo in maniera non banale. • L’inserimento di nuove caratteristiche come la vista è un’altra possibile motivazione per continuare questo progetto. La creazione di un sensore è molto complesso e necessita almeno uno studio delle principali leggi della fisica che lo governano. Tuttavia non è sempre necessario avere una sistema completamente rispecchiante la realtà. Nel caso della vista umana è sufficiente ottenere due coni che partono dal viso dell’avatar per avere una corrispondenza adeguata. Figura 33: avatar con coni visivi. Un’ulteriore modellazione più 50 semplicistica può essere fatta utilizzando un unico segmento, rappresentante la zona di maggior interesse che risiede nella parte centrale dei due coni visivi. La necessità di ridurre tale sensore a forme geometriche elementari è dovuta al costo computazionale che richiederebbe un sistema in cui, per ogni agente, andrebbero calcolate tutte le collisioni tra i triangoli che compongono il proprio campo visivo e le migliaia di triangoli costituenti gli oggetti del mondo in cui è inserito. Le applicazioni derivanti da questo tipo di implementazione sono numerose e variano anche nel campo commerciale. Oltre a rendere tutta la simulazione maggiormente realistica, ad esempio, nella ricerca di obbiettivi senza ulteriori fonti cognitive sottostanti, tali simulazioni risulterebbe utili per coloro che necessitano di sapere quali sono le aree a maggior impatto visivo. Chi si occupa di inserire spazi pubblicitari all’interno di una piazza o di una via otterrebbe dei risultati vantaggiosi anche dal punto di vista economico; si potrebbe verificare il corretto posizionamento di segnalazioni stradali e di indicazioni delle uscite di emergenza. I risultati ottenuti potrebbero essere sotto forma analitica o in maniera più comprensibile attraverso una realtà aumentata con visualizzazioni “a falsi colori” delle aree di interesse. Oltre a tutto ciò è possibile inserire ulteriori sensori. L’udito e l’olfatto potrebbero essere implementati agevolmente nelle applicazioni bidimensionali proprio per le loro caratteristiche di propagazione e la complessità dei calcoli che si trascinano. Diversamente il tatto apparirebbe fuori luogo in una Figura 34: un avatar che afferra una teiera. locazione piatta. I fattori che intervengono, in questo caso, sono infatti inscindibili dal volume che occupano e dalla posizione assunta. • Estendendo i comportamenti in termini di quantità e tipologia, creandone eventualmente alcuni ad hoc, aumenterebbe l’aspetto eterogeneo dell’intero sistema e consentirebbe una diversificazione delle simulazioni. Se si tengono in considerazione gli aspetti sociologici e comportamentali alla base delle nostre azioni, è facilmente intuibile come esse possano influenzare le attività di un insieme di persone che condividono uno spazio. Le modalità di raggruppamento durante un corteo o una manifestazione sono, ad esempio, un aspetto studiato diffusamente in molti ambiti. Allo stesso modo, anche ciò che coinvolge due persone può essere espressivo di molte sfumature che passano spesso inosservate ma che fanno parte della cultura di ognuno di noi. Figura 35: avatar che interagiscono stringendosi la mano. • L’incremento di funzionalità, la creazione di interfacce e di strumenti di parametrizzazione della simulazione per un elaborato utilizzo che consenta una quantificazione dell’affollamento, la localizzazione georeferenziata delle sorgenti e 51 dei target, la modifica del livello di eterogeneità degli agenti, del comportamento globale o di quello di ogni singolo elemento, delle interazioni col mondo e con ogni elemento che lo costituisce. Questi sono alcuni aspetti complessivi che trovano però riscontro e necessitano di puntualizzazioni in ogni istanza del sistema. • Tutti gli sviluppi futuri descritti ai punti precedenti realizzano potenzialmente un tipo di simulazione che ha molto rilievo nel mondo attuale. La sicurezza è stata ultimamente sens ibilizzata e studiata in modo approfondito da sociologi, ingegneri, architetti, ecc… Tuttavia, l’analisi e la progettazione delle strutture possibilmente coinvolte in questo ambito si basano essenzialmente sull’esperienza. Non è difficile infatti guardare nel passato e accorgersi degli errori che sono stati commessi e che hanno causato la morte di migliaia di persone e di cui hanno provveduto Data Luogo Morti (Feriti) Situazione 1863 Santiago, Chile 2000 Church 1881 Vienna, Austria 570 Theatre 1883 Sunderland, UK 182 Theatre 1903 Chicago, USA 602 Theatre 1943 London, UK 173 Tube Station 1961 Rio de Janeiro, Brazil 250 Circus 1964 Lima, Peru 318 Stadium 1967 Kayseri, Turkey 40 Stadium 23.06.1968 Buenos Aires, Argentina 75 (150) Stadium 1970(*) St. Laurent-du-Pont, France 146 Dance Hall 02.01.1971 Ibrox, UK 66 Stadium 17.02.1974 Cairo, Egypt 49 Stadium 03.12.1979 Cincinatti, USA 11 Concert 20.10.1982 Moscow, USSR 340 Stadium 29.05.1985(*) Brussels, VIDEO 38 (>400) Stadium 10.03.1987(*) Tripoli, Libya 2 (16) Stadium 12.03.1988(*) Katmandu, Nepal 93 (>100) Stadium 15.04.1989 Hillsborough, VIDEO 95 Stadium 1990 Mecca, Saudi Arabia 1425 Pedestrian Tunnel 13.01.1991(*) Orkney, South Africa >40 Stadium 1991 New York, USA 9 Concert 1863-1992 World 6461 . Belgium Sheffield, UK Tabella 6: data, luogo e numero di morti (feriti) nei maggiori incidenti verificatesi precedentemente al 1992. Nell’ultima riga sono riportati in colore rosso il conteggio totale dei morti (feriti) avvenuti negli incidenti di massa in tutto il mondo. successivamente a porre dei rimedi. Analizzando i fatti, si scopre che è stata l’incapacità di prevedere il comportamento umano insieme ad una superficiale 52 progettazione a causare i danni maggiori. Non si è attualmente in grado di ricostruire situazioni di panico o di evacuazione di vasti ambienti, se non attraverso un’analisi di immagini video. Questo strumento consent irebbe tuttavia di fare previsioni riguardo la sicurezza e la gestione di emergenze in strutture non ancora edificate o soggette a modifiche essenziali. Si conoscono i dati statistici dei maggiori incidenti di massa avvenuti in tutto il mondo ma non si è ancora in grado di rendere i luoghi in cui viviamo sicuri da noi stessi. La presenza di fumo, fuoco o gas in concomitanza con un vasto numero di persone coinvolte, sono situazioni difficilmente riproducibili , controllabili e analizzabili a posteriori. Realizzare uno strumento sofisticato ma che non intende porsi come la panacea di ogni male può essere un obbiettivo ambizioso ma anche stimolante. • L’utilizzo del linguaggio MAXscript, seppur offrendo caratteristiche avanzate e rapide per un’implementazione prototipale, costringe lo sviluppatore ad interagire con l’ambiente grafico 3DS Max nella sua forma completa. Poiché questo ultimo è uno strumento avanzato ed adatto ad un ampio spettro di tipologie applicative, le interfacce che lo compongono sono innumerevoli e spesso risultano superflue per chi ha obbiettivi ben determinati. Per ovviare a quest’inconveniente, 3DS Max offre la possibilità di sviluppare un’applicazione proprietaria utilizzando le librerie che lo stesso software sfrutta per il proprio funzionamento. L’SDK (Software Development Kit) è un insieme di librerie scritte in linguaggio C++ e create appositamente per agevolare lo sviluppo di plug- in di cui lo stesso ambiente grafico è in maggior parte costituito. I plugin esistenti sono infatti creati utilizzando Microsoft Visual Figura 36: le principali classi esposte tramite SDK C++ e vengono implementati chiariscono quali siano le effettive potenzialità di questo strumento. come DLL (Windows Dynamic Link Libraries). 53 6.1. Conclusioni Oltre ad aver esteso le mie conoscenze nell’area dell’intelligenza artificiale e in quella della grafica tridimensionale, questo progetto ha consentito di confrontarmi con un problema concreto e attuale. La realizzazione di un software che possa essere di aiuto a molte persone e forse a salvarne alcune è un’idea ambiziosa ma stimolante. Anche se la tecnologia progredisce continuamente con rapidità impressionante, attualmente non è possibile creare un applicazione troppo sofisticata e utilizzarla su macchine commerciali. Tuttavia, queste imposizioni non devono limitare la fantasia e la creatività di chi ha buone idee. Spero che il lavoro svolto possa in futuro essere utile a qualcuno e mi auguro che possa essere fonte di ispirazione, come altri progetti lo sono stati per me. 54 7. Riferimenti [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] S.Bandini, S.Manzoni, G.Vizzari: “Situated Cellular Agents: a Model to Simulate Crowding Dynamics“. S.Bandini, S.Manzoni, G.Vizzari: “MMASS Approach to Localization Problem“. S.Bandini, S.Manzoni, C.Simone: “Dealing with Space in Multi- Agent System: a model for Situated MAS“. S.Bandini, G.Mauri, G.Vizzari: “Supporting Action-at-distance in Situated Cellular Agents“. S.Bandini, S.Manzoni, C.Simone: “Enhancing Cellular Spaces by Multilayered Multi Agent Situated System“. F.De Paoli, G.Vizzari: “Context dependent management of field diffusion: an experimental framework“. S.Russell, P.Norving: “Intelligenza Artificiale, un moderno approccio“. Daniel Thalmann, “The foundations of a virtual human society”. Adam Szarowicz, Juan Amiguet-Vercher, Peter Forte, Jonathan Briggs, Petros Gelepithis , Paolo Remagnino : “The Application of AI to Automatically Generated Animation” . Adam Szarowicz, Juan Amiguet-Vercher, Peter Forte: “Multiagent interaction for crowd scene simulation”. Schreckenberg, M., Sharma, S.: “Pedestrian and Evacuation Dynamics.” Los Alamos National Laboratory :“Mankind’s future will unfold largely in urban settins“. R.Ranon :“Guiding Visitors of Web3D Worlds through Automatically Generated Tours“. Y.Mukarami, K.Minami, T.Kawasoe, T.Ishida: “Multi- Agent Simulation for Crisis Management“. Bin Jiang :“Agent-Based Approach to modelling Environmental and Urban System Within Gis“. M.L.Mather, J.S.Gero :“Agent Models of 3D Virtual Words“. Z.Huang, A.Eliens, C.Visser :“3D Agent-based Virtual Communities“. P.M.Torrens :“How Cellular Models of Urban System Work“. F.Semboloni :“The dynamic of an urban cellular automata in a 3D spatial pattern“. J.Dijkstra, H.J.P. Timmermans, A.J.Jessurun :“A Multi- Agent Cellular Automata System for Visualising Simulated Pedestrian Activity“. K.Tsutsuguchi, K.Sugiyama, N.Sonehara :“The motion Generation of Pedestrians as Avatar and Crowd of People“. M.P.Johnson, A.P.Hurter :“An Optimization model for location of subsidized housing in metropolitan areas“. A.Karim, S.O.Hassan :“ Normed Distances and Their Applications in Optimal Circuit Design”. J.Ozsa, Z.Aly, G.Arbormagyar, A.Szentesi :“ An Efficient Algorithm for Global Path Optimization in MPLS Networks”. F.Tecchia, C.Loscos, R.Conroy, Y. Chrysanthou :”Agent Behaviour Simulator (ABS): A Platform for Urban Behaviour Development”. D.Helbing, I.J.Farkas, P.Molnar, T.Vicsek :”Simulation of Pedestrian Crowd in Normal and Evacuation Situations” . 55 [27] J.P.Granieri, W.Becket, B.D.Reich, J.Crabtree, N.I.Badler :“Behavioral Control for Real- Time Simulated Human Agents“. [28] B.M.Namee, P.Cunningham :“A Proposal for an Agent Architecture for Proactive Persistent Non Player Characters“. [29] K.Nagel, B.Raney :“ Large scale multi-agent simulations for transportation applications“. [30] B.Jiang :“Agent-based Approach to Modelling Urban and Environmental Systems within GIS”. [31] B. Ulicny, D.Thalmann :“Crowd simulation for interactive virtual environments and VR training systems“. [32] A.Shadschneider, A.Kirchner, K.Nishinari:“CA Approach to Collective Phenomena in Pedestrian Dynamics”. [33] S.Franklin, A.Graesser, “Is it an Agent, or just a Program?: A Taxonomy for Autonomous Agents”. [35] P.Maes: “Artificial Life Meets Entertainment: Life like Autonomous Agents”. [36] D.Thalmann, S.R.Musse, M.Kallmann ”From individual human agents to crowds”. 7.1. Risorse Web • • • • • • • • http://www.crowddynamics.com http://www.urbansimulation.com http://www.red3d.com/cwr/steer/ http://www.swarm.org/ http://roddy.net/kim/thesis_links.htm http://www.ees.lanl.gov http://angel.elte.hu/~panic/ http://www.wired.com/news/technology/0,1282,16077,00.html • • • • • • • http://www.discreet.com http://www.gamedev.net http://www.gamasutra.com http://www.gameprog.it http://www.3dcafe.com http://www.geosimulation.org http://www.scriptspot.com • • • • • • http://www.multigen.com http://www.isi.edu www-2.cs.cmu.edu http://agents.media.mit.edu/ http://www.casa.ucl.ac.uk/working_papers.htm http://www.hig.se/~bjg/Publications.htm 56 8. Indice delle figure Figura 1 : localizzazione di centri commerciali in aree extra-urbane. Figura 2: esempio di agenti con coni visivi. Figura 3: immagine virtuale del quartiere Ramat Gan a Tel Aviv. Figura 4: ambiente tridimensionale con folla creata tramite un modello ad agenti Figura 5: path planning in un ambiente VRML Figura 6: una vista di Sim City. Figura 7: risultati dei due metodi sperimentali. Figura 8: simulazione con FlatWalk ( a sinistra) e con FreeWalk (a destra). Figura 9: schema ad alto livello dell’intero sistema. Figura 10: schema della fase iniziale di creazione della scena. Figura 11: schema delle associazioni tra i componenti costituenti un delegate Figura 12: rappresentazione di un agente. Figura 13: screenshot di VisualScript Figura 14: screenshot del Listener (sinistra) e del MaxScript editor (destra). Figura 15: rappresentazione di interazioni di due agenti in uno spazio discreto Figura 16: interfaccia di AI Tool. Figura 17: ingrandimento della scena durante la risoluzione. Figura 18: rappresentazione grafica completa di una simulazione. Figura 19: possibili vettori agenti su un delegato Figura 20: diverse visualizzazioni della medesima scena. Figura 21: spazio bidimensionale della prima simulazione. Figura 22: stato iniziale dello spazio tridimensionale della prima simulazione. Figura 23: stato finale dello spazio tridimensionale della prima simulazione. Figura 24: stato iniziale e finale della simulazione con alcuni agenti in stato confusionale. Figura 25: grafo bidimensionale e stato iniziale, intermedio e finale della seconda simulazione. Gli agenti si spostano da un locale a quello adiacente per trovare l’uscita più vicina. Figura 26: stato iniziale e finale con agenti nello stato di shock. Questi ultimi non trovano la via per dirigersi verso l’uscita ubicata nel locale adiacente. Figura 28: grafo di un’aula scolastica con campi attrattori verso le uscite. Figura 27: due diverse rappresentazioni della medesima simulazione. In alto vengono utilizzati gli avatar mentre in basso i loro delegati. Figura 29: risultato finale della simulazione ottenuta con alcuni agenti in stato confusionale. Figura 30: grafo utilizzato dall’applicazione bidimensionale per la simulazione ad agenti. Figura 31: stato iniziale (sinistra) e finale (destra) della simulazione ambientata in un settore del quarto piano dell'edificio U6. Figura 32: tre possibili livelli di discretizzazione. Figura 33: avatar con coni visivi. Figura 34: un avatar che afferra una teiera. Figura 35: avatar che interagiscono stringendosi la mano. 57 9. Indice delle tabelle Tabella 1: rappresentazione “Esatta” delle funzionalità nel 2D e nel 3D. Tabella 2: rappresentazione “Approssimata” delle funzionalità nel 2D e nel 3D. Tabella 3: rappresentazione “Separata” delle funzionalità nel 2D e nel 3D. Tabella 4: distinzione di classi di agente. Tabella 5: livelli di autonomia di un agente. Tabella 6: data, luogo e numero di morti (feriti) nei maggiori incidenti verificatesi precedentemente al 1992. Nell’ultima riga sono riportati in colore rosso il conteggio totale dei morti (feriti) avvenuti negli incidenti di massa in tutto il mondo. 58 10. Ringraziamenti Ringrazio la Prof.ssa Stefania Bandini per avermi dato la possibilità di sviluppare la tesi all’interno del Laboratorio di Ingegneria della Conoscenza. Ringrazio tutti i ragazzi del LABIC. Ringrazio Giuseppe per i preziosi consigli, il supporto e la comprensione avuta in ogni momento; Michele che mi ha dato ispirazione e aiutato in ogni modo e circostanza. Ringrazio tutta la mia famiglia per il sostegno e l’infinita pazienza avuta in questi anni, per avermi incoraggiato e aver sempre creduto in me ; mie sorelle Laura e Paola con cui ho trascorso tutta la vita e mi hanno anche accudito. Un riferimento particolare a Mariadaria, che mi ha accompagnato nei momenti di maggiore difficoltà offrendomi tutte le sue energie, e a Lele, amico e fratello. Mi è impossibile non citare tutti gli amici cari con cui ho sempre condiviso le migliori esperienze: papà Cero con tutta la famiglia, Khama, Manu, Raffa, Eros, Ragno, Cri, Patty, Roby, Manu, Dario, Claudio, Turri, Dada, Teo, Doc, Frank,… Un bacio alle mie nipotine Federica, Giorgia e Giulia. 59