Studio ed implementazione di modelli ed algoritmi per il rendering aptico di oggetti deformabili

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Studio ed implementazione di modelli ed algoritmi per il rendering aptico di oggetti deformabili"

Transcript

1 UNIVERSITÀ DEGLI STUDI DI SIENA Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica indirizzo Sistemi Informatici e Multimediali Studio ed implementazione di modelli ed algoritmi per il rendering aptico di oggetti deformabili Relatore: Chiar.mo Prof. Domenico Prattichizzo Correlatore: Dott. Maurizio de Pascale Tesi di Laurea di: Sara Mulatto Anno Accademico

2 Doverosi ringraziamenti devono essere rivolti al professor Domenico Prattichizzo e al Dott. Maurizio de Pascale, che con la loro disponibilità e pazienza hanno saputo seguirmi e consigliarmi durante la stesura della presente Tesi. i

3 Indice Introduzione 1 1 Interazione Aptica Ambienti virtuali Interfacce Aptiche Struttura di un interfaccia aptica Caratteristiche di un interfaccia aptica Classificazione delle interfacce aptiche Applicazione delle Interfacce Aptiche Algoritmi di rendering aptico Collision detection Rendering di forza Controllo di forza Modelli per la dinamica degli oggetti virtuali Sistemi massa-molla-smorzatore FEM - Finite Element Method Metodi numerici per la risoluzione di Equazioni Differenziali Equazioni differenziali Metodo di Eulero Metodo implicito ii

4 INDICE iii 3 Rendering Grafico Pipeline di rendering grafico Architettura hardware utilizzata DirectX OpenGL Schede Video Programmabili GPU - Graphics Processing Unit Vertex Shader Pixel Shader Controllo sul flusso nelle GPU Linguaggi di shading C for graphics Vertex Processor programmabili Fragment Processor programmabili GPU vs CPU Metodo per deformazioni locali GPU-friendly Motivazioni Panoramica Generale Aggiornamento delle normali Multi-contact Gestione delle singolarità Dettagli implementativi Haptik Library Metodo di integrazione numerica adottato Aggiornamento della posizione e delle normali Conclusioni e Sviluppi futuri 93 A Caratteristiche meccaniche delle interfacce aptiche 96

5 INDICE iv Bibliografia 99

6 Elenco delle figure 1.1 Terzo livello d immersione Componenti di un manipolatore industriale PHANToM, esempio di dispositivo aptico ad impedenza Esempio di interfaccia aptica usata per la riabilitazione della mano Da VinciTM Surgical System utilizzato per effettuare teleoperazioni Sistema Fetus Touch (ancora in via di sperimentazione) per la percezione tattile dei lineamenti di un bambino che deve ancora nascere Esempio di interazione aptica con un organo; in blu il punto di contatto Schematizzazione dell algoritmo di rendering aptico Rendering di forza in volumi di piccole dimensioni; in rosso il punto di contatto Rappresentazione della collision detection Modellazione di oggetti rigidi Modellazione di oggetti deformabili Schema alternativo per la modellazione di oggetti deformabili Dettagli del modello descritto in Figura Schema ottenuto dopo aver applicato la tecnica di Lifting v

7 ELENCO DELLE FIGURE vi 2.1 Sistema massa-molla-smorzatore Andamento sinusoidale del sistema in presenza di una forza F della stessa direzione dell accelerazione del moto armonico semplice (a) e di direzione opposta (b) Errore introdotto dal metodo di Eulero nella funzione x 2 +y 2 = costante; in rosso è identificata la traiettoria ideale, in verde quella reale Schematizzazione della fase di rendering grafico Triangolarizzazione di un poligono concavo Triangolarizzazione di una nuvola di punti Schematizzazione della pipeline di rendering grafico Schematizzazione della pipeline completa Architettura utilizzata per il rendering grafico NVIDIA s GeForce Architettura di 3DFx s Voodoo Transform & Lighting Unit Step eseguiti dalla GPU per il rendering grafico Esempio di operazioni che possono essere effettuate su un triangolo da un Vertex e da un Pixel Shader Flow-chart di un Vertex Processor programmabile Flow-chart di un Fragment Processor programmabile GPU vs CPU Esempio di rappresentazione di una superficie attraverso mesh triangolare Sistemi massa-molla-smorzatore applicati ai vertici di una superficie Funzione gaussiana normalizzata utilizzata per rappresentare una deformazione locale

8 ELENCO DELLE FIGURE vii 5.4 Normali applicate sui vertici di una superficie triangolarizzata Normale N v ottenuta come media delle normali appartenenti a ciascun poligono che coindivide il vertice Calcolo del vettore normale associato al vertice di un triangolo Rappresentazione del un contatto con due interfacce aptiche Esempio di multi-contatto (1) Esempio di multi-contatto (2) Esempio di multi-contatto (3) Esempio di multi-contatto (4) Esempio di cubo e di cubo smussato Cubo non deformato e normali nei vertici della mesh Deformazione della superficie di un cubo in prossimità di uno spigolo Deformazione della superficie di un cubo in prossimità di uno spigolo e visualizzazione delle normali aggiornate Haptik Library sviluppata nel SIRSLab dell Università degli Studi di Siena Interfaccia creata grazie all utilizzo dell Haptik Library che permette di utilizzare il mouse in alternativa ad un dispositivo aptico A.1 Sistema massa-molla-smorzatore

9 Introduzione Ciascuno di noi resta affascinato davanti alla possibilità di potersi immergere in situazioni fuori dal comune. Ciò ha portato alla nascita della realtà virtuale, grazie alla quale possono essere riprodotti scenari di ogni genere. Inizialmente gli ambienti di realtà virtuale coinvolgevano simulazioni di natura visiva ed uditiva. Il grande limite di una simulazione di questo tipo era la mancanza di percezioni tattili all interno della scena, che dava origine a realizzazioni ancora troppo distanti dalla realtà vera e propria. Solo con l introduzione di dispositivi ad hoc, le interfacce aptiche, prodotti dalla seconda metà degli anni 90 si è potuto iniziare a far fronte a questo problema, dal momento che tali dispositivi meccanici rendono possibili alcune delle percezioni tattili attraverso un feedback di forza. Si è quindi reso necessario studiare tecniche sempre migliori per permettere alle simulazioni di realtà virtuale di essere il più realistiche possibile, focalizzando l attenzione sul feedback di forza prodotto dai dispositivi aptici e la possibilità di realizzare esecuzioni delle applicazioni in tempo reale. Oggetto di questa Tesi è studiare i modelli per la riproduzione dell interazione aptica di deformazioni locali con oggetti virtuali, al fine di raggiungere simulazioni caratterizzate da un elevato realismo e la cui esecuzione sia possibile in tempo reale. L implementazione in tempo reale e un esigenza che mal si coniuga con l elevata complessità computazionale che caratterizza tutti gli algoritmi che implementano modelli dinamici di scenari virtuali caratterizzati da un forte realismo. Per garantire una simulazione tattile realistica di 1

10 INTRODUZIONE 2 oggetti rigidi, nel contesto di applicazioni aptiche è necessario che gli aggiornamenti della dinamica siano effettuati con frequenze ancora più elevate. Conseguentemente l impiego di tali metodi risulta inadatto, obbligando alla ricerca di metodi dal carico computazionale inferiore. Per ridurre le problematiche prima esposte, questa Tesi propone un metodo per realizzare simulazioni a bassa complessità; computazionale, e quindi adatte ad una implementazione real time, ma caratterizzate da un elevato realismo. Tale metodo trova fondamento nella modellizzazione della dinamica degli oggetti deformabili all interno di un ambiente virtuale attraverso sistemi massa-molla-smorzatore, che permettono di utilizzare le capacità di calcolo delle più moderne schede video programmabili. Queste, infatti, sono dotate di un microprocessore, la GPU (Graphics Processing Unit), che è in grado di farsi carico delle elaborazioni grafiche, sollevando in questo modo la CPU da gran parte dell onere computazionale e riducendo, per quanto possibile, i tempi di latenza originati dallo scambio di dati tra questi due processori. Per il conferimento alla scena del giusto realismo, si è reso necessario porre particolare attenzione allo sviluppo di tecniche per l aggiornamento delle normali alla superficie dell oggetto ed a quelle che prevedono il contatto con oggetti deformabili caratterizzati da spigolosità superficiali. L aggiornamento delle normali a seguito di una deformazione è fondamentale in quanto proprio su di esse si basano le tecniche comunemente utilizzate per il calcolo dell illuminazione della scena. Infine si è esteso il metodo inizialmente proposto per un solo punto di contatto a scenari in cui la deformazione della superficie dell oggetto è provocata dall interazione con più dispositivi aptici (in tal caso si parla di multicontatto). Lo studio del metodo esteso ha previsto la soluzione di un sistema per il calcolo dell effetto di ciascun contatto sulla deformazione complessiva dell oggetto, cioè di un peso ad esso associato. Riprodurre simulazioni visuo-tattili per il rendering di oggetti deformabili è un compito molto difficile, a causa non solo della scelta dei modelli dinamici e dei limiti imposti dalle potenze di calcolo, ma anche alla problematicità

11 INTRODUZIONE 3 che si riscontra nello sviluppo di dispositivi meccanici capaci di far percepire tutte le sensazioni tattili di cui in realtà disponiamo. La continua evoluzione delle interfacce aptiche, che porta allo sviluppo di dispositivi dalle prestazioni sempre migliori porta a pensare di poter giungere al concepimento di tecniche sempre più innovative, in cui lo studio dei modelli dinamici congiuntamente alle schede video programmabili, anch esse in fase di evoluzione, rivestono un ruolo indispensabile. Il lavoro presentato in questa Tesi parte da un analisi dei dispositivi aptici, descritti approfonditamente nel Capitolo 1. Nel Capitolo successivo vengono analizzate le tecniche comunemente utilizzate per la modellizzazione della dinamica degli oggetti deformabili ed i metodi numerici per la risoluzione di equazioni differenziali. Il Capitolo 3 descrive il processo di rendering grafico attraverso le API OpenGL e DirectX. Il Capitolo 4 è dedicato alle Schede Video Programmabili, alla loro evoluzione ed alla programmazione della GPU. Infine, nell ultimo Capitolo è esaminato il metodo da noi proposto per la realizzazione di sistemi per il rendering aptico di oggetti deformabili.

12 Capitolo 1 Interazione Aptica Negli ultimi decenni si è potuto assistere ad una crescita sempre maggiore dell interesse degli studiosi per la realtà virtuale 1 (Virtual Reality), ed in particolare verso lo studio delle metodologie che permettono l interazione dell uomo con essa. In tale contesto un ruolo di particolare rilievo è ricoperto dalle Interfacce Aptiche, dispositivi robotici grazie ai quali nuove forme di interazione con ambienti virtuali (Virtual Environment) sono oggi possibili. 1.1 Ambienti virtuali Un ambiente virtuale è la riproduzione di un ambiente reale simulato al computer, in cui l utente è in grado di percepire la propria presenza o la rappresentazione di se stesso. In un ambiente virtuale l utente può immergersi su tre livelli diversi. In un primo livello l operatore è in grado di percepire la propria presenza all interno del virtual environment. Nel secondo livello di immersione l operatore, dotato della capacità di muovere i sensori attraverso cui riceve le informazioni necessarie, naviga all interno dell ambiente simulato. Infine, nel terzo livello d immersione l operatore giunge a poter interagire 1 Termine utilizzato per indicare una realtà simulata, creata, cioè, con l ausilio di computer. 4

13 CAPITOLO 1. Interazione Aptica 5 con l ambiente virtuale. Se per il raggiungimento dei primi due livelli sono sufficienti simulazioni grafiche ed audio, capaci cioè di riprodurre stimolazioni di natura visiva ed uditiva, per raggiungere pienamente il terzo livello di immersione è necessario fornire all utente anche una stimolazione tattile, resa possibile riproducendo all interno della simulazione tutte le forze esercitate dall ambiente esterno. La grande differenza, infatti, tra un immersione del primo o del secondo tipo rispetto ad una del terzo sta nel ruolo che l operatore assume all interno del virtual environment : se nel primo e nel secondo livello il suo ruolo è passivo, il terzo livello conferisce all operatore un ruolo attivo. Figura 1.1: Terzo livello d immersione Questo crea la necessità di simulazioni in grado di calcolare in tempo reale tutte le situazioni di contatto al fine di far percepire correttamente all utente le forze agenti dall esterno: non basta più caratterizzare gli oggetti dell ambiente simulato solo dal punto di vista grafico, ma è necessario caratterizzarli anche dal punto di vista fisico, specificando per ciascuno i valori delle loro caratteristiche fisiche, come ad esempio, peso, viscosità, rigidezza, inerzia. Le simulazioni di realtà virtuale si avvalgono oggi della potenza delle Schede Video Programmabili, in grado di farsi carico non solo delle elaborazioni grafiche ma anche di parte della simulazione visuo-tattile, e di Interfacce Aptiche, per l interfacciamento con l utente, che permette a quest ultimo di ricevere delle stimolazioni tattili attraverso un feedback di forza.

14 CAPITOLO 1. Interazione Aptica Interfacce Aptiche Con il termine interfaccia, solitamente, identifichiamo quel dispositivo fisico o virtuale che permette la comunicazione e, quindi, lo scambio di informazioni tra due o più entità di tipo diverso. In campo tecnologico il termine indica spesso sistemi per lo scambio di informazioni tra un essere umano e la macchina, in altre parole tra reale ed artificiale. Il termine aptico deriva dal greco apto, che significa tocco: con questo attributo, perciò, s intende qualcosa che abbia a che fare con il tatto. Un interfaccia aptica, quindi, è un dispositivo robotico studiato per interagire direttamente con l operatore umano, che riceve in risposta delle sensazioni tattili, come, ad esempio, le forze relative all oggetto con cui sta avvenendo il contatto. Semplici interfacce aptiche sono un joystick con ritorno di forza o un mouse la cui rotellina si dovesse bloccare nel punto in cui l utente raggiungesse il margine dello schermo. Storicamente le tecnologie aptiche sono nate negli anni 60 contemporaneamente alla nascita e allo sviluppo della robotica. Inizialmente hanno trovato applicazione nello sviluppo di sistemi per il controllo remoto di robot, di bracci robotizzati nell ambito di voli spaziali e nel trattamento di materiali altamente nocivi per l uomo (come i combustibili utilizzati nelle centrali nucleari). Queste prime realizzazioni hanno visto, in genere, l Human Machine Interface - HMI - connessa fisicamente con il dispositivo controllato, ma incapaci di effettuare il force feedback, cioè di restituire in risposta sensazioni tattili. Solo a partire dalla seconda metà degli anni 80 sono state sviluppate le prime interfacce aptiche connesse ai sistemi robotici tramite reti di comunicazione locali (LAN), svincolando l operatore connesso alla HMI dal dispositivo che veniva controllato ed in grado di effettuare il force feedback. Questo ha permesso la nascita di innumerevoli nuove applicazioni, basate sul controllo remoto e sensorizzato, come, ad esempio, la telechirurgia. Negli ultimi anni abbiamo potuto assistere alla nascita di nuovi dispositivi aptici

15 CAPITOLO 1. Interazione Aptica 7 dotati di una grande flessibilità garantita sia dalla possibilità di gestione di un elevato numero di gradi di libertà da parte del dispositivo stesso, sia dall implementazione di nuovi algoritmi per la compensazione di ampi ritardi di trasmissione, che permette la gestione remota anche su reti geografiche tradizionali (WAN) Struttura di un interfaccia aptica Un interfaccia aptica è un dispositivo elettromeccanico costituito da due parti principali: Manipolatore: è la parte meccanica vera e propria, ed è costituita da varie componenti (vedi Figura 1.2): 1. una base: fissata nell ambiente di lavoro o costituita da una piattaforma mobile. 2. una serie di links: parti rigide di collegamento. 3. una serie di giunti: snodi che permettono il collegamento tra i links. 4. un end-effector: parte terminale del manipolatore, connesso al resto del dispositivo meccanico attraverso un polso che permette all end-effector di muoversi liberamente. Sistema di programmazione e di controllo: è un sofisticato dispositivo di calcolo, composto da un multiprocessore collegato in rete ad altre risorse locali, quali sensori (che servono a misurare la posizione del dispositivo attraverso degli encoders 2 ), attuatori (che sono gli elementi, in genere elettrici o idraulici, utilizzati per effettuare i movimenti del dispositivo) e controllori (che servono per effettuare il feedback sui movimenti del dispositivo). Le funzionalità richieste ad 2 Meccanismi digitali a scatto che rilevano le posizioni degli angoli.

16 CAPITOLO 1. Interazione Aptica 8 un sistema di programmazione e di controllo sono l immagazzinamento dati, il controllo dei giunti in tempo reale, il monitoraggio dei sensori e la capacità di interazione con l utente. Figura 1.2: Componenti di un manipolatore industriale L utente si collega ad un interfaccia aptica attraverso l end-effector del manipolatore, imponendogli i movimenti da effettuare, che vengono rilevati dai controllori. A questo punto viene calcolata la forza esercitata dal dispositivo (applicata attraverso gli attuatori presenti al suo interno) in funzione della posizione dell end-effector Caratteristiche di un interfaccia aptica Affinché un dispositivo robotico possa essere ritenuto in grado di simulare l interazione fisica con l ambiente esterno, deve possedere tre caratteristiche fondamentali: 1. Elevata trasparenza: Se non viene rilevata nessuna interazione con l ambiente circostante, l utente non deve percepire la presenza del dispositivo; pertanto, l interfaccia aptica deve essere realizzata in modo tale che le forze di reazione, necessarie al suo spostamento ed esercitate sull operatore durante le variazioni di posizione effettuate nello spazio

17 CAPITOLO 1. Interazione Aptica 9 libero siano ridotte al minimo. In altre parole, occorre ridurre al minimo le forze dovute al peso del dispositivo, agli attriti interni e alle masse in movimento (cioè alle forze inerziali). Per fare in modo che questa condizione sia rispettata, occorre intervenire sia sulla componente meccanica del dispositivo (quindi sulla cinematica, sui sistemi di trasmissione, sugli attuatori, sulle parti strutturali, ecc...), sia su quella di controllo degli attuatori, mediante tecniche di compensazione nei riguardi di attrito, gravità ed inerzia. 2. Elevata rigidezza: Nel momento in cui avviene l interazione tra l utente ed il dispositivo meccanico, la percezione del contatto con oggetti dell ambiente circostante deve essere la più realistica possibile. Supponiamo, in un caso limite, che la rigidezza di un oggetto possa essere infinita, il dispositivo utilizzato dovrà essere capace di riprodurre rigidezze sufficientemente elevate. Anche in questo caso, per garantire che tale condizione sia rispettata, si deve operare sulla componente meccanica dell interfaccia aptica (quindi sulle trasmissioni e sulle parti strutturali), e su quella di controllo, imponendo che il guadagno d anello sia elevato. 3. Elevata banda passante: Nel momento in cui avviene il passaggio da una fase di non contatto ad una fase di contatto, il dispositivo deve essere in grado di generare delle forze che abbiano una dinamica temporale elevata (cioè un alto contenuto spettrale), soprattutto nel caso in cui si abbia la necessità di simulare l urto con oggetti rigidi. Per garantire questa condizione è necessario agire elevando la frequenza appartenente alla componente meccanica del dispositivo. Le componenti meccaniche che influiscono maggiormente sulle caratteristiche sopra citate sono gli attuatori, per cui possiamo tradurre tali condizioni in caratteristiche fondamentali per gli attuatori. Idealmente vorremmo avere attuatori che forniscano in uscita una forza indipendente dai movimenti del

18 CAPITOLO 1. Interazione Aptica 10 carico. Gli attuatori reali, invece, mostrano delle limitazioni, dovute soprattutto alla presenza di inerzie, di attriti e ad una banda passante limitata, che fanno sì che il loro comportamento si discosti da quello ideale. Per questo, al fine di garantire il corretto funzionamento del dispositivo, dobbiamo assicurarci che alcune condizioni siano rispettate: 1. Elevato rapporto forza/ingombro 2. Elevato rapporto forza/peso 3. Elevato rapporto forza/inerzia: Nel caso in cui siano presenti inerzie, si crea una forza aggiuntiva, legata alle accelerazioni del carico. Dal momento che questa forza non deve essere avvertita dall utente, si rende necessario compensarla, provocando un innalzamento nella complessità del controllo dell attuatore nel caso in cui siano presenti inerzie rilevanti rispetto al carico applicato. 4. Elevato fattore dinamico: Il fattore dinamico è definito come il rapporto tra la forza massima e la forza minima generabili dall attuatore (la forza minima esercitabile dall attuatore è causata dagli attriti interni che si determinano tra le componenti dell attuatore in moto relativo). Nella progettazione degli attuatori, di solito, si tende a massimizzare il fattore dinamico, cercando, quindi, di minimizzare, per quanto possibile, la forza minima esercitabile. 5. Elevata banda passante: La banda passante di un attuatore è la frequenza massima raggiungibile effettuando comunque un controllo di forza accurato. Questo valore dipende dal principio fisico scelto per la trasformazione da energia elettrica ad energia meccanica nonché delle parti mobili dell attuatore. Di solito gli attuatori utilizzati nelle interfacce aptiche sono dei servomotori elettromagnetici, che possono essere o interfacciati direttamente con il carico o usati insieme a riduttori. In entrambi i casi si presentano però degli inconvenienti. Nel primo

