Architettura per il controllo di robot industriali tramite visione stereoscopica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Architettura per il controllo di robot industriali tramite visione stereoscopica"

Transcript

1 POLITECNICO DI TORINO III Facoltà di Facoltà di Ingegneria dell Informazione Corso di Laurea in Ingegneria Meccatronica Tesi di Laurea Architettura per il controllo di robot industriali tramite visione stereoscopica Relatori: Prof. Basilio Bona Prof.ssa Marina Indri Candidata: Elena Balzano Maggio 2006

2 Indice Introduzione 1 1 Architettura iniziale del sistema di visione e di controllo Architetture di visual servo Struttura di riferimento Strategie di controllo e visione Nuova configurazione integrata visione-controllo Algoritmo di visione Controllo del robot Comunicazione tra processi Il sistema di visione Struttura e funzionamento Configurazione hardware Software di acquisizione Modello della telecamera Proiezione prospettica Tecniche di calibrazione delle telecamere Introduzione alla calibrazione Parametri intrinseci Parametri estrinseci Calcolo dei parametri di calibrazione Il metodo di Zhang Distorsione Esperimenti di calibrazione Calibrazione con le librerie OpenCv Organizzazione del codice I

3 5.3 Risultati sperimentali La visione stereoscopica Teoria della stereovisione Geometria epipolare Ricerca delle corrispondenze Ricostruzione 3D Struttura del programma Ricerca delle feature Triangolazione Interazione tra processi Linux RTAI e i sistemi real time La generazione di codice InterProcess Communication Analisi dei processi in gioco Controllo del robot L anello di posizione L anello di controllo basato sulla visione La cinematica Il pianificatore Il controllo sulla visione Il riferimento visivo Risultati sperimentali sul controllo Test effettuati Analisi delle problematiche Conclusioni 96 A Il robot Comau Smart 3-S2 98 A.1 Il controllore C3G A.2 L apertura Tecnospazio A.3 Dati tecnici B Librerie OpenCv 104 B.1 Funzioni di base B.2 Utilizzo con le librerie HighGui II

4 Bibliografia 107 III

5 Introduzione L uso dei robot si sta diffondendo in molti campi di attività, dall ambito industriale all intrattenimento, con funzioni molto diverse tra loro. Tra gli scopi per cui vengono utilizzati vi è la possibilità di sostituirsi all uomo in situazioni pericolose quali la rimozione di mine, incendi oppure l esplorazione di altri pianeti. Essi possono inoltre affiancarsi all uomo per compiere operazioni faticose o per assisterlo in caso di menomazione o inabilità. Naturalmente, a seconda della sua funzione, ogni robot dovrà avere struttura e caratteristiche adeguate. In particolare il robot di cui ci si occuperà nella tesi è di tipo industriale, cioè in grado di svolgere mansioni ripetitive per molto tempo e con grande precisione. Così come prodotto, il robot industriale ha la capacità di realizzare un insieme ristretto di compiti per i quali solitamente viene addestrato in precedenza. Spesso lo si ritrova inserito in catene di montaggio. L operazione che deve realizzare viene eseguita in catena aperta sulla base di una serie di istruzioni date dall operatore durante la fase iniziale di programmazione. Negli anni sono stati sviluppati diversi algoritmi di controllo di posizione e velocità che garantiscono un funzionamento preciso del robot. Tutto questo avviene senza feedback dall esterno perchè spesso gli unici sensori di cui sono dotati sono quelli che misurano le posizioni dei vari giunti e le correnti ai motori. Partendo da questa situazione nasce l esigenza di dotare i robot industriali di ulteriori sensori per permettergli di avere dei riscontri, sull operazione svolta, dall ambiente esterno. Solitamente la carenza di sensori diversi da quelli di posizione o corrente è dovuta a motivi di costo che, a livello industriale, gioca un ruolo importante. Le capacità di cui viene dotato il robot tramite la visione spesso però giustificano la spesa. Aumentano infatti i tipi di lavorazioni che un robot industriale può eseguire e gli ambiti in cui può essere impiegato. Inoltre i costi per l aggiunta di nuovi sensori sono comunque limitati rispetto a quelli per il robot e ai vantaggi che si ottengono. In questo contesto si inserisce il lavoro svolto in questa tesi che ha come obiettivo la creazione di un architettura di controllo di un robot industriale basata sull utilizzo della visione stereoscopica. L aggiunta del sistema di visione rende possibile l interazione del robot con l ambiente esterno sulla base di informazioni visive. Inoltre ha la possibilità di lavorare in un ambiente che si modifica e che non richiede aree di lavoro a lui dedicate e strutturate in modo da avere caratteristiche costanti nel tempo. Un ulteriore vantaggio 1

6 lo si ha quando l ambiente di lavoro e il posizionamento degli oggetti nello spazio non possono essere controllati. Utilizzando la visione si possono effettuare misurazioni sugli oggetti che compongono la scena senza entrare in contatto con l ambiente. Senza la visione operazioni come il posizionamento di oggetti nello spazio o la movimentazione evitando gli ostacoli vengono svolte in catena aperta. Naturalmente si possono utilizzare diverse tipologie di sensori per ottenere informazioni sulla struttura dell ambiente di lavoro come ultrasuoni o infrarossi, i quali danno meno informazioni della visione ma possono essere integrati con essa. La tesi si propone quindi di creare un architettura di visual servoing, cioè di controllare il movimento di un robot in funzione del feedback visivo in ingresso. Il visual servoing si ottiene come risultato della fusione di diverse aree di competenza tra le quali il processamento di immagini ad alta velocità, cinematica, dinamica, teoria dei controlli, calcoli in real time. La tesi è organizzata in modo da presentare subito il punto di partenza di tutto il lavoro svolto, e quindi l architettura implementata nella tesi [1] (capitolo 1), per arrivare a illustrare l impostazione del nuovo sistema visual servo nel capitolo 2. Tale sistema è costituito da tre parti fondamentali: l algoritmo di visione, il controllo del robot e la comunicazione tra i due processi. Alla visione sono dedicati i capitoli dal 3 al 6. In particolare nel capitolo 3 si analizza il sistema di visione utilizzato, sia dal punto di vista hardware, sia dal punto di vista software, con una breve introduzione ai modelli delle telecamere utili per l interpretazione delle immagini. Si passa poi alla descrizione del processo di calibrazione dal punto di vista teorico (capitolo 4) e pratico (capitolo 5) con la presentazione dei risultati sperimentali ottenuti. Il capitolo 6 parla della teoria di base della visione stereoscopica e descrive passo per passo l algoritmo utilizzato per l estrazione delle feature dall immagine. La comunicazione tra processi, con cenni sui sistemi operativi real time e particolare riferimento a Linux RTAI, sarà argomento del capitolo 7. I capitoli 8 e 9 tratteranno l intera architettura del sistema di controllo con l analisi di tutte le parti che la compongono e i relativi comportamenti sperimentali. 2

7 Capitolo 1 Architettura iniziale del sistema di visione e di controllo In questo capitolo verrà descritta la struttura dell architettura di partenza per il controllo del robot tramite la visione. Oltre a una parte introduttiva sul robot industriale utilizzato, che verrà approfondito nell appendice A, vi sarà una descrizione della configurazione secondo la quale sono connessi i vari elementi che si occupano del controllo. Infine saranno presentate le caratteristiche degli algoritmi utilizzati per la visione e il controllo. Per poter meglio esporre le tecniche di controllo e gli algoritmi per la visione utilizzati verranno prima analizzate le caratteristiche di base di una generica architettura di asservimento che utilizza un feedback visivo. 1.1 Architetture di visual servo Riferendosi al documento [2] è possibile definire la struttura standard di un sistema per il controllo di un robot dotato di sistema di visione. Con il termine visual servoing si intende il controllo della posizione del robot relativamente a un target che può essere rappresentato da un oggetto nello spazio o da un insieme di feature, cioè caratteristiche dell ambiente di lavoro. Una prima classificazione delle architetture di visual servoing è stata presentata in [3]. Essa distingue tra sistemi che utilizzano direttamente la visione per il controllo del robot (direct visual servo) e sistemi in cui si aggiunge, all anello di controllo sulla posizione, un ulteriore anello che sfrutta le informazioni ricavate dalle immagini (dynamic look and move). Un ulteriore suddivisione riguarda il calcolo del segnale di errore per il controllo di posizione, il quale può essere definito in coordinate 3D (PBVS) oppure direttamente in coordinate 2D immagine (IBVS). Considerando la prima distinzione si parla di architetture direct visual servo e dynamic 3

8 1 Architettura iniziale del sistema di visione e di controllo look and move. Come rappresentato in figura 1.1 i sistemi direct visual servo controllano il robot generando direttamente il riferimento di corrente per la parte di potenza a partire dall analisi dell immagine. Questo modo di operare ha lo svantaggio che la chiusura dell anello di corrente deve essere effettuata a velocità elevate e non sempre, per motivi di sicurezza, è possibile fornire, ai robot industriali, un riferimento in corrente anzichè in posizione. Figura 1.1. Configurazione direct visual servo In figura 1.2 vi è una rappresentazione schematica di un sistema dynamic look and move. In esso la visione viene utilizzata solo per fornire il set point a un anello di posizione. Genera, a partire dall immagine, il riferimento di posizione da inviare a un anello di controllo ai giunti, sulla base dell elaborazione dell immagine e di un riferimento. Questa tecnica permette alla parte di visione di considerare il robot come una macchina cartesiana ideale senza singolarità. La seconda distinzione tra sistemi visual servo è tra architetture PBVS (Position Based Visual Servo) e IBVS (Image Based Visual Servo). Il metodo PBVS utilizza le informazioni estratte dall immagine congiuntamente alle informazioni geometriche sul modello della telecamera e sui suoi parametri. Il fine è quello di stimare la posizione cartesiana del target che, tramite la conoscenza geometrica del robot, viene riportata al sistema di riferimento alla sua base e confrontata con la posizione corrente del robot, espressa rispetto allo stesso sistema di riferimento, per chiudere un anello di controllo. Lavora con posizioni 3D con 6 gradi di libertà e ha lo svantaggio di richiedere la calibrazione delle telecamere. Con il metodo IBVS i valori per il controllo vengono determinati solamente sulla base delle immagini senza conoscenze sulla geometria del sistema. Un esempio 4

9 1 Architettura iniziale del sistema di visione e di controllo Figura 1.2. Configurazione dynamic look and move di applicazione è quello in cui si vuole portare una particolare feature al centro dell immagine. Il set point di posizione viene calcolato in base all errore tra una feature e un riferimento che risiedono entrambi sul piano immagine. Per completare la descrizione della struttura del manipolatore dotato di sistema di visione è necessario stabilire la configurazione delle telecamere. Esse possono essere poste sul manipolatore oppure avere posizione fissa nell ambiente di lavoro. Nel primo caso si parla di configurazione eye-in-hand perchè le telecamere vengono montate vicine alla punta operativa del robot in modo da osservare il lavoro che sta compiendo. In entrambe le situazioni la posizione dell oggetto nello spazio rispetto al sistema di riferimento posto alla base del robot è data dalla sequenza di trasformazioni che portano la posizione dell oggetto nel sistema di riferimento della telecamera, nel tool e quindi nella base. Nel caso di telecamere fisse nello spazio la trasformazione camera-tool non è fissa ma varia con il movimento del robot. Per poter definire la trasformazione che permette di rappresentare la posizione dell oggetto nel sistema di riferimento della telecamera è necessario effettuare l operazione di calibrazione, preliminare al processo di tracking dell oggetto. La scelta tra le due configurazioni dipende dall applicazione per la quale viene realizzato il sistema di visual servo e soprattutto dalla necessità di osservare con più o meno precisione porzioni di spazio di diversa dimensione. Naturalmente telecamere poste nello spazio dovranno essere in grado di mettere a fuoco a maggiore distanza rispetto a quelle posta sulla punta operativa. Per questo motivo è anche possibile utilizzare una configurazione mista con telecamere nello spazio a bassa risoluzione, come webcam, per ridurre l area di lavoro e poi telecamere più precise sulla punta per visualizzare l area di lavoro con maggiore dettaglio. 5

10 1 Architettura iniziale del sistema di visione e di controllo 1.2 Struttura di riferimento Il punto di partenza per la creazione dell architettura di controllo del robot tramite visione è stato il sistema realizzato durante la tesi [1]. La sua struttura è riportata in figura 1.3. Figura 1.3. Architettura iniziale Il robot da controllare, presente in laboratorio, è il manipolatore Comau Smart 3-S2 (figura 1.4) le cui caratteristiche principali sono riportate in appendice A. Esso è un manipolatore antropomorfo a 6 gradi di libertà con polso di tipo euleriano. E stato progettato per svolgere operazioni quali saldatura ad arco, applicazione di collanti, palletizzazione,...quindi ha capacità di carico limitate. Sul robot sono montati i seguenti sensori: resolver, per la misura delle posizioni di tutti i giunti sensori di corrente ai motori sistema di visione sensore di forza, in grado di misurare forze e coppie applicate ai tre assi principali. Può eventualmente essere utilizzato per integrare l effetto della visione nel controllo. 6

11 1 Architettura iniziale del sistema di visione e di controllo Figura 1.4. Robot Comau Smart 3-S2 I feedback relativi a posizioni e correnti, provenienti dal robot, vengono letti dal C3G Controller che è connesso al robot. Esso è costituito dal blocco di potenza, cioè dagli azionamenti e dal relativo controllo di corrente, e da un controllore interno di posizione ai giunti. Gli elementi del C3G che vengono utilizzati dipendono dalla modalità operativa in cui è stato impostato il robot. Il manipolatore Comau può infatti lavorare in 6 diverse modalità, selezionabili dall utente, che differiscono soprattutto per il livello di apertura del controllore verso l esterno. Questo è possibile grazie all apertura Tecnospazio, di cui è dotato il C3G, che è costituita da una scheda Bit3 tramite la quale il Controller può comunicare, attraverso un cavo per trasferimenti ad alta velocità, con la relativa scheda montata su un personal computer. Questo permette di avere un interazione maggiore con il robot con la possibilità di sviluppare proprie strategie di controllo grazie anche alla libreria di funzioni software già implementata e messa a disposizione con le schede. Lo scambio dati tra PC e C3G avviene attraverso una memoria condivisa, quindi occorre regolarne l accesso tramite segnali di sincronizzazione provenienti, sotto forma di interrupt, dal Controller. La modalità di funzionamento utilizzata è la numero 1 la quale prevede che PC e C3G comunichino con frequenza pari a 50Hz. Il C3G riceve in input il set point di posizione ai giunti che viene utilizzato dal microinterpolatore. Quest ultimo permette all anello di corrente interno, più veloce a 1kHz, di avere sempre disponibile un riferimento. La determinazione di tale set point sarà il risultato dell elaborazione di un riferimento di posizione cartesiano da parte della funzione di cinematica inversa e di un pianificatore ai giunti. Quest ultimo componente, che verrà analizzato meglio nel capitolo 8, ha il compito di fornire un riferimento di posizione ai giunti compatibile con le caratteristiche 7

12 1 Architettura iniziale del sistema di visione e di controllo di velocità e accelerazioni massime del robot. Lo schema di figura 1.3 evidenzia la presenza di due PC: PC1: si occupa della comunicazione con il C3G ed è quindi fornito di scheda Bit3. E dotato di sistema operativo MS-DOS ed è sede dell algoritmo di controllo per la generazione del set point di posizione. PC2: in ambiente Windows ha il compito di elaborare le immagini provenienti dalla telecamera ed estrarne le feature necessarie per il calcolo del set point di posizione. Essi scambiano dati tramite comunicazione seriale: il PC2 invia un interrupt al PC1 quando ha informazioni disponibili. La necessità di utilizzare due PC nasce dal fatto che il sistema operativo MS-DOS è indispensabile per la comunicazione con il C3G ma, allo stesso tempo, non sarebbe in grado di supportare anche il processo di visione, questo sia perchè non è multitasking, sia per la disponibilità di risorse limitate. Affinchè tutta l architettura funzioni è necessario stabilire dei vincoli temporali. Il processo di elaborazione delle immagini, a causa della bassa frequenza di acquisizione del frame grabber (fino a 30fps), non è sottoposto a vincoli temporali. In assenza di nuovi dati riguardanti l elaborazione dell immagine il PC1 li stimerà per garantire il calcolo del set point di posizione soddisfacendo le specifiche di tempo. Il processo che risiede sul PC1 invece deve rispettare il periodo di 20 ms imposto dalla modalità 1 nei quali deve leggere i dati dal C3G, calcolare il nuovo set-point di posizione cartesiano e inviarlo al Controller. 1.3 Strategie di controllo e visione Nell architettura di figura 1.3 la visione avviene utilizzando una sola telecamera monocromatica direttamente collegata al frame grabber presente nel PC2. Considerando quanto esposto nel paragrafo 1.1 la telecamera è stata posta sulla punta operativa del robot in modo da avere una visione dettagliata della scena in cui si muove il manipolatore. Inoltre è stata scelta una configurazione del tipo dynamic look and move per tutti i vantaggi presentati in precedenza. All interno di questa architettura si inseriscono le strategie di controllo e visione. La parte di visione utilizza una sola telecamera che fornisce il segnale video al PC2. Su di esso risiede l algoritmo asincrono per l estrazione delle feature dall immagine. Questo algoritmo, sviluppato nella tesi [4], fa uso delle librerie Intel OpenCv (appendice B) che sono basate sul linguaggio di programmazione C++. Gli scopi per i quali è stata utilizzata la visione sono stati l inseguimento di un punto nero su fondo bianco e il riconoscimento di un pattern con geometria nota a priori. Tale pattern (figura 1.5) viene 8

13 1 Architettura iniziale del sistema di visione e di controllo individuato tra tutti i contorni presenti nell immagine sfruttando la sua asimmetria e la sua struttura che prevede l inclusione di contorni rettangolari. Figura 1.5. Pattern da individuare Il PC2 fornisce al PC1 la posizione del target nello spazio, nel caso di architettura PB- VS, o la posizione del target nell immagine, nel caso di architettura IBVS. Tale posizione viene data in input al processo sincrono per il controllo che risiede sul PC1. Sono state utilizzate entrambe le architetture PBVS e IBVS per svolgere i seguenti esperimenti: con architettura IBVS si realizza il tracking del punto nel piano con lo scopo di portarlo al centro dell immagine con architettura PBVS si individua il pattern utilizzando 4 gradi di libertà (3 di posizione e la rotazione attorno all asse z del riferimento solidale alla punta operativa figura A.1) In entrambi i casi sono state considerate due leggi di controllo: Proporzionale con coefficiente matriciale K p = diag(0.1) Proporzionale Derivativa con coefficienti matriciali K p = diag(0.1) e K d = diag(0.075) dove i valori dei coefficienti sono stati determinati sperimentalmente. Ulteriori esperimenti sono stati svolti utilizzando congiuntamente il sensore di visione con il sensore di forza: il primo per individuare il target e il secondo, ad esempio, per seguire i contorni dell oggetto sul quale è stato posto il pattern. 9

14 Capitolo 2 Nuova configurazione integrata visione-controllo L obiettivo che ci si pone, a partire dal sistema presentato nel capitolo precedente, è realizzare una nuova architettura per il controllo del robot Comau tramite la visione. Essa prevede l integrazione degli algoritmi di controllo e di elaborazione delle immagini su un unico PC e l utilizzo della visione stereo. In figura 2.1 viene schematizzata la nuova architettura. Figura 2.1. Nuova architettura 10

15 2 Nuova configurazione integrata visione-controllo La caratteristica principale che il sistema deve avere è la modularità. L architettura potrà essere separata in diverse parti che, una volta stabilite le interfacce, potranno evolvere e variare nel tempo. Questo permetterà di rendere il lavoro svolto in questa tesi una base di partenza per concentrarsi su uno studio più approfondito degli algoritmi di visione e di controllo. Dovrà infatti essere possibile modificare una di queste parti mantenendo fissa la struttura di base. La modularità diventa una caratteristica fondamentale anche nel caso in cui si voglia considerare la possibilità che all algoritmo di visione si sostituisca un altra fonte di informazioni per il controllo come ad esempio un sensore di forza. L architettura di visual servo sarà di tipo dynamic look and move, cioè la visione non verrà utilizzata per fornire direttamente un riferimento di corrente ai motori ma, servirà per aggiungere al controllo di posizione un ulteriore anello più ad alto livello. Questo anello aggiungerà un livello di astrazione e sfrutterà le feature estratte dalle immagini per generare un set point di posizione cartesiano. Questa scelta rientra in un architettura del tipo PBVS infatti la posizione in uscita dal processo di visione non viene confrontata con un altra posizione all interno dell immagine ma, con la posizione corrente del robot. In questo modo la struttura si avvicina a un generico schema di controllo che risulta valido anche per tecniche di controllo di natura non visiva. Per questo progetto si utilizzeranno due telecamere monocromatiche montate sulla punta operativa del robot, cioè secondo la configurazione binocular eye-in-hand. Questo tipo di configurazione permette di visualizzare con precisione l area in cui opera la punta operativa del robot. Essendo una porzione di spazio limitata si richiede un veloce processamento delle immagini dal momento che il frame cambia a ogni movimento del robot. Nel caso di tracking di un oggetto nello spazio sarà quindi necessario fare l ipotesi di movimento lento del target in modo che resti sempre all interno del campo di vista delle telecamere. I due personal computer, PC1 e PC2, presenti nell architettura di partenza vengono sostituiti da un unico PC su cui risiedono due processi distinti che si occupano di controllo e di visione. Questo PC rimane collegato, tramite cavo ad alta velocità di comunicazione, al C3G. Per poter raggiungere un maggiore grado di apertura e di flessibilità il robot viene utilizzato in modalità 4 anzichè in modalità 1. In questo modo operativo il Controller svolge le funzioni minime in quanto riceve direttamente dal PC i set point di coppia, i quali sono legati ai set point di corrente da una costante moltiplicativa. Questi set point devono essere inviati con frequenza pari a 1kHz e vengono calcolati sulla base delle posizioni ai giunti lette dal robot e dagli altri input provenienti dai sensori. Il PC è dotato di Linux RTAI (RealTime Application Interface) che garantisce la presenza di un sistema operativo real time e a codice libero. Il processo che si occupa della parte di controllo è di tipo real time in quanto deve garantire la presenza di un riferimento per il robot. Esso riceve in ingresso dal C3G le misure delle posizioni ai giunti e dal processo di visione le informazioni sull estrazione delle feature dalle immagini, e fornisce in 11

16 2 Nuova configurazione integrata visione-controllo uscita il riferimento per il blocco di potenza. Ulteriori dettagli su questo processo verranno presentati nella sezione 2.2. Nella sezione 2.1 verrà invece analizzato il processo che si occupa delle tecniche di computer vision applicate alle immagini stereo provenienti dalle telecamere. Esso non necessita del requisito di real time in quanto la velocità di acquisizione ed elaborazione delle immagini è molto più bassa della frequenza a cui lavora la parte di controllo. La comunicazione tra i due processi (paragrafo 2.3) avviene sfruttando gli strumenti di IPC (InterProcess Communication) messi a disposizione da RTAI. 2.1 Algoritmo di visione Avendo scelto di creare un architettura PBVS, l algoritmo di visione ha il compito di fornire in uscita la posizione di una feature dell immagine nello spazio. Si è scelto di avere come obiettivo il tracking di una sfera nera su fondo bianco. L output della visione dovrà quindi essere la posizione del centro di massa della sfera. La scelta di un applicazione abbastanza semplice e che presuppone la presenza di un ambiente strutturato è dovuta all interesse nella creazione dell architettura e non nell implementazione specializzata dell algoritmo di elaborazione delle immagini. Naturalmente l implementazione di strategie più complesse potrà essere facilmente inserita nel sistema. Il programma che si occupa di computer vision farà uso delle librerie Intel OpenCv (versione 0.9.5) le quali mettono a disposizione tutte le funzioni di base per il raggiungimento dello scopo preposto. Maggiori dettagli verranno presentati nell appendice B. Esse sono librerie open source e quindi con un comportamento interno trasparente all utente. Come conseguenza della scelta di utilizzare queste librerie si ha l uso di C++ come linguaggio di programmazione. Il programma sarà quindi strutturato in classi con metodi e attributi secondo lo stile della programmazione a oggetti. Questo permette di essere indipendenti dall interfaccia grafica, che si limiterà a richiamare i metodi delle classi, soddisfacendo la proprietà di modularità. Le operazioni principali che devono essere svolte dal software di visione sono: la calibrazione delle telecamere, utile per stabilire una relazione tra le feature dell immagine e gli oggetti nello spazio l individuazione della sfera in entrambe le immagini e il calcolo dei due centri di massa la triangolazione per la ricostruzione 3D dell oggetto di cui fare il tracking 12

