Progettazione di un sistema robotico controllato da Microsoft Kinect

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Progettazione di un sistema robotico controllato da Microsoft Kinect"

Transcript

1 UNIVERSITA POLITECNICA DELLE MARCHE FACOLTA DI INGEGNERIA DII Dipartimento di Ingegneria dell'informazione Corso di Laurea in Ingegneria delle Telecomunicazioni Tesi di Laurea Progettazione di un sistema robotico controllato da Microsoft Kinect Relatore: Prof. Aldo Franco Dragoni Candidato: Paolo Rinaldesi Anno Accademico

2 Dipartimento di Ingegneria dell Informazione Università Politecnica delle Marche Facoltà di Ingegneria Via Brecce Bianche Ancona (AN), Italy 2

3 A mio padre, che mi ha insegnato ad essere tenace. A mia madre, che mi ha insegnato ad avere grinta. A mio fratello, che mi ha insegnato ad essere riflessivo. Alle mie nonne, che mi hanno insegnato che l amore è fatto di piccole cose. 3

4 INDICE 1. INTRODUZIONE 1. FRC (FIRST robotics competition) 6 2. Un robot con componentistica predefinita Le modalità autonomous e teleoperated Il controllo del robot: NI crio FRC-I e Arduino uno LA STRUTTURA DEL SISTEMA DI CONTROLLO 1. Power Distribution Board e Circuit Breaker 120-Amp I controllori di velocità Jaguar e i motori 12VDC Il Digital Sidecar NI crio FRC-I e architettura di sistema Ethernet Arduino e la RobotOpen Control Shield L INTERFACCIA GRAFICA PER IL CONTROLLO DEL ROBOT 1. La Driver Station per crio fornita da NI La Driver Station per Arduino fornita da RobotOpen KINECT: CONTROL LER E MOTION TRACKER 1. Generalità Kinect SDK.46 4

5 3. Lo skeletal Viewer Kinect per FRC IL TEST DI CAMERA VISION 1. RoboRealm Arduino e Roborealm SPECIFICHE RICHIESTE AL SISTEMA E IMPLEMENTAZIONE DEL SOFTWARE 1. Cos è richiesto ai meccanismi del robot. 2. Programmare il compact RIO FRC in C++ con WINDRIVER FRC v Programmare Arduino Ethernet con le librerie di Robot Open Conclusioni e futuri sviluppi Ringraziamenti 68 APPENDICE Rif. Par Codice, KinectStick.java...70 Rif. Par Codice, Arduino Uno sketch 76 5

6 1. INTRODUZIONE La tesi è stata realizzata nell ambito della competizione internazionale della FIRST robotics competition per la progettazione di un sistema robotico controllato da Microsoft Kinect. Tuttavia, si richiede che tale robot possa essere oltre che controllabile, anche capace di operare autonomamente. Il sistema deve assolvere a diversi compiti: raccogliere un disco, caricarlo in un congegno di shooting e lanciarlo su di una parete sulla quale sono poste delle fessure; il robot dovrà inoltre essere in grado di arrampicarsi su una delle piramidi poste al centro del campo di gioco. La tesi è stata redatta sulla base del lavoro che il Team Leonardo sta svolgendo in merito alla competizione FRC del 2013, in collaborazione con il Laboratorio di Intelligenza Artificiale e Sistemi Real Time dell Università Politecnica delle Marche FRC: The FIRST robotics competition La FIRST Robotics Competition è una competizione internazionale di robotica fondata da FIRST (For Inspiration and Recognition of Science and Technology), un organizzazione americana il cui obbiettivo e promuovere la robotica tra le nuove generazioni, coinvolgendo studenti di scuola superiore, tutors universitari organizzazioni e aziende. Ogni anno, teams di studenti partecipano costruendo robots di 54 kg capaci di eseguire un particolare compito che varia di anno in anno. All'inizio di gennaio, ai teams viene fornito un kit standard di componenti ed i dettagli del gioco: in sei settimane i Teams, devono essere capaci di costruire un robot competitivo in grado di operare attraverso un sistema di controllo remoto, ma anche autonomamente. Nel 2010, il 19 anno di concorso, hanno partecipato le squadre con circa studenti provenienti da Australia, Brasile, Canada, Turchia, Olanda, Israele, Stati Uniti e Regno Unito. Nel 2011, squadre hanno partecipato a concorsi negli Stati Uniti, Canada, Israele e Messico. FIRST è stata fondata nel 1989 dall'impenditore Dean Kamen e da Woodie Flowers, professore di fisica al MIT; Dean Kamen ha più volte dichiarato il suo orgoglio per aver creato FIRST, sicuro che i partecipanti che finora hanno preso parte a tali competizioni, saranno gli artefici di progressi significativi i n campo tecnologico negli anni a venire. Il primo torneo FRC si tenne nel 1992 in una palestra del liceo di New Hampshire. Questa prima gara fu su piccola scala, di dimensioni simili ai FIRST Tech Challenge di oggi e ai tornei di Vex 6

7 Robotics Competition. Nel suo primo anno, i robot erano basati su connessione cablata per ricevere i dati dai driver, l'anno successivo, si è rapidamente passati ad un sistema wireless. Dal 1996 la FIRST competition è seguita dalla ESPN, la più famosa rete televisiva dedicata allo sport. La Diretta è attualmente fornita da NASA TV, disponibile in streaming su internet, TVRO, DirecTV e Dish Network, oggi gli eventi vengono seguiti anche su FOX Channel. Nel corso degli anni, FIRTS ha attirato la sponsorizzazione di grandi aziende come Boeing, Microsoft, National Instruments, Google, Texas Instruments, e United Technologies. Il principale controller utilizzato dai robots FRC è il CompactRIO prodotto da National Instruments. Dal 2012 gioco sarà caratterizzato anche dall'uso di Microsoft Kinects Un robot con componentistica predefinita La FIRST robotics competition sfida i team partecipanti a risolvere problematiche in un periodo di tempo di sei settimane, attraverso l'utilizzo di uno kit standard con componentistica e regole predefinite. I team quindi, costruiscono i robot sulla base della componentistica assegnata e gareggiano in giochi pensati da una giuria di ingegneri della FIRST e altre figure professionali. La componentistica che viene fornita e' data da: - un Kickoff Kit La componentistica prevista viene inviata direttamente ai team i cui dettagli per ogni singolo componente sono descritti nella relativa ''Checklist''. - un Virtual Kit Questo tipo di componentistica viene fornita ai team direttamente dal fornitoreo produttore, tramite download o tramite ordine personalizzato. Esso comprende codici relativi a speciali facilitazioni e software dedicati messi a disposizione per la realizzazione del robot. - un FIRST Choice E' un menu di componentistica disponibile che fa parte del kit of parts; viene fornito gratuitamente ai soli team regolarmente registrati alle competizioni. Le restrizioni di dimensione e peso: Per le competizioni FRC del 2013 i robot dovranno rispettare dei vincoli in merito alle dimensioni e al peso: - Il perimetro della base del robot comprensivo delle protezioni, non potra eccedere di cm (122 inches); 7

8 - Il robot con tutte le sue eventuali appendici (estese e retratte) dovra essere contenuto in un cilidro ideale il cui diametro e di cm (45 inches) e alto cm (84 inches); - Il peso del robot ad esclusone della batteria e delle protezioni laterali non potra superare i 54,4 kg (120 pounds). Le restrizioni dei motori e degli attuatori: I robot hanno inoltre delle restrizioni relativamente all utilizzo del tipo e del numero di motori. I motori che possono essere utilizzabili durante la competizione sono i seguenti: Motor Name CIM BaneBots Part Numbers Available FR M4-R AM A PM25R-44F-1005 PM25R-45F-1004 PM25R-45F-1003 PMR25R-45F-1003 PMR25R-44F-1005 M7-RS M7-RS M5-RS M5-RS B M5-RS M5-RS M3-RS M3-RS AndyMark 9015 am Denso Throttle Control AE VEX BAG and/or mini-cim AndyMark PG am-2161 am Window Motors Various from FIRST Choice 2 Max Qty Allowed VEX 2-wire Motor Electrical solenoid actuators, no greater than 1 in. stroke and rated electrical Unlimited input power no greater than 10 watts (W) continuous duty at 12 volts (VDC) Drive motors or fans that are part of a motor controller or COTS computing Unlimited device Fans included in the 2013 Kickoff Kit, FIRST Choice, or as a Talon motor Unlimited controller accessory Tabella 1: Legal Motors 6 4 8

9 1.3. Le modalita autonomous e teleoperated Un match ha una durata di due minuti e 15 secondi, in particolar modo per i primi 15 secondi i robot devono essere in grado di operare autonomamente al fine di assolvere al compito richiesto. I robot in tale fase, si avvanlgono normalmente di strumenti quali sensori di prossimita o tecnologie di camera vision che attraverso il riconoscimento di forme geometriche e colori riescono ad identificare l oggetto o l obbiettivo per portare a termine il compito richiesto. In modalita controllata, il robot e connesso in WIFI ad un computer remoto attraverso una rete LAN ed e possibile governarne il movimento utilizzando dispositivi quali Joystick, Microsoft Kinect o Smartphones. Nelle successive trattazioni focalizzerò particolare attenzione al controllo motorio attraverso Microsoft Kinect grazie alla quale posso ottenere la rappresentazione scheletrica (skeletal) della persona e il realativo tracking umano Il controllo del robot: NI crio FRC-I e Arduino uno Affronteró in questa tesi la problematica del controllo del robot utilizzando due diversi dispositivi: il compact RIO FRC-I di National Instruments e Arduino Uno. Pur essendo sistemi dalle capacitá di elaborazione, specifiche e costo completamente differenti vedremo tuttavia, come sia possibile avere attraverso l utilizzo di Arduino Uno dei risultati relativamente simili. - Il CompactRIO FRC-I è un sistema embedded prodotto da National Instruments per il controllo avanzato e l acquisizione dati, è una piattaforma progettata per applicazioni che richiedono alte prestazioni ed affidabilità. CompactRIO presenta un architettura aperta ed è un sistema compatto, robusto e flessibile; si possono integrare hardware commerciali e moduli proprietari per realizzare velocemente sistemi personalizzati. Combina un processore per elaborazioni Real-Time a un chip FPGA ad alte prestazioni. Sono inoltre presenti dei moduli di I/O con relativo condizionamento di segnale per una connessione diretta ai sensori e agl attuatori, ciascun modulo di I/O è connesso con il chip FPGA. 9

10 - Arduino è un framework open source che permette la prototipazione rapida di sistemi robotici. È composto da una piattaforma hardware per il physical computing sviluppata presso l Interaction Design Institute fondato da Olivetti e Telecom Italia a Ivrea. La scheda si basa su un circuito stampato che integra un microcontrollore con pin connessi alle porte I/O, un regolatore di tensione e quando necessario un interfaccia USB che permette la comunicazione con il computer. A questo hardware viene affiancato un ambiente di sviluppo integrato (IDE) multipiattaforma (per Linux, Apple Macintosh e Windows). 10

11 2. LA STRUTTURA DEL SISTEMA DI CONTROLLO L obbiettivo di questo capitolo è quello di fornire una breve panoramica di quella che è la componentistica hardware del sistema di controllo per la FIRST robotics competition del Ogni componente contiene una breve descrizione delle sue specifiche e della sua funzione Power Distribution Board e Circuit Breaker 120-Amp Figura 1: Power Distribution Board. La scheda di alimentazione è stata progettata per distribuire l alimentazione da una batteria 12VDC ai vari componenti del robot attraverso degli auto-resetting circuit breakers, La PDB (Power Distribution Board) fornisce 8 coppie di uscite a 40A di corrente continua e 12 uscite a 30A. Viene inoltre fornita un alimentazione: - a 24V per l alimentazione del CompactRIO - a 12V per l alimentazione del router - a 5V per l alimentazione di una webcam, di una Axis camera o di un Arduino. Figura 2: Circuit Breaker Il Circuit Breaker 120-Amp ha due funzioni principali: il primo come interruttore per l alimentazione del robot, il secondo come dispositivo di 11

12 protezione della componentistica e del cablaggio in downstream. Quindi tale interruttore da 120A è direttamente collegato al morsetto del polo positivo della batteria del robot e alla scheda di distribuzione dell alimentazione I controllori di velocità Jaguar e i motori 12 VDC Il Jaguar Motor Controller: Figura 3: Jaguar Motor Controller and DC Motor Il Jaguar Motor Controller della VEX Robotics, ci permette di controllare la potenza da erogare al motore brushed da 12V che vi è collegato fino a 40A. Può essere controllato usando l interfaccia PWM o il bus CAN (Controller Area Network); è quindi collegato al sistema di controllo attraverso una di queste due interfacce e alla Power Distribution Board. Il Jaguar Motor Controller utilizza un microcontrollore LM3S2616 che con una architettura 32-bit ARM Cortex, trova in genere applicazione nel settore industriale, tra cui il monitoraggio remoto, dispositivi di test e misura, applicazioni di rete e automazione. Le specifiche del DC motor: - Le specifiche fisiche: - Dimensione: 2.5 pollici di diametro; 4,34 pollici di lunghezza - Albero di uscita Dimensioni: 0,313 + / - 0,0004, con due millimetri cava - Peso: 2,82 lb 12

13 - Le specifiche delle prestazioni: - Tensione: 12 volt DC - N. RPM: (+ / - 10%) - Gratis attuale: 2.7 ampere - Potenza massima: 337 Watt (a 2655 giri al minuto, 172 oz-in, e 68 A) - Coppia max: 2.42 N-m, o 343,4 once-in - Corrente max: 133 ampere 2.3. Il Digital Sidecar Figura 4: Il Digital Sidecar Il Digital Sidecar (DS) è una breakout board, cioè un hardware che consente di accedere e lavorare in modo semplice e comodo sui pin dei piccoli microchip. Esso converte l I/O digitale dal modulo NI 9403 o dal Robotopen control shield in una forma più facilmente utilizzabile per FRC. Il DS in particolare fornisce: 10 uscite PWM con servo jumper da 6V per controllare i motor controllers e i servo motori; 8 coppie di uscite a relè per il controllo degli Spike HBridge, 14 I/O digitali per general purpose (GPIO), cioè dispositivi elettronici che non sono dedicati ad un solo possibile utilizzo. Un header a 6 pin per le connessioni I²C (Inter-Integrated Circuit, un sistema di comunicazione seriale bifilare utilizzato tra circuiti integrati) 13

14 Alimentatore buck 5V/3 per GPIO; La tipologia buck degli alimentatori switching è quella più simile ai tradizionali alimentatori lineari. Con esi, infatti, è possibile ottenere una tensione di uscita minore di quella applicata in ingresso. La potenza è fornita da 12V nominali NI crio FRC-I e architettura di sistema Il Compact RIO Figura 5: Il Compact RIO National Instruments CompactRIO è sistema industriale di controllo e acquisizione dati con I/O riconfigurabile (RIO), tecnologia FPGA per elevate prestazioni e customizzazione. Il crio è dato da: - Un processore - Una FPGA rinconfigurabile (per applicazioni stand-alone integrate o distribuite) - Moduli di I/O industriali (per la connessione diretta a sensori e attuatori) crio rappresenta un architettura low-cost con facile accesso alle risorse hardware di basso livello. Quindi uno degli aspetti più importanti di questo sistema è la modularità: Il crio consiste di una unità centrale e di uno chassis dove possono essere posti fino a 8 moduli di I/O, estendendo in questo modo la funzionalità del 14

