Introduzione

• Questo progetto nasce dalla mia passione per la Robotica.
• Robotica = Informatica + Elettronica + Meccanica.
• Il prototipo che ho realizzato include al suo interno numerose tecnologie che permettono di comunicare all’utente informazioni sull’ambiente circostante e sulla posizione del Robot.
• Il Robot necessita di una forte interazione con il suo utilizzatore.
• Non si tratta infatti di un Robot autonomo ma di un ‘Rover’ in grado di effettuare semplici e complesse operazioni ‘a distanza’.
• Proprio l’interazione ‘Uomo-Macchina’ è uno degli argomenti che fin da piccolo mi hanno appassionato e che continuo a studiare sia a scuola sia a casa.
• Ho preferito creare ‘da zero’ il Robot piuttosto che utilizzare progetti già pronti in modo da poter imparare meglio i meccanismi che consentono ad una ‘macchina’ di svolgere il lavoro richiesto da un essere umano.
• Ho chiamato questo prototipo MAR10 (Measuring Advanced Robot Versione 10).
• La realizzazione di MAR10 è costata circa 500 Euro non considerando i componenti elettrici e i pezzi meccanici che già possedevo.

 

Storia delle Versioni

 

• L’idea di costruire un Robot nasce nel Febbraio-Marzo 2012.
• Dopo aver acquistato una Fox Board G20 mi sono messo alla ricerca dei pezzi meccanici di base come i motori e le ruote.
• Man mano ho acquistato i vari componenti elettrici ed ho iniziato a scrivere il software del Robot.
• Successivamente ho scritto il software in Java per il collegamento via Socket e ho installato i servizi Web-based del Webserver.
• Il progetto è stato concluso a fine Maggio 2013.

Hardware - Schema Logico

Struttura - Tecnica Costruttiva

• I dispositivi e i circuiti che compongono il robot sono posizionati su due ripiani in vetronite (basette millefori) di dimensioni standard: 160x100 mm.
• La Scheda 1, che corrisponde al ripiano basso, poggia sulle ruote e regge con 4 ‘Spacer’ da 6 cm la Scheda 2 ovvero il ripiano più alto.
• Tutti i circuiti e i collegamenti che compongono il Robot, escludendo i moduli Daisy, il Sonar e la Fox Board, sono saldati a mano con una lega di Stagno-Piombo (60/40).
• La progettazione dei circuiti, ovvero gli schemi elettrici, è stata prevalentemente realizzata su carta. In seguito si è provveduto a ‘digitalizzare’ il lavoro svolto con il software Multisim della National Instruments.
• Per organizzare la disposizione dei componenti è stato utilizzato il software Open source Fidocad.
• La maggior parte dei circuiti, prima di essere saldati, sono stati montati in una breadboard.

SCARICA GLI SCHEMI ELETTICI E TOPOGRAFICI

Struttura - Scheda 1

• La Scheda 1 è la scheda dove sono raggruppati la maggior parte dei dispositivi e dei controller.
• Su di essa si trovano: Batteria, Fusibile, Stabilizzatori, Shutdown Controller, Battery Check, 12 Volt Enabler, Sensori di prossimità, Led, Motori per il movimento delle ruote, Contagiri e Webcam.

Struttura - Scheda 2

• Sulla Scheda 2 sono presenti i dispositivi più complessi ovvero: Fox Board G20, modulo Daisy 7, modulo Daisy 13 e modulo SRF08 con il suo motore.
• Sono presenti anche il Clacson e il Faretto Anteriore.
• Pur avendo meno dispositivi, la Scheda 2 è la più importante perché su di essa si trova la Fox Board, il ‘cervello’ del robot, che contiene tutto il software necessario al funzionamento dei vari circuiti e sensori.

Struttura - Connessione tra le schede

• Le due schede devono necessariamente essere collegate insieme per poter funzionare.
• Un unico cavo flat a 40 pin si occupa di trasferire l’alimentazione e tutti i segnali da una scheda all’altra.
• Durante la costruzione del robot, spesso  era necessario rimuovere la Scheda 2 per poter effettuare delle saldature o dei test. Per questo motivo è stato inserito un connettore ausiliario a 4 pin che fornisce alla Scheda 2 solo l’alimentazione a 5 Volt. In questo modo la Fox Board sarà utilizzabile anche se non potrà dialogare con i dispositivi della Scheda 1.

Alimentazione - Batteria

• La batteria è costituita da 4 celle collegate in serie.
• Ogni cella è un accumulatore a Ioni di Litio che fornisce 3,7 Volt.
• La tensione in uscita dalla batteria è quindi di 14,8 Volt.
• Ogni cella ha la capacità di 2,2 Ampere/Ora.

Alimentazione - Caricatore

• Il Caricatore permette di ricaricare in sicurezza la batteria, fornendo esattamente 4,2 Volt per cella (16,8 Volt in totale) con una corrente non superiore a 985 milliampere.
• Un alimentatore HP da 18,5 Volt alimenta il circuito di regolazione della corrente e della tensione progettato da Scott Henion.