19 CAPITOLO 1. Interazione Aptica 11 caso, infatti, poiché interfacciati direttamente, possono essere controllati con più accuratezza, essendo caratterizzati da una relazione che lega linearmente la corrente in entrata e la forza in uscita. Proprio per questo possono essere considerati una buona approssimazione di un attuatore ideale di forza, che, tuttavia, conduce ad un utilizzo poco efficiente. Infatti, dal momento che un interfaccia aptica, generalmente, richiede un elevata forza di uscita, gli attuatori si troveranno ad agire ad una velocità relativamente bassa. Questo perché, essendo il motore dimensionato in base alla massima forza richiesta, risulterà sovradimensionato rispetto alla potenza effettivamente richiesta in uscita, e, quindi pesante e ingombrante. Nel caso, invece, in cui impiegassimo dei riduttori, potremmo utilizzare dei motori più piccoli e leggeri. Questa soluzione crea, però, problemi, dal momento che si determina un incremento sensibile degli attriti complessivi e dell inerzia. Per cercare di ridurre il più possibile questi effetti, si può mettere un sensore di forza a valle del riduttore. In questo modo è possibile ridurre l errore tra la forza desiderata e quella generata esercitando un opportuna azione di controllo sull attuatore. Un controllo di questo tipo risulta essere, però, molto più complesso e delicato. 6. Elevata controllabilità della forza: È necessario effettuare un accurato controllo sulla forza generata affinché questa si avvicini maggiormente a quella desiderata. Per un risultato migliore, qualora sia possibile, è conveniente posizionare gli attuatori sulla parte fissa del dispositivo, rendendo la soluzione più praticabile, senza peggiorare le caratteristiche inerziali del dispositivo aptico. 7. Costi contenuti

20 CAPITOLO 1. Interazione Aptica Classificazione delle interfacce aptiche In letteratura esistono più metodologie per la classificazione delle interfacce aptiche. Si può effettuare una prima distinzione che scaturisce dalla posizione della base, che permette di suddividere tali dispositivi in desktop e non-desktop. Appartengono alla prima categoria quelli a base fissa, che possono quindi operare dal piano di lavoro su cui sono posti. I dispositivi non-desktop sono, al contrario, quelli che non dispongono di una base fissa, ma, ad esempio, possono essere indossati. Hanno la peculiarità di poter disporre di molti gradi di libertà e si differenziano da quelli desktop perché, spesso, nel loro utilizzo non richiedono solo il movimento degli arti superiori dell utente ma anche di quelli inferiori. Una seconda suddivisione può essere fatta analizzando il principio meccanico che ne determina il funzionamento: per questo possiamo trovare dispositivi a impedenza e dispositivi ad ammettenza 3 (vedi Appendice A). Un interfaccia aptica ad impedenza, dopo aver misurato la posizione o la velocità, genera in uscita la forza corrispondente. Al contrario, un interfaccia aptica ad ammettenza, in base ad una misura di forza, calcola e restituisce la posizione o la velocità corrispondenti. Meno costosi da produrre e di architettura più semplice, sono molto più diffusi i dispositivi aptici ad impedenza, utilizzati anche negli studi portati avanti in questa Tesi. Infine, può essere effettuata una suddivisione in base al numero di gradi di libertà di movimento o di forza che l interfaccia aptica possiede. Il numero di gradi di libertà (Degree of freedom - DOF) è il numero di direzioni in cui il dispositivo è in grado di effettuare un movimento o applicare una forza. 3 Vengono classificati come dispositivi ad impedenza sia i dispositivi che basano il proprio funzionamento sull impedenza che sulla stiffness; come dispositivi ad ammettenza sia quelli che basano il proprio funzionamento sull ammettenza che sulla compliance.

21 CAPITOLO 1. Interazione Aptica 13 Figura 1.3: PHANToM, esempio di dispositivo aptico ad impedenza Applicazione delle Interfacce Aptiche Le interfacce aptiche trovano molteplici applicazioni. Senza dubbio, proprio per come sono state concepite, sono utilizzate in tutti i casi in cui il lavoro da compiere risulti essere rischioso sia per l operatore che per le cose e le persone che si trovano nell area di lavoro. Ad esempio, possono essere utilizzate nei casi in cui sia necessario manipolare materiale radioattivo nelle centrali nucleari, per installazioni sottomarine e per costruzioni spaziali. La possibilità di disporre di potenze di calcolo abbastanza elevate a costi relativamente bassi e l inserimento di sistemi digitali in campo medico ha portato alla diffusione, anche commerciale, di sistemi aptici ideati appositamente per questo settore. L applicazione, per esempio, nella simulazione chirurgica: con i dispositivi aptici è possibile la creazione di ambienti virtuali, ma anche quella di pazienti virtuali. La chirurgia è sempre stata una tecnica manuale appresa dai libri. L inserimento di sistemi che simulino un paziente virtuale ha rivoluzionato e apportato miglioramenti nelle tecniche di apprendimento delle nuove generazioni di chirurghi che, in questo modo, possono fare esperienza diretta (sebbene virtuale) e non solo teorica. Oltre a disporre di un robot aptico, per un applicazione di questo tipo, è necessario anche un output grafico per la generazione dell immagine virtuale. Se questo è abbastanza semplice da ottenere, ad esempio utilizzando un elmetto tridimensionale in

22 CAPITOLO 1. Interazione Aptica 14 grado di fornire immagini del paziente virtuale, non è altrettanto semplice riuscire a riprodurre tutte le sensazioni necessarie presenti nella mano umana essendo questa dotata di moltissimi sensori percettivi. Perciò, di solito, vengono create interfacce aptiche legate ad un particolare tipo di operazione, come ad esempio quelle in grado di simulare operazioni di laparoscopia, in cui è necessario che solo alcuni gradi di libertà siano resi attivi. Figura 1.4: Esempio di interfaccia aptica usata per la riabilitazione della mano Spesso le interfacce aptiche possono essere utilizzate anche a scopi riabilitativi. Il numero di persone che ogni anno, a causa di traumi celebrali, perdono coordinazione, forza e sensibilità, è molto elevato. Spesso queste capacità possono essere recuperate, parzialmente o totalmente, se coadiuvate da una corretta cura fisioterapica, che consiste nella movimentazione degli arti, assistita da un operatore, per permettere la rigenerazione del sistema nervoso danneggiato. Attraverso i dispositivi aptici è possibile effettuare terapie riabilitative; si possono, infatti, eseguire movimenti nello spazio tridimensionale, ricalcando traiettorie predefinite e offrendo la possibilità di monitorare i progressi avvenuti. Inoltre, se supportati da simulazioni grafiche, si può fare in modo che il paziente s immerga in un ambiente virtuale in cui esercitarsi

23 CAPITOLO 1. Interazione Aptica 15 nella presa di oggetti come una palla, un cubo o un fiammifero, attraverso task di diversa difficoltà. Figura 1.5: Da VinciTM Surgical System utilizzato per effettuare teleoperazioni Sempre in campo medico le interfacce aptiche si sono rivelate particolarmente utili nelle teleoperazioni, permettendo al chirurgo di intervenire sul paziente anche in modalità remota. Un sistema di questo tipo è composto da due moduli: un sistema aptico master ed uno slave. Il chirurgo è seduto sulla stazione master e poggia la testa su una struttura che gli permette una visione tridimensionale della zona da operare. Inoltre appoggia i gomiti alla struttura inserendo l indice ed il pollice di ogni mano in ditali robotizzati (end-effector del robot master) che simulano la presenza di una pinza o di una cesoia. Attraverso dei sensori di posizione, posti sul sistema master, è possibile calcolare la traiettoria compiuta dagli end-effector collegati all operatore. I dati vengono trasmessi al sistema slave, composto da due braccia robotizzate in grado di riprodurre fedelmente i movimenti effettuati dal chirurgo. L operazione vera e propria viene eseguita dagli end-effector del sistema slave, che, in aggiunta, attraverso uno o più sensori di forza, ha la capacità di calcolare le forze scaturite dal contatto tra gli end-effector ed i corpi con cui entrano

24 CAPITOLO 1. Interazione Aptica 16 in contatto. Questi dati vengono inviati al sistema master con un flusso di dati di ritorno, permettendo così al robot di riprodurle e fornire all operatore la sensazione del contatto. I vantaggi apportati da un applicazione di questo tipo sono molteplici, sia per la maggiore precisione sia per le modalità meno invasive. Maggiore precisione in quanto il chirurgo viene indirizzato verso l esatta traiettoria da seguire, riuscendo ad evitare anche tutti gli inconvenienti che possono essere causati da un eventuale tremore alle mani. Applicazione di tecniche meno invasive in quanto possono essere eseguite forti riduzioni di scala di forze e/o di spazio. Così un movimento dell ordine dei centimetri eseguito dall operatore può essere tradotto in spostamenti millimetrici da parte del sistema slave. Figura 1.6: Sistema Fetus Touch (ancora in via di sperimentazione) per la percezione tattile dei lineamenti di un bambino che deve ancora nascere L uso di dispositivi aptici in campo medico-diagnostico può condurre a notevoli miglioramenti in questo settore. Un applicazione in tal senso, ad esempio, permette, attraverso esplorazione tattile, di poter percepire la consistenza di un tessuto o, addirittura, di far accarezzare ad una futura mamma il figlio ancor prima che nasca. La difficoltà più grande è quella di riuscire a riprodurre correttamente la reale durezza o cedevolezza degli organi (come

25 CAPITOLO 1. Interazione Aptica 17 ad esempio il fegato), a partire da esami meno invasivi quali l ecografia o la risonanza magnetica. Figura 1.7: Esempio di interazione aptica con un organo; in blu il punto di contatto 1.3 Algoritmi di rendering aptico Gli algoritmi di rendering aptico sono utilizzati per calcolare il più correttamente possibile le forze d interazione tra l avatar e l ambiente virtuale. L avatar è la rappresentazione virtuale dell interfaccia aptica all interno del virtual environment, che permette l interazione fisica dell utente con l ambiente stesso. La scelta dell avatar viene effettuata in base a ciò che deve essere simulato e alle prestazioni del dispositivo aptico, due elementi che influenzano le forze restituite. Un algoritmo di rendering aptico deve contenere al suo interno tre blocchi principali: Collision detection: l algoritmo per la collision detection serve per identificare le collisioni che avvengono tra l avatar e gli oggetti all interno dell ambiente virtuale.

26 CAPITOLO 1. Interazione Aptica 18 Figura 1.8: Schematizzazione dell algoritmo di rendering aptico Force-response: l algoritmo per il force-responce serve per calcolare le forze scaturite dal contatto tra l avatar e gli oggetti dell ambiente virtuale (nel caso in cui avvenga almeno una collisione). Spesso però, a causa delle limitazioni fisiche del dispositivo aptico, non è possibile riprodurre nel modo migliore le forze, e pertanto, si rende necessario attuare un blocco in cui viene effettuato il controllo di forza. Controllo di forza: l algoritmo per il controllo di forza permette di minimizzare l errore tra la forza ideale che viene percepita durante un contatto e quella realmente applicabile dal dispositivo. Tipicamente, la singola esecuzione di un algoritmo di rendering aptico si svolge come segue: 1. I sensori di posizione appartenenti al dispositivo aptico rilevano dei dati, che, se elaborati correttamente, permettono di identificare la posizione dell avatar nello spazio Cartesiano. Questa informazione va a costituire il dato d ingresso dell algoritmo. 2. Potendo disporre della posizione in cui si trova l interfaccia aptica, viene eseguita la collision detection, durante la quale è possibile stabilire se

27 CAPITOLO 1. Interazione Aptica 19 avvengono o meno delle collisioni tra l avatar e gli oggetti appartenenti allo spazio virtuale. 3. Nel caso in cui siano state rilevate delle collisioni, l algoritmo di forceresponce calcola le forze provocate durante il contatto; altrimenti, la forza restituita sarà nulla. 4. Infine, le informazioni sulla forza calcolata dall algoritmo di rendering della forza sono inviate all algoritmo per il controllo di forza che calcola le forze realmente applicate dal dispositivo, in modo da rendere l effetto il più realistico possibile, senza che siano però trascurate le sue caratteristiche fisiche. Malgrado non siano state espresse delle regole precise riguardo alla scelta della frequenza di ripetizione di un algoritmo di rendering aptico, spesso si adotta una frequenza di 1 KHz. Tale scelta, infatti, è un compromesso accettabile che permette, da un lato, la rappresentazione di oggetti abbastanza complessi attraverso un impedenza ragionevole, dall altro una complessità di calcolo non troppo elevata. Certo una frequenza più elevata permetterebbe l utilizzo di oggetti molto più dettagliati e complessi, a scapito però delle prestazioni che, in questo modo, necessiterebbero dell utilizzo di calcolatori molto più potenti e, conseguentemente, di costi maggiori Collision detection La collision detection è fondamentale per una simulazione aptica e per tutte quelle applicazioni, come la computer animation o la rappresentazione di oggetti, basata su modelli fisici, in cui le interazioni tra gli oggetti in movimento sono modellate attraverso l utilizzo di vincoli dinamici ed analisi del contatto. Gli oggetti virtuali appartenenti ad un virtual environment sono caratterizzati da un moto vincolato da vari fattori, uno dei quali è proprio il contatto. Se si pone, ad esempio, la condizione che l oggetto non possa

28 CAPITOLO 1. Interazione Aptica 20 attraversare le pareti di una stanza o gli elementi esistenti nell ambiente circostante, si possono ottenere simulazioni ad elevato realismo attuabili grazie all utilizzo di algoritmi di collision detection molto accurati. Il problema diventa poi ancora più rilevante nel contesto del rendering aptico laddove il risultato della collision detection è determinante nel calcolo del feedback di forza (vedi Paragrafo 1.3.2). Ad esempio in una situazione come quella mostrata nella Figura 1.9, in presenza cioè di oggetti sottili, algoritmi di collision detection non robusti possono sbagliare nella determinazione della reale superficie di contatto, dando origine alla generazione di forze di feedback nella direzione opposta a quella corretta [42]. Questo fa si che l interfaccia aptica attraversi la superficie dell oggetto, dando luogo al fenomeno noto come pop-through. Figura 1.9: Rendering di forza in volumi di piccole dimensioni; in rosso il punto di contatto In un ambiente virtuale possono essere presenti molti oggetti contemporaneamente, causando incrementi non trascurabili nella complessità computazionale e contrastando l esigenza di esecuzioni in tempo reale di cui le interazioni aptiche necessitano. Nell ampia letteratura relativa al problema generale della collision detection, sono stati proposti diversi metodi adatti al particolare contesto dell interazione aptica. Il più delle volte si tratta di algoritmi generici, specializzati però sul particolare problema della collisione tra segmenti e corpi estesi, che portano ad ottenere frequenze di esecuzione molto elevate. Per questo la scelta dell algoritmo di collision detection si rivela basilare per le prestazioni conseguite durante le simulazioni aptiche.

29 CAPITOLO 1. Interazione Aptica 21 Figura 1.10: Rappresentazione della collision detection Rendering di forza L uomo ha la capacità di percepire la sensazione del tatto attraverso dei sensori (meccanorecettori, recettori nervosi e termorecettori), posti sulla pelle, sulle articolazioni, sui tendini e sui muscoli. Il contributo maggiore sul contatto con un oggetto è dato dai meccanorecettori, che acquisiscono due tipologie di informazioni: tattili e cinestetiche. Le informazioni tattili sono tutte quelle informazioni sulla pressione che avviene nell area di contatto. Le informazioni cinestetiche sono quelle derivate dalla percezione del movimento e della posizione del nostro corpo nello spazio, quindi, di tutte le parti che lo compongono, come testa, braccia e gambe.é grazie a questa capacità che siamo in grado di portare le mani al naso con gli occhi chiusi. Per una simulazione che ricalchi il più fedelmente possibile la realtà, è necessario riprodurre la sensazione del tatto, acquisendo sia informazioni di tipo tattili che cinestetiche. La cinestesia si rivela scienza fondamentale per la progettazione di interfacce aptiche. Le informazioni cinestetiche permettono di stabilire gli intervalli di frequenze in cui i sensi umani sono in grado di reagire correttamente agli stimoli esterni: la vibrazione delle dita, ad esempio, può essere percepita nella banda di frequenza Hz, 320 Hz, invece, è la frequenza massima per poter percepire sulle dita due segnali consecutivi di forza. L acquisizione di informazioni tattili e cinestetiche avviene durante l esecuzione dell algoritmo di rendering aptico, più precisamente nella fase di rendering di forza.

30 CAPITOLO 1. Interazione Aptica 22 Quando simuliamo ambienti virtuali abbiamo anche la possibilità di riprodurre le caratteristiche degli oggetti che si trovano al suo interno. Caratteristica fondamentale per un oggetto è la sua deformabilità, che porta ad avere oggetti deformabili o oggetti non deformabili. In un ambiente virtuale questa differenza crea l esigenza dell utilizzo di modelli diversi per la loro rappresentazione. Modellazione di oggetti rigidi Figura 1.11: Modellazione di oggetti rigidi Nel caso in cui volessimo rappresentare un oggetto rigido, dovremmo utilizzare il modello descritto in Figura Possiamo vedere che, in questo caso, la percezione dell oggetto avviene quando: HapticP os = ObjP os Naturalmente, poiché si tratta di un oggetto rigido, la posizione in cui si trova (ObjP os) è scelta a priori e rimane costante nel tempo. l interazione aptica con oggetti rigidi basata su tale modello è particolarmente diffusa. Un approccio classico è infatti quello di generare la forza di reazione come proporzionale secondo una costante K h all entità della penetrazione, simulando così la presenza di una molla che tende a mantenere l end-effector al di fuori del volume del corpo rigido.

31 CAPITOLO 1. Interazione Aptica 23 Modellazione di oggetti deformabili Figura 1.12: Modellazione di oggetti deformabili Per rappresentare, invece, oggetti deformabili possiamo far uso del modello descritto in Figura 1.12, uno dei più diffusi a tale scopo. Come possiamo vedere, la grande differenza tra i due modelli sta nel feedback che l interfaccia aptica riceve dall oggetto deformabile. In questo modo viene generato un loop ulteriore con l ambiente virtuale, che permette l aggiornamento dell ObjP os. Negli oggetti deformabili, infatti, la posizione iniziale non resta costante nel tempo, ma subisce variazioni che dipendono dalle caratteristiche fisiche dell oggetto che vogliamo simulare. Come nella modellazione di oggetti rigidi, anche in questo caso è presente il parametro k h, ma è necessaria l introduzione di un parametro aggiuntivo k o. Questo è un parametro collegato all oggetto ed è indice della sua deformabilità. Nella simulazione di oggetti deformabili possono insorgere comportamenti anomali e problemi di instabilità del sistema. Per questo motivo è necessario imporre delle condizioni sui valori assunti dai parametri k h e k o. Si consideri, ad esempio, il caso in cui siano presenti due interfacce aptiche ed un cubo: se i due dispositivi agissero su due facce opposte del cubo e k h non assumesse un valore abbastanza basso, le posizioni delle due interfacce all interno del cubo potrebbero scambiarsi causando comportamenti distanti da quelli reali. Come descritto più approfonditamente nei Capitoli 2 e 3, un oggetto può essere rappresentato da

32 CAPITOLO 1. Interazione Aptica 24 un insieme di triangoli, ed è possibile descriverne la dinamica applicando ai vertici di ciascun triangolo modelli fisico-matematici, come i sistemi massamolla o massa, molla e smorzatore. Nel caso in cui ai vertici dei triangoli siano applicati sistemi massa-molla si ottiene la relazione: x = k o k o + k h x h (1.1) che permette di calcolare l errore nel calcolo della posizione del dispositivo aptico (x h ). Quindi, per ottenere un forte senso di realismo, è necessario fare in modo che x 0, imponendo la seguente condizione: k h >> k o (1.2) Tuttavia, per garantire la stabilità del loop che coinvolge il virtual environment (vedi Figura 1.12), deve essere imposta un altra condizione: k h k o < 1 (1.3) ovvero k h < k o (1.4) La condizione 1.4 si ricava trasformando il modello descritto in Figura 1.12 in quello descritto in Figura Figura 1.13: Schema alternativo per la modellazione di oggetti deformabili

33 CAPITOLO 1. Interazione Aptica 25 Figura 1.14: Dettagli del modello descritto in Figura 1.13 Applicando al modello in Figura 1.13 tecniche di Lifting 4, è possibile studiare la stabilità del sistema effettuando un analisi di stabilità sul sistema in Figura 1.15, da cui si ricava: Figura 1.15: Schema ottenuto dopo aver applicato la tecnica di Lifting F (z) = ko k h z (1.5) Analizzando le condizioni 1.2 e 1.3 si può notare che si tratta di due condizioni contrastanti. Un maggior realismo comporterebbe l insorgere di problemi di instabilità, mentre, al contrario, un controllo di stabilità porterebbe a simulazioni poco realistiche. L unica soluzione è quella di cercare il compromesso che più è conforme alle esigenze richieste dalla simulazione Controllo di forza Per incrementare la trasparenza del dispositivo aptico ed aumentare il realismo della simulazione, è preferibile inserire in un algoritmo di rendering 4 Le tecniche di Lifting sono tecniche che permettono di studiare la stabilità di un sistema a partire dallo studio di stabilità della parte del sistema più lenta.