15 dispositivo. Il crio preso in esame in questa tesi è il crio FRC I (usato per le competizioni FRC dal 2009 al 2011) e in particolar modo ha le caratteristiche tecniche del crio 9072/9074. Usando un processore che lavora con una frequenza di 266 MHz il sistema è in grado di provvedere a un bilanciamento che vede il compromesso tra basso consumo energetico e buona capacità di elaborazione. Il crio si interfaccia al sistema informatico attraverso Ethernet BaseT 10/100 e con una porta seriale RS232 per dispositivi esterni. Qui di seguito riporto le principali differenze delle specifiche tra un crio FRC I e un crio FRC II: NEW FRC II (2012) OLD FRC I ( ) # slots 4 6 (+2 unusable) RS Ethernet 1 2 Dimensions-chassis 7 (l) x 3.5 (w) x 2.5 (h) 11.4 (l) x 3.5 (w) x 2.5 (h) Weight-chassis 1.42 lbs 2.05 lbs Operating Voltage 9-30v 19-30v Power 15W 20W System Memory 256MB 128MB Storage Memory 512MB 256MB Processor Freescale MPC5125 Freescale MPC5200 -data/instr cache 32KB/32KB 16KB/16KB FPGA Spartan-6 LX45 Spartan RAM 2088 Kb 720 Kb -logic cells 43,661 46,080 -multipliers IO transfer rate 1 Gb/s 622 Mb/s Tabella 2: differenze delle versionio crio Il crio: una architettura aperta low cost Nella tecnologia embedded i progettisti normalmente lavorano con sistemi in cui le FPGA sono sempre affiancate da microprocessori (MPU) e microcontrollori (MCU). Le FPGA sono state quindi impiegate per estendere la funzionalità di I/O dei microcontrollori e interfacciali a molteplici sottosistemi e alle diverse porte di comunicazione. Negli ultimi anni è stata usata sempre più spesso la combinazione di MCU e MPC per migliorare la flessibilità dell elaborazione nei sistemi integrati nei più svariati campi tecnologici dove spesso è richiesto il controllo avanzato e il 15

16 monitoraggio. Quindi le FPGA oggi rappresentano la soluzione più economica per ridurre il carico di elaborazione degli MPU e per essere una opzione più flessibile al DSP e agli MCU distribuiti. Come risultato abbiamo architetture ibride che combinano i vantaggi dell implementazione della logica hardware su circuito (data dalle FPGA) come la velocità, l affidabilità e la flessibilità. Tuttavia, la tecnologia FPGA non ha l ecosistema driver e code/ip che le architetture dei microprocessori e i sistemi operativi hanno: dobbiamo infatti considerare che i microprocessori affiancati da un sistema operativo sono le basi per strutture di file e di comunicazione per attività come la memorizzazione dei dati su disco. Figura 6: Architettura RIO Il core del RIO ha un meccanismo interno di trasferimento dei dati, per passare al processore integrato le informazioni per l analisi in tempo reale, il postprocessing, il data logging o le comunicazioni di rete a un host computer. E inoltre previsto un accesso diretto per i circuiti di input/output di ogni modulo di I/O usando LabVIEW FPGA. Ogni Modulo di I/O ha già integrato tutti quegli strumenti per la connettività, il condizionamento del segnale e i circuiti per la conversone del segnale stesso (ADC o DAC). Figura 7: L architettura RIO su tre livelli. 16

17 I moduli di I/O Prenderò ora in analisi i seguenti moduli di I/O la cui applicazione è riportata nelle successive trattazioni. - NI 9403 Figura 8: NI 9403 E un modulo di input/output digitale bidirezionale a 32 canali, ogni canale è compatibile con segnali 5V/TTL, è caratterizzato da un range di protezione di ±30 V di overvoltage e può fornire fino a 2 ma di corrente per canale. L utilizzo di questo modulo è volto a implementare contatori personalizzati e/o temporizzatori, ma anche per la generazione di impulsi e la configurazione direzionale di ciascuna linea digitale. Figura 9: Architettura NI

18 - NI 9201 Figura 8: NI 9201 E un modulo di input/output analogico, esso infatti riserva 8 canali analogici con un rate signal di massima aggregazione a 500 ks/s. I segnali in input vengono scansionati, bafferizzati, condizionati, e campionati con conversione ADC a 12 bit. Questo modulo può essere utilizzato per il condizionamento di segnali ad alto voltaggio (±60 V), termocoppie, RTD, accellerometri, microfoni, estensimetri e ingressi di corrente. Figura 9: Schema a Blocchi dell NI 9201 Figura 10: Architettura NI

19 - NI 9862 Figura 11: NI 9862 E un modulo ad una sola porta per la connessione CAN (Controller Area Network) ad alta velocità, appunto per lo sviluppo di applicazioni CAN utilizzando NI LabVIEW, NI LabWindows/CVI, and ANSI C/C++. Specifiche Tecniche: - Phisical Layer: high speed - Transceivers: Philips TJA Min Bound Rate: 40 kbits/s - Max Bound Rate: 1 Mbit/s Un CAN bus è uno standard seriale per bus di campo (principalmente in ambiente automotive), di tipo multicast, introdotto negli anni ottanta dalla Robert Bosch GmbH, per collegare diverse unità di controllo elettronico (ECU). E stato progettato per permettere ai microcontrollori e ai dispositivi di comunicare tra loro su di uno stesso mezzo di comunicazione che non preveda l utilizzo di un host computer. Il CAN bus è un bus di comunicazione basato sui messaggi, progettato specificatamente per applicazioni di automotive, ma anche nel settore dell automazione industriale e medico. I dispositivi che normalmente sono connessi su questo tipo di bus sono sensori, attuatori e controllori di dispositivi. Un CAN bus consiste di due o più nodi cablati tra loro. I pin CAN_H e CAN_L di ciascun nodo sono collegati al bus principale tramite uno stub. La coppia di linee CAN_H e CAN_L costituiscono quindi una linea di trasmissione. Se la linea di trasmissione non è adattata, si può avere riflessione che può causare degli errori di comunicazione. La ISO prevede l adattamento con un carico da 120 Ω. 19

20 Figura 12: sistema di comunicazione CAN La tecnologia FPGA Un dispositivo FPGA è un chip in cui è implementato da un array. Nell array sono presenti dei blocchi logici configurabili e dei canali di routing. Ogni singolo blocco è costituito da una LUT (Look Up Table) con n porte e da un flipflop; quindi l implementazione su circuito digitale avviene collegando i blocchi logici sul dispositivo: i dati in bitstream programmeranno alcuni switch sul dispositivo. L output dei blocchi logici quindi si va a integrare con altri switch. La tabella per il routing statico è programmata in codice binario. Figura 13: Schema di funzionamento di un blocco logico Le FPGA quindi, a seconda di come viene progettato il routing possono gestire parallelamente gli input di più operazioni di elaborazione senza che queste competano per l attribuzione delle risorse del dispositivo. Ad ogni singolo task verrà quindi assegnata e dedicata una particolare sezione del chip. Questa potrà quindi operare autonomamente senza influenzare ogni altro blocco logico. 20

21 Figura 14: La struttura di una FPGA Il crio FRC I usa come FPGA una spartan prodotta dalla xilinx. La Spartan-3 presenta un architettura data da cinque principali componenti: - Blocchi logici configurabili (CLB) che contengono una RAM basata su Look-Up Tables (LUT) per implementare la logica e gli elementi di storage che possono essere utilizzati come flip-flop o latch. I CLB possono essere programmati per eseguire una varietà di funzioni logiche e per memorizzare i dati. - Blocchi di Input / Output (IOBs) servono a controllare il flusso dei dati tra i pin di I/O e la logica interna del dispositivo. Ogni IOB supporta uno scambio bidirezionale di flusso dati, più 3 operazioni di stato. Sono disponibili ventisei diversi standard di segnale, tra cui otto con standard differenziale ad alta prestazione. Sono inoltre inclusi dei registri Double Data-Rate (DDR). L'impedenza Digitally Controlled (DCI) fornisce automaticamente terminazioni on-chip, semplificando la progettazione della scheda. - Blocco RAM fornisce memorizzazione dei dati a 18-kbit su blocchi dualport. - Moltiplicatori prendono in input due blocchi di numeri binari a 18 bit e ne calcolano il prodotto. - Digital Clock Manager (DCM) fornisce blocchi per l auto autocalibrazione, soluzioni digitali per la distribuzione, i ritardi, le moltiplicazioni/divisioni, ed i phase shifting dei segnali di clock. 21

22 Real-Time Controller Un sistema real-time è un sistema specializzato per il supporto di hardware e applicazioni che sono in grado di fornire risposte in tempo reale. Questi sistemi vengono utilizzati tipicamente in ambito industriale (controllo di processo, pilotaggio di robot, trasferimento dati nelle telecomunicazioni) o comunque dove sia necessario ottenere una risposta dal sistema entro un tempo prefissato. Oltre alla precisione di calcolo dei risultati, un sistema in tempo reale deve prendersi cura anche del tempo con cui viene fornito tale risultato; quindi quei risultati forniti oltre un certo limite di tempo - anche se corretti - non avranno alcun valore. Figura 15: il ciclo di controllo della risposta a livello hardware del crio Il controller in tempo reale di crio contiene un processore Freescale MPC5200: 32-bit Processor che esegue LabVIEW Real-Time, esso offre: - Controllo multirate - Tracciamento delle esecuzioni - Onboard data logging e comunicazione con le periferiche In particolar modo il Freescale MPC5200 è utilizzato nel campo dell automazione per il processing-intensive. Offre 266 Mhz con una doppia precisione Floating Point Unit (FPU), è stato aggiunto un coprocessore matematico per le operazioni in virgola mobile in modo da non avere più numeri interi, dando così al sistema più velocità e più accuratezza, vi è una Memory Unit hardware Management (MMU) per commutazione task rapida, è dotato di I/O e opera a un watt. Rappresenta Una scelta comune per i sistemi operativi a tempo reale (RTOS) e per le schede di Sviluppo con Board Support Package (BSP). 22

23 Figura 16: il processore Freescale MPC5200 Specifiche Tecniche: 603e series PowerPC Core 16kB internal SDRAM 16K Instruction and 16K Data Caches 6 Peripheral Serial Controllers Configurable as UART, AC97 & CODEC Interfaces, I2S Dual 32 Entry MMUs 8 Counter/Timers High Speed DDR SDRAM interface 256Mbyte addressing range, 32- bit wide Flexible multi-function external bus PCI master v2.2, ATA v4 compatibility BestComm I/O subsystem Support for PSC, Ethernet, USB 1.1, PCI, ATA, I2C, AC97 & CODEC Interfaces, SPI, CAN Superior I/O for Industrial Automation and Automotive Applications CAN, Serial, USB, J1850 (MOST on Total5200 Development Board) 23

24 Il bus di comunicazione I²C I²C è l acronimo di Inter Integrated Circuit ed è un sistema di comunicazione seriale bifilare utilizzato tra circuiti integrati. Il classico bus I²C è composto da almeno un master ed uno slave. La situazione più frequente vede un singolo master e più slave; possono tuttavia essere usate architetture multimaster e multislave in sistemi più complessi. Il bus è stato sviluppato dalla Philips nel 1982 nel 1992 è stata rilasciata la prima versione del protocollo che ha subìto diversi aggiornamenti ed ha generato bus simili, uno dei quali (SMBUS) per motivi squisitamente commerciali, di brevetto Intel, nel Il protocollo hardware dell'i 2 C richiede due linee seriali di comunicazione: - SDA (Serial DAta line) per i dati - SCL (Serial Clock Line) per il clock (per la presenza di questo segnale l'i 2 C è un bus sincrono) Va aggiunta una connessione di riferimento detta, talvolta impropriamente, GND e una linea di alimentazione V dd a cui sono connessi i resistori di pullup che può anche non essere condivisa da tutti i dispositivi (le tensioni tipiche usate sono +5 V o +3,3 V anche se sono ammesse tensioni più basse o più alte). L I²C ha 7-bit o 10-bit di indirizzo (a seconda del dispositivo utilizzato), una velocità di bus di 100 kbit/s in modalità standard e 10 kbit/s in modalità a bassa velocità. Scrive a 1 Byte per transazione mentre in lettura a 1, 2, 3, o 4 byte per ogni transazione. Figura 17: Esempio di dispositivi collegati mediante I 2 C bus Real-Time Control Application Design I sistemi di controllo e di acquisizione riconfigurabili, in genere contengono quattro componenti principali: - Il RIO FPGA core application per input/output, comunicazioni e controllo; 24

25 - Time-critical loop per il controllo in virgola mobile, l elaborazione del segnale, l'analisi e il point-by-point decision making; - Normal-priority loop per l embedded data logging, il pannello d'interfaccia remota Web e Comunicazione Ethernet/seriale; - Networked host PC per l'interfaccia grafica d utente, lo storico del data logging, e il postprocessing. A seconda dei requisiti dell'applicazione, si può decidere di applicare una o tutte questi componenti. Figura 18: Real-Time Control Application Design Inoltre crio può anche essere utilizzato con VxWorks RTOS, il sitema operativo prodotto dalla Wind River Systems. Il cui microkernel fornisce solo le funzionalità più necessarie. Quelle funzionalità opzionali, come ad esempio la rete, il file system e la grafica sono messe a disposizione da librerie fuori dal kernel. In questo modo abbiamo un kernel più piccolo, il che per un sistema embedded è un aspetto importante. Il WIND microkernel ha le seguenti caratteristiche fondamentali: - Handles: il Wind microkernel è progettato per gli handels e thread (Pthread API). - Scheduling: due metodi di pianificazione differenit, round-robin con 256 livelli di priorità con e senza diritto di prelazione. E 'disponibile anche il POSIX API per i threads in tempo reale (SCHED_FIFO, SCHED_RR, SCHED_OTHER). - Interruption: WIND microkernel è stato progettato per gestire le interruzioni. Le scadenze devono rispettare limiti dell hard real-time. Si può infatti pensare ad un sistema real-time come ad un sistema che, dato un insieme di task, ognuno con i propri vincoli temporali 25

26 (deadline del task -esimo), è in grado di minimizzare la funzione di costo definita come: dove è la funzione di costo del task -esimo definita come: se il task -esimo è di tipo hard real-time, o come: se il task -esimo è di tipo soft real-time, dove si è indicato con una funzione monotona crescente all'aumentare del tempo che scorre. - Handles Communication: WIND microkernel dà la possibilità di condividere la memoria e scambiare di messaggi tra le diverse attività. Un altro modo per comunicare è il pipe, un meccanismo che funziona con FIFO che permette la condivisione di dati attraverso un file speciale chiamato appunto pipe. Per proteggere i dati condivisi, VxWorks utilizza mutex con un protocollo di priorità ereditario. - Fuori del kernel: librerie che non utilizzate in fase di progettazione possono essere occultate. La gestione della memoria avviene su due livelli di controllo: controllo di cache pagina per pagina e con VxVMI che richiede una MMU. Figura 19: Struttura di VxWorks RTO 26