Alimentazione - Fusibile

• Per protezione da eventuali cortocircuiti, subito prima dell’interruttore generale è presente un fusibile da 3,15 Ampere.
• Una eventuale corrente superiore a questo valore, fa bruciare immediatamente il fusibile, senza danneggiare gli altri circuiti.

Alimentazione - Shutdown Controller

• Lo Shutdown Controller, inserito in un apposito connettore della Scheda 1, permette il completo spegnimento del Robot quando il sistema operativo della Fox Board viene arrestato.
• Il circuito è composto principalmente da un relè bistabile a doppia bobina.
• Un pulsante posizionato sul retro permette l’accensione del Robot.
• Il segnale SHDN (Shutdown) proveniente dalla Fox Board provoca invece l’interruzione dell’alimentazione.
• Lo Shutdown Controller essendo rimovibile risulta essere anche la ‘chiave’ di accensione del Robot.
• In mancanza di questa piccola scheda il Robot non potrà essere acceso.

Alimentazione - Stabilizzatori

• Gli stabilizzatori di tensione hanno l’importante compito di livellare e stabilizzare la tensione della batteria, che, oltre ad essere troppo elevata, varia in base alla carica residua.
• Gli integrati L7805 e  L7812 forniscono in uscita rispettivamente 5 Volt e 12 Volt.
• La tensione superflua viene inevitabilmente trasformata in calore che viene smaltito con un dissipatore metallico e da una ventola alimentata a 12 Volt.

Alimentazione - Battery Check

• Un piccolo circuito formato da un optoisolatore H11D4, segnala alla Fox Board se la batteria è in carica.
• Inoltre, la tensione della batteria, abbassata con un partitore di tensione, viene misurata dalla Fox Board grazie al suo ADC (Analog to Digital Converter).
• Il software di gestione sarà quindi in grado di mostrare il livello di carica residua della batteria.
• Il dispositivo viene chiamato anche BSI (Battery Status Indicator).

Alimentazione - 12 Volt Enabler

• Un ulteriore piccolo circuito, formato da un relè e da un transistor NPN tipo BC517, si occupa di scollegare il motore posteriore e i 12 Volt se richiesto dalla Fox Board.
• Per fare ciò, viene utilizzata una porta GPIO connessa alla base del transistor (collegato a sua volta al relè).

Fox Board - Descrizione

• La Fox Board G20, è prodotta dall’italiana Acme Systems Srl.
• Si tratta di un Single Board Computer, ovvero di un completo sistema basato su Linux ma con potenzialità hardware molto più ampie di quelle di un semplice PC.
• La distribuzione di Linux che gira sulla Fox Board è Debian, con kernel opportunamente modificato e alleggerito.
• La Fox Board non ha nessuna uscita video e Debian non ha nessuna interfaccia grafica: dispone solamente di una CLI (Command Line Interface) accessibile da un terminale.
• La mancanza della GUI, presente invece su schede avversarie come la Raspberry Pi, risulta essere un vantaggio dal punto di vista delle prestazioni essendo il S.O. più leggero e stabile.

Fox Board - Caratteristiche Hardware

• CPU: ARM AT91SAM9G20 a 400Mhz
• RAM: 64MB (SDRAM)
• ROM: 256KB (Flash Memory)
• Storage Principale: Memory Card da 4GB
• Porte di comunicazione: 3 USB, 1 Ethernet, 80 GPIO, 4 ADC, 6 USART, 2 SPI, 1 I2C.
• Altre caratteristiche: alimentatore integrato, Clock Real Time con batteria tampone, pulsante per la procedura di spegnimento.
• Attraverso la scheda Daisy 1, montata direttamente sopra la Fox Board, è possibile connettere altri dispositivi della Acme Systems alla Fox Board stessa.

Fox Board - Connessione - MiniUSB

• Il Robot per svolgere i suoi compiti, deve essere connesso ad un ‘Client’ che richieda i suoi servizi.
• Il metodo più semplice e minimale per connettersi alla Fox Board, è utilizzare la porta miniUSB (terminale ttyGS0). Installando gli opportuni driver sul PC Client, sarà possibile accedere alla console del robot con un emulatore di terminale (Hyperterminal, Putty, ecc… ).
• Sarà necessario collegare fisicamente il cavetto USB fra Robot e PC e questo impedisce al Robot di muoversi.
• È un metodo di connessione lento e limitato, utilizzato solamente per configurare la connessione ad una rete locale.

Fox Board - Connessione - TCP/IP

• Per accedere al 100% alle funzionalità della Fox Board è necessario connettere il Robot ad una rete LAN con i protocolli della Suite TCP/IP.
• Per fare ciò, si può utilizzare un cavo Ethernet (IEEE 802.3) o una chiavetta WiFi (IEEE 802.11).
• Si potrà accedere al terminale della Fox Board grazie al protocollo SSH (porta 22 TCP) ma sarà anche possibile accedere al sito web interno con il protocollo HTTP (porta 80 TCP) e scambiare file con il protocollo FTP (porta 21 TCP) o SFTP (porta 22 TCP).
• Utilizzando una chiavetta WiFi, il Robot potrà essere libero di muoversi, non essendoci nessun collegamento fisico con il PC.