34 CAPITOLO 1. Interazione Aptica 26 aptico una terza fase, costituita dall esecuzione dell algoritmo per il controllo di forza. Esistono varie tipologie di controllo che possono essere effettuate: Controllo di movimento: Si controlla la traiettoria del manipolatore senza prendere in esame le forze interne (dovute, ad esempio, all attrito tra i giunti) e quelle esterne (dovute all ambiente circostante). Le forze dovute al contatto risultano essere, però, un disturbo non trascurabile, creando un ritorno di forza così elevato da provocare danni perfino al dispositivo aptico. Controllo di forza: Esistono due tipologie di controllo che possono essere effettuate sulla forza: controllo diretto sulla forza e controllo sull impedenza. Nel primo caso viene controllata direttamente la forza scaturita dall interazione con l ambiente virtuale. Nel secondo caso non si utilizzano direttamente misure di forza, ma il controllo avviene sull impedenza che ha un legame diretto con la forza. Controllo ibrido: Non viene effettuato un controllo di forza in tutte le direzioni, ma solo in quelle vincolate [36]. La forza F restituita dall ambiente virtuale, a questo punto, deve essere trasformata in una coppia motore τ attraverso la relazione seguente: τ = J T F (1.6) dove J è la matrice Jacobiana, cioè la matrice che, dato un certo sistema di riferimento, permette di mettere in relazione la velocità dei giunti con quella dell end-effector.

35 Capitolo 2 Modelli per la dinamica degli oggetti virtuali Nel corso degli anni sono stati proposti molti modelli fisico-matematici per simulare il moto di oggetti all interno di ambienti virtuali il più realisticamente possibile. Ad oggi i metodi più diffusi sono rappresentati da sistemi massamolla-smorzatore e da tecniche basate sugli elementi finiti, come il modello FEM (Finite Element Method). Tali tecniche differiscono tra loro principalmente per l approccio su cui si basano: se, infatti, la tecnica rappresentata da sistemi massa-molla-smorzatore utilizza un approccio dinamico (in cui le equazioni differenziali del moto vengono integrate in tempo reale), il metodo degli elementi finiti fa tipicamente uso invece di un approccio quasi-statico (in cui l obiettivo è quello di calcolare i punti di equilibrio delle equazioni). 2.1 Sistemi massa-molla-smorzatore Per modellare con un sistema massa-molla-smorzatore l oggetto, si deve scegliere un set di punti ad esso appartenenti, considerandoli collegati tra di loro attraverso molle e smorzatori. Poiché l equazione che governa un sistema di questo tipo è un equazione dinamica del secondo ordine, sarà originato un 27

36 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali 28 Figura 2.1: Sistema massa-molla-smorzatore moto armonico smorzato, un moto oscillatorio, cioè, in cui l ampiezza dell oscillazione tende a diminuire nel tempo. Moto armonico semplice Per una migliore comprensione si analizzi un sistema composto solo dalla massa e dalla molla (quindi senza lo smorzatore), trascurando l attrito tra il corpo ed il piano d appoggio. In questo caso la forza necessaria per muovere la massa, comprimendo o estendendo la molla, è data dalla relazione seguente: F e = kx (2.1) in cui: k è la costante elastica della molla x è la misura dello spostamento dalla posizione di riposo Quando la massa viene spostata in una posizione diversa da quella di equilibrio, acquista energia potenziale, secondo la legge: E p = kx2 2 (2.2) Lasciando il sistema in evoluzione libera, questo tenderà a tornare nella posizione di equilibrio (cioè quella che aveva prima dello spostamento della massa, che è la posizione a potenziale minimo), fase durante la quale l energia

37 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali 29 potenziale si trasforma in energia cinetica, la cui espressione è: dove: v è la velocità della massa E c = Mv2 2 (2.3) Raggiunta la posizione iniziale, però, tutta l energia potenziale si è trasformata in energia cinetica, per cui il sistema non si trova ancora in una posizione di equilibrio. È per questo che la molla si estende, nel caso in cui questa sia stata inizialmente compressa (ma valgono le stesse considerazioni nel caso duale), dando inizio ad un processo, che a condizioni ideali sarebbe infinito, di perdita di energia cinetica e riacquisizione di energia potenziale, determinato dalla legge: E p + E c = kx2 2 + Mv2 2 = costante (2.4) Tale fenomeno fisico è detto moto armonico semplice ed è caratterizzato dalla seguente legge: in cui: x 0 è l ampiezza dell oscillazione x = x 0 sin(ωt) (2.5) ω è la pulsazione propria del sistema, che è legata alla costante elastica della molla e alla massa M secondo la relazione: k ω = M (2.6) Se il sistema venisse sollecitato da una forza F ripetuta nel tempo con una pulsazione Ω (quindi ad andamento sinusoidale) ed ampiezza A: F = Asin(Ωt) (2.7) si avrebbe un aumento dell ampiezza di oscillazione (nel caso in cui la forza F agisse nella stessa direzione dell accelerazione del moto armonico) o una

38 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali 30 Figura 2.2: Andamento sinusoidale del sistema in presenza di una forza F della stessa direzione dell accelerazione del moto armonico semplice (a) e di direzione opposta (b) diminuzione nel caso di direzione opposta (vedi Figura 2.2). Nel caso in cui la pulsazione Ω coincida proprio con la pulsazione ω si verifica il fenomeno di risonanza, che porta l ampiezza a tendere all infinito, causando la rottura del sistema. Per evitare questo problema ed a causa degli errori introdotti dalle tecniche di integrazione numerica (che tendono tipicamente ad incrementare l energia del sistema), che si aggiunge al sistema sopra descritto un ulteriore elemento, messo in parallelo con la molla, lo smorzatore, dando origine al sistema massa-molla-smorzatore rappresentato in Figura 2.1. Moto armonico smorzato La forza di smorzamento generata con l introduzione di questo elemento è proporzionale alla velocità di spostamento del corpo, come possiamo vedere dalla seguente equazione: F a = hv = hẋ (2.8) dove: ẋ è la velocità della massa h è il coefficiente di attrito viscoso In questo caso siamo in presenza di un moto armonico smorzato, un moto in cui l ampiezza tende a diminuire nel tempo a causa delle dissipazioni di

39 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali 31 energia provocate dall attrito viscoso provocato dallo smorzatore. La legge che rappresenta tale sistema diventa: F = F e F a (2.9) in cui: F = Ma = Mẍ (2.10) Riformulando la 2.9 e considerando che la variazione di posizione è funzione del tempo, si ottiene: Mẍ = kx hẋ (2.11) M d2 x(t) dt 2 + h dx(t) dt + kx(t) = 0 (2.12) Come si può notare l equazione 2.12 è un equazione differenziale del secondo ordine. A seconda del valore assunto dal coefficiente di attrito viscoso si possono avere tre diversi comportamenti del moto: 1. Sovrasmorzamento: dal punto di vista fisico questa soluzione evidenzia un attrito viscoso talmente elevato da impedire qualsiasi oscillazione attorno alla posizione di equilibrio 2. Smorzamento critico: in questo caso il sistema da origine ad un oscillazione che si smorzerà prima di passare dal punto di equilibrio 3. Sottosmorzamento: il coefficiente di attrito viscoso assume valori piccoli e tali da permettere le oscillazioni del sistema attorno al punto di equilibrio, causando però una diminuzione della pulsazione che decresce esponenzialmente L approccio dinamico fondato sull utilizzo di sistemi massa, molla, smorzatore è attuabile in tempo reale in quanto le equazioni utilizzate sono facilmente integrabili. D altra parte presenta, però, problemi di stabilità, dovuti, principalmente, alla scelta dei parametri visco-elastici ed alla discretizzazione del tempo.

40 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali FEM - Finite Element Method Uno dei metodi più diffusi per la modellizzazione e simulazione della dinamica di un oggetto virtuale, come già accennato all inizio di questo Capitolo, è il metodo FEM. Nei metodi ad elementi finiti la variazione continua di spostamento dell oggetto è espressa da una variazione finita di spostamenti di n, punti chiamati nodal point, che vengono interpolati attraverso una funzione di smoothing. Come si nota c è un analogia con l approccio basato su sistemi massa-molla-smorzatore, in quanto, per lo studio della dinamica, entrambi i metodi necessitano di una rappresentazione dell oggetto virtuale attraverso un insieme di punti distinti. Con la tecnica FEM il moto dell oggetto è descritto da un sistema di equazioni differenziali del secondo ordine: Mü + D u + Ku = F (2.13) dove: M è una matrice di dimensione 3nx3n che rappresenta la massa tra ogni punto interno al corpo; 3n in quanto ciascuno degli n nodal point è espresso in coordinate (x, y, z) D è una matrice di dimensione 3nx3n che rappresenta lo smorzamento tra ogni punto interno al corpo K è una matrice di dimensione 3nx3n che rappresenta la stiffness tra ogni punto interno al corpo F è un vettore di dimensione 3nx1 che rappresenta la forza che agisce su ciascuno degli n nodal point nelle direzioni (x, y, z) Il vettore u è un vettore di dimensione 3nx1 le cui componenti rappresentano le incognite del sistema. Ciascuno di questi elementi rappresenta lo spostamento che ognuno degli n nodal point deve effettuare in una delle tre direzioni (x, y, z) dalla posizione iniziale a quella di equilibrio raggiunta in

41 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali 33 seguito all applicazione della forza che ne ha causato una deformazione. Forza di intensità descritta per ciascun vertice nelle tre direzioni dalle componenti del vettore F. Per maggiori dettagli vedi [13]. 2.3 Metodi numerici per la risoluzione di Equazioni Differenziali Come si è potuto vedere precedentemente, il moto degli oggetti può essere espresso matematicamente attraverso equazioni differenziali. La simulazione del moto di tali oggetti si riduce quindi alla risoluzione numerica di sistemi di equazioni differenziali di grandi dimensioni ed in tempo discreto che, congiuntamente alla necessità di simulazioni real-time (e perciò meno onerose possibile dal punto di vista computazionale), però, comporta delle difficoltà con i metodi di risoluzione tradizionali Equazioni differenziali Un equazione differenziale è una relazione tra una funzione di una o più variabili e le sue derivate. Nel caso di più variabili, si parla di equazione differenziale alle derivate parziali (PDE - Partial Differential Equation), nel caso di una singola variabile si parla di equazione differenziale ordinaria (ODE - Ordinary Differential Equation). Risolvere un equazione differenziale equivale a trovare una funzione che soddisfi determinate condizioni. I sistemi descritti precedentemente sono rappresentabili da un equazione differenziale ordinaria, quindi da un equazione differenziale della forma: ẋ = f(x, t) (2.14) dove: x è lo stato del sistema (tipicamente è un vettore)

42 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali 34 t è il tempo f è la funzione nota che può essere valutata a partire dai valori x e t ẋ è la derivata di x nel tempo (tipicamente è un vettore) La condizione da soddisfare, in questo caso, è: x(t 0 ) = x 0 cioè lo stato al tempo iniziale t 0, ed è per questo che possiamo parlare di risoluzione di problemi del valore iniziale. Per risolvere equazioni di questo tipo, come introdotto all inizio di questo paragrafo, saranno utilizzati esclusivamente metodi numerici, considerando solo intervalli di tempo discreti a partire dal valore iniziale x(t 0 ). Ad ogni passo viene utilizzata la funzione derivativa f per calcolare l incremento x di x che si ha trascorso un certo intervallo di tempo t; a questo punto al valore x viene sommato x Metodo di Eulero Il più semplice metodo numerico per la risoluzione di equazioni differenziali è, senza dubbio, il metodo di Eulero, detto anche metodo Esplicito. Il valore iniziale dello stato x è x(t 0 ) = x 0. L obiettivo è quello di dare una stima di x dopo un certo intervallo di tempo, cioè x(t 0 + h), dove h è il passo temporale. Tale metodo calcola x(t 0 +h) effettuando un passo nella direzione della derivata: x(t 0 + h) = x 0 + hẋ(t 0 ) (2.15) La relazione 2.15 si ottiene dallo Sviluppo in serie di Taylor approssimato al primo ordine (2.16): Per la 2.14, l equazione 2.16 diventa: x(t 0 + h) = x(t 0 ) + h x t (2.16) t0 x(t 0 + h) = x 0 + hf(x 0, t 0 ) (2.17)

43 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali 35 Sebbene semplice, il metodo di Eulero presenta un problema: non è un metodo accurato. Questo lo si può vedere analizzando, ad esempio, la funzione f in 2D rappresentata da cerchi concentrici. Prendendo un punto p appartenente ad f, dovremmo ottenere una traiettoria originata da segmenti tangenti al cerchio a cui appartiene p. Con il metodo di Eulero, come possiamo vedere in Figura 2.3 questo non avviene: ad ogni passo, infatti, la traiettoria è originata da segmenti diretti verso cerchi di raggio maggiore, andando a creare una spirale verso l esterno. Sicuramente una diminuzione del passo h andreb- Figura 2.3: Errore introdotto dal metodo di Eulero nella funzione x 2 + y 2 = costante; in rosso è identificata la traiettoria ideale, in verde quella reale. be a rallentare questa divergenza, senza, però, eliminarla. Proprio il passo h può dare origine ad un altro problema: l instabilità. Il metodo di Eulero, per valori di h non sufficientemente piccoli, provoca oscillazioni della traiettoria attorno ad un determinato valore. I problemi di divergenza sono facilmente spiegabili dal momento che tale metodo fonda le basi su un approssimazione al primo ordine dello Sviluppo della serie di Taylor. L errore O(h 2 ) introdotto da questa approssimazione è la causa di tale problema. Il metodo di Eulero, oltre alla semplicità, presenta il vantaggio di una complessità computazionale molto bassa, richiedendo un solo calcolo per ogni passo ed è realmente efficiente per scelte opportune del passo h, scelte, cioè, che assicurino stabilità e apportino buona accuratezza.

44 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali Metodo implicito Il metodo implicito viene utilizzato nel caso in cui ci si trovi in presenza di equazioni differenziali ordinarie stiff (ODE stiff ) 1. In presenza di questa tipologia di equazioni differenziali i metodi espliciti, come quello di Eulero risultano inefficienti. Per trovare la soluzione a ODE stiff, infatti, sarebbe necessaria la scelta di passi piccolissimi, sia per le dimensioni limitate della regione di stabilità delle soluzioni, sia per garantire un appropriata accuratezza della soluzione. Il metodo implicito, seppur richiedendo una maggiore complessità computazionale dei metodi espliciti, permette la scelta di passi di dimensioni minori, garantendo una maggior efficienza a parità di accuratezza. Data un equazione differenziale (2.14), può essere effettuato l aggiornamento in avanti nel tempo prendendo in considerazione la relazione: x(t 0 + h) = x 0 + hf(x(t 0 + h)) (2.18) dove x(t 0 ) = x 0 è il valore iniziale dello stato. Per poter calcolare x(t 0 + h) occorre calcolare f(x(t 0 + h)). Per farlo dobbiamo prima imporre però: x = x(t 0 + h)) x 0 (2.19) A questo punto è possibile riscrivere la 2.18 come segue: x 0 + x = x 0 + hf(x 0 + x) (2.20) È possibile togliere da entrambe le parti x 0, per cui l equazione 2.20 risulta: x = hf(x 0 + x) (2.21) 1 Un equazione differenziale di dice stiff quando si è costretti ad utilizzare un passo molto piccolo in modo da non alterare la stabilità della soluzione. Un esempio di problema stiff si ha in presenza di transitori veloci che si stabilizzano su una soluzione che varia più lentamente nel tempo.

45 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali 37 Utilizzando lo sviluppo in serie di Taylor approssimato al primo ordine: f(x 0 + x) = f(x 0 ) + f(x) x (2.22) x x0 f(x 0 + x) = f(x 0 ) + f (x 0 ) x (2.23) La relazione 2.21, quindi, può essere riscritta nel modo seguente: x = hf(x 0 ) + hf (x 0 ) x (2.24) Esplicitando rispetto a x, che è la nostra incognita, si ottiene: x hf (x 0 ) x = hf(x 0 ) (2.25) x 1 h f (x 0 ) x = f(x 0 ) (2.26) ( 1 h I f (x 0 )) x = f(x 0 ) (2.27) x = ( 1 h I f (x 0 )) 1 f(x 0 ) (2.28) dove I è la matrice identità. Adesso, per trovare la soluzione, basta semplicemente sostituire x nell equazione seguente: x(t 0 + h) = x 0 + x (2.29) Nonostante il calcolo della soluzione mediante l utilizzo di un metodo implicito sia molto più semplice se confrontato con uno esplicito, trattandosi solo di una risoluzione di un sistema lineare ad ogni passo (come si vede dalla 2.29), non si rivela altrettanto vantaggioso dal punto di vista computazionale. Il calcolo di: ( ) 1 1 h I f (x 0 ) (2.30) è molto oneroso. Si tratta, infatti, del calcolo dell inversa di una matrice che, spesso, assume dimensioni molto elevate. Anche potendo disporre della semplificazione di conoscere la derivata della funzione f senza doverla calcolare

46 CAPITOLO 2. Modelli per la dinamica degli oggetti virtuali 38 ad ogni step, il tempo richiesto per questa operazione risulterebbe comunque molto alto. Inoltre, considerando un tempo di campionamento relativamente basso, i tempi di risposta con cui ci troveremmo ad operare non si rivelerebbero, spesso, compatibili con i tempi di risposta richiesti da un applicazione real-time.

47 Capitolo 3 Rendering Grafico Il rendering 1 grafico è sicuramente la componente fondamentale di ogni simulazione di ambienti virtuali. Questa fase del processo consiste nella trasformazione di una scena 3D in immagini 2D, rendendone possibile la visualizzazione su uno schermo. La scena 3D è una modellizzazione in uno spazio tridimensio- Figura 3.1: Schematizzazione della fase di rendering grafico nale degli oggetti reali che appartengono all ambiente virtuale. Per le descrizioni di tali modelli si assume che la scena sia fatta di punti, linee e poligoni. Le restrizioni imposte dai supporti hardware utilizzati per il rendering grafico (vedi Capitolo 4), però, fanno sì che si debba prendere in considerazione una classe particolare di poligoni, quella rappresentata dai triangoli. Questa 1 Il rendering è il processo di generazione di un immagine a partire da una descrizione degli oggetti tridimensionali per mezzo di un programma per computer. 39

48 CAPITOLO 3. Rendering Grafico 40 necessità porta alla creazione di mesh triangolari 2, effettuando la cosiddetta triangolazione (o triangolarizzazione). Figura 3.2: Triangolarizzazione di un poligono concavo Suddividere elementi bidimensionali più o meno complessi o insiemi di punti in insiemi di triangoli adiacenti sembra, apparentemente, un processo molto semplice. In realtà si tratta di un compito arduo, basti pensare alla difficoltà di ideazione di un algoritmo per la triangolazione di poligoni concavi. Questo è il motivo per cui un grande numero di studiosi da anni concentra i propri studi nel trovare tecniche sempre migliori, che permettano di svolgere al meglio questo procedimento. Tra le più diffuse ricordiamo la tecnica di triangolazione ideata da Delaunay (per maggiori dettagli vedi [31]). 3.1 Pipeline di rendering grafico Il passaggio dalla rappresentazione geometrica di una scena tridimensionale in un immagine a due dimensioni avviene in una serie finita di passi, detta pipeline di rendering grafico, schematizzata in Figura 3.4. Come è stato accennato all inizio di questo capitolo, la prima cosa da fare è modellare la scena tridimensionale con primitive di rendering (cioè punti, linee e triangoli). Un algoritmo di rendering grafico elabora ogni primiti- 2 Una mesh è un insieme di poligoni adiacenti della stessa tipologia; quindi, con il termine mesh triangolare, si vuole indicare un insieme di triangoli adiacenti.

49 CAPITOLO 3. Rendering Grafico 41 Figura 3.3: Triangolarizzazione di una nuvola di punti Figura 3.4: Schematizzazione della pipeline di rendering grafico