27 2.5. Ethernet Arduino e la RobotOpen Control Shield Il microcontrollore Atmel ATmega328 L'Arduino Uno é una scheda basata sul microcontrollore Atmel ATmega328. L ATmega328 è un microcontrollore CMOS a 8-bit basato sull architettura AVR enhanced RISC. Attraverso l esecuzione di istruzioni in un singolo ciclo di clock, la Atmega328 raggiunge una capacità di trasmissione che si avvicina a 1 MIPS per Mhz permettendo in fase di progettazione di ottimizzare il consumo di energia in funzione della velocità di elaborazione. Figura 20: Schema a blocchi dell Atmega328 Il core AVR combina un set di istruzioni con 32 registri di lavoro General Purpose. Tutti i 32 registri sono direttamente collegati alla ALU (Arithmetic Logic Unit), consentendo in questo modo l accesso a due registri indipendenti l accesso a una singola istruzione che è eseguita in un ciclo di clock. Come risultato si ha un architettura che è più code efficient oltre a raggiungere una 27

28 velocità fino a dieci volte più veloce rispetto a i tradizionali microcontrollori CISC. L AVR CPU Core e la sua architettura La funzione principale del core CPU è quello di garantire la corretta esecuzione del programma. La CPU deve quindi essere in grado di accedere a memorie, eseguire un calcolo, controllare le periferiche e gestire le interruzioni. Al fine di massimizzare le prestazioni e il parallelismo, l'avr utilizza un architettura Harvard con memorie e bus separati per la programmazione e i dati. Le istruzioni nella memoria di programma sono eseguite con un pipelining a livello unico. Mentre una istruzione viene eseguita, l'istruzione successiva è pre-caricata dalla memoria di programma. In questo modo si da la possibilità alle istruzioni di essere eseguite ad ogni ciclo di clock. Il programma di memoria è un sistema riprogrammabile su memoria flash. L accesso rapido al Register File contiene 32 x 8-bit di registri di lavoro di General Purpose con un tempo di clock per l accesso a ciclo unico. Questo permette appunto, un operazione single-cycle dell ALU. Nel funzionamento di una tipica ALU, vi sono due operandi in uscita dal file registro, l'operazione viene eseguita, e il risultato viene rimemorizzato nel file di registri per ogni singolo ciclo di clock. La ALU supporta operazioni aritmetiche e logiche tra i registri o tra una costante e un registro. Singole operazioni di registro, possono essere anche eseguite nelle ALU. Dopo un'operazione aritmetica, il registro di stato viene aggiornato per riportare le informazioni sul risultato ottenuto. Il Program Flash memory space è diviso in due sezioni, la sezione relativa al Boot Program e la sezione di Application Program. Entrambe queste sezioni hanno dedicati dei Lock bit per la scrittura e la lettura/scrittura. L istruzione SPM che scrive nell Application Flash memory deve risiedere nella sezione del Boot Program. Durante le interruzioni e le chiamate di routine, l'indirizzo di ritorno del program counter (PC) viene memorizzato nello Stack. Lo Stack è allocato nella SRAM, e di conseguenza lo dimensione della Stack è limitata solo dalla dimensione totale della SRAM e dal suo utilizzo. Lo spazio di memoria per l I/O contiene 64 indirizzi per le funzioni della CPU come ad esempio Registri di Controllo, SPI e altre funzioni di I/O. Figura 21: architettura L AVR CPU Core e la sua 28

29 Arduino UNO rev. 3 e Arduino Ethernet Rev3 without PoE Figura 22: Arduino UNO e Arduino Ethernet Arduino UNO ha 14 Ingressi/uscite digitali (6 delle quali con PWM), 6 ingressi analogici, un cristallo a 16 MHz, una porta USB, una presa di alimentazione, una connessione ICSP, e un bottone di reset. Dispone di tutto il necessario per gestire il microcontrollore a bordo; per utilizzarla basta connettere la scheda al computer con un cavo USB o alimentarla con un alimentatore (max 12V) o delle batterie esterne. Le caratteristiche introdotte nella versione R3 sono: ATmega16U2 invece del 8U2 come convertitore USB-seriale. piedinatura 1.0: sono stati aggiunti i pin SDA e SCL per la comunicazione TWI vicino al pin AREF e vicino al pin RESET, altri sono stati collocati altri due nuovi pin, il pin IOREF che consente agli shield di adattarsi alla tensione fornita dalla scheda. Circuito di RESET più forte. Microcontrollore: Tensione di funzionamento: ATmega328 5V Tensione di Alimentazione (raccomandata): 7-12V Massima Tensione supportata (non raccomandata): I/O digitali: ingressi analogici: 6 Corrente in uscita per I/O Pin: Corrente in uscita per 3.3V Pin: Memoria Flash: SRAM: EEPROM: Velocità di clock: 20V 14 (6 dei quali con uscita PWM) 40 ma 50 ma 32 KB (ATmega328) di cui 0.5 KB usata bootloader 2 KB (ATmega328) 1 KB (ATmega328) 16 MHz Tabella 3: Specifiche Tecniche Arduino UNO 29

30 Arduino Ethernet è una scheda a microcontrollore basata sulla Arduino Uno e avente un Controller Ethernet W5100 WIZnet TCP / IP integrato. Può essere programmata come una Uno attraverso un convertitore seriale a sei pin tipo FTDI. Si può usare l'adattatore Arduino USB 2 Serial o qualsiasi cavo tipo FTDI che faccia da convertitore da USB a seriale. Microcontrollore: ATmega328 Tensione di lavoro: 5V Tensione d'ingresso(reccomandato): 7-12V Tensione d'ingresso (limiti): 6-20V I/O Digitali: 14 (di cui 4 usati anche per le uscite PWM) Pin riservati: o da 10 a 13 usati per SPI o 4 usato per la scheda SD o 2 usato dal W5100 Ingressi Analogici: 6 Corrente DC per ogni pin I/O: Corrente DC dal pin 3.3V: Memoria Flash: SRAM: EEPROM: Velocità Clock: W5100 TCP/IP Controller Ethernet incorporato Power Over Ethernet ready Magnetic Jack Micro SD slot, con convertitore di livelli attivo 40 ma 50 ma 32 KB (ATmega328) di cui 0.5 KB usati dal bootloader 2 KB (ATmega328) 1 KB (ATmega328) 16 MHz Tabella 4: Specifiche Tecniche Arduino Ethernet 30

31 RobotOpen Control Shield per Arduino Figura 23: RobotOpen Control Shield per Arduino Questo shield è specificamente progettato per interfacciarsi con i sistemi FRC. Il connettore a 37 pin consente di accedere direttamente all'uscita PWM e I/O digitale sul Digital Sidecar FRC. La shield viene fornita in bundle con librerie open-source e con un App Operator Station che permette di creare un sistema completo di controllo Wi-Fi con il robot remoto. Comandi per l assegnazione e controllo del joystick, la comunicazione alle a uscite PWM e la trasmissione dei dati per la driver station sono disponibili in open source. Questo shield funziona con: Arduino Uno e Ethernet Shield Arduino Duemilanove e Ethernet Shield Arduino Ethernet Sparkfun Ethernet Pro Le Specifiche tecniche: - 10 Uscite PWM - 8 I / O digitali - 6 ingressi analogici - LED di stato e pulsante di ripristino 31

32 Figura 23: Lo schema della RobotOpen Control Shield La struttura del protocollo RobotOpen La creazione del protocollo RobotOpen è il risultato della progettazione open source di un protocollo standardizzato per la comunicazione e il controllo di sistemi robotici collegati in rete. È progettato per la comunicazione bidirezionale e permette a dei valori arbitrari di essere raggruppati (data bundles) per poi essere trasmessi. Il raggruppamento dei dati. Il data bundle è il principale metodo di raggruppamento dei dati per la trasmissione su protocollo RobotOpen. Il payload di ogni pacchetto non è altro che il raggruppamento di dati uno dietro l'altro. I Pacchetti di dati sono identificati da un singolo carattere o da un byte ASCII (0-9, a-z, o A-Z). Per default, la driver station invia per ogni joystick un suo data bundle. Per esempio il primo joystick avrà un ID bundle uguale a '0 ', il secondo sarà '1' e così via. Quindi ad ogni byte in questi bundle corrisponderà ad un componente del joystick (come ad esempio l asse analogico, un pulsante, etc..). Networking. I Pacchetti RobotOpen sulle reti basate su IP sono tipicamente trasmessi come UDP. La libreria RobotOpen per Arduino implementa un server 32

33 in ascolto sulla porta UDP Driver station o un qualsiasi client UDP che desidera connettersi al robot invia pacchetti RobotOpen a questa porta. La libreria RobotOpen per Arduino invierà tutti i pacchetti di risposta alla porta di high level che gli viene automaticamente assegnata quando il client si connette al server. Si noti che i dispositivi o la driver station posso inviare pacchetti ai controllori del robot uno alla volta. La lunghezza del messaggio. Ogni pacchetto RobotOpen deve essere almeno di 5 byte. In esso è contenuto il tipo di messaggio, la versione del protocollo, l ID del dispositivo e16 bit di checksum CRC. In versione che è stata utilizzata, i pacchetti RobotOpen non possono essere più lunghi di 256 byte. Il checksumming. Ogni pacchetto RobotOpen prevede un Controllo a ridondanza ciclica (CRC) a 16 bit affinché i dati trasmessi non vengano danneggiate durante la trasmissione. Si tenete però a mente che questo non garantisce che venga rispettato l'ordine dei pacchetti o l effettiva ricezione di quest ultimi. I tipi di pacchetto. Come detto in precedenza, ad ogni pacchetto RobotOpen è richiesto di avere un packet type associato e questo viene sempre reso noto sul primo byte di ogni pacchetto. Ci sono attualmente tre tipi di pacchetti la cui struttura di cui qui di seguito ne è spiegata la struttura. Per ogni casella si assume che la larghezza sia 8 bit o 1 byte. - Il Control Packet : questi sono impiegati per mandare i dati di controllo dalla driver station al robot. Se il controllore del robot non riceve un control packet in un tempo limite di 250ms, esso viene automaticamente disabilitato. - Figura 24: la struttura del control packet Message type: per i pacchetti di controllo è sempre 0x01. Protocol Version: questo viene trasmesso come 0x02. Se un controllore rileva una mancata corrispondenza di versione esso viene escluso. 33

34 ID dispositivo: Utilizzato per identificare quale dispositivo sta inviando il pacchetti di controllo (driver station app, Android, iphone, ecc..). Payload: questi sono gli effettivi dati di controllo da inviare. Questo sarà in forma di bundles. Questa porzione del pacchetto è di lunghezza variabile ed è a sua volta stutturata come segue: Figura 24-a: la struttura del control packet Il Payload rappresenta la vera e propria informazione trasmessa. Questo può essere nel formato più conveniente per l utente. Per il joystick, ogni byte richiama ad una funzionalità (asse, dpad, pulsante). CRC-16 High / Low Byte: Questi valori a 16 bit vengono trasmessi su 2 byte. Il primo byte nel pacchetto è sempre il byte alto, seguito dal byte basso. Se un pacchetto viene danneggiato deve essere escluso. - Query Packet. Questi sono inviati dalla driver station al controllore del robot per richiedere un feedback. Questi pacchetti vanno pensati come un contol packet, ma senza il payload. Seppure non inviando un control data, vorremmo ricevere dati dal robot, la notifica del nostro IP e la porta. Figura 25: la struttura del query packet - Feedback Packet. Sono inviati da un controllore del robot a una driver station. Questi contengono le informazioni di stato del robot e ogni dato che debba essere rinviato all interfaccia grafica o all elaborazione sulla 34

35 driver station. Quando la driver station manda un pacchetto al controllore del robot questa dovrebbe salvarne l IP e la porta di trasmissione utilizzata per inviare il pacchetto. Tutti i pacchetti di feedback infatti devono tornare a tale IP e tale porta. Per ogni control packet e query packet quindi, viene rinviato un pacchetto di feedback. Figura 26: la struttura del Feedback Packet 35

36 3. L INTERFACCIA GRAFICA PER IL CONTROLLO DEL ROBOT 3.1. La Driver Station per crio fornita da NI La driver-station è un programma che passa i dati tra il computer host e dispositivi di input, quali ad esempio: il joystick e il controller di gioco il Field Management System (FMS) il robot. La driver station è in grado di leggere i dati analogici e di leggere/scrivere i dati digitali, riceve i dati dai dispositivi di ingresso e li invia al CompactRIO sul robot. La driver station trasferisce quindi anche tutti quei dati che essa riceve dal compactrio indirizzandoli così al computer host in modo da poter visualizzare i dati in LabVIEW. Attraverso l utilizzo di una connessione Ethernet, si collega il PC che esegue la driver station al router Ethernet. Qualora si sviluppassero programmi su un computer host, è necessario collegare tale computer host al router Ethernet. Al fine di avere una corretta configurazione del sistema è necessario collegare il router Ethernet al dispositivo CompatRIO attraverso una rete con connessione Ethernet o con un Access Point wireless. Si deve fare attenzione al fatto che la scheda di rete wireless del PC remoto deve essere nella stesssa local subnet dell AccessPoint che si connette al CompactRIO. Durante la vera e propria competizione FRC, è invece necessario collegare il PC alla FMS anziché che al router Ethernet. La FMS infatti, contiene un AccessPoint wireless in grado di comunicare con gli accesspoints wireless posti sui vari robot. Il Field Management System. FIRST durante le competizioni, usa una FMS per monitorare il traffico dati dei robot e per mandare i comandi alla driver station. Per esempio, la FMS si occupa anche della modalità in cui il robot deve competere, in altre parole se questo deve operare in modalità autonoma o controllata. La FMS è in grado di connettersi attraverso una connessione Ethernet a driver station divers e attraverso un connessione wireless, a più robot. Quando si inizializza l eseguibile della driver station sul proprio PC, mi trovo 36

37 di fronte a due finestre per la gestione dei comandi e delle funzionalità del robot. Nella pagina seguente ne riporto lo screenshot. Figura 27: Dashboard (in alto) and Driver Station (in basso) Sulla Driver Station distinguiamo: Il numero del team, indica per quale team la Driver Station è configurata, questo è configurabile nella relative pagina di setup. Il main display, questa sezione mi rende noto quale è il valore di voltaggio della batteria posta sul robot. Inoltre sono presenti 3 LED che mi forniscono importanti informazioni: LED Verde Rosso Communications La Driver Station è capace di comunicare con il DS radio, Brigde e crio FRC. La Driver Station non è capace di comunicare con il DS radio, Brigde e crio FRC. Robot Code La Driver Station è capace di comunicare con il codice caricato nel crio. Tabella 5: I LED del main display La Driver Station non è capace di comunicare con il codice caricato nel crio. L Operation Page contiene tutte le informazioni sul funzionamento corrente del robot. Sul lato sinistro della pagina dell'operazione, è possibile scegliere la modalità del robot per essere telecomandato, messo in modalità autonoma, o pratica. Dopo aver selezionato una modalità, è possibile attivarla facendo clic sul pulsante Attiva. Dopo la modalità del robot è stato scelto e attivato, è 37