Fox Board - Connessione - GPRS

• Se il Robot non può essere connesso ad una LAN perché troppo distante, è possibile utilizzare i suoi servizi inviando un SMS alla scheda SIM inserita nel modulo Daisy 13, sfruttando quindi la rete GPRS.
• Con questa modalità, non tutte le potenzialità della Fox Board potranno essere sfruttate, ma almeno sarà possibile contattare il Robot quasi in ogni parte del mondo.
• Grazie al potente Kernel Linux, è possibile utilizzare contemporaneamente più mezzi di comunicazione ed eventualmente connettere più utenti.

Motore Posteriore - Asse e Ruote

• L’asse posteriore ha il compito di trasferire il movimento del motore posteriore alle ruote.
• Il Robot si appoggia su di esso tramite 2 cuscinetti che limitano l’attrito.
• Al centro dell’asse è presente una puleggia (ruota dentata) che accoglie la cinghia collegata al motore.
• La puleggia ha inoltre 6 prolungamenti neri che fuoriescono da un lato: serviranno per utilizzare il contagiri.

Motore Posteriore - Motore

• Il motore posteriore, di tipo DC (Direct Current), è alimentato direttamente dalla batteria e quindi riceve una tensione di circa 14,8 Volt non stabilizzati.
• È collegato alla Scheda 1 con 2 fascette stringenti.
• All’albero motore è collegata una puleggia a cui aderisce la cinghia collegata all’asse posteriore.
• Una molla tira il motore allontanandolo dalle ruote. Questo permette alla cinghia di restare sempre ben aderente alle pulegge.

Motore Posteriore - Controller del Motore

• La gestione del movimento del motore è affidata a 2 relè comandati dalla Fox Board attraverso 2 transistor NPN tipo BC517.
• Il primo relè attiva l’alimentazione, il secondo definisce la direzione della rotazione dell’albero motore scambiando i 2 fili che arrivano al motore stesso (ovvero 14,8 Volt e Gnd).

Motore Posteriore - Contagiri

• Il contagiri permette di misurare i giri che compie l’asse posteriore ed è quindi posizionato in prossimità della puleggia dell’asse.
• Si tratta di una fotocellula, ovvero di un diodo Led a luce infrarossa e di un fototransistor posizionati a pochi millimetri l’uno dall’altro.
• Quando l’asse ruota, ognuno dei 6 prolungamenti della puleggia attraversa la fotocellula e interrompe il fascio di luce infrarossa. Questa interruzione viene percepita dalla Fox Board che quindi potrà sapere esattamente quanti ‘step’ ha percorso il Robot.

Motore Posteriore - Controller del Contagiri

• Il controller del Contagiri è formato da 2 resistenze che rispettivamente proteggono il diodo Led e polarizzano il fototransistor.
• Al collettore del fototransitor è direttamente collegata una porta GPIO della FoxBoard.
• Quando il transistor conduce (ovvero quando la fotocellula non è interrotta dal prolungamento) alla porta non arriverà tensione. Viceversa, quando il transistor non conduce (fascio di luce interrotto) alla porta arriverà tensione.

Motore Anteriore - Motore

• Il motore anteriore permette al Robot di sterzare per effettuare delle curve.
• Il motore è di tipo ‘Stepper Bipolare’ ed è alimentato dalla tensione di 14,8 Volt della batteria.
• Questo tipo di motore permette una precisione di spostamento molto superiore rispetto ad un motore DC, a scapito di un maggiore costo e di una difficoltà in più nel pilotarlo.
• Per permettere al motore di ruotare è necessario fornire ai suoi 4 pin dei brevi impulsi ordinati e sequenziali.
• La corretta sequenza permette al motore di girare in entrambe le direzioni.

Motore Anteriore - Controller

• Il circuito che pilota il motore anteriore è basato su un singolo integrato L298.
• Alle sue uscite, sono collegati diversi diodi che eliminano eventuali tensioni inverse.
• La combinazione esatta di impulsi è definita dalla Fox Board e la invia all’integrato attraverso 4 porte GPIO.
• L’integrato si occupa di trasferire questi impulsi al motore.

Motore Sonar - Motore

• Questo motore permette la rotazione del modulo SRF08 che è montato sopra il motore stesso.
• Il motore è a sua volta attaccato alla scheda 2, ad una altezza di 3 centimetri circa.
• È un motore ‘Stepper Unipolare’ e viene alimentato dai 12 Volt stabilizzati.
• Il metodo di funzionamento è identico al motore Stepper Bipolare utilizzato per sterzare.

Motore Sonar - Controller

• Il circuito integrato che gestisce il motore non è un L298 (utilizzato solo per i motori Bipolari) ma un ULN2003A.
• Il compito che svolge è identico a quello svolto dall’L298 del motore anteriore.
• Anche l’interfacciamento con la Fox Board avviene sempre grazie all’uso di 4 porte GPIO.