17 2 Nuova configurazione integrata visione-controllo 2.2 Controllo del robot Il codice che implementa l algoritmo di controllo si ottiene, tramite la generazione automatica di codice, a partire da uno schema Simulink la cui struttura di principio è riportata in figura 2.2. Figura 2.2. Struttura dello schema di controllo Nello schema è visibile il blocco che rappresenta il robot Comau Smart 3-S2. Esso riceve in ingresso le coppie ai motori e restituisce le posizioni ai giunti lette dai resolver. Gli anelli di controllo presenti sono due: uno interno di posizione ai giunti e uno esterno per la generazione del set point di posizione tramite la visione. Il controllore per l anello di posizione è di tipo PID ed è stato messo a punto durante la tesi [5]. Il set point di posizione in ingresso al controllore deve soddisfare le specifiche di velocità e accelerazioni massime del robot permettendogli di seguire una traiettoria non a gradino. Per questi motivi è presente un blocco per la pianificazione del moto ai giunti. L anello più esterno opera con posizioni cartesiane anzichè posizioni ai giunti, quindi per poterlo integrare con l anello interno bisogna fare uso delle cinematiche. La cinematica diretta per la conversione giunti-cartesiano e le cinematica inversa per il passaggio contrario. Quello che verrà chiamato per comodità controllo di visione consiste in una legge per la determinazione del set point di posizione a partire dalle informazioni provenienti dalle immagini. Queste informazioni vengono fornite da un apposito blocco per la lettura dei dati da una FIFO. I blocchi descritti danno solo una rappresentazione macroscopica del sistema di controllo. Ognuno di essi verrà affrontato in modo più specifico nel capitolo 8 sia dal punto di vista della descrizione del funzionamento, sia per le problematiche affrontate in fase di verifica sperimentale. Ai blocchi di base inoltre si aggiungono altre funzioni per aumentare l affidabilità e la completezza del sistema. 13

18 2 Nuova configurazione integrata visione-controllo 2.3 Comunicazione tra processi Secondo la configurazione di figura 2.1 su una stessa macchina risiedono un processo real time, dedicato al controllo, e un normale task di Linux, che si occupa di visione. Il primo riceverà dati dal secondo in modo asincrono, a causa delle diverse caratteristiche temporali dei due, quindi saranno necessari un area di memoria in cui salvare i dati e un segnale che ne indica la presenza. RTAI mette a disposizione dei task diversi strumenti per la comunicazione tra processi che verranno meglio illustrati nel capitolo 7. Considerando che i processi di visione e controllo devono scambiarsi ogni volta una posizione, cioè sei numeri reali, il meccanismo delle FIFO sembra essere il più appropriato. Per indicare che è disponibile un nuovo riferimento di posizione per il controllo si utilizzano i segnali real time di Linux che garantiscono l accodamento della segnalazione senza perdite. Per applicare questa tecnica è necessario che i due processi siano parenti, quindi il processo di visione verrà creato come figlio del task di controllo. Nella fase di implementazione la comunicazione tra i due processi verrà gestita da una classe in linguaggio C++, per il processo di visione, e da una S-function, per il processo di controllo, ottenuto a partire da uno schema Simulink tramite la generazione di codice. In realtà non tutte le operazioni svolte dalla parte di controllo hanno vincoli temporali stringenti. Solo l anello più interno deve lavorare a frequenza 1kHz in modo che il robot abbia sempre un riferimento disponibile. Quindi le varie parti che compongono il controllo possono eventualmente essere suddivise tra processi hard e soft real time. 14

19 Capitolo 3 Il sistema di visione All interno dell architettura di controllo descritta nel capitolo 2 la parte di visione si inserisce come strumento di ausilio alla movimentazione del robot. Tramite la visione le potenzialità del robot aumentano, diventa così capace di svolgere una maggiore quantità di operazioni diverse. Alcuni esempi di applicazioni possibili sono il tracking di oggetti, il riconoscimento di ostacoli e il posizionamento di oggetti nello spazio. Naturalmente, per poter interpretare correttamente le immagini provenienti dal sistema di visione, al fine di estrarne le informazioni utili alla realizzazione del compito, ci deve essere un parte di intelligenza. Quest ultima è la parte di più difficile implementazione e necessita della conoscenza del processo di formazione dell immagine. In questo capitolo introduttivo alla parte di visione verrà descritto il funzionamento e la struttura di un generico sistema di visione approfondendo l argomento nell analizzare le caratteristiche dell hardware che compone l impianto utilizzato. Si passerà quindi a descrivere l acquisizione delle immagini dal punto di vista software. Nella seconda parte del capitolo verranno presentati i principi di base che regolano il processo di formazione dell immagine dal punto di vista della computer vision. Essi sono necessari per la comprensione e l interpretazione dell immagine. 3.1 Struttura e funzionamento Un generico sistema di visione ha lo scopo di fornire in uscita un immagine della realtà che sta osservando. Nel caso in cui essa debba essere processata da un computer si deve trattare di un immagine di tipo digitale. Al fine di ottenere tale risultato servono due elementi fondamentali: una o più telecamere un frame grabber 15

20 3 Il sistema di visione All interno di un sistema di visione stereoscopica si utilizzano due telecamere che catturano una coppia di immagini stereo analogiche. La conversione in immagini digitali viene realizzata dal frame grabber. Una rappresentazione schematica di questo sistema è riportata in figura 3.1. Figura 3.1. Struttura di un sistema di visione stereo Il processo di formazione dell immagine inizia con i raggi luminosi che entrano nella telecamera attraverso un apertura detta pupilla. L immagine si forma grazie a questi raggi luminosi che colpiscono uno schermo, o piano immagine, su cui risiede il dispositivo fotosensible che registra le intensità dei raggi luminosi, il CCD (Charge Coupled Device). Molti di questi raggi sono il risultato della riflessione, da parte degli oggetti nella scena, dei raggi provenienti da una sorgente luminosa. All interno della telecamera, per meglio raccogliere i raggi luminosi, sono presenti delle lenti. Il CCD è il sensore che riproduce la retina dell occhio umano. Esso è composto da una matrice di dispositivi in grado di registrare la quantità di energia luminosa che li colpisce. La matrice rappresenta l immagine della scena 3D osservata e viene inviata in uscita dal dispositivo riga per riga tramite un registro seriale. Le informazioni contenute 16

21 3 Il sistema di visione nelle varie righe vengono combinate in un segnale video composito analogico, come ad esempio PAL, e inviate al frame grabber. Il frame grabber è una scheda che viene montata sul PC e a cui vengono collegati i segnali in uscita da entrambe le telecamere. Esso effettua una conversione in digitale del segnale video analogico in ingresso. Ogni immagine viene ridotta a una matrice di numeri dove ogni numero identifica un pixel il cui valore indica l intensità luminosa. Se l immagine è monocromatica ogni pixel assumerà un valore in scala di grigi su 8 bit. Nel caso di immagine a colori saranno tre le componenti su 8 bit associate a ogni pixel secondo la codifica RGB Configurazione hardware Il sistema di visione utilizzato in questa tesi è composto da due telecamere monocromatiche modello Sony XC-75CE le cui caratteristiche principali sono riportate in tabella 3.1. Risoluzione massima Sensore Alimentazione 752x582 pixel 1/2 pollice CCD 12V DC esterna Tabella 3.1. Caratteristiche delle telecamere Queste telecamere forniscono in uscita un segnale di tipo PAL (Phase-Alternating Line) che viene prelevato dal connettore VIDEO OUT e viene inviato al frame grabber attraverso un cavo coassiale. Tramite il connettore DC IN/SYNC è invece possibile alimentare la telecamera e inviare eventuali segnali di sincronizzazione. Questi collegamenti sono stati realizzati con un cavo costruito appositamente per questa tesi. Sulle telecamere è stato montato un obiettivo da 12mm che sperimentalmente è stato verificato essere in grado di mettere a fuoco fino a una distanza di circa un metro, quando impostato sul valore massimo. Mettere a fuoco un immagine significa fare in modo che tutti i raggi provenienti da un solo punto della scena convergano in un unico punto dell immagine. Questo è possibile grazie al sistema di lenti presente all interno dell obiettivo. Esso permette anche di avere un apertura focale variabile per modulare la quantità di luce che entra nella telecamera e quindi la luminosità dell immagine. L acquisizione del segnale video e la sua conversione in digitale viene realizzata da un frame grabber di modello Sensoray 611 in grado di ricevere in ingresso segnali video a colori o monocromatici secondo gli standard PAL, SECAM e NTSC. Il modello 17

22 3 Il sistema di visione 611 è in grado di ricevere fino a 4 segnali video compositi oppure 3 segnali video compositi e 1 S - video. Tramite controllo software può scalare indipendentemente le due dimensioni dell immagine ed è in grado di trasferire fino a 30 frame per secondo. Le sue caratteristiche principali sono riassunte in tabella 3.2. General specifications Capture rate 30 frames/sec (NTSC, RS-170, CCIR) 25 frames/sec (PAL, SECAM) A/D resolution 8-bits for luminance 8-bits for chrominance FIFO size 560 bytes (280 pixels) Output resolution 768 x 576 (PAL, SECAM) 640 x 480 (NTSC, RS-170) Y bandwidth error 0.6 db Board size 4.80 x 3.55 Input power 5 volts at 330 ma Tabella 3.2. Specifiche delle telecamere Maggiori dettagli sulle velocità di acquisizione delle immagini sono riportate nella tabella 3.3. Analizzando i dati sulle velocità di trasferimento si spiega la necessità, dal punto di vista delle tempistiche, di rendere indipendente il processo di visione dal processo di controllo come spigato nel capitolo 2. Number of cameras frames/sec NTSC per channel frames/sec PAL per channel Tabella 3.3. Velocità di acquisizione del frame grabber 18

23 3 Il sistema di visione Come risulterà più evidente nei prossimi capitoli riguardanti la calibrazione e la visione stereoscopica il posizionamento delle telecamere non è soggetto ad alcun vincolo. Le diverse configurazioni in cui possono essere poste variano solamente la porzione di spazio visibile dalle due telecamere. Come già anticipato nel capitolo 2 le due telecamere si trovano sulla punta operativa del robot secondo la struttura eye-in-hand. In figura 3.2 vi è una immagine del robot a cui è stato aggiunto il sistema di visione. Figura 3.2. Il robot con il sistema di visione Software di acquisizione Una volta che l immagine è stata acquisita dalle telecamere e convertita in digitale dal frame grabber deve essere memorizzata come matrice di numeri. Essendo all interno di un sistema Linux la comunicazione con il dispositivo video avviene tramite il driver v4l (Video for Linux). Tale driver costituisce un interfaccia verso diversi hardware video. Il compito principale di v4l è quello di creare, per il frame grabber, un device software corrispondente che funziona da interfaccia tra le generiche funzioni di I/O e quelle specifiche del dispositivo. In questo modo le chiamate alla generica funzione ioctl, dedicata alla comunicazione I/O nei sistemi Unix, vengono mappate sulle corrispondenti sequenze di I/O del dispositivo. Tramite ioctl è possibile selezionare il canale per la comunicazione, catturare immagini, inizializzare il dispositivo,... All interno di questa tesi è stata sviluppata la classe Grabber per l acquisizione delle immagini facente parte del programma che si occupa della parte di visione. Essa mette a disposizione diversi metodi che permettono di realizzare le seguenti operazioni: inizializzazione della procedura di acquisizione dell immagine 19

24 3 Il sistema di visione acquisizione di una singola immagine salvataggio di un immagine acquisizione di una coppia di immagini stereo A questi si aggiungono costruttore e distruttore in cui vengono allocati e deallocati in memoria gli oggetti utilizzati. Gli strumenti base utilizzati sono stati la funzione ioctl e le librerie OpenCv. La prima soprattutto per la comunicazione con il dispositivo e le seconde per operazioni quali il salvataggio delle immagini e la loro visualizzazione. In particolare per la gestione delle immagini tramite interfaccia grafica le librerie OpenCv si appoggiano alle librerie HighGui (appendice B). L acquisizione dell immagine, procedura che viene ripetuta per entrambe le telecamere nel caso di acquisizione di una coppia di immagini stereo, comincia con l apertura e l inizializzazione del device. Si impostano le dimensioni dell immagine e le caratteristiche riguardanti il colore. Quindi si fa il mapping del device in memoria, cioè si riserva un area di memoria di dimensioni sufficienti a contenere un immagine e la si associa al dispositivo. Tutte le volte che si acquisisce un immagine viene salvata in quest area di memoria da cui può essere prelevata semplicemente copiandola. Per procedere con l acquisizione bisogna però prima impostare il canale e sincronizzarsi con il dispositivo video. 3.2 Modello della telecamera Per poter estrarre delle informazioni dalle immagini è necessario conoscerne le fasi di creazione. Studiare l intero reale processo di formazione dell immagine all interno della telecamera porterebbe a dover analizzare operazioni complesse e specifiche. Quindi si riconduce il funzionamento della telecamera a quello di un modello che ne riproduce le caratteristiche fondamentali ai fini dello studio della formazione dell immagine. Naturalmente esso rappresenta solamente parte del processo di acquisizione dell immagine, giungendo a un compromesso tra accuratezza descrittiva del funzionamento reale e complessità del modello. Esistono diversi modelli della telecamera, ognuno con proprie caratteristiche e limiti di applicazione. Differiscono principalmente per il grado di approssimazione e per la quantità di elementi considerati nel modello (lenti, CCD,...). Il più utilizzato è il modello pinhole che è il più semplice e ideale ma, allo stesso tempo, fornisce un approssimazione accettabile del processo di formazione dell immagine con convenienza anche dal punto di vista matematico e computazionale. 20

25 3 Il sistema di visione Secondo il modello pinhole la telecamera viene modellata come fosse costituita da un foro infinitesimo attraverso il quale entrano i raggi luminosi che vanno a colpire il dispositivo fotosensibile formando un immagine invertita dell oggetto reale (figura 3.3). Figura 3.3. Formazione dell immagine nel modello pinhole Secondo questo modello la telecamera è costituita da un piano (il piano immagine) e un punto detto fuoco o centro di proiezione. La distanza, lungo l asse ottico, tra i due è detta lunghezza focale, dove l asse ottico è la retta passante per il pinhole e ortogonale al piano immagine. Tutti questi elementi geometrici sono individuabili nella figura 3.4. Per comodità è possibile considerare il piano immagine come esterno alla telecamera a lunghezza focale f dal pinhole e posto tra di esso e l oggetto 3D. In questo modo l immagine non risulta invertita ed è come viene vista normalmente. D ora in avanti verrà chiamato piano immagine quello in cui l immagine non è invertita, a differenza del piano immagine reale o CCD su cui si forma fisicamente l immagine. A ogni punto sul piano immagine corrispondono infiniti punti nello spazio, tutti quelli che giacciono sul raggio passante per il punto 2D e il fuoco. In particolare si dice che la corrispondenza tra un punto nell immagine e un punto nello spazio si ha a meno di un fattore di scala. L operazione che consiste nel mappare un oggetto 3D con un immagine 2D è chiamata proiezione prospettica la cui geometria verrà presentata nel paragrafo 3.3. Il modello pinhole ha dei limiti dovuti al fatto che in realtà il fuoco non è puntiforme ma ha grandezza non trascurabile, quindi il raggio che unisce un punto 3D, il pinhole e un punto 2D non è unico. Ogni punto sul piano immagine raccoglie un cono di raggi luminosi provenienti dall esterno. 21

26 3 Il sistema di visione Figura 3.4. Modello geometrico della telecamera Spesso le telecamere sono equipaggiate con lenti, questo per garantire che l immagine sia a fuoco e, allo stesso tempo, luminosa a sufficienza, risultato non ottenibile con la sola struttura a pinhole di una semplice telecamera. Infatti per ottenere immagini nitide è necessario ridurre la dimensione del pinhole, ma in questo modo l immagine sarebbe poco luminosa. Al contrario, per aumentare la luminosità sarebbe necessario ingrandire il pinhole, tuttavia a ogni punto dell immagine non corrisponderebbe più un solo raggio luminoso ma un cono di raggi luminosi convergenti che darebbero come risultato immagini offuscate. Il compromesso tra le due situazioni descritte si ottiene aggiungendo un obiettivo, cioè un sistema di lenti. Le lenti sono caratterizzate da: profondità di fuoco: distanza entro la quale gli oggetti sono sufficientemente a fuoco; dipende dal rapporto tra la lunghezza focale e il diametro delle lenti campo di visione: porzione di spazio realmente proiettato sulla retina della telecamera; dipende sia dalla lunghezza focale che dalla dimensione della retina Il più semplice sistema ottico che raccoglie i principi di base di un obiettivo è quello delle lenti sottili. Esse sono caratterizzate da un asse ottico, passante per il centro della lente O e perpendicolare al piano della lente, e due fuochi F l e F r, cioè due punti dell asse 22

27 3 Il sistema di visione ottico a distanza f (lunghezza focale) da O che si trovano nei due lati opposti della lente. Il funzionamento delle lenti sottili (figura 3.5) è riassunto da due affermazioni: ogni raggio, parallelo all asse ottico, entrante nella lente esce dall altro lato della lente passando per il fuoco ogni raggio, passante per il fuoco, entrante nella lente esce dall altro lato della lente parallelo all asse ottico Figura 3.5. Lenti sottili L utilizzo del modello a lenti sottili modifica leggermente l equazione che lega un punto 3D nello spazio al suo corrispondente punto 2D nell immagine. Questo effetto non rientrerà però nel modello basato sulla proiezione prospettica utilizzato per la calibrazione delle telecamere (capitolo 4). In realtà le lenti sottili sono un appossimazione di un sistema ottico reale molto più complesso che consiste in un numero di lenti con diverso spessore e differente curvatura. Verrà considerata la presenza delle lenti come fonte di distorsione dell immagine (paragrafo 4.5). 3.3 Proiezione prospettica La proiezione prospettica permette di capire, dal punto di vista geometrico, la formazione dell immagine spiegando la corrispondenza tra punti della scena e punti dell immagine. 23