38 possibile disattivarla facendo clic sul pulsante Disattiva. Se il robot è collegato al sistema di gestione del campo (FMS), allora questa sezione verranno visualizzate informazioni del FMS. Teleoperated - Ciò consente di eseguire quella sezione del codice in cui il robot è programmato per essere controllato. Autonomous - Ciò consente di eseguire quella sezione del codice in cui il robot è programmato per essere autonomo. Practical - Questa modalità può essere configurata nella pagina di installazione e permette di simulare un match completo eseguendo prima il codice autonomo e quindi attivare la modalità controllata. Le informazioni relative allo stato di funzionamento del robot è riportato sulla parte destra della pagina di funzionamento. Tempo trascorso - Questo spiega da quanto tempo il robot è in funzione una volta che una delle modalità è stata attivata. Login Utente - Questo spiega il nome utente dell'utente attualmente connesso al computer e che sta eseguendo la Driver Station. Batteria del PC - La sezione batteria PC indica o il livello di carica residua della batteria della Driver Stationo se il PC riceve corrente alternata. Team Station - Questo ti permette di scegliere il team rosso o la squadra blu e di tale squadra se siete il robot 1, 2, o 3. Messaggi utente Con l utilizzo della Write User Message VI è possibile inviare messaggi dal robot alla postazione di guida tali messaggi vengono visualizzati in questa finestra. Il Kinect Status, è un indicatore di stato ed ha 4 possibili condizioni: Status Image Meaning Red Kinect No Kinect Connected Green Kinect with no figures A Kinect is detected Green Kinect with one figure The Kinect detects one person in front of it Green Kinect with two figures The Kinect detects two people in front of it. One person should move out of view of the Kinect Tabella 6: il Kinect Status Il driver di Kinect per FRC che viene utilizzato è capace di seguire soltanto una persona alla volta per cui se vengono rilevate due persone, Kinect sceglierà a caso quale delle due seguire. 38

39 Diagnostics Page, Questa pagina contiene le informazioni di diagnostica di tutti i collegamenti con dispositivi e con la Driver Station insieme ai messaggi di errore dal robot. Figura 28: Diagnostics Page - dispositivi USB. Sul lato sinistro della pagina di diagnostica viene visualizzata la sezione Dispositivi USB (Green Box). Questa sezione mostra quali dispositivi sono stati collegati via USB alla Driver Station e il loro stato di connessione. Se un joystick è stato inserito, si illumina di verde e quando si aziona uno dei bottoni del joystick ciò viene segnalato attraverso una spia blu. L I/O si accende quando un dispositivo periferico di I / O è stato collegato alla Driver Station. Il LED relativo alla Kinect specifica se il server Kinect è connesso e se è questo è collegato, sotto il LED Kinect, vi è una stringa che specifica la versione del server. Comunicazioni. Al centro della pagina di diagnostica viene visualizzata la sezione Comunicazioni (Yellow Box). Questa sezione permette di vedere con quali porzioni del sistema di controllo della Driver Station sono in grado di comunicare. Per la risoluzione dei problemi di comunicazione, passando il mouse sulla voce relativa al problema di comunicazione, la Driver Station riportata nella sezione Messaggi alcuni suggerimenti per la risoluzione del problema. Messaggi. Sul lato destro della pagina di diagnostica è la sezione messaggi. In questa sezione vengono visualizzati i messaggi di errore dal codice del robot. Questi errori vengono registrati nel crio, ed è possibile visualizzare questo registro, toccando il pulsante View Log File Informazioni sulla versione. Le Informazioni sulla versione per la Driver Station e l'immagine sul crio possone essere reperibili nella sezione Informazioni sulla versione (Red Box). Questa informazione è importante per la ricerca errori e per assicurarsi che la Driver Station e il crio abbaino semprela versione più aggiornata. Setup Page, in questa pagina è possibile configurare la postazione di guida per il numero di team, scegliere di visualizzare un dashboard locale o remoto, configurare i parametri della modalità pratica, e configurare i joystick. 39

40 La configurazione del numero di team. Essa configura anche la Driver Station che deve essere nella seguente forma: 0.xx.xx.5 mentre il computer sarà 10.xx.xx.6 (dove xx.xx è il numero del team). Practice Round Parameters. E possibile modificare i parametri per in modalità pratica. Countdown - Questo campo consente alla Driver Station di impostare il numero di secondi di conto alla rovescia prima di mettere il robot in modalità autonoma. Autonomous - Questo campo consente di impostare per quanto tempo la postazione di guida permette al robot di funzionare in modalità autonoma. Delay - L'impostazione di ritardo configura quanti secondi la postazione di guida attende tra la disabilitazione della modalità autonoma e abilitando la modalità controllata. Teleoperated - Questo campo consente di impostare per quanto tempo la postazione di guida permette al robot per l'esecuzione in modalità controllata. End Game - L'impostazione End Game specifica il numero di secondi per cui il robot continuerà a funzionare alla fine del gioco. Sounds Effect - Questo pulsante consente alla Driver Station di riprodurre i suoni quando è in modalità pratica. Joystick Setup. Possono essere collegati alla Driver Station fino a quattro joystick alla volta. Per configurare il joystick che viene assegnato a un indice numerico è possibile fare clic sul nome del joystick e trascinarlo in una posizione diversa. The I/O page visualizza le informazioni dal dispositivo I / O collegato alla Driver Station. Se l'i / O del dispositivo USB non è collegato, le uscite diventano ingressi simulati che si può manipolare a fini di prova. 10 Item Compatible View Enhanced View Digital Inputs DI 1-8 DI 1-8 Digital Outputs DO 1-8 DO 9-16 Analog Inputs AI 1-4 AI 1-8 LEDs N/A LED 1-8 Buttons N/A Button 1-6 HC DO N/A HC DO 1-2 Accelerometer N/A X, Y, Z Quadrature N/A Quad 1-2 Touch N/A Slider Tabella 7: I/O page 40

41 3.2. La Driver Station per Arduino fornita da RobotOpen La applicazione di Driver Station rilasciata da RobotOpen può essere utilizzata sia su Windows che su MAC, è infatti una semplice applicazione Java che ci permette di controllare e monitorare il robot attraverso l utilizzo di Arduino Uno/Ethernet e della RobotOpen Control Shield. Figura 29: RobotOpen Driver Station Quello che la Driver Station ci mette a disposizione è: La scelta, attraverso due menù a scorrimento, di uno o più Joystick collegati al desktop remoto connesso all Access Point sul robot; La possibilità di configurare l indirizzo IP del robot a cui ci si connette; Un bottone per stabilire la connessione con il robot; Un bottone che abilita/disabilita il controllo del robot dopo che il codice scritto per Arduino è stato correttamente caricato sul microcontrollore; 41

42 In particolar modo, dal momento che la Driver Station abiliterà il robot, verrà letta quella sezione di codice successiva alla stringa di codice void enabled(). Disbilitando verrà letta quella sezione di codice successiva alla stringa di codice void disabled(). D altra parte invece, sia a controllo abilitato che a controllo disabilitato avremo a loop la seguente sezione di codice che ci permette di visualizzare i dati di feedback che il robot ci fornisce: void timedtasks() RobotOpen.publishAnalog(ANALOG0, 'A'); // Bundle A RobotOpen.publishAnalog(ANALOG1, 'B'); // Bundle B RobotOpen.publishAnalog(ANALOG2, 'C'); // Bundle C RobotOpen.publishAnalog(ANALOG3, 'D'); // Bundle D RobotOpen.publishAnalog(ANALOG4, 'E'); // Bundle E RobotOpen.publishAnalog(ANALOG5, 'F'); // Bundle F La dashboard quindi, ci permette di visualizzare e monitorare a finestra i dati di feedback del timedtasks che il robot comunica alla Driver Station. RobotOpen ha progettato il protocollo di trasmissione specificatamente per i Joystick Logitech. Possono dunque essere utilizzabili anche altri generici dispositivi, che tuttavia in alcuni casi, la Driver Station potrebbe non essere in grado di riconoscere. In ogni caso questo comporta l utilizzo di joystick.getindex(int index) 42

43 Come ho già specificatamente illustrato nel capitolo precedente, il protocollo di trasmissione RobotOpen usa dei pacchetti, anche detti bundles, per l identificazione del dispositivo che si è scelto. Il Joystick che quindi viene scelto dal primo menù a scorrimento è sempre identificato con un ID bundle uguale a 0 mentro il secondo con un ID bundle uguale a 1 : questo ha un effetto diretto sul codice che viene scritto con Arduino, infatti nella stringa di codice relativa al setup di I/O e specificatamente al Joystick dovrà essere inserito il valore di bundle ad esso relativo. [ ES. USBjoystic usb1( 0 ); ] Per stabilire una connessione con l Access Point del robot si deve configurare il desktop che esegue la Driver Station configurando una generica connessione wireless nel seguente modo: Figura 30: Configurazione rete wireless Desktop remoto 43

44 4. KINECT: CONTROL LER E MOTION TRACKER 4.1. Generalità Microsoft Kinect (inizialmente conosciuto con il nome Project Natal), `e un accessorio per Xbox 360 sensibile al movimento del corpo umano. Esso rende il giocatore stesso controller della console senza l uso di alcuno strumento, a differenza dei concorrenti come NintendoWii o Sony Playstation. Sebbene in origine il dispositivo Kinect fu pensato esclusivamente per Xbox 360, Microsot rilasciò gratuitamente, l estate 2011, i driver ufficiali per poter utilizzare Kinect sul proprio Personal Computer, dimostrando così di voler portare quanto prima tale tecnologia anche sui sistemi operativi Windows attualmente disponibili, favorendo lo sviluppo di varie applicazioni tra il mondo degli sviluppatori di software. Il risultato è che oggi Kinect è utilizzata nei settori più disparati. Figura 31: Microsoft Kinect Hardware Kinect `e un dispositivo dotato di telecamera RGB, doppio sensore di profondit`a a raggi infra rossi composto da un proiettore a infrarossi e da una telecamera sensibile alla stessa banda. La telecamera RGB ha una risoluzione di pixel, mentre quella a infrarossi usa una matrice di pixel. Kinect dispone anche di un array di microfoni utilizzato dal sistema per la calibrazione dell ambiente in cui ci si trova. Mediante l analisi della riflessione del suono sulle pareti e sull arredamento infatti, per riconoscere correttamente i comandi vocali, elimina i rumori di fondo e il riverbero causato dai suoni del gioco. La barra del Kinect `e motorizzata lungo l asse verticale e segue i movimenti dei giocatori, orientandosi nella posizione migliore per il riconoscimento dei movimenti. Di fatto, la periferica permette all utente di interagire con la console senza l uso di alcun controller da impugnare, ma solo attraverso i movimenti del corpo, i comandi vocali o attraverso gli oggetti presenti nell ambiente. La tecnologia di Kinect riesce a codificare le informazioni che 44

45 le servono nel momento stesso in cui la luce viaggia, analizzando le deformazioni incontrate nel suo percorso. Quello che ne deriva `e una vera e propria renderizzazione 3D dell ambiente in tempo reale, molto più precisa che in passato. Le eventuali persone presenti vengono poi rilevate attraverso un chip, piazzato proprio all interno della videocamera, il quale va alla ricerca di qualsiasi cosa sembri di natura umana e ne calcola i relativi movimenti. Figura 32: Raffigurazione della profondità di gioco Sensore: o Lenti sensibili al colore e alla profondit`a; o Microfono; o Tilt motor per permettere alla periferica di spostarsi; o Compatibile con tutte le console Xbox 360; Campo visivo: o Orizzontale: 57 Gradi; o Verticale: 43 Gradi; o Capacità di spostamento della periferica: 27 gradi; o Profondità: 1.2m - 3.5m; Trasferimento dati: o bit 30 frames/sec; o bit 30 frames/sec; o 16-bit 16 khz; Tracking dello Scheletro: o Fino a 6 persone, inclusi 2 giocatori attivi; o Fino a 20 movimenti per ogni giocatore attivo; o Riconoscimento dell Avatar dell utente; Audio: o Possibilità di effettuare le Chat Party; o Cancellazione dell eco; o Riconoscimento vocale di più voci; 45

46 4.2. Kinect SDK Questo paragrafo si focalizza sulla compatibilità tra Microsoft Kinect e i vari sistemi operativi presenti nel mondo dell informatica. Introduce inoltre i vari metodi di approccio alla programmazione, confrontando principalmente le SDK ufficiali fornite da Microsoft e quelle non ufficiali basate sul framework OpenNI. Installazione cross platform Microsoft Kinect è un dispositivo che può tranquillamente essere installato in qualsiasi sistema operativo. L applicazione basata sul dispositivo Kinect si basa sull utilizzo delle SDK3 ufficiali fornite da Microsoft. `E doveroso precisare però che l installazione dei driver ufficiali permette di utilizzare e sviluppare applicazioni basate su Kinect esclusivamente in un PC con sistema operativo Windows (Xp, Vista, Seven). Le SDK ufficiali sono state rilasciate da Microsoft nel luglio del 2011, mentre driver non ufficiali che sono usciti molti mesi prima hanno permesso agli sviluppatori di software di testare il funzionamento di Kinect e di creare una moltitudine di applicazioni basate sul dispositivo lanciato da Microsoft nell inverno I driver non ufficiali sono basati sul framework OpenNI (Open Natural Interaction). OpenNI `e un framework multi-lingua, cross platform che definisce le API4 per scrivere applicazioni che sfruttano la Natural Interaction (NI). Le API di OpenNI sono composte da un insieme di interfacce per la scrittura di applicazioni NI. Lo scopo principale del framework `e quello di formare delle API standard che consentono la comunicazione con: Sensori audio e video; Middleware di percezione audio-visiva (componenti software che analizzano e comprendono i dati audio e video che vengono registrati dalla scena). Per esempio, il software che riceve i dati visivi come un immagine, restituisce la posizione del palmo di una mano rilevati all interno dell immagine; Il framework OpenNI `e un livello astratto che fornisce l interfaccia per entrambi i dispositivi fisici e componenti middleware (rappresentazione grafica in figura 2.3). Le API permettono la registrazione di pi`u componenti nel framework OpenNI. Questi componenti sono indicati come moduli, e sono utilizzati per produrre ed elaborare i dati sensoriali. La selezione di un dispositivo hardware pi`u adatto ad un determinato scopo, o di un componente middleware diventa facile e flessibile. Nel dicembre 2010, PrimeSense ha rilasciato i propri driver open source con il middleware di motion tracking chiamato NITE. 46

47 PrimeSense è un azienda di semiconduttori, che produce tecnologie ad alte prestazioni per macchina basate sulla riproduzione visiva tridimensionale in vendita per fascia media di consumatori. La combinazione del framework OpenNI con il middleware NITE permette dunque di utilizzare Microsoft Kinect non solo con il sistema operativo Windows Lo Skeletal Viewer L istallazione delle SDK, comprende due esempi di applicazioni per il dispositivo Kinect, con tanto di file soluzione del formato adatto al programma Microsoft Visual Studio, un ambiente di sviluppo integrato chiamato più comunemente IDE. L esempio più interessante è chiamato Skeletal Viewer, l unico programmato con linguaggio di programmazione C++. Tale applicazione è composta da una finestra che contiene tre riquadri di visualizzazione, uno per la vista di profondità con scala di grigi ed il riconoscimento degli utenti (player), un riquadro per visualizzare lo scheletro di uno o al massimo due utenti identificati con il sensore di profondità e un riquadro per visualizzare l immagine a colori della telecamera. Nel lato destro invece, viene visualizzato il numero di fotogrammi al secondo (frame rate), ossia la frequenza di cattura dei fotogrammi che compongono il filmato. Figura 33: Applicazione SkeletalViewer. L applicazione Skeletal Viewer funziona in maniera molto semplice. Per prima cosa è necessario che ci sia una o più persone presenti all interno dell area visualizzata dalla telecamera (riquadro VGA View), dopodichè l applicazione riconosce automaticamente gli utenti e colora l area di ciascuno di essi utilizzando colori differenti e casuali all interno del riquadro associato alla profondità (riquadro Depth View). Dopo aver riconosciuto almeno una persona, l applicazione ne traccia lo scheletro all interno del secondo riquadro (riquadro Skeletal View), tale scheletro è composto da dei punti che corrispondono alle giunture più significative del corpo umano, tali punti sono uniti da segmenti e lo scheletro segue praticamente in tempo reale i movimenti del corpo umano dell utente 47

