Nel precedente articolo “Progetto di una interfaccia robotica Arduino-ROS – Parte 2”, abbiamo installato le prime parti software necessarie a realizzare l’interfaccia Arduino-ROS. Prima abbiamo fatto una panoramica sulle librerie “rosserial_client”, poi abbiamo installato Ubuntu 16.04 LTS sul computer e infine, abbiamo installato il sistema operativo robotico ROS su Ubuntu e i pacchetti della libreria rosserial in ROS. In questo articolo, vedremo come impostare l’IDE di Arduino e la libreria rosserial; installeremo la libreria ros_lib nell’IDE di Arduino, definiremo il nome della scheda del dispositivo seriale nell'IDE di Arduino. In alternativa all’installazione di ROS in Ubuntu installato sul computer, vedremo come installare ROS in Ubuntu installato sulla VirtualBox per chi volesse lavorare da Windows, in cui imposteremo il nome della scheda, mentre nell'IDE di Arduino inseriremo il nome della porta seriale. Infine, eseguiremo il test dell’interfaccia Arduino-ROS sulla VirtualBox.
Impostazione dell’IDE di Arduino e della libreria client ROS
In questa parte dell’articolo, imposteremo l'IDE di Arduino su Ubuntu 16.04. Gli Arduino possono essere facilmente programmati usando il loro semplice IDE. Questo IDE può essere scaricato dal sito Web ufficiale di Arduino https://www.arduino.cc/en/Main/Software. Disponibile per i sistemi operativi più diffusi, possiamo installare l’IDE anche tramite il gestore di pacchetti software di Ubuntu. Il download diretto dal sito Web fornisce la versione più aggiornata. Per installare l'IDE di Arduino dal gestore di pacchetti software di Ubuntu, digitate sul terminale questo comando:
$ sudo apt-get install arduino
Dopo l'installazione, potete eseguire il comando “arduino” nel terminale, o se state lavorando con binari scaricati dal sito web, estraete l'archivio e vedrete un eseguibile chiamato “arduino”.
$ ./arduino
Se tutto funziona correttamente, verrà visualizzato l'IDE di Arduino, come mostrato in Figura 1.
Bene! Avete impostato correttamente l'IDE di Arduino in Linux. La prossima procedura è impostare la libreria rosserial per Arduino.
Impostazione di ros_lib nell'IDE di Arduino
Dopo aver impostato l'IDE di Arduino, occorre creare una libreria in Arduino per la scrittura di nodi Arduino-ROS. Di seguito la procedura da seguire:
Nell'IDE di Arduino, da File -> Preferenze, cercate la posizione dello sketchbook e trovate la cartella chiamata “libraries”. Se non è presente, potete crearne una nuova. In questa cartella creeremo la libreria Arduino-ROS.
Per costruire la libreria Arduino-ROS, aprite nuovamente il terminale ed eseguite il seguente comando:
$ roscore
Nel terminale, ora digitate il percorso dove si trova la cartella “libraries” e poi inserite il comando seguente:
robot@robot-pc:~/Arduino/libreries
poi di seguito il comando
rosrun rosse rial_Arduino make_libraries.py
Questo comando genererà la libreria “ros_lib” che consiste in messaggi equivalenti ai messaggi ROS effettivi e API del client seriale ROS.
Nota: potrebbe apparire un errore durante la generazione della libreria “ros_lib”. Basta ignorare questi messaggi di errore per continuare. Per alcuni messaggi ROS, le conversioni in messaggi equivalenti potrebbero non essere possibili.
Ora, se la libreria ros_lib è stata correttamente creata in Arduino, potete eseguire gli esempi ros_lib dall’IDE di Arduino cliccando su File --> Impostazioni --> Esempi --> ros_lib. A questo punto, siamo pronti a verificare il funzionamento di Arduino con ROS mediante un esempio. Possiamo iniziare con l’esempio “Blink”, un semplice codice per far lampeggiare un LED alternando lo stato ON/OFF del LED ogni volta che pubblichiamo un valore in un argomento. Quindi, nell’IDE, cliccate su File --> Impostazioni --> Esempi --> ros_lib --> Blink e, dopo aver caricato il codice nella scheda Arduino, vedrete il LED lampeggiare.
Impostazione del nome della scheda del dispositivo seriale Arduino in Ubuntu
E’ possibile programmare Arduino nel sistema operativo Ubuntu o nella VirtualBox. Se state lavorando con un computer, basta collegare il dispositivo Arduino e quando lo collegate in Ubuntu, Arduino opererà come dispositivo seriale e il kernel Linux caricherà il driver di conversione da USB a seriale. Usate un terminale Linux ed eseguite “dmesg” o “dmesg | grep tty”. Il tool dmesg mostrerà i log del kernel e così possiamo trovare il dispositivo seriale corrispondente ad Arduino. Il nome del dispositivo per Arduino è “ttyACM0”, ma potrebbe essere diverso a seconda del sistema.
ROS operante da Windows nella VirtualBox
Se desiderate operare con la VirtualBox da Windows, occorre prima installare il driver appropriato di Arduino per Windows. I driver sono disponibili nella stessa cartella di installazione di Arduino. Dopo aver installato i driver, cliccate su Pannello di controllo --> Gestione dispositivi --> Porte (COM & LPT) per controllare il numero della porta seriale di Arduino, se i driver Arduino sono installati correttamente. Dopo aver installato il driver, potete condividere questo dispositivo seriale con Ubuntu nella VirtualBox. Avviate VirtualBox e, in Ubuntu, andate su Impostazioni -> Porta seriale. In questa finestra, deve essere impostata la porta COM del dispositivo host che deve essere connessa alla porta COM del dispositivo corrispondente al nome del dispositivo Arduino in Linux.
Impostazione del nome della scheda e della porta seriale nell’IDE di Arduino in esecuzione sulla VirtualBox
Dopo aver ottenuto il nome e il numero della porta seriale di Arduino in Ubuntu, dobbiamo impostare questi parametri nell'IDE di Arduino, come descritto di seguito. Per impostare il nome della scheda Arduino, nel menu dell’IDE, cliccate su Strumenti -> Board -> Arduino Mega 2560. Impostate anche il nome della porta con Strumenti -> Porta -> ttyS0. In Figura 2 viene mostrata la scheda Arduino Mega 2560.
Se state lavorando da un computer, la porta seriale sarà ttyACMO, mentre dalla VirtualBox, la porta che abbiamo assegnato era ttyS0. Testate la connessione tra Arduino e VirtualBox mediante lo sketch di esempio Blink cliccando nel menù dell’IDE su File --> Esempi --> Basics --> Blink.
Caricate lo sketch nella scheda Arduino. Se ricevete un errore di autorizzazione negata o qualcosa di simile, potete eseguire la seguente procedura di correzione per risolvere.
Questi comandi ci permetteranno di aggiungere un utente corrente in un gruppo chiamato “dialout”. Questo utente del gruppo può accedere ad un dispositivo seriale senza autorizzazione:
$ sudo usermod -a -G dialout <nomeutente>
Per impostare l'autorizzazione di lettura/scrittura sul dispositivo seriale esistente, utilizzate questo comando:
$ sudo chmod 666 /dev/ttyACM0 (o ttyS0)
Il primo progetto con interfaccia Arduino-ROS
Se tutto funziona bene, caricate un codice client Arduino-ROS per far lampeggiare un LED sulla scheda Arduino cliccando su File -> Esempi -> ros_lib -> Blink. Il codice seguente dello sketch Blink con il quale viene fatto lampeggiare un LED, è un progetto di esempio con cui viene testata l’interfaccia seriale Arduino-ROS:
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1633 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.