28 3 Il sistema di visione Esistono altri modelli geometrici semplificati come la proiezione ortogonale, in cui le proiezioni sono parallele tra loro e normali al piano immagine, e la proiezione weakperspective, che considera tutti i punti 3D a distanza circa costante dal piano immagine. Definiti R i il sistema di riferimento legato all immagine e R c quello legato alla telecamera come riportato in figura 3.6 e dato P = [ x c P yp c zp c ], punto 3D nello spazio, e p = [ x i p yp i ], punto 2D nell immagine, la corrispondenza tra i due è data dal sistema di equazioni 3.1. Figura 3.6. Proiezione prospettica { x i p = f xc P z c P y i p = f yc P z c P (3.1) dove f è la lunghezza focale. Le equazioni 3.1 si ottengono semplicemente tramite relazioni trigonometriche. 24

29 Capitolo 4 Tecniche di calibrazione delle telecamere Questo capitolo illustra il problema della calibrazione di un sistema di visione stereo e la sua implementazione. Dopo una breve introduzione al problema verranno trattati gli aspetti teorici generali riguardanti i parametri e i metodi per calcolarli [6]. Si affronterà anche il tema della distorsione dovuta alla presenza di un sistema ottico formato da lenti. 4.1 Introduzione alla calibrazione Per calibrazione di una telecamera si intende quell operazione che permette di ricavare, determinandoli con un metodo adeguato, tutti i parametri del sistema di visione con il fine di creare un legame tra il piano 2D dell immagine acquisita dalla telecamera e lo spazio 3D che rappresenta. Lo scopo della calibrazione è quindi quello di calcolare la matrice che riassume tutte le informazioni riguardanti la struttura interna della telecamera e il suo posizionamento nello spazio. Tramite questa matrice è possibile ricostruire lo spazio 3D a partire da immagini della scena di interesse. Nel caso della visione stereo sarà possibile, tramite la matrice della telecamera, realizzare l operazione di triangolazione per cui, date le proiezioni di uno stesso punto 3D nelle immagini ottenute con le due telecamere, si ottengono le coordinate nello spazio del punto stesso. Nella storia della visione sono stati presentati diversi metodi per effettuare la calibrazione delle telecamere. Essi si dividono principalmente in due categorie: Photogrammetric calibration: si basa sull osservazione di un oggetto 3D la cui geometria è nota con buona precisione. Calibrare la telecamera significa trovare la 25

30 4 Tecniche di calibrazione delle telecamere matrice che la descrive tale da minimizzare l errore tra l immagine dell oggetto e la sua proiezione nello spazio. Self-calibration: consiste nel muovere la telecamera all interno di una scena statica la cui rigidità può essere utilizzata per porre dei vincoli sui parametri della telecamera. Risulta utile se non si hanno informazioni precise sulla geometria di semplici oggetti posti nell immagine, oppure non è possibile accedere direttamente alla telecamera ed è solo disponibile una collezione di immagini di una scena 3D. All interno di questa tesi si utilizzerà un metodo della prima categoria perchè si ha la possibilità di osservare un pattern 3D con geometria nota. Inoltre la tecnica implementata dalle librerie OpenCv, che si è scelto di utilizzare per il programma di visione, fa parte della photogrammetric calibration. La calibrazione di un sistema di visione stereo consiste nella determinazione dei parametri intrinseci ed estrinseci di entrambe le telecamere. Essa è un passo necessario nella visione 3D per estrarre informazioni da immagini 2D riguardanti quantità fisiche, soprattutto posizioni e dimensioni. 4.2 Parametri intrinseci I parametri intrinseci permettono il passaggio da coordinate immagine a coordinate espresse nel sistema di riferimento della telecamera. Per coordinate immagine si intendono i valori, espressi in pixel, che rappresentano la posizione di un punto sul piano immagine. Ogni punto dell immagine ha un suo corrispondente, espresso in metri, in un sistema di coordinate solidale con la telecamera. In figura 4.1 è data una rappresentazione schematica dei due sistemi di riferimento. I parametri intrinseci riassumono le seguenti informazioni: lunghezza focale f punto principale C i (x i C,y i C) dimensioni dei pixel (s x,s y ) Con lunghezza focale si indica la distanza, lungo l asse principale, tra piano immagine e punto focale. E misurata in metri. Il punto principale, le cui coordinate sono espresse in pixel nel sistema di riferimento dell immagine, è il punto in cui l asse principale incide il piano immagine. Le dimensioni dei pixel costituiscono dei fattori di scala che tengono conto della forma rettangolare, e non quadrata, dei pixel. Se si pensa a un piano immagine normalizzato (figura 4.1), parallelo al piano immagine reale e posto a distanza unitaria dal centro di proiezione, la relazione tra un sistema 26

31 4 Tecniche di calibrazione delle telecamere Figura 4.1. Sistemi di coordinate immagine e camera di riferimento solidale a questo piano, con origine nel punto in cui l asse principale interseca il piano, e il sistema di riferimento della telecamera, è dato dalle equazioni 4.1 che descrivono la trasformazione prospettica (paragrafo 3.3): { x n A = xc A z c A y n A = yc A z c A (4.1) dove A è un punto nello spazio. In realtà il piano immagine dista dal pinhole della lunghezza focale f 0. Inoltre i punti dell immagine sono caratterizzati da coordinate espresse in pixel le cui dimensioni sono 1 s x 1 s y, dove s x e s y hanno come unità di misura [ pixel m ]. L equazione 4.1 diventa: { x i A = s x f xc A z c A y i A = s y f yc A z c A (4.2) Solitamente l origine del sistema di riferimento immagine non coincide con il punto principale ma ad esempio con il vertice in basso a sinistra come nel sistema di figura 4.1. In questo caso è necessario ancora aggiungere al sistema di equazioni 4.2 un fattore di traslazione dato dalle coordinate del punto principale. { x i A = s x f xc A z c + x i C A ya i = s y f yc A z c + yc i A (4.3) 27

32 4 Tecniche di calibrazione delle telecamere Non sempre gli assi del sistema di riferimento dell immagine sono esattamente perpendicolari ma può esserci tra di loro un angolo tale da rendere i pixel simili a parallelogrammi anzichè a rettangoli. Questo termine cambierebbe i fattori di scala del sistema 4.3 e aggiungerebbe un legame tra le due coordinate del sistema di riferimento immagine. Spesso però questo valore viene trascurato perchè poco lontano dal valore ideale. Tutti i parametri intrinseci possono essere riassunti nella matrice K: K = s x f 0 x i C 0 s y f yc i (4.4) Quindi dato un punto à c = [ x c A ya c za c 1 ] T espresso in coordinate omogenee nel sistema di riferimento delle telecamere il corrispondente punto à i = [ x i A ya i 1 ] T in coordinate immagine è dato dall equazione 4.5. à i = Mà c (4.5) M = [ K 0 ] (4.6) 4.3 Parametri estrinseci I parametri estrinseci mettono in relazione il sistema di coordinate solidale con la telecamera con il sistema di riferimento mondo (figura 4.2). Figura 4.2. Parametri estrinseci 28

33 4 Tecniche di calibrazione delle telecamere Essi sono: matrice di rotazione R c w vettore di traslazione t c w cioè le trasformazioni che portano il sistema di riferimento telecamera a coincidere con il sistema di riferimento mondo. I parametri estrinseci sono riassumibili in una matrice di rototraslazione E: E = [ R c w t c w 0 T 1 ] (4.7) Dato il punto A nello spazio e la sua rappresentazione in coordinate omogenee nel sistema di riferimento mondo x w A = [ x w A y w A z w A 1 ] T, il corrispondente punto x w A = [ x i A y i A 1 ] T in coordinate immagine è dato dall equazione 4.8, a meno di un fattore di scala dovuto al fatto che tutti i punti dello spazio appartenenti allo stesso raggio luminoso corrispondono a un unico punto dell immagine. Con P si indica la matrice di trasformazione proiettiva. x i A = P x w A (4.8) P = ME (4.9) 4.4 Calcolo dei parametri di calibrazione L idea che sta alla base dei metodi di calibrazione appartenenti alla tecnica di photogrammetric calibration consiste nel ricavare i parametri della telecamera risolvendo un sistema di equazioni che lega un insieme di coordinate di punti 3D alle loro proiezioni sull immagine. Questo significa calcolare la matrice di trasformazione proiettiva e la sua decomposizione in parametri intrinseci ed estrinseci. Per avere l insieme di punti 3D si utilizza un pattern di calibrazione con geometria nota che viene fotografato più volte, in diverse posizioni e orientazioni, dalle due telecamere, per ottenere i corrispondenti punti 2D. In alcuni casi è utile che siano note anche le posizioni del pattern nello spazio. Il processo per il calcolo dei parametri di calibrazione si divide in due parti fondamentali: il calcolo della matrice di trasformazione prospettica e la stima dei parametri intriseci ed estrinseci a partire da questa matrice. La prima fase consiste nello stabilire, tra punti nello spazio e punti dell immagine, la seguente relazione: 29

34 4 Tecniche di calibrazione delle telecamere λx i λy i λ = p 11 p 12 p 13 p 14 p 21 p 22 p 23 p 24 p 31 p 32 p 33 p 34 x w y w z w 1 (4.10) Gli elementi della matrice possono essere determinati a partire dal legame tra le coppie di punti attraverso i parametri di calibrazione. Questa matrice è anche detta omografia. Essa è composta da 12 elementi di cui 11 indipendenti, quindi servono 11 vincoli per determinarli. Il dodicesimo elemento è dipendente e può essere messo a 1. Una volta costruita l omografia è necessario risolvere un sistema di equazioni in cui le incognite sono gli elementi della matrice, da cui verranno poi ricavati i parametri. Per fare questo è possibile utilizzare le tecniche ai minimi quadrati che hanno lo scopo di minimizzare lo scarto quadratico medio tra feature dell immagine osservate e predette. Esistono diversi metodi di calibrazione che differiscono tra di loro nelle tecniche utilizzate per costruire l omografia e per ricavare i parametri. Alcuni esempi di metodi di calibrazione sono dati dalla tecnica Direct Linear Calibration descritta in [7] e quello che può essere chiamato il metodo di Zhang che verrà descritto nel prossimo paragrafo. Su quest ultimo si basano le funzioni per la calibrazione implementate nelle librerie OpenCv utilizzate in questa tesi Il metodo di Zhang La tecnica di calibrazione proposta da Zhang [8] utilizza un approccio a metà tra le due categorie di metodi descritte in 4.1 perchè lavora con posizioni note di punti 2D e non di punti 3D o punti di cui non si hanno informazioni esplicite. Questo metodo richiede in input diverse immagini raffiguranti un pattern planare in diverse posizioni e orientazioni. Da queste immagini vengono estratte le posizioni dei corner 2D. Come espresso nell equazione 4.8, coordinate omogenee 2D dell immagine x i sono legate a coordinate 3D mondo x w dalla matrice di trasformazione proiettiva. Si assume che il piano in cui viene posto il pattern di calibrazione per ottenere un immagine utile al calcolo dei parametri sia il piano z=0 del sistema di coordinate mondo. Con questa assunzione il legame tra le coordinate si riduce all equazione x i y i 1 = K [ r 1 r 2 r 3 t ] x w y w 0 1 = K [ r 1 r 2 t ] x w y w 1 (4.11) 30

35 4 Tecniche di calibrazione delle telecamere dove H = K [ r 1 r 2 t ] è la matrice omografia ed è definta a meno di un fattore di scala. La matrice di rotazione nell espressione è rappresentata attraverso le sue colonne. La matrice omografia ha 8 gradi di libertà e contiene l informazione su 6 parametri estrinseci (3 di traslazione e 3 di rotazione), quindi si possono ottenere informazioni solo su 2 parametri intrinseci. Sull omografia è possibile individuare 2 vincoli dati dalla caratteristica di ortonormalità tra le colonne della matrice di rotazione. Non tutti i metodi dispongono di equazioni e vincoli sufficienti per determinare subito tutti i parametri di calibrazione. Quindi è possibile assumere le coordinate del punto principale, ad esempio come coincidenti con il centro dell immagine, e trovare le giuste coordinate in un secondo momento. La soluzione del sistema che si viene a creare prevede l utilizzo di una soluzione analitica seguita da una tecnica di ottimizzazione non lineare basata sul criterio di massima verosimiglianza. La soluzione analitica inizia con la costruzione della matrice B: B = K T K 1 = B 11 B 12 B 13 B 21 B 22 B 23 B 31 B 32 B 33 = 1 F 2 x 0 1 F 2 y Cx F 2 x 0 Cx F 2 x Cy F 2 y C 2 x F 2 x Cy F 2 y + C2 y F 2 y + 1 (4.12) in cui F x = fs x e F y = fs y rappresentano dei coefficienti che tengono conto delle dimensioni dei pixel e della lunghezza focale. C x e C y rappresentano le coordinate del punto principale espresse nel sistema di riferimento dell immagine. Essendo B una matrice simmetrica è caratterizzata da 6 elementi distinti che si possono riassumere nel vettore: b = [ B 11 B 12 B 22 B 13 B 23 B 33 ] Indicando con h i la i-esima riga della matrice H si ha: (4.13) h T i Bh j = v T ij b (4.14) con v ij = [ h i1 h j1 h i1 h j2 + h i2 h j1 h i2 h j2 h i3 h j1 + h i1 h j3 h i3 h j2 + h i2 h j3 ] T h i3 h j3 (4.15) Utilizzando i vincoli sull ortonormalità delle colonne della matrice di rotazione si ottiene un sistema di equazioni omogenee di dimensione 2n, dove n è il numero di immagini del pattern di calibrazione utilizzate. Si ottiene una soluzione unica di b solo se n 3. 31

36 4 Tecniche di calibrazione delle telecamere [ v T 12 (v 11 v T 22) T ] b = 0 Vb = 0 (4.16) La soluzione del sistema è data dell autovettore di V T V associato al più piccolo autovalore. Una volta stimato b si possono calcolare i parametri intrinseci ricordando la relazione 4.12 valida a meno di un fattore di scala λ. C y = B 12B 13 B 11 B 23 B 11 B 22 B12 2 (4.17) λ = B 33 B C y (B 12 B 13 B 11 B 23 ) B 11 (4.18) F y = F x = λ B 11 (4.19) λb 11 B 11 B 22 B 2 12 (4.20) C x = B 13Fx 2 (4.21) λ Una volta nota la matrice dei parametri intrinseci K è possibile passare al calcolo dei parametri estrinseci: r 1 = λk 1 h 1 (4.22) r 2 = λk 1 h 2 (4.23) r 3 = r 1 r 2 (4.24) t = λk 1 h 3 (4.25) I risultati possono essere migliorati applicando uno stimatore di massima verosimiglianza che ha lo scopo di minimizzare il seguente funzionale: n n m ij m(k,r i,t i,m j ) 2 (4.26) i=1 j=1 dove m(k,r i,t i,m j ) è la proiezione del punto M j nell immagine i. 32

37 4.5 Distorsione 4 Tecniche di calibrazione delle telecamere La distorsione è un effetto dovuto alla presenza, sulla telecamera, di un obiettivo, cioè un sistema di lenti. Esistono due tipi di distorsione: radiale e tangenziale. L effetto radiale è più evidente, soprattutto allontanandosi dal centro dell immagine dove le linee rette tendono a diventare curve. L effetto della distorsione sulle immagini è visibile in figura 4.3. Figura 4.3. Effetti della distorsione Le distorsioni si modellano con serie infinite i cui termini contengono dei pesi che sono i coefficienti di distorsione. Queste serie sono funzioni che legano la posizione di un punto in un immagine reale distorta e una ideale non distorta. Spesso è sufficiente fermarsi ai primi due termini della serie per modellare adeguatamente il fenomeno, considerando più termini esiste anche il rischio di instabilità numerica. Il legame tra un punto reale (X,Y ) e ideale (x,y), dal punto di vista della distorsione è dato dalle equazioni: X = x + x[k 1 r 2 + k 2 r 4 ] + [2p 1 xy + p 2 (r 2 + 2x 2 )] Y = y + y[k 1 r 2 + k 2 r 4 ] + [2p 1 xy + p 2 (r 2 + 2y 2 )] (4.27) dove r 2 = x 2 + y 2. I coefficienti di distorsione vengono stimati anche dal metodo descritto nel paragrafo precedente. All interno del programma di visione essi verranno stimati in modo da poter ridurre l effetto della distorsione nelle immagini acquisite. 33

38 Capitolo 5 Esperimenti di calibrazione Questo capitolo tratterà il processo di calibrazione dal punto di vista pratico descrivendone l implementazione e i risultati ottenuti da questa parte dell algoritmo di visione. In particolare si analizzeranno le funzioni messe a disposizione dalla libreria OpenCv in relazione alla teoria presentata nel capitolo precedente. Quindi verrà descritta la struttura del programma realizzato e gli esiti delle prove sperimentali effettuate. 5.1 Calibrazione con le librerie OpenCv Come già anticipato in precedenza durante la descrizione dell intera architettura del sistema di visione e controllo (capitolo 2) l algoritmo di visione farà uso delle funzioni messe a disposizione dalla libreria OpenCv (appendice B). Il metodo utilizzato dalle libreria OpenCv per la determinazione dei parametri della telecamera è quello descritto nel paragrafo Esso prevede di utilizzare un pattern planare e in particolare una scacchiera come quella di figura 5.1. Essa deve essere stampata con alta qualità di stampa e resa solidale a un supporto planare. Per procedere col calcolo dei parametri è necessario avere a disposizione un numero n 3 di immagini del pattern di calibrazione in diverse posizioni e con diverse orientazioni. Data un immagine del pattern di calibrazione si ricercano le posizioni approssimate dei corner interni alla scacchiera (restituiti come punti 2D nel piano immagine con coordinate reali espresse in pixel) tramite la funzione cvfindchessboardcornerguesses. Per corner interni si intendono tutti i corner della scacchiera che non si trovano sul riquadro esterno, cioè in una scacchiera di dimensioni 6x8 ci saranno 5x7 corner interni, essi sono i punti in cui i quadrati sono tangenti. Posizione approssimata significa che può esserci un errore di un paio di pixel che viene poi eliminato utilizzando la funzione cvfindcornersubpix. 34

39 5 Esperimenti di calibrazione Figura 5.1. Pattern di calibrazione All interno di ogni immagine vengono ricercati tutti i contorni, selezionati solo quelli quadrangolari, e per quelli selezionati si memorizzano solo i corner contigui ad altri corner salvando il valore medio tra i due. E importante porre attenzione all ordine con cui vengono restituiti i corner in quanto dipende dall orientazione del pattern nell immagine che si sta analizzando. Per questo motivo è sempre bene riordinarli in modo che abbiano tutti lo stesso andamento. Si è deciso di organizzarli in modo che, partendo dal corner in alto a sinistra della scacchiera, proseguano in ordine da sinistra verso destra e dall alto verso il basso. La scelta dell ordine dei corner nell immagine determina la posizione del sistema di riferimento mondo R w che viene posto nello spazio in relazione alla prima immagine utilizzata per la calibrazione. Per questo è importante che la prima volta che viene osservato il pattern sia in una posizione nota dello spazio. L origine di R w coincide con il primo corner trovato, l asse x con l andamento crescente dei corner in senso orizzontale, l asse y con l andamento crescente dei corner in senso verticale e l asse z si ha come conseguenza in modo che il sistema di riferimento sia destrorso (figura 5.2). Una volta individuati e memorizzati i corner trovati in tutte le immagini si procede al calcolo dei parametri di calibrazione utilizzando la funzione cvcalibratecamera. Essa si preoccupa di applicare il metodo [8] calcolando l omografia come legame tra i corner 2D trovati nelle immagini e i corner 3D che vengono creati secondo la struttura della scacchiera a partire dall origine e con le coordinate che variano in funzione della dimensione dei quadrati. Come risultato si hanno i parametri intrinseci, la matrice di rotazione e il vettore di traslazione che legano il sistema di riferimento della telecamera con il sistema di riferimento mondo. Per quanto riguarda i parametri intrinseci la lunghezza 35

40 5 Esperimenti di calibrazione Figura 5.2. Sistema di riferimento mondo focale e le dimensioni dei pixel vengono combinati in modo da costituire due parametri alternativi F x, fattore di scala nella direzione x, e F y, fattore di scala nella direzione y. Per chiarezza in figura 5.3 si riportano tutti e tre i sistemi di riferimento in gioco: immagine (R i ), camera (R c ) e mondo (R w ). Figura 5.3. Sistemi di riferimento I parametri di calibrazione vengono determinati a meno di un errore che viene calcolato con il seguente metodo: i punti 3D della scacchiera, determinati in base alle conoscenze geometriche e alla 36

41 5 Esperimenti di calibrazione dimensione in metri di un quadrato, vengono proiettati sull immagine in base ai parametri intrinseci ed estrinseci calcolati i punti proiettati vengono confrontati con le coordinate dei corner trovati nelle varie immagini e si calcolano x e y come differenza, in valore assoluto, delle rispettive coordinate tot è pari alla somma di x e y di ogni corner l errore medio è calcolato come MeanErr = tot, dove n è il numero di immagini 2nm processate e m è il numero di corner trovati in ogni immagine il numero di corner errati espresso sotto forma di frazione è dato da F ractw rong = nw rong nm, dove nwrong è il numero di corner per cui x o y sono maggiori di 1 l errore massimo nella ricerca di un corner è pari al massimo tra x o y Tutti i dati calcolati comprendenti parametri di calibrazione ed errori vengono salvati su file in modo che siano accessibili in qualsiasi momento e rimangano memorizzati. Questo procedimento, che dà come risultato i parametri intrinseci e la matrice di rototraslazione che lega il sistema di riferimento camera al mondo, può essere applicato in modo indipendente alle due telecamere nonostante facciano parte di un sistema stereo. E importante però che le immagini del pattern utilizzate siano a coppie, cioè ognuna delle due telecamere deve essere calibrata utilizzando rappresentazioni delle stesse scene secondo la stessa sequenza. In un secondo momento la calibrazione del sistema stereo si distingue da quella di una singola telecamera, quando si arriva al calcolo dei parametri estrinseci. A questo proposito sono stati utilizzati due diversi metodi: uno che sfrutta direttamente le funzioni OpenCv e uno che sfrutta la geometria del sistema. Il primo verrà solo descritto ma non utilizzato perchè, in base a prove sperimentali (paragrafo 5.3), non sempre dà risultati deterministici, come verrà illustrato più avanti. Il primo metodo si basa sull utilizzo della funzione cv3dtrackercalibratecamera. Essa, forniti i parametri intrinseci delle due telecamere e una coppia di immagini stereo della scacchiera, restituisce, per ogni telecamera, la matrice di trasformazione proiettiva che permette di passare da coordinate immagine a coordinate mondo. Una volta terminato il procedimento di calibrazione R w rimane fisso, ma la sua posizione dipende dalla coppia di immagini considerata. Questo è probabilmente dovuto a un mal funzionamento della funzione che, essendo di recente introduzione nelle Librerie OpenCv, non è stata sufficientemente testata. Rientra nella filosofia di queste librerie open source rilasciare continuamente nuove versioni in cui sono stati corretti i bug segnalati dagli utenti. 37

42 5 Esperimenti di calibrazione Il secondo metodo fa in modo che il riferimento mondo coincida con quello della telecamera sinistra, situazione che risulta conveniente, come si vedrà nella descrizione dell architettura di controllo (capitolo 8), perchè evita un passaggio nel calcolo del set point di posizione. Si utilizzano direttamente le matrici di rotazione (R l w,r r w) e i vettori di traslazione (t l w,t r w), che legano le due telecamere al mondo, restituite dalla funzione cvcalibratecamera. La rotazione e la traslazione che coinvolgono la generica telecamera possono essere combinate in un unica trasformazione detta rototraslazione che ha la seguente struttura: T c w = [ R c w t c w 0 T 1 ] (5.1) In figura 5.4 sono riportare le trasformazioni in gioco, cioè le rototraslazioni che legano il sistema di riferimento mondo e i sistemi di riferimento delle due telecamere. Figura 5.4. Trasformazioni tra camere e mondo Volendosi riferire sempre alla telecamera sinistra si utilizza la trasformazione (5.2) per esprimere ogni punto, noto rispetto a R r, in R l. T l r = T l wt r 1 w (5.2) 38

43 5 Esperimenti di calibrazione 5.2 Organizzazione del codice Il codice che implementa le operazioni di calibrazione, così come tutto il programma di visione, è stato scritto in linguaggio C++ con l utilizzo di librerie quali OpenCv e Highgui come descritto nel paragrafo 2.1. Il programma realizzato ha preso spunto dal lavoro svolto nella tesi [4]. Avendo scelto come linguaggio di programmazione C++ l organizzazione del programma è basata sulle classi nelle quali sono stati suddivisi, secondo una sequenza logica, i dati e le operazioni necessari per il processo di calibrazione. Le classi implementate sono: StartCalParam: è una classe elementare utilizzata per memorizzare i parametri che vengono richiesti all utente all inizio delle operazioni di calibrazione. Tali informazioni riguardano le dimensioni del pattern di calibrazione, il tipo di obiettivo utilizzato per le telecamere e il numero di immagini della scacchiera utilizzate. L accesso a questi attributi avviene attraverso appositi metodi. CalParam: deriva dalla classe StartCalParam dalla quale eredita attributi e membri che non siano stati definiti come privati. Alle caratteristiche della classe da cui deriva aggiunge ulteriori strutture necessarie per la memorizzazione di dati di calibrazione quali i corner 2D e 3D trovati all interno delle immagine del pattern e i parametri del sistema stereo. I metodi implementati permettono di accedere e impostare il valore di questi elementi. CameraParam: raccoglie tutte le strutture dati caratteristiche di una singola telecamera e mette a disposizione i metodi per accedervi. Contiene i parametri intrinseci ed estrinseci e le funzioni per il salvataggio e il caricamento da file. StereoParam: ha la stessa funzione della classe precedente per un sistema stereo. Raccoglie i parametri di entrambe le telecamere e la matrice che permette il passaggio dal sistema di riferimento di una telecamera all altra. Anche in questo caso vengono messe a disposizione le funzioni per interagire con i file contenenti i parametri. CalPattern: contiene la definizione di tutte le funzioni che realizzano le operazioni elementari del processo di calibrazione quali la ricerca dei corner, il loro ordinamento, la loro rappresentazione sull immagine del pattern, il calcolo dei corner 3D, il calcolo dei parametri e degli errori. Cal: è la classe più ad alto livello che si preoccupa della gestione del processo di calibrazione. Regola le diverse fasi, dalla ricerca dei corner al calcolo dei parametri e degli errori, richiamando i metodi implementati dalle altre classi. Al termine 39

44 5 Esperimenti di calibrazione del calcolo si occupa della scrittura dei parametri su file. Comprende anche una funzione per la correzione dell effetto della distorsione, una volta che sono stati stimati i coefficienti. Nel diagramma di figura 5.5 è rappresentato il legame presente tra le varie classi. Figura 5.5. Diagramma collaborativo tra le classi della calibrazione In esso sono evidenziate con freccia blu continua le relazioni di ereditarietà, mentre con freccia viola tratteggiata si indica la situazione in cui una classe contiene un istanza di un altra classe ed il nome dell istanza è riportato a fianco alla freccia. All interno del programma per la calibrazione vi sono due relazioni di ereditarietà: la prima riguarda le classi contenenti i parametri del processo di calibrazione StartCalParam e CalParam in quanto sono una l espansione dell altra in termini di attributi, la seconda coivolge le classi CalPattern e Cal in quanto sono una l espansione dell altra in termini di metodi. La classe StereoParam contiene due oggetti del tipo CameraParam ognuno dei quali rappresenta una delle due telecamere. I parametri stereo si vanno ad aggiungere ai parametri iniziali del processo di calibrazione come oggetto all interno della classe CalParam. Infine tutti i dati devono essere accessibili durante il processo di calibrazione dalla classe CalPattern. Le operazioni di calibrazione costituiscono un procedimento off-line, cioè devono essere eseguite dall utente durante una fase iniziale in cui il robot dotato di sistema di 40

45 5 Esperimenti di calibrazione visione non è ancora in funzione. I dati raccolti verranno salvati in file dai quali verranno prelevati all inizio della fase di controllo del robot tramite sistema di visione. È stato predisposto un programma che permette all utente di eseguire le seguenti operazioni: calcolo dei parametri intrinseci di una sola telecamera calcolo dei parametri estrinseci del sistema stereo caricamento da file dei parametri intrinseci ed estrinseci del sistema stereo Il programma main è dotato di un interfaccia di tipo testuale per poter garantire l indipendenza dal sistema operativo utilizzato. Come futuro sviluppo dell applicazione sarà possibile dotarlo di interfaccia grafica, eventualmente basata sull utilizzo di librerie portabili multipiattaforma quali ad esempio QT o GTK, entrambe distribuite con licenza LGPL. Prima di iniziare con le procedure di calibrazione è necessario aver salvato le immagini della scacchiera. Per la calibrazione dei parametri intrinseci della singola telecamera bisogna disporre di un numero n 3 di immagini del pattern di calibrazione con diverse posizioni e orientazioni. Esse devono essere memorizzate con un nome composto da una stringa a cui segue un numero progressivo, a partire da 0, un identificativo della telecamera in funzione (L sinistra, R destra) e l estensione del file immagine (es. immagine0l.jpg). 5.3 Risultati sperimentali In questo paragrafo verrano presentati i risultati ottenuti applicando il metodo di calibrazione implementato all interno del programma di visione. E stata effettuata la calibrazione di due telecamere parallele tra loro, in base alla configurazione scelta per questa architettura. Lo stesso procedimento vale per qualsiasi configurazione in cui si trovino. Come già anticipato in precedenza la calibrazione inizia con la raccolta di un certo numero di immagini del pattern. In figura 5.6 sono riportate come esempio le immagini acquisite con la telecamera sinistra. Dall analisi dei risultati riportati in [8] e dai dati sperimentali si deduce che non è tanto il numero di immagini quanto la loro qualità a influenzare la precisione dei parametri. Con qualità delle immagini si intende la capacità di racchiudere una buona varietà di posizioni e orientazioni significative della scacchiera. Per quanto riguarda il numero di immagini, provando a eseguire la procedura di calibrazione con diverse quantità di immagine del pattern, si è notato che, superato un numero minimo di immagini, necessario 41

46 5 Esperimenti di calibrazione Figura 5.6. Raccolta di immagini per la calibrazione per la raccolta di un numero sufficiente di corner, gli errori non hanno necessariamento un andamento monotono decrescente ma stazionario. La scelta della prima coppia di immagini di calibrazione da fornire al programma determina la posizione del sistema di riferimento mondo. Può quindi risultare utile porre la scacchiera in una posizione nota e facilmente ricostruibile. Ad esempio in figura 5.7 il pattern è stato appoggiato su un supporto in modo tale da essere parallelo al piano immagine. A partire dalle immagini di calibrazione si procede con la ricerca dei corner e al loro ordinamento (paragrafo 5.1). In questo caso i corner vengono ordinati a partire da quello in alto a sinistra e proseguendo da sinistra verso destra e dall alto verso il basso (figura 5.8). Sulla base dei corner individuati vengono calcolati i parametri intrinseci di entrambe le telecamere (tabella 5.1). Per poter verificare l esattezza dei parametri ottenuti è stato ripetuto il processo di calibrazione in ambiente Matlab utilizzando il toolbox dedicato alla calibrazione. Con entrambi i metodi si ottengono gli stessi risultati a meno di errori numerici trascurabili. 42

47 5 Esperimenti di calibrazione Figura 5.7. Prima coppia di immagini per la calibrazione Figura 5.8. Corner individuati nella prima coppia di immagini Terminata la fase di calibrazione intrinseca si passa a quella estrinseca. Come anticipato in precedenza sono stati implementati due diversi metodi per ottenere le matrici che legano i sistemi di riferimento delle coordinate e del mondo. Il primo metodo prevede l utilizzo della funzione cv3dtrackercalibratecamera che restituisce, per ogni telecamera, la matrice che lega un punto nell immagine con l equivalente punto 3D, sulla base dei parametri intrinseci e di una coppia di immagini stereo della scacchiera. Le matrici ottenute sono: matl = (5.3)

48 5 Esperimenti di calibrazione LEFT RIGHT Objective used: Objective used: 12mm 12mm Coordinates of principal point: Coordinates of principal point: Cx: Cy: Cx: Cy: Focal length: Focal length: Fx: Fy: Fx: Fy: Distortion coefficients: Distortion coefficients: k1: k2: k1: k2: p1: p2: p1: p2: Number of frames used: Number of frames used: Errors: Errors: mean: pixel mean: pixel max: pixel max: pixel point fraction with error > 1: % point fraction with error > 1: % Tabella 5.1. Parametri intrinseci delle telecamere matr = (5.4) Considerando la coppia di immagini utilizzata si vuole trovare l origine 3D del sistema di riferimento mondo ( O w = [ 0001 ] T ). Per fare questo si compie, per ciascuna telecamera, il seguente calcolo: Õ c = mat 1 O w (5.5) dove mat rappresenta, a seconda della telecamera considerata, matl o matr. Si ottiene: O cl e scalando per la terza componente: O cr

49 5 Esperimenti di calibrazione O cl2 O cr alle componenti x e y vanno sommate le coordinate del punto principale ottenendo: Punto immagine left: x = 588 y = 311 Punto immagine right: x = 497 y = 31 espressi in pixel nelle due immagini. Verificando, nelle due immagini utilizzate per la calibrazione estrinseca, dove si trovano questi punti è possibile notare che coincidono con il corner della scacchiera in basso a destra, cioè il primo corner trovato durante le operazioni di calibrazione prima dell ordinamento. Questo perchè utilizzando questo metodo non si tiene conto delle considerazioni fatte in precedenza sull ordinamento dei corner in quanto se ne occupa direttamente la funzione OpenCv. Con lo stesso procedimento utilizzato per l origine è possibile trovare l orientamento dei tre assi. Quindi il sistema di riferimento mondo dipende dalla coppia di immagini della scacchiera passate al programma per il calcolo dei parametri estrinseci. L origine coincide con il corner in basso a destra, cioè con il primo corner trovato dalla funzione cvfind- ChessboardCornerGuesses. Gli assi x e y sono allineati con i riquadri della scacchiera che ne costituiscono il lati esterni in basso (y, verso sinistra) e a destra (x, verso l alto) e z completa la coppia destrorsa con verso che va dal pattern alla telecamera (figura 5.9). Questo risultato è intuibile anche analizzando il codice open source delle funzioni appartenenti alla libreria OpenCv che si occupano della calibrazione. Esse associano, nel calcolo dell omografia, l origine 3D al primo corner che viene trovato. Compiendo diversi esperimenti ci si è accorti però che il sistema di riferimento mondo non è fisso indipendentemente dalla coppia di immagini usata per la calibrazione estrinseca, infatti la posizione dell origine cambia coincidendo di volta in volta con uno dei 4 corner agli angoli della scacchiera. Questo è probabilmente dovuto all utilizzo, da parte delle funzioni OpenCv, di una tecnica per riordinare i corner che varia a seconda dell orientamento della scacchiera nelle immagini, oppure a problemi di bug non ancora corretti nelle funzioni di libreria di recente implementazione. Una volta scelta una coppia di immagini e trovata la posizione del sistema di riferimento mondo, esso rimane fisso. Una dimostrazione di questo e della bontà dei parametri ottenuti viene data calcolando più volte la posizione del centro di massa di una sfera. Per fare questo si utilizza la parte del programma di visione che verrà approfondita nel prossimo capitolo. La sfera viene prima mossa su un piano a z=cost e viene registrata la 45

50 5 Esperimenti di calibrazione Figura 5.9. Sistema di riferimento mondo secondo il primo metodo sua posizione in coordinate mondo (tabelle 5.2 e 5.3), quindi fissate x e y si registra lo spostamento lungo l asse z (tabella 5.4). Le posizioni vengono riportate interamente, così come in output dal programma, nonostante non tutte le cifre siano significative. 46

51 5 Esperimenti di calibrazione x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = y/x [m] Tabella 5.2. Posizioni della sfera sul piano z=cost(parte prima) 47

52 5 Esperimenti di calibrazione x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = z = z = x = x = x = x = x = y = y = y = y = y = z = z = z = e-05 z = z = y/x [m] Tabella 5.3. Posizioni della sfera sul piano z=cost(parte seconda) 48

53 5 Esperimenti di calibrazione z [m] Posizione sfera x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = Tabella 5.4. Posizioni della sfera con x=cost e y=cost Analizzando i dati riportati è possibile notare che sono congruenti tra loro e con il sistema di riferimento mondo. Infatti nelle tabelle 5.2 e 5.3 il valore della coordinata z è circa costante e nullo a testimoniare lo spostamento della sfera sul piano x-y. Le coordinate x e y invece variano, da una casella all altra della tabella, della stessa quantità di cui viene spostata realmente la sfera. Nella tabella 5.4 i ruoli delle coordinate si invertono e, mentre x e y rimangono costanti, z varia con lo spostamento della sfera. Il loro andamento in relazione allo spostamento della sfera è corretto nonostante le variazioni dei valori delle posizioni differiscano di quantità dell ordine dei millimetri dalle posizioni reali. Queste differenze sono accettabili se il compito richiesto al robot è il tracking dell oggetto nello spazio. Utilizzando invece il secondo metodo di calibrazione descritto nel paragrafo 5.1, una volta ottenuti i parametri estrinseci di ogni telecamera, tramite la funzione cvcalibratecamera, è possibile calcolare la matrice che permette di rappresentare tutti punti dell immagine acquisita con la telecamera destra nel sistema di riferimento della telecamera sinistra. In questo modo si porta il sistema di riferimento mondo a coincidere con quello della telecamera sinistra. La matrice ottenuta è: T l r = (5.6) Anche in questo caso si ripete l operazione di spostamento della palla su un piano z=cost (tabelle 5.5 e 5.6) e facendo variare z con x=cost e y=cost (tabella 5.7), registrando la posizione della sfera. 49

54 5 Esperimenti di calibrazione x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = y/x [m] Tabella 5.5. Posizioni della sfera sul piano z=cost(parte prima) 50

55 5 Esperimenti di calibrazione x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = z = z = z = z = x = x = x = x = y = y = y = y = z = z = z = z = y/x [m] Tabella 5.6. Posizioni della sfera sul piano z=cost(parte seconda) 51

56 5 Esperimenti di calibrazione z [m] Posizione sfera 0.88 x = y = z = x = y = z = x= y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = x = y = z = Tabella 5.7. Posizioni della sfera con x=cost e y=cost Anche utilizzando questo metodo i dati acquisiti testimoniano un andamento coerente con lo spostamento della sfera. Le differenze tra posizioni misurate e reali si differenziano per quantità dell ordine dei millimetri. Solo l andamento di z dà errori più rilevanti soprattutto all aumentare della distanza tra la sfera e la telecamera sinistra. Questo risultato verrà analizzato meglio nel capitolo 6 quando verrà illustata l operazione di triangolazione. 52

57 Capitolo 6 La visione stereoscopica Il sistema di visione di cui viene dotato il robot è composto da due telecamere. Il principale vantaggio della visione stereo è dato dalla possibilità di determinare la profondità degli oggetti nello spazio. Il sistema di visione stereo permette anche di aumentare la porzione di spazio che il robot riesce a vedere. E anche possibile avere una vista degli oggetti anche, in parte, laterale, oltre a quella frontale, senza dover effettuare spostamenti. L obiettivo dell algoritmo di visione stereo è il tracking di una sfera nera su sfondo bianco. Si tratta di un compito semplice, rispetto alle potenzialità delle complesse tecniche di computer vision, ma, grazie alla modularità dell architettura, sarà facile implementare nuove soluzioni per scopi più complessi. Già nella definizione dell obiettivo dell algoritmo sono contenute delle ipotesi sulla strutturazione dell ambiente per ridurre lo spettro delle possibili situazioni in cui il robot si può trovare e degli scenari possibili che può vedere. Tali ipotesi agiscono sulle proprietà dell ambiente in cui opera il robot rendendolo strutturato e con caratteristiche note a priori. In questo modo si facilita, ad esempio, l individuazione di un oggetto nello spazio. In questo capitolo, dopo una prima parte in cui verranno presentate le caratteristiche principali della visione stereo, verrà descritto l algoritmo per il calcolo della posizione della sfera a partire dalle immagini registrate dalle telecamere. 6.1 Teoria della stereovisione La stereovisione è una parte della computer vision che si occupa di sistemi dotati di due telecamere ed è analizzata con precisione in [7]. La struttura del sistema di visione stereo può essere descritta dalla geometria epipolare che introduce, rispetto alla geometria di un generico sistema di visione non stereo, dei vincoli e degli elementi che derivano dalla presenza di due telecamere che inquadrano, in parte, la stessa scena. Le nozioni di geometria 53

58 6 La visione stereoscopica epipolare sono utili per la ricostruzione dello spazio 3D visibile dalle telecamere. La ricostruzione si basa anche sulla ricerca delle corrispondenze, cioè degli elementi comuni alle due immagini. Tutte queste operazioni verranno meglio descritte nei prossimi paragrafi Geometria epipolare Per meglio studiare la geometria epipolare è possibile considerare la figura 6.1 che rappresenta in modo schematico un generico sistema di visione stereo. Figura 6.1. La geometria epipolare Nella figura si possono individuare tutti gli elementi caratteristici della geometria epipolare. Si dicono epipoli i punti e l e e r, appartenenti ai due piani immagine, dati dall intersezione tra la linea che unisce i due centri di proiezione (O l, O r ) e i piani immagine. Per costruzione corrispondono all immagine del centro di proiezione dell altra telecamera. Se la linea passante per i centri di proiezione è parallela al piano immagine, il corrispondente epipolo è un punto all infinito appartenente a quella linea. Si dice piano epipolare il piano definito dai centri di proiezione e dal punto dello spazio P. La retta epipolare è definita dall intersezione tra piano immagine e piano epipolare. Con eccezione degli epipoli solo una retta epipolare passa per ogni punto dell immagine. A partire da questa proprietà è possibile dedurre un vincolo secondo il quale punti corrispondenti delle due immagini devono giacere su rette epipolari coniugate, cioè corrispondenti nelle due immagini Si deduce che la ricerca delle corrispondenze si può ridurre alla scansione di un segmento, quindi alla risoluzione di un problema 1D. 54

59 6 La visione stereoscopica La geometria di un sistema stereo può essere descritta da due elementi: Matrice essenziale: stabilisce un legame tra il vincolo epipolare e i parametri estrinseci del sistema stereo, è il mapping tra punti e linee epipolari. Matrice fondamentale: codifica informazioni riguardanti parametri intrinseci ed estrinseci e stabilisce lo stesso legame della matrice essenziale ma in termini di coordinate immagine, cioè in pixel, e non nel sistema di riferimento della telecamera. Esistono algoritmi per il calcolo delle due matrici a partire dalla conoscenza di 8 coppie di punti corrispondenti. Sulla base dei vincoli epipolari è possibile velocizzare il processo di ricerca delle corrispondenze tramite la rettificazione. Essa consiste in un operazione di trasformazione delle immagini che rende le linee epipolari coniugate collineari e parallele a uno degli assi dell immagine. Ha lo scopo di ridurre la ricerca delle corrispondenze da 2D a 1D, quindi per cercare il punto corrispondente a p l (x l,y l ) dell immagine sinistra nell immagine destra basta scorrere la riga di coordinate y = y l. Per telecamere parallele la rettificazione non è necessaria in quanto le due immagini sono già nella stessa posizione relativamente agli assi del piano immagine. Le immagini rettificate possono essere pensate come acquisite da un nuovo sistema stereo con le telecamere ruotate attorno ai centri ottici Ricerca delle corrispondenze Uno dei problemi fondamentali della stereovisione è la ricerca delle corrispondenze. Esso consiste nell individuare quali parti delle due immagini, destra e sinistra, sono le proiezioni dello stesso elemento della scena. Questa operazione permette di stabilire il matching tra due punti corrispondenti in una coppia di immagini individuando anche quei punti che non hanno il corrispondente perchè sono presenti in una sola delle due immagini. Il problema delle corrispondenze parte da due assunzioni: molti punti della scena sono visibili da entrambe le telecamere regioni di immagini corrispondenti sono simili Queste assunzioni risultano vere in sistemi in cui la distanza tra il punto di incontro tra i due assi ottici e le camere è superiore alla distanza tra i due centri ottici. Il problema delle corrispondenze consiste nel ritrovare, dato un elemento in un immagine, il corrispondente elemento nell altra immagine. Questo comporta due scelte: di quale elemento dell immagine trovare la corrispondenza e quale misura di similarità adottare. In base a queste scelte gli algoritmi per la ricerca delle corrispondenze si dividono in due principali categorie: 55

60 6 La visione stereoscopica metodi basati sul calcolo della correlazione metodi basati sulla ricerca delle feature La prima categoria di metodi considera una finestra di dimensione fissa dell immagine di cui si vuole trovare la corrispondente, applicando come criterio di similarità una misura di correlazione tra finestre nelle due immagini. L elemento corrispondente è dato dalla finestra, facente parte della regione in cui avviene la ricerca, che massimizza il criterio di similarità. La funzione di correlazione viene calcolata utilizzando i valori di intensità dei pixel. Nell applicazione di questo genere di metodi risulta importante la scelta dei parametri che caratterizzano la ricerca: la dimensione della regione in cui effettuarla e da dove partire. Sfruttando la geometria epipolare è possibile ridurre la regione di ricerca a un segmento 1D indipendentemente dalla posizione relativa delle due telecamere. La seconda categoria di metodi riduce la ricerca a corrispondenze tra feature in base alle loro proprietà numeriche e simboliche, raccolte nei feature descriptor, come ad esempio lunghezza, orientazione e coordinate del punto medio. Esempi di feature sono edge, linee e corner. La corrispondenza è data dalla più simile coppia di feature. Per abbassare il numero di possibili match vengono posti dei vincoli di varia natura: geometrici: in base alla geometria epipolare analitici di unicità: ogni feature ha una sola corrispondente analitici di continuità: la disparità, cioè la differenza relativa nella posizione degli oggetti nelle due viste, varia in modo continuo su tutta l immagine Mentre i metodi basati sulla correlazione sono di facile implementazione e producono mappe dense di disparità, utili per ricostruire superfici, non funzionano molto bene per immagini stereo prese da punti di vista sufficientemente diversi e diventano costosi nel caso in cui si voglia aumentare la precisione portandola fino a livello sub-pixel. I metodi feature-based invece forniscono matrici di disparità sparse e sono più veloci ma costosi nella costruzione dei feature descriptor. Questi ultimi hanno però il vantaggio di essere insensibili ai cambiamenti di luce. Nella ricerca delle corrispondenze si possono avere problemi dati da occlusioni, cioè punti visibili solo in una delle due immagini, e false coppie di corrispondenze create dal rumore. I risultati ottenuti devono comunque essere compatibili con dei vincoli che consistono nel soddisfacimento della geometria epipolare e nella consistenza destra-sinistra e viceversa, cioè la corrispondenza deve essere verificata in entrambe le direzioni. 56

61 6 La visione stereoscopica Ricostruzione 3D Lo scopo della visione stereo è quello di ottenere informazioni sulla scena 3D visibile da due telecamere. La ricostruzione si occupa proprio di calcolare i dati riguardanti la geometria della scena a partire da una coppia di immagini stereo. In particolare, dato un certo numero di parti corrispondenti nelle immagini destra e sinistra, e informazioni sulla geometria del sistema stereo, si calcolano le posizioni degli oggetti nello spazio. La figura 6.2 rappresenta in modo schematico un sistema di visione stereo dove le due telecamere sono riportate secondo il modello pinhole. Figura 6.2. Rappresentazione schematica di un sistema di visione stereo Essendo le telecamere parallele, gli assi ottici si incontreranno in un punto infinitamente lontano. Questa osservazione rientrerà nella descrizione dei risultati ottenuti tramite la triangolazione (paragrafo 6.2.2). La profondità è stimata a partire dalla disparità di punti corrispondenti. Con disparità si intende una misura della differenza di posizione tra corrispondenti punti nelle due immagini p l e p r. Inoltre, a seconda delle conoscenze che si hanno sul sistema, si presentano tre diverse situazioni: 57

62 6 La visione stereoscopica se si conoscono sia i parametri intrinseci che quelli estrinseci si può risolvere il problema della ricostruzione in modo non ambiguo tramite la triangolazione (paragrafo 6.2.2). se si conoscono solo i parametri intrinseci è possibile risolvere il problema della ricostruzione e stimare i parametri estrinseci a meno di un fattore di scala. In questo caso è possibile utilizzare un metodo basato sul calcolo della matrice essenziale. se non si hanno informazioni sui parametri ma solo le corrispondenze tra pixel è possibile effettuare la ricostruzione solo come proiezione. Attraverso l operazione di triangolazione il calcolo della posizione del punto P (figura 6.2) nello spazio è ottenuto tramite l intersezione dei due raggi che rappresentano le sue proiezioni sulle due immagini. In realtà è difficile che i due raggi si intersechino perfettamente in un punto quindi esistono diversi metodi per realizzare la triangolazione. Ad esempio proiettando i raggi su un piano oppure calcolando i punti in cui la distanza tra i raggi è minima. 6.2 Struttura del programma La parte che si occupa del riconoscimento della sfera e del calcolo della sua posizione è concentrata in una classe del programma dedicato alla visione. Essa si preoccupa di calcolare la posizione 3D del centro geometrico della sfera a partire da una coppia di immagini stereo della scena. I metodi implementati si occupano dell elaborazione delle immagini e della ricostruzione 3D tramite l operazione di triangolazione. L elaborazione delle immagini consiste nell applicazione di tecniche di computer vision attraverso le funzioni della libreria OpenCv (paragrafo 6.2.1). L immagine acquisita dalle telecamere contiene troppe informazioni difficili da processare, sia per quantità che per complessità. E necessario ridurre le informazioni a quelle fondamentali e utili, ad esempio con l applicazione di soglie, che portano ad avere immagini binarie, e di feature extraction, che consiste nel preservare ad esempio edge e corner. La triangolazione è un operazione che sfrutta le caratteristiche geometriche di un sistema stereo, il modello delle telecamere e i parametri di calibrazione per ottenere la posizione 3D di un punto a partire da due punti 2D corrispondenti individuati nelle due immagini. Nel paragrafo verranno spiegati i diversi metodi implementati e i risultati ottenuti. 58

63 6 La visione stereoscopica Ricerca delle feature In questo paragrafo verranno analizzate tutte le fasi di elaborazione delle immagini a partire dalle viste della sfera da parte di entrambe le telecamere (figura 6.3). Figura 6.3. Immagini stereo della sfera In realtà, come risulta dalle immagini, l ambiente non è perfettamente strutturato in quanto lo sfondo su cui viene posta la sfera non è uniforme e non è neanche perfettamente bianco. Questo perchè l algoritmo sviluppato è sufficientemente robusto da tollerare anche il non pieno soddisfacimento delle ipotesi. Per ridurre l influenza del ambiente di lavoro sul funzionamento del programma è possibile cercare di rendersi indipendenti dalle condizioni di luminosità della scena utilizzando sorgenti di luce esterne e artificiali. Il primo passo nell elaborazione di un immagine consiste nel ridurre la quantità di informazioni che contiene in modo da renderne l elaborazione più vicina a un processo real time, pur sempre limitato dalla velocità di acquisizione dell immagine da parte del frame grabber. La riduzione della quantità di dati deve essere realizzata preservando le informazioni utili, come le feature, e tralasciando informazioni ridondanti, come i dati riguardanti l illuminazione. Per questo scopo, come prima operazione, viene applicata, all immagine in scala di grigi, una soglia. Questo permette di passare a un immagine binaria in cui a ogni pixel è sufficiente associare un bit, ad esempio secondo la codifica 0 = nero e 1 = bianco. In realtà, a causa dei tipi di dato messi a disposizione dai linguaggi di programmazione, a ogni pixel verrà associato più di un bit, ma questo permette comunque di velocizzare l elaborazione dell immagine. Naturalmente l operazione di soglia può essere applicata solo sotto l ipotesi di ambiente strutturato e condizionatamente alla scelta di eseguire il tracking di un oggetto nero su sfondo bianco. L effetto della soglia sulle immagini è visibile in figura

64 6 La visione stereoscopica Figura 6.4. Immagini stereo della sfera dopo la soglia Il valore della soglia deve essere scelto in modo adeguato, in relazione alle condizioni dell ambiente di lavoro, e può essere costante o variabile in base a vari criteri quali la capacità di individuare la sfera o la varianza dei valori dei pixel espressi in scala di grigi. In questo caso si sceglie di applicare una soglia di valore costante calibrato sulla base dei risultati ottenuti a partire da diverse acquisizioni. L applicazione della soglia permette anche di riportare diverse situazioni di partenza all utilizzo di uno stesso processo di elaborazione dell immagine. A questo punto l immagine binaria che si ottiene contiene, oltre alla sfera nera altri elementi della scena che non interessano per il tracking e che possono essere pensati come rumore. Inoltre la sfera può risultare con un contorno non perfettamente circolare e contenente delle regioni bianche. Per risolvere questi problemi si ricorre alle operazioni erode e dilate. Entrambe le operazioni consistono nella traslazione di un elemento strutturale su tutta l immagine. Questo elemento può avere dimensioni e forma variabili, solitamente circolare o quadrata. L elemento strutturale ha un pixel detto ancora, che è quello rispetto al quale avvengono gli spostamenti e le trasformazioni. L ancora viene sovrapposta a ogni pixel dell immagine. Questo pixel assumerà un determinato colore, secondo l operazione applicata, se i pixel a cui si sovrappone l elemento strutturale hanno colori diversi tra loro. L erosione e la dilatazione quindi agiscono sui contorni aumentandoli o diminuendoli. In particolare erode espande le zone di colore nero quindi può essere usata per chiudere piccoli buchi, connettere linee interrotte e cancellare piccole rientranze. Dilate invece corrisponde all operazione contraria, cioè espande le zone di colore bianco. E utile per cancellare punti (assimilabili al rumore), linee sottili e piccole protuberanze. Queste operazioni vengono applicate a tutta l immagine e possono essere eseguite iterativamente. Il 60

65 6 La visione stereoscopica numero di iterazioni può essere variabile e determinato in base alle caratteristiche della scena. All interno di questo programma il numero di iterazioni rimane fisso. Inoltre sono possibili sequenze in cui le due operazioni vengono eseguite più volte e in modo alternato. In figura 6.5 è possibile vedere il risultato dell operazione di erosione. In questo caso l effetto non è fondamentale in quanto l applicazione della soglia non ha lasciato elementi da eliminare come ad esempio regioni di colore bianco all interno della sfera. Prima dell erosione, all immagine è stata aggiunta una cornice bianca per evitare che le regioni nere andassero contro i bordi rendendo irreversibile l operazione. Se non esiste una regione bianca tutto attorno ad un elemento nero non è possibile, applicando la dilatazione, riportarlo alle dimensioni iniziali, ma rimane deformato. Figura 6.5. Operazione di erosione Alle immagini ottenute dall erosione si applica la dilatazione per riportarsi alle dimensioni iniziali e per eliminare eventuali rumori (figura 6.6). Per meglio illustare l effetto di erosione e dilatazione si prende in cosiderazione l immagine di una sfera (figura 6.7) che riflette la luce da cui viene illuminata (1). Dopo l applicazione della soglia una regione all interno della sfera risulta essere bianca (2). Tramite erosione (3) e dilatazione (4) si rende la sfera omogenea e la si riporta alle dimensioni originali. La sfera utilizzata per il tracking è costituita da un materiale opaco che non dovrebbe generare problemi simili. Un elemento che difficilmente si riesce a rimuovere dalle immagini è l ombra in quanto è legata all oggetto e di un colore molto simile al nero. Per eliminarla è necessario agire sulle sorgenti luminose. A questo punto si devono individuare, all interno dell immagine, gli elementi di interesse. In generale si tratta di eseguire la ricerca di feature come edge e corner. Essi 61

66 6 La visione stereoscopica Figura 6.6. Operazione di dilatazione Figura 6.7. Esempio di erosione e dilatazione vengono rilevati come discontinuità nell intensità dell immagine e danno, una volta individuati, una rappresentazione della scena attraverso linee che sottilineano gli elementi principali. Per facilitare la ricerca di feature è possibile applicare dei filtri all immagine in scala di grigi. Nel programma per il tracking della sfera si utilizzano come feature i contorni che vengono ricercati tramite l utilizzo di funzioni OpenCv. I contorni vengono individuati mettendo in relazione ogni pixel con gli adiacenti e verificando se il colore cambia. Questa operazione viene eseguita sull immagine binaria. I contorni trovati vengono memorizzati in una struttura ad albero dove sullo stesso livello si trovano contorni indipendenti e su livelli subordinati contorni contenuti in quello di livello superiore. Per ogni contorno si memorizza un puntatore a una lista che contiene la posizione di ogni pixel del contorno relativamente al precedente. 62

67 6 La visione stereoscopica Per individuare la sfera è stata implementata una funzione ricorsiva che scorre tutto l albero finchè non trova il contorno corretto. Per ogni contorno analizzato, per verificare che sia la sfera, devono essere soddisfatte tre condizioni: l area della regione delimitata dal contorno considerato deve superare un valore minimo. Questa condizione permette di eliminare tutti quegli elementi della scena di dimensioni molto ridotte che quindi tendono ad assumere forma circolare. la differenza tra il perimentro del contorno e del minimo cerchio circoscritto deve essere inferiore a un valore massimo. Questo permette di verificare la forma circolare. 4πAREA P ERIMET RO 2 > k, dove k è un valore minimo determinato sulla base di prove sperimentali. E una condizione di tipo geometrico sulla forma circolare. Una volta individuata la sfera si passa al calcolo del centro di massa attraverso i momenti di ordine 0 e 1. m 0,0 = f(x,y)dxdy (6.1) m 1,0 = m 0,1 = xf(x,y)dxdy (6.2) yf(x,y)dxdy (6.3) dove f(x,y) è la funzione che rappresenta il valore assunto dal pixel di coordinate (x,y). Le coordinate del centro di massa c m = (x cm,y cm ) sono date da un rapporto tra momenti: x cm = m 1,0 m 0,0 ; y cm = m 0,1 m 0,0 (6.4) Il momento di ordine 0 è l area dell oggetto, quello di primo ordine rappresenta il centro di massa e quello di secondo ordine dà gli assi di orientazione. Naturalmente, prima di procedere nel calcolo della posizione 3D del centro di massa, è necessario controllare che la sfera sia stata individuata in tutte e due le immagini stereo. In figura 6.8 sono riportate le immagini stereo in cui sono stati evidenziati i contorni. Con i colori blu e rosso sono rappresentati i contorni individuati, alternando i due colori nel caso di inclusione tra contorni. In verde è evidenziato il contorno della sfera individuata che viene racchiusa dalla minima circonferenza circoscritta in giallo. Il punto bianco all interno della sfera è il centro di massa calcolato. 63

68 6 La visione stereoscopica Figura 6.8. Estrazione dei contorni L algoritmo è stato testato anche in situazioni differenti in cui lo sfondo è molto diverso dall ipotesi di colore bianco. In figura 6.9 vi è la sequenza di immagini che rappresentano i risultati delle operazioni di soglia, erosione, dilatazione e ricerca del contorni. Figura 6.9. Applicazione dell algoritmo di visione 64

69 6 La visione stereoscopica Triangolazione La triangolazione è l operazione che permette di determinare la posizione di un punto nello spazio. Questo è possibile conoscendo la posizione del punto nella coppia di immagini stereo, cioè una coppia di punti corrispondenti che lo rappresentano. La stereovisione è utile soprattutto per aggiungere informazioni sulla profondità. Il punto 3D è il risultato dell intersezione di due raggi (figura 6.10) che rappresentano le sue proiezioni sui due piani immagine. L equazione che descrive ogni raggio è determinata a partire dalla conoscenza di due punti che gli appartengono. Questi due punti sono l origine del sistema di riferimento della camera, cioè il pinhole, e la proiezione del punto sul piano immagine. Figura Triangolazione In figura sono indicate le origini dei due sistemi di riferimento delle telecamere O cl e O cr e i due punti pl il e pr ir che sono le immagini del punto 3D P rappresentate nei sistemi di riferimento delle due immagini. Come prima operazione, affinchè si possa calcolare l intersezione tra i due raggi, è necessario esprimere tutti e quattro i punti rispetto allo stesso sistema di riferimento. Si sceglie di esprimerli rispetto al sistema di riferimento della telecamera sinistra perchè coincidente con il sistema di riferimento mondo, secondo il metodo di calibrazione utilizzato (capitolo 4). Note le matrici dei parametri intrinseci Ml e Mr e la rototraslazione che lega le due telecamere T cl cr i quattro punti espressi rispetto a R cl in coordinate omogenee sono: 65

70 6 La visione stereoscopica Õ cl (6.5) Õ cl cr = T cl crõcr (6.6) pl cl = Ml 1 pl il (6.7) pr cl = T cl crmr 1 pr ir (6.8) Ogni raggio è dato dal prodotto vettoriale dei due punti da cui è definito: L l = O cl pl cl (6.9) L r = O cl cr pr cl (6.10) Nella realtà è difficile che le due linee si intersechino precisamente in un punto quindi sono stati elaborati diversi metodi per effettuare la triangolazione. Ne verranno presi in considerazione due. Il primo metodo utilizzato per la triangolazione consiste nel determinare l intersezione tra i raggi attraverso la loro proiezione sul piano x-z. Con il prodotto vettoriale delle due proiezioni si ottengono le coordinate x e z del punto 3D. La coordinata y viene determinata come media delle due coordinate y delle linee nel punto di intersezione delle proiezioni. Il secondo metodo consiste nel calcolare il più piccolo segmento che unisce le due linee nello spazio ed è ortogonale ad esse. Il segmento è unico e il suo punto medio verrà considerato come il punto di intersezione (figura 6.11). Gli estremi del segmento sono dati dalle equazioni: P A = O cl + α A (pl cl O cl cr) (6.11) P B = O cl cr + α B (pr cl O cl ) (6.12) Per semplicità le equazioni precedenti considerano le entità punti e non le singole componenti. Lo scopo è quello di calcolare il minimo segmento e quindi determinare α A e α B tali da minimizzare la funzione: P B P A 2 (6.13) Il punto P corrisponde al punto medio del segmento. Si è verificato sperimentalmente che i due metodi implementati forniscono gli stessi risultati per quanto riguarda le cifre significative, le successive sono influenzate da errori numerici. 66

71 6 La visione stereoscopica Figura Intersezione tra due raggi Un esempio delle posizioni 3D del centro di massa della sfera restituite dal programma è presente nel capitolo 5 dove viene riportata la scansione di un piano da parte della sfera. Inoltre è presente una tabella che riassume l andamento della posizione della sfera al variare dalla coordinata z. Tale coordinata, all aumentare della distanza della sfera dalla telecamera sinistra, viene calcolata con errore non trascurabile. Questo risultato è dovuto al fatto che i raggi da intersecare sono molto vicini tra loro e la determinazione del minimo segmento che li unisce è facilmente soggetta ad errori numerici. La posizione 3D del centro di massa della sfera viene determinata a meno di un errore il cui valore massimo, in modulo, è dato dal raggio della sfera. Questo perchè non è possibile distinguere una sfera 3D da un cerchio nero stampato su un supporto planare, quindi senza profondità. 67

72 Capitolo 7 Interazione tra processi Tra il processo di visione e quello di controllo è necessario stabilire un legame e utilizzare degli strumenti affinchè i due possano comunicare. La parte di visione deve infatti fornire la posizione del centro di massa della sfera, estratta dalle immagini, in modo che il controllo possa generare il set point da fornire all anello di posizione. Entrambi i processi vengono eseguiti da un sistema basato sul sistema operativo Linux. Questa scelta è dovuta al fatto che Linux, oltre ad essere facilmente trasformabile in un sistema real time tramite RTAI, è open source e permette di realizzare progetti che, anche a lungo termine, manterranno la loro validità e indipendenza. La caratteristica di essere open source consente anche di conoscere a fondo il funzionamento che risulta trasparente all utente. Inoltre, riferendosi in modo particolare all applicazione sviluppata durante questa tesi, Linux RTAI consente di controllare in real time il robot generando il codice a partire da una schema Simulink, cioè da uno strumento di progettazione a più alto livello. Per meglio comprendere il sistema Linux, su cui si andrà ad operare, nel paragrafo 7.1 ne vengono presentate le caratteristiche principali con alcuni cenni alle proprietà di base dei sistemi operativi real time. Nel paragrafo verrà illustrato il processo per la generazione di codice utilizzato per l algoritmo di controllo. Successivamente (paragrafo 7.1.2) verranno trattati gli strumenti, messi a disposizione da RTAI, per consentire la comunicazione tra processi real time e non. Infine verranno descritte più dettagliatamente le tecniche implementate per la comunicazione tra i due processi, di visione e di controllo, nel paragrafo Linux RTAI e i sistemi real time Un sistema real time deve soddisfare le tempistiche che caratterizzano ogni processo in esecuzione. La sua caratteristica predominante deve essere il determinismo, cioè deve 68

73 7 Interazione tra processi essere noto a priori il tempo necessario per svolgere una determinata operazione. Inoltre un sistema real time deve essere anche veloce abbassando la latenza, cioè il tempo di risposta a un evento asincrono esterno. I task real time possono essere periodici, quindi la loro esecuzione deve terminare all interno del periodo. I task non periodici, invece, sono caratterizzati da deadline, cioè scadenze temporali entro le quali l esecuzione del task deve essere terminata. Il modo in cui devono essere rispettate le deadline discrimina tra hard e soft real time. Nel primo caso la deadline deve essere sempre e comunque rispettata, mentre nel secondo caso è accettabile fallire il rispetto della deadline con bassa probabilità. Oltre al soddisfacimento delle deadline il sistema operativo si deve occupare della regolamentazione dell accesso alle risorse e della comunicazione tra processi. E importante che task real time e non coesistano e possano interagire. Un elemento importante all interno di un sistema operativo real time è lo scheduler che deve occuparsi di gestire l esecuzione dei vari processi garantendo il soddisfacimento dei vincoli di tempo. I processi devono anche avere la possibilità di scambiarsi dati e messaggi attraverso gli strumenti che il sistema operativo dovrà mettere a disposizione. Linux è un sistema operativo general purpose che può diventare real time applicando la patch RTAI (RealTime Application Interface) al kernel. Essa introduce un hardware abstraction layer, cioè un livello di astrazione tra applicazioni e altri programmi, come il sistema operativo, o dispositivi fisici. In questo modo non è necessario conoscere nel dettaglio il livello sottostante con cui l applicazione deve interagire, è sufficiente conoscerne l interfaccia verso l esterno. RTAI rende il kernel di Linux prerilasciabile, cioè il suo utilizzo da parte di un task può essere interrotto da un altro task a priorità maggiore che ne necessita. Inoltre agisce sulle politiche di scheduling e sulla gestione degli interrupt in modo da regolare l esecuzione dei processi in funzione delle loro scadenze e delle risorse disponibili. Le funzioni messe a disposizione da RTAI riguardano i semafori, utilizzati per regolare l utilizzo di risorse o l accesso a regioni critiche, lo scambio di messaggi tra task e l uso di servizi di timing. Secondo lo standard POSIX (Portable Operating System Interface) RTAI implementa i servizi riguardanti thread, mutex e code di messaggi. POSIX è lo standard utilizzato dai sistemi operativi per fare in modo che l interfaccia legata a una funzione sia indipendente dalle diverse implementazioni che può avere all interno di differenti sistemi operativi. I servizi elencati sono elementi fondamentali per la programmazione concorrente. Utilizzando RTAI per creare task real time è necessario scrivere dei moduli per il kernel di Linux. Un modulo del kernel è un file oggetto contenente routine e dati da caricare in un kernel in esecuzione. Una volta caricato, il modulo risiede nello spazio di indirizzamento del kernel e viene eseguito all interno del suo contesto. Un modulo può essere composto da qualsiasi set di routine purchè ne contenga almeno due: init_module() 69

74 7 Interazione tra processi e cleanup_module(). Entrambe vengono eseguite una sola volta, la prima al caricamento del modulo, e la seconda quando viene scaricato dal kernel. Utilizzare dei moduli del kernel ha il vantaggio di poter eseguire un task in kernel space, cioè aver accesso a tutte le risorse con la massima priorità, ma, allo stesso tempo, questo significa che non esistono protezioni nel caso di accesso involontario a dispositivi o aree di memoria riservate al salvataggio di dati che non rigurdano il task. L alternativa all utilizzo dei moduli del kernel è data da LXRT (LinuX Real Time) che implementa i servizi per rendere disponibili le funzioni dello scheduler di RTAI ai processi di Linux. Questo significa che le primitive per l invio dei messaggi, l utilizzo dei semafori e il timing possono essere applicate tra due task di Linux, tra un task di Linux e uno di RTAI oppure tra due task di RTAI. Naturalmente utilizzando LXRT è possibile creare task sia hard sia soft real time. Un task di LXRT, per accedere ai servizi di RTAI, deve creare un task real time in kernel space, che deve preoccuparsi della gestione dei servizi real time, tramite la funzione rt_task_init. Per terminare il task si utilizza la primitiva rt_task_delete. Con LXRT è possibile eseguire task hard e soft real time e passare da una all altra modalità con le funzioni rt_make_hard_real_time e rt_make_soft_real_time. Task hard real time possono interrompere processi di Linux in user space, viceversa non possono essere interrotti nè da processi Linux nè da interrupt Linux. Essi possono essere interrotti solo da task real time in kernel space e da processi hard real time con priorità maggiore. Utilizzando LXRT tutte le primitive per operare con i processi real time sono disponibili anche in user space e non solo in kernel space. Questo risulta utile in fase di progetto per facilitare, rendere meno rischiosa e velocizzare la scrittura dei task real time La generazione di codice La generazione di codice è un processo che permette, a partire da uno schema Simulink, di ottenere il codice, in linguaggio C, che implementa il task real time corrispondente. In base alle cosiderazioni fatte nel paragrafo precedente si decide di operare in user space utilizzando LXRT. La generazione del codice avviene grazie al toolbox di Matlab RTW (Real Time Workshop). Nel documento [9] viene trattato in modo approfondito il processo per la generazione del codice. Il grande vantaggio della generazione di codice è quello di ottenere un task real time senza dover conoscerne le tecniche di implementazione tramite programmazione C e senza dover conoscere nel dettaglio il funzionamento di un sistema real time. Il progettista del task di controllo può operare ad alto livello connettendo blocchi di Simulink e concentrandosi sull algoritmo senza preoccuparsi della sua implementazione. Inoltre l utilizzo 70

75 7 Interazione tra processi di Simulink permette di simulare e testare l algoritmo prima di provarlo direttamente sulla macchina tramite l esecuzione del task real time. Il processo per la generazione automatica del codice parte dalla creazione di uno schema Simulink che deve essere eseguito su un sistema real time Linux-RTAI. Il RTW analizza lo schema Simulink di cui si vuole generare il codice per estrarre dei file che lo descrivano e che possano essere eseguiti. Nella fase di analisi si procede alla validazione dei parametri, alla propagazione dei segnali e alla creazione di una rappresentazione riassuntiva di tutto lo schema contenente le relazioni tra tutti i blocchi presenti. Il risultato è una rappresentazione intermedia contenuta nel file modello.rtw. A partire da questo il TLC (Target Language Compiler) crea i sorgenti C. Esso si preoccupa di creare i file che descrivono la struttura dello schema Simulink e il comportamento dei singoli blocchi che lo compongono. Inoltre è necessario generare il makefile per la fase di compilazione (model.mk) che è specifico per il sistema su cui verrà eseguito il task. RTW genera i seguenti file: model.rtw rappresentazione intermedia in cui sono già state eseguite le operazioni di propagazione dei segnali e verifica dei parametri model.c descrizione del modello con inclusione dell header file. Ha la struttura di una S-Function in cui, all interno delle varie funzioni, vengono richiamati i corrispondenti metodi dei blocchi che compongono il modello nell ordine che rispecchia le loro connessioni. model_private.h contiene dati importati da Simulink o Stateflow e informazioni private di RTW model.h definizione delle strutture dati e delle costanti utilizzate dal modello I file sorgenti creati in modo condizionale in base alle opzioni scelte sono: model_data.c contiene le strutture e i dati per parametri e segnali model_pt.c codice necessario per permettere a un applicazione esterna di accedere ai parametri del modello model_bio.c codice necessario per permettere a un applicazione esterna di accedere alle uscite dei blocchi del modello rtmodel.h memorizza tutte le direttive necessarie al main per accedere alle strutture dati del modello e le funzioni principali che descrivono il modello 71

76 7 Interazione tra processi Prima di poter generare il codice è necessario impostare i parametri del processo di generazione scegliendo il giusto template makefile per il TLC. Inoltre si sceglie se utilizzare l external mode, utile per scambiare dati tra Simulink e il codice quando il processo è in esecuzione, oppure il data log mode secondo il quale tutte le informazioni generate mentre il processo è in esecuzione vengono salvate in un file di log consultabile off-line. Se all interno dello schema Simulink ci sono operazioni eseguite con tempi di campionamento diversi è possibile scegliere di generare del codice singletasking o multitasking. Nel caso in cui venga scelta la seconda opzione verranno creati un task per ogni tempo di campionamento e quello a maggiore priorità sarà il Base Rate, cioè quello con tempo di campionamento minore. Una volta creati i makefile si passa alla fase di compilazione e di linking dopo la quale sarà disponibile l eseguibile per il controllo del manipolatore in ambiente Linux-RTAI. I file che descrivono lo schema Simulink vengono linkati con il file rtmain.c che si occupa della gestione del processo real time. Al suo interno vengono generati tre thread: rtmain, thread principale che ha il compito di richiamare le funzioni di inizializzazione e terminazione presenti nel codice generato, impostare lo scheduler e creare gli altri due thread rt_baserate, thread hard real time che viene eseguito alla frequenza base del modello e contiene le chiamate alle funzioni che ne definiscono il comportamento rt_hostinterface, thread per la comunicazione con l interfaccia grafica tramite la quale è possibile monitorare i segnali e impostare i parametri Con RTAI la comunicazione tra i processi in gioco avviene attraverso la rete. Ogni processo è contraddistinto da un indirizzo, quindi è possibile implementare un controllo distribuito con le varie parti del programma che sono in esecuzione su pc diversi: ad esempio su un pc viene eseguito l algoritmo di controllo e su uno l interfaccia grafica RTAI-Lab. In particolare spesso, anche grazie alla struttura dei thread generati, si creano due sistemi: Host e Target. I due corrispondono all interfaccia grafica e al task real time. Essi possono seguire un tipo di implementazione in remoto e comunicare tramite RPC (vedi paragrafo 7.1.2) InterProcess Communication La comunicazione tra processi avviene attraverso dispositivi messi a disposizione dal sistema operativo. Ognuno di essi ha caratteristiche proprie ed è adatto a diverse situazioni. L insieme delle primitive necessario all utilizzo di questi dispositivi è implementato all interno del sistema operativo. 72

77 7 Interazione tra processi Linux RTAI mette a disposizione i seguenti strumenti per la comunicazione tra task real time e processi in user space: FIFO (First In First Out): area di memoria in cui, da un lato un processo scrive dati, dall altro lato un altro processo legge dati, come un dispositivo a caratteri sequenziale. Si utilizzano in modo simile ai file attraverso primitive analoghe. Permettono solo comunicazioni sequenziali. SHARED MEMORY: per comunicazioni non seriali permettono a programmi in kernel space e user space di condividere una regione di memoria. Tutte le operazioni eseguite da processi real time sono non bloccanti, quindi è necessario sincronizzare le operazioni di lettura e scrittura in modo da mantenere la consistenza dei dati. MAILBOXES: scambio di dati tramite messaggi. Sono analoghe alle FIFO però in più permettono di spezzare il messaggio, se troppo lungo. Possono coinvolgere più di 2 task nella comunicazione ma, per messaggi corti, si ha un degrado delle prestazioni a causa del raddoppio del numero di operazioni di accesso alla memoria. RPC (Remote Procedure Call): servono per inviare e ricevere messaggi tra task che rimangono accoppiati nell attesa di una risposta del ricevente. Consentono lo scambio dei messaggi anche in remoto grazie all aggiunta di due parametri (node e port) Per quanto riguarda questa tesi la quantità di dati da scambiare è ridotta (6 numeri reali), quindi strumenti come SHARED MEMORY e MAILBOXES sono ridondanti. Inoltre i due processi che si scambiano dati lavorano in modo indipendente senza la necessità che uno rimanga in attesa della risposta dell altro come accade con le RPC. Quindi l utilizzo di una FIFO risulta essere il più appropriato. La FIFO è un buffer unidirezionale in lettura e scrittura usato per il trasferimento di dati asincrono tra processi in esecuzione. E caratterizzato dal numero di dati che può contenere e dalla dimensione fissa di ogni singolo dato. Permette la comunicazione tra due processi Linux, due task real time e un processo Linux e un task real time. Finchè non si verifica la condizione di coda piena chi scrive nella FIFO può continuare a farlo anche se l altro processo non l ha ancora letta. Possono essere create in kernel space e in user space, sono caratterizzate da un nome e possono essere ridimensionate e resettate anche dopo la creazione. Ogni FIFO viene creata come un device e utilizzata con primitive simili a quelle per la gestione dei file. Non c è limite, se non di memoria, al numero di FIFO che un processo può usare. E necessario controllare il verificarsi delle condizioni di coda piena o vuota. Le operazioni di lettura e scrittura non sono permesse 73

78 7 Interazione tra processi contemporaneamente, per questo motivo è possibile sincronizzare i task che le effettuano usando i semafori. Le funzioni principali per operare con le FIFO sono: open permette l apertura del dispositivo specificando il tipo di operazione che si vuole svolgere write utilizzata per scrivere dati nella FIFO read usata per leggere dati dalla FIFO close chiude il dispositivo 7.2 Analisi dei processi in gioco Studiando l architettura per il controllo del manipolatore tramite visione stereoscopica presentata nel capitolo 2 è possibile individuare due processi distinti: il primo che si occupa delle visione stereoscopica e il secondo che si occupa del controllo del manipolatore. Il programma per l elaborazione delle immagini ha il compito di calcolare la posizione nello spazio dell oggetto di cui si vuole eseguire il tracking. Questa informazione dovrà essere disponibile all algoritmo di controllo per poter calcolare le coppie di comando da inviare ai motori posti sui giunti del manipolatore. Questo scambio di dati, come illustrato nel paragrafo precedente, avviene tramite una FIFO. La necessità di avere due processi distinti per visione e controllo deriva, oltre che da caratteristiche di modularità, da considerazioni sulle tempistiche necessarie per l esecuzione dei due. Il controllo del robot ha vincoli di tempo stringenti: il manipolatore deve ricevere il comando con periodo 1 ms, come imposto dalla modalità operativa 4, pena l arresto. La visione non riesce a soddisfare gli stessi vincoli in quanto la velocità di acquisizione del frame grabber è inferiore e la complessità computazionale di un algoritmo per l elaborazione delle immagini è alta. Per questi motivi quello che si occupa di visione è un processo asincrono, mentre quello che si occupa di controllo è un processo real time. Da entrambe le parti, controllo e visione, è stato predisposto un modulo software per la comunicazione. Per la parte di visione consiste in una classe in linguaggio C++, RTFifo, che va ad aggiungersi a quelle per l acquisizione e l elaborazione delle immagini e per la calibrazione. Per la parte di controllo consiste in una S-function, RTFifoSFun, che viene richiamata da un blocco all interno dello schema Simulink di cui si effettua la generazione di codice. Le S-Function sono funzioni scritte in linguaggio C che comprendono un insieme di funzioni secondo lo schema imposto da Matlab. Sono utili per generare blocchi Simulink personalizzati. Per poter lavorare ad alto livello nella progettazione del controllo si utilizza uno schema Simulink di cui poi verrà generato il codice. All interno dello 74

79 7 Interazione tra processi schema è possibile inserire questi blocchi personalizzati il cui comportamento è stabilito dal codice contenuto in una S-Function. I dati che i due processi devono scambiarsi sono delle posizioni, quindi 6 valori reali. La FIFO utilizzata (/dev/rtf0) viene creata mantenendo le dimensioni di default, pari a 1kB, che risultano essere sufficienti affinchè lo scambio dati avvenga correttamente. Oltre alla FIFO si utilizza un segnale real time, messo a disposizione dal sistema operativo Linux, per segnalare la presenza di un nuovo riferimento per il controllo, cioè che la scrittura da parte della visione è avvenuta. Linux mette a disposizione 32 segnali real time numerati da 32 (SIGRTMIN) a 63 (SIGRTMAX). Essi non hanno un significato predefinito, nonostante i primi 3 vengano utilizzati per l implementazione dei Linux thread. A ogni segnale ricevuto da un task è necessario associare una funzione che si occupa della sua gestione, altrimenti, per default, l arrivo, ad un processo, di un segnale non gestito ne provoca la terminazione. Più istanze di un segnale real time possono essere accodate utilizzando la funzione sigqueue e più segnali real time dello stesso tipo arrivano nello stesso ordine in cui sono stati inviati. Se diversi segnali real time sono inviati al processo, essi sono recapitati a partire da quello con numero più basso a cui corrisponde priorità più alta. Il numero massimo di segnali real time accodabili a un processo è settabile in un apposito file. Se ci sono sia segnali real time, che non, pendenti per un processo, Linux dà priorità ai segnali standard. L accodamento del segnale avviene tramite l istruzione sigqueue che necessita, come parametri, del PID (Process IDentifier) del processo a cui inviare il segnale e dell identificativo del segnale. Si decide di utilizzare il segnale real time numero 35 perchè corrispondente a quello, non utilizzato da Linux, a priorità massima. Siccome per poter accodare il segnale a un processo è necessario conoscerne il PID deve esistere un legame di parentela. Il processo per la visione, che si deve occupare dell invio del segnale, verrà creato come figlio del processo di controllo utilizzando la primitiva fork. In questo modo il task figlio può ottenere, tramite la funzione getppid, l identificatore del processo padre. Il nome del processo figlio deve essere fisso perchè impostato come parametro all interno della S-Function del blocco Simulink che ha il compito di leggere i dati dalla FIFO. Nel codice della S-Function, alla creazione del processo figlio, corrisponde l esecuzione del file che si occupa della visione, tramite la funzione execve. In figura 7.1 è visibile una rappresentazione schematica della comunicazione tra la classe RTFifo e la S-Function RTFifoSFun. Quando il processo che si occupa della visione dispone di un nuovo riferimento svolge la seguente sequenza di operazioni: tramite la funzione open apre la FIFO in sola scrittura scrive la posizione cartesiana con write 75

80 7 Interazione tra processi Figura 7.1. Comunicazione tramite FIFO accoda il segnale real time che indica che è avvenuta la scrittura usando sigqueue tramite la funzione close chiude la FIFO Nella S-function RTFifoSFun è presente il codice per la lettura dalla FIFO organizzato nelle seguenti funzioni: in mdlstart, metodo che viene eseguito solo una volta all inizializzazione del blocco, si occupa di: eseguire una fork per la creazione del processo figlio avviare il processo figlio con execve tramite la primitiva signal, associare una funzione per la gestione del segnale real time, quando viene ricevuto. Questa funzione setta il flag readen aprire la FIFO in mdlupdate, metodo che viene eseguito a ogni ciclo per l aggiornamento degli stati, si occupa di: testare il flag readen se settato, leggere dalla fifo il riferimento di posizione in mdloutput, metodo che viene eseguito a ogni ciclo per l aggiornamento delle uscite, si occupa di: mandare in uscita dal blocco il riferimento di posizione letto in mdlterminate, metodo che viene eseguito una sola volta alla terminazione del programma, si occupa di: chiudere la FIFO 76

81 Capitolo 8 Controllo del robot L algoritmo per il controllo del manipolatore in real time è il risultato del processo di generazione del codice a partire dallo schema Simulink di figura 8.1. Il modello in figura rappresenta i componenti fondamentali per il funzionamento del controllo, i quali includono ulteriori funzioni che sono state nascoste per aumentare la leggibilità dello schema e verranno trattate nei prossimi paragrafi. Nello schema sono visibili due anelli di controllo: quello interno di posizione ai giunti e quello esterno basato sulle informazioni provenienti dalla visione. L utilizzo della visione introduce un anello di controllo del robot più ad alto livello rispetto ai classici controlli di posizione e velocità. Questo perchè si aggiungono a un sistema in grado di effettuare spostamenti controllati ulteriori apparati di ausilio alla movimentazione che aumentano i feedback provenienti dall ambiente di lavoro. Essi agiscono nel controllo della direzione del movimento e non nel modo in cui viene effettuato il movimento stesso. Tutti i blocchi per la generazione di codice sono strutturati in modo da poter essere eseguiti all interno di un task real time che risiede in user space. Il comportamento di molti di essi è implementato utilizzando le S-Function, cioè funzioni in linguaggio C che definiscono le operazioni da svolgere all inizializzazione, periodicamente e alla terminazione. Ogni blocco ha porzioni di codice che vengono considerate o meno in fase di compilazione in modo da poter eseguire operazioni diverse nel caso in cui si voglia solamente eseguire una simulazione oppure si voglia controllare il manipolatore. Inoltre non tutto il comportamento del blocco è definito direttamente nella S-Function associata ma, spesso quest ultima si limita a richiamare una funzione definita in un modulo esterno. Questa funzione, sempre in linguaggio C, si occupa di definire le operazioni che devono essere eseguite dal blocco a ogni ciclo di esecuzione. Questa struttura non fa altro che aumentare la modularità del sistema. Per modificare il comportamento del blocco non è necessario intervenire sullo schema Simulink, è sufficiente definire una nuova funzione, purchè venga mantenuto lo stesso prototipo. La modifica può avvenire anche a 77

82 8 Controllo del robot Figura 8.1. Schema di controllo codice già generato. Tutti gli elementi di figura 8.1 dovranno essere eseguiti a frequenza pari a 1kHz, come imposto dalla modalità operativa numero 4 del manipolatore Comau. Quindi tutti i blocchi verranno posti all interno di un blocco triggerato che viene eseguito ogni volta che riceve un interrupt. L interrupt proviene dal blocco Interrupt handler che si occupa di sincronizzare l esecuzione dell algoritmo con il segnale di interrupt generato ogni millisecondo dal Controller collegato al robot. Questo mantiene una continua sincronizzazione indipendente da problemi di deriva del clock del PC. In realtà è sufficiente che l anello interno per il controllo di posizione rispetti queste tempistiche, perciò l altra parte dello schema Simulink può anche essere posta all esterno del blocco triggerato RTcontrol. Questa scelta deve essere valutata dopo aver considerato i tempi necessari per l esecuzione degli algoritmi contenuti nei vari elementi. 78

83 8 Controllo del robot In tutti i punti dello schema Simulink in cui deve avvenire uno scambio di dati tra blocchi che potrebbero avere tempistiche molto diverse è utile aggiungere delle interfacce. Queste si devono occupare, a seconda dei casi, di mantenere un dato oppure di stimarlo. Ad esempio, siccome l anello di controllo interno è soggetto a specifiche temporali stringenti, se non è disponibile un nuovo riferimento di corrente può essere utile mantenere il precedente. In questo capitolo verrà data una panoramica di tutti i blocchi principali presenti nello schema Simulink progettato per il controllo del robot. 8.1 L anello di posizione Gli elementi fondamentali che compongono l anello di controllo di posizione sono due: il robot Comau Smart 3-S2 e il controllore PID. Il blocco che implementa il robot Comau contiene solamente la funzioni per la comunicazione con il C3G tramite l apertura Tecnospazio. In particolare si occupa di leggere le posizioni dei giunti, espresse in rad e misurate dai resolver, e scrivere i riferimenti di coppia, espressi in Nm. E il blocco stesso ad occuparsi di effettuare le conversioni per adeguare le unità di misura delle grandezze in gioco. Non essendo disponibile il modello dinamico del manipolatore il funzionamento del blocco è definito solo in fase di test sulla macchina e non per la simulazione. L elemento che rappresenta il robot possiede un ulteriore ingresso per la gestione delle situazioni di errore e un uscita per il monitoraggio dei segnali. Oltre alle operazioni di lettura e scrittura dei dati da e verso il Controller, il blocco che rappresenta il robot Comau Smart 3-S2 contiene le funzioni per eseguire le operazioni di Drive ON e Drive OFF, cioè per l accensione e lo spegnimento del blocco di potenza. Le operazioni di accensione e spegnimento del blocco di potenza vengono effettuate dall utente, mentre il controllo è in esecuzione, impostando un opportuno parametro tramite un interfaccia grafica. La seconda uscita di cui è dotato il blocco del manipolatore permette l accesso ai segnali da parte dell interfaccia grafica, come verrà presentato nel prossimo capitolo. La gestione errori è affidata al blocco Error detector implementato come diagramma di flusso tramite Stateflow. Si occupa di interrompere i movimenti del robot nel caso in cui la differenza tra posizione attuale e riferimento sia troppo grande per essere percorsa in un passo di campionamento. E composto da due stati: run in cui il robot è in movimento. Si permane in questo stato finchè non si verifica una situazione di errore che impone il passaggio all altro stato. 79

84 8 Controllo del robot stop in cui il robot è in arresto. Viene disabilitata la parte di potenza e si permane in questo stato fino alla fine dell esecuzione dell algoritmo di controllo. E possibile realizzare un implementazione diversa dell algoritmo di gestione degli errori, magari più complessa e distinta a seconda del tipo di errore che si verifica. Il controllo di posizione ai giunti è realizzato da un blocco Simulink il cui comportamento è implementato da una S-Function. Quest ultima si occupa principalmente di richiamare, a ogni esecuzione, una funzione C presente in un file esterno. Questa funzione è quella che contiene il vero e proprio algoritmo di controllo. La struttura descritta permette di garantire la facile sostituzione della strategia di controllo, infatti l utente, senza dover necessariamente conoscere la struttura interna del blocco Simulink, può realizzare una propria funzione per il controllo purchè mantenga la stessa interfaccia. Il controllo realizzato è a giunti indipendenti e per ogni giunto sono stati stimati i 4 coefficienti del controllo (K V, K P, K P V e K I ), definiti all interno del file in modo che contengano già anche l informazione temporale data dal tempo di campionamento. Controllando i giunti in modo indipendente si considera solo la condizione precedente dello stesso giunto trascurando l interazione con gli altri. Questa tecnica di controllo viene utilizzata molto spesso perchè più semplice da implementare rispetto a un controllo che considera tutti i giunti insieme. E ragionevole considerare i giunti indipendenti quando i motori che li muovono non sono collegati direttamente al giunto ma attraverso i motoriduttori che ne permettono il disaccoppiamento. La strategia di controllo implementata per ogni giunto è di tipo PID e fa riferimento alla tesi [5]. La sua struttura è visibile in figura 8.2. Gli elementi memoria sono utilizzati per il calcolo dell integrale e delle velocità del riferimento e dello stato. Il coefficiente K V in realtà nell algoritmo è unitario. Oltre a K P, che moltiplica l errore di velocità, gli altri due coefficienti, K P V e K I, vengono applicati rispettivamente alla somma dell errore di posizione e dell errore di velocità e all integrale della somma dei due errori. Nello schema Simulink verranno aggiunti anche scope e monitor per la visualizzazione dei segnali in fase di esecuzione dell algoritmo di controllo. Questi segnali potranno essere selezionati e visualizzati tramite un interfaccia grafica. 8.2 L anello di controllo basato sulla visione Il riferimento per il controllo di posizione ai giunti proviene da un anello esterno che aggiunge un ulteriore livello di controllo, questa volta sulla posizione cartesiana, che considera le informazioni ricavate dall elaborazione delle immagini. Di questo anello fanno 80

85 8 Controllo del robot Figura 8.2. Struttura del controllore parte i seguenti elementi principali: cinematica diretta (dirkin) e inversa (invkin), pianificatore del moto (jointplanner), controllore (errcontrol) e algoritmo per la comunicazione con la parte di visione (rtfifosfun). Questi blocchi verranno analizzati nei prossimi paragrafi La cinematica La cinematica permette di avere una descrizione analitica del comportamento della struttura del robot senza considerare le forze che hanno generato il moto ([10]). Le grandezze coinvolte possono essere posizioni o velocità. In questo caso si opera con le posizioni e in particolare si stabilisce una relazione, in generale non lineare, tra coordinate giunto e coordinate cartesiane e viceversa. La cinematica diretta è la funzione che calcola le posizioni cartesiane in funzione delle posizioni ai giunti. Al contrario la cinematica inversa è la funzione che calcola le posizioni ai giunti in funzione delle posizioni cartesiane. Vengono usate molto spesso per riportare il normale funzionamento del robot, abituato a ricevere dei comandi ai motori, in una rappresentazione più vicina al progettista, abituato a ragionare in coordinate cartesiane nello spazio. Le posizioni ai giunti sono espresse attraverso 6 termini in radianti e corrispondono alle posizioni angolari dei giunti. Le posizioni cartesiane hanno 6 componenti di cui le 81

86 8 Controllo del robot prime tre rappresentano le posizioni espresse in millimetri rispetto al sistema di riferimento posto alla base del robot, le seconde tre sono gli angoli di assetto espressi in gradi secondo la convenzione RPY (x-y-z fisso). Per evitare problemi nella rappresentazione dell assetto, le funzioni implementate nei blocchi delle cinematiche operano con le matrici di rotazione. In un secondo momento, tramite funzioni aggiuntive, si ricavano i tre angoli secondo la rappresentazione scelta. Il calcolo delle cinematiche viene fatto analizzando la struttura geometrica del manipolatore. Si pongono in relazione i due sistemi di coordinate valutando le trasformazioni che legano i sistemi di riferimento solidali ai vari bracci. La scelta dei sistemi di riferimento può essere fatta secondo alcune convenzioni, ad esempio Denavit-Hartenberg. Essendo il polso del manipolatore non sferico, a causa del disallineamento degli assi dei giunti 4 e 6, la cinematica inversa non può essere, con certezza, determinabile in forma chiusa, ma è necessario ricorrere all utilizzo di metodi numerici. All interno dell algoritmo di controllo i blocchi per il calcolo delle cinematiche vengono inseriti per poter collegare i due anelli. Infatti, mentre il controllo di posizione opera con coordinate giunto, il controllo sulla visione utilizza coordinate cartesiane. Quindi nell anello esterno, per il calcolo dell errore, si esprime la posizione corrente del robot in coordinate cartesiane tramite la cinematica diretta. Il risultato del controllo sulla visione viene riportato in coordinate giunto dalla cinematica inversa per la pianificazione del moto e quindi il controllo di posizione. Si possono avere dei problemi nel controllo del robot in coordinate cartesiane se ci si trova nella situazione di singolarità. Questo significa che la soluzione della cinematica inversa non è univoca, cioè il robot ha più di una configurazione dei giunti possibile per raggiungere una data posizione cartesiana. In queste situazioni il blocco per la cinematica inversa non restituisce risultati attendibili. E perciò necessario aggiungere un uscita per il riconoscimento delle situazioni di singolarità e una routine per la loro gestione. Un esempio di singolarità nel Robot Comau è dato dall allineamento degli assi dei giunti 4 e 6 del polso (appendice A) Il pianificatore La pianificazione del moto è un operazione necessaria nel controllo di un manipolatore. Il pianificatore si occupa di fornire al controllo di posizione un set point di posizione ai giunti compatibile con i limiti meccanici della struttura del manipolatore e secondo la traiettoria ottimale. Questo significa che il riferimento deve tenere conto dei valori di velocità e accelerazione massimi ai giunti. Il funzionamento del pianificatore è principalmente influenzato dalla scelta del tipo di traiettoria che si intende seguire, dal tipo di coordinate in cui avviene la pianificazione e dalla capacità di effettuare calcoli in linea. 82

87 8 Controllo del robot Il pianificatore implementato deriva dal filtro non lineare studiato in [11]. Esso si occupa di generare traiettorie secondo il profilo 2-1-2, dove i numeri indicano l ordine delle funzioni che si susseguono per creare il tipo di movimento che deve essere eseguito dal robot per passare da una posizione a un altra. In figura 8.3 sono riportati due grafici che rappresentano il gradino di posizione, per portare il giunto 6 dalla posizione angolare di 60 a 0, in ingresso al pianificatore e la traiettoria pianificata. Si nota che il riferimento per il controllore di posizione rispecchia il profilo voluto. Figura 8.3. Pianificazione del moto La pianificazione del moto viene fatta nello spazio dei giunti, anzichè nello spazio cartesiano. A volte invece può essere preferibile utilizzare un pianificatore cartesiano per avere traiettorie lineari ma, in questo modo, non si ha la possibilità di verificare direttamente i limiti di velocità e accelerazione e non è possibile utilizzare i limiti equivalenti in ambito cartesiano perchè la cinematica inversa non è una funzione lineare. Quindi si utilizza un pianificatore nei giunti nonostante non si abbiano traiettorie rettilinee, eventualmente la cinematica inversa può essere preceduta da un guadagno in modo da rendere 83

88 8 Controllo del robot la traiettoria vicina a una retta. Il valore del guadagno si ottiene come compromesso tra traiettoria rettilinea e velocità del moto risultante. C è bisogno di un pianificatore in linea, cioè un pianificatore che lavori con traiettorie non punto-punto in quanto il punto di arrivo non è noto a priori e non rimane fisso ma continua a variare. Implementare un pianificatore in linea significa creare un blocco che è in grado di pianificare il moto accettando nuovi riferimenti anche prima che l intero movimento sia stato completato, a differenza di alcuni algoritmi per la pianificazione in cui, dato un riferimento, vengono calcolati tutti i passi che il robot deve compiere per realizzare l intero moto e non per solo il prossimo passo. Al pianificatore in [11] sono state apportate alcune modifiche per migliorare il comportamento coordinato dei giunti. Si è agito soprattutto sul criterio per la scelta delle penalizzazioni da applicare ai giunti più veloci. Ottenere un movimento coordinato dei giunti significa fare in modo che tutti i giunti inizino e terminino il moto contemporaneamente. Questo si ottiene limitando la velocità dei giunti più veloci in relazione a quello più lento, alla condizione peggiore. La pianificazione è stata implementata tramite un blocco Simulink che si occupa di generare i riferimenti per effettuare dei movimenti nello spazio dei giunti. La sua interfaccia è stata cambiata rispetto a [9] per poter ricevere come ingresso il riferimento e non solo come parametro. Il blocco ha come parametri le velocità e le accelerazioni massime per ogni giunto, la posizione finale e un flag che indica se considerare come posizione finale, per la pianificazione del moto, quella in ingresso o quella espressa come parametro. Tutti i parametri sono di tipo Tunable, cioè possono essere modificati in fase di esecuzione grazie all utilizzo di un interfaccia grafica. Anche questo blocco ha una struttura modulare e in un file indipendente sono state definite le funzioni richiamate dall S-function all interno del blocco. Queste funzioni realizzano le seguenti operazioni: filtraggio del segnale per creare una traiettoria del tipo e controlli di sicurezza. I secondi si occupano di saturare l uscita compatibilmente con i valori di velocità e accelerazioni massime, raggiungibili dai giunti e impostati dall utente, e con le posizioni limite di ogni giunto segnalate dai finecorsa Il controllo sulla visione Il secondo blocco per il controllo, oltre a quello di posizione, opera sull errore dato dalla differenza tra il riferimento visivo e la posizione misurata del manipolatore. In uscita invia il comando per la pianificazione del moto nello spazio dei giunti. Il suo compito è quello di pesare il ruolo della visione all interno dell architettura di controllo. Inizialmente le strategie di controllo saranno le stesse implementate nell architettura descritta in [1]. In un secondo momento, grazie alla modularità del sistema, saranno facilmente implementabili e testabili nuove tecniche per il controllo. 84

89 8 Controllo del robot Le due semplici tecniche di controllo considerate sono: Proporzionale con coefficiente K P = 0.1, uguale per tutti i giunti Proporzionale Derivativa con coefficienti K P = 0.1 e K D = 0.075, uguali per tutti i giunti Al blocco per il controllo corrisponde una S-Function che richiama, a ogni ciclo, la funzione C per il controllo implementata in un modulo esterno Il riferimento visivo Il blocco per la lettura del riferimento proveniente dall algoritmo di visione fornisce in uscita la posizione cartesiana dell oggetto, di cui si vuole fare il tracking, nello spazio. Non ha ingressi in quanto preleva dati da una FIFO come descritto nel capitolo 7. Il dato letto è espresso nel sistema di riferimento della telecamera sinistra che, utilizzando il secondo metodo per la calibrazione delle telecamere presentato nel capitolo 5, coincide con il sistema di riferimento mondo. Questa configurazione permette di utilizzare direttamente il riferimento letto per il calcolo dell errore. Se la posizione fosse stata espressa rispetto a un sistema di riferimento fisso nello spazio sarebbe stato necessario aggiungere un ulteriore trasformazione da applicare alla posizione ottenuta con la visione. Questa trasformazione avrebbe dovuto tenere conto dello spostamento relativo tra le telecamere, montate sulla punta del robot, e il sistema di riferimento mondo. E comunque necessario utilizzare il blocco cl2base per riportare la posizione della sfera,espressa nel sistema di riferimento della telecamera sinistra, nel sistema di riferimento posto alla base del manipolatore in modo che possa essere confrontabile con la posizione attuale del robot. Oltre all uscita in posizione è utile aggiungere al blocco un ulteriore uscita. Quest ultima serve per segnalare un falso riferimento, cioè una posizione non corrispondente a quella reale della sfera. Questa situazione può verificarsi nel caso in cui la sfera non viene individuata in entrambe le immagini. L algoritmo di visione è in grado di accorgersene e di segnalarlo al controllo. A causa delle diversità nei tempi di esecuzione dei due algoritmi di visione e controllo, a ogni ciclo di esecuzione del controllo non è disponibile un nuovo riferimento letto dalla FIFO. Per ovviare a questo problema si può utilizzare un Multiport Switch che, se non è disponibile un nuovo dato, sostituisce il blocco per la lettura del riferimento con un altro blocco, estimvis. Quest ultimo può svolgere diverse operazioni, a seconda delle scelte implementative. Ad esempio può semplicemente mantenere l ultimo dato letto oppure stimare il prossimo riferimento sulla base dei precedenti. 85

90 Capitolo 9 Risultati sperimentali sul controllo Per la fase di test dell algoritmo di controllo si deve operare in ambiente Linux-RTAI. Una volta generato il codice è sufficiente eseguirlo affinchè il controllo sia pronto per essere attuato. Per l interazione con il processo è possibile utilizzare l interfaccia grafica RTAI-Lab, creata dagli stessi sviluppatori di RTAI. Le principali funzionalità fornite sono la visualizzazione dei segnali e il settaggio dei parametri. L interfaccia RTAI-Lab si connette al processo real time in esecuzione tramite un indirizzo di rete, quindi è possibile realizzare un esecuzione distribuita, cioè utilizzare più PC in rete su cui eseguire le diverse parti del sistema. Ad esempio è possibile utilizzare l interfaccia grafica su un PC diverso da quello su cui è in esecuzione l algoritmo di controllo. Questa tecnica è utile anche perchè il processo legato all interfaccia ha priorità inferiore al processo real time, perciò viene schedulato con minore frequenza affinchè non rallenti il controllo e venga garantito il requisito di real time. La comunicazione tra processo real time e interfaccia è possibile anche in remoto perchè tutte le funzioni utilizzano per la comunicazione le RPC (Remote Procedure Call) le quali permettono di scambiare messaggi conoscendo l indirizzo dei processi. Il monitoraggio dei segnali avviene tramite degli scope che hanno la possibilità di impostare le caratteristiche degli assi per migliorare la visualizzazione. Il grafico visibile in uno scope può essere salvato per un analisi più approfondita. I dati possono essere utilizzati per creare grafici in ambiente Matlab come descritto in [9]. E presente un altro ambiente per l impostazione dei parametri appartenenti ai blocchi dello schema Simulink per il controllo. Affinchè siano modificabili, questi parametri è necessario che siano stati impostati come Tunable. E possibile modificare un solo parametro alla volta oppure più parametri contemporaneamente tramite la funzione di Batch download. Tra i parametri vi è anche quello di Drive ON/OFF per l accensione e lo spegnimento del blocco di potenza del manipolatore. Per potersi interfacciare con il processo di controllo è necessario inserire nello schema 86

91 9 Risultati sperimentali sul controllo Simulink dei blocchi per la comunicazione. E possibile scegliere il segnale da visualizzare tramite il blocco Selector in cui si imposta il giunto che si vuole considerare. Il segnale in uscita dal selettore può essere inviato a un Run-time scope che è uno scope dedicato alla visualizzazione dei segnali real time. Inoltre per il monitoraggio dei segnali si connette al blocco che implementa le funzionalità del robot un elemento Monitor. Nei prossimi paragrafi verrà presentato un esempio di esecuzione di parte dell algoritmo di controllo con i risultati sperimentali ottenuti. Verrà quindi eseguita una seconda prova che utilizza in modo congiunto la parte di visione e quella di controllo per verificare l efficacia dei due algoritmi. Inoltre verranno affrontate le problematiche riscontrate nell utilizzare il metodo per il controllo e per la generazione dell algoritmo. 9.1 Test effettuati In questo paragrafo verrà presentato un primo esempio di esecuzione dell algoritmo di controllo corredato di grafici che riportano l andamento sperimentale delle grandezze in gioco. Successivamente verrà descritta una prova sperimentale in cui si utilizzeranno entrambi gli algoritmi per la visione e per il controllo. L esempio non comprende tutte le funzioni necessarie per il controllo completo del manipolatore tramite la visione, ma solo la parte vera e propria di controllo dei giunti del robot. Questo perchè non essendo disponibile un modello dinamico del manipolatore non è possibile verificare la correttezza dello schema di controllo in simulazione, ma è necessario operare direttamente sul sistema fisico. Questo comporta un aumento del tempo di test in quanto, oltre a dover essere sicuri della correttezza delle operazioni svolte dall algoritmo, le verifiche sul robot devono essere svolte per gradi e ripetute più volte aumentando il numero di situazioni contemplate. Inoltre molti blocchi che sono stati inseriti nello schema di controllo erano già stati implementati in altre occasioni ma non erano mai stati testati all interno di un architettura come quella utilizzata, quindi è stato necessario apportare alcune modifiche. Lo schema utilizzato per effettuare il test sperimentale è riportato in figura 9.1. In esso sono presenti i blocchi per realizzare l anello di controllo di posizione descritto nel capitolo precedente, il pianificatore, un generatore di riferimenti e gli elementi per la visualizzazione dei segnali. L anello di controllo di posizione ai giunti è composto dal blocco Comau S2/3 per la comunicazione con il manipolatore e dal controllore PID che calcola, in base all errore di posizione, il riferimento di coppia per i motori posti sui giunti. L elemento Error detector contiene il diagramma di flusso per la gestione degli errori. Il set point di posizione per il controllore è il risultato della pianificazione del moto svolta dal jointplanner. Per poter adeguare le unità di misura in cui sono espresse le posizioni ai giunti sono state inserite 87

92 9 Risultati sperimentali sul controllo Figura 9.1. Schema usato per le prove sperimentali delle costanti moltiplicative. La posizione finale che si vuole che il robot raggiunga è data dall uscita del blocco generator. Esso contiene una semplice S-Function che invia in uscita la posizione che l utente può impostare, tramite l interfaccia grafica, come parametro. Infine vi sono tutti i blocchi per la visualizzazione dei segnali. E stata svolta una prova del movimento di tutti i giunti anche se per brevità verranno riportati solo i risultati riguardanti l ultimo giunto. Il movimento prevede uno spostamento dalla posizione da 0 a 60 e ritorno. Le grandezze monitorate sono: lo spostamento desiderato (figura 9.2), il set point di posizione pianificato (figura 9.3), la posizione del giunto misurata (figura 9.4), il riferimento di coppia fornito al motore (figura 9.5) e il flag di errore che regola il funzionamento del robot (figura 9.6). Il riferimento di posizione in uscita dal blocco generator è costituito da una sequenza di gradini, uno per ogni cambiamento di posizione. In questo caso si effettuano due spostamenti tra 0 e 60 ( = 1rad). Questo riferimento non può essere direttamente inviato al robot in quanto non fisicamente realizzabile, quindi si applica la pianificazione della traiettoria. Il risultato è un riferimento di posizione con profilo 2-1-2, costituito all inizio e alla fine da funzioni di secondo ordine intervallate da una retta. Il riferimento iniziale viene trasformato dal pianificatore in una serie di riferimenti, uno per ogni periodo di esecuzione del ciclo di controllo; il tempo necessario per raggiungere la posizione finale 88

93 9 Risultati sperimentali sul controllo Figura 9.2. Gradino di posizione generato Figura 9.3. Traiettoria di posizione pianificata 89

94 9 Risultati sperimentali sul controllo Figura 9.4. Posizione del robot misurata Figura 9.5. Riferimento di coppia 90

95 9 Risultati sperimentali sul controllo Figura 9.6. Flag di errore aumenta conseguentemente. Dal grafico che rappresenta la posizione misurata si può verificare che questa segue la traiettoria pianificata. Per muovere il motore relativo al giunto 6 è stato necessario richiedere una coppia di ampiezza molto bassa in quanto l ultimo giunto non deve sorreggere nessuna struttura meccanica e deve solo occuparsi di vincere l attrito e la sua inerzia. La richiesta di coppia avviene in corrispondenza dei movimenti da effettuare. Durante tutto il movimento non si sono verificati errori quindi il flag ha mantenuto il valore 0 senza mai dover interrompere il moto del robot. I tempi riportati nei grafici non rappresentano le prestazioni massime perchè velocità e accelerazioni massime sono state ridotte di molto rispetto a quelle nominali del robot. Questo per ottenere grafici più chiari e per utilizzare il robot in sicurezza. Il secondo tipo di prove sperimentali svolte sul robot riguardano l integrazione tra visione e controllo per la movimentazione del manipolatore. Quello che si vuole verificare è che entrambi gli algoritmi forniscano risultati congruenti in modo da poterli integrare correttamente chiudendo l anello di controllo che riceve il riferimento di posizione dalla visione. Per fare questo si è utilizzato il manipolatore sul quale è stato montato il sistema di visione. All interno del campo di vista delle telecamere è stata posta la sfera nera in una posizione nota dello spazio e in modo che sia continuamente visibile da entrambe le telecamere durante tutto il moto del robot. Gli algoritmi di controllo e di visione vengono eseguiti in parallelo e, mentre il primo si occupa di far eseguire un movimento al robot, il 91

96 9 Risultati sperimentali sul controllo secondo acquisisce continuamente la posizione della sfera. Il robot viene controllato tramite il codice generato a partire da uno schema Simulink simile a quello utilizzato nelle prove sperimentali precedenti. Esso viene utilizzato per muovere il giunto 6 in modo da fargli compiere un intera rotazione facendolo passare da 0 a 360. Per effettuare questo spostamento vengono impostate velocità e accelerazioni massime basse in modo che anche la visione, più lenta del controllo, possa acquisire un significativo numero di valori. Durante il movimento controllato vengono acquisite le posizioni dei diversi giunti in modo da poter poi calcolare, tramite la cinematica diretta, le posizioni cartesiane della punta operativa espresse nel sistema di riferimento solidale con la base del robot. Mentre il manipolatore effettua il movimento descritto l algoritmo di visione acquisisce la posizione della sfera espressa nel sistema di riferimento della telecamera sinistra ottenendo i valori rappresentati in figura 9.7. Figura 9.7. Posizione della sfera acquisita dall algoritmo di visione Come si può notare l andamento è simile a un ellisse e non perfettamente a un cerchio perchè la sfera è stata posta in una posizione, sul piano x-y in cui avviene la rotazione, leggermente diversa da quella della punta operativa. Il sistema di visione è stato montato 92

97 9 Risultati sperimentali sul controllo sulla punta operativa del robot tramite un supporto che introduce una distanza tra telecamere e tool. Quindi, in seguito alla rotazione della punta, le telecamere descrivono una traiettoria circolare sul piano x-y rispetto al sistema di riferimento $BASE (figura A.1). Per poter verificare che i due algoritmi di visione e di controllo restituiscano risultati congruenti, e quindi il manipolatore possa essere controllato tramite il riferimento proveniente dalla visione, è stata calcolata la posizione della telecamera sinistra con due diversi metodi (figura 9.8). Figura 9.8. Posizione della telecamera sinistra tramite visione e controllo I punti in colore verde rappresentano la posizione della telecamera sinistra nel sistema di riferimento $BASE calcolata tramite le misure delle posizioni dei giunti del robot fatte dall algoritmo di controllo. Ad esse si aggiunge la trasformazione rigida che lega il sistema di riferimento della telecamera sinistra con $TOOL. L andamento è perfettamente circolare in quanto le misurazioni effettuate dai resolver sono molto precise. Il centro è dato dalla posizione della punta operativa riportata in blu. Nello stesso grafico è stata riportata, in rosso, la posizione della telecamera sinistra rispetto al sistema di riferimento $BASE calcolata tramite i risultati ottenuti dalla visione, 93

98 9 Risultati sperimentali sul controllo che restituisce la posizione della sfera rispetto alla telecamera sinistra, e la posizione nota della sfera nello spazio. E possibile notare che i due andamenti sono congruenti. In particolare, dal punto di vista quantitativo essi discostano di un errore medio pari a x mean = m. Esso è solo una stima dell errore in quanto i due processi di controllo e di visione non sono contemporanei ma, la visione è molto più lenta. Questo valore, rapportato al diametro della sfera, pari a d = 0.07m, è sufficientemente inferiore in modo tale che l oggetto del tracking venga effettivamente raggiunto. In particolare è possibile notare che la maggior parte dei punti ha un errore inferiore alla media. Solo in due zone del grafico la differenza tra i due andamenti è più evidente. Una causa di queste anomalie è l illuminazione della scena in quanto sarebbe necessario utilizzare una sorgente uniforme in tutte l area di lavoro, molto difficile da ottenere. Al laboratorio si dispone invece di una sorgente di illuminazione a neon non omnidirezionale. Molto probabilmente le due zone corrispondono a situazioni in cui il sistema di visione influenza l illuminazione della scena ad esempio creando delle ombre le quali, essendo di colore assimilabile a quello della sfera, non vengono individuate dall algoritmo di visione. Inoltre nel calcolo della posizione della sfera si possono avere errori dovuti alla triangolazione, come descritto nel paragrafo 6.2.2, in quanto le due telecamere sono parallele, i due raggi da intersecare molto vicini e facilmente soggetti a errori numerici. Essendo la palla distante dalle telecamere, ogni pixel dell immagine rappresenta una superficie non trascurabile, quindi è sufficiente commettere un errore di pochi pixel per ottenere variazioni nel calcolo della posizione della sfera. L algoritmo di visione utilizzato si è comunque dimostrato semplice e robusto soddisfacendo le caratteristiche principali per le quali è stato creato. E possibile adottare tecniche più sofisticate per il riconoscimento della sfera e il calcolo della posizione del centro di massa in modo tale da ridurre gli errori e ottenere riferimenti più precisi. 9.2 Analisi delle problematiche Nella realizzazione dello schema di test, riportato nel paragrafo precedente, e più in generale studiando il comportamento dell intero algoritmo di controllo sono state fatte alcune osservazioni sul funzionamento dei vari blocchi e sul sistema da utilizzare per le prove sperimentali. Se l algoritmo real time per il controllo prevede il monitoraggio di un numero elevato di segnali può risultare oneroso l aggiornamento dell interfaccia grafica. In particolare, aggiungendo nello schema Simulink troppi scope per la visualizzazione di segnali real time è possibile che non si riescano a creare tutte le risorse per la connessione al task. Una 94

99 9 Risultati sperimentali sul controllo soluzione potrebbe essere data dall esecuzione in remoto di RTAI-Lab che può connettersi al task di controllo tramite un indirizzo di rete. Essendo il task di controllo di tipo real time è importante mantenerne la caratteristica evitando l uso di primitive standard di Linux la cui richiesta potrebbe portare a lavorare in user space come se si trattasse di un normale processo Linux senza particolari specifiche di tempo. Analogamente bisogna porre attenzione nel non inserire nel codice real time funzioni onerose computazionalmente che possano rallentare l azione di controllo. Dal punto di vista dell algoritmo di controllo i problemi maggiori si hanno nel passaggio all utilizzo delle coordinate cartesiane e quindi nel calcolo della cinematica inversa. Un ruolo fondamentale è svolto dalle configurazioni singolari. In particolare è necessario riconoscerne il verificarsi e utilizzare una routine per la gestione del moto quando vengono rilevate. 95

100 Conclusioni La tesi si è occupata principalmente del progetto di un architettura in grado di intergrare facilmente il controllo di un manipolatore industriale con l utilizzo della visione stereoscopica. Sono poi state sviluppate le parti che la compongono e, per la maggior parte, sono state testate. La struttura dell intero sistema comunque consente lo sviluppo e la verifica sperimentale dei diversi componenti in modo indipendente. Questo permette di concentrarsi meglio su alcune parti rispetto ad altre che possono eventualmente essere sviluppate da altri componenti del gruppo di lavoro. La caratteristica sulla quale si è posta maggiore attenzione è la modularità. Si è cercato di strutturare l architettura in modo che sia composta da diverse unità in comunicazione tra loro ma indipendenti. Ogni unità implementa una diversa funzionalità e può essere modificata in ogni momento purchè mantenga l interfaccia verso le altre unità. Proprio per questo motivo in futuro sarà possibile sviluppare soluzioni più avanzate per la visione, il controllo e la comunicazione tra i due processi. Inoltre la stessa architettura potrà essere utilizzata per applicare altre strutture per il controllo che sostituiscano la visione. Per quanto riguarda la parte di visione l algoritmo sviluppato realizza un operazione fondamentale nel campo della computer vision, cioè il tracking di un oggetto in particolari condizioni. Si è verificato che il funzionamento del programma è comunque garantito anche se alcune ipotesi sull ambiente di lavoro non vengono rispettate, aumentandone così il campo di applicazione. Sono state analizzate approfonditamente le operazioni per la calibrazione e per il calcolo delle coordinate nello spazio in quanto il sistema di visione non si riduce all interpretazione delle immagini ma è collegato a un sistema fisico da controllare. In una versione successiva del software è possibile sfruttare meglio le proprietà derivanti dalla geometria epipolare ad esempio per ridurre la ricerca dell oggetto a una porzione dell immagine coniugata. Il software per la visione, essendo strutturato a classi, è modulare anche al suo interno e le varie parti sono facilmente modificabili o sostituibili. Non è dotato di interfaccia grafica per mantenere l indipendenza dal sistema operativo in cui viene eseguito. Inoltre, in fase di controllo del manipolatore l interfaccia non verrebbe utilizzata per non limitare le prestazioni, in termini di tempo, del processo real time. Le immagini con cui si opera possono comunque essere visualizzate utilizzando, così come per l elaborazione, librerie 96

101 9 Risultati sperimentali sul controllo open source e portabili. L uso delle librerie OpenCv e Highgui ha facilitato l implementazione dell algoritmo per l elaborazione delle immagini grazie alla disponibilità di funzioni per la realizzazione dell operazioni di base. Tuttavia a volte l utilizzo di queste librerie è stato ostacolato dalla scarsa documentazione e dalla scarsa affidabilità delle funzioni di più recente creazione. La maggior parte degli strumenti utilizzati, come le librerie per la visione e Linux- RTAI, sono open source, quindi è possibile analizzare completamente il funzionamento del sistema e sviluppare un architettura indipendente. L utilizzo della generazione del codice per la parte di controllo permette una progettazione ad altro livello tramite schemi Simulink che possono essere tradotti in codice compatibile con diversi sistemi operativi real time. L attività di progettazione del controllo è stata svolta considerando tutti gli elementi in gioco e prevedendo l inserimento di blocchi per garantire la presenza di un riferimento per il robot e per la sicurezza. La costruzione di un modello dinamico del manipolatore potrebbe facilitare la fase di test del controllo rendendo possibili le simulazioni. In futuro sarà possibile procedere con il test di tutta l architettura ed eventualmente con la sostituzione della strategia di controllo. L architettura realizzata costituisce una base di partenza per l utilizzo di sensori esterni col fine di aumentare la capacità percettiva del robot. Essa è aperta a qualsiasi tipo di innovazione purchè vengano mantenute le interfacce tra i vari blocchi e continuino a essere rispettati i limiti temporali e strutturali nel controllo del robot. 97

102 Appendice A Il robot Comau Smart 3-S2 Il manipolatore Comau è un robot antropomorfo, quindi è costituito da 6 giunti di tipo rotoidale che lo rendono dotato di 6 gradi di libertà. Il polso è di tipo euleriano ma non sferico, in quanto gli assi degli ultimi tre giunti non si intersecano in un punto. Il robot è stato progettato per svolgere le seguenti operazioni: saldatura ad arco palletizzazione controllo/ispezione applicazione di collanti E dotato di basse capacità di carico al polso pari a un massimo di 8kg. E adatto all esecuzione di lavori ripetitivi e che richiedono precisione. Può raggiungere accelerazioni e velocità elevate ai giunti. Ogni asse è mosso da un motore brushless a cui è collegato un motoriduttore per la trasmissione del moto al braccio seguente nella catena cinematica. Il riduttore permette di disaccoppiare il moto e di diminuire l inerzia vista dal motore. Ogni giunto ha capacità di movimento diverse e il raggiungimento delle posizioni massime è segnalato da finecorsa elettrici e meccanici. La posizione dei giunti è misurata tramite dei resolver e sui motori si trovano dei sensori per la misura delle correnti. Il manipolatore è in grado di effettuare spostamenti in coordinate giunto e in coordinate cartesiane. Queste ultime possono essere espresse rispetto a diversi sistemi di riferimento. In figura A.1 sono riportati il sistema di riferimento $BASE posto alla base del manipolatore e il sistema di riferimento $TOOL posto sulla punta operativa. Oltre alla struttura del robot è presente un armadio di controllo contenente gli azionamenti per il controllo dei motori e tutti i componenti elettronici per il trattamento dei 98

103 A Il robot Comau Smart 3-S2 Figura A.1. Sistemi di riferimento $BASE e $TOOL segnali. Inoltre è presente il controllore C3G per la gestione del moto del robot. Tramite l apertura Tecnospazio è possibile aggiungere un PC che interagisce con il C3G per aumentare le possibilità di intervento esterno nel controllo del robot. La comunicazione tra PC e C3G avviene tramite due schede Bit3 connesse con un cavo per comunicazioni ad alta velocità. In figura A.2 vi è lo schema degli elementi che possono essere connessi al robot, i quali verranno descritti nei prossimi paragrafi. A.1 Il controllore C3G Il C3G è un unità di controllo per la gestione di un massimo di 8 giunti. Si occupa dell acquisizione dei segnali provenienti dal sistema fisico e della generazione dei segnali per il movimento del manipolatore. E composto da: unità di controllo, implementa internamente il controllo di posizione, la pianificazione del moto tramite un microinterpolatore e il calcolo delle cinematiche unità di potenza, è costituita dagli azionamenti necessari per il controllo in corrente dei motori circuiti di alimentazione 99

ESTRAZIONE DI DATI 3D DA IMMAGINI DIGITALI. (Visione 3D)

ESTRAZIONE DI DATI 3D DA IMMAGINI DIGITALI. (Visione 3D) ESTRAZIONE DI DATI 3D DA IMMAGINI DIGITALI () Una immagine (digitale) permette di percepire solo una rappresentazione 2D del mondo La visione 3D si pone lo scopo di percepire il mondo per come è in 3 dimensioni

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

Processo di rendering

Processo di rendering Processo di rendering Trasformazioni di vista Trasformazioni di vista Il processo di visione in tre dimensioni Le trasformazioni di proiezione 2 Rendering nello spazio 2D Il processo di rendering (visualizzazione)

Dettagli

MMSC3 Sistema di calibrazione per guida robot bidimensionale e tridimensionale basato su visione artificiale

MMSC3 Sistema di calibrazione per guida robot bidimensionale e tridimensionale basato su visione artificiale Atti del V Congresso Metrologia & Qualità (Marzo 2007) MMSC3 Sistema di calibrazione per guida robot bidimensionale e tridimensionale basato su visione artificiale M. GALIMBERTI (1), R.SALA (2), N.CAPELLI

Dettagli

Sistema di ripresa con fotocamera digitale fissa Calibrazione

Sistema di ripresa con fotocamera digitale fissa Calibrazione Sistema di ripresa con fotocamera digitale fissa Calibrazione TUTORIAL CALIBRAZIONE FOTOCAMERA Sommario 1. Interfacciamento PC... 3 2. Collocamento fotocamera... 4 3. Distanza di ripresa... 5 4. Interfacciamento

Dettagli

Test, domande e problemi di Robotica industriale

Test, domande e problemi di Robotica industriale Test, domande e problemi di Robotica industriale 1. Quale, tra i seguenti tipi di robot, non ha giunti prismatici? a) antropomorfo b) cilindrico c) polare d) cartesiano 2. Un volume di lavoro a forma di