48 (movimenti troppo veloci posso causare ritardi). Sostanzialmente questo software ha come funzionalià di base il riconoscimento di uno o più utenti ed il conseguente tracciamento dello scheletro di massimo due persone. Skeletal Viewer dispone di molti metodi all interno del file NuiImpl.cpp. Prima di procedere con la modifica della soluzione del programma per realizzare l applicazione LCS `e necessario capire il funzionamento dei principali metodi: o Metodo Nui Init: crea tre eventi, il primo per l immagine video VGA, il secondo associato all immagine video con scala di grigi per la profondit`a ed il terzo per la creazione dello scheletro. Crea i buffer video per riprodurre le immagini delle camere di Kinect nei riquadri VGA view e depth view, imposta la risoluzione dei video e apre gli stream3. Inizializza inoltre l ambiente grafico per il disegno dello scheletro all interno del riquadro skeletal view; o Metodo Nui ProcessThread: gestisce gli eventi e comunica direttamente con la main window. Invia e aggiorna continuamente i valori che popolano i campi dell interfaccia grafica garantendo una visualizzazione dei dati in tempo reale. Grazie alla gestione degli eventi, il metodo Nui ProcessThread, effettua delle chiamate ad altri metodi nei momenti pi`u appropriati, ad esempio quando si verifica un evento scheletro, viene chiamato il metodo Nui DrawSkeleton che disegna lo scheletro di un utente nel riquadro dedicato della finestra principale; o Metodo Nui DrawSkeletonSegment: disegna i segmenti che compongono lo scheletro. Questo metodo viene chiamato all interno del metodo Nui DrawSkeleton e viene utilizzato per collegare una serie di punti (ad esempio i segmenti che vanno da una mano all altra, passando per braccia e spalle); o Metodo Nui DrawSkeleton: rileva e posiziona tutti i venti punti che compongono la rappresentazione dello scheletro dell utente. Chiama il metodo Nui DrawSkeletonSegment per collegare i punti con dei segmenti. `E all interno di questo metodo che vengono estratti i valori della posizione del punto riferito alla testa. Figura 34: Arch. della Kinect 48

49 4.4. Kinect per FRC L interpretazione delle gestualità. L angolo sul piano YX che si viene a formare considerando la posizione del polso rispetto alla spalla viene calcolato dall applicazione Skeletal Viewer al fine di essere preso come dato in ingresso per KinectStick Y; quindi l'informazione relativa all angolo risultante spalla/polso viene così assegnata lungo l asse Y su un intervallo compreso tra - 1 e 1: ad ogni valore angolare corrisponderà quindi un valore di Y, grazie al quale si posso gestire i controllori di velocità dei motori. I dati in ingresso al KinectStick sono dunque in realtà due Joystick analogici che si muovono solo lungo Y (KinectStick1-Y and KinectStick2-Y). Il diagramma che segue spiega quanto detto, illustrando come avviene la conversione dell angolo spalla/polso in valori per un per un joystick standard. Figura 35: assegnazione valore angolare/ valore di Y Al fine di avere una maggiore sicurezza sul controllo del robot, l applicazione Skeletal è in grado di calcolare attraverso dei sensori di profondità l angolo compreso tra la posizione del gomito e quella del polso sul piano ZX. Una variazione significativa oltre i 10 fa si che venga letto un valore Y=0 con il risultato di arrestare il robot molto più velocemente. Figura 36: l assegnazione del valore angolare sul piano XZ Dato che le due braccia sono già utilizzate per gli assi del controllo in tankmode, le rimanenti parti del corpo sono potenzialmente disponibili per essere utilizzate come bottoni. 49

50 Le possibili ulteriori configurazioni calcolabili dall applicazione Skeletal: sul piano XY, Testa inclinata verso destra; sul piano XY, Testa inclinata verso sinistra; sul piano XY, la gamba destra verso destra; sul piano XY, gamba sinistra verso sinistra; sul piano XZ, gamba destra in avanti; sul piano XZ, gamba destra indietro; sul piano XZ, gamba sinistra in avanti; sul piano XZ, gamba sinistra indietro. I valori dei bottoni sono impostati per essere uguali per entrambe le configurazioni KinectStick1 e KinectStick2. L utilizzo delle gestualità attraverso i vari linguaggi di programmazione. o Labview. L implementazione del KinectStick in Labview è possibile usando la stessa interfaccia di un normale Joystick; infatti utilizzando il Joystick Open VI si ha a disposizione l opzione kinect e kinect 2 in aggiunta alle porte USB. Una volta scelto il Joystick questo si comporterà come un normale USB Joystick. o C/C++. L implementazione del KinectStick in C/C++ è possible grazie ai file KinectStick.h e KinectStick.cpp; l elaborazione dei movimenti rilevati da Kinect è possibile grazie alla classe KinectStick. Il seguente esempio crea due KinectStick chiamate leftarm e rightarm KinectStick leftarm(1); KinectStick rightarm(2); Riporto qui di seguito KinectStick.h che gestisce l'input dei dati Joystick inviati dal server Kinect FRC quando viene utilizzato con un dispositivo Kinect collegato alla Driver Station NI. class KinectStick : public GenericHID, public ErrorBase public: explicit KinectStick(int id); virtual float GetX(JoystickHand hand = krighthand); virtual float GetY(JoystickHand hand = krighthand); virtual float GetZ(); virtual float GetTwist(); 50

51 virtual float GetThrottle(); virtual float GetRawAxis(UINT32 axis); virtual bool GetTrigger(JoystickHand hand = krighthand); virtual bool GetTop(JoystickHand hand = krighthand); virtual bool GetBumper(JoystickHand hand = krighthand); virtual bool GetRawButton(UINT32 button); private: void GetData(); float ConvertRawToFloat(INT8 charvalue); typedef union struct UINT8 size; UINT8 id; struct unsigned char axis[6]; unsigned short buttons; rawsticks[2]; formatted; char data[18]; KinectStickData; ; int m_id; static UINT32 _recentpacketnumber; static KinectStickData _sticks; #endif o Java. L implementazione del KinectStick Java è possible grazie ai file KinectStick.java (Disponibile in Appendice); l elaborazione dei movimenti rilevati da Kinect è possibile grazie alla classe KinectStick. Il seguente esempio crea due KinectStick chiamate leftarm e rightarm: KinectStick leftarm; KinectStick rightarm; leftarm = new KinectStick(1); rightarm = new KinectStick(2); 51

52 5. IL TEST DI CAMERA VISION 5.1. RoboRealm RoboRealm è un'applicazione per l'uso di computer vision, analisi delle immagini, sistemi di visione nel campo della robotica. RoboRealm fornisce una interfaccia GUI basata su Windows per la sperimentazione di diversi moduli che possono essere assemblati in modo personalizzato per ottenere il risultato desiderato. L'obiettivo principale di RoboRealm è tradurre input visivi in comandi attuatori che possono essere utilizzati per spostare robot o prendere decisioni in base a quello che la macchina vede. In RoboRealm sono implementati molteplici algoritmi: Algoritmi Blob and Particle; algoritmi di colore, rilevamento dei bordi, filtri, e altre comuni funzionalità di computer vision. Come strumento di computer vision applicato alla robotica, include anche tutte quelle metodologie per la localizzazione del robot, capacità di navigazione, e l'integrazione con i comuni sensori robotici. Ci sono anche moduli aggiuntivi che, come il modulo di navigazione AVM che permette la navigazione autonoma del robot in base ai punti di riferimento visivi. L interfaccia GUI RoboRealm consente un esplorazione intuitiva tra strumenti molto avanzati; il Vision Machine è un settore che richiede la molteplice interazione di complessi concetti matematici e di programmazione. RoboRealm offre la possibilità di un facile utilizzo di questi algoritmi al fine di sviluppare un modello intuitivo su ciò che un algoritmo può fare e come può essere applicato con successo a un progetto. I valori che modificano il comportamento degli algoritmi di visione possono essere regolati nell immediato avendo così un immediato riscontro dell immagine elaborata. Questo semplifica il tweak, la compilazione, e l esecuzione in fase di progettazione. RoboRealm si connette ai dispositivi di input tra cui webcam, immagini statiche, file video, telecamere IP e vari dispositivi di imaging. I sistemi di visione sono tipicamente solo una parte delle soluzioni alle problematiche che possiamo incontrare in campo robotico. Le estensioni includono moduli integrati che permettono lo scripting in varie linguaggi (VBScript, Python, e CScript), l architettura a plugin consente all utente di creare moduli personalizzati che sono incorporati in RoboRealm pipeline processing (DLL, pipes), un API fornisce inoltre funzionalità server. RobotRealm richiede un sistema operativo Microsoft Windows, ma lavora anche con una grande varietà di piattaforme per la robotica e la programmazione, come Sruveyor, Lego Mindstorms NXT, Vex Robotics System Design, irobot Create e Microsoft Robotics Developer Studio. 52

53 5.2. Arduino e Roborealm In questa tesi è stata affrontata la problematica del Camera Vision per la gestione del robot in modalità autonoma. La trattazione che segue circa l utilizzo del software RoboRealm affiancato ad Arduino, vuole essere solo una prima embrionale applicazione di questa tecnologia che permetterà al robot di riconoscere una forma geometrica, il suo centro di gravità ed il colore che la caratterizza. In base ai dati che il robot acquisisce, il sistema dovrà quindi essere in grado di prendere delle decisioni come centrare la propria posizione sul centro di gravità dell oggetto inquadrato e una volta portato a termine questo compito, in base alla distanza dall oggetto, attivare i motori del congegno di shooting. In questo paragrafo si descrive il tracking di un oggetto di colore definito interfacciando RoboRealm ad Arduino per controllare un semplice servomotore. Ho utilizzato quindi i seguenti moduli: il filtro Gaussiano gaussian blur. Questo filtro leviga l immagine catturata dalla telecamera ma ne conserva meglio i bordi rispetto al mean filter che viene utilizzato per attenuare un immagine a partire dalla media dei valori dei pixel circostanti. Il filtro Gaussiano da più peso alla posizione del pixel corrente e quindi i pesi diminuiscono all aumentare della loro distanza secondo la formula Gaussiana. Ponderando i pesi al valore del pixel finale questo filtro può meglio preservare i bordi rispetto al mean filter il quale prevede una eguale attribuzione dei pesi all interno della finestra di filtro. Il filtro Gaussiano è un filtro di convoluzione la cui matrice di convoluzione è di distribuzione Gaussiana. Per un filtro Gaussiano i singoli valori del filtro sono definiti come: Nel seguente esempio i grafici rappresentano un filtro Gaussiano con una dimensione di finestra paria a 7 per differenti valori di. Figura 37: Grafici per differenti valori di theta 53

54 Nel caso di studio preso in esame ho adottato come dimensione di finestra un valore pari a 12. Come risultato avremo un immagine più sfocata ma con una riduzione di rumore. Il filtro RGB. Il filtro RGB utilizza i valori RGB per focalizzare l'attenzione verso i colori primari RGB. A seconda del colore selezionato questo filtro diminuirà tutti i pixel che non sono del colore selezionato. Questa funzione è diversa dal RGB channel per il fatto che i pixel di colore bianco vanno a diminuire, anche se dovessero contenere il colore selezionato. Ad esempio, se venisse scelto il Rosso si avrebbe: R = ((R-B) + (R-G)) G = 0 B = 0 Il rosso viene quindi normalizzato rispetto al massimo valore di rosso. A causa della normalizzazione, i pixel più scuri potrebbero essere amplificati in intensità e in questo modo l immagine risultante potrebbe essere affetta da un significativo rumore. Viene quindi definito il valore minimo di pixel, che permette di specificare un valore minimo sotto il quale i pixel vengono indentificati come neri e quindi ignorati nel calcolo dell immagine risultante. Il valore minimo predefinito è pari a 40 su una scala che va da 0 a 255. Si utilizza il filtro RGB per mettere in evidenza l immagine rispetto a un certo/i colore/i, anche con condizioni di luce attenuata. Nel caso di studio preso in esame ho adottato il colore blu ; quindi sono stati filtrati tutti gli altri colori che compongono l immagine catturata dalla telecamera. Il centro di gravità dell oggetto o centro di massa statistica. Si calcola come: COG_X = COG_X + (I*x) COG_Y = COG_Y + (I*y) Total = Total + I in cui x/y definiscono la posizione del pixel corrente e per ciascun pixel: I = (R + G+ B) / 3 54

55 Il Modulo VBScript. Questo modulo fornisce un modo per creare script personalizzati di Visual Basic. Questo modulo è pensato per eseguire rapidamente operazioni personalizzate senza la necessità di implementare o utilizzare le API che tipicamente richiedono strumenti esterni. L'interfaccia prevede due metodi per specificare il codice. Il primo metodo prevede di specificare un file di testo come sorgente del programma, il secondo metodo prevede l utilizzo di un editor di testo per modificare / creare questo file. Nel caso di studio preso in esame ho implementato sul modulo VBScript il seguente codice: cogx = GetVariable("COG_X") cogx = cogx* SetVariable "COG_Xmode", cogx GetVariable ("variable_name") - restituisce un valore intero della variabile specificata. SetVariable "variable_name", variable_value - imposta il valore della variabile alla variabile specificata. Il modulo Sparkfun Arduino, ha lo scopo di consentire a RoboRealm di comunicare con un Arduino mentre si è collegati tramite USB o bluetooth. Si richiede di scaricare l Uno sketch (programma Arduino, di cui si allega il codice in Appendice) nella scheda Arduino, al fine di facilitare la comunicazione con questo modulo in RoboRealm. Vi sono 6 linee PWM disponibili e che fanno parte delle 14 linee di I/O digitale, per il presente caso di studio si è collegato al pin #9 un microservo a cui sono stati impostati valori minimi e massimi pari a 560/2300. Per realizzare l esperimento si è collegato il microservo alla board Arduino: - Collegando il cavo rosso a 5V; - Collegando il cavo nero a Ground; - Collegando il cavo bianco sul pin PWM corrispondente. Figura 38: L esperimento di Camera Vision 55

