Il sistema di sviluppo RTARM è una distribuzione Linux autonoma derivata da ubuntu 10.04.
Viene fornito gratuitamente (esclusi costo chiavetta usb spese spedizione e installazione) su una chiavetta USB da 8gb è autopartente, ed è installabile sul PC contiene tutto quello che serve per programmare la scheda RTARM-Servo con micro lpc2368 et similia.
Contiene un porting del sistema operativo in hard real time FreeRTOS con delle librerie di estensioni fatte da me per l'uso in meccatronica che costituiscono il Framework E-Motion).
La scheda e il sistema di sviluppo sono accessibili al seguente link: www.rtarm.it
Per iniziare basta inserire la chiavetta USB o il DVD e riavviare il PC.
Il sistema di sviluppo è basato completamente su gnu/linux
L'IDEA
L’esigenza di automatizzare le macchine e gli impianti nelle industrie ha raggiunto in
questi ultimi anni livelli elevatissimi, dovuti alla necessità delle aziende di
competere in termini di qualità, precisione, quantità, tempi e costi. Nel settore
dell’automazione industriale la necessità di collegamento di apparecchiature di
controllo, anche diverse tra loro, è diventata, quindi, un'esigenza primaria.
Ma è di fondamentale importanza almeno nelle PMI utilizzare sistemi che possano
entrare nel know how dell'azienda a costi accessibili e liberamente modificabili per
adattarli facilmente alle nuove richieste di mercato e specialmente poter contare sul
supporto di una vasta platea di sviluppatori/utilizzatori. Senza i costi legati allo
sviluppo, alla manutenzione ed eventualmente pure all'acquisizione dei sistemi
proprietari.
Ecco perchè L' OpenSource per il software e i sistemi COTS per l'hardware ci sembrano
l'unica via sensata percorribile per le esigenze di tipo meccatronico delle PMI.
MOTIVAZIONI AL PROGETTO
Lavorando per anni in una piccola azienda di progettazione e produzione di sistemi
di controllo , di automazione di macchine, ho progettato sistemi meccatronici per il
controllo di ante, montascale, schede di controllo assi e sistemi di controllo
distribuiti. Spesso nella mia attività progettuale mi sono trovato a dover lavorare
con sistemi di automazione e controllo e con diverse famiglie di microcontrollori a 8-
16-32 bit di tipo CISC e RISC. utilizzanti diverse tipologie di sistemi di sviluppo
spesso incompatibili fra di loro, per non parlare delle differenti implementazioni del
linguaggio “C”, alcune fra l'altro estremamente costose e protette da chiavi hardware.
Focalizzando l'attenzione solo sui sistemi a microcontrollore, i sistemi semplici
venivano realizzati con la metodica del loop infinito :
main () { while (1) { /* codice */ } }
I sistemi più complessi venivano implementati con costosi sistemi di librerie ed RTOS
proprietari.
Durante la fase di sviluppo talvolta si rendeva necessario modificare le risorse
hardware del controllore quali: ram , flash , periferiche varie, per esigenze sorte
successivamente. Le apparecchiature sviluppate, spesso, non potevano essere utilizzate
per altri lavori, ma era necessario modificare il progetto talvolta anche
radicalmente. Ciò poteva richiedere anche diversi mesi di lavoro per la riprogettazione
degli schematics , per lo sbroglio dei PCB e il riadattamento del sw del micro.
In questo contesto, è maturata l'idea di un ambiente unico Hw/Sw OpenSource per
implementare applicazioni legate al controllo di macchine e alla robotica .
SISTEMA DI SVILUPPO RTARM
Il sistema di sviluppo RTARM è una distribuzione Linux autonoma realizzata dal
sottoscritto , derivata da ubuntu 10.04
(Desktop del sistema di sviluppo di RTARM)
il link del sistema di sviluppo è il seguente:
http://www.rtarm.it/
e consente in completa autonomia di sviluppare
software, debuggare, programmare le schede di livello RTARM-Servo che sono basate su
ARM7.
Tale sistema di sviluppo contiene un IDE, un Cross compilatore per ARM7/9 un programmatore JTAG , un Framework chiamato E-Motion che contiene il FreeRTOS (kernel in hard real time).Il tutto perfettamente integrato in un unico ambiente integrato di sviluppo sw.
l'immagine ISO della distribuzione di sviluppo RTARM è circa 4 gb ed è disponibile previa registrazione nel sito www.rtarm.it
E' previsto che sistema di sviluppo RTARM debba sviluppare anche per il layer
decisionale dell'architettura RTARM ossia: RTARM-d
Che, è basato sul sistema operativo RTEMS su processore Leon3 SPARC V8 (della Gaisler Research) in multicore su FPGA. con un porting effettuato su tale S.O. delle FuzzyCLIPS (librerie di un ambiente fuzzy in scritte C).
FuzzyClips è stato utilizzato per poter implementare agenti (BkU) di tipo reattivo e/o deliberativo su dei nodi di processo con delle precondizioni e postcondizioni per il passaggio da un nodo ad un altro.
Per maggiori informazioni si può fare riferimento al link
http://89.202.197.80/uni/clublaureati/external/doc/CONTRIBUTI/articolo_Sarda.pdf
mentre chi volesse approfondire ulteriormente può fare riferimento al seguente link
http://www.tesionline.it/default/tesi.asp?idt=26608
dove è descritta tutta l'architettura robotica OpenSource RTARM nei tre layer
SERVO (RTARM-Servo), DECISIONALE (RTARM-d) , UTENTE (RTARM-i)
(Il Layer decisionale RTARM-d anche se decritto nel precedente lavoro, non è stato al momento completamente implementato)
RTARM-i
La distro linux di sviluppo di RTARM utilizza un Kernel 2.6 Patchato con le RTAI estensioni Real Time del Politecnico di Milano e altre librerie di comunicazione e controllo. Sempre con lo stesso IDE si possono sviluppare applicazioni in tempo reale per Linux con EPICS , LabCa + Scilab per realizzare sistemi distribuiti di controllo. Tale ambiente di sviluppo prende il nome di Layer Utente oppure semplificato come RTARM-i(nteraction) e consente di interagire sempre attraverso le LAbCa con i layer inferiori dell'architettura che sono proprio RTARM-Servo ed RTARM-d.
RTARM-SERVO
L'implementazione dell'hardware della BSP di RTARM-SERVO è stata effettuata dal sottoscritto.
Una scheda BSP (mir0) del layer RTARM-SERVO è visibile al seguente link
http://www.rtarm.it/
Il primo prototipo realizzato è il seguente:
Dapprima si sono creati i moduli di libreria dei componenti che dovevano essere utilizzati , dopo di chè si sono realizzati gli schematics, ove , si sono integrati sensore accelerometrico doppio asse X-Y, bus I2C per la connessione con altre periferiche e modulo di comunicazione GSM/GPS.
Schema a Blocchi
gli schematics sono i seguenti:
Tipologie di Funzioni del Framework E-Motion di RTARM-Servo
Tutte le funzioni di E-Motion utilizzabili da RTARM Servo sono riconducibili alle seguenti tipologie:
* Robotico in senso stretto
* I/O Generici Analogico Digitali
* Trattamento dei dati sensoriali
* Comunicazioni
* Sistema Operativo
Il Framework E-Motion di RTARM-Servo contiene come già detto il porting del sistema operativo in hard real time FreeRTOS con delle librerie di estensioni fatte da me per l'uso in meccatronica consistenti in un insieme di funzioni in “c” ,
che si occupano della gestione dei sensori, degli attuatori , del sub system di
comunicazione e dell'interfacciamento con il livello di astrazione più elevato.
L'accesso alle funzioni del layer E-MOTION può essere effettuato dal layer
superiore attraverso i bus I2C sui canali CA di EPICS
(ciò ha reso necessario il porting di iocCore su FreeRTOS tuttora in fase di sviluppo).
Tra le funzioni di comunicazione ci sono le librerie di comunicazione TCP/IP (IPV4) su ethernet. Funziona pure l'SMTP attraverso l'adattamento delle librerie TCP/IP di Adam Dunkel, il quale mi ha supportato in fase di porting.
NOTE ARCHITETTURALI HW DI RTARM
L'architettura hardware di RTARM è formata da due layer hardware che prendono il nome di Layer “Decisionale” e Layer “Servo-Sensoriale”, più un terzo layer opzionale “Utente” che implementa l'interfaccia utente , previsto anche da alcune architetture robotiche.
Il layer Decisionale RTARM-d (Descritto nei link sopraevidenziati ma non ancora implementato fisicamente nella sua interezza)
si basa sull'implementazione di una architettura LEON3 – SMP
quadricore , su bus amba, portata su FPGA. Ognuno di tali FPGA rappresenterà un nodo
di calcolo. Ogni nodo disporrebbe di capacità elaborativa pari a circa 1000 MIPS (su ASIC). Tali nodi comunicheranno fra di loro attraverso appositi canali FireWire e I2C, duplicati per esigenze di resistenza al guasto. Per l' implementazione delle comunicazioni inter-nodali a livello decisionale si è ritenuto valido utilizzare le potenzialità offerte dai prodotti commerciali non legati alle reti ethernet, in quanto la mission di questo lavoro è quella di progettare una architettura real time e le reti ethernet non sono adatte a tali applicazioni per la latenza di bus non deterministico. Ma appunto si utilizzeranno i bus FireWire IEEE 1394.
Insieme agli ambienti software per il real-time OpenSource
quali RTEMS/EPICS che combinano caratteristiche di real-time spinto (hard) con le
funzionalità di comunicazione adatte ad architetture multiprocessore collegate in modo
distribuito in rete. Tutto ciò si è reso necessario per rendere scalabile l'architettura .
Per raggiungere la fault tolerance desiderata si potranno utilizzare anche alcune tecniche a livello di sistema quali ridondanza della unità di calcolo, dei bus di comunicazione etc, altre a livello di microsistema implementate direttamente in VHDL ad esempio protezione della memoria con codici di parità , uso di registri e latches ridondanti.
Il Layer Servo RTARM-Servo
Si è deciso di implementare il Layer Servo-Sensoriale con core ARM7 per l'enorme
disponibilità di tale soluzione sul mercato e per la disponibilità dell'IP in VHDL oltre che per il costo estremamente contenuto. Si consideri infatti che alcune implementazioni
del core ARM7 in microcontrollori commerciali costano appena una manciata di euro.
In una prima fase, per validare il layer ServoSensoriale di RTARM è stata sviluppata una board che utilizza processori commerciali del tipo NXP LPC 2368 della potenza di elaborazione di 60 MIPS. Come target finale invece si utilizzerà un FPGA ACTEL FUSION con core IP ARM7TDMI.
Per maggiori dettagli si faccia riferimento al link
http://www.tesionline.it/default/tesi.asp?idt=26608
Layer Utente RTARM-i
PC con Linux con estensioni Hard Real Time (RTAI) e librerie di supporto.
NOTE FINALI
Tutto il sistema di sviluppo per RTARM è ben lungi dall'essere completo.
Infatti mentre è abbastanza completo e collaudato per quel che concerne il Layer RTARM-Servo, è ancora in fase di sviluppo per gli altri due RTARM-d e RTARM-i.
Chi fosse interessato a contribuire al progetto può contattarmi.