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

UNIVERSITÀ DEGLI STUDI DI SIENA

UNIVERSITÀ DEGLI STUDI DI SIENA UNIVERSITÀ DEGLI STUDI DI SIENA FACOLTÀ DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria Informatica, orientamento Robotica ed Automazione Tesi di Laurea Interazione Visuo-Aptica con Oggetti Deformabili

Dettagli

Introduzione alla Realtà

Introduzione alla Realtà Università di Pisa Corso di Laurea in Terapia Occuapazionale Corso di Bioingegneria applicata alla Realtà Virtuale Anno Accademico 2009/2010 Introduzione alla Realtà Virtuale in Riabilitazione i Stefano

Dettagli

Cap. 2 ELEMENTI DI MECCATRONICA

Cap. 2 ELEMENTI DI MECCATRONICA Cap. 2 ELEMENTI DI MECCATRONICA 2.1 La meccatronica 2.2 Componenti di un azionamento elettromeccanico 2.3 Accoppiamento motore-carico 2.4 Regolazione di un azionamento Corso di Meccanica Applicata alle

Dettagli

I VANTAGGI. Molti costruttori di macchine si rendono conto dell importanza DELLA PROGETTAZIONE MECCATRONICA

I VANTAGGI. Molti costruttori di macchine si rendono conto dell importanza DELLA PROGETTAZIONE MECCATRONICA ANDREA MARIO FRANCHINI I VANTAGGI DELLA PROGETTAZIONE MECCATRONICA La fusione sinergica delle conoscenze meccaniche, elettroniche e informatiche consente di giungere a nuovi concetti di macchina e a uno

Dettagli

CAPITOLO 3 FONDAMENTI DI ANALISI DELLA STABILITA' DI SISTEMI NON LINEARI

CAPITOLO 3 FONDAMENTI DI ANALISI DELLA STABILITA' DI SISTEMI NON LINEARI 31 CAPITOLO 3 FONDAMENTI DI ANALISI DELLA STABILITA' DI SISTEMI NON LINEARI INTRODUZIONE L'obbiettivo di questo capitolo è quello di presentare in modo sintetico ma completo, la teoria della stabilità

Dettagli

UN SISTEMA APTICO IN REALTÀ AUMENTATA CON SIMULAZIONE FISICA

UN SISTEMA APTICO IN REALTÀ AUMENTATA CON SIMULAZIONE FISICA UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica UN SISTEMA APTICO IN REALTÀ AUMENTATA CON SIMULAZIONE FISICA Relatore: Chiar.mo Prof. STEFANO

Dettagli

Progettazione e realizzazione di un manipolatore elettromeccanico

Progettazione e realizzazione di un manipolatore elettromeccanico Progettazione e realizzazione di un manipolatore elettromeccanico Hermes Giberti Politecnico di Milano u robotica u La progettazione di un sistema automatico richiede una collaborazione sinergica tra le

Dettagli

L EVOLUZIONE DEI SISTEMI PRODUTTIVI NEL SETTORE MECCANICO DEL NOVECENTO.

L EVOLUZIONE DEI SISTEMI PRODUTTIVI NEL SETTORE MECCANICO DEL NOVECENTO. L EVOLUZIONE DEI SISTEMI PRODUTTIVI NEL SETTORE MECCANICO DEL NOVECENTO. DEFINIZIONE DEL ROBOT INDUSTRIALE MORFOLOGIA DEL ROBOT INDUSTRIALE Confronto tra giunti GRADI DI LIBERTA DEL ROBOT Si definiscono

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

Confronto tra i codici di calcolo QUAD4-M e LSR2D