56 6. SPECIFICHE RICHIESTE AL SISTEMA E IMPLEMENTAZIONE DEL SOFTWARE 6.1. Cos è richiesto ai meccanismi del robot. Nell affrontare la problematica di progettazione e realizzazione del robot si è scelto di suddividere in sotto-moduli lo studio del nostro sistema. Come già è stato detto, il robot dovrà essere in grado di raccogliere dei dischi, caricarli in un congegno di shooting e quindi lanciarli su delle fessure poste su di una parete. Una volta completato tale compito esso dovrà essere in grado di sollevarsi da terra utilizzando una o più appendici su una piramide metallica posta al centro del campo di gioco. Figura 39: Il game FRC del 2013 Distinguiamo quindi i seguenti congegni: - una base mobile che sia in grado di muoversi omnidirezionalmente grazie all utilizzo delle mecanum weels. La base deve essere controllabile grazie all utilizzo di un Joystic in modalità Arcade e/o Tank e tramite controllo motorio attraverso l utilizzo di Microsoft Kinect. Per tale congegno si presuppone l utilizzo di 4 motori DC ognuno controllato da un controllore di velocità Jaguar. Questo capitolo mostra come rispondere alle specifiche richieste adottando il C++ come linguaggio di programmazione e il compact RIO come piattaforma di prototipizzazione con lo specifico fine di controllare una 56

57 base mobile attraverso l utilizzo di Microsoft Kinect. Tuttavia, Il sistema descritto in questa prima fase di test non ha previsto il controllo omnidirezionale, in quanto si è voluta focalizzare maggiormente l attenzione sull aspetto di controllo tramite le gestualità. Viene inoltre proposto un secondo test con cui si risponde alle specifiche di omnidirezionalità. Il codice è stato editato utilizzando la IDE Arduino al fine di controllare la base mobile con un Joystick. Viene proposto il controllo in modalità tank e in modalità arcade - Un congegno di raccolta e caricamento che deve poter essere attivato tramite un bottone e disattivato da uno switch quando il sistema rileva lo shooter come già carico. In particolar modo, il disco viene raccolto da due spazzole rotanti e inserito in un meccanismo che grazie all ausilio di due elicoidali e uno step motor, può infine arrivare ad essere caricato nel congegno di shooting. Per tale congegno si presuppone l utilizzo di 2 motori DC ognuno controllato da un controllore di velocità e appunto, uno step motor. - Un congegno di shooting che possa essere attivato tramite un bottone. Per tale congegno si presuppone l utilizzo di 1 motore DC controllato da un controllore di velocità Jaguar. - Un congegno che permetta al robot di arrampicarsi. In questa tesi tuttavia la trattazione a tale problematica viene tralasciata a uno studio futuro Pogrammare il compact RIO FRC in C++ con WINDRIVER FRC v Il seguente codice è stato caricato su compact RIO al fine di controllare una base mobile attraverso l utilizzo di Microsoft Kinect. Sono stati definiti gli intervalli dei valori angolari che il quale il sistema può assumere; in particolar modo è stato impostato che l angolo massimo accettabile dalle braccia dell utente rispetto alla posizione di 0 sia pari a 105 seguito da un valore angolare minimo pari a -90. Allo stesso modo vengono definiti valori massimi e minimi per quanto riguarda la posizione delle gambe in avanti, indietro o fuori. Rispettivamente valori pari a -110, -80, -75. #include "WPILib.h" #include "Math.h" #define PI

58 //Constants which define the valid arm positions #define ARM_MAX_ANGLE 105 #define ARM_MIN_ANGLE -90 #define Z_PLANE_TOLERANCE 0.3 /* In meters */ //Constants which define the "trigger" angles for the various buttons #define LEG_FORWARD -110 #define LEG_BACKWARD -80 #define LEG_OUT -75 #define HEAD_LEFT 98 #define HEAD_RIGHT 82 Segue quindi la parte di codice relativa al controllo del robot in modalità Tank; viene preso in esame in tale codice dapprima la posizione angolare delle braccia, quindi della testa e infine delle gambe: /* Only process data if skeleton is tracked */ if (kinect->gettrackingstate() == Kinect::kTracked) /* Determine angle of each arm and map to range -1,1 */ leftangle = AngleXY(kinect->GetSkeleton().GetShoulderLeft(), kinect->getskeleton().getwristleft(), true); rightangle = AngleXY(kinect->GetSkeleton().GetShoulderRight(), kinect->getskeleton().getwristright(), false); leftaxis = CoerceToRange(leftAngle, -70, 70, -1, 1); rightaxis = CoerceToRange(rightAngle, -70, 70, -1, 1); /* Check if arms are within valid range and at approximately the same z-value */ datawithinexpectedrange = (leftangle < ARM_MAX_ANGLE) && (leftangle > ARM_MIN_ANGLE) && (rightangle < ARM_MAX_ANGLE) && (rightangle > ARM_MIN_ANGLE); datawithinexpectedrange = datawithinexpectedrange && 58

59 InSameZPlane(kinect- >GetSkeleton().GetShoulderLeft(), kinect->getskeleton().getwristleft(), Z_PLANE_TOLERANCE) && InSameZPlane(kinect- >GetSkeleton().GetShoulderRight(), kinect->getskeleton().getwristright(), Z_PLANE_TOLERANCE); /* Determine the head angle and use it to set the Head buttons */ headangle = AngleXY(kinect->GetSkeleton().GetShoulderCenter(), kinect->getskeleton().gethead(), false); buttons[0] = headangle > HEAD_LEFT; buttons[1] = headangle < HEAD_RIGHT; /* Calculate the leg angles in the XY plane and use them to set the Leg Out buttons */ leftlegangle = AngleXY(kinect->GetSkeleton().GetHipLeft(), kinect- >GetSkeleton().GetAnkleLeft(), true); rightlegangle = AngleXY(kinect->GetSkeleton().GetHipRight(), kinect- >GetSkeleton().GetAnkleRight(), false); buttons[2] = leftlegangle > LEG_OUT; buttons[3] = rightlegangle > LEG_OUT; /* Calculate the leg angle in the YZ plane and use them to set the Leg Forward and Leg Back buttons */ leftlegyz = AngleYZ(kinect->GetSkeleton().GetHipLeft(), kinect- >GetSkeleton().GetAnkleLeft(), false); rightlegyz = AngleYZ(kinect->GetSkeleton().GetHipRight(), kinect- >GetSkeleton().GetAnkleRight(), false); buttons[4] = rightlegyz < LEG_FORWARD; buttons[5] = rightlegyz > LEG_BACKWARD; buttons[6] = rightlegyz < LEG_FORWARD; buttons[7] = rightlegyz > LEG_BACKWARD; 59

60 if (datawithinexpectedrange) /** * Drives using the Kinect axes scaled to 1/3 power * Axes are inverted so arms up == joystick pushed away from you */ myrobot.tankdrive(leftaxis*0.6, rightaxis*0.6); something with boolean "buttons" here /** * Do */ /* Optional SmartDashboard display of Kinect values */ //dash- >PutDouble("Left Arm", -leftaxis); //dash- >PutDouble("Right Arm", -rightaxis); //dash- >PutBoolean("Head Left", buttons[0]); //dash- >PutBoolean("Head Right", buttons[1]); //...etc... 60

61 6.3. Programmare Arduino Ethernet con le librerie di RobotOpen Prima di andare a vedere con dettaglio il codice che è stato implementato su Arduino, vale la pena presentare la modulazione di larghezza di impulso, ampiamente utilizzata per il controllo dei motori di un sistema robotico. La Pulse-width modulation o PWM è un tipo di modulazione digitale che permette di ottenere una tensione media variabile dipendente dal rapporto tra la durata dell' impulso positivo e di quello negativo, allo stesso modo è utilizzato per protocolli di comunicazione in cui l'informazione è codificata sotto forma di durata nel tempo di ciascun impulso. Grazie ai moderni microcontrollori è possibile attivare o inattivare un interruttore ad alta frequenza e allo stesso modo rilevare lo stato e il periodo di un impulso. La durata di ciascun impulso può essere espressa in rapporto al periodo tra due impulsi successivi, implicando il concetto di ciclo di lavoro. Un ciclo di lavoro utile pari a 0% indica un impulso di durata nulla, in pratica assenza di segnale, mentre un valore del 100% indica che l'impulso termina nel momento in cui inizia il successivo. Di seguito è mostrato un esempio di modulazione a 2 bit. Un segnale di clock è a volte utilizzato per determinare la posizione degli impulsi, ma spesso non è necessario in quanto al segnale viene aggiunto un valore minimo che garantisce la presenza di un piccolo impulso anche per il valore zero. La modulazione a larghezza di impulso è largamente utilizzata anche per regolare la potenza elettrica inviata ad un carico, per esempio negli inverter, per regolare la velocità dei motori in corrente continua e per variare la luminosità delle lampadine. Come si può intuire, con un duty cycle pari a zero la potenza trasferita è nulla, mentre al 100% la potenza corrisponde al valore massimo trasferito nel caso non sia presente il circuito di modulazione. Ogni valore intermedio determina una corrispondente fornitura di potenza. 61

62 Il vantaggio di questa tecnica è di ridurre drasticamente la potenza dissipata dal circuito limitatore rispetto all'impiego di transistor controllati analogicamente. In un semiconduttore la potenza dissipata è determinata dalla corrente che lo attraversa per la differenza di potenziale presente ai suoi capi. In un circuito PWM il transistor in un istante conduce completamente, riducendo al minimo la caduta ai suoi capi, oppure non conduce, annullando la corrente, ed in entrambi i casi la potenza dissipata è minima Il codice implementato su Arduino. Il seguente codice è stato caricato su un Arduino Ethernet al fine di controllare una base mobile attraverso l utilizzo di un Joystick e della Driver Station fornita da RobotOpen. Il protocollo RobotOpen ha introdotto un formato fisso per tutti i dispositivi joystick. Questo è stato un tentativo trasversale di standardizzare il sistema di controllo con Android, ios, e le Driver Station. Qui di seguito viene definito il bundle del Joystick: Figura 40: Il bundle del Joystick Nel seguente codice si assegna un range di valori che vanno da 0 a 255; il che significa che se un motore risulta essere fermo a questo verrà assegnato un valore pari a 127, analogamente verrà quindi assegnato un valore pari a 255 per 62

Caratteristiche HW. Clock Speed 16 MHz

Caratteristiche HW. Clock Speed 16 MHz ARDUINO YÚN Caratteristiche HW AVR Arduino Microcontroller ATmega32u4 Operating Voltage 5V Input Voltage 5V Digital I/O Pins 20 PWM Channels 7 Analog Input Channels 12 DC Current per I/O Pin 40 ma DC Current

Dettagli

SISTEMI E DISPOSITIVI EMBEDDED

SISTEMI E DISPOSITIVI EMBEDDED SISTEMI E DISPOSITIVI EMBEDDED SISTEMI E DISPOSITIVI EMBEDDED Fasar Elettronica propone un innovativa e performante famiglia di prodotti per l'ambiente embedded, che comprende sistemi completi e singoli

Dettagli

ARDUINO ARDUINODUE. la piattaforma OPEN SOURCE alla portata di tutti. New. New. futurashop.it. S i s t e m i d i s v i l u ppo, software e didattica

ARDUINO ARDUINODUE. la piattaforma OPEN SOURCE alla portata di tutti. New. New. futurashop.it. S i s t e m i d i s v i l u ppo, software e didattica S i s t e m i d i s v i l u ppo, software e didattica ARDUINO la piattaforma OPEN SOURCE alla portata di tutti Realizza i tuoi progetti sfruttando questa innovativa piattaforma a basso costo, che mette

Dettagli

Introduzione ai Microcontrollori Workshop 08/06/2011 Dott.Ing.Marco Frosini Qprel srl Dott.Ing.Lorenzo Giardina Qprel srl Slide 1 di 27 L'elettronica digitale PRIMA dei microcontrollori Elemento base:

Dettagli

Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) - Arduino è orientato all'applicazione, - Permette di provare, partendo dal piccolo e crescendo pezzo per pezzo (sviluppo modulare); - Lo sviluppo è aiutato da una enorme community online con esempi e

Dettagli

Arduino e l Internet delle cose

Arduino e l Internet delle cose Arduino e l Internet delle cose Cristian Maglie (c.maglie@arduino.cc) 1 Notizie sul relatore - Programmatore Freelance - Entusiasta utilizzatore di tecnologie Open - Collabora con Arduino da oltre 5 anni

Dettagli

Finalità delle misure

Finalità delle misure Sistemi di controllo industriale tramite Ing. Lorenzo Comolli Finalità delle misure In ambito scientifico,, studiare i fenomeni, verificare sperimentalmente modelli matematici e teorie scientifiche, monitorare

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

Arduino UNO. Single board microcontroller

Arduino UNO. Single board microcontroller Arduino UNO Single board microcontroller Che cos è Arduino? Arduino è una piattaforma hardware basata su un microcontrollore, per lo sviluppo di applicazioni che possono interagire con il mondo esterno.

Dettagli

APPLICAZIONE COMPACTRIO DI RIFERIMENTO PER UN DATALOGGER A BORDO VEICOLO BASATO SU TIPS & TECHNIQUES

APPLICAZIONE COMPACTRIO DI RIFERIMENTO PER UN DATALOGGER A BORDO VEICOLO BASATO SU TIPS & TECHNIQUES APPLICAZIONE DI RIFERIMENTO PER UN DATALOGGER A BORDO VEICOLO BASATO SU COMPACTRIO Ryan King Q uesta applicazione presenta una soluzione software per un datalogger embedded stand-alone basato su hardware

Dettagli

HERCOLINO IC2 I/O DIGITALI. Modulo Potenza Timer Comando Motori. Domotica TRIAC ... HERCOLINO Modulo di potenza programmabile

HERCOLINO IC2 I/O DIGITALI. Modulo Potenza Timer Comando Motori. Domotica TRIAC ... HERCOLINO Modulo di potenza programmabile HERCOLINO HERCOLINO Modulo di potenza programmabile Modulo Potenza Timer Comando Motori Contattore Statico Automazione Industriale IC2 Domotica I/O DIGITALI Relay Stato Solido Attuatore Motori TRIAC RealTimeClock

Dettagli

Corso di Sistemi di Elaborazione A.A. 2008/2009

Corso di Sistemi di Elaborazione A.A. 2008/2009 Università di Ferrara Facoltà di Ingegneria Docente: Ing. Massimiliano Ruggeri Mail: m.ruggeri@imamoter.cnr.it mruggeri@ing.unife.it Tel. 0532/735631 Corso di Sistemi di Elaborazione A.A. 2008/2009 Durata:

Dettagli

Arduino: domotica open source

Arduino: domotica open source Arduino: domotica open source Emanuele Palazzetti Feedback: http://tinyurl.com/arduinold2011 1 Physical Computing Costruire dei sistemi fisici interattivi tramite l'uso di software e di hardware in grado

Dettagli

Rover R.E.V.2. Elenco Materiale in Possesso. Scheda di controllo RDC-101. Memoria utente: Circuito di controllo: DC 6-12V Driver motori: 4.