Dettagli

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video Video Librerie digitali Gestione di video Ogni filmato è composto da più parti Video Audio Gestito come visto in precedenza Trascrizione del testo, identificazione di informazioni di interesse Testo Utile

Dettagli

ESPERIENZA 5 OTTICA FISICA INTERFERENZA E DIFFRAZIONE

ESPERIENZA 5 OTTICA FISICA INTERFERENZA E DIFFRAZIONE ESPERIENZA 5 OTTICA FISICA INTERFERENZA E DIFFRAZIONE Lo scopo di quest esperimento è osservare la natura ondulatoria della luce, nei fenomeni della diffrazione e dell interferenza propri delle onde. In

Dettagli

Sistema automatico di acquisizione e modellazione 3D a basso costo

Sistema automatico di acquisizione e modellazione 3D a basso costo Sistema automatico di acquisizione e modellazione 3D a basso costo Titolo progetto Unità di Brescia Sviluppo, realizzazione e caratterizzazione metrologica di digitalizzatore a basso costo basato su proiezione

Dettagli

Laboratorio di Ottica, Spettroscopia, Astrofisica

Laboratorio di Ottica, Spettroscopia, Astrofisica Università degli Studi di Palermo Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Fisica Progetto Lauree Scientifiche Laboratorio di Ottica, Spettroscopia, Astrofisica Antonio Maggio