Clacson

• Nella scheda 2 è presente un piccolo altoparlante che permette di generare suoni.
• Da una porta GPIO della Fox Board arriverà un segnale ad onda quadra avente una certa frequenza.
• Il transistor BD243C amplificherà questo segnale e l’altoparlante potrà generare il suono.

Sensori di Prossimità - Sensori ad Infrarossi

• Il Robot è dotato di 4 sensori ad infrarossi OPB732, posizionati ai 4 angoli della Scheda 1.
• Internamente, sono costituiti da un Led ad infrarossi e da un fototransistor sensibile alla luce infrarossa.
• Se un ostacolo è abbastanza vicino (massimo 2,5-3 cm), la luce emessa dal Led viene riflessa dall’ostacolo e il fototransitor la rileva.
• Purtroppo sono influenzati dalla luce solare che emette anch’essa radiazione infrarossa. In caso di forte luminosità, segnalano quindi un ostacolo inesistente.

Sensori di Prossimità - Controller

• L’uscita di ogni sensore è analogica poiché corrisponde al collettore del fototransistor.
• Per trasformare il segnale da analogico a digitale viene utilizzata una porta NOT Triggherata 40106.
• Il segnale così ottenuto (0 Volt o 5 Volt) viene inoltre livellato da un partitore di tensione per evitare che le porte GPIO (che funzionano a 3,3 Volt) vengano danneggiate.

Illuminazione - Led RGB

• Il Robot è provvisto di 2 Diodi Led RGB da 5mm e di un Led ad alta intensità di 10mm (Faro Anteriore).
• I Led RGB sono posizionati a destra e a sinistra della Webcam.
• Ogni Led RGB è internamente formato da 3 punti luce che emettono i 3 colori fondamentali per costituire tutti gli altri: Rosso, Verde e Blu.
• I colori disponibili sono quindi Blu, Azzurro, Verde, Rosso, Viola, Giallo e Bianco.

Illuminazione - Faro Anteriore

• Il Faro Anteriore è posizionato davanti alla Fox Board, nella scheda 2.
• Non è direttamente saldato alla scheda ma si trova montato sopra un piccolo slot.
• Quando si deve rimuovere la MicroSD dalla Fox Board, sarà necessario rimuovere il Led da questo alloggiamento.
• Il Led emette una forte luce bianca, capace di illuminare la strada per qualche metro.

Illuminazione - Controller

• Il Controller che pilota i due Led RGB, è formato da 6 transistor NPN tipo BC546.
• La base di ogni transistor è collegata ad una porta GPIO della Fox Board.
• Il collettore è invece collegato ad uno dei 3 colori dei 2 Led.
• Il Controller del Faro Anteriore è invece formato da un transistor NPN tipo BC337 collegato esattamente come gli altri 2 transistor.

Webcam

• La Webcam del Robot è posizionata sopra il motore anteriore.
• È connessa alla Fox Board grazie ad una porta USB.
• Non è una webcam HD, permette una risoluzione massima di 640x480 pixel.
• All’interno della Fox Board è installato il software Open Source MJPG-Streamer che consente lo streaming video e la cattura di fotogrammi.
• Sia lo streaming sia le foto sono visibili attraverso il sito web interno della Fox Board.

WLAN Stick

• La WLAN Stick (chiavetta WLAN) permette al robot una connessione senza fili (Wireless) con un PC.
• La chiavetta è connessa direttamente alla Fox Board attraverso una porta USB.
• All’avvio del Robot, Linux controllerà automaticamente se la chiavetta è inserita.
• Se non è inserita, Linux resta in attesa di un collegamento alternativo: via cavo Ethernet o via porta miniUSB.

Daisy 7

• Il modulo Daisy 7, prodotto dalla Acme Systems, è uno dei dispositivi più importanti del Robot.
• Al suo interno sono presenti: un termometro, un barometro, una IMU e un ricevitore GPS.
• La IMU (Inertial Measurement Unit) è composta da 3 sensori inerziali a 3 assi ciascuno: un accelerometro, un giroscopio e un magnetometro.
• Tutti i sensori sono connessi alla Fox Board con il protocollo I2C. Il ricevitore GPS è invece connesso con un protocollo seriale funzionante a 3,3 Volt.
• Il barometro e il termometro sono entrambi contenuti nel circuito integrato BMP085. Misurando la pressione atmosferica, sarà possibile anche calcolare l’altitudine rispetto al livello del mare.
• L’accelerometro a 3 assi si trova nell’integrato LIS331DLH.
• Il giroscopio a 3 assi si trova nell’integrato L3G4200D.
• Il magnetometro a 3 assi si trova nell’integrato HMC5883L.Questi tre sensori inerziali inviano alla Fox Board ben 9 valori che dovranno essere opportunamente elaborati per ottenere la posizione del Robot nello spazio.
• Il ricevitore GPS si trova nell’integrato Venus638LPx. Ad esso è collegata un’apposita antenna attiva che riceve il segnale e lo amplifica. I connettori del cavo sono di tipo SMA.
• Grazie alla connessione con i satelliti GPS, si potrà localizzare il Robot, trovare l’altitudine e ricavare l’orario preciso degli orologi atomici presenti nei satelliti.
• Tutti i dispositivi del modulo, sono connessi alla Fox Board grazie ad un cavo flat da 10 pin che arriva alla scheda Daisy 1, a sua volta connessa alla Fox Board.