Rover R.E.V.2. Elenco Materiale in Possesso. Scheda di controllo RDC-101. Memoria utente: Circuito di controllo: DC 6-12V Driver motori: 4. Rover R.E.V.2 Elenco Materiale in Possesso Scheda di controllo RDC-101 Memoria utente: 64Kbit Alimentazione: Circuito di controllo: DC 6-12V Driver motori: 4.5-27V (Agendo su un jumper è possibile unificare

Dettagli

Raspberry Pi: Hardware Programming. Rossi Pietro Alberto

Raspberry Pi: Hardware Programming. Rossi Pietro Alberto Rossi Pietro Alberto Agenda Introduzione Hardware Software Programmazione, primi passi Protocolli di comunicazione Programmazione Conclusioni Introduzione Il Raspberry Pi è una scheda elettronica impementante

Dettagli

EOLO PF-2K : acquisire dati dall intero veicolo (2 linee K, bus CAN, sensori) rimanendo comodamente nel proprio ufficio

EOLO PF-2K : acquisire dati dall intero veicolo (2 linee K, bus CAN, sensori) rimanendo comodamente nel proprio ufficio EOLO PF-2K : acquisire dati dall intero veicolo (2 linee K, bus CAN, sensori) rimanendo comodamente nel proprio ufficio Dr Stefano Vianelli EURINS srl Categoria Automotive Prodotti utilizzati LabVIEW 6i,

Dettagli

PROFIBUS E PROFINET. NI compactrio. ACQUISIZIONE DATI e controllo su reti. con

PROFIBUS E PROFINET. NI compactrio. ACQUISIZIONE DATI e controllo su reti. con ACQUISIZIONE DATI e controllo su reti PROFIBUS E PROFINET con NI compactrio Come realizzare un semplice sistema di I/O distribuito interconnesso tramite rete Profibus, costituito da una architettura Master-Slave

Dettagli

Schede di gestione di ingressi e uscite digitali e/o analogiche mediante interfaccia USB, Ethernet, WiFi, CAN o RS232

Schede di gestione di ingressi e uscite digitali e/o analogiche mediante interfaccia USB, Ethernet, WiFi, CAN o RS232 IPSES S.r.l. Scientific Electronics IPSES SCHEDE DI I/O Schede di gestione di ingressi e uscite digitali e/o analogiche mediante interfaccia USB, Ethernet, WiFi, CAN o RS232 Le schede di gestione I/O IPSES

Dettagli

P R O G E T T O L A R S A A P P U N T I S U L P. L. C.

P R O G E T T O L A R S A A P P U N T I S U L P. L. C. P R O G E T T O L A R S A A P P U N T I S U L P. L. C. L automazione di un qualunque procedimento industriale si ottiene mediante un insieme d apparecchiature, opportunamente collegate tra loro, in modo

Dettagli

Verona, 29-30 ottobre 2013!

Verona, 29-30 ottobre 2013! Verona, 29-30 ottobre 2013! Il Machine Controller piattaforma integrata di Controllo, Motion, Robotica, Visione e Sicurezza su bus EtherCAT Omron Electronics spa Ing. Marco Filippis Product Manager Servo,

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 1 ª) gennaio 2015 Giorgio Carpignano I.I.S. PRIMO LEVI C.so Unione Sovietica 490 (TO) Materiale didattico: www.istitutoprimolevi.gov.it

Dettagli

Componenti principali di un computer

Componenti principali di un computer Componenti principali di un computer Unità centrale Processore Controller Memoria principale (centrale) Bus Stampante Terminale Periferiche di input/output Memorie di massa (secondarie) 1 COMPONENTI DI

Dettagli

Z-GPRS2 Z-GPRS2-SEAL

Z-GPRS2 Z-GPRS2-SEAL 100% Made & Designed in Italy -SEAL DATALOGGER GSM/GPRS CON I/O INTEGRATO E FUNZIONI DI TELECONTROLLO EASY EASY LOG VIEWER ADVANCED LANGUAGE IL PIÙ SEMPLICE SISTEMA DI TELEGESTIONE PER APPLICAZIONI UNIVERSALI

Dettagli

Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata

Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata Lezione E4 sistema bare-metal Sistemi operativi open-source, embedded e real-time 22 ottobre 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SOSERT

Dettagli

Z-GPRS2 / Z-GPRS2-SEAL IL PIÙ SEMPLICE SISTEMA DI TELEGESTIONE PER APPLICAZIONI UNIVERSALI

Z-GPRS2 / Z-GPRS2-SEAL IL PIÙ SEMPLICE SISTEMA DI TELEGESTIONE PER APPLICAZIONI UNIVERSALI / -SEAL IL PIÙ SEMPLICE SISTEMA DI TELEGESTIONE PER APPLICAZIONI UNIVERSALI DATALOGGER GSM/GPRS CON I/O INTEGRATO E FUNZIONI DI TELECONTROLLO 100% Made & Designed in Italy EASY Z GPRS2 EASY LOG VIEWER

Dettagli

Lezione E5. Sistemi embedded e real-time

Lezione E5. Sistemi embedded e real-time Lezione E5 sistema bare-metal Sistemi embedded e real-time 25 ottobre 2012 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SERT 13 E5.1 Di cosa parliamo

Dettagli

PDA ADFL Consulting Srl

PDA ADFL Consulting Srl PDA ADFL Consulting Srl Il punto 13/04/2007 PDA ARM9 - ADFL Consulting - 1 Analisi del Mercato Al settore di business che per primo ha richiesto un intervento, è stata applicata un analisi con logica top-down

Dettagli

Istruzioni per l uso. (Per l installazione Panasonic Document Management System) Digital Imaging Systems. Installazione. Sommario.

Istruzioni per l uso. (Per l installazione Panasonic Document Management System) Digital Imaging Systems. Installazione. Sommario. Istruzioni per l uso (Per l installazione Panasonic Document Management System) Digital Imaging Systems N. modello DP-800E / 800P / 806P Installazione Sommario Installazione Installazione del driver di

Dettagli

Antonio Cianfrani. Fondamenti di Reti - Prof. Marco Listanti - A.A. 2010/2011. INFOCOM Dept

Antonio Cianfrani. Fondamenti di Reti - Prof. Marco Listanti - A.A. 2010/2011. INFOCOM Dept Antonio Cianfrani Laboratorio Fondamenti di Reti 1. Introduzione ai Router IP Funzioni svolte dai Router I router operano allo strato 3 della pila protocollare OSI Individuano il cammino dei pacchetti

Dettagli

Il Microcontrollore. Microcontrollore PIC

Il Microcontrollore. Microcontrollore PIC Il Microcontrollore Per realizzare un automatismo l elettronica ci mette a disposizione diverse possibilità. La prima, la più tradizionale, si basa su componenti transistor, mosfet, integrati con porte

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

Controllare un nastro trasportatore fischertechnik con Arduino

Controllare un nastro trasportatore fischertechnik con Arduino TITOLO ESPERIENZA: Controllare un nastro trasportatore fischertechnik con Arduino PRODOTTI UTILIZZATI: OBIETTIVO: AUTORE: RINGRAZIAMENTI: Interfacciare e controllare un modello di nastro trasportatore

Dettagli

Remote Terminal Unit B-200 Pag. 1 Descrizione

Remote Terminal Unit B-200 Pag. 1 Descrizione Remote Terminal Unit B-200 Pag. 1 Descrizione Introduzione La RTU B200, ultima nata del sistema TMC-2000, si propone come valida risposta alle esigenze di chi progetta e implementa sistemi di automazione

Dettagli

Moduli per linee seriali e connessioni a linee ETHERNET

Moduli per linee seriali e connessioni a linee ETHERNET Moduli per linee seriali e connessioni a linee ETHERNET Moduli per linee seriali Moduli ETHERNET DESCRIZIONE La serie comprende moduli per linee seriali con sistema "Autopro" e moduli con porta ETHERNET

Dettagli

Architettura dei sistemi x86 Interfacce I/O

Architettura dei sistemi x86 Interfacce I/O I.I.S. Benvenuto Cellini Corso di formazione tecnica Architettura dei sistemi x86 Interfacce I/O Prof. Alessandro Pinto v.2009 Bus ISA (Industry Standard Architecture ) (1981 metà anni 90) Bus di interconnessione

Dettagli

FPGA alla portata di tutti

FPGA alla portata di tutti di ANTONIO ACQUASANTA Igloo nano Starter kit FPGA alla portata di tutti Questo articolo presenta nel dettaglio l IGLOO nano STARTER KIT di ACTEL, dal costo contenuto, per FPGA, che potrà essere usato come

Dettagli

Calcolo numerico e programmazione Architettura dei calcolatori

Calcolo numerico e programmazione Architettura dei calcolatori Calcolo numerico e programmazione Architettura dei calcolatori Tullio Facchinetti 30 marzo 2012 08:57 http://robot.unipv.it/toolleeo Il calcolatore tre funzionalità essenziali:

Dettagli

Sistema di monitoraggio delle correnti in ingresso in impianti fotovoltaici

Sistema di monitoraggio delle correnti in ingresso in impianti fotovoltaici Sistema di monitoraggio delle correnti in ingresso in impianti fotovoltaici "L uso della piattaforma CompactRIO ha consentito l implementazione di un sistema di monitoraggio adatto ad essere utilizzato

Dettagli

2 Controllo e. 1.6 Punti dati decentralizzati. 1.6.1 Saia Smart PCD3.T66x RIO Pagina 70. 1.6.2 Profibus RIO Saia PCD3.

2 Controllo e. 1.6 Punti dati decentralizzati. 1.6.1 Saia Smart PCD3.T66x RIO Pagina 70. 1.6.2 Profibus RIO Saia PCD3. 69.6 Punti dati decentralizzati thernet Profibus RS-485 PCD3.T 665 PCD3.T 76 Regolatori di 2 Controllo e camera dedicati monitoraggio e Rilevamento dei dati di consumo 3 5 Componenti Stazioni di automazione.6.

Dettagli

DS100: COLLEGAMENTI E SEGNALAZIONI

DS100: COLLEGAMENTI E SEGNALAZIONI di Davide Ferrario Il Tibbo DS100 è un Server di Periferiche Seriali, consente cioè di collegare un dispositivo munito di porta seriale ad una LAN Ethernet, permettendo quindi l accesso a tutti i PC della

Dettagli

Introduzione alle architetture per il controllo dei manipolatori

Introduzione alle architetture per il controllo dei manipolatori Introduzione alle architetture per il controllo dei manipolatori Nicola SMALDONE Controllo digitale Perché un sistema di elaborazione dati? Le uscite dell impianto vengono campionate mediante un convertitore

Dettagli

REDPITAYA: IL LABORATORIO ELETTRONICO OPEN SOURCE

REDPITAYA: IL LABORATORIO ELETTRONICO OPEN SOURCE REDPITAYA: IL LABORATORIO ELETTRONICO OPEN SOURCE di MARCO MAGAGNIN Presentiamo uno strumento programmabile di misura ed acquisizione dati, open source, realizzato utilizzando il SoC Xilinx Zynq 7010,