50 CAPITOLO 3. Rendering Grafico 42 va singolarmente ed indipendentemente dalle altre. La pipeline deve essere costituita dai seguenti stadi: Trasformazione geometrica 3 & Lighting : Ogni oggetto appartenente alla scena ha il proprio sistema di riferimento (local frame), per cui i vertici delle primitive sono espressi in coordinate locali. Il primo passo da fare in questo stadio è quello di trasformare tali coordinate affinché siano espresse in un sistema di riferimento univoco (world frame). Si ottengono in questo modo delle coordinate globali. Indispensabile è il punto di vista dell osservatore, e per questo si rende necessaria l introduzione di un secondo passo, che consiste nel trasformare le coordinate (che ora sono espresse nel sistema di riferimento globale) nel sistema di riferimento dell osservatore (eye frame). Oltre ad elaborazioni per la trasformazione geometrica dei vertici delle primitive, in questo stadio vengono effettuati anche i calcoli che permettono la determinazione del colore finale di ciascun vertice. Tale colore dipende dalle caratteristiche del materiale di cui si suppone sia fatto l oggetto virtuale e dalle componenti luminose appartenenti all ambiente ad esso circostante. Proiezione sul piano immagine : Questa fase consiste nella proiezione vera e propria sul piano immagine, che, alla fine, porterà il passaggio dalla rappresentazione 3D a quella 2D. All inizio viene effettuata una proiezione, centrata sulla posizione dell osservatore, sul volume di vista, cioè la porzione di spazio che è visibile dall osservatore nell eye frame. Prima di ridurre di dimensioni, però, deve essere effettuato il clipping, che consiste nella rimozione delle parti delle primitive che fuoriescono dal volume di vista. A questo punto può avvenire la riduzione di dimensione, prestando attenzione però a mantenere memorizzata la profondità a cui si trovano. Tale informazione non deve essere persa nel corso delle elaborazioni, essendo indispensabile in stadi successivi. Infine, è

51 CAPITOLO 3. Rendering Grafico 43 necessario fare in modo che le coordinate bidimensionali così ottenute siano inserite nella posizione dello schermo appropriata. Rasterizzazione : In questo fase viene effettuato il processo di rasterizzazione, quel processo che permette di determinare l insieme dei pixel all interno di ciascuna primitiva, che, a questo punto, è già ridotta in campo bidimensionale. Triangoli, linee e punti sono rasterizzati, ognuno, in accordo con le regole specificate per ciascuna primitiva geometrica. Il risultato delle rasterizzazione è un insieme di pixel, chiamati fragment il cui colore ancora non corrisponde al risultato finale. Per decidere il colore finale che i fragment dovranno assumere, si rende necessario introdurre alla pipeline di rendering grafico schematizzata in Figura 3.4 tre stadi aggiuntivi (vedi Figura 3.5): Texture Mapping & Shading : Il colore finale di un pixel deve essere calcolato prendendo in esame i molteplici fattori che possono influirvi. In questo stadio della pipeline sono eseguiti i processi di texture mapping e di shading. Nel caso in cui l obiettivo sia quello di applicare una o più texture 4 alla primitiva, deve essere eseguito il texture mapping. Questo processo consiste nella determinazione del colore di un pixel in base alla corrispondenza tra la posizione che assume all interno della primitiva e quella nella texture (si parla infatti di coordinate texture il cui calcolo viene effettuato in fase di trasformazione geometrica & lighting), applicando, in base alle esigenze, tecniche di nearest filtering, bilinear interpolation o mip-mapping. In questo stadio della pipeline avviene anche il processo di shading, che permette di modificare il colore di un fragment in base all influsso provocato dall illuminazione dell ambiente circostante sui vertici della primitiva. Se tecniche di illuminazione come il flat shading (shading costante) non necessitano di elaborazioni in 4 Una texture è un immagine di tipo bitmap utilizzata per rivestire la superficie di un oggetto virtuale, tridimensionale o bidimensionale con un apposito programma di grafica.

52 CAPITOLO 3. Rendering Grafico 44 tal senso, dovendo applicare lo stesso valore di lighting su tutta la primitiva, altre, come il Gouraud shading o il Phong shading, richiedono questo genere di computazioni. Z-buffering : In questo stadio viene effettuato il processo di culling. Questo consiste nello stabilire i fragment che devono essere effettivamente visualizzati sul video e quali no, diventando così pixel effettivi. La decisione viene presa analizzando la profondità a cui si trova ciascun pixel: può capitare, infatti, che più fragment siano collocati nella stessa posizione. Grazie alla profondità è facile stabilire quale di essi si trovi in posizione antecedente e quindi debba essere visualizzato. Blending : Capita talvolta che il colore di un pixel debba essere calcolato come combinazione di più colori (se, ad esempio, si è in presenza di un materiale semitrasparente). È lo stadio di blending che provvede allo svolgimento di questo compito. Figura 3.5: Schematizzazione della pipeline completa

53 CAPITOLO 3. Rendering Grafico Architettura hardware utilizzata Figura 3.6: Architettura utilizzata per il rendering grafico In Figura 3.6 è illustrata l architettura minima di un sistema ideato per la Computer Graphics 5. Gli elementi fondamentali sono: Dispositivi Input: Tra i dispositivi input più utilizzati sono presenti mouse, joystick, trackball 6, touch screen, data-glove 7, tablet 8, ecc... Hardware dedicato: Si tratta di schede grafiche programmabili (Graphic Board) capaci di elaborare dati grafici e pilotare il display raster (video che utilizza la tecnica di rasterizzazione per la creazione delle immagini visualizzate). Dispositivi di output: I dispositivi di output maggiormente utilizzati sono i monitor CRT/LCD. 5 La Computer Graphics è la materia che studia la sintesi di immagini mediante computer. 6 Dispositivo simile al mouse in cui la pallina, invece che sulla parte inferiore (quella a contatto con la scrivania), è posta sulla parte superiore. La rotazione della pallina per lo spostamento del puntatore avviene direttamente per mezzo della mano dell utente. 7 Guanto equipaggiato di sensori di tracce. 8 Tavoletta magnetica.

54 CAPITOLO 3. Rendering Grafico 46 Un applicazione che sfrutti una qualsiasi componente hardware di un calcolatore deve poter disporre di due componenti essenziali: l applicazione vera a propria, che si occupa della logica del programma ed è concettualmente indipendente dal supporto hardware che si occupa della sua esecuzione, e la parte driver, un insieme di routine il cui compito preminente è quello di controllare più a basso livello le periferiche hardware (sono creati per varie piattaforme dagli stessi produttori); in altre parole sono finalizzate a presentare i dati in una forma comprensibile al dispositivo che, successivamente, si occuperà di elaborarli nel modo più opportuno. Queste due entità da sole, però, non bastano a rendere l applicazione indipendente dall hardware. Per questo si rende necessario l utilizzo di una componente aggiuntiva, un ulteriore strato software, denominato API (Application Programming Interface). Si tratta di un insieme di routine, sotto forma di libreria, che implementa funzionalità ad alto livello per renderle accessibili allo sviluppatore. L API è il metodo, quindi, utilizzato per ottenere un astrazione tra l hardware ed il programmatore, o tra software a basso livello e software ad alto livello. Nel nostro caso specifico i supporti hardware da astrarre sono, ovviamente, le schede grafiche immesse dalle industrie del settore sul mercato DirectX DirectX (in origine chiamato Game SDK) è una collezione di funzionalità API, che consente di disegnare applicazioni high-performance e real-time. Più che rimanere un API vera e propria, è effettivamente un Software Development Kit, che consente alle applicazioni, purché basate su Windows, alte prestazioni ed un accesso in tempo reale all hardware disponibile. DirectX fornisce agli sviluppatori un interfaccia con i dispositivi hardware rendendo possibile lo sfruttamento massimo delle potenzialità messe a disposizione da tale hardware, senza doversi preoccupare dei dettagli implementativi che altrimenti necessiterebbero. La versione corrente di DirectX è DirectX 9.0c, che

55 CAPITOLO 3. Rendering Grafico 47 comprende varie componenti. Di fondamentale importanza nello sviluppo di applicazioni grafiche sono DirectX Graphics e DirectInput. DirectX Graphics DirectX Graphics permette la renderizzazione video di grafica 2D e 3D, interfacciandosi direttamente con la scheda video. È composta da: Direct3D: API di basso livello concepita per applicazioni grafiche complesse e che necessitano di un alta frequenza di aggiornamento dello schermo, come, per esempio, i videogiochi. Dal nome è chiaro che si tratta di un API sviluppata per la grafica tridimensionale, che, però, all occorrenza, renderizza anche immagini bidimensionali, sfruttando poligoni texturizzati senza prospettiva. Direct3DX: API ad alto livello, concepita per offrire funzionalità simili a quelle messe a disposizione da Direct3D (su cui si basa) con una complessità minore. DirectX Graphics permette al programmatore di sfruttare direttamente le potenzialità dell hardware del PC, eludendo Graphics Device Interface (GDI) 9 e Display Device Interface (DDI) di Windows. Offre, inoltre, la possibilità di emulare via software le funzioni non supportate dall hardware grazie all Hardware Emulation Layer (HEL). DirectInput È la componente che gestisce gli input provenienti da qualsiasi periferica di gioco, come mouse, tastiera o joystick, ignorando il sistema messaggistico di Windows e accedendo direttamente all hardware, sia di tipo analogico che digitale. Caratteristica molto importante è, inoltre, quella di poter supportare gli effetti del force feedback. 9 Le Graphics Device Interface, anche chiamate Graphics Display Interface, sono un set di API grafiche utilizzato da Windows per la renderizzazione di grafica 2D.

56 CAPITOLO 3. Rendering Grafico OpenGL OpenGL (Open Graphics Library) è un API sviluppata per più piattaforme e per più linguaggi di programmazione per scrivere applicazioni grafiche bidimensionali e tridimensionali. Di fondamentale importanza nella progettazione di applicazioni CAD (Computer Aided Design), di realtà virtuale e di videogiochi, nella quale compete con DirectX, da cui si differenzia, principalmente, per un fattore: mentre OpenGL resta operating system indipendent, DirextX è totalmente Windows oriented. A basso livello OpenGL è una specifica, cioè un documento che descrive un insieme di funzioni ed il comportamento preciso che queste devono avere. In questo modo i produttori di hardware sono in grado di creare l implementazione delle funzioni (raccolte in librerie) nel rispetto di quanto riportato sulla specifica OpenGL, affidandosi, ove possibile, all hardware fornito. Per poter fregiare i loro prodotti della qualifica di implementazioni OpenGL, naturalmente, i produttori devono superare dei test specifici. I compiti a cui OpenGL assolve sono, fondamentalmente, due: nascondere la complessità di interfacciamento con acceleratori 3D differenti (offrendo così al programmatore un API unica ed uniforme) e le capacità messe a disposizioni da tali componenti hardware, richiedendo un implementazione di tutte le funzioni riportate nella specifica OpenGL. Nel caso in cui il dispositivo hardware non disponga di alcune funzionalità implementate si ricorre, perciò, all emulazione software. OpenGL permette di disegnare elementi grafici molto semplici, seppur tridimensionali, come punti, linee o poligoni. I comandi per la creazione di oggetti 3D di più alta complessità (come cubi, piramidi o sfere) non sono inclusi, ma possono essere costruiti a partire da questi elementi primitivi. Richiedendo al programmatore i passi specifici per rappresentare la scena, OpenGL è un API procedurale che opera a basso livello, approccio contrastante con quello adottato dalle API descrittive ad alto livello, che richiedono agli sviluppatori solo descrizioni generiche delle

57 CAPITOLO 3. Rendering Grafico 49 scene e si occupano principalmente dei dettagli di rendering più complessi. La natura di OpenGL obbliga, quindi, i programmatori ad avere una buona conoscenza della pipeline grafica, lasciando allo stesso tempo una certa libertà nell implementazione di complessi algoritmi di rendering. Ogni volta che vengono create nuove tecnologie, lo standard OpenGL permette ai produttori di fornire funzionalità aggiuntive attraverso delle estensioni. Ciascuna estensione viene distribuita in due parti: un file di intestazione (che contiene i prototipi delle funzioni) ed i driver del produttore. Inoltre sono disponibili molte librerie aggiuntive come GLUT, GLU e GLUI. OpenGL è stato progettato esclusivamente per la gestione degli output, per cui non è in grado di leggere nessun tipo di input, scrivere su file o gestire finestre; compiti solitamente svolti dal sistema operativo. Sebbene tale limitazione possa sembrare molto restrittiva, permette lo sviluppo di codice per il rendering grafico completamente indipendente dalla piattaforma. Tuttavia, è possibile realizzare un interazione con il sistema ospitante, utilizzando delle API aggiuntive: GLX - X11, WGL, GLUT ed SDL (GLUT ed SDL forniscono funzionalità per la gestione elementare delle finestre).

58 Capitolo 4 Schede Video Programmabili Figura 4.1: NVIDIA s GeForce Fino alla seconda metà degli anni 90, quando sono state introdotte le prime schede grafiche programmabili, cioè quelle dotate di GPU (Graphics Processing Unit), tutti gli algoritmi di rendering grafico erano svolti completamente in software dalla CPU. Con la nascita di queste nuove tecnologie è andata affermandosi sempre più, come immaginabile, la tendenza di portare quante più porzioni di pipeline possibile sul supporto grafico dedicato. Come 50

59 CAPITOLO 4. Schede Video Programmabili 51 si può vedere in Figura 3.6, in una scheda grafica programmabile possono essere individuate due componenti principali: 1. Memoria Video: la memoria di una scheda video si distingue in: Frame Buffer: porzione di memoria dedicata alla memorizzazione dell immagine come insieme di pixel. Graphics Memory: memoria utilizzata dalla GPU per l esecuzione delle operazioni. 2. GPU: detta anche VPU (Visual Processing Unit) è il microprocessore di una scheda video che effettua le elaborazioni necessarie alla formazione di un immagine. 4.1 GPU - Graphics Processing Unit Nel 1995 la 3DFx immise sul mercato Voodoo, universalmente riconosciuta come il primo acceleratore grafico low-cost della storia, che si faceva carico dello stadio di rasterizzazione, di texture mapping, di Z-buffering e di blending (vedi Paragrafo 3.1). Può sorprendere scoprire che non sia stato lo stadio di trasformazione della geometria e di illuminazione ad essere implementato per primo a livello hardware, ma è logico se si riflette su quanto in realtà sia più pesante, dal punto di vista computazionale, in un applicazione real-time la fase di rasterizzazione. In questa fase, infatti, devono essere processati tutti i fragment appartenenti alle primitive con cui viene rappresentata la scena. In una scena sono presenti moltissime primitive, per cui si nota subito che il numero di fragment su cui devono essere effettuate le operazioni è molto elevato, frequentemente molto più elevato del numero di pixel totali appartenenti all immagine renderizzata. Lo stadio di trasformazione ed illuminazione era lasciato alla CPU che inviava alla memoria locale della scheda grafica, tramite bus PCI (Peripheral Component Interconnect), le primitive

60 CAPITOLO 4. Schede Video Programmabili 52 Figura 4.2: Architettura di 3DFx s Voodoo bidimensionali su cui aveva effettuato le dovute trasformazioni. Intorno al 1998 NVIDIA e ATI introducono nel mercato due nuovi hardware grafici, TNT2 e Rage rispettivamente, in grado di realizzare multi-texturing 1 e di sfruttare un nuovo tipo di bus, quello AGP (Accelerated Graphics Port). Si passava così dal PCI, a connessione parallela e condivisa tra più periferiche, alla AGP con connessione seriale, dedicata esclusivamente alla comunicazione con l hardware grafico e dotata di memoria propria. Tali caratteristiche permettono un incremento non trascurabile nella velocità del trasferimento dei dati dalla memoria principale a quella del supporto hardware, tanto da garantire una velocità di base doppia di quella ottenuta con i normali bus PCI. I supporti hardware analizzati fino ad ora appartengono tutti a quella che è definita essere la prima generazione di schede video programmabili, sebbene, come si è potuto vedere, non sia presente ancora la programmazione vera e propria; per questo spesso si preferisce definire tali dispositivi semplicemente con il termine di acceleratori grafici. Le limitazioni di cui soffrono sono principalmente due: Non sono in grado di effettuare le trasformazioni di vertici 3D che, 1 Il multi-texturing è la capacità di determinare il colore di un pixel a partire da più di una texture.

61 CAPITOLO 4. Schede Video Programmabili 53 perciò, devono attraversare lo stadio di trasformazione e lighting nella CPU. Dispongono di un set limitato di operazioni per il calcolo del colore dei pixel da rasterizzare in caso di multi-texturing. Con l introduzione all interno dei dispositivi hardware grafici dello stadio di trasformazione e lighting, tra il 1999 ed il 2000 entra in scena la seconda generazione di schede video programmabili, di cui fanno parte NVIDIA s Ge- Force 256 e Geforce2, ATI s Radeon 7500 e S3 s Savage3D. L unità preposta a tale scopo è la Transform & Lighting Unit (T&L Unit), mostrata in Figura 4.3, grazie alla quale è possibile anche lo spostamento dello stadio geometrico dalla CPU all acceleratore grafico, liberando, così, definitivamente il processore centrale dal carico di calcolo dovuto all esecuzione di tutte le fasi della pipeline di rendering grafico standard. Sebbene permettano l ese- Figura 4.3: Transform & Lighting Unit cuzione di un set più esteso di operazioni, come l inclusione di calcoli di cube mapping e operazioni matematiche con segno, il livello di programmazione

62 CAPITOLO 4. Schede Video Programmabili 54 messo a disposizione è ancora basso, tanto che si preferisce parlare solo di alta configurabilità. Nel 2001 si può assistere all entrata sul mercato delle GPU di terza generazione (di cui fanno parte NVIDIA s GeForce3 e GeForce4 Ti, Microsoft s XBox e ATI s Radeon 8500), che non mettono a disposizione solo un elevata configurabilità ma una vera e propria programmabilità in fase di vertex processing, grazie all introduzione del Vertex Shader (parte del processore GPU dedicata alla trasformazione dei vertici, vedi Paragrafo 4.1.1). Questa è un unità programmabile capace di sostituire completamente la T&L Unit, dalla quale si differenzia proprio per il fatto di poter eseguire sequenze di istruzioni versatili. Il limite delle GPU appartenenti a questa generazione consiste nell alta configurabilità in fase di fragment processing che, però, non può ancora essere definita come programmabilità. L introduzione di un Pixel Shader (noto anche come Fragment Shader, è la parte del processore GPU dedicata all esecuzione delle operazioni sui singoli fragment, vedi Paragrafo 4.1.2) ha portato le GPU di terza generazione ad evolversi verso quelle di quarta generazione, di cui fanno parte proprio i dispositivi di hardware grafico attuali. Tra questi si possono ricordare NVI- DIA s GeForce FX e ATI s Radeon 9700, apparsi sui mercati tra il 2002 ed il Tali schede grafiche, oltre che dotate di Vertex Shader e Pixel Shader, comunicavano con la memoria centrale attraverso il bus AGP. La necessità di simulazioni sempre più realistiche (e, quindi, sempre più onerose dal punto di vista computazionale) in tempo reale, ha portato i produttori alla creazione di supporti dalle prestazioni sempre migliori, tanto che, tra il 2004 ed il 2005, si è potuto assistere all entrata in scena di NVIDIA s GeForce 6800 e GeForce Queste schede, oltre a disporre del Vertex Shader e del Pixel Shader, permettono l implementazione di istruzioni di branching all interno degli shader, fino ad ora proibite, ed introducono l innovativo bus PCIE 2 2 PCIE identifica una connessione seriale e dedicata come l AGP, che consente però una velocità sedici volte superiore di quella messa a disposizione dalla PCI originale (quindi il

63 CAPITOLO 4. Schede Video Programmabili 55 (PCI Express) come via di comunicazione adottata con la memoria centrale. Le GPU di nuova generazione, quindi, non solo possono farsi carico dell esecuzione della pipeline intera di rendering grafico (descritto nel Capitolo 3), ma sono caratterizzate da una grande versatilità grazie alla crescente generalità che caratterizzano i sottoprocessori per lo shading di vertici e frammenti. L evoluzione delle GPU non è ancora giunta al termine: la speranza di ogni sviluppatore è quella di poter utilizzare in futuro la potenza di calcolo dei processori grafici sì per una sempre migliore esecuzione di rendering grafico (che permetta la realizzazione di effetti sempre più realistici e complessi), ma anche come supporto delle CPU nell elaborazione dei dati provenienti dalla modellizzazione della dinamica. Figura 4.4: Step eseguiti dalla GPU per il rendering grafico Come anticipato nel Capitolo 3 in una pipeline di rendering grafico può essere processata solo una primitiva per volta, indipendentemente l una dall altra. Questo fa pensare di poter trarre vantaggio nell utilizzo di un harddoppio rispetto ad una AGP8x) e non a senso unico (in altre parole full-band sia da CPU verso la scheda video che nel senso inverso).