Daisy 13

• Il modulo Daisy 13, anch’esso prodotto dalla Acme Systems, è un modem GPRS.
• Grazie a questo dispositivo è possibile inviare e ricevere un SMS inserendo semplicemente una SIM nell’apposito socket.
• Sfruttando le frequenze della rete GPRS, un telefono cellulare potrà inviare comandi alla Fox Board.
• Il modulo, fisicamente connesso alla Fox Board grazie alla scheda Daisy 1, sfrutta il protocollo seriale per comunicare con Linux.
• Al ricevitore, verranno inviati opportuni comandi (‘AT Command’) utili a configurare il modem.

SRF08 - Descrizione Modulo

• Il modulo SRF08, prodotto dalla Devantech, include al suo interno un sensore ad ultrasuoni (sonar) e un sensore di luminosità.
• Si trova montato in un apposito supporto che lo fissa al motore.
• È collegato alla Scheda 2 grazie ad un cavo flat da 4 pin, tenuto abbastanza lungo da permettere la completa rotazione del modulo stesso intorno al motore.
• Per permettere la comunicazione con la Fox Board entrambi i sensori utilizzano il protocollo I2C.

SRF08 - Sensore ad Ultrasuoni

• Il Sonar per valutare la distanza da un ostacolo, invia un’onda ad ultrasuoni (circa 40KHz) attraverso il suo trasmettitore ultrasonico.
• Le onde sonore si scontreranno con l’ostacolo e ritorneranno al ricevitore ultrasonico.
• Calcolando il tempo trascorso fra la trasmissione e la ricezione del segnale, il controller interno riuscirà a trovare la distanza in centimetri fino ad un massimo teorico di 6 metri.

SRF08 - Sensore di Luminosità

• Il sensore di luminosità è formato principalmente da una fotoresistenza posizionata sopra il ricetrasmettitore ultrasonico.
• Al variare della luminosità, il valore della fotoresistenza cambierà facendo variare la tensione.
• Il Controller interno provvede a convertire la variazione di tensione in variazione di luminosità.

SRF08 - Controller

• A differenza dei moduli Daisy 7 e Daisy 13, che possono essere direttamente connessi alla Fox Board, il modulo SRF08 ha la necessità di un piccolo circuito che abbassa la tensione.
• Infatti, la Fox Board usa il protocollo I2C a 3,3 Volt mentre il dispositivo utilizza il protocollo I2C a 5 Volt.
• Il circuito è formato da una coppia di resistenze da 2,2 Kohm, una per il segnale di Dati e l’altra per il segnale di Clock.

Software - Schema Logico

Robot - Fox board G20

• Il software del Robot è situato all’interno della microSD della Fox Board e si avvia sopra il sistema operativo Linux Debian.
• Senza questo software, il Robot non potrebbe svolgere le sue funzioni.
• Il software del Robot si occupa di fornire diversi servizi e funzionalità agli utenti che desiderano utilizzare il Robot. Per questo si può dire che il Robot ha la funzione di ‘Server’.
• È composto da diversi software che interagiscono con i ‘Clients’ sfruttando il protocollo HTTP, la rete GPRS oppure il meccanismo dei Socket TCP.

Software di Gestione (robot)

• Il software di gestione, chiamato semplicemente ‘robot’, si occupa di gestire tutte le operazioni che può svolgere l’hardware del Robot.
• È scritto interamente in linguaggio ANSI C ed utilizza le librerie dello standard POSIX e quelle del progetto GNU.
• La funzionalità da avviare viene identificata da un codice operativo ed eventualmente da un parametro che possono essere forniti direttamente dalla linea di comando.
• Il software di gestione consente l’accesso in 3 modalità: Console, Socket ed SMS.
• Se non si definiscono parametri dalla linea di comando, all’avvio parte automaticamente la modalità Console.

SCARICA IL SOFTWARE DI GESTIONE DEL ROBOT

Modalità Console

• Questa modalità si presenta sotto forma di un menù testuale che mostra la data, l’orario, la carica della batteria e l’elenco dei codici operativi con le rispettive descrizioni.
• Sotto il menù un prompt resta in attesa di un comando dell’utente.
• Si tratta della modalità più diretta e più veloce per l’interazione con il Robot anche se ovviamente non dispone di una GUI.
• Non vengono necessariamente utilizzati i servizi del TCP/IP se il Robot è connesso attraverso la porta miniUSB.
• Per ritornare alla modalità Console mentre si sta usando un’altra modalità è necessario fornire il codice operativo ‘83’.