Dettagli

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO Laureando LUCA DA RE. Facoltà di Ingegneria Università degli Studi di Udine. I Sistemi Embedded

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO Laureando LUCA DA RE. Facoltà di Ingegneria Università degli Studi di Udine. I Sistemi Embedded FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Laureando LUCA DA RE Facoltà di Ingegneria Università degli Studi di Udine I Sistemi Embedded 2007 Pier Luca Montessoro e Luca Da Re (si veda la nota

Dettagli

Rilheva - LAN. Manuale d uso. Ethernet System

Rilheva - LAN. Manuale d uso. Ethernet System Rilheva - LAN Manuale d uso Ethernet System INDICE DIMENSIONI 3 AVVERTENZE DI SICUREZZA 4 DESCRIZIONE GENERALE 4 ARCHITETTURA DEL SISTEMA 5 APPLICAZIONI 6 CONFIGURAZIONE DEL DISPOSITIVO 6 DIAGNOSTICA 7

Dettagli

PROGETTO ROBOT BIPEDE

PROGETTO ROBOT BIPEDE Esame di stato 2012/2013 PROGETTO ROBOT BIPEDE Dalla Pellegrina Ivan Indice Introduzione Progetto Ricerca I vantaggi della costruzione di un Robot Lista materiali (breve descrizione componenti) Principio

Dettagli

Introduzione ai Microcontroller

Introduzione ai Microcontroller Corso di Percezione Robotica - Prof.ssa Cecilia Laschi 23/04/2009 Introduzione ai Microcontroller Dr. Virgilio Mattoli (mattoli@crim.sssup.it) Processori Embedded I microprocessori embedded sono contenuti

Dettagli

Robotronix Controller for Laser and Scanner

Robotronix Controller for Laser and Scanner Robotronix Controller for Laser and Scanner ATTENZIONE Si consiglia l utilizzo del RoboCLASS esclusivamente all interno di un appropriato contenitore. ATTENZIONE Maneggiare con cura il RoboCLASS dentro

Dettagli

Gianluigi Magnasco easitec S.r.l. Parma, 16 Settembre 2010

Gianluigi Magnasco easitec S.r.l. Parma, 16 Settembre 2010 Soft Control facile con RTX e Windows Embedded Standard 7 RTX 2009: funzionalità ed uso pratico Gianluigi Magnasco easitec S.r.l. Parma, 16 Settembre 2010 Definizione di Sistema Tempo Reale: Definizione

Dettagli

IL DSP - Digital Signal Processor

IL DSP - Digital Signal Processor IL DSP - Digital Signal Processor Processore dei segnali digitali 1. Generalità Il Digital Signal Processor (DSP, processore di segnali digitali) è un particolare tipo di microprocessore, ottimizzato per

Dettagli

La simulazione motore nel test automatico per centraline auto. 1/7 www.ni.com

La simulazione motore nel test automatico per centraline auto. 1/7 www.ni.com La simulazione motore nel test automatico per centraline auto "Grazie a LabVIEW è stato possibile riutilizzare tutti gli oggetti software e le funzioni precedentemente sviluppate e collaudate" - L. Pantani,

Dettagli

03 L architettura del computer e la CPU (parte 2) Dott.ssa Ramona Congiu

03 L architettura del computer e la CPU (parte 2) Dott.ssa Ramona Congiu 03 L architettura del computer e la CPU (parte 2) Dott.ssa Ramona Congiu 1 Anatomia del computer Dott.ssa Ramona Congiu 2 L Unità centrale 3 Anatomia del computer 4 La scheda madre All interno del computer

Dettagli

Input/Output: bus, interfacce, periferiche

Input/Output: bus, interfacce, periferiche Architettura degli Elaboratori e delle Reti Lezione 29 Input/Output: bus, interfacce, periferiche A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L

Dettagli

Microprocessori, Microcontrollori e DSP (Digital Signal Processors)

Microprocessori, Microcontrollori e DSP (Digital Signal Processors) Microprocessori, Microcontrollori e DSP (Digital Signal Processors) Il microprocessore è un dispositivo integrato digitale che può essere programmato con una serie di istruzioni per effettuare una specifica

Dettagli

Sistema di Input/Output modulare e auto-configurante www.theremino.com

Sistema di Input/Output modulare e auto-configurante www.theremino.com 1 Sistema di Input/Output modulare e auto-configurante www.theremino.com Cos è Theremino Theremino è un sistema modulare e componibile, FREE e OPEN, progettato per interfacciare Windows, Linux, Android

Dettagli

Acme Systems srl Profilo Aziendale

Acme Systems srl Profilo Aziendale Roberto ASQUINI Sergio TANZILLI Acme Systems srl Profilo Aziendale 10 anni di attività Progettazione interna Più fornitori per gli stessi prodotti Montaggio in sede Vendita diretta in 50 paesi 80% mercato

Dettagli

Building automation con Titino ed Arduino

Building automation con Titino ed Arduino Building automation con Titino ed Arduino Il progetto Titino nasce dopo una prima analisi delle soluzioni di building automation già esistenti e consolidate sul mercato, che hanno le seguenti criticità:

Dettagli

Le tendenze future nella tecnologia PC Bus

Le tendenze future nella tecnologia PC Bus Le tendenze future nella tecnologia PC Bus Agenda Bus Il software NI Demo Domande I Bus Test and Measurement Message based GPIB Ethernet USB Register-based VXI PCI PXI PCI Express Cos è la GPIB? General

Dettagli

MACCHINA DI VON NEUMANN

MACCHINA DI VON NEUMANN I seguenti appunti non hanno la pretesa di essere esaustivi, ma hanno l unico scopo di illustrare in modo schematico i concetti necessari allo sviluppo del programma di Informatica della 1D del Liceo Scientifico

Dettagli

Progettazione di reti AirPort

Progettazione di reti AirPort apple Progettazione di reti AirPort Indice 1 Per iniziare con AirPort 5 Utilizzo di questo documento 5 Impostazione Assistita AirPort 6 Caratteristiche di AirPort Admin Utility 6 2 Creazione di reti AirPort

Dettagli

ITS Einaudi Appunti T.D.P. Z USB IO A&D con LABVIEW

ITS Einaudi Appunti T.D.P. Z USB IO A&D con LABVIEW Z USB IO A&D con LABVIEW L interfaccia nasce dalla necessità di sostituire le periferiche usate fin ora in laboratorio basate sulla porta parallela e seriale del PC. Questo tipo di interfacce ormai poco

Dettagli

Configurazione moduli I/O serie EX

Configurazione moduli I/O serie EX Configurazione moduli I/O serie EX aggiornamento: 20-12-2014 IEC-line by OVERDIGIT overdigit.com Tabella dei contenuti 1. Moduli di I/O con protocollo Modbus... 3 1.1. Parametri di comunicazione... 4 1.2.

Dettagli

1. INTRODUZIONE ETH-BOX

1. INTRODUZIONE ETH-BOX Software ETH-LINK 10/100 Manuale d uso ver. 1.0 1. INTRODUZIONE Il Convertitore Ethernet/seriale ETH-BOX, dedicato alla connessione Ethernet tra PC (TCP/IP e UDP) e dispositivi di campo (RS-232, RS-485),

Dettagli

ARDUINO. Ing. Francesco Giurlanda francesco.giurlanda@iet.unipi.it

ARDUINO. Ing. Francesco Giurlanda francesco.giurlanda@iet.unipi.it ARDUINO Ing. Francesco Giurlanda francesco.giurlanda@iet.unipi.it Cos'è ARDUINO? Il progetto nasce ad Ivrea, nel 2005. Obiettivo: realizzare un sistema di prototipizzazione economico. Al Maggio del 2011

Dettagli

pod Guida all installazione di rete del Solstice Pod Introduzione Solstice Pod Collaborazione Visuale Wireless Solstice sulla vostra rete

pod Guida all installazione di rete del Solstice Pod Introduzione Solstice Pod Collaborazione Visuale Wireless Solstice sulla vostra rete Introduzione Solstice Pod Collaborazione Visuale Wireless Una volta installato, il Solstice Pod permette a più utenti di condividere simultaneamente il proprio schermo su un display tramite la rete Wi-Fi

Dettagli

Open Hardware: Arduino Linux day 2012

Open Hardware: Arduino Linux day 2012 Open Hardware: Arduino Linux day 2012 27/10/2012 Luca Pais Arduino team Cos'è Arduino Cos'è Arduino Arduino è tre cose: Cos'è Arduino E' un oggetto fisico: Cos'è Arduino E' un ambiente di sviluppo:

Dettagli

Un micro FPGA. skills. come il core ABC. il core ABC sia la suite di sviluppo di AC-

Un micro FPGA. skills. come il core ABC. il core ABC sia la suite di sviluppo di AC- skills di Un micro FPGA che parte dall ABC Quando in molti progetti è necessario unire alla logica programmabile la funzionalità di un piccolo microprocessore le soluzioni semplici come il core ABC possono

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi a.a. 2010/2011 Francesco Fontanella Il Sistema Operativo Sistema Operativo 2 Il Sistema Operativo Il Sistema Operativo è uno strato

Dettagli

DD 1050i. Terminale di pesatura Serie Diade. Touch screen, mille dati con un dito.

DD 1050i. Terminale di pesatura Serie Diade. Touch screen, mille dati con un dito. DD 1050i Terminale di pesatura Serie Diade Touch screen, mille dati con un dito. Terminale di pesatura Serie Diade DD 1050i DIADE in matematica indica la combinazione di due elementi per raggiungere l

Dettagli

Unità CAN Master USB

Unità CAN Master USB Unità CAN Master USB Board USB Datasheet Pag. 1 1 ISTRUZIONI Sommario 1. INTRODUZIONE... 3 2. SCHEDA USB CAN... 4 3. HARDWARE... 5 4. PROTOCOLLO DI COMUNICAZIONE SU BUS USB... 6 4.1 Formato comandi e risposte...

Dettagli

K8076 Manuale utente

K8076 Manuale utente K8076 Manuale utente Informazioni generali 1. Introduzione La ringraziamo per aver acquistato e realizzato questo kit Velleman. Il K8076 rappresenta un programmatore per uso didattico, in grado di programmare

Dettagli

Automazione Direzione Progetto Progettazione HSRIO

Automazione Direzione Progetto Progettazione HSRIO HSRIO_BROCHURE.DOC HSRIO HIGH SPEED REMOTE INPUT OUTPUT Nome documento: Hsrio_Brochure.doc Responsabile: Bassignana Luigi Data: 01/04/2008 1 DESCRIZIONE Sistema modulare di IO remoto ad alta velocità,

Dettagli

EC099000 MINI PC ANDROID 4.0 PER SMART TV

EC099000 MINI PC ANDROID 4.0 PER SMART TV EC099000 MINI PC ANDROID 4.0 PER SMART TV PC in miniatura a forma di chiavetta con Wi Fi integrato che, collegato a un televisore con HDMI, lo trasforma in uno smart TV con cui è possibile navigare in

Dettagli

Progetto Esami Di Stato Anno 2014/2015

Progetto Esami Di Stato Anno 2014/2015 Progetto Esami Di Stato Anno 2014/2015 Candidato: Ardilio Angelica Classe: 5 B - I.T.I.S. Elettronica ed Elettrotecnica. T.P.S.E.E. Tecnologia & Progettazione di Sistemi Elettrici ed Elettronici ARDUINO.

Dettagli

Catalogo Prodotti e Semilavorati Anno 2010

Catalogo Prodotti e Semilavorati Anno 2010 Catalogo Prodotti e Semilavorati Anno 2010 Pag 1 di 10 Sommario 1 SMALL EMBEDDED BOARD MC9S08D FREESCALE... 3 2 MEDIUM EMBEDDED BOARD MC9S12X FREESCALE... 4 3 SMALL EMBEDDED DISPLAY ARM 7 LPC2478 NXP...

Dettagli

Guida rapida all installazione

Guida rapida all installazione Guida rapida all installazione Wireless Network Broadband Router 140g+ WL-143 La presente guida illustra solo le situazioni più comuni. Fare riferimento al manuale utente contenuto nel CD-ROM in dotazione

Dettagli

Il Personal Computer

Il Personal Computer Il Personal Computer 18 Hardware 1 Hardware: componenti fisiche dell elaboratore; la forma e le prestazioni dell hardware variano in funzione del tipo di elaboratore Principali componenti hardware: unità

Dettagli

Architettura Hardware di un Router

Architettura Hardware di un Router - Laboratorio di Servizi di Telecomunicazione Architettura Hardware di un Router Slide tratte da Cisco Press CCNA Instructor s Manual ed elaborate dall Ing. Francesco Immè Wide Area Network (WAN) Le principali

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

WEB CONTROLLI NETOOLS. Descrizione e modalità d uso dei controlli web NeTools

WEB CONTROLLI NETOOLS. Descrizione e modalità d uso dei controlli web NeTools MANUALE D USO WEB CONTROLLI NETOOLS Descrizione e modalità d uso dei controlli web NeTools Rev.1309 Pag.1 di - 111 - www.carrideo.it INDICE 1. I WEB CONTROLLI NETOOLS... 3 1.1. INTRODUZIONE... 3 1.2. DESCRIZIONE

Dettagli

Bus di sistema. Bus di sistema

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

Dettagli

Corem, Unità di Controllo di Sistemi non presidiati

Corem, Unità di Controllo di Sistemi non presidiati ISTITUTO NAZIONALE DI GEOFISICA E VULCANOLOGIA OSSERVATORIO VESUVIANO Corem, Unità di Controllo di Sistemi non presidiati G.Scarpato, W.De Cesare, C.Buonocunto Rapporto Tecnico n 2-2005 Osservatorio Vesuviano

Dettagli

Nessie 2013 prende il volo

Nessie 2013 prende il volo La scienza, qualsivoglia siano i suoi ultimi sviluppi, ha le sue origini nelle tecniche, nelle arti e nei mestieri. La scienza emerge nel contatto con le cose, dipende dall evidenza dei sensi, e, per quanto

Dettagli

e automazione industriale

e automazione industriale Corso di Laurea Magistrale di Ingegneria Elettrica Corso di Sistemi e componenti per l automazione AA 2014-15 Azionamenti elettrici e automazione industriale Ezio Bassi, Francesco Benzi Università di Pavia

Dettagli

Indice MANUALE TECNICO CDMX

Indice MANUALE TECNICO CDMX manuale Utente CDMX Indice 1 Overview... 3 1.1 Caratteristiche... 4 1.2 Package checklist... 4 1.3 Specifiche Tecniche... 5 2 Architettura per la remotazione del protocollo DMX512... 6 3 Installazione

Dettagli

Valutazione del sistema di storage EMC CLARiiON AX4

Valutazione del sistema di storage EMC CLARiiON AX4 Valutazione del sistema di storage EMC CLARiiON AX4 Relazione preparata sotto contratto con EMC Introduzione EMC Corporation ha incaricato Demartek di eseguire una valutazione pratica del nuovo sistema

Dettagli

Le Memorie interne: RAM, ROM, cache. Appunti per la cl. IV sez. D a cura del prof. Ing. Mario Catalano

Le Memorie interne: RAM, ROM, cache. Appunti per la cl. IV sez. D a cura del prof. Ing. Mario Catalano Le Memorie interne: RAM, ROM, cache Appunti per la cl. IV sez. D a cura del prof. Ing. Mario Catalano 1 Le memorie Cosa vorremmo : una memoria veloce abbastanza grande da contenere tutti i dati e i programmi

Dettagli

Parte IV Architettura della CPU Central Processing Unit

Parte IV Architettura della CPU Central Processing Unit Parte IV Architettura della CPU Central Processing Unit IV.1 Struttura della CPU All interno di un processore si identificano in genere due parti principali: l unità di controllo e il data path (percorso

Dettagli

Guida rapida DVR HD Parte prima: Operazioni di base Parte due: Controllo remoto

Guida rapida DVR HD Parte prima: Operazioni di base Parte due: Controllo remoto Guida rapida DVR HD Parte prima: Operazioni di base... 2 1. Installazione di base... 2 2. Avvio... 2 3. Spegnimento... 2 4. Accesso... 2 5. Anteprima... 3 6. Configurazione registrazione... 3 7. Riproduzione...

Dettagli

Xpress MANUALE OPERATIVO. Software di configurazione e controllo remoto I440I04_15

Xpress MANUALE OPERATIVO. Software di configurazione e controllo remoto I440I04_15 Xpress I440I04_15 Software di configurazione e controllo remoto MANUALE OPERATIVO INDICE 1 INTRODUZIONE... 3 2 REQUISITI HARDWARE E SOFTWARE... 3 3 SETUP... 3 4 PASSWORD... 4 5 HOME PAGE... 4 6 CANALE...

Dettagli

La tecnica proporzionale

La tecnica proporzionale La tecnica proporzionale Regolatori di pressione La tecnica proporzionale Regolatori di pressione La tecnica proporzionale La tecnica proporzionale Controllo direzione e flusso La tecnica proporzionale

Dettagli

Software di progettazione e configurazione RSLogix 5000

Software di progettazione e configurazione RSLogix 5000 Software di progettazione e configurazione RSLogix 5000 Novità della versione 20 Miglioramenti della versione 20 L ultima versione del software RSLogix 5000 offre un sistema integrato di controllo ad alte

Dettagli

Grado di protezione IP 65 Classe di protezione Condizioni ambientali Da - 25 C a + 55 C

Grado di protezione IP 65 Classe di protezione Condizioni ambientali Da - 25 C a + 55 C 52 / Guida Pratica Prodotti e Servizi Accessori per inverter / I nostri accessori completano tutti gli impianti FV, semplificano l installazione e provvedono alla necessaria sicurezza del sistema Fronius

Dettagli

Software della stampante

Software della stampante Software della stampante Informazioni sul software della stampante Il software Epson comprende il software del driver per stampanti ed EPSON Status Monitor 3. Il driver per stampanti è un software che

Dettagli

Fiery Network Controller per Xerox WorkCentre 7800 Series. Guida introduttiva

Fiery Network Controller per Xerox WorkCentre 7800 Series. Guida introduttiva Fiery Network Controller per Xerox WorkCentre 7800 Series Guida introduttiva 2013 Electronics For Imaging, Inc. Per questo prodotto, il trattamento delle informazioni contenute nella presente pubblicazione

Dettagli

CPU 32 bits. Specifiche Tecniche. Rif : MS-CPU32. Generale. Alimentazione. Batteria Interna al Litio. Memory

CPU 32 bits. Specifiche Tecniche. Rif : MS-CPU32. Generale. Alimentazione. Batteria Interna al Litio. Memory CPU 32 bits Rif : MS-CPU32 Scheda industriale con processore a 32bits IT Embedded (Web Server, email, FTP, IP forwarding, ) Supporto PLC completo (IEC1131-3, Basic, Linguaggio C, ) Hardware modulare rimovibile

Dettagli

Touch screen, mille dati con un dito

Touch screen, mille dati con un dito DD 1050 Terminale di pesatura Serie Diade Touch screen, mille dati con un dito Strumenti e Tecnologie per Pesare Terminale di pesatura Serie Diade DD 1050 DIADE in matematica indica la combinazione di

Dettagli

Sommario della lezione

Sommario della lezione Sistemi Operativi Docente: Ugo Erra ugoerr+so@dia.unisa.it 2 LEZIONE STRUTTURE DEI SISTEMI OPERATIVI CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione

Dettagli

idaq TM Manuale Utente

idaq TM Manuale Utente idaq TM Manuale Utente Settembre 2010 TOOLS for SMART MINDS Manuale Utente idaq 2 Sommario Introduzione... 5 Organizzazione di questo manuale... 5 Convenzioni... Errore. Il segnalibro non è definito. Installazione...

Dettagli

MAESTRO-PV Specifiche tecniche per sistema telecontrollo, gestione e invio allarmi per impianti fotovoltaici

MAESTRO-PV Specifiche tecniche per sistema telecontrollo, gestione e invio allarmi per impianti fotovoltaici SPECIFICHE TECNICHE MAESTRO-PV Specifiche tecniche per sistema telecontrollo, gestione e invio allarmi per impianti fotovoltaici RSPV05I1 rev.01 0909 (Descrizione) Il sistema di telegestione telecontrollo

Dettagli

RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO REMOTO TRAMITE TCP/IP

RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO REMOTO TRAMITE TCP/IP RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO REMOTO TRAMITE TCP/IP seconda parte di Cristian Randieri randieri@intellisystem.it In questa seconda parte della presentazione del dispositivo

Dettagli