64 CAPITOLO 4. Schede Video Programmabili 56 ware grafico in grado di sfruttare al massimo il parallelismo, che può essere applicato in tre diverse modalità: Diversi stadi della pipeline sono eseguiti in parallelo su diverse primitive: in questo caso si parla di parallelismo in una singola pipeline o task parallelism. Se diversi gruppi di primitive alimentano diverse pipeline, siamo in presenza di parallelismo di pipeline diverse o data parallelism. La computazione dei passi più lenti della pipeline può essere frammentata in sotto-operazioni che, in questo modo, possono essere eseguite parallelamente per bilanciare il carico dei vari stadi. In questo caso siamo in presenza di instruction parallelism. Le GPU, per la natura del problema che ne ha determinato lo sviluppo, sono in grado di avvalersi di tutte e tre le forme di parallelismo appena elencate. La scelta del triangolo come primitiva, è un ulteriore prova di come la velocità di elaborazione costituisca il fine principale per lo sviluppo di una buona GPU. Il triangolo infatti permette di calcolare in tempi molto brevi il valore delle caratteristiche dei pixel in esso contenuti (come il colore o le componenti di illuminazione) a partire dai valori assunti da tali caratteristiche sui vertici. Tale processo è possibile esprimendo il triangolo in coordinate baricentriche e calcolando i dati necessari con tecniche di interpolazione. Inoltre i vertici di un triangolo sono sicuramente complanari Vertex Shader Il vertice è l elemento che sta alla base di una primitiva, basti pensare che un segmento viene rappresentato esplicitando la posizione di due vertici (che ne costituiscono gli estremi) ed un triangolo da quella di tre (i punti d intersezione dei lati che ne delimitano il perimetro). Ogni vertice può essere definito da molte variabili diverse. Ad esempio, si definisce un vertice sempre in base alla

65 CAPITOLO 4. Schede Video Programmabili 57 sua posizione in un ambiente tridimensionale, utilizzando le coordinate x, y e z, ma, allo stesso modo, in un processo di rendering grafico, può essere utile definirne il colore, le coordinate texture o la luminosità. Il Vertex Shader è un piccolo programma eseguito dalla GPU della scheda video per ciascun vertice al fine di aggiungere effetti speciali agli oggetti appartenenti ad un ambiente 3D. Il compito che deve assolvere è esattamente lo stesso di una T&L Unit, cioè quello di trasformare ed illuminare i vertici degli oggetti della scena, con elaborazioni più flessibili che non si limitano alle trasformazioni classiche. È per questo che non modifica il tipo di dati ma ne cambia semplicemente i valori; in questo modo, un vertice può apparire con una texture, un colore od una posizione diversa. Gli effetti che possono essere ottenuti dagli sviluppatori con l utilizzo del Vertex Shader sono innumerevoli: creazione di animazioni realistiche di personaggi, al fine di ottenere movimenti il più convincenti possibile, deformazione delle superfici, che consente agli sviluppatori di creare delle superfici realistiche, come, ad esempio le onde, la pelle o la superficie increspata dell acqua, morphing di un vertice atto a cambiare la forma degli elementi di un triangolo per ottenere movimenti naturali dei personaggi. Dal punto di vista hardware il Vertex Shader è un processore (Programmable Vertex Processor, vedi 4.3.2), che permette l esecuzione di programmi sviluppati al fine di modificare le geometrie delle primitive, utilizzato in alternativa al motore di trasformazione e lighting (dotato molto spesso di un numero di macro-funzionalità limitato) presente in una pipeline di rendering grafico. L output generato all uscita dal Vertex Shader viene inviato nello stadio di Primitive Assembly durante il quale i vertici appena processati sono raggruppati nuovamente in primitive al fine di riprogettare la scena tridimensionale basata su una suddivisione in primitive decisa dal programmatore.

66 CAPITOLO 4. Schede Video Programmabili Pixel Shader Il Pixel Shader (o Fragment Shader) è una funzione grafica che permette di calcolare gli effetti che influiscono su ogni singolo pixel. Durante l esecuzione di un frame, a seconda della risoluzione scelta, possono essere presenti più di 2 milioni di pixel da elaborare, rischiarare, ombreggiare e colorare. Considerando che le simulazioni possono richiedere anche 60 frame al secondo, l elaborazione di un insieme così grande di pixel provoca un carico computazionale notevole. Per gestire facilmente carichi di queste dimensioni, le GPU sono state dotate del Pixel Shader, che permette quindi di visualizzare sullo schermo degli effetti tipicamente cinematografici. L elaborazione di pixel permette di evidenziare una ricchezza straordinaria di dettagli, consentendo di vedere oltre il livello di un semplice triangolo. Inoltre, grazie al Pixel Shader programmabile (che trova realizzazione hardware nel Fragment Processor, vedi 4.3.3), gli artisti e gli sviluppatori hanno la possibilità di creare degli effetti nuovi e personali che rispecchiano la loro visione creativa, basati su scelte di luminosità, ombre e colori per ciascun pixel, permettendo di andare ben oltre l utilizzo di effetti appartenenti a serie preconfezionate. Il Pixel Shader crea così atmosfere particolari, attraverso materiali e superfici che imitano la realtà. Un numero infinito di effetti concreti rimpiazzano quelli artificiali dall aspetto computerizzato, con superfici organiche di grande impatto. Le immagini dei volti possono essere caratterizzate da peli sul viso ed imperfezioni, le palline da golf possono avere l aspetto a buccia d arancia, una sedia rossa riesce ad acquistare un sottile aspetto di cuoio così come il legno venature e nodi. Modificando gli effetti di illuminazione e quelli superficiali, potranno essere manipolati i colori e le strutture, e si potranno creare scene molto più realistiche e complesse. Dal punto di vista hardware il Pixel Shader è un processore (Programmable Fragment Processor, vedi 4.3.3), che si occupa principalmente dell interpolazione dei valori presenti sui vertici di una primitiva, dell applica-

67 CAPITOLO 4. Schede Video Programmabili 59 zione di texture, delle operazioni di aggiunta e di controllo di densità della nebbia, operando nello stadio di fragment processing. In Figura 4.5a sono mostrati un insieme di vertici ottenuti in seguito a Figura 4.5: Esempio di operazioni che possono essere effettuate su un triangolo da un Vertex e da un Pixel Shader trasformazioni su primitive effettuate dal Vertex Shader; in Figura 4.5b i vertici attraversano lo stadio di Primitive Assembly e possono così essere nuovamente aggregati in primitive; in Figura 4.5c è eseguito il processo di rasterizzazione in cui si ottiene l insieme dei fragment appartenenti a ciascuna primitiva; infine, in Figura 4.5d è mostrato il processo di interpolazione (in questo caso di colore) che un Pixel Shader effettua sui fragment delle primitive presenti nella scena.

68 CAPITOLO 4. Schede Video Programmabili Controllo sul flusso nelle GPU Il controllo del flusso in una GPU può essere effettuato attraverso uno dei tre seguenti meccanismi: 1. Condition codes: Permette l esecuzione di istruzioni condizionali ifthen-else e di cicli for e while in cui le guardie booleane dipendono da caratteristiche comuni ad ogni elemento dello stream (in termini programmativi il valore booleano deve essere o una costante il cui valore sia noto staticamente o una variabile uniform). Con la realizzazione di questo tipo di controllo non è presente un vero e proprio branching: la GPU, infatti, esegue i comandi che si susseguono in entrambi i rami di un istruzione if, aggiornando la memoria solo nel caso in cui, però, la condizione risulti verificata. Il condition codes è un controllo sul flusso molto oneroso dal punto di vista computazionale, ma per le GPU fino a NVIDIA s GeForce FX 5900 ( ) costituisce l unica forma di branching supportato. 2. Single Instruction Multiple Data branching (SIMD): Permette di eseguire istruzioni condizionali e cicli anche su attributi specifici di un singolo vertice o fragment. Facendo uso di un controllo di flusso di tipo SIMD tutti i Vertex Processor ed i Fragment Processor appartenenti alla scheda grafica, devono eseguire nello stesso istante la stessa istruzione. Se il valore assunto dalla guardia booleana è uguale per tutti i processori attivi, si valuta, nel comando condizionale, solo le istruzioni che appartengono al ramo corrispondente. Nel caso in cui, invece, i valori differiscano, viene attuata una politica simile a quella utilizzata nel meccanismo del condition codes. Un architettura SIMD per il controllo del flusso è stata applicata in tutti i Pixel Shader presenti nelle schede grafiche della generazione di NVIDIA s GeForce 6800 e ATI s X Multiple Instruction Multiple Data branching (MIMD): È l approccio

69 CAPITOLO 4. Schede Video Programmabili 61 per il controllo del flusso più simile a quello utilizzato nelle comuni CPU. Il meccanismo MIMD è molto simile a quello SIMD, ma permette ad ogni singolo elemento dello stream di seguire un proprio percorso computazionale indipendente. Non presenta costi aggiuntivi oltre quelli della valutazione dell istruzione condizionale. Il MIMD è una introduzione estremamente recente all interno delle schede grafiche, tanto da essere stato implementato per la prima volta nel Vertex Shader di NVIDIA s GeForce Linguaggi di shading I linguaggi di shading sono i linguaggi utilizzati per la stesura dei programmi eseguiti dai Vertex e dai Pixel Shader. I più importanti sono: High Level Shading Language (HLSL) prodotto da Microsoft C for Graphics (Cg) introdotto da NVIDIA OpenGL Shading Language (OGLSL o GLSL) le cui specifiche sono definite dall OpenGL Se concettualmente, a parte piccole differenze a carattere sintattico, sono equivalenti, non lo sono nella scelta dell API su cui i programmi scritti in tali linguaggi saranno eseguiti. OGLSL utilizzerà, come suggerisce il nome stesso l API OpenGL, HLSL l API Direct3D, mentre Cg, presentando un livello di astrazione maggiore, è compatibile con entrambe le API C for graphics C for graphics (Cg) è un linguaggio di programmazione che permette di controllare la forma, l aspetto ed il moto degli oggetti disegnati facendo uso di hardware grafico programmabile. Cg permette agli sviluppatori, mettendo a disposizione una piattaforma di programmazione completa, di creare effetti

70 CAPITOLO 4. Schede Video Programmabili 62 speciali real-time su molteplici piattaforme. Grazie ad un nuovo livello d astrazione, C for graphics elimina la necessità di programmare direttamente l hardware grafico attraverso l utilizzo del linguaggio assembly e molto più semplicemente rispetto alle modalità di programmazione di OpenGL, DirectX ed altri ancora. Pur fondando le basi sul linguaggio di programmazione C, Cg ha come differenza quella di essere altamente specializzato per la grafica. Nessuno, infatti, potrebbe mai creare un foglio di calcolo o un word processor con Cg. Come altri linguaggi di shading 3, si differenzia dai comuni linguaggi di programmazione perché basato su un modello computazionale data-flow, cioè un modello in cui le informazioni finali sono calcolate con un flusso di dati attraverso fasi di processing. I programmi realizzati in Cg operano su vertici e frammenti, entrambi processati durante la fase di rendering dell immagine. C for graphics è un linguaggio di programmazione molto più semplice dei moderni linguaggi general-purpose 4 (come C++). Essendo specializzato nella trasformazione di vertici e frammenti, non è dotato di molte caratteristiche che si rivelerebbero superflue. Ad esempio in Cg non sono presenti le classi, tutte le funzionalità caratterizzanti i linguaggi object-oriented (come C++ e Java) ed i puntatori. Permette, invece, l utilizzo di array, strutture e le istruzioni per il controllo del flusso, come la chiamata a funzioni, le istruzioni condizionali o per la ripetizione di cicli. L esecuzione dei programmi sviluppati in Cg avviene in un isolamento relativo, vale a dire le operazioni svolte su un particolare vertice o frammento non hanno effetti sugli altri vertici e frammenti che sono processati nello stesso istante. Questa indipendenza rende i programmi in Cg molto ben progettati per l esecuzione in hardware che realizzano il parallelismo. Le modalità di programmazione in Cg possono apparire limitate, ma sfruttano tutte 3 Uno shading language è un linguaggio di programmazione per l hardware grafico, che permette di controllare la forma, l aspetto ed il moto degli oggetti rappresentati. 4 Sono i linguaggi non mirati ad un applicazione in particolare.

71 CAPITOLO 4. Schede Video Programmabili 63 le potenzialità di cui sono dotate le moderne GPU. Ad un evoluzione di tali microprocessori corrisponderà sicuramente un evoluzione delle funzionalità messe a disposizione dal Cg Vertex Processor programmabili Figura 4.6: Flow-chart di un Vertex Processor programmabile Un Vertex Processor programmabile è l unità hardware che esegue i vertex program scritti in un linguaggio di programmazione sviluppato ad hoc, come il Cg. In quanto realizzazione hardware di un Vertex Shader, il Vertex Processor si occupa dell elaborazione dei vertici delle primitive (vedi 4.1.1). Il primo passo che viene effettuato è quello di caricare nel Vertex Processor gli

72 CAPITOLO 4. Schede Video Programmabili 64 attributi dei vertici (tra gli attributi troviamo anche la posizione, oltre che il colore, le coordinate texture, ecc...), come mostrato in Figura 4.6. A questo punto estrae sequenzialmente le istruzioni dal vertex program, eseguendole fino quando non sia raggiunto il termine del programma. Tali istruzioni hanno accesso ad insiemi di registri distinti, contenenti valori vettoriali, come la posizione, il colore o la normale. Si possono trovare registri per gli attributi dei vertici (registri in sola lettura che contengono informazioni sugli attributi dei vertici specifici per l applicazione), registri temporanei (registri in lettura e scrittura per la memorizzazione di risultati temporanei) e registri di output (registri di sola scrittura in cui il programma memorizza i risultati di uscita). Al termine del vertex program, i registri di output conterranno perciò i nuovi vertici trasformati. Come si può vedere in Figura 4.4, i vertici trasformati vengono inviati verso lo stadio di Primitive Assembly, dove verranno nuovamente raggruppati in una serie di primitive, questa volta decise dal programmatore; sono ottenuti così nuovi vertici, nuove linee e nuovi triangoli, i cui attributi (contenuti nei registri sopra descritti), a questo punto, possono essere interpolati, rasterizzati ed inviati al Fragment Processor programmabile. La maggior parte dei Vertex Processor dispongono di un insieme limitato di operazioni da poter utilizzare. Nelle operazioni vettoriali in virgola mobile (addizione, moltiplicazione, moltiplicazione-addizione, prodotto scalare, massimo e minimo) si rende necessario fare uso di vettori di due, tre o quattro componenti. Se devono essere eseguite le operazioni di negazione di un vettore o l ordinamento arbitrario delle componenti del vettore è necessario un supporto hardware per una generalizzazione delle operazioni base che permetta di ottenere le operazioni di negazione, sottrazione e prodotto vettoriale. La moltiplicazione di un vettore per uno scalare e la normalizzazione di un vettore possono essere realizzati combinando insieme operazioni di reciproco e di radice quadrata con le operazioni di prodotto e moltiplicazione vettoriale. Possono essere utilizzate anche operazioni di approssimazione esponenziale,

73 CAPITOLO 4. Schede Video Programmabili 65 logaritmica e trigonomentrica. Inoltre, nei più recenti Vertex Processor sono presenti anche istruzioni per il controllo del flusso e l indirizzamento delle costanti Fragment Processor programmabili Figura 4.7: Flow-chart di un Fragment Processor programmabile Allo stesso modo, il Fragment Processor programmabile è l unità hardware che esegue i fragment program scritti in un linguaggio di programmazione di cui il C for graphics costituisce un esempio (vedi 4.1.2). Il Fragment Processor utilizza gran parte delle operazioni messe a disposizione anche dal Vertex Processor, ma ha la peculiarità in più di poter supportare operazioni

74 CAPITOLO 4. Schede Video Programmabili 66 di texturing, che consentono al processore di accedere ad una texture facendo uso di un insieme di coordinate (dette coordinate texture). Le GPU più moderne offrono un pieno supporto nell utilizzo di operazioni in virgola mobile, a differenza di quelle delle generazioni precedenti che permettevano l utilizzo di un insieme più limitato di tipi di dato in virgola fissa. Nonostante siano supportate le operazioni in virgola mobile, il Fragment Processor raggiunge prestazioni migliori con l utilizzo di tipi di dato a minor precisione. C for graphics permette di scrivere fragment program con salti ed iterazioni, che consentono la simulazione di salti condizionali e loop. Come il Vertex Processor (vedi Figura 4.7), il Fragment Processor, esegue sequenzialmente tutte le istruzioni del fragment program fino a quando quest utlimo non è giunto al termine e dispone di insiemi di registri distinti. Sono presenti registri di input (registri in sola lettura che contengono i valori dei parametri per ciascun fragment ottenuti interpolando i valori dei parametri dei vertici della primitiva a cui appartiene il fragment ), registri temporanei (registri in lettura e scrittura utilizzati per la memorizzazione di risultati intermedi) e registri di output (registri in sola scrittura in cui sono presenti il colore del fragment ed eventualmente la nuova profondità a cui si trova). Da notare che le istruzioni di un fragment program comprendono anche istruzioni per l applicazione delle texture. 4.4 GPU vs CPU Il progresso tecnologico ha fatto sì che i progettisti di processori potessero dotare i chip più moderni di enormi potenzialità computazionali. I processori di oggi sono costituiti da milioni di transistor connessi tra loro in spazi sempre più ridotti. La funzionalità di un singolo transistor può appartenere ad una delle seguenti tre categorie: 1. Controllo: i transistor appartenenti a questa categoria permettono l e-

75 CAPITOLO 4. Schede Video Programmabili 67 Figura 4.8: GPU vs CPU secuzione delle istruzioni, l aggiornamento del program counter ed i salti condizionali (del registro delle istruzioni e degli altri registri). 2. Datapath: in transistor dotati di questa funzionalità sono in grado di eseguire i calcoli, gestire le operazioni logiche (AND, OR e NOT) e lo shift dei bit. 3. Storage: i transistor appartenenti a questa categoria realizzano i vari registri e la cache interna. Se l obiettivo portato avanti è quello di incrementare le capacità, o meglio le prestazioni dei moderni processori, la migliore strada per farlo è quella di suddividere i transistor a disposizione (in numero sempre limitato, sebbene elevato) tra le tre categorie sopra elencate, in base alle funzioni che dovrà svolgere il processore. Pur basandosi sulla stessa tecnologia costruttiva, una CPU ed una GPU dovranno adempiere a compiti diversi, per cui la suddivisione dei transistor tra le tre categorie sarà diversa, e, di conseguenza, anche la loro architettura.

76 CAPITOLO 4. Schede Video Programmabili 68 La CPU molto spesso è utilizzata per l esecuzione di programmi generici (general purpose), che necessitano raramente di parallelismo, ma al contrario richiedono la gestione di funzionalità complesse di controllo come la branch prediction o l out-of-order execution. Inoltre, di fondamentale importanza è ridurre la latenza nell accesso alla memoria utilizzando parte dei transistor come memoria di cache, necessitando tipicamente un generico programma di numerosi accessi ad un ridotta quantità di memoria non contigua. Le GPU sono nate dall esigenza di alleggerire il carico computazionale delle CPU nelle applicazioni 3D, in modo da renderle il più realistiche possibile. I fattori determinanti per una simulazione realistica sono, senza dubbio, il numero di triangoli che possono essere gestiti (e, quindi, la granularità dell oggetto), la quantità di parametri utilizzabili per il calcolo del colore finale di ciascun pixel, la fluidità dei movimenti (determinata dalla velocità di calcolo) e la risoluzione grafica. Sebbene le più moderne GPU siano in grado di eseguire la pipeline di rendering grafico al completo (vedi Paragrafo 4.1 e Capitolo 3), le funzioni che sono richieste ad un tale processore sono in numero inferiore a quelle richieste ad una CPU, in cui assumono grande importanza i transistor di controllo e di storage a dispetto dei transistor dedicati al calcolo. Per questo nella progettazione di GPU vengono effettuate scelte diametralmente opposte. Avendo un flusso voluminoso di dati contigui, cui spesso si accede un unica volta, non insorgono problemi rilevanti di latenza e caching, ed il controllo del flusso dei dati è minimo; gran parte delle risorse, per questo, possono essere dedicate al calcolo. Inoltre, a causa del tipo di operazioni che dovrà svolgere, la sua architettura dovrà avere una forte connotazione parallela. Le GPU, quindi, si rivelano molto più veloci delle CPU con i task grafici, come il rendering di scene 3D, tanto da essere capaci di processare decine di milioni di vertici e rasterizzare miliardi di fragment per secondo. Ovviamente, per l esecuzione di applicazioni grafiche, si rende ancora necessario l utilizzo simultaneo di GPU e CPU.

77 Capitolo 5 Metodo per deformazioni locali GPU-friendly L obiettivo di questa Tesi è quello di realizzare un sistema per il rendering visuo-tattile di oggetti deformabili in presenza di interazioni provenienti da più punti di contatto. Durante un contatto con un oggetto deformabile possono essere originate due tipi di deformazioni: deformazioni locali e deformazioni globali. Gli studi descritti in questa Tesi riguatdano lo sviluppo di un sistema per la simulazione di deformazioni locali. Una deformazione locale è una deformazione in cui la profondità della penetrazione durante il contatto e l ampiezza di tale deformazione sono piccole rispetto al volume e la curvatura dell oggetto. 5.1 Motivazioni Come abbiamo visto nel Capitolo 2 i metodi più utilizzati per la simulazione dinamica di oggetti deformabili in ambienti virtuali sono i sistemi massa-molla-smorzatore e metodi basati su elementi finiti. Entrambe le tecniche possono essere eseguite senza troppe difficoltà sugli attuali computer con frequenze adatte per la visualizzazione grafica, cioè con frequenze tra i 30 ed i 60 Hz, 69