Modalità Socket

• Con il codice operativo ’81’ è possibile attivare la modalità ‘Socket’.
• Questa modalità utilizza un meccanismo di IPC (Inter-Process Communication) molto comune in ambito UNIX: i Socket.
• I Socket sono flussi di dati che mettono in comunicazione due o più sistemi attraverso le porte TCP o UDP.
• Una volta attivata questa modalità, il robot (che funziona da Server) resterà in ascolto sulla porta TCP 4400.
• Il RAT (ovvero il Client avviato dal PC) si connetterà a questa porta e così i due processi potranno iniziare a scambiarsi dati.
• Non sarà possibile avviare più sessioni contemporaneamente per evitare che più utenti eseguano funzionalità contrastanti.

Modalità SMS

• La modalità ‘Sms’ viene attivata con il codice operativo ‘82’.
• Con questa modalità sarà possibile inviare comandi attraverso un normale cellulare utilizzando la rete GPRS.
• L’utente con il proprio telefonino invia un SMS alla SIM inserita nel modulo Daisy 13 del Robot.
• L’SMS verrà analizzato dal software di gestione e si ottiene quindi il codice operativo e il parametro richiesto per eseguire il comando.
• Il Robot risponderà con un altro SMS che invierà direttamente al telefonino dell’utente.
• L’elenco delle stringhe che l’utente può inviare si trova nel file ‘sms’ situato nella directory ‘/root/save/’.

Modalità SMS - I comandi AT

• I comandi AT, consentono al Modem GPRS Daisy 13 di inviare e ricevere SMS. Questi comandi vengono inviati tramite protocollo seriale dalla Fox Board al Modem.
• I comandi AT sono standardizzati e quelli utilizzati all’interno del software di gestione sono:
• AT: prova la connessione con il modem.
• AT+CMGF: imposta il tipo di connessione (testo o dati).
• AT+CMGD: libera lo spazio di memoria per inviare o ricevere.
• AT+CMGS: definisce il numero di telefono e il contenuto dell’SMS. Poi invia il messaggio al numero desiderato.
• AT+CNMI: riceve il messaggio e lo scrive in memoria, insieme alle informazioni sul mittente.

Script

• Il software di gestione è in grado anche di interpretare e registrare file di scripting scritti con un opportuno linguaggio.
• All’interno di questi file saranno salvati  i comandi da eseguire ed eventualmente le ‘pause’ fra un comando e un altro.
• Grazie al meccanismo delle ‘fork’ di Linux all’interno di uno script sarà possibile a sua volta avviare uno o più script.
• Gli script risultano molto utili quando il Robot deve eseguire più operazioni ripetitive, quando deve seguire un ‘percorso’ o anche semplicemente per ‘registrare’ le operazioni appena svolte.
• Il linguaggio di scripting è comunque molto rudimentale: non prevede né salti né cicli di alcun tipo.

Script e Intelligenza Artificiale

• L’uso degli Script è molto importante perché è il primo passo che rende un Robot ‘intelligente’.
• Creando un linguaggio di scripting più complesso (che prevede salti condizionati, cicli e variabili) si potrebbe far interagire il Robot con l’ambiente che lo circonda senza che l’utente si preoccupi di controllarlo.
• Si potrebbero eseguire certi comandi solo se si verificano certe condizioni.
• Esempi:
• Allontanarsi da una fonte di luce.
• Scegliere la strada più breve per raggiungere un certo luogo.
• Trovare il luogo dove la temperatura è più bassa.

Shutdown-Button

• Shutdown-Button è un piccolo programma scritto in C che parte automaticamente all’avvio del sistema.
• Resta in attesa che l’utente prema il pulsante presente nella Fox Board.
• I costruttori della Acme Systems non hanno impostato nessuna funzionalità a questo pulsante.
• Attraverso questo processo, al pulsante viene associata la funzione ‘Robot 92’ che esegue lo spegnimento del sistema operativo.

Webserver Lighttpd

• Lighttpd è il Webserver Open source installato all’interno del sistema operativo della Fox Board.
• Spreca molte meno risorse rispetto ad altri webserver perché Lighttpd è studiato proprio per le macchine poco potenti.
• Lighttpd è in grado di visualizzare: un client SSH (Shell-In-A-Box), un client FTP (Net2ftp), le pagine di MJPG-Streamer, le pagine html con i grafici che usano la libreria RGraph, il gestore per il Database PhpMyAdmin.
• La pagina Index, disegnata da Gregorio Candolo, è scritta in HTML5 e JavaScript.

MJPG-Streamer

• MJPG-Streamer è un software Open Source che consente di gestire la Webcam del Robot attraverso semplici comandi forniti dal software di gestione.
• Può visualizzare nel browser lo streaming video della Webcam attraverso il protocollo HTTP sulla porta 4300 e può scattare e salvare fotografie, anch’esse visualizzabili dal browser.
• Supporta numerose risoluzioni e frame rate.
• Nelle webcam con sistema ‘Pan & Tilt’ consente anche di ruotare, zoomare e modificare la luminosita del Led della webcam direttamente dalla pagine HTTP (Funzionalità non supportate dalla Webcam del Robot).
• Gli script delle pagine web sono scritti in JavaScript.