Confronto tra i codici di calcolo QUAD4-M e LSR2D 2 Confronto tra i codici di calcolo QUAD4-M e LSR2D Introduzione Questo documento riporta un confronto tra i risultati di un analisi di risposta sismica locale condotta con il codice di calcolo LSR2D (Stacec

Dettagli

Procedure di calcolo implicite ed esplicite

Procedure di calcolo implicite ed esplicite Procedure di calcolo implicite ed esplicite Il problema della modellazione dell impatto tra corpi solidi a medie e alte velocità. La simulazione dell impatto tra corpi solidi in caso di urti a media velocità,

Dettagli

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

Consideriamo una forza di tipo elastico che segue la legge di Hooke: F x = kx, (1)

Consideriamo una forza di tipo elastico che segue la legge di Hooke: F x = kx, (1) 1 L Oscillatore armonico L oscillatore armonico è un interessante modello fisico che permette lo studio di fondamentali grandezze meccaniche sia da un punto di vista teorico che sperimentale. Le condizioni

Dettagli

Università Cattolica del Sacro Cuore di Milano

Università Cattolica del Sacro Cuore di Milano Università Cattolica del Sacro Cuore di Milano Corso di Laurea in Scienze Motorie e dello Sport La formazione e lo sviluppo delle capacità e delle abilità motorie Prof. Maurizio Mondoni LE CAPACITA MOTORIE

Dettagli

Differenziazione sistemi dinamici

Differenziazione sistemi dinamici Il controllo di sistemi ad avanzamento temporale si basa sulle tecniche di controllo in retroazione, ovvero, elabora le informazione sullo stato del processo (provenienti dai sensori) in modo sa inviare

Dettagli

L ERRORE A REGIME NELLE CATENE DI REGOLAZIONE E CONTROLLO

L ERRORE A REGIME NELLE CATENE DI REGOLAZIONE E CONTROLLO L ERRORE A REGIME NELLE CATENE DI REGOLAZIONE E CONTROLLO Per errore a regime si intende quello rilevato dopo un intervallo sufficientemente lungo dal verificarsi di variazioni del riferimento o da eventuali

Dettagli

CAPITOLO 8 PROCESSO DI IDENTIFICAZIONE E COMPENSAZIONE DELL ATTRITO INTRODUZIONE 8.1 IL PROBLEMA DEL CONTROLLO

CAPITOLO 8 PROCESSO DI IDENTIFICAZIONE E COMPENSAZIONE DELL ATTRITO INTRODUZIONE 8.1 IL PROBLEMA DEL CONTROLLO 80 CAPITOLO 8 PROCESSO DI IDENTIFICAZIONE E COMPENSAZIONE DELL ATTRITO INTRODUZIONE In questo capitolo è descritto un metodo teorico per l identificazione dell attrito, attraverso l impiego della normale

Dettagli

Controllo di Manipolatori (Calcolo delle Traiettorie 2)

Controllo di Manipolatori (Calcolo delle Traiettorie 2) Controllo di Manipolatori (Calcolo delle Traiettorie 2) Ph.D Ing. Folgheraiter Michele Corso di Robotica Prof. Caglioti Anno Acc.. 2005/2006 Scelta della velocità nei punti di via con metodo Euristico:

Dettagli

Politecnico di Torino Dip. di Ingegneria Strutturale e Geotecnica. Centro sui Rischi nelle Costruzioni

Politecnico di Torino Dip. di Ingegneria Strutturale e Geotecnica. Centro sui Rischi nelle Costruzioni Politecnico di Torino Dip. di Ingegneria Strutturale e Geotecnica Centro sui Rischi nelle Costruzioni INDICE DELLA PRESENTAZIONE - Concetti base di dinamica dei sistemi discreti oscillazioni libere e smorzamento

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

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

Condizioni di equilibrio: 2 tipi Equilibrio statico: la capacità di un segmento corporeo o del corpo nel suo insieme di mantenere una posizione

Condizioni di equilibrio: 2 tipi Equilibrio statico: la capacità di un segmento corporeo o del corpo nel suo insieme di mantenere una posizione Condizioni di equilibrio: 2 tipi Equilibrio statico: la capacità di un segmento corporeo o del corpo nel suo insieme di mantenere una posizione statica Equilibrio dinamico: la capacità di mantenere, durante

Dettagli

SIMULAZIONE E ANALISI SOFTWARE PER MACCHINE UTENSILI

SIMULAZIONE E ANALISI SOFTWARE PER MACCHINE UTENSILI SIMULAZIONE E ANALISI SOFTWARE PER MACCHINE UTENSILI Antonio Scippa u macchine utensili u Ottimizzare i parametri per una lavorazione di fresatura su macchina a controllo numerico significa sfruttare in

Dettagli

Forze elastiche e Molla elicoidale versione 1.02 preliminare

Forze elastiche e Molla elicoidale versione 1.02 preliminare Forze elastiche e Molla elicoidale versione 1.02 preliminare MDV April 18, 2015 1 Elasticità L elasticità è la proprietà dei corpi soldi di tornare nella loro forma originale dopo avere subito una deformazione

Dettagli

Lezione1. Cos è la computer grafica. Lezione del 10 Marzo 2010. Michele Antolini Dipartimento di Ingegneria Meccanica Politecnico di Milano

Lezione1. Cos è la computer grafica. Lezione del 10 Marzo 2010. Michele Antolini Dipartimento di Ingegneria Meccanica Politecnico di Milano Lezione1 Informatica Grafica Cos è la computer grafica Lezione del 10 Marzo 2010 Grafica OpenGL vs Direct Dipartimento di Ingegneria Meccanica Politecnico di Milano 1.1 Tubo a Raggi Catodici Cathode Ray

Dettagli

Engineering Computation. 2002 Analisi mediante gli Elementi Finiti

Engineering Computation. 2002 Analisi mediante gli Elementi Finiti Engineering Computation Vol. 1 N. 1 2002 Analisi mediante gli Elementi Finiti Marzo ITERA S.r.l. è una società di ingegneria che da molti anni opera nel mercato della simulazione numerica. Una delle attività

Dettagli

Facoltà di Ingegneria

Facoltà di Ingegneria Università degli studi di Roma Tor Vergata Facoltà di Ingegneria Laurea in Ingegneria Informatica Creazione e animazione interattiva di grafica tridimensionale Relatore Ing. Francesco Martinelli Candidato

Dettagli

Capitolo 2. Un introduzione all analisi dinamica dei sistemi

Capitolo 2. Un introduzione all analisi dinamica dei sistemi Capitolo 2 Un introduzione all analisi dinamica dei sistemi Obiettivo: presentare una modellistica di applicazione generale per l analisi delle caratteristiche dinamiche di sistemi, nota come system dynamics,

Dettagli

Tonzig Fondamenti di Meccanica classica

Tonzig Fondamenti di Meccanica classica 224 Tonzig Fondamenti di Meccanica classica ). Quando il signor Rossi si sposta verso A, la tavola si sposta in direzione opposta in modo che il CM del sistema resti immobile (come richiesto dal fatto

Dettagli

Cap. VIII AZIONAMENTI PASSO-PASSO.

Cap. VIII AZIONAMENTI PASSO-PASSO. Cap. VIII AZIONAMENTI PASSO-PASSO. VIII-1. Introduzione. Il controllo del moto incrementale dei motori passo-passo si ottiene attraverso il software di un computer, programmando opportunamente gli impulsi

Dettagli

Programma dettagliato del corso di MECCANICA RAZIONALE Corso di Laurea in Ingegneria Civile

Programma dettagliato del corso di MECCANICA RAZIONALE Corso di Laurea in Ingegneria Civile Programma dettagliato del corso di MECCANICA RAZIONALE Corso di Laurea in Ingegneria Civile Anno Accademico 2015-2016 A. Ponno (aggiornato al 19 gennaio 2016) 2 Ottobre 2015 5/10/15 Benvenuto, presentazione

Dettagli

Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Rappresentazione delle informazioni

Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Rappresentazione delle informazioni Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Anno Accademico 2008/2009 Docente: ing. Salvatore

Dettagli

Information Visualization

Information Visualization Information Visualization Introduzione alla CG Prof. Andrea F. Abate abate@unisa.it http://www.unisa.it/docenti/andreafrancescoabate/index CG e VR: cosa sono e a cosa servono Con il termine Computer Graphics,

Dettagli

Controlli automatici per la meccatronica

Controlli automatici per la meccatronica Controlli automatici per la meccatronica Applicazione alla robotica industriale Prof. Paolo Rocco (paolo.rocco@polimi.it) Il robot Il robot è un manipolatore multifunzionale riprogrammabile, progettato

Dettagli

BILANCIAMENTO. 8-1 Bilanciamento statico di un rotore

BILANCIAMENTO. 8-1 Bilanciamento statico di un rotore 8 BILANCIAMENTO Come si è visto al capitolo 7-3.3, quando il baricentro di un rotore non coincide con l asse di rotazione possono insorgere fenomeni vibratori di entità rilevante, talvolta tali, in condizioni

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

Controllo del moto e robotica industriale

Controllo del moto e robotica industriale Controllo del moto e robotica industriale (Prof. Rocco) Appello del 27 Febbraio 2008 Cognome:... Nome:... Matricola:... Firma:... Avvertenze: Il presente fascicolo si compone di 8 pagine (compresa la copertina).

Dettagli

ANALISI AGLI ELEMENTI FINITI IN GEOTECNICA: UN PRIMO APPROFONDIMENTO

ANALISI AGLI ELEMENTI FINITI IN GEOTECNICA: UN PRIMO APPROFONDIMENTO ANALISI AGLI ELEMENTI FINITI IN GEOTECNICA: UN PRIMO APPROFONDIMENTO 2 GENERALITA SUL METODO AGLI ELEMENTI FINITI. Il Metodo agli Elementi Finiti (F.E.M.) è una tecnica avanzata di risoluzione di equazioni

Dettagli

Programma del corso. Realtà Virtuale. Interazione. Immersione. Presenza. Interazione

Programma del corso. Realtà Virtuale. Interazione. Immersione. Presenza. Interazione Programma del corso Immersione Realtà Virtuale Presenza Flusso di dati in Ambienti Virtuali AMBIENTE VIRTUALE Informazioni efferenti INTERFACCIA Informazioni afferenti UTENTE Moduli logici di un Ambiente

Dettagli

VELOCITA E ACCELERAZIONE

VELOCITA E ACCELERAZIONE VELOCITA E ACCELERAZIONE 1.1 Alcuni problemi sull apprendimento dei concetti di velocità e accelerazione Nonostante i molteplici stimoli tecnologici e nonostante i concetti di velocità e accelerazione

Dettagli

Interazione luce - materia

Interazione luce - materia Interazione luce - materia 1 Modelli di illuminazione Il modello di illuminazione descrive l interazione tra la luce e gli oggetti della scena Descrive i fattori che determinano il colore di un punto della

Dettagli

Robotica industriale. Introduzione al corso. Prof. Paolo Rocco (paolo.rocco@polimi.it)

Robotica industriale. Introduzione al corso. Prof. Paolo Rocco (paolo.rocco@polimi.it) Robotica industriale Introduzione al corso Prof. Paolo Rocco (paolo.rocco@polimi.it) I testi Testo di riferimento Testo per la parte di controllo del moto Sito web con materiale aggiuntivo: http://www.elet.polimi.it/upload/rocco/robotica

Dettagli

Oscillazioni: il pendolo semplice

Oscillazioni: il pendolo semplice Oscillazioni: il pendolo semplice Consideriamo il pendolo semplice qui a fianco. La cordicella alla quale è appeso il corpo (puntiforme) di massa m si suppone inestensibile e di massa trascurabile. Per

Dettagli

Lezione 16: Animazione (2)

Lezione 16: Animazione (2) Lezione 16: Animazione (2) Informatica Multimediale Docente: Umberto Castellani Sommario Introduzione Origini Produrre animazioni Animazione tradizionale (2D) Animazione digitale 2 Animazione 3D Animazione

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

teoresi studi&ricerche

teoresi studi&ricerche UN SISTEMA DI CONTROLLO PER ELICOTTERO Realizzazione con Simulink e Direct3D di M. CARIDI e L. DAGA Dipartimento di Informatica e Sistemistica Università degli Studi di Roma La Sapienza via Eudossiana

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

Rendering. Visione Artificiale - 11 dicembre 2008. Agenda (1 di 2) - Rendering Real-Time e non Real Time. - Ambienti di moodellazione non Real Time

Rendering. Visione Artificiale - 11 dicembre 2008. Agenda (1 di 2) - Rendering Real-Time e non Real Time. - Ambienti di moodellazione non Real Time Rendering Visione Artificiale - 11 dicembre 2008 21/02/2008 Agenda (1 di 2) - Rendering Real-Time e non Real Time - Ambienti di moodellazione non Real Time 3D Studio MAX Maya Ambienti OpenSource: Blender

Dettagli

Controllo di forza per robot

Controllo di forza per robot Controllo di forza per robot Claudio Melchiorri Dipartimento di Elettronica, Informatica e Sistemistica (DEIS) Università di Bologna email: claudio.melchiorri@unibo.it Claudio Melchiorri Controllo di forza

Dettagli

PROGETTAZIONE MECCANICA CON COSMOS/Works. Informazioni di base

PROGETTAZIONE MECCANICA CON COSMOS/Works. Informazioni di base PROGETTAZIONE MECCANICA CON COSMOS/Works Informazioni di base Che cos è COSMOS/Works? COSMOS/Works è un software per sviluppare progettazioni essenzialmente meccaniche completamente integrato col modellatore

Dettagli

CONTROLLARE LE VIBRAZIONI

CONTROLLARE LE VIBRAZIONI Le vibrazioni sono un fenomeno ondulatorio, della stessa natura di quello dei suoni; a differenza di questi, che si propagano nell aria, le vibrazioni diffondono le loro onde nelle strutture solide. Le

Dettagli

UNIT 2 I modelli matematici ricchi di informazione Corso di Controlli Automatici Prof. Tommaso Leo Corso di Controlli Automatici Prof.

UNIT 2 I modelli matematici ricchi di informazione Corso di Controlli Automatici Prof. Tommaso Leo Corso di Controlli Automatici Prof. UNIT 2 I modelli matematici ricchi di informazione Corso di Controlli Automatici Prof. Tommaso Leo Corso di Controlli Automatici Prof. Tommaso Leo 1 Indice UNIT 2 I modelli matematici ricchi di informazione

Dettagli

RISONANZA. Introduzione. Risonanza Serie.

RISONANZA. Introduzione. Risonanza Serie. RISONANZA Introduzione. Sia data una rete elettrica passiva, con elementi resistivi e reattivi, alimentata con un generatore di tensione sinusoidale a frequenza variabile. La tensione di alimentazione

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

Appunti di sviluppo di una procedura software per l analisi di Pushover

Appunti di sviluppo di una procedura software per l analisi di Pushover Appunti di sviluppo di una procedura software per l analisi di Pushover Namirial SpA Il presente testo non vuole essere né una trattazione teorica, né un lezione sul tema della valutazione di vulnerabilità

Dettagli

Modellistica e Simulazione del Comportamento Dinamico di Beccheggio di un Trattore Agricolo

Modellistica e Simulazione del Comportamento Dinamico di Beccheggio di un Trattore Agricolo Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Modellistica e Simulazione del Comportamento Dinamico di Beccheggio di un Trattore Agricolo Relatore: Prof. Roberto Zanasi Correlatori:

Dettagli

Fondamenti di Grafica Tridimensionale

Fondamenti di Grafica Tridimensionale Fondamenti di Grafica Tridimensionale La Pipeline Grafica Marco Di Benedetto marco.dibenedetto@isti.cnr.it Visualizzazione dell Informazione noi siamo qui Informazione mondo reale (es: 3D scans) creazione

Dettagli

Università degli studi di Salerno corso di studi in Ingegneria Informatica TUTORATO DI FISICA. Lezione 5 - Meccanica del punto materiale

Università degli studi di Salerno corso di studi in Ingegneria Informatica TUTORATO DI FISICA. Lezione 5 - Meccanica del punto materiale Università degli studi di Salerno corso di studi in Ingegneria Informatica TUTORATO DI FISICA Esercizio 1 Lezione 5 - Meccanica del punto materiale Un volano è costituito da un cilindro rigido omogeneo,

Dettagli

Termini che è necessario capire:

Termini che è necessario capire: Per iniziare 1........................................ Termini che è necessario capire: Hardware Software Information Technology (IT) Mainframe Laptop computer Unità centrale di elaborazione (CPU) Hard

Dettagli

Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM. Davide Barbieri

Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM. Davide Barbieri Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM Davide Barbieri Contatti skype: davbar86 mail: davide.barbieri@ghostshark.it Panoramica corso Introduzione al mondo delle GPU Modello GPGPU Nvidia

Dettagli

Comando di un robot Kawasaki tramite sensore di forza

Comando di un robot Kawasaki tramite sensore di forza UNIVERSITÀ DI BRESCIA FACOLTÀ DI INGEGNERIA Dipartimento di Ingegneria dell Informazione Laboratorio di Robotica Avanzata Advanced Robotics Laboratory Corso di Robotica (Prof. Riccardo Cassinis) Comando

Dettagli

Dinamica: Forze e Moto, Leggi di Newton

Dinamica: Forze e Moto, Leggi di Newton Dinamica: Forze e Moto, Leggi di Newton La Dinamica studia il moto dei corpi in relazione il moto con le sue cause: perché e come gli oggetti si muovono. La causa del moto è individuata nella presenza

Dettagli

Applicazioni dell amplificatore operazionale

Applicazioni dell amplificatore operazionale Capitolo 10 Applicazioni dell amplificatore operazionale Molte applicazioni dell amplificatore operazionale si basano su circuiti che sono derivati da quello dell amplificatore non invertente di fig. 9.5

Dettagli

I SISTEMI OPERATIVI CONCETTI INTRODUTTIVI

I SISTEMI OPERATIVI CONCETTI INTRODUTTIVI I SISTEMI OPERATIVI CONCETTI INTRODUTTIVI Il Software Software di Base Sistema Operativo (Software di base essenziale) Software di base non essenziale Utility Driver Software applicativi (Applicazioni)

Dettagli

Introduzione al corso

Introduzione al corso Controlli Automatici Introduzione al corso Prof. Cesare Fantuzzi Ing. Cristian Secchi Ing. Federica Ferraguti ARSControl - DISMI - Università di Modena e Reggio Emilia E-mail: {nome.cognome}@unimore.it

Dettagli

LICEO SCIENTIFICO STATALE MARIE CURIE Savignano s. R. (FC) CLASSE 3C ESERCIZI SU MOMENTO ANGOLARE-ROTOLAMENTO. Esercizio.

LICEO SCIENTIFICO STATALE MARIE CURIE Savignano s. R. (FC) CLASSE 3C ESERCIZI SU MOMENTO ANGOLARE-ROTOLAMENTO. Esercizio. LICEO SCIENTIFICO STATALE MARIE CURIE Savignano s. R. (FC) CLASSE 3C ESERCIZI SU MOMENTO ANGOLARE-ROTOLAMENTO Esercizio Esercizio Esercizio Dati esercizio: I 1 =5,0 Kg m 2 I 2 =10 Kg m 2 ω i =10giri/sec

Dettagli

Robot per riabilitazione avanzata della mano. Sabato 19 Novembre 2005 - Hotel Vittoria, Potenza

Robot per riabilitazione avanzata della mano. Sabato 19 Novembre 2005 - Hotel Vittoria, Potenza Robot per riabilitazione avanzata della mano Sabato 19 Novembre 2005 - Hotel Vittoria, Potenza Obiettivi Il seguente progetto è motivato da differenti fattori: Diffondere la riabilitazione della mano e

Dettagli

DEGLI STUDI DI PALERMO UNIVERSITÀ. Tesina di Robotica Industriale. Facoltà di Ingegneria. Corso di Laurea Magistrale in Ingegneria dell Automazione

DEGLI STUDI DI PALERMO UNIVERSITÀ. Tesina di Robotica Industriale. Facoltà di Ingegneria. Corso di Laurea Magistrale in Ingegneria dell Automazione UNIVERSITÀ DEGLI STUDI DI PALERMO Facoltà di Ingegneria Corso di Laurea Magistrale in Ingegneria dell Automazione Tesina di Robotica Industriale Allievi: Roberto Rabbeni Stefania Maria Collura Docente:

Dettagli

PROGETTO ESCAVATORE VIRTUALE

PROGETTO ESCAVATORE VIRTUALE PROGETTO ESCAVATORE VIRTUALE Facoltà di Ingegneria Industriale Corso di Laurea in Ingegneria Meccanica Anno Accademico 2011-2012 Matteo Condoleo 1 OBBIETTIVI Il presente progetto è stato realizzato per

Dettagli

Fondamenti di Automatica

Fondamenti di Automatica Fondamenti di Automatica Funzioni di trasferimento: robustezza e prestazioni Dott. Ing. Marcello Bonfè Dipartimento di Ingegneria - Università di Ferrara Tel. +39 0532 974839 E-mail: marcello.bonfe@unife.it

Dettagli

La modellazione delle strutture

La modellazione delle strutture La modellazione delle strutture 1 Programma 31-1-2012 Introduzione e brevi richiami al metodo degli elementi finiti 7-2-2012 La modellazione della geometria 14-2-2012 21-2-2012 28-2-2012 6-3-2012 13-32012

Dettagli

1 Introduzione al corso 3 1.1 Architettura del sistema di controllo... 6

1 Introduzione al corso 3 1.1 Architettura del sistema di controllo... 6 Indice 1 Introduzione al corso 3 1.1 Architettura del sistema di controllo................ 6 2 Elementi di modellistica 8 2.1 Modelli nel dominio del tempo................... 8 2.2 La trasformata di Laplace......................

Dettagli

Caratteristiche costruttive dei robot industriali

Caratteristiche costruttive dei robot industriali 61 Caratteristiche costruttive dei robot industriali L architettura del robot è quella descritta schematicamente in figura 1, costituita dai seguenti sottoinsiemi: struttura meccanica; sistema d azionamento;

Dettagli

Ricordiamo ora che a è legata ad x (derivata seconda) ed otteniamo

Ricordiamo ora che a è legata ad x (derivata seconda) ed otteniamo Moto armonico semplice Consideriamo il sistema presentato in figura in cui un corpo di massa m si muove lungo l asse delle x sotto l azione della molla ideale di costante elastica k ed in assenza di forze

Dettagli

Attività e insegnamenti dell indirizzo Elettronica ed elettrotecnica articolazione: Elettrotecnica. Disciplina: COMPLEMENTI DI MATEMATICA

Attività e insegnamenti dell indirizzo Elettronica ed elettrotecnica articolazione: Elettrotecnica. Disciplina: COMPLEMENTI DI MATEMATICA Attività e insegnamenti dell indirizzo Elettronica ed elettrotecnica articolazione: Elettrotecnica Disciplina: COMPLEMENTI DI MATEMATICA Il docente di Complementi di matematica concorre a far conseguire

Dettagli

Relazione di fine tirocinio. Andrea Santucci

Relazione di fine tirocinio. Andrea Santucci Relazione di fine tirocinio Andrea Santucci 10/04/2015 Indice Introduzione ii 1 Analisi numerica con COMSOL R 1 1.1 Il Software.................................... 1 1.1.1 Geometria................................

Dettagli

Elaborazione grandezze cinematiche e dinamiche

Elaborazione grandezze cinematiche e dinamiche Modulo 3 Elaborazione grandezze cinematiche e dinamiche Bioingegneria per fisioterapisti Univ.degli Studi di Siena Laurea Univ. in Fisioterapia Ing. A. Rossi Misure per Riabilitazione Finalità: Valutazione

Dettagli

Tecniche di DM: Link analysis e Association discovery

Tecniche di DM: Link analysis e Association discovery Tecniche di DM: Link analysis e Association discovery Vincenzo Antonio Manganaro vincenzomang@virgilio.it, www.statistica.too.it Indice 1 Architettura di un generico algoritmo di DM. 2 2 Regole di associazione:

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

Introduzione alla Realtà Virtuale e Realtà Aumentata in Medicina

Introduzione alla Realtà Virtuale e Realtà Aumentata in Medicina Dipartimento di Ingegneria dell Innovazione Università del Salento, Lecce & Consorzio SPACI (Southern Partnership for Advanced Computational Infrastructure) Introduzione alla Realtà Virtuale e Realtà Aumentata

Dettagli

Protesi mioelettriche. utilizzando l'energia fornita da accumulatori elettrici e batterie.

Protesi mioelettriche. utilizzando l'energia fornita da accumulatori elettrici e batterie. Le protesi mioelettriche sono protesi elettromeccaniche ad energia extracorporea, quindi dispositivi che realizzano vari movimenti utilizzando l'energia fornita da accumulatori elettrici e batterie.

Dettagli

n matr.145817 23. 01. 2003 ore 8:30-10:30

n matr.145817 23. 01. 2003 ore 8:30-10:30 Matteo Vecchi Lezione del n matr.145817 23. 01. 2003 ore 8:30-10:30 Il Moto Esterno Con il termine moto esterno intendiamo quella branca della fluidodinamica che studia il moto dei fluidi attorno ad un

Dettagli

CORSO DI IDRAULICA esercizi svolti di correnti a superficie libera

CORSO DI IDRAULICA esercizi svolti di correnti a superficie libera 08/0/000 CORSO DI IDRAULICA esercizi svolti di correnti a superficie libera Prof. E. Larcan - Ing. F. Ballio collaborazione dell'ing. Sara Marcante Sulla base dell'esperienza didattica nell'ambito dei

Dettagli

FACSIMILE prova scritta intercorso 1 (per allenamento)

FACSIMILE prova scritta intercorso 1 (per allenamento) FACSIMILE prova scritta intercorso 1 (per allenamento) Laurea in Scienza e Ingegneria dei Materiali anno accademico -3 Istituzioni di Fisica della Materia - Prof. Lorenzo Marrucci Tempo a disposizione:

Dettagli

Le cadute nell anziano: fattori di rischio, prevenzione e trattamento LA BIOINGEGNERIA DELLE CADUTE. Ing. Armanda Caporizzo

Le cadute nell anziano: fattori di rischio, prevenzione e trattamento LA BIOINGEGNERIA DELLE CADUTE. Ing. Armanda Caporizzo Le cadute nell anziano: fattori di rischio, prevenzione e trattamento LA BIOINGEGNERIA DELLE CADUTE Ing. Armanda Caporizzo Il movimento E un complesso processo di elaborazione di segnali, eseguito sotto

Dettagli

Interazione TS-Vision Kawasaki

Interazione TS-Vision Kawasaki UNIVERSITÀ DI BRESCIA FACOLTÀ DI INGEGNERIA Dipartimento di Ingegneria dell Informazione Laboratorio di Robotica Avanzata Advanced Robotics Laboratory Corso di Robotica (Prof. Riccardo Cassinis) Interazione

Dettagli

Electrical motor Test-bed

Electrical motor Test-bed EM_Test_bed Page 1 of 10 Electrical motor Test-bed 1. INTERFACCIA SIMULINK... 2 1.1. GUI CRUSCOTTO BANCO MOTORE... 2 1.2. GUIDE... 3 1.3. GUI PARAMETRI MOTORE... 3 1.4. GUI VISUALIZZAZIONE MODELLO 3D MOTORE...

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

SECONDO BIENNIO ISTITUTO TECNICO

SECONDO BIENNIO ISTITUTO TECNICO SETTORE DOCUMENTI PER LA DISCUSSIONE ISTITUTO TECNICO INDIRIZZO ARTICOLAZIONE ELETTROTECNICA TECNOLOGICO ELETTRONICA ED ELETTROTECNICA ESITI DI APPRENDIMENTO (competenze, abilità, conoscenze) Regolamento,

Dettagli

Note sull esperienza Misura di g versione 1, Francesco, 7/05/2010

Note sull esperienza Misura di g versione 1, Francesco, 7/05/2010 Note sull esperienza Misura di g versione 1, Francesco, 7/05/010 L esperienza, basata sullo studio di una molla a spirale in condizioni di equilibrio e di oscillazione, ha diversi scopi e finalità, tra

Dettagli

PROBLEMI E SISTEMI DI CONTROLLO. Ruolo della modellistica matematica. Sistemi di controllo in anello chiuso. Controllo, supervisione e automazione

PROBLEMI E SISTEMI DI CONTROLLO. Ruolo della modellistica matematica. Sistemi di controllo in anello chiuso. Controllo, supervisione e automazione PROBLEMI E SISTEMI DI CONTROLLO Problemi di controllo Sistemi di controllo Ruolo della modellistica matematica Sistemi di controllo in anello chiuso Controllo, supervisione e automazione Illustrazioni

Dettagli

2. L ENERGIA MECCANICA

2. L ENERGIA MECCANICA . L ENERGIA MECCANICA.1 Il concetto di forza La forza può essere definita come «azione reciproca tra corpi che ne altera lo stato di moto o li deforma: essa é caratterizzata da intensità direzione e verso».

Dettagli

stazione sismica Sistema di rilevazione e archiviazione dei segnali sismici PDF created with pdffactory Pro trial version www.pdffactory.

stazione sismica Sistema di rilevazione e archiviazione dei segnali sismici PDF created with pdffactory Pro trial version www.pdffactory. stazione sismica Sistema di rilevazione e archiviazione dei segnali sismici 1 Schema di una stazione sismica D POWER Display keyboard S ADC CPU I/O DRIVE CLOCK S POWER ADC CPU I/O CLOCK D sensore alimentazione

Dettagli

Fondamenti sui sistemi di Attuazione nella Robotica. Corso di Robotica Prof. Gini Giuseppina 2006/2007

Fondamenti sui sistemi di Attuazione nella Robotica. Corso di Robotica Prof. Gini Giuseppina 2006/2007 Fondamenti sui sistemi di Attuazione nella Robotica PhD. Ing. Folgheraiter Michele Corso di Robotica Prof. Gini Giuseppina 2006/2007 1 Definizione di Attuatore (Robotica) Si definisce attuatore, quella

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

Percorsi. Percorsi progettuali Softing. Progettare edifici isolati sismicamente

Percorsi. Percorsi progettuali Softing. Progettare edifici isolati sismicamente Percorsi 4 Percorsi progettuali Softing Progettare edifici isolati sismicamente Percorsi Progettare edifici isolati sismicamente giugno 2006 rev. 0 2006, Softing srl. Questo testo è stato redatto a cura

Dettagli

1.1 Definizione ed elementi di un azionamento elettrico

1.1 Definizione ed elementi di un azionamento elettrico 1 L AZIONAMENTO ELETTRICO COME SISTEMA 1.1 Definizione ed elementi di un azionamento elettrico Si definisce Azionamento Elettrico (A.E.) l insieme composto da un motore elettrico e dagli apparati d alimentazione,

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

L IDENTIFICAZIONE STRUTTURALE

L IDENTIFICAZIONE STRUTTURALE e L IDENTIFICAZIONE STRUTTURALE I problemi legati alla manutenzione e all adeguamento del patrimonio edilizio d interesse storico ed artistico sono da alcuni anni oggetto di crescente interesse e studio.

Dettagli