78 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 70 anche in presenza di oggetti molto complessi. Sfortunatamente nel contesto di applicazioni aptiche è necessario che gli aggiornamenti della dinamica siano effettuati con frequenze molto più elevate: studi di percettibilità [Colgate e Hannaford] hanno evidenziato come siano necessarie frequenze nell ordine del 1000 Hz e superiori per garantire una simulazione tattile realistica di oggetti rigidi. Conseguentemente l impiego di tali metodi risulta inadatto, obbligando alla ricerca di metodi dal carico computazionale inferiore. Ad esempio, l utilizzo di un approccio di tipo FEM comporta non pochi problemi nella simulazione in tempo reale. Infatti, per trovare lo spostamento che ciascun vertice con cui è delineato l oggetto deve effettuare, deve essere risolto un sistema di equazioni differenziali del secondo ordine. Per risolvere il sistema è necessario l utilizzo di metodi numerici (vedi Capitolo 2). Impossibile è l applicazione del metodo implicito che è molto oneroso dal punto di vista computazionale. In alternativa è possibile utilizzare il metodo di Eulero, che, per i problemi di divergenza della soluzione a cui può andare incontro, può dar luogo a simulazioni non del tutto realistiche. Spesso, per cercare di superare questi problemi, si cerca di semplificare il sistema di equazioni differenziali del secondo ordine attraverso una tecnica detta Analisi Modale. L analisi modale, attraverso una trasformazione, detta di whitening, applicata alle matrici M, D e K del sistema, permette di rendere indipendenti le equazioni che lo compongono, in modo da poterne calcolare le soluzioni separatamente. In altre parole, l analisi modale, permette di scomporre la dinamica di oggetti deformabili al fine di poterne studiare l andamento come somma di dinamiche più semplici, dette modi, di cui sono già note le caratteristiche (per maggiori dettagli vedi [25]). Purtroppo la simulazione dinamica basata su analisi modale non è in grado di riprodurre deformazioni locali. L obiettivo del lavoro descritto nella presente Tesi è quello di bilanciare realismo fisico e complessità computazionale, in modo da soddisfare i requisiti prestazionali delle applicazione aptiche, pur mirando a mantenere un elevato realismo visivo e tattile. In aggiunta, cercando di sfruttare la poten-

79 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 71 za di calcolo offerta dalle recenti schede video programmabili, fin dall inizio si è mirato a sviluppare un metodo la cui esecuzione fosse compatibile con l ambiente offerto dalle GPU. Partendo da un lavoro precedentemente svolto, abbiamo esteso un metodo esistente che era stato sviluppato seguendo questi principi, creando delle estensioni e delle soluzioni ai problemi che non erano ancora stati risolti. 5.2 Panoramica Generale L idea principale del metodo presentato consiste nell utilizzare un insieme di semplici sistemi massa-molla-smorzatore monodimensionali ed indipendenti l uno dall altro per ottenere una deformazione della superficie di un oggetto di fronte ad un interazione aptica. L oggetto da simulare viene modellato come un insieme di elementi dinamici, corrispondenti ai vertici della mesh triangolare che ne rappresenta la superficie. Ciascun triangolo è memorizzato Figura 5.1: Esempio di rappresentazione di una superficie attraverso mesh triangolare all interno del file che descrive la mesh secondo un formato che richiama quello seguente: T riangolo n : {V ertex 1, V ertex 2, V ertex 3 }

80 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 72 dove V ertex 1, V ertex 2 e V ertex 3 sono i tre vertici che identificano il triangolo n-esimo e sono espressi, ciascuno, in coordinate (x, y, z). Ad ogni vertice sono associati una serie di parametri che descrivono la dinamica del sistema massa-molla-smorzatore. Attraverso la scelta di tali parametri (costante elastica, massa e costante di smorzamento), si è in grado di simulare la dinamica di oggetti reali sia ad alta rigidità (bassa costante elastica ed alti valori per massa e costante di smorzamento) che ad alta deformabilità (alta costante elastica e bassi valori per massa e costante di smorzamento). Se la scelta fosse stata quella di applicare ad ogni vertice un sistema costituito da una sola molla, sarebbe stato generato un sistema caratterizzato dal comportamento altamente instabile, dal momento che, ogni forza applicata a ciascun vertice avrebbe potuto creare oscillazioni infinite, portando in certi casi a possibili rotture meccaniche del sistema, a causa dell aumento dell intensità. Proprio per evitare l insorgere di problemi di instabilità del sistema è stata scelta una configurazione che prevede l utilizzo simultaneo di una molla, di una massa e di uno smorzatore (vedi Figura 2.1). Questi ultimi due elementi, infatti, grazie all attrito provocato sono capaci di frenare le oscillazioni del sistema, permettendo così di evitare l insorgere di problemi di instabilità. Come accennato, ognuno di questi elementi rappresenta un sistema dinamico monodimensionale il cui moto si sviluppa lungo un unica direzione, corrispondente alla normale alla superficie, disponendo pertanto di un unico grado di libertà. La simulazione della deformazione locale della superficie di un oggetto ha inizio nel momento in cui viene rilevata una collisione tra l oggetto ed il probe 1 dell interfaccia aptica da un opportuno algoritmo di collision detection (vedi Paragrafo 1.3.1), la cui scelta, però, non influisce assolutamente sul realismo della simulazione. Durante la collisione deve essere 1 Il probe è la rappresentazione all interno dell ambiente virtuale della posizione di contatto con la superficie da deformare.

81 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 73 Figura 5.2: Sistemi massa-molla-smorzatore applicati ai vertici di una superficie possibile calcolare la forza provocata dal contatto. Utilizzare un insieme di elementi la cui dinamica è indipendente l una dall altra, nonché particolarmente semplice, rende il modello parallelizzabile e, quindi, particolarmente adatto all esecuzione sulla GPU. Per simulare l effetto di una deformazione locale in seguito ad un contatto con il probe, gli elementi, che vengono spinti a muoversi lungo una la loro direzione da una forza esterna appositamente calcolata, arrivano ad assumere una determinata conformazione. Nel caso di un contatto reale con un oggetto deformabile, è possibile vedere come tale contatto non provochi uno spostamento di posizione solo del vertice che si trova nel punto di contatto, ma anche dei vertici che si trovano nell area circostante. Così, per guidare gli elementi ad assumere la giusta posizione, utilizziamo una piccola quantità di dati globali: per ogni contatto viene costruita una struttura dati contenente le proprietà fondamentali della deformazione come posizione e profondità. Ogni elemento poi accede indipendentemente a questa struttura dati ed usa queste informazioni per seguire la propria dinamica. In particolare l entità della forza esterna che un vertice applica alla propria dinamica dipende da una funzione di forma, detta shape function, che determina quindi il profilo finale assunto dagli elementi nell intorno del contatto. Una shape function

82 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 74 rappresenta la forma che assume la superficie in prossimità di una deformazione. Nel nostro caso abbiamo scelto di utilizzare una particolare shape function, la gaussiana normalizzata 2 : F orce(r) = 1 2π e r2 2 (5.1) dove r rappresenta la distanza Euclidea di un vertice dal punto di contatto, che corrisponde proprio al probe, posto sul punto ad ampiezza maggiore della funzione gaussiana mostrata in Figura 5.3. In Figura 5.3, come si nota, si ha una gaussiana ribaltata. Questo perché si è assunto di modellare spostamenti di posizione in profondità e non in altezza. La distanza di un vertice di coordinate generiche (x, y, z) può essere, quindi, calcolata dall equazione: r = (x probe x) 2 + (y probe y) 2 + (z probe z) 2 (5.2) Questa funzione ha un andamento che rispecchia molto il comportamento delle deformazioni originate dal contatto con oggetti reali e, grazie alla forma che la caratterizza, permette di diminuire naturalmente gli spostamenti da effettuare sui vertici quando questi si allontanano dal centro della deformazione. In questa Tesi viene definita una valida soluzione al problema del calcolo delle normali e l aggiornamento delle stesse a seguito di una deformazione. Si è cercato inoltre di estendere il metodo a scenari in cui la deformazione è originata da più dispositivi aptici contemporaneamente, poiché la somma dei contributi forniti da ciascun contatto non permette di ottenere simulazioni aderenti alla realtà. Infine, un ulteriore generalizzazione del metodo proposto 2 Una funzione gaussiana normalizzata è una funzione gaussiana della forma: f(x) = 1 2π e 1 (x µ) 2 2 σ 2 in cui la media µ vale 0 e la varianza σ 2 vale 1.

83 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 75 Figura 5.3: Funzione gaussiana normalizzata utilizzata per rappresentare una deformazione locale ha consentito di coprire anche il caso di oggetti caratterizzati da superfici spigolose. 5.3 Aggiornamento delle normali Tra gli attributi che devono essere memorizzati in ogni vertice, oltre che parametri che ne definiscono la dinamica (massa, costante di smorzamento, costante elastica, come spiegato precedentemente), è di fondamentale importanza il vettore normale. Il vettore normale è il vettore perpendicolare Figura 5.4: Normali applicate sui vertici di una superficie triangolarizzata alla superficie rappresentata dal triangolo a cui il vertice appartiene. Nelle simulazioni di interazioni aptiche ha un ruolo importantissimo, in quanto indispensabile nell illuminazione della scena, fattore determinante per conferirle il giusto realismo. Attraverso la triangolazione della superficie ciascun

84 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 76 vertice può appartenere contemporaneamente a più di un triangolo. Questo comporta che a tale vertice potrebbe essere associata più di una normale simultaneamente. È necessario quindi, per ottenere una corretta illuminazione, fare in modo che tale insieme possa essere identificato da un solo vettore normale, per poter illuminare la scena nel modo più opportuno. In casi del genere, la normale viene calcolata come media dei contributi dati da ciascun triangolo che condivide il vertice in questione. In generale, il valore del vetto- Figura 5.5: Normale N v ottenuta come media delle normali appartenenti a ciascun poligono che coindivide il vertice re normale posto su di un vertice condiviso tra n poligoni può essere calcolato come segue: N v = N 1 + N 2 + N N n N 1 + N 2 + N N n (5.3) Analizzando l esempio mostrato in Figura 5.5 la normale sul vertice condiviso tra i triangoli risulta essere: N v = N 1 + N 2 + N 3 + N 4 + N 5 + N 6 N 1 + N 2 + N 3 + N 4 + N 5 + N 6 (5.4) Nel momento in cui un oggetto è coinvolto in una deformazione, le superficie di tale oggetto, a causa delle forze esterne che su di esso agiscono, subirà un inclinazione la cui traiettoria è dettata dalla scelta della shape

85 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 77 function, che, come già specificato, in questo caso è di forma gaussiana. Si rende necessario quindi calcolare istante per istante la variazione di direzione che la normale di ciascun vertice deve effettuare. Il calcolo del valore di un vettore normale associato ad un triangolo è banale, dal momento che può essere ottenuto attraverso il prodotto vettoriale tra due lati dello stesso, come si può vedere in Figura 5.6. Tuttavia poiché uno degli obiettivi del progetto Figura 5.6: Calcolo del vettore normale associato al vertice di un triangolo descritto in questa Tesi prevede l implementazione su GPU del calcolo delle normali di ogni vertice, tale metodologia risulta inapplicabile, in quanto, come spiegato dettagliatamente nel Capitolo 4, le GPU delle schede grafiche di ultima generazione possono processare le primitive separatamente, cioè, non possono disporre di informazioni sulle adiacenze delle primitive (in questo caso dei triangoli). Inizialmente si è cercato di risolvere il problema dell aggiornamento dei vettori normali in presenza di una deformazione originata da un singolo contatto. Come spiegato, poiché l obiettivo che ci siamo posti è stato quello di studiare e realizzare un metodo che possa far uso delle capacità delle schede video programmabili di ultima generazione, non è possibile effettuare il calcolo delle normali durante una deformazione nel caso in cui si necessiti di informazioni sulle adiacenze dei triangoli. Il metodo proposto calcola le normali utilizzando la derivata della shape function di forma gaussiana (vedi

86 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 78 Paragrafo 5.1) scelta per modellare la deformazione: D F orce (r) = 1 2π e r2 2 r (5.5) in cui r rappresenta la distanza tra il centro della deformazione ed il vertice per cui si sta calcolando il nuovo valore della normale. La scelta dell utilizzo della derivata della shape function è stata effettuata proprio per il significato geometrico di derivata: come noto, la derivata di una funzione in un punto rappresenta il coefficiente angolare della tangente a tale funzione in quel punto. Questa proprietà permette di risalire all angolo (attraverso la funzione inversa alla tangente) che la superficie deformata creerà con la stessa superficie non deformata. La normale quindi dovrà ruotare dalla posizione assunta nel caso in cui la superficie non sia deformata di una quantità pari alla misura dell angolo così determinato. Naturalmente è importante calcolare precedentemente l asse attorno al quale avviene la rotazione della normale, per evitare che si realizzi in direzione non coerente con quella necessaria. 5.4 Multi-contact Quando la deformazione è originata dall interazione con più dispositivi aptici insorgono alcuni problemi. Per risolverli è intuibile che i contributi dati dai vari contatti debbano essere sommati in qualche modo. Certo è che, se venisse effettuata una somma diretta, i risultati ottenuti sarebbero distanti dai comportamenti che si verificano negli oggetti reali. Infatti, anche nel caso in cui le deformazioni dovessero avvenire in punti a piccola distanza e con piccole forze, la somma provocherebbe comunque, come risultato, una deformazione a forza molto maggiore, dando origine ad un comportamento non realistico. L idea proposta è quella di pesare le singole deformazioni. Con questo procedimento è possibile imporre dei vincoli che assicurano un comportamento molto simile a quello reale. Per trovare i pesi associati ad ogni contatto viene

87 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 79 risolto un sistema che deve soddisfare un preciso vincolo. La deformazione generata da un contatto non deve influenzare in nessun modo quella generata da un altro nel punto centrale di tale deformazione. Negli altri punti si può verificare invece un influenza multipla, originata da più contatti che provocano la deformazione della medesima regione. Tale vincolo garantisce il non verificarsi di alcune situazioni anomale, come quella che si potrebbe avere nel caso in cui la deformazione sia originata da due dispositivi aptici posti sulle stesse coordinate di posizione. In tal caso, se non fosse imposto il vincolo sopracitato, la deformazione nel punto di contatto assumerebbe una profondità doppia, dando luogo a comportamenti distanti da quelli reali. Per pesare le deformazioni si utilizza il sistema mostrato in 5.6: Sw = b (5.6) dove: S è una matrice di dimensione nxn, dove n è il numero di dispositivi aptici. Ogni riga è relativa ad un dispositivo aptico. Gli elementi diagonali, cioè della forma S ii rappresentano la profondità di penetrazione del dispositivo i-esimo, in caso di un contatto, rispetto alla superficie non deformata. Invece, ogni elemento della forma S ij rappresenta la profondità, causata dalla deformazione j-esima, che il vertice posto nel punto di penetrazione del dispositivo i-esimo avrebbe raggiunto rispetto alla superficie non deformata. È della forma seguente: S 00 S 01 S S 0n S 10 S 11 S S 1n S = (5.7)..... S n0 S n1 S n2... S nn w è un vettore di incognite di dimensione n, ed esprime i pesi di

88 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 80 ciascuna deformazione. È descritto dalla seguente relazione: w 0 w 1 w = w 2... w n (5.8) b è un vettore di dimensione n che rappresenta il vincolo imposto per la risoluzione del sistema, cioè la condizione che, nel centro di ciascuna deformazione (il punto a maggiore profondità) la profondità non deve aumentare a causa dell interazione con l azione di altri dispositivi. Per cui gli elementi di questo vettore corrispondono alle profondità massime raggiunte dalle deformazioni presenti: b = S 00 S 11 S S nn (5.9) In Figura 5.7 è rappresentato un esempio di interazione con due dispositivi aptici. In questo caso è presente una matrice S di dimensione 2x2 in cui gli elementi sulla diagonale sono S 00 e S 11 (la profondità della deformazione D 0 e D 1 rispettivamente). L elemento S 01, come è possibile notare, rappresenta la profondità del vertice appartenente alla deformazione D 1 calcolata nel centro della deformazione D 0 ; allo stesso modo S 10 rappresenta la profondità del vertice della deformazione D 0 calcolata nel centro della deformazione D 1. I pesi trovati per ciascuna deformazione possono essere sia positivi che negativi. Una volta in possesso di queste informazioni è possibile utilizzarle per la realizzazione di una simulazione che implementi il multicontatto. Per

89 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 81 Figura 5.7: Rappresentazione del un contatto con due interfacce aptiche quanto riguarda le forze che causano lo spostamento subito dai vertici dell oggetto, queste, in presenza di un multicontatto, sono calcolate come combinazione lineare degli spostamenti provocati da ciascun contatto in cui ogni coefficiente della combinazione è proprio il peso associato a tale deformazione. L equazione utilizzata è la seguente: n F tot = ω i F i (5.10) i=1 Purtroppo questo metodo non si è rilevato efficace nel calcolo dell aggiornamento delle normali in caso di multicontatto. Inizialmente, si è tentato di calcolare la normale alla superficie soggetta ad una deformazione originata da un contatto multiplo combinando linearmente gli angoli di rotazione delle normali associati ad ogni vertice. Infatti ad ogni deformazione dovuta ad un contatto singolo corrisponde un angolo di rotazione, come già precedentemente osservato. Questo procedimento non ha portato al raggiungimento dei risultati sperati. I pesi trovati erano infatti calcolati in base a vincoli imposti sullo spostamento e non sulla rotazione delle normali e in alcuni casi non era semplice stabilire quale fosse l asse di rotazione. Inoltre la composizione di rotazioni non gode della proprietà commutativa, cioè non è indifferente l ordine con cui queste vengono effettuate, complicando ulteriormente la situazione. Nel contatto con oggetti reali infatti, non importa quale defor-

90 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 82 mazione abbia prima origine, il risultato finale deve essere sempre lo stesso. Si è così pensato di evitare di comporre più rotazioni per definire ogni normale, trattando invece singolarmente gli effetti di ogni deformazione, ossia considerando il vettore normale calcolato per ognuna di esse. La definizione del vettore normale complessivo può essere calcolato attraverso la somma di ciascun vettore. Tuttavia, la somma delle normali appartenenti a ciascuna superficie originata da ogni contatto non si è rilevata sufficiente. Se questa procedura garantiva il rispetto di alcuni dei vincoli necessari, come quello che permetteva a tali vettori di annullarsi nel caso in cui fossero stati generati da rotazioni di angoli opposti oppure di non alterarsi nel caso di deformazioni coincidenti, non aveva un buon comportamento in altri casi, come ad esempio quando le normali risultavano ruotate nella stessa direzione. Il motivo è semplice, basti pensare, nel caso ad esempio di due deformazioni, che la somma di due vettori corrisponde ad un vettore che graficamente può essere rappresentato dalla regola del parallelogramma, ossia da un vettore intermedio ai due originali. In questo caso, il vettore risultante corrisponderebbe ad una rotazione di un angolo minore a quello associato ad uno dei due addendi, quando invece servirebbe un angolo maggiore. L idea che si è rilevata risolutiva ed ha permesso di risolvere i problemi presenti con questo tipo di implementazione è basata su calcoli che richiedono la somma di iperpiani. Un iperpiano generico in forma implicita è rappresentato dalla seguente equazione: ax + by + cz + d = 0 (5.11) dove i coefficienti a, b e c rappresentano le coordinate del vettore normale al piano. Esprimendo l equazione 5.11 in forma esplicita si ottiene: y = a b x c b z d b (5.12) Il termine noto può essere trascurato dal momento che, per questo problema, si possono considerare esclusivamente gli iperpiani passanti per l origine. Così

91 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 83 l equazione 5.12 diventa: y = a b x c b z (5.13) Se prendiamo un altro iperpiano generico, questo può essere rappresentato dalla seguente equazione: y = a b x c b z (5.14) È possibile esprimere l equazione di un terzo iperpiano caratterizzato da una pendenza pari alla somma degli iperpiani descritti dalle equazioni 5.13 e 5.14 nel modo seguente: y = ( ) ( ) a b + a c x b b + c z (5.15) b Le coordinate del vettore normale a questo piano possono essere ricavate dalla relazione 5.15 come segue: ( N = a b a b, 1, c b c b ) (5.16) La normale così ottenuta è un vettore con pendenza pari alla somma delle pendenze alle normali ai primi due piani. Tale procedimento può essere iterato più volte. Nel caso dell aggiornamento delle normali in presenza di un multicontatto deve necessariamente essere ripetuto tante volte quante sono le deformazioni attive che agiscono sul vertice di cui stiamo aggiornando la normale. L applicazione di questo metodo prevede anch esso, come il metodo utilizzato per l aggiornamento della posizione dei vertici, di far uso dei pesi trovati risolvendo il sistema mostrato dall equazione 5.6. In questo caso, però, i pesi associati a ciascuna deformazione vengono utilizzati durante la fase di calcolo di aggiornamento dei vettori normali che deve essere effettuato in seguito a ciascuna deformazione. Prima di ruotare la normale dalla posizione che assume quando la superficie non ha subito deformazioni di un angolo α i (angolo di rotazione provocato dalla deformazione i-esima), α i deve essere moltiplicato per il peso w i associato alla deformazione i-esima. In Figura 5.8 ed in Figura 5.11 è rilevata, correttamente, solo l interazione con uno dei due dispositivi aptici che possono causare la deformazione della