Shell-In-A-Box

• Shell-In-A-Box è un potente emulatore di terminale scritto in Javascript accessibile direttamente dal browser (protocollo HTTP - HyperText Transfer Protocol).
• Utilizza la porta TCP 4200 del Webserver e si connette al Robot stesso con il protocollo SSH (Secure Shell) in ascolto sulla porta TCP 22.
• Supporta tutte le caratteristiche di un terminale DEC VT100 come i colori e le sequenze di Escape ed è quindi un’ottima alternativa agli emulatori di terminale ‘classici’ come Putty.
• Shell-In-A-Box dispone anche di un comodo menù a tendina che permette di copiare o incollare del testo e di adattarsi alla grandezza del browser con l’apposita funzione ‘Reset’.

Net2ftp

• Net2ftp è un client FTP (File Transfer Protocol) grafico scritto in PHP anch'esso direttamente utilizzabile dal browser.
• Utilizza la porta standard del protocollo HTTP (ovvero la porta TCP 80) e si connette al Server FTP del Robot in ascolto sulla porta TCP 20 e 21.
• Permette di visualizzare, modificare, creare e rimuovere i file e le cartelle del Filesystem di Linux del Robot.
• È anche possibile caricare o scaricare file dal PC client.
• Si tratta di un’alternativa a client non Web-based come FileZilla o WinSCP anche se quest’ultimi hanno il vantaggio di poter utilizzare anche connessioni criptate con il protocollo SCP (Secure CoPy, porta TCP 22).

RGraph

• RGraph è una libreria scritta in Javascript e HTML5 utilizzata per la creazione di pagine HTML che devono contenere grafici.
• Supporta numerosi tipi di grafici: istogrammi, grafici a torta, grafici a stella, grafici a linee, ecc.
• Grazie all’utilizzo di questa libreria è possibile visualizzare i grafici delle misurazioni ambientali.
• Una pagina mostra i grafici a linee di temperatura, pressione, altitudine, distanza e luminosità in funzione del tempo.
• L’altra pagina mostra due grafici a stella che rappresentano la distanza e la luminosità intorno al Robot.

MYSQL e PhpMyAdmin

• La Fox Board ha al suo interno MYSQL, un DBMS (Database Management System) molto utilizzato.
• Il software di gestione utilizza proprio MYSQL per salvare i dati prelevati dal modulo Daisy 7 e dal modulo SRF08.
• In particolare, il software consente di salvare la temperatura, la pressione, l’altitudine in base alla pressione, la luminosità, la distanza da un ostacolo, le misurazioni inerziali dell’IMU, le coordinate geografiche, l’altitudine GPS e il numero di satelliti GPS disponibili.
• L e tabelle risultanti potranno essere visualizzate ed eventualmente modificate direttamente sul browser grazie all’utilizzo di PhpMyAdmin.

RAT - PC Windows/Linux

• Il RAT (Remote Administration Tool) è un software per PC con OS Windows o Linux che è in grado di amministrare il Robot.
• La gestione tramite RAT è molto più user-friendly perché questo software è provvisto di una comoda interfaccia grafica che consente anche all’utente meno esperto di inviare e ricevere dati dal Robot.
• È scritto in linguaggio Java grazie al supporto dell’IDE Eclipse che fornisce una comoda interfaccia utile per la creazione delle Finestre con le librerie AWT, Swing, SWT e Java 3D.
• La connessione con il Software di Gestione avviene tramite la porta 4400 TCP abilitata quando si entra in modalità ‘Socket’.
• Il RAT dispone di tre ‘Finestre’ che hanno compiti diversi.

SCARICA IL REMOTE ADMINISTRATION TOOL

Finestra di Gestione

• La Finestra di Gestione è la finestra che appare non appena il software viene avviato.
• È formata da diversi pannelli ma solo un pannello alla volta può essere visualizzato dall’utente.
• In ogni pannello sono presenti pulsanti, menù a tendina, etichette e altri oggetti che permettono di agire su una parte specifica del Robot.
• I pannelli presenti sono: Menù (che permette l’accesso agli altri pannelli), Webcam, Misurazioni Ambientali, Misurazioni Inerziali, Movimento, Illuminazione, GPS, Data e Orario, Script, Configurazione della connessione.
• Nel Menù ci sono ulteriori pulsanti e informazioni del Robot.

Rotazioni 3D

• Questo Frame consente di visualizzare graficamente la posizione del Robot nello spazio attraverso l’uso delle Canvas 3D della libreria Java 3D.
• Il Robot viene rappresentato da un parallelepipedo rosso.
• Ogni 100 millisecondi il Robot invia i dati relativi all’IMU già filtrati e il RAT si occuperà di ruotare il parallelepipedo in base a questi dati.
• Due pulsanti permettono di ruotare manualmente il cubo per orientarlo nella giusta direzione rispetto al Robot.
• Un altro pulsante permette di resettare la posizione del cubo.
• Per la trasmissione, viene creata una nuova connessione sulla porta 4500, isolata dalla connessione principale (porta 4400).

