TESI DISPONIBILI PRESSO L.I.R.A. (Laboratory on Intelligent Robotics and Automation) SUPERVISORE DELLE TESI: Dott. Ing Marcello Bonfè e-mail: [email protected], Tel: +39 0532 974839 SEZIONE A: Sistemi Embedded per Robotica e Controllo A.1) Sviluppo firmware per scheda di controllo motori DC del robot mobile SABOT. Il robot in oggetto, la cui meccanica ed elettronica è stata progettata interamente presso il L.I.R.A., è una piattaforma mobile differential-drive, dotata cioè di due ruote attuate in modo indipendente da motori DC, che permettono di modulare velocità lineare e di sterzata del robot. La scheda di controllo motori, denominata SACT, è dotata di un Digital Signal Controller (DSC) di produzione Microchip (famiglia dsPIC30F/33F) ed il suo firmware esegue controlli di corrente, velocità e posizione dei due motori, calcola la stima odometrica della postura del robot tramite encoder incrementali ed interagisce con un sistema master (es. un PC) tramite protocollo specifico (definito SACT Protocol). Punti da sviluppare: Calibrazione automatica della stima odometrica (es. tramite algoritmo UMBmark), implementazione di algoritmi di stima differenti da quello attuale e confronto sperimentale. Implementazione in aritmetica intera o fixed-point di un algoritmo di stima della postura con fusione tra encoder e accelerometri/giroscopi (Filtro di Kalman) e verifiche sperimentali Implementazione del SACT Protocol, attualmente basato su comunicazione RS232, su bus di comunicazione più evoluti, quali CAN o ZigBee (rete wireless a basso consumo). Migrazione dell’attuale firmware su architettura hardware differente (es. ARM Cortex-M3) e/o ridefinizione delle funzionalità di controllo come task di un sistema operativo per sistemi embedded (es. FreeRTOS o Erika). - STRUMENTI HARDWARE: robot mobile SABOT, scheda di controllo SACT oppure FEduino (sistema modulare ispirato da Arduino, ma con processore dsPIC, interamente sviluppata presso L.I.R.A.), sensori e attuatori in dotazione presso L.I.R.A. - STRUMENTI SOFTWARE: Ambiente di sviluppo Microchip MPLAB IDE + compilatore per linguaggio C Microchip MPLAB per dsPIC/PIC24 - RIFERIMENTI: http://sact-unife.googlecode.com (il firmware attuale, vedi il Wiki) http://www.microchip.com/en_us/family/16bit/ (info sui dsPIC) http://www.arduino.cc (ispirazione per la FEduino del L.I.R.A.) http://www.guiott.com/Rino/index.html (robot simile a SABOT, v. info su UMBmark) - IMPEGNO NECESSARIO: MINORE-MEDIO (per sviluppare uno dei primi due punti proposti) o MAGGIORE (per sviluppare uno degli ultimi due punti oppure entrambi i primi due) A.2) Sviluppo firmware per scheda di controllo motori DC del robot manipolatore parallelo RAWBOT. Il robot in oggetto, la cui meccanica ed elettronica è stata progettata interamente presso il L.I.R.A., è un manipolatore parallelo con struttura cinematica di tipo Delta, avente tre gradi di libertà traslazionali nello spazio cartesiano (X-Y-Z). La scheda di controllo motori, basata sulla FEduino citata in precedenza, è dotata di dsPIC33F ed il suo firmware esegue controlli di corrente e posizione di tre motori, calcola le equazioni cinematiche dirette (dagli angoli motore a X-Y-Z) e inverse (da X-Y-Z desiderate agli angoli motore) ed interagisce con un sistema master (es. un PC) tramite una variante del protocollo definito SACT Protocol, citato in precedenza per il SABOT. Punti da sviluppare: Modifica degli algoritmi di generazione delle traiettorie del robot e del controllo motori, al fine di migliorare la fluidità del movimento. Implementazione in aritmetica intera o fixed-point degli algoritmi cinematici (attualmente sviluppati con numeri in virgola mobile, floating-point) e verifiche sperimentali. Sviluppo di algoritmi per la compensazione degli attriti nei riduttori meccanici dei motori, al fine di migliorare le possibilità di moto retrogrado (o backdrivability), caratteristica essenziale per poter comandare il robot tramite teleoperazione (vedi proposta di tesi B.2). - STRUMENTI HARDWARE: robot manipolatore RAWBOT, scheda di controllo basata su FEduino (sistema modulare ispirato da Arduino, ma con processore dsPIC, interamente sviluppata presso L.I.R.A.), sensori e attuatori in dotazione presso L.I.R.A. - STRUMENTI SOFTWARE: Ambiente di sviluppo Microchip MPLAB IDE + compilatore per linguaggio C Microchip MPLAB per dsPIC/PIC24 - RIFERIMENTI: http://www.parallemic.org/Reviews/Review002.html (info su Delta robot) http://sensi.org/~svo/dbot/ (cinematica e simulazioni del Delta robot) http://www.microchip.com/en_us/family/16bit/ (info sui dsPIC) http://www.arduino.cc (ispirazione per la FEduino del L.I.R.A.) - IMPEGNO NECESSARIO: MINORE-MEDIO (per sviluppare uno dei primi due punti proposti) o MAGGIORE (per sviluppare l’ultimo punto oppure entrambi i primi due) A.3) Sviluppo meccanico e firmware di controllo per il self-balancing robot BABOT. Il robot in oggetto, del quale è stato allestito un primo prototipo con meccanica ed elettronica progettata interamente presso il L.I.R.A., è un robot mobile con due ruote attuate, le quali sono l’unico punto di contatto del robot con il terreno. Il robot deve quindi essere in grado di rimanere in equilibrio autonomamente, da cui il termine selfbalancing, tramite il movimento delle ruote stesse ed una stima dell’angolo di inclinazione tramite sensori opportuni (es. accelerometri/giroscopi). La capacità di autobilanciamento di tale tipologia di robot è particolarmente sensibile alla qualità della costruzione meccanica. Punti da sviluppare: Modifica della struttura meccanica del primo prototipo di BABOT e adattamento degli algoritmi di stima dell’orientamento (tramite Filtro di Kalman) e controllo del bilanciamento. Implementazione di un protocollo di comunicazione per l’interazione tra più unità di BABOT (controllo di formazione) o tra BABOT e un sistema master (es. un PC) su rete wireless a basso consumo ZigBee. - STRUMENTI HARDWARE: scheda di controllo basata su FEduino (sistema modulare ispirato da Arduino, ma con processore dsPIC, interamente sviluppata presso L.I.R.A.), meccanica, sensori e attuatori in dotazione presso L.I.R.A. - STRUMENTI SOFTWARE: Ambiente di sviluppo Microchip MPLAB IDE + compilatore per linguaggio C Microchip MPLAB per dsPIC/PIC24 - RIFERIMENTI: http://letsmakerobots.com/node/1505 (un Self-Balancing Robot) http://www.geology.smu.edu/~dpa-www/robo/nbot/ (altro S.-B. Robot) http://www.wa4dsy.net/robot/balancing-robot/analog-balancing-bot http://www.microchip.com/en_us/family/16bit/ (info sui dsPIC) http://www.arduino.cc (ispirazione per la FEduino del L.I.R.A.) - IMPEGNO NECESSARIO: MINORE-MEDIO (per sviluppare uno dei due punti proposti) o MAGGIORE (per sviluppare entrambi i punti) A.4) Sperimentazione di algoritmi di controllo sensorless per motori elettrici (brushless a magneti permanenti). Il controllo della coppia nei motori elettrici brushless richiede la commutazione delle tensioni applicate alle fasi elettriche in modo sincrono con la posizione dell’albero rotante, in quanto su quest’ultimo sono alloggiati magneti permanenti il cui flusso è appunto allineato in base alla posizione del rotore. In molte applicazioni a basso costo, è tuttavia possibile stimare in modo indiretto la posizione del rotore, tramite algoritmi opportuni (es. Filtri di Kalman, Osservatori Sliding Mode), e risparmiare così l’installazione di costosi e delicati sensori di posizione (es. encoder incrementali). I maggiori fornitori (es. Microchip e Texas Instruments) di microcontrollori e Digital Signal Processor (DSP) per controllo motori propongono molte note applicative e firmware dimostrativi per l’implementazione del controllo sensorless, i quali sono però molto sensibili alla taratura e richiedono una estesa verifica sperimentale. Punti da sviluppare: Allestimento e verifica sperimentale di un sistema di controllo sensorless per motori brushless, partendo da esempi di riferimento ed estendendoli in base alle possibili esigenze di laboratorio. - STRUMENTI HARDWARE: Scheda di prototipazione Microchip PICDEM MCLV, Scheda di prototipazione Texas Instruments Piccolo Motor Control Developers Kit, motori in dotazione presso L.I.R.A. - STRUMENTI SOFTWARE: Ambiente di sviluppo Microchip MPLAB IDE + compilatore per linguaggio C Microchip MPLAB per dsPIC/PIC24, oppure Texas Instruments Code Composer Studio. - RIFERIMENTI: http://www.microchip.com (cercare AN1078 e AN1299) http://www.ti.com/lit/wp/sprt528/sprt528.pdf - IMPEGNO NECESSARIO: MEDIO-MAGGIORE A.5) Allestimento di un banco sperimentale e didattico per applicazioni meccatroniche. Le esigenze didattiche in alcuni corsi di Ingegneria Informatica e dell’Automazione, oltre che le esigenze di sperimentazione del laboratorio L.I.R.A., richiedono l’uso di sistemi meccatronici, cioè costituiti da una parte elettromeccanica (es. un motore elettrico con un carico meccanico), una scheda elettronica di controllo e un sistema software di acquisizione dati e monitoraggio. Un esempio di tale sistema meccatronico potrebbe essere costituito dai kit sperimentali QNET di Quanser e dagli Strumenti Virtuali ELVIS di National Instruments. Punti da sviluppare: Replica di un kit sperimentale (es. controllo motore DC) analogo ad una delle proposte di Quanser, sfruttando gli Strumenti Virtuali National Instruments ELVIS, a disposizione presso il Laboratorio di Elettronica della Facoltà di Ingegneria, e schede di prototipazione economiche Microchip Microstick per dsPIC33F/PIC24. - STRUMENTI HARDWARE: Scheda Microchip Microstick, Strumenti Virtual National Instruments Elvis, motori elettrici in dotazione presso L.I.R.A. - STRUMENTI SOFTWARE: Ambiente di sviluppo Microchip MPLAB IDE + compilatore per linguaggio C Microchip MPLAB per dsPIC/PIC24, National Instruments LabView. - RIFERIMENTI: www.microchip.com/microstick www.quanser.com/qnet (esempi di kit sperimentali da replicare) http://www.ni.com/nielvis/ (il sistema National Instruments ELVIS) - IMPEGNO NECESSARIO: MINORE-MEDIO (per sviluppo solo della parte Microchip Microstick), MAGGIORE (includendo ANCHE sviluppo in ambiente LabView) SEZIONE B: Strumenti Software Open-Source per Robotica e Controllo B.1) Sviluppo di applicazioni software basate su Orocos/ROS per navigazione e controllo del robot mobile SABOT. Gli strumenti software open-source Orocos e ROS mettono a disposizione librerie e strumenti di compilazione ed organizzazione dei codici sorgenti, per sviluppare applicazioni distribuite (preferibilmente su sistemi operativi Linux) orientate alla robotica (pianificazione del moto, controllo, visualizzazione 3D, simulazione). Il robot mobile SABOT citato in precedenza (vedi proposta di tesi A.1) è dotato, oltre che della scheda di controllo motori SACT, di un PC di bordo con il quale sono state sviluppate alcune applicazioni Orocos/ROS sperimentali , utilizzando ad esempio il comando via Nintendo Wii Remote (WiiMote) e il sensore Microsoft Kinect per Xbox (per il riconoscimento ostacoli). Punti da sviluppare: Sviluppare e testare algoritmi per la pianificazione di percorsi del robot mobile, basati su mappe degli ambienti già note a priori. Tali algoritmi devono essere implementati come moduli "plugin" da integrare nel "navigation” stack di ROS (http://www.ros.org/wiki/navigation). In questo contesto l’esempio di riferimento è il pacchetto “move_base” (http://www.ros.org/wiki/move_base). Miglioramento dell’implementazione Orocos/ROS del protocollo di comunicazione (detto SACT Protocol) con la scheda di controllo motori del SABOT, in modo da rendere tale implementazione maggiormente standardizzata ed adattabile a differenti applicazioni (es. robot manipolatore RAWBOT, robot self-balancing BABOT, ecc.) Sviluppare una interfaccia grafica (Graphical User Interface, GUI) per la supervisione e la gestione di parametri, specifica per il robot SABOT, sfruttando le funzionalità di base del pacchetto “dynamic_reconfigure” di ROS (http://www.ros.org/wiki/dynamic_reconfigure) e/o, per lo sviluppo di funzionalità più sofisticate, utilizzando le librerie QT di Nokia (http://qt.nokia.com/products/) Sviluppo di algoritmi per la localizzazione del robot e per la mappatura dell’ambiente, utilizzando sensori di visione e/o più sofisticati (piattaforme inerziali, Microsoft Kinect, scanner Laser, ecc). Installazione degli strumenti di base di Orocos e ROS e cross-compilazione delle applicazioni sviluppate per il SABOT con schede di prototipazione con microprocessore ARM-Cortex (tipicamente usato negli smartphone di ultima generazione), quali ad esempio la BeagleBoard (www.beagleboard.org) o la CraneBoard (www.craneboard.org) . - STRUMENTI HARDWARE: il robot mobile SABOT, un qualunque PC oppure schede BeagleBoard e CraneBoard in dotazione presso L.I.R.A. - STRUMENTI SOFTWARE: Linux (preferibilmente distribuzione Ubuntu) e compilatore C/C++ GCC (per applicazioni PC), Angstrom Linux e ambiente di cross-compilazione OpenEmbedded (per BeagleBoard/CraneBoard) - RIFERIMENTI: www.orocos.org www.ros.org (Getting Started Get an Overview / Tutorials, Install) e i link già segnalati - IMPEGNO NECESSARIO: MEDIO (per i primi due punti proposti) MEDIOMAGGIORE (per ciascuno degli altri punti) B.2) Sviluppo di applicazioni software basate su Orocos/ROS per teleoperazione del robot manipolatore parallelo RAWBOT. Anche per il robot di tipo Delta citato in precedenza (vedi proposta di tesi A.2) è possibile utilizzare gli strumenti software opensource Orocos e ROS. In particolare, una applicazione per la quale tali librerie e strumenti per lo sviluppo di applicazioni distribuite sono di grande utilità è la teleoperazione bilaterale, cioè il controllo del robot in oggetto da parte di un utente umano utilizzando un manipolatore simile (tipicamente più piccolo) come master di movimento. Nella teleoperazione bilaterale, inoltre, il master deve trasmettere all’umano una riflessione di forza proporzionale alla forza applicata dal robot teleoperato (detto slave) nel proprio ambiente operativo. Punti da sviluppare: Sviluppare e testare algoritmi di controllo e riflessione di forza per la teleoperazione bilaterale, utlizzando il robot RAWBOT come slave ed il joystick 3D Novint Falcon. Miglioramento dell’implementazione Orocos/ROS del protocollo di comunicazione (detto SACT Protocol) con la scheda di controllo motori del RAWBOT, in modo da rendere tale implementazione maggiormente standardizzata ed adattabile a differenti applicazioni (es. robot manipolatore SABOT, robot self-balancing BABOT, ecc.) Sviluppare una interfaccia grafica (Graphical User Interface, GUI) per la visualizzazione 3D del RAWBOT, utilizzando strumenti software opportuni (es. ROS Rviz (http://www.ros.org/wiki/rviz) oppure Processing (http://processing.org/) Sviluppo di algoritmi per la calibrazione cinematica del RAWBOT (definizione precisa dei parametri geometrici della struttura meccanica per massimizzarne l’accuratezza di posizionamento), utilizzando strumenti di tracking 3D basati su telecamere o laser scanner (esempio: http://reactivision.sourceforge.net/) - STRUMENTI HARDWARE: il robot mobile RAWBOT, un qualunque PC. - STRUMENTI SOFTWARE: Linux (preferibilmente distribuzione Ubuntu) e compilatore C/C++ GCC (per applicazioni PC), - RIFERIMENTI: www.orocos.org www.ros.org (Getting Started Get an Overview / Tutorials, Install) e i link già segnalati - IMPEGNO NECESSARIO: MEDIO (per ciascuno dei punti proposti), MAGGIORE (per lo sviluppo di due a scelta tra i punti proposti) SEZIONE C: Strumenti Software per l’Automazione Industriale C.1) Sviluppo di interfaccia operatore su pannello touch-screen industriale per il comando di un banco PLC / Motion Control. Presso il laboratorio L.I.R.A. è installato un banco completo di PLC Rockwell Automation CompactLogix, azionamenti e motori brushless Rockwell Automation Kinetix 2000, pannello touch-screen Rockwell Automation PanelView (con sistema operativo Windows CE). Tale banco replica una architettura di controllo molto diffusa nel settore dell’Automazione Industriale. In particolare, le problematiche di visualizzazione coerente sul pannello operatore dello stato dei motori e della configurazione dei loro movimenti sono di fondamentale importanza. Punti da sviluppare: Sviluppare un programma PLC per l’esecuzione di movimenti dei motori con differenti traiettorie ed una interfaccia per il pannello operatore in grado di comandare al PLC l’esecuzione dei movimenti stessi e la visualizzazione delle traiettorie. - STRUMENTI HARDWARE: PLC CompactLogix, azionamenti Kinetix 2000, pannello operatore touch-screen PanelView (tutti prodotti Rockwell Automation) . - STRUMENTI SOFTWARE: Rockwell Automation RSLogix5000 (programmazione PLC) e Rockwell Automation FactoryTalk View Studio (programmazione pannello) - RIFERIMENTI: http://ab.rockwellautomation.com/ - IMPEGNO NECESSARIO: MEDIO o MAGGIORE (a seconda del livello di funzionalità grafiche implementate) C.2) Sviluppo di un software la generazione automatica di codice PLC a partire da progetti grafici in linguaggio UML. La traduzione automatica di schemi grafici UML in codice eseguibile è una prassi comune tra gli sviluppatori con linguaggi di alto livello e ad oggetti come C++ o Java. Sebbene il linguaggio UML sia potenzialmente idoneo anche al progetto di software per PLC, non esiste ad oggi uno strumento automatico in grado di tradurre diagrammi UML in codice per PLC.. Punti da sviluppare: Sviluppare (preferibilmente in linguaggio Java) un programma in grado di estrarre le informazioni da un disegno UML, creato con uno degli strumenti specifici più diffusi (es. Eclipse Papyrus, MagicDraw, VisualParadigm, ArgoUML, ecc.), o da una relativa esportazione dati in formato XML (es. XMI, definito dalla organizzazione OMG www.omg.org, http://www.w3.org/TR/scxml/) oppure il formato SCXML, e trasformare queste informazioni in un programma per PLC (es. linguaggi Step7 per PLC Siemens, linguaggi RSLogix5000 per PLC Rockwell) avente funzionalità equivalenti, con particolare riferimento alla logica degli UML State Diagram. - STRUMENTI HARDWARE: un qualunque PC, eventuali prove sperimentali del codice generato con PLC CompactLogix (Rockwell Automation) o PLC S7-300 (Siemens), in dotazione presso il laboratorio L.I.R.A. - STRUMENTI SOFTWARE: Linguaggio Java oppure programmazione PLC - RIFERIMENTI: http://www.cragsystems.co.uk/uml_tutorial/ http://www.ibm.com/developerworks/xml/library/x-wxxm23/ http://www.ibm.com/developerworks/xml/library/x-wxxm24/ Visual C#, basi di http://www.ibm.com/developerworks/xml/library/x-wxxm25/ http://www.imamu.edu.sa/DContent/IT_Topics/Usability%20and%20benefits%20of %20UML%20for%20plant.pdf - IMPEGNO NECESSARIO: MAGGIORE SEZIONE D: Applicazioni interdisciplinari D.1) Sviluppo di un sistema hardware e software per l’emulazione di ecografie (in collaborazione con il Dipartimento di Scienze Chirurgiche, Anestesiologiche e Radiologiche dell’Università di Ferrara). Le esigenze didattiche nelle facoltà di Medicina richiedono di addestrare i medici ad eseguire ecografie. Per effettuare queste ultime, potrebbe essere più pratico non utilizzare veri pazienti, ma piuttosto strumenti software in grado di visualizzare immagini ecografiche acquisite in precedenza (es. prelevate da database clinici) presentandole come se venissero rilevate in tempo reale. In aggiunta al software di visualizzazione citato, un emulatore di ecografo completo richiede anche la realizzazione di una sonda ecografica virtuale, in grado di determinare in base alla propria postura (posizione / orientamento) nello spazio cartesiano quali immagini ecografiche simulate debbano essere mostrate ed in che modo (es. effettuando una opportuna elaborazione o adattamento). Punti da sviluppare: Sviluppare un sistema di tracking 3D a basso costo per una sonda ecografica virtuale, utilizzando ad esempio una coppia di Nintendo Wii Remote (si veda http://www.mtbs3d.com/phpBB/viewtopic.php?f=6&t=4251) oppure software open-source (es. : http://reactivision.sourceforge.net/) e comuni videocamere. - STRUMENTI HARDWARE: Nintendo Wii Remote (WiiMote) e/o webcam/videocamere. - STRUMENTI SOFTWARE: Linguaggio Visual C#, librerie per l’acquisizione dati dal WiiMote (http://wiimotelib.codeplex.com/), - RIFERIMENTI: http://www.medsim.com/ (esempio di emulatore ecografico commerciale, alto costo) http://www.schallware.de/ (altro esempio commerciale) - IMPEGNO NECESSARIO: MEDIO o MAGGIORE (a seconda del livello di funzionalità implementate)