Dettagli

CURVATURA VERSO ROBOTICA/MECCATRONICA AVANZATA INDIRIZZO INFORMATICA E TELECOMUNICAZIONI

CURVATURA VERSO ROBOTICA/MECCATRONICA AVANZATA INDIRIZZO INFORMATICA E TELECOMUNICAZIONI CURVATURA VERSO ROBOTICA/MECCATRONICA AVANZATA INDIRIZZO INFORMATICA E TELECOMUNICAZIONI MACRO-COMPETENZE IN USCITA VERSO LA ROBOTICA/MECCATRONICA AVANZATA Quattro Macro-Competenze Specialistiche: 1. Saper

Dettagli

S.Nardi 1 ; P.B. Finazzi 2. 1. DIMART SRL. 2. Atlas Services

S.Nardi 1 ; P.B. Finazzi 2. 1. DIMART SRL. 2. Atlas Services MISURE DI QUALITA DEI FASCI E DELLA DIMENSIONE DELLA MACCHIA FOCALE IN FASCI DI FOTONI AD ALTA ENERGIA PRODOTTI DA ACCELERATORI LINEARI PER RADIOGRAFIE INDUSTRIALI S.Nardi 1 ; P.B. Finazzi 2. 1. DIMART

Dettagli

La Videosorveglianza e la Salvaguardia degli ambienti

