In questa pagina
Prodotti utilizzati in questo tutorial
In questo tutorial spieghiamo come utilizzare i ricevitori RTK ArduSimple per ottenere dati di posizionamento precisi in ROS. Ti guideremo attraverso i passaggi necessari per integrare il ricevitore RTK ArduSimple nel tuo progetto ROS, consentendoti di sfruttare la potenza dei dati GPS accurati.
Che tu sia un appassionato di robotica, un ricercatore o uno sviluppatore, questo tutorial ti illustrerà i passaggi necessari per accedere ai dati di posizionamento nelle tue applicazioni ROS.
Se sei alle prime armi con ROS, abbiamo preparato un brevetutorial per aiutarti a muovere i primi passi con ROS, per conoscere meglio i termini chiave di ROS, quale piattaforma e quale ambiente di sviluppo sia meglio scegliere, ecc.
Se stai cercando un tutorial su ROS 2, dai un'occhiata alla guida "Come integrare u-blox ZED-F9P in ROS 2".
Hardware richiesto:
- ricevitore della serie simpleRTK2B (in questo tutorial utilizziamo il modello simpleRTK2B Budget)
- Antenna RTK multibanda (in questo tutorial utilizziamo l'antenna GNSS multibanda u-blox ANN-MB-00 (IP67))
- Cavo USB compatibile con la porta USB del ricevitore per il collegamento a un PC o a una piattaforma integrata
- Un computer o una piattaforma integrata con accesso a Internet (in questo tutorial utilizziamo un PC)
Software necessario:
- Ubuntu 18 o 20 (in questo tutorial utilizziamo Ubuntu 20) installato in modo nativo su un PC
- ROS (noi utilizziamo ROS Noetic).
- Puoi seguire questi tutorial per installare ROS:
- utilizzare ROS Melodic per Ubuntu 18 (consultare la guida all'installazione di ROS Melodic)
- utilizzare ROS Noetic per Ubuntu 20 (consultare la guida all'installazione di ROS Noetic)
Come utilizzare i ricevitori RTK ArduSimple e ottenere dati GPS in ROS?
Per prima cosa, collega e configura il ricevitore RTK su Ubuntu.
- Collegare l'antenna RTK al ricevitore. Posizionare l'antenna in un punto con una buona visuale verso il cielo oppure vicino a una finestra per verificarne il funzionamento.
- Collega il ricevitore al PC tramite la porta USB contrassegnata con la dicitura “POWER+GPS”.
- Il ricevitore dovrebbe essere configurato automaticamente. Per verificarlo, apri Terminale e digita il comando:
ls /dev/tty*
- Noterai che la directory “/dev/ttyACM0”è stata creata automaticamente.
- Per verificare il flusso proveniente dal ricevitore RTK, utilizzare il comando:
sudo cat /dev/ttyACM0
- Il flusso di dati GPS appare simile a quello riportato di seguito:
- Premi Ctrl+C per interrompere la visione dello streaming.
- Per evitare che il ricevitore RTK si avvii ogni volta in una"ttyACM*" diversa all'accensione, creare una regola udev (un collegamento dinamico) che generi una voce con un nome specifico, aggiungendo il seguente file prima di collegare il ricevitore RTK.
sudo nano /etc/udev/rules.d/50-ardusimple.rules
- Inserisci il seguente testo nella regola:
KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK="tty_Ardusimple", GROUP="dialout", MODE="0666"
- PremereCtrl+Xper uscire dal file e premereY per salvare il buffer modificato.
- D'ora in poi, ogni volta che verrà collegato un ricevitore RTK, sarà accessibile tramite il collegamento “/dev/tty_Ardusimple ”. Per verificarlo, scollegare il ricevitore RTK (spegnere e riaccendere) e digitare i comandi:
sudo service udev reload
sudo service udev restart
sudo udevadm trigger
ls /dev/
- Ora puoi vedere che è stato creato “tty_ArduSimple ”.
- Per poter utilizzare il programma U-center su Ubuntu, è necessario installare Wine. Si tratta di una raccolta di librerie Linux che consente a molte applicazioni Windows di funzionare su distribuzioni Linux (tra cui Ubuntu).
Wine non garantisce la piena compatibilità del software U-center, ma può essere utilizzato nel caso in cui si desideri verificare lo stato o la configurazione del proprio ricevitore RTK.
Per installare Wine (l’installazione potrebbe richiedere 2-3 minuti), utilizzare il comando:
sudo apt install wine64 //se Ubuntu è installato in modo nativo
sudo apt install wine32 //se si esegue Ubuntu su una macchina virtuale
- Una volta installato Wine, è possibile installare U-Center su Ubuntu, proprio come se si trattasse di Windows. Apri il browser Firefox e scarica il programma U-Center dal sito ufficiale: https://www.u-blox.com/en/product/u-center.
- Una volta scaricato u-center, vai alla cartella “Download” ed estrai il file u-center sul desktop.
- Per avviare l'installazione del software u-center, digitare il comando:
cd ~/Desktop/
wine ./u-center_v22.07.exe
- Installa u-center come se fossi su Windows, seguendo la procedura di installazione.
- Per creare una porta COM1, apri Terminale e inserisci il seguente comando per creare un collegamento al ricevitore RTK nella cartella “~/.wine/dosdevice”.
ln -sf /dev/tty_Ardusimple ~/.wine/dosdevices/com1
- Chiudi u-center se è aperto. Apri u-center.
- Collegati al tuo ricevitore RTK in u-center premendo Ctrl+1.
- Vedrai una luce verde nell'angolo sinistro e i dati provenienti dal tuo ricevitore RTK, simili a quelli riportati di seguito.
In secondo luogo, avvia il ricevitore RTK in ROS.
- Crea una cartella contenente gli spazi di lavoro. Se non ne hai una, puoi crearla con i seguenti comandi:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
- Scarica e installa i pacchetti ROS nella cartella src. In questo tutorial scaricheremo i pacchetti da https://github.com/KumarRobotics/ublox che pubblicheranno le informazioni ROS. Questo procedimento funziona con la versione 1.1.4. È possibile utilizzare le versioni più recenti, ma potrebbe essere necessario modificare alcuni passaggi. Digita i comandi:
cd ~/catkin_ws/src
git clone https://github.com/KumarRobotics/ublox
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src -r -y
- Nel Terminale vedrai:
#Tutti i rosdep richiesti sono stati installati con successo
- Compila il programma per poterlo eseguire.
catkin_make
source ~/catkin_ws/devel/setup.bash
- Quando viene eseguito il file setup.bash, selezioniamo l'area di lavoro e aggiorniamo i programmi disponibili in ROS.
- Per poter gestire i messaggi da pubblicare in ArduSimple, è possibile modificare il file YAML (file di configurazione) che il nodo utilizzerà per comunicare con ROS.
Questo nodo dispone di diversi file di configurazione di prova; è possibile modificare i valori di questo nodo modificando i file presenti nella seguente directory:
cd ~/catkin_ws/src/ublox/ublox_gps/config
- Poiché il modello u-blox presente in Ardusimple è lo zed_f9p, modifichiamo il file con lo stesso nome. Per aprire l'editor, possiamo utilizzare il seguente comando:
nano zed_f9p.yaml
Modifica l'indirizzo del dispositivo in “/dev/tty_Ardusimple” per assicurarti che sia sempre collegato al ricevitore RTK:
dispositivo: /dev/tty_Ardusimple
id_frame: gps
uart1:
velocità di trasmissione: 9600 //Modificare il valore della velocità di trasmissione in base a quello impostato in U-Center.
config_on_startup: false
Chiudi u-center perché ROS e u-center non possono funzionare contemporaneamente.
- Per eseguire il nodo ROS, utilizzare il programma di avvio che si trova nella seguente cartella:
cd ~/catkin_ws/src/ublox/ublox_gps/launch
- Per verificare che sia presente nell'elenco, digita il comando:
ls
- I file di avvio ROS semplificano il processo di avvio di più nodi e la configurazione dei relativi parametri. Un file di avvio è un file XML che descrive i nodi da eseguire, i loro parametri e le connessioni tra di essi. Utilizzando i file di avvio, è possibile avviare più nodi con un unico comando, facilitando la gestione di sistemi robotici complessi. Questi file hanno estensione “.launch”; esistono inoltre altri file di configurazione con estensione “.yaml”.
Per eseguire il file:
roslaunch
- Il file che avvierà il nostro programma si chiama “ublox_device.launch”.
Questo file può essere modificato secondo necessità.
Per avviare il programma, utilizzare il seguente comando:
roslaunch ublox_gps ublox_device.launch param_file_name:=zed_f9p
- Apri una nuova finestra di Terminale e digita il comando:
fonte ~/catkin_ws/devel/setup.bash
- I nodi ROS, quando sono in esecuzione, hanno nomi univoci. Per visualizzare l'elenco dei nomi dei nodi ROS, utilizzare il comando nel Terminale:
elenco dei RSNODE
- Per ottenere informazioni sui nodi ROS, ad esempio su quali argomenti sono iscritti o quali stanno pubblicando, è possibile utilizzare il seguente comando:
rosnode info
Ad esempio, per ottenere informazioni su“info /ublox”, utilizzare il comando:
Informazioni su Rosnode / uBlox
- Per visualizzare un elenco degli argomenti ROS attivi attualmente disponibili e che vengono pubblicati o a cui ci si è iscritti nel proprio sistema ROS, utilizzare il comando.
elenco rostopico
L'output del comando `ROS Topic list` mostra in genere i nomi degli argomenti insieme ai relativi tipi di messaggio. Questo comando è utile per controllare gli argomenti disponibili e verificare se gli argomenti desiderati vengono pubblicati o se vi sono abbonamenti ad essi nel proprio ambiente ROS.
- Per visualizzare le informazioni relative agli autori dei messaggi e agli iscritti a questa discussione, nonché al tipo di messaggio, digita il comando nel seguente formato:
rostopic info
- Ad esempio, per ottenere informazioni sul tipo di messaggio, sugli editori e sugli abbonati dell'argomento“/rosout”, eseguire il comando:
informazioni su Rostopic /rosout
- Per ricevere informazioni sul tipo di messaggio, sugli editori e sugli abbonati dell'argomento /ublox/fix, eseguireil comando:
informazioni su Rostopic /ublox/fix
- Per visualizzare le informazioni che vengono pubblicate, utilizza il comando nel formato:
rostopic echo
Per verificare che funzioni, possiamo iscriverci ai diversi argomenti creati dal nodo.
I più importanti sono “/gps/fix” (contenente i dati in WGS64) e “/diagnostics” (che fornisce informazioni sullo stato del GPS). Altri dati possono essere pubblicati in base alla configurazione impostata sul ricevitore RTK.
Ad esempio, per osservare e monitorare i dati di localizzazione GPS pubblicati sull'argomento “/ublox/fix” (i dati sono in formato WGS64), quali latitudine, longitudine, altitudine e altre informazioni rilevanti, utilizzare il seguente comando per visualizzare i dati:
rostopic echo /ublox/fix
Per smettere di visualizzare l'argomento, premi Ctrl+C.
- Per visualizzare i dati pubblicati nella directory “/diagnostics”, che forniscono informazioni sullo stato del GPS, come ad esempio la precisione e altre, utilizzare il comando:
ecografia rostopica / diagnostica
Per interrompere la visualizzazione dei dati, premi Ctrl+C.
- Se desideri salvare nel file le informazioni pubblicate nell'argomento, utilizza il comando:
- per registrare i dati di localizzazione GPS pubblicati nell'argomento “/ublox/fix”, quali latitudine, longitudine, altitudine e altri:
rostopic echo /ublox/fix > gps_fix_data.txt
- per registrare i dati relativi allo stato del GPS “/diagnostics”:
ecografia rostopica /diagnostica > gps_diagnostics.txt
Questi comandi creano i file gps_fix_data.txt e gps_diagnostics.txt, in cui verrà salvato l'argomento. Per interrompere la registrazione, premere Ctrl+C.
- Per visualizzare le informazioni contenute nei file, eseguire:
nano gps_fix_data.txt
nano gps_diagnostics.txt
- I messaggi ROS sono le strutture dati utilizzate per la comunicazione tra i nodi ROS. Definiscono le informazioni scambiate su un argomento. I messaggi sono definiti utilizzando il formato di file .msg.
Per visualizzare l'elenco dei tipi di messaggi ROS, utilizzare il comando:
elenco rosmsg
Per visualizzare la struttura del messaggio, utilizzare il comando nel formato:
rosmsg show
- Ad esempio, “sensor_msgs/NavSatFix” è un tipo di messaggio in ROS utilizzato per rappresentare i dati di localizzazione GPS (Global Positioning System), quali latitudine, longitudine, altitudine e altri parametri relativi alla posizione GPS.
Per visualizzare la struttura del messaggio“sensor_msgs/NavSatFix”, utilizzare il comando:
rosmsg mostra sensor_msgs/NavSatFix
- Per visualizzare l'elenco dei servizi ROS attivi che consentono ai nodi di inviare richieste e ricevere risposte, utilizzare il comando:
elenco dei servizi di assistenza
- Per richiamare il servizio, utilizzare il comando nel formato:
rosservice call
Questo servizio fornirà il risultato.
Ad esempio, per ottenere la configurazione corrente del logger del Node u-blox, che può essere utile ai fini del debug e del monitoraggio, utilizzare il comando:
rosservice info /ublox/get_loggers
Se vuoi seguire questo tutorial, abbiamo tutti i prodotti disponibili in magazzino e pronti per la spedizione:
- ricevitore della serie simpleRTK2B (in questo tutorial utilizziamo il modello simpleRTK2B Budget)
- Antenna RTK multibanda (in questo tutorial utilizziamo l'antenna GNSS multibanda u-blox ANN-MB-00 (IP67))
- Cavo USB
Hai ancora problemi?
Contattaci per ricevere assistenza da un vero ingegnere — non dall’intelligenza artificiale — oppure richiedi il tutorial che ti manca