92 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 84 Figura 5.8: Esempio di multi-contatto (1) Figura 5.9: Esempio di multi-contatto (2) Figura 5.10: Esempio di multi-contatto (3)

93 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 85 Figura 5.11: Esempio di multi-contatto (4) superficie. In Figura 5.9 ed in Figura 5.10, invece, entrambi i dispositivi contribuiscono alla deformazione della superficie. 5.5 Gestione delle singolarità Figura 5.12: Esempio di cubo e di cubo smussato Se si osservano gli oggetti presenti nella realtà, è possibile notare come questi, molto frequentemente, sono caratterizzati dalla presenza di spigolosità. Per lo sviluppo di simulazioni dotate di elevato realismo è necessario quindi che siano gestiti anche casi che coinvolgono il contatto con queste

94 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 86 parti spigolose. Il metodo finora analizzato fornisce ottimi risultati sia dal punto di vista visivo che dal punto di vista delle prestazioni, ma è limitato a superfici morbide, cioè a superfici la cui curvatura è piccola rispetto alla dimensione dell oggetto, ed in cui non sono presenti singolarità. La causa di questa limitazione è da ricercare nella scelta della direzione che caratterizza il grado di libertà del sistema massa-molla-smorzatore. Come introdotto nel Paragrafo 5.1, inizialmente la scelta di tale direzione si è orientata su quella del vettore normale alla superficie. Questa scelta origina comportamenti instabili in caso di superfici non smussate e molto spigolose. Infatti può accadere che, a causa della profondità troppo elevata di penetrazione del probe, la superficie deformata provochi un intersezione con un altra superficie dell oggetto. Circostanza che si verifica quando la penetrazione di un dispositivo aptico supera una certa soglia, che corrisponde al valore limite che si ottiene nel punto in cui le normali appartenenti a superfici diverse si intersecano. La soluzione sviluppata in questo lavoro consiste nell utilizzare una direzione di movimento diversa dalla normale alla superficie originale, scegliendo opportunamente le direzioni del moto in modo che non si intersechino, almeno per penetrazioni ragionevoli. Per calcolare queste nuove direzioni si è scelto di utilizzare semplicemente una versione smoothed, ammorbidita, della superficie originale, prendendo i vettori normali a questa seconda superficie come direzioni di moto per gli elementi del modello. Infatti, essendo le singolarità rimosse dall operazione di smoothing e la curvatura massima garantita, siamo certi che queste nuove normali si intersecano soltanto per distanze molto grandi. La costruzione di una superficie smoothed si ottiene aggiungendo elementi alla mesh, che, infittendosi, risulta più definita in tutte le zone, consentendo di approssimare meglio i contorni dell oggetto rappresentato. In letteratura esistono molte tecniche che permettono di levigare le superfici. La più semplice è la tecnica di Laplace [6], che, sebbene poco costosa dal punto di vista computazionale può portare a risultati di bassa qualità. Esistono mol-

95 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 87 te altre tecniche famose. Ad esempio, l algoritmo di Chaikin [19], quello di Doo-Sabin [19] o di Catmull-Clark [19]. Figura 5.13: Cubo non deformato e normali nei vertici della mesh 5.6 Dettagli implementativi Si è scelto di implementare il metodo proposto attraverso lo sviluppo di un software scritto nel linguaggio di programmazione C++. Per poter interagire con i dispositivi aptici si è scelto di utilizzare la libreria Haptik creata all interno del laboratorio SIRSLab (Siena Robotics and Systems Lab) dell Università degli Studi di Siena Haptik Library Per poter utilizzare correttamente un dispositivo aptico si può scegliere di seguire due procedimenti diversi: utilizzare le API messe a disposizione dal costruttore dell interfaccia aptica di cui si deve far uso o utilizzare delle librerie generiche messe a disposizione da terze parti. Entrambe queste soluzioni

96 CAPITOLO 5. Metodo per deformazioni locali GPU-friendly 88 Figura 5.14: Deformazione della superficie di un cubo in prossimità di uno spigolo Figura 5.15: Deformazione della superficie di un cubo in prossimità di uno spigolo e visualizzazione delle normali aggiornate

Dinamica e Misura delle Vibrazioni

Dinamica e Misura delle Vibrazioni Dinamica e Misura delle Vibrazioni Prof. Giovanni Moschioni Politecnico di Milano, Dipartimento di Meccanica Sezione di Misure e Tecniche Sperimentali giovanni.moschioni@polimi.it VibrazionI 2 Il termine

Dettagli

La Visione Artificiale: Controllo di Qualità, Fotogrammetria e Realtà Virtuale

La Visione Artificiale: Controllo di Qualità, Fotogrammetria e Realtà Virtuale La Visione Artificiale: Controllo di Qualità, Fotogrammetria e Realtà Virtuale D. Prattichizzo G.L. Mariottini F. Moneti M. Orlandesi M. Fei M. de Pascale A. Formaglio F. Morbidi S. Mulatto SIRSLab Laboratorio

Dettagli

Le interfacce aptiche per i beni culturali

Le interfacce aptiche per i beni culturali Le interfacce aptiche per i beni culturali Massimo Bergamasco 1, Carlo Alberto Avizzano 1, Fiammetta Ghedini 1, Marcello Carrozzino 1,2 1PERCRO Scuola Superiore Sant Anna, Pisa 2IMT Institude for Advanced

Dettagli

Studio sperimentale della propagazione di un onda meccanica in una corda

Studio sperimentale della propagazione di un onda meccanica in una corda Studio sperimentale della propagazione di un onda meccanica in una corda Figura 1: Foto dell apparato sperimentale. 1 Premessa 1.1 Velocità delle onde trasversali in una corda E esperienza comune che quando

Dettagli

Moto sul piano inclinato (senza attrito)

Moto sul piano inclinato (senza attrito) Moto sul piano inclinato (senza attrito) Per studiare il moto di un oggetto (assimilabile a punto materiale) lungo un piano inclinato bisogna innanzitutto analizzare le forze che agiscono sull oggetto

Dettagli

Strumenti Elettronici Analogici/Numerici

Strumenti Elettronici Analogici/Numerici Facoltà di Ingegneria Università degli Studi di Firenze Dipartimento di Elettronica e Telecomunicazioni Strumenti Elettronici Analogici/Numerici Ing. Andrea Zanobini Dipartimento di Elettronica e Telecomunicazioni

Dettagli

ANALISI MEDIANTE LO SPETTRO DI RISPOSTA

ANALISI MEDIANTE LO SPETTRO DI RISPOSTA ANALISI EDIANTE LO SPETTRO DI RISPOSTA arco BOZZA * * Ingegnere Strutturale, già Direttore della Federazione regionale degli Ordini degli Ingegneri del Veneto (FOIV), Amministratore di ADEPRON DINAICA

Dettagli

Risposta temporale: esercizi

Risposta temporale: esercizi ...4 Risposta temporale: esercizi Esercizio. Calcolare la risposta al gradino del seguente sistema: G(s) X(s) = s (s+)(s+) Y(s) Per ottenere la risposta al gradino occorre antitrasformare la seguente funzione:

Dettagli

Sistemi e modelli matematici

Sistemi e modelli matematici 0.0.. Sistemi e modelli matematici L automazione è un complesso di tecniche volte a sostituire l intervento umano, o a migliorarne l efficienza, nell esercizio di dispositivi e impianti. Un importante

Dettagli

Fondamenti di Automatica

Fondamenti di Automatica Fondamenti di Automatica Risposte canoniche e sistemi elementari Dott. Ing. Marcello Bonfè Dipartimento di Ingegneria - Università di Ferrara Tel. +39 0532 974839 E-mail: marcello.bonfe@unife.it pag. 1

Dettagli

tanhαl + i tan(ωl/v) 1 + i tanh αl tan(ωl/v). (10.1)

tanhαl + i tan(ωl/v) 1 + i tanh αl tan(ωl/v). (10.1) 10 - La voce umana Lo strumento a fiato senz altro più importante è la voce, ma è anche il più difficile da trattare in modo esauriente in queste brevi note, a causa della sua complessità. Vediamo innanzitutto

Dettagli

Verifica sismica di dighe a gravità in calcestruzzo

Verifica sismica di dighe a gravità in calcestruzzo Verifica sismica di dighe a gravità in calcestruzzo Keywords: dighe a gravità in calcestruzzo, verifica sismica, metodi semplificati, programmi di calcolo. Autore: L. Furgoni, Relatore: Prof. C. Nuti,

Dettagli

Corso di Informatica Industriale

Corso di Informatica Industriale Corso di Informatica Industriale Prof. Giorgio Buttazzo Dipartimento di Informatica e Sistemistica Università di Pavia E-mail: buttazzo@unipv.it Informazioni varie Telefono: 0382-505.755 Email: Dispense:

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

END-TO-END SERVICE QUALITY. LA CULTURA DELLA QUALITÀ DAL CONTROLLO DELLE RISORSE ALLA SODDISFAZIONE DEL CLIENTE

END-TO-END SERVICE QUALITY. LA CULTURA DELLA QUALITÀ DAL CONTROLLO DELLE RISORSE ALLA SODDISFAZIONE DEL CLIENTE END-TO-END SERVICE QUALITY. LA CULTURA DELLA QUALITÀ DAL CONTROLLO DELLE RISORSE ALLA SODDISFAZIONE In un mercato delle Telecomunicazioni sempre più orientato alla riduzione delle tariffe e dei costi di

Dettagli

Quando troncare uno sviluppo in serie di Taylor

Quando troncare uno sviluppo in serie di Taylor Quando troncare uno sviluppo in serie di Taylor Marco Robutti October 13, 2014 Lo sviluppo in serie di Taylor di una funzione è uno strumento matematico davvero molto utile, e viene spesso utilizzato in

Dettagli

Seconda Legge DINAMICA: F = ma

Seconda Legge DINAMICA: F = ma Seconda Legge DINAMICA: F = ma (Le grandezze vettoriali sono indicate in grassetto e anche in arancione) Fisica con Elementi di Matematica 1 Unità di misura: Massa m si misura in kg, Accelerazione a si

Dettagli

ED. Equazioni cardinali della dinamica

ED. Equazioni cardinali della dinamica ED. Equazioni cardinali della dinamica Dinamica dei sistemi La dinamica dei sistemi di punti materiali si può trattare, rispetto ad un osservatore inerziale, scrivendo l equazione fondamentale della dinamica

Dettagli

UNIVERSITA DI PISA FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA ANNO ACCADEMICO 2004-2005 TESI DI LAUREA

UNIVERSITA DI PISA FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA ANNO ACCADEMICO 2004-2005 TESI DI LAUREA UNIVERSITA DI PISA FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA ANNO ACCADEMICO 2004-2005 TESI DI LAUREA SVILUPPO DI METODI DECONVOLUTIVI PER L INDIVIDUAZIONE DI SORGENTI INDIPENDENTI

Dettagli

IL SAMPLE AND HOLD UNIVERSITÀ DEGLI STUDI DI MILANO. Progetto di Fondamenti di Automatica. PROF.: M. Lazzaroni

IL SAMPLE AND HOLD UNIVERSITÀ DEGLI STUDI DI MILANO. Progetto di Fondamenti di Automatica. PROF.: M. Lazzaroni UNIVERSITÀ DEGLI STUDI DI MILANO FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI Corso di Laurea in Informatica IL SAMPLE AND HOLD Progetto di Fondamenti di Automatica PROF.: M. Lazzaroni Anno Accademico

Dettagli

Risposta sismica dei terreni e spettro di risposta normativo

Risposta sismica dei terreni e spettro di risposta normativo Dipartimento di Ingegneria Strutturale, Aerospaziale e Geotecnica Risposta sismica dei terreni e spettro di risposta normativo Prof. Ing. L.Cavaleri L amplificazione locale: gli aspetti matematici u=spostamentoin

Dettagli

Esercitazione VIII - Lavoro ed energia II

Esercitazione VIII - Lavoro ed energia II Esercitazione VIII - Lavoro ed energia II Forze conservative Esercizio Una pallina di massa m = 00g viene lanciata tramite una molla di costante elastica = 0N/m come in figura. Ammesso che ogni attrito

Dettagli

Circuiti Elettrici. Schema riassuntivo. Assumendo positive le correnti uscenti da un nodo e negative quelle entranti si formula l importante

Circuiti Elettrici. Schema riassuntivo. Assumendo positive le correnti uscenti da un nodo e negative quelle entranti si formula l importante Circuiti Elettrici Schema riassuntivo Leggi fondamentali dei circuiti elettrici lineari Assumendo positive le correnti uscenti da un nodo e negative quelle entranti si formula l importante La conseguenza

Dettagli

9. Urti e conservazione della quantità di moto.

9. Urti e conservazione della quantità di moto. 9. Urti e conservazione della quantità di moto. 1 Conservazione dell impulso m1 v1 v2 m2 Prima Consideriamo due punti materiali di massa m 1 e m 2 che si muovono in una dimensione. Supponiamo che i due

Dettagli

Energia e Lavoro. In pratica, si determina la dipendenza dallo spazio invece che dal tempo

Energia e Lavoro. In pratica, si determina la dipendenza dallo spazio invece che dal tempo Energia e Lavoro Finora abbiamo descritto il moto dei corpi (puntiformi) usando le leggi di Newton, tramite le forze; abbiamo scritto l equazione del moto, determinato spostamento e velocità in funzione

Dettagli

percorso fatto sul tratto orizzontale). Determinare il lavoro (minimo) e la potenza minima del motore per percorrere un tratto.

percorso fatto sul tratto orizzontale). Determinare il lavoro (minimo) e la potenza minima del motore per percorrere un tratto. Esercizio 1 Una pietra viene lanciata con una velocità iniziale di 20.0 m/s contro una pigna all'altezza di 5.0 m rispetto al punto di lancio. Trascurando ogni resistenza, calcolare la velocità della pietra

Dettagli

Curve di risonanza di un circuito

Curve di risonanza di un circuito Zuccarello Francesco Laboratorio di Fisica II Curve di risonanza di un circuito I [ma] 9 8 7 6 5 4 3 0 C = 00 nf 0 5 0 5 w [KHz] RLC - Serie A.A.003-004 Indice Introduzione pag. 3 Presupposti Teorici 5

Dettagli

Motori Elettrici. Principi fisici. Legge di Lenz: se in un circuito elettrico il flusso concatenato varia nel tempo si genera una tensione

Motori Elettrici. Principi fisici. Legge di Lenz: se in un circuito elettrico il flusso concatenato varia nel tempo si genera una tensione Motori Elettrici Principi fisici Legge di Lenz: se in un circuito elettrico il flusso concatenato varia nel tempo si genera una tensione Legge di Biot-Savart: un conduttore percorso da corrente di intensità

Dettagli

Analisi e controllo di uno scambiatore di calore

Analisi e controllo di uno scambiatore di calore Università degli Studi di Roma Tor Vergata FACOLTÀ DI INGNEGNERIA Corso di Laurea Magistrale in Ingegneria dell automazione Progetto per il corso di controllo dei processi Analisi e controllo di uno scambiatore

Dettagli

TRAVE SU SUOLO ELASTICO

TRAVE SU SUOLO ELASTICO Capitolo 3 TRAVE SU SUOLO ELASTICO (3.1) Combinando la (3.1) con la (3.2) si ottiene: (3.2) L equazione differenziale può essere così riscritta: (3.3) La soluzione dell equazione differenziale di ordine

Dettagli

Il motore a corrente continua, chiamato così perché per. funzionare deve essere alimentato con tensione e corrente

Il motore a corrente continua, chiamato così perché per. funzionare deve essere alimentato con tensione e corrente 1.1 Il motore a corrente continua Il motore a corrente continua, chiamato così perché per funzionare deve essere alimentato con tensione e corrente costante, è costituito, come gli altri motori da due

Dettagli

La dinamica delle collisioni

La dinamica delle collisioni La dinamica delle collisioni Un video: clic Un altro video: clic Analisi di un crash test (I) I filmati delle prove d impatto distruttive degli autoveicoli, dato l elevato numero dei fotogrammi al secondo,

Dettagli

Bus di sistema. Bus di sistema

Bus di sistema. Bus di sistema Bus di sistema Permette la comunicazione (scambio di dati) tra i diversi dispositivi che costituiscono il calcolatore E costituito da un insieme di fili metallici che danno luogo ad un collegamento aperto

Dettagli

IL FENOMENO DELLA RISONANZA

IL FENOMENO DELLA RISONANZA IL FENOMENO DELLA RISONANZA Premessa Pur non essendo possibile effettuare una trattazione rigorosa alle scuole superiori ritengo possa essere didatticamente utile far scoprire agli studenti il fenomeno

Dettagli

AUTOLIVELLI (orizzontalità ottenuta in maniera automatica); LIVELLI DIGITALI (orizzontalità e lettura alla stadia ottenute in maniera automatica).

AUTOLIVELLI (orizzontalità ottenuta in maniera automatica); LIVELLI DIGITALI (orizzontalità e lettura alla stadia ottenute in maniera automatica). 3.4. I LIVELLI I livelli sono strumenti a cannocchiale orizzontale, con i quali si realizza una linea di mira orizzontale. Vengono utilizzati per misurare dislivelli con la tecnica di livellazione geometrica

Dettagli

Corso di Laurea Magistrale in. Ingegneria civile per la protezione dai rischi naturali D.M. 270. Relazione di fine tirocinio A.A.

Corso di Laurea Magistrale in. Ingegneria civile per la protezione dai rischi naturali D.M. 270. Relazione di fine tirocinio A.A. Corso di Laurea Magistrale in Ingegneria civile per la protezione dai rischi naturali D.M. 270 Relazione di fine tirocinio A.A. 2013-2014 Analisi Strutturale tramite il Metodo agli Elementi Discreti Relatore:

Dettagli

MOTO DI UNA CARICA IN UN CAMPO ELETTRICO UNIFORME

MOTO DI UNA CARICA IN UN CAMPO ELETTRICO UNIFORME 6. IL CONDNSATOR FNOMNI DI LTTROSTATICA MOTO DI UNA CARICA IN UN CAMPO LTTRICO UNIFORM Il moto di una particella carica in un campo elettrico è in generale molto complesso; il problema risulta più semplice

Dettagli

ALLEGATO al verbale della riunione del 3 Settembre 2010, del Dipartimento di Elettrotecnica e Automazione.

ALLEGATO al verbale della riunione del 3 Settembre 2010, del Dipartimento di Elettrotecnica e Automazione. ALLEGATO al verbale della riunione del 3 Settembre 2010, del Dipartimento di Elettrotecnica e Automazione. COMPETENZE MINIME- INDIRIZZO : ELETTROTECNICA ED AUTOMAZIONE 1) CORSO ORDINARIO Disciplina: ELETTROTECNICA

Dettagli

Il giardino nella macchina

Il giardino nella macchina Idee per una rilettura Il giardino nella macchina La nuova scienza della vita artificiale Claus Emmeche Bollati Boringhieri, 1996 È possibile la vita artificiale? In che modo gli strumenti offerti dalla

Dettagli

Per vedere quando è che una forza compie lavoro e come si calcola questo lavoro facciamo i seguenti casi.

Per vedere quando è che una forza compie lavoro e come si calcola questo lavoro facciamo i seguenti casi. LAVORO ED ENERGIA TORNA ALL'INDICE Quando una forza, applicata ad un corpo, è la causa di un suo spostamento, detta forza compie un lavoro sul corpo. In genere quando un corpo riceve lavoro, ce n è un

Dettagli

TECNOLOGIA LCD e CRT:

TECNOLOGIA LCD e CRT: TECNOLOGIA LCD e CRT: Domande più Frequenti FAQ_Screen Technology_ita.doc Page 1 / 6 MARPOSS, il logo Marposs ed i nomi dei prodotti Marposs indicati o rappresentati in questa pubblicazione sono marchi

Dettagli

Elettronica Circuiti nel dominio del tempo

Elettronica Circuiti nel dominio del tempo Elettronica Circuiti nel dominio del tempo Valentino Liberali Dipartimento di Fisica Università degli Studi di Milano valentino.liberali@unimi.it Elettronica Circuiti nel dominio del tempo 14 aprile 211

Dettagli

Da una a più variabili: derivate

Da una a più variabili: derivate Da una a più variabili: derivate ( ) 5 gennaio 2011 Scopo di questo articolo è di evidenziare le analogie e le differenze, relativamente al calcolo differenziale, fra le funzioni di una variabile reale

Dettagli

White Paper. Operational DashBoard. per una Business Intelligence. in real-time

White Paper. Operational DashBoard. per una Business Intelligence. in real-time White Paper Operational DashBoard per una Business Intelligence in real-time Settembre 2011 www.axiante.com A Paper Published by Axiante CAMBIARE LE TRADIZIONI C'è stato un tempo in cui la Business Intelligence

Dettagli

VC-dimension: Esempio

VC-dimension: Esempio VC-dimension: Esempio Quale è la VC-dimension di. y b = 0 f() = 1 f() = 1 iperpiano 20? VC-dimension: Esempio Quale è la VC-dimension di? banale. Vediamo cosa succede con 2 punti: 21 VC-dimension: Esempio