La Videosorveglianza e la Salvaguardia degli ambienti La Videosorveglianza e la Salvaguardia degli ambienti 2015 Un sistema di sicurezza evoluto 01 LA VIDEOSORVEGLIANZA 02 A COSA SERVE? 03 PERCHE GLOBAL SISTEMI La videosorveglianza è un evoluto sistema di

Dettagli

Prof. A. Bemporad, Ing. S. Di Cairano 26 Maggio 2005. Esercitazione di Tecnologia dei Sistemi di Controllo

Prof. A. Bemporad, Ing. S. Di Cairano 26 Maggio 2005. Esercitazione di Tecnologia dei Sistemi di Controllo Università degli Studi di Siena Prof. A. Bemporad, Ing. S. Di Cairano 26 Maggio 2005 Esercitazione di Tecnologia dei Sistemi di Controllo Implementazione di controllori con xpc target Questa esercitazione

Dettagli

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE ISTRUZIONE E FORMAZIONE TECNICA SUPERIORE SETTORE INDUSTRIA E ARTIGIANATO TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE STANDARD MINIMI DELLE COMPETENZE TECNICO PROFESSIONALI DESCRIZIONE DELLA FIGURA

Dettagli

Un prototipo di 3D scanner

Un prototipo di 3D scanner Un prototipo di 3D scanner Visual Computing Group 1999 Visual Computing Group 1 Obiettivi Progettazione e realizzazione di uno 3d scanner a basso costo, a partire da hardware comune: una foto camera /