Pagina Web

 

• Questa finestra si apre ogni volta che è necessario visualizzare un contenuto presente nel Web oppure nella pagina interna del Robot.
• Si tratta quindi di un piccolo e semplice browser che ovviamente si appoggia al browser installato nel sistema operativo del PC.
• Per la scrittura del componente è stata utilizzata la libreria SWT.
• La pagina Web viene aperta quando di deve visualizzare: lo streaming o le immagini della Webcam, i grafici delle misurazioni ambientali, la posizione geografica con Google Maps.

Funzionalità

Codice

Funzione

01

Visualizza la data e l’orario.

02

Aggiorna la data e l’orario connettendosi ad un Server su Internet. Utilizza il protocollo NTP (Network Time Protocol).

03

Aggiorna l’orario (ma non la data) utilizzando i satelliti GPS.

11

Avvia lo Streaming Video sulla porta 4300.

12

Scatta una o più fotografie.

13

Avvio lo Streaming Video e scatta una o più fotografie.

14

Disattiva lo streaming e gli scatti fotografici.

15

Elimina tutte le fotografie memorizzate.

16

Modifica la frequenza degli scatti fotografici.

17

Modifica la risoluzione dello streaming e delle foto.

18

Modifica i fotogrammi per secondo per lo streaming.

19

Visualizza le configurazioni salvate.

21

Visualizza le misurazioni ambientali (temperatura, pressione, altitudine, distanza da un oggetto, luminosità).

22

Visualizza le misurazioni inerziali (accelerometro, giroscopio, magnetometro).

23

Attiva il monitoraggio dell’ambiente con i grafici.

24

Disattiva il monitoraggio dell’ambiente.

25

Monitora posizione (SOLO MODALITA SOCKET).

26

Salva le misurazioni ambientali sul Database.

27

Salva le misurazioni inerziali sul Database.

31

Accende i motori.

32

Spegne i motori.

33

Consente lo spostamento manuale del Robot.

34

Ruota l’asse anteriore fino alla posizione desiderata.

35

Consente al Robot di avanzare fino alla posizione scelta.

36

Ruota il sonar fino alla posizione desiderata.

37

Visualizza le posizioni del motore anteriore e del motore del sonar.

38

Resetta le posizioni dei motori.

41

Permette la scelta del colore di accensione del Led destro.

42

Permette la scelta del colore di accensione del Led sinistro.

43

Avvia o ferma il lampeggio simultaneo dei due Led RGB (destro e sinistro).

44

Avvia o ferma il cambiamento casuale dei colori dei led RGB (destro e sinistro).

45

Accende o Spegne il Led centrale (faro anteriore).

51

Visualizza le coordinate satellitari (latitudine, longitudine, altitudine), l’orario, il numero di satelliti disponibili e la disponibilità del segnale.

52

Visualizza la stringa NMEA proveniente dai satelliti senza elaborazioni.

53

Converte la latitudine e la longitudine dei satelliti nelle rispettive coordinate per Google Maps.

54

Salva tutte le informazioni dei satelliti (comprese le coordinate per Google Maps) nel Database.

61

Misura la luminosità e la distanza man mano che il motore del sonar gira su se stesso.

62

Visualizza la carica della batteria e mostra se è in carica utilizzando il BSI (Battery Status Indicator).

63

Visualizza il credito residuo di una Sim inviando un SMS al 40916.

71

Visualizza la lista degli script salvati.

72

Esegue lo script scelto dall’utente.

73

Visualizza il codice dello script scelto dall’utente.

74

Elimina lo script scelto dall’utente.

75

Avvia la registrazione delle operazioni svolte dal Robot. Ogni comando eseguito verrà scritto in un file che diventerà un nuovo script.

76

Interrompe la registrazione in corso.

81

Avvia la modalità socket sulla porta 4400. Resta in attesa che il RAT si connetta. Se la porta 4400 non è disponibile, permette di scegliere una porta diversa.

82

Avvia la modalità sms utilizzando il modem Daisy 13. Resta in attesa che arrivi un SMS.

83

Avvia la modalità console. Da utilizzare nel caso in cui sia attiva un’altra modalità e si voglia interrompere.

91

Esce dal software di gestione e ritorna alla shell di Linux.

92

Esce dal software di gestione e avvia il processo di spegnimento del sistema operativo (ovvero avvia il RunLevel 0 di Linux).

Funzionalità - Spostamento Manuale (33)

Codice

Funzione

w

Avanti

s

Indietro

a

Sinistra

d

Destra

‘   ’

Ferma Spostamento

k

Ruota il sonar a sinistra

l

Ruota il sonar a destra

p

Avanza/Indietreggia fino ad ostacolo

c

Suona Clacson

r

Resetta le posizioni dei motori

x

Uscita