Dettagli

CS. Cinematica dei sistemi

CS. Cinematica dei sistemi CS. Cinematica dei sistemi Dopo aver esaminato la cinematica del punto e del corpo rigido, che sono gli schemi più semplificati con cui si possa rappresentare un corpo, ci occupiamo ora dei sistemi vincolati.

Dettagli

Equazioni differenziali ordinarie

Equazioni differenziali ordinarie Capitolo 2 Equazioni differenziali ordinarie 2.1 Formulazione del problema In questa sezione formuleremo matematicamente il problema delle equazioni differenziali ordinarie e faremo alcune osservazioni

Dettagli

Analisi termografica su celle litio-ione sottoposte ad esperienze di "second life" Francesco D'Annibale, Francesco Vellucci. Report RdS/PAR2013/191

Analisi termografica su celle litio-ione sottoposte ad esperienze di second life Francesco D'Annibale, Francesco Vellucci. Report RdS/PAR2013/191 Agenzia nazionale per le nuove tecnologie, l energia e lo sviluppo economico sostenibile MINISTERO DELLO SVILUPPO ECONOMICO Analisi termografica su celle litio-ione sottoposte ad esperienze di "second

Dettagli

Corso di Fisica tecnica e ambientale a.a. 2011/2012 - Docente: Prof. Carlo Isetti

Corso di Fisica tecnica e ambientale a.a. 2011/2012 - Docente: Prof. Carlo Isetti Corso di Fisica tecnica e ambientale a.a. 0/0 - Docente: Prof. Carlo Isetti LAVORO D NRGIA 5. GNRALITÀ In questo capitolo si farà riferimento a concetto quali lavoro ed energia termini che hanno nella

Dettagli

Prova scritta di Fisica Generale I Corso di studio in Astronomia 22 giugno 2012

Prova scritta di Fisica Generale I Corso di studio in Astronomia 22 giugno 2012 Prova scritta di Fisica Generale I Corso di studio in Astronomia 22 giugno 2012 Problema 1 Due carrelli A e B, di massa m A = 104 kg e m B = 128 kg, collegati da una molla di costante elastica k = 3100

Dettagli

SVILUPPO IN SERIE DI FOURIER

SVILUPPO IN SERIE DI FOURIER SVILUPPO IN SERIE DI FOURIER Cenni Storici (Wikipedia) Jean Baptiste Joseph Fourier ( nato a Auxerre il 21 marzo 1768 e morto a Parigi il 16 maggio 1830 ) è stato un matematico e fisico, ma è conosciuto

Dettagli

1 Introduzione alla dinamica dei telai

1 Introduzione alla dinamica dei telai 1 Introduzione alla dinamica dei telai 1.1 Rigidezza di un telaio elementare Il telaio della figura 1.1 ha un piano solo e i telai che hanno un piano solo, sono chiamati, in questo testo, telai elementari.

Dettagli

Introduzione. Classificazione delle non linearità

Introduzione. Classificazione delle non linearità Introduzione Accade spesso di dover studiare un sistema di controllo in cui sono presenti sottosistemi non lineari. Alcuni di tali sottosistemi sono descritti da equazioni differenziali non lineari, ad

Dettagli

METODO DELLE FORZE 1. METODO DELLE FORZE PER LA SOLUZIONE DI STRUTTURE IPERSTATICHE. 1.1 Introduzione

METODO DELLE FORZE 1. METODO DELLE FORZE PER LA SOLUZIONE DI STRUTTURE IPERSTATICHE. 1.1 Introduzione METODO DELLE FORZE CORSO DI PROGETTZIONE STRUTTURLE a.a. 010/011 Prof. G. Salerno ppunti elaborati da rch. C. Provenzano 1. METODO DELLE FORZE PER L SOLUZIONE DI STRUTTURE IPERSTTICHE 1.1 Introduzione

Dettagli

bensì una tendenza a ruotare quando vengono applicate in punti diversi di un corpo

bensì una tendenza a ruotare quando vengono applicate in punti diversi di un corpo Momento di una forza Nella figura 1 è illustrato come forze uguali e contrarie possono non produrre equilibrio, bensì una tendenza a ruotare quando vengono applicate in punti diversi di un corpo esteso.

Dettagli

Potenziale Elettrico. r A. Superfici Equipotenziali. independenza dal cammino. 4pe 0 r. Fisica II CdL Chimica

Potenziale Elettrico. r A. Superfici Equipotenziali. independenza dal cammino. 4pe 0 r. Fisica II CdL Chimica Potenziale Elettrico Q V 4pe 0 R Q 4pe 0 r C R R R r r B q B r A A independenza dal cammino Superfici Equipotenziali Due modi per analizzare i problemi Con le forze o i campi (vettori) per determinare

Dettagli

U.D. 6.2 CONTROLLO DI VELOCITÀ DI UN MOTORE IN CORRENTE ALTERNATA

U.D. 6.2 CONTROLLO DI VELOCITÀ DI UN MOTORE IN CORRENTE ALTERNATA U.D. 6.2 CONTROLLO DI VELOCITÀ DI UN MOTORE IN CORRENTE ALTERNATA Mod. 6 Applicazioni dei sistemi di controllo 6.2.1 - Generalità 6.2.2 - Scelta del convertitore di frequenza (Inverter) 6.2.3 - Confronto

Dettagli

Sensori di Posizione, Velocità, Accelerazione

Sensori di Posizione, Velocità, Accelerazione Sensori di Posizione, Velocità, Accelerazione POSIZIONE: Sensori di posizione/velocità Potenziometro Trasformatore Lineare Differenziale (LDT) Encoder VELOCITA Dinamo tachimetrica ACCELERAZIONE Dinamo

Dettagli

Test di ergonomia Valutazione del carico posturale nel lavoro sedentario

Test di ergonomia Valutazione del carico posturale nel lavoro sedentario Test di ergonomia Valutazione del carico posturale nel lavoro sedentario Il lavoro sedentario può essere all origine di vari disturbi, soprattutto se il posto di lavoro è concepito secondo criteri non

Dettagli

Accuratezza di uno strumento

Accuratezza di uno strumento Accuratezza di uno strumento Come abbiamo già accennato la volta scora, il risultato della misurazione di una grandezza fisica, qualsiasi sia lo strumento utilizzato, non è mai un valore numerico X univocamente

Dettagli

Fisica delle Particelle: esperimenti. Fabio Bossi (LNF-INFN) fabio.bossi@lnf.infn.it

Fisica delle Particelle: esperimenti. Fabio Bossi (LNF-INFN) fabio.bossi@lnf.infn.it Fisica delle Particelle: esperimenti Fabio Bossi (LNF-INFN) fabio.bossi@lnf.infn.it Il processo scientifico di conoscenza Esperimento Osservazione quantitativa di fenomeni riguardanti alcune particelle

Dettagli

Macchine rotanti. Premessa

Macchine rotanti. Premessa Macchine rotanti Premessa Sincrono, asincrono, a corrente continua, brushless sono parecchi i tipi di motori elettrici. Per ognuno teoria e formule diverse. Eppure la loro matrice fisica è comune. Unificare

Dettagli

GUIDA ALLE SOLUZIONI

GUIDA ALLE SOLUZIONI La caratteristica delle trasmissioni digitali è " tutto o niente ": o il segnale è sufficiente, e quindi si riceve l'immagine, oppure è insufficiente, e allora l'immagine non c'è affatto. Non c'è quel

Dettagli

EQUAZIONI non LINEARI

EQUAZIONI non LINEARI EQUAZIONI non LINEARI Francesca Pelosi Dipartimento di Matematica, Università di Roma Tor Vergata CALCOLO NUMERICO e PROGRAMMAZIONE http://www.mat.uniroma2.it/ pelosi/ EQUAZIONI non LINEARI p.1/44 EQUAZIONI

Dettagli

Appunti sul corso di Complementi di Matematica - prof. B.Bacchelli. 03 - Equazioni differenziali lineari omogenee a coefficienti costanti.

Appunti sul corso di Complementi di Matematica - prof. B.Bacchelli. 03 - Equazioni differenziali lineari omogenee a coefficienti costanti. Appunti sul corso di Complementi di Matematica - prof. B.Bacchelli 03 - Equazioni differenziali lineari omogenee a coefficienti costanti. Def. Si dice equazione differenziale lineare del secondo ordine

Dettagli

L=F x s lavoro motore massimo

L=F x s lavoro motore massimo 1 IL LAVORO Nel linguaggio scientifico la parola lavoro indica una grandezza fisica ben determinata. Un uomo che sposta un libro da uno scaffale basso ad uno più alto è un fenomeno in cui c è una forza

Dettagli

Le Armoniche INTRODUZIONE RIFASAMENTO DEI TRASFORMATORI - MT / BT

Le Armoniche INTRODUZIONE RIFASAMENTO DEI TRASFORMATORI - MT / BT Le Armoniche INTRODUZIONE Data una grandezza sinusoidale (fondamentale) si definisce armonica una grandezza sinusoidale di frequenza multipla. L ordine dell armonica è il rapporto tra la sua frequenza

Dettagli

Gli uni e gli altri. Strategie in contesti di massa

Gli uni e gli altri. Strategie in contesti di massa Gli uni e gli altri. Strategie in contesti di massa Alessio Porretta Universita di Roma Tor Vergata Gli elementi tipici di un gioco: -un numero di agenti (o giocatori): 1,..., N -Un insieme di strategie

Dettagli

La funzione di risposta armonica

La funzione di risposta armonica 0.0. 3.1 1 La funzione di risposta armonica Se ad un sistema lineare stazionario asintoticamente stabile si applica in ingresso un segnale sinusoidale x(t) = sen ωt di pulsazione ω: x(t) = sin ωt (s) =

Dettagli

Derivazione elementare dell espressione della quantità di moto e dell energia in relativività ristretta

Derivazione elementare dell espressione della quantità di moto e dell energia in relativività ristretta Derivazione elementare dell espressione della quantità di moto e dell energia in relativività ristretta L. P. 22 Aprile 2015 Sommario L espressione della quantità di moto e dell energia in relatività ristretta

Dettagli

63- Nel Sistema Internazionale SI, l unità di misura del calore latente di fusione è A) J / kg B) kcal / m 2 C) kcal / ( C) D) kcal * ( C) E) kj

63- Nel Sistema Internazionale SI, l unità di misura del calore latente di fusione è A) J / kg B) kcal / m 2 C) kcal / ( C) D) kcal * ( C) E) kj 61- Quand è che volumi uguali di gas perfetti diversi possono contenere lo stesso numero di molecole? A) Quando hanno uguale pressione e temperatura diversa B) Quando hanno uguale temperatura e pressione

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

1. Scopo dell esperienza.

1. Scopo dell esperienza. 1. Scopo dell esperienza. Lo scopo di questa esperienza è ricavare la misura di tre resistenze il 4 cui ordine di grandezza varia tra i 10 e 10 Ohm utilizzando il metodo olt- Amperometrico. Tale misura

Dettagli

MODELLIZZAZIONE, CONTROLLO E MISURA DI UN MOTORE A CORRENTE CONTINUA

MODELLIZZAZIONE, CONTROLLO E MISURA DI UN MOTORE A CORRENTE CONTINUA MODELLIZZAZIONE, CONTROLLO E MISURA DI UN MOTORE A CORRENTE CONTINUA ANDREA USAI Dipartimento di Informatica e Sistemistica Antonio Ruberti Andrea Usai (D.I.S. Antonio Ruberti ) Laboratorio di Automatica

Dettagli

FONDAMENTI TEORICI DEL MOTORE IN CORRENTE CONTINUA AD ECCITAZIONE INDIPENDENTE. a cura di G. SIMONELLI

FONDAMENTI TEORICI DEL MOTORE IN CORRENTE CONTINUA AD ECCITAZIONE INDIPENDENTE. a cura di G. SIMONELLI FONDAMENTI TEORICI DEL MOTORE IN CORRENTE CONTINUA AD ECCITAZIONE INDIPENDENTE a cura di G. SIMONELLI Nel motore a corrente continua si distinguono un sistema di eccitazione o sistema induttore che è fisicamente

Dettagli

A. 5 m / s 2. B. 3 m / s 2. C. 9 m / s 2. D. 2 m / s 2. E. 1 m / s 2. Soluzione: equazione oraria: s = s0 + v0

A. 5 m / s 2. B. 3 m / s 2. C. 9 m / s 2. D. 2 m / s 2. E. 1 m / s 2. Soluzione: equazione oraria: s = s0 + v0 1 ) Un veicolo che viaggia inizialmente alla velocità di 1 Km / h frena con decelerazione costante sino a fermarsi nello spazio di m. La sua decelerazione è di circa: A. 5 m / s. B. 3 m / s. C. 9 m / s.

Dettagli

Cos è l Ingegneria del Software?

Cos è l Ingegneria del Software? Cos è l Ingegneria del Software? Corpus di metodologie e tecniche per la produzione di sistemi software. L ingegneria del software è la disciplina tecnologica e gestionale che riguarda la produzione sistematica

Dettagli

Apprendimento dei concetti relativi alle misure dirette, indirette ed alla propagazione degli errori

Apprendimento dei concetti relativi alle misure dirette, indirette ed alla propagazione degli errori U n i v e r s i t à d e g l i S t u d i d i U d i n e - Facoltà di Ingegneria Laboratorio di Fisica Generale 1 1 Il sistema massa-molla: Apprendimento dei concetti relativi alle misure dirette, indirette

Dettagli

TEORIA PERTURBATIVA DIPENDENTE DAL TEMPO

TEORIA PERTURBATIVA DIPENDENTE DAL TEMPO Capitolo 14 EORIA PERURBAIVA DIPENDENE DAL EMPO Nel Cap.11 abbiamo trattato metodi di risoluzione dell equazione di Schrödinger in presenza di perturbazioni indipendenti dal tempo; in questo capitolo trattiamo

Dettagli

Capitolo 9: PROPAGAZIONE DEGLI ERRORI

Capitolo 9: PROPAGAZIONE DEGLI ERRORI Capitolo 9: PROPAGAZIOE DEGLI ERRORI 9.1 Propagazione degli errori massimi ella maggior parte dei casi le grandezze fisiche vengono misurate per via indiretta. Il valore della grandezza viene cioè dedotto

Dettagli

Setup e installazione

Setup e installazione Setup e installazione 2 Prima di muovere i primi passi con Blender e avventurarci nel vasto mondo della computer grafica, dobbiamo assicurarci di disporre di due cose: un computer e Blender. 6 Capitolo

Dettagli

Il mondo in cui viviamo

Il mondo in cui viviamo Il mondo in cui viviamo Il modo in cui lo vediamo/ conosciamo Dalle esperienze alle idee Dalle idee alla comunicazione delle idee Quando sono curioso di una cosa, matematica o no, io le faccio delle domande.

Dettagli

Descrizione matematica della propagazione Consideriamo una funzione ξ = f(x) rappresenatata in figura.

Descrizione matematica della propagazione Consideriamo una funzione ξ = f(x) rappresenatata in figura. ONDE Quando suoniamo un campanello oppure accendiamo la radio, il suono è sentito in punti distanti. Il suono si trasmette attraverso l aria. Se siamo sulla spiaggia e una barca veloce passa ad una distanza

Dettagli

Definizione e struttura della comunicazione

Definizione e struttura della comunicazione Definizione e struttura della comunicazione Sono state date molteplici definizioni della comunicazione; la più semplice e comprensiva è forse questa: passaggio di un'informazione da un emittente ad un

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Prof. Caterina Rizzi Dipartimento di Ingegneria Industriale

Prof. Caterina Rizzi Dipartimento di Ingegneria Industriale RUOLO DELLA MODELLAZIONE GEOMETRICA E LIVELLI DI MODELLAZIONE PARTE 2 Prof. Caterina Rizzi... IN QUESTA LEZIONE Modelli 2D/3D Modelli 3D/3D Dimensione delle primitive di modellazione Dimensione dell oggettoy

Dettagli

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina Cosa è il DSS L elevato sviluppo dei personal computer, delle reti di calcolatori, dei sistemi database di grandi dimensioni, e la forte espansione di modelli basati sui calcolatori rappresentano gli sviluppi

Dettagli

su web che riportano documentazione e software dedicati agli argomenti trattati nel libro, riportandone, alla fine dei rispettivi capitoli, gli

su web che riportano documentazione e software dedicati agli argomenti trattati nel libro, riportandone, alla fine dei rispettivi capitoli, gli Prefazione Non è facile definire che cosa è un problema inverso anche se, ogni giorno, facciamo delle operazioni mentali che sono dei metodi inversi: riconoscere i luoghi che attraversiamo quando andiamo

Dettagli

Note di fisica. Mauro Saita e-mail: maurosaita@tiscalinet.it Versione provvisoria, luglio 2012. 1 Quantità di moto.

Note di fisica. Mauro Saita e-mail: maurosaita@tiscalinet.it Versione provvisoria, luglio 2012. 1 Quantità di moto. Note di fisica. Mauro Saita e-mail: maurosaita@tiscalinet.it Versione provvisoria, luglio 2012. Indice 1 Quantità di moto. 1 1.1 Quantità di moto di una particella.............................. 1 1.2 Quantità

Dettagli

CAPITOLO 3. Elementi fondamentali della struttura organizzativa

CAPITOLO 3. Elementi fondamentali della struttura organizzativa CAPITOLO 3 Elementi fondamentali della struttura organizzativa Agenda La struttura organizzativa Le esigenze informative Tipologia di strutture Struttura funzionale Struttura divisionale Struttura per

Dettagli

METODI ITERATIVI PER SISTEMI LINEARI

METODI ITERATIVI PER SISTEMI LINEARI METODI ITERATIVI PER SISTEMI LINEARI LUCIA GASTALDI 1. Metodi iterativi classici Sia A R n n una matrice non singolare e sia b R n. Consideriamo il sistema (1) Ax = b. Un metodo iterativo per la soluzione

Dettagli

(accuratezza) ovvero (esattezza)

(accuratezza) ovvero (esattezza) Capitolo n 2 2.1 - Misure ed errori In un analisi chimica si misurano dei valori chimico-fisici di svariate grandezze; tuttavia ogni misura comporta sempre una incertezza, dovuta alla presenza non eliminabile

Dettagli

Equilibrio Termico tra Due Corpi

Equilibrio Termico tra Due Corpi Equilibrio Termico tra Due Corpi www.lepla.eu OBIETTIVO L attività ha l obiettivo di fare acquisire allo sperimentatore la consapevolezza che: 1 il raggiungimento dell'equilibrio termico non è istantaneo

Dettagli

Ottimizzazione della gestione del data center con Microsoft System Center

Ottimizzazione della gestione del data center con Microsoft System Center Ottimizzazione della gestione del data center con Microsoft System Center Declinazione di responsabilità e informazioni sul copyright Le informazioni contenute nel presente documento rappresentano le conoscenze

Dettagli

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 telecamere. I sistemi di acquisizione ed archiviazione

Dettagli

Travature reticolari piane : esercizi svolti De Domenico D., Fuschi P., Pisano A., Sofi A.

Travature reticolari piane : esercizi svolti De Domenico D., Fuschi P., Pisano A., Sofi A. Travature reticolari piane : esercizi svolti e omenico., Fuschi., isano., Sofi. SRZO n. ata la travatura reticolare piana triangolata semplice illustrata in Figura, determinare gli sforzi normali nelle

Dettagli

Elaborato di Meccanica delle Strutture

Elaborato di Meccanica delle Strutture Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Dipartimento di Meccanica ed Aeronautica Corso di Laurea Triennale in Ingegneria Meccanica Elaborato di Meccanica delle Strutture Docente

Dettagli

Metodi e Strumenti per la Caratterizzazione e la Diagnostica di Trasmettitori Digitali RF ing. Gianfranco Miele g.miele@unicas.it

Metodi e Strumenti per la Caratterizzazione e la Diagnostica di Trasmettitori Digitali RF ing. Gianfranco Miele g.miele@unicas.it Corso di laurea magistrale in Ingegneria delle Telecomunicazioni Metodi e Strumenti per la Caratterizzazione e la Diagnostica di Trasmettitori Digitali RF ing. Gianfranco Miele g.miele@unicas.it Trasmettitore

Dettagli

APPUNTI DI SCIENZA DELLE COSTRUZIONI. Giulio Alfano

APPUNTI DI SCIENZA DELLE COSTRUZIONI. Giulio Alfano PPUNTI DI SCIENZ DEE COSTRUZIONI Giulio lfano nno ccademico 004-005 ii Indice 1 TRVTURE PINE 1 1.1 Geometria, equilibrio e vincoli...................... 1 1.1.1 Piani di simmetria........................

Dettagli

Technical Support Bulletin No. 15 Problemi Strumentazione

Technical Support Bulletin No. 15 Problemi Strumentazione Technical Support Bulletin No. 15 Problemi Strumentazione Sommario! Introduzione! Risoluzione dei problemi di lettura/visualizzazione! Risoluzione dei problemi sugli ingressi digitali! Risoluzione di problemi

Dettagli