Dettagli

Risultati ottenuti. Risultati ottenuti

Risultati ottenuti. Risultati ottenuti Capitolo XIII : Risultati ottenuti Per testare l inseguitore di forme sono stati realizzati alcuni filmati di oggetti in movimento, e scene in cui è la telecamera a muoversi in un ambiente. L algoritmo

Dettagli

Interazione & Multimedia 1

Interazione & Multimedia 1 Il nostro viaggio nell image processing deve iniziare con lo studio di come l occhio umano percepisce una immagine e come la elabora. Ci interessa capire quali sono i limiti della visione umana al fine

Dettagli

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

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

Massimi e minimi vincolati di funzioni in due variabili

Massimi e minimi vincolati di funzioni in due variabili Massimi e minimi vincolati di funzioni in due variabili I risultati principali della teoria dell ottimizzazione, il Teorema di Fermat in due variabili e il Test dell hessiana, si applicano esclusivamente

Dettagli

WHITE PAPER. Perché Sony per la qualità delle immagini?

WHITE PAPER. Perché Sony per la qualità delle immagini? WHITE PAPER Perché Sony per la qualità delle immagini? Introduzione Perché Sony per la qualità delle immagini? Il futuro della videosorveglianza IP punta decisamente verso il Full HD. Molti produttori

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

MISURARE CON INTELLIGENZA BARRIERA OPTOELETTRONICA DI MISURAZIONE LGM

MISURARE CON INTELLIGENZA BARRIERA OPTOELETTRONICA DI MISURAZIONE LGM MISURARE CON INTELLIGENZA BARRIERA OPTOELETTRONICA DI MISURAZIONE LGM Barriera optoelettronica di misurazione LGM Misurare con intelligenza - nuove dei materiali in tutti i mercati La nuova Serie LGM di

Dettagli

Sistemi e schedulazione in tempo reale

Sistemi e schedulazione in tempo reale Sistemi e schedulazione in tempo reale 1 Sistemi in tempo reale Sistemi di calcolo in cui la correttezza del funzionamento dipende criticamente dal tempo in cui i risultati sono prodotti. Possibili campi

Dettagli

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

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

fit-up), cioè ai problemi che si verificano all atto dell assemblaggio quando non si riescono a montare i diversi componenti del prodotto o quando il

fit-up), cioè ai problemi che si verificano all atto dell assemblaggio quando non si riescono a montare i diversi componenti del prodotto o quando il Abstract Nel presente lavoro di tesi è stata analizzata l importanza che riveste l assemblaggio meccanico nelle diverse fasi del processo produttivo, centrando l attenzione sulle fasi di progettazione

Dettagli

SISTEMA MOTION 5D CINEMA

SISTEMA MOTION 5D CINEMA 24/06/2013 SISTEMA MOTION 5D CINEMA Il sistema sarà costituito da: n 1 pc laptop +joystick per EDITOR n 1 pc desktop per pilotare il motion: la connessione con il PLC avverrà mediante cavo Ethernet n 1

Dettagli

Giornata ANIPLA Introduzione alla visione industriale 3D. Milano, 14 giugno 2012 www.vblab.it R. Sala - remo.sala@polimi.it

Giornata ANIPLA Introduzione alla visione industriale 3D. Milano, 14 giugno 2012 www.vblab.it R. Sala - remo.sala@polimi.it Giornata ANIPLA Introduzione alla visione industriale 3D Milano, 14 giugno 2012 www.vblab.it R. Sala - remo.sala@polimi.it La visione delle macchine: 35 anni di storia Il testo Digital image processing

Dettagli

Disciplina: SCIENZE MATEMATICHE UNITÀ DI APPRENDIMENTO 1

Disciplina: SCIENZE MATEMATICHE UNITÀ DI APPRENDIMENTO 1 Disciplina: SCIENZE MATEMATICHE UNITÀ DI APPRENDIMENTO 1 OBIETTIVO FORMATIVO Comprendere come gli strumenti matematici siano necessari per operare nella realtà. L alunno si muove con sicurezza nel calcolo

Dettagli

TECNICO SUPERIORE PER L INFORMATICA INDUSTRIALE

TECNICO SUPERIORE PER L INFORMATICA INDUSTRIALE ISTRUZIONE E FORMAZIONE TECNICA SUPERIORE SETTORE INDUSTRIA E ARTIGIANATO TECNICO SUPERIORE PER L INFORMATICA INDUSTRIALE STANDARD MINIMI DELLE COMPETENZE TECNICO PROFESSIONALI DESCRIZIONE DELLA FIGURA

Dettagli

Introduzione all acquisizione Dati

Introduzione all acquisizione Dati Introduzione all acquisizione Dati Laboratorio di Robotica Industriale Evoluzione della strumentazione Introduzione all acquisizione dati - 2 Trend nella strumentazione Introduzione all acquisizione dati

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

Ricostruzione stereo. Il nostro obiettivo. Ricostruzione del Cenacolo Vinciano. Ricostruire la profondità. d Y

Ricostruzione stereo. Il nostro obiettivo. Ricostruzione del Cenacolo Vinciano. Ricostruire la profondità. d Y Il nostro obiettivo Daniele Marini Ricostruzione stereo Ricostruire scenari 3D da più immagini per inserire oggetti di sintesi Ricostruire la profondità Ricostruzione del Cenacolo Vinciano Solo se abbiamo

Dettagli

Progetto SOLAR. Prototipo Eliostato realizzato dall'unità Operativa di Catania

Progetto SOLAR. Prototipo Eliostato realizzato dall'unità Operativa di Catania Progetto SOLAR Prototipo Eliostato realizzato dall'unità Operativa di Catania L Unità Operativa di Catania, afferente al Dipartimento di Ingegneria Industriale, nell ambito del progetto SOLAR prevede lo

Dettagli

PLC Programmable Logic Controller

PLC Programmable Logic Controller PLC Programmable Logic Controller Sistema elettronico, a funzionamento digitale, destinato all uso in ambito industriale, che utilizza una memoria programmabile per l archiviazione di istruzioni orientate

Dettagli

PERCORSO DIDATTICO DI OTTICA GEOMETRICA

PERCORSO DIDATTICO DI OTTICA GEOMETRICA PERCORSO DIDATTICO DI OTTICA GEOMETRICA Tipo di scuola e classe: Liceo Scientifico, classe II Nodi concettuali: riflessione della luce; rifrazione della luce, riflessione totale, rifrazione attraverso

Dettagli

MODELLAZIONE NUMERICA E SPERIMENTAZIONI DELLE CORRENTI DI GRAVITA CHE INTERAGISCONO CON FORME DI FONDO

MODELLAZIONE NUMERICA E SPERIMENTAZIONI DELLE CORRENTI DI GRAVITA CHE INTERAGISCONO CON FORME DI FONDO MODELLAZIONE NUMERICA E SPERIMENTAZIONI DELLE CORRENTI DI GRAVITA CHE INTERAGISCONO CON FORME DI FONDO Relazione di tirocinio di Flavio Consolo matricola 281865 Corso ingegneria civile per la protezione

Dettagli

Sistema per il test dell impianto elettrico in linea di montaggio della vettura FERRARI 575 MM.

Sistema per il test dell impianto elettrico in linea di montaggio della vettura FERRARI 575 MM. Sistema per il test dell impianto elettrico in linea di montaggio della vettura FERRARI 575 MM. La sfida Certificare il corretto montaggio dell impianto elettrico, escludendo la presenza di cortocircuiti

Dettagli

AREA MATEMATICO-SCIENTIFICO-TECNOLOGICA MATEMATICA

AREA MATEMATICO-SCIENTIFICO-TECNOLOGICA MATEMATICA AREA MATEMATICO-SCIENTIFICO-TECNOLOGICA MATEMATICA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA SECONDARIA DI PRIMO GRADO. L alunno ha rafforzato un atteggiamento positivo rispetto

Dettagli

L'algebra di Boole falso vero livello logico alto livello logico basso Volts

L'algebra di Boole falso vero livello logico alto livello logico basso Volts L algebra di Boole L'algebra di Boole comprende una serie di regole per eseguire operazioni con variabili logiche. Le variabili logiche possono assumere solo due valori. I due possibili stati che possono

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

Polarizzazione, dispersione dei modi di polarizzazione e sua compensazione

Polarizzazione, dispersione dei modi di polarizzazione e sua compensazione UNIVERSITA DEGLI STUDI DI TRIESTE Corso di Laurea Triennale in Ingegneria Elettronica Polarizzazione, dispersione dei modi di polarizzazione e sua compensazione Laureando: Danijel Miletic 28/11/2008 1

Dettagli

Rappresentazione delle Immagini

Rappresentazione delle Immagini Rappresentazione delle Immagini Metodi di rappresentazione Raster: Informazione grafica rappresentata come matrice di pixel Vettoriale: Informazione grafica rappresentata da relazioni matematiche (funzioni

Dettagli

EOLO crp: la nuova frontiera dei datalogger imbarcabili

EOLO crp: la nuova frontiera dei datalogger imbarcabili EOLO crp: la nuova frontiera dei datalogger imbarcabili Luca Pasquini e Stefano Vianelli Eurins srl Abstract Il datalogger imbarcabile EOLO crp è concepito per l impiego in numerosi settori applicativi

Dettagli

Introduzione alla Progettazione per Componenti

Introduzione alla Progettazione per Componenti Introduzione alla Progettazione per Componenti Alessandro Martinelli 6 ottobre 2014 Obiettivo del Corso Il Progetto Software Reale Il Componente Software La Programmazione Ad Oggetti Fondamenti di Informatica

Dettagli

Garanzia e FAQ. Benvenuto! Scopri tutto quello che puoi fare e condividi le tue creazioni su diwo.bq.com

Garanzia e FAQ. Benvenuto! Scopri tutto quello che puoi fare e condividi le tue creazioni su diwo.bq.com Garanzia e FAQ Benvenuto! Scopri tutto quello che puoi fare e condividi le tue creazioni su diwo.bq.com Ciclop 3D Scanner Kit Complimenti! Da questo momento fai parte della community RepRap. Ciclop è un

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

Algoritmi di scheduling

Algoritmi di scheduling Capitolo 2 Algoritmi di scheduling 2.1 Sistemi Real Time In un sistema in tempo reale (real time) il tempo gioca un ruolo essenziale. Le applicazioni di tali sistemi sono molteplici e di larga diffusione.

Dettagli

Software. Definizione, tipologie, progettazione

Software. Definizione, tipologie, progettazione Software Definizione, tipologie, progettazione Definizione di software Dopo l hardware analizziamo l altra componente fondamentale di un sistema di elaborazione. La macchina come insieme di componenti

Dettagli

La propagazione delle onde luminose può essere studiata per mezzo delle equazioni di Maxwell. Tuttavia, nella maggior parte dei casi è possibile

La propagazione delle onde luminose può essere studiata per mezzo delle equazioni di Maxwell. Tuttavia, nella maggior parte dei casi è possibile Elementi di ottica L ottica si occupa dello studio dei percorsi dei raggi luminosi e dei fenomeni legati alla propagazione della luce in generale. Lo studio dell ottica nella fisica moderna si basa sul

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Università degli Studi di Catania Corso di Laurea Magistrale in Informatica Multimedia 2013/14. Cantarella Danilo. OpenCV Android

Università degli Studi di Catania Corso di Laurea Magistrale in Informatica Multimedia 2013/14. Cantarella Danilo. OpenCV Android Università degli Studi di Catania Corso di Laurea Magistrale in Informatica Multimedia 2013/14 Cantarella Danilo Introduzione OpenCV (Open Source Computer Vision Library) è una libreria disponibile per

Dettagli

Modulo DISPOSITIVI DI SICUREZZA E RIVELAZIONE

Modulo DISPOSITIVI DI SICUREZZA E RIVELAZIONE Facoltà di Ingegneria Master in Sicurezza e Protezione Modulo DISPOSITIVI DI SICUREZZA E RIVELAZIONE IMPIANTI DI VIDEOSORVEGLIANZA TVCC Docente Fabio Garzia Ingegneria della Sicurezza w3.uniroma1.it/sicurezza

Dettagli

INDICE. INTRODUZIONE...2 1 Scelta dell ottica...4. 2 Altezza della telecamera...5. 3 Distanza laterale della telecamera dal centro targa...

INDICE. INTRODUZIONE...2 1 Scelta dell ottica...4. 2 Altezza della telecamera...5. 3 Distanza laterale della telecamera dal centro targa... INDICE INTRODUZIONE...2 1 Scelta dell ottica...4 2 Altezza della telecamera...5 3 Distanza laterale della telecamera dal centro targa...6 4 Puntamento dell illuminatore IR...7 5 Installazione...8 6 Parametri

Dettagli

MT2 e MT3: Schede e sistemi di controllo motori passo passo

MT2 e MT3: Schede e sistemi di controllo motori passo passo IPSES S.r.l. Scientific Electronics MT2 e MT3: Schede e sistemi di controllo motori passo passo La gamma più completa per il controllo intelligente dei motori passo passo I nostri sistemi sono la soluzione

Dettagli

Il sistema operativo

Il sistema operativo Il sistema operativo Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Cos è un Sistema Operativo? Per capirlo, immaginiamo inizialmente

Dettagli

Manuale di installazione ed utilizzo del software di Controllo MatrixCTLR

Manuale di installazione ed utilizzo del software di Controllo MatrixCTLR Manuale di installazione ed utilizzo del software di Controllo MatrixCTLR Vi preghiamo di leggere attentamente queste istruzioni prima di installare il software e di lavorare con esso. Ver.3.0.0 1 rev.

Dettagli

Lenti sottili: Definizione

Lenti sottili: Definizione Lenti sottili: Definizione La lente è un sistema ottico costituito da un pezzo di materiale trasparente omogeneo (vetro, policarbonato, quarzo, fluorite,...) limitato da due calotte sferiche (o, più generalmente,

Dettagli

SMS-GPS MANAGER. Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps

SMS-GPS MANAGER. Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps SOFTWARE PER LA GESTIONE DEI TELECONTROLLI SMS-GPS MANAGER Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps Rev.0911 Pag.1 di 8 www.carrideo.it INDICE 1. DESCRIZIONE

Dettagli

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore. I processi Cos è un processo? Un processo è una attività, controllata da un programma, che si svolge su un processore. Il programma è una entità statica che descrive la sequenza di istruzioni che devono

Dettagli

UNIVERSITÀ DEL SALENTO

UNIVERSITÀ DEL SALENTO UNIVERSITÀ DEL SALENTO FACOLTÀ DI INGEGNERIA Corso di Laurea Magistrale in Ingegneria Meccanica TESI DI LAUREA in MECCANICA DEL VEICOLO TECNICHE DI STEREOVISIONE PER IL RILEVAMENTO DI OSTACOLI IN CAMPO

Dettagli

Produzione e collaudo di cartografia tecnica numerica verso i DB topografici

Produzione e collaudo di cartografia tecnica numerica verso i DB topografici Ufficio Cartografico Servizio Cartografia e Gis della Provincia di Brescia Produzione e collaudo di cartografia tecnica numerica verso i DB topografici Ing. Antonio Trebeschi L attività dell Ufficio Cartografico

Dettagli

Informatica - A.A. 2010/11

Informatica - A.A. 2010/11 Ripasso lezione precedente Facoltà di Medicina Veterinaria Corso di laurea in Tutela e benessere animale Corso Integrato: Matematica, Statistica e Informatica Modulo: Informatica Esercizio: Convertire

Dettagli

MESSA IN SCALA DI ALGORITMI DIGITALI

MESSA IN SCALA DI ALGORITMI DIGITALI Ingegneria e Tecnologie dei Sistemi di Controllo Laurea Specialistica in Ingegneria Meccatronica MESSA IN SCALA DI ALGORITMI DIGITALI Cristian Secchi Tel. 0522 522235 e-mail: secchi.cristian@unimore.it

Dettagli

Introduzione ai sistemi operativi

Introduzione ai sistemi operativi Introduzione ai sistemi operativi Che cos è un S.O.? Shell Utente Utente 1 2 Utente N Window Compilatori Assembler Editor.. DB SOFTWARE APPLICATIVO System calls SISTEMA OPERATIVO HARDWARE Funzioni di un

Dettagli

La prove dinamiche sugli edifici II parte strumentazione e analisi dei segnali

La prove dinamiche sugli edifici II parte strumentazione e analisi dei segnali La prove dinamiche sugli edifici II parte strumentazione e analisi dei segnali Luca Facchini e-mail: luca.facchini@unifi.it Introduzione Quali strumenti vengono utilizzati? Le grandezze di interesse nelle

Dettagli

NAVIGAZIONE IN TEMPO REALE DI UN MANIPOLATORE ROBOTICO INDUSTRIALE IN PRESENZA DI OSTACOLI

NAVIGAZIONE IN TEMPO REALE DI UN MANIPOLATORE ROBOTICO INDUSTRIALE IN PRESENZA DI OSTACOLI NAVIGAZIONE IN TEMPO REALE DI UN MANIPOLATORE ROBOTICO INDUSTRIALE IN PRESENZA DI OSTACOLI Francesca Ballan Relatori: Dott. Ing. Tullio Facchinetti Chiar.ma Prof.ssa Antonella Ferrara Correlatori: Chiar.mo

Dettagli

Implementazione di sistemi real time

Implementazione di sistemi real time Implementazione di sistemi real time Automazione 28/10/2015 Vincenzo Suraci STRUTTURA DEL NUCLEO TEMATICO HARDWARE ABSTRACTION LAYER IMPLEMENTAZIONE EVENT-DRIVEN IMPLEMENTAZIONE TIME-DRIVEN SISTEMI DI

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Algoritmo per il rilevamento di targhe

Algoritmo per il rilevamento di targhe Algoritmo per il rilevamento di targhe 19 maggio 2008 Nell affrontare il problema del riconoscimento delle targhe sono stati sviluppati due algoritmi che basano la loro ricerca su criteri differenti. Lo

Dettagli

Rational Unified Process Introduzione

Rational Unified Process Introduzione Rational Unified Process Introduzione G.Raiss - A.Apolloni - 4 maggio 2001 1 Cosa è E un processo di sviluppo definito da Booch, Rumbaugh, Jacobson (autori dell Unified Modeling Language). Il RUP è un

Dettagli

28/05/2009. La luce e le sue illusioni ottiche

28/05/2009. La luce e le sue illusioni ottiche La luce e le sue illusioni ottiche Cosa si intende per raggio luminoso? Immagina di osservare ad una distanza abbastanza elevata una sorgente di luce... il fronte d onda potrà esser approssimato ad un

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Introduzione all analisi dei segnali digitali.

Introduzione all analisi dei segnali digitali. Introduzione all analisi dei segnali digitali. Lezioni per il corso di Laboratorio di Fisica IV Isidoro Ferrante A.A. 2001/2002 1 Segnali analogici Si dice segnale la variazione di una qualsiasi grandezza

Dettagli

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo Prerequisiti Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo L opzione Conto lavoro è disponibile per le versioni Azienda Light e Azienda Pro. Introduzione L opzione Conto lavoro permette

Dettagli

1. Scopo dell esperienza.

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

Dettagli

Evasione. Evasione. Vendite. Magazzini Immagini

Evasione. Evasione. Vendite. Magazzini Immagini Schema di funzionamento del Carico da Ordini Ordine Archivio di Transito Univoco Evasione Codifica Controllo Articoli Generico Evasione Movimenti Documenti Giacenze Testata Scadenze Vendite Dettaglio Ingrosso

Dettagli

STRUMENTAZIONE E MISURE ELETTRICHE. Condizionamento ed acquisizione del segnale

STRUMENTAZIONE E MISURE ELETTRICHE. Condizionamento ed acquisizione del segnale STRUMENTAZIONE E MISURE ELETTRICHE Condizionamento ed acquisizione del segnale Prof. Salvatore Nuccio salvatore.nuccio@unipa.it, tel.: 0916615270 1 Circuito di condizionamento Un sensore/trasduttore (S/T)

Dettagli

CURRICOLO di MATEMATICA Scuola Primaria

CURRICOLO di MATEMATICA Scuola Primaria CURRICOLO di MATEMATICA Scuola Primaria MATEMATICA CLASSE I Indicatori Competenze Contenuti e processi NUMERI Contare oggetti o eventi con la voce in senso progressivo e regressivo Riconoscere e utilizzare

Dettagli

Codifica delle immagini (parte I)

Codifica delle immagini (parte I) Codifica delle immagini (parte I) Prof. Marco Dell Oro December 11, 2013 1 Elementi della codifica Le immagini digitali sono risultato della composizione sugli schermi di una serie di elementi di colore

Dettagli

Sistema di controllo impianto FV FRONIUS IG Signal Card & FRONIUS IG DatCom

Sistema di controllo impianto FV FRONIUS IG Signal Card & FRONIUS IG DatCom Sistema di controllo impianto FV FRONIUS IG Signal Card & FRONIUS IG DatCom IL PIACERE DELLA COMUNICAZIONE KOMMUNIKATIONS- FREUDIG CONTROLLO E VISUALIZZAZIONE DELL IMPIANTO FV. LA FRONIUS IG SIGNAL CARD

Dettagli

Indicando con x i minuti di conversazione effettuati in un mese, con la spesa totale nel mese e con il costo medio al minuto:

Indicando con x i minuti di conversazione effettuati in un mese, con la spesa totale nel mese e con il costo medio al minuto: PROBLEMA 1. Il piano tariffario proposto da un operatore telefonico prevede, per le telefonate all estero, un canone fisso di 10 euro al mese, più 10 centesimi per ogni minuto di conversazione. Indicando

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

4. Proiezioni del piano e dello spazio

4. Proiezioni del piano e dello spazio 4. Proiezioni del piano e dello spazio La visualizzazione di oggetti tridimensionali richiede di ottenere una vista piana dell'oggetto. Questo avviene mediante una sequenza di operazioni. Innanzitutto,

Dettagli

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB.

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB. SISTEMI E RETI Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB. CRITTOGRAFIA La crittografia è una tecnica che si occupa della scrittura segreta in codice o cifrata

Dettagli

Virtualizzazione delle Periferiche. Corso di Sistemi Operativi

Virtualizzazione delle Periferiche. Corso di Sistemi Operativi Virtualizzazione delle Periferiche Corso di Sistemi Operativi Introduzione Una delle funzioni principali di un SO è di controllare tutte le periferiche connesse al PC SO deve: comandare i dispositivi ascoltare

Dettagli

Il campionamento. La digitalizzazione. Teoria e pratica. La rappresentazione digitale delle immagini. La rappresentazione digitale delle immagini

Il campionamento. La digitalizzazione. Teoria e pratica. La rappresentazione digitale delle immagini. La rappresentazione digitale delle immagini ACQUISIZIONE ED ELABORAZIONE DELLE IMMAGINI Teoria e pratica La digitalizzazione La digitalizzazione di oggetti legati a fenomeni di tipo analogico, avviene attraverso due parametri fondamentali: Il numero

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

Lenti sottili/1. Menisco convergente. Menisco divergente. Piano convessa. Piano concava. Biconcava. Biconvessa. G. Costabile

Lenti sottili/1. Menisco convergente. Menisco divergente. Piano convessa. Piano concava. Biconcava. Biconvessa. G. Costabile Lenti sottili/1 La lente è un sistema ottico costituito da un pezzo di materiale trasparente omogeneo (vetro, policarbonato, quarzo, fluorite,...) limitato da due calotte sferiche (o, più generalmente,

Dettagli

Considerazioni sulle specifiche.

Considerazioni sulle specifiche. # SINTESI PER TENTATIVI IN ω PER GLI ASSERVIMENTI # Considerazioni sulle specifiche. Come accennato in precedenza, prima di avviare la prima fase della sintesi di un sistema di asservimento, e cioe la

Dettagli

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1 GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

Tecnologie dell Informazione e della Comunicazione (TIC) IPSIA San Benedetto del Tronto (AP)

Tecnologie dell Informazione e della Comunicazione (TIC) IPSIA San Benedetto del Tronto (AP) Le diverse componenti HARDWARE, pur opportunamente connesse ed alimentate dalla corrette elettrica, non sono in grado, di per sé, di elaborare, trasformare e trasmettere le informazioni. Per il funzionamento

Dettagli

Tipologia dei dati e organizzazione delle informazioni Sistemi di indicizzazione e recupero

Tipologia dei dati e organizzazione delle informazioni Sistemi di indicizzazione e recupero Tipologia dei dati e organizzazione delle informazioni Sistemi di indicizzazione e recupero 2. Approfondimento su immagini e grafica IMMAGINI l immagine digitale è una matrice bidimensionale di numeri,

Dettagli

La Visione Artificiale. La vis ione delle macchine La vis ione umana Acquis izione di immag ine

La Visione Artificiale. La vis ione delle macchine La vis ione umana Acquis izione di immag ine La Visione Artificiale La vis ione delle macchine La vis ione umana Acquis izione di immag ine Copyright Alcune slide sono tratte dal testo: Digital Image Processing Materiale didattico relativo si trova

Dettagli

U 1 . - - . - - Interfaccia. U m

U 1 . - - . - - Interfaccia. U m Introduzione La teoria delle reti logiche tratta problemi connessi con la realizzazione e il funzionamento di reti per l elaborazione dell informazione (il termine logico deriva dalla stretta parentela

Dettagli

MODULO 1. 1.1 Il personal computer. ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale

MODULO 1. 1.1 Il personal computer. ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale MODULO 1 1.1 Il personal computer ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale 1.1 Il personal computer Il PC Hardware e software Classificazioni del software Relazione tra

Dettagli

IL SOFTWARE TIPI DI SOFTWARE. MACCHINE VIRTUALI Vengono definite così perché sono SIMULATE DAL SOFTWARE, UNIFORMANO L ACCESSO SISTEMA OPERATIVO

IL SOFTWARE TIPI DI SOFTWARE. MACCHINE VIRTUALI Vengono definite così perché sono SIMULATE DAL SOFTWARE, UNIFORMANO L ACCESSO SISTEMA OPERATIVO IL SOFTWARE L HARDWARE da solo non è sufficiente a far funzionare un computer Servono dei PROGRAMMI (SOFTWARE) per: o Far interagire, mettere in comunicazione, le varie componenti hardware tra loro o Sfruttare

Dettagli

Guida Tecnica. Obiettivi. Application Note n 008. Tel. +39 0421/241241 Fax +39 0421/241053

Guida Tecnica. Obiettivi. Application Note n 008. Tel. +39 0421/241241 Fax +39 0421/241053 Guida Tecnica Obiettivi - 1 - Cos è un Obiettivo Un obiettivo è un insieme di una o più lenti che rifrangono la luce sull elemento sensibile, permettendo di focalizzare l immagine da riprendere sul sensore

Dettagli