En este tutorial explicamos cómo utilizar ArduSimple Receptores RTK para obtener datos de posicionamiento precisos en ROS. Te guiaremos a través de los pasos para integrar ArduSimple receptor RTK en su proyecto ROS, permitiéndole aprovechar el poder de la precisión GPS datos.
Si usted es un entusiasta de la robótica, investigador o desarrollador, este tutorial le proporcionará los pasos para acceder a los datos de posicionamiento en sus aplicaciones ROS.
Si eres nuevo en ROS, hemos preparado un breve tutorial para ayudar a empezar con ROS para obtener más información sobre los términos clave de ROS, qué plataforma y entorno de desarrollo es mejor elegir, etc.
Hardware requerido:
- simpleRTK2B receptor en serie (en este tutorial usamos simpleRTK2B Budget)
- Antena RTK multibanda (en este tutorial usamos u-blox GNSS Antena multibanda ANN-MB-00 (IP67))
- cable USB compatible con el puerto USB de su receptor para conectarse a una PC o plataforma integrada
- Una computadora o plataforma integrada con acceso a Internet (usamos una PC en este tutorial)
Software requerido
- Ubuntu 18 o 20 (en este tutorial usamos Ubuntu 20) instalado de forma nativa en una PC
- ROS (usamos ROS Noetic).
- Puedes seguir estos tutoriales para instalar ROS:
- use ROS Melodic para Ubuntu 18 (verifique la guía de instalación para ROS Melodic)
- use ROS Noetic para Ubuntu 20 (consulte la guía de instalación para ROS Noetic)
¿Cómo Usar? ArduSimple ¿Receptores RTK y obtener datos GPS en ROS?
En primer lugar, conecte y configure el receptor RTK en Ubuntu.
- Enchufar el Antena RTK para usted receptor. Lugar la antena en un lugar con buena vista del cielo, o cerca de una ventana para probar la funcionalidad.
- conectar su receptor al PC a través del puerto USB etiquetado con “POWER+GPS."
- Su receptor debe configurarse automáticamente. Para verificar esto, abra terminal y escriba el comando:
ls /dev/tty*
- Usted verá el “/dev/ttyACM0” se ha creado automáticamente.
- Para verificar la transmisión desde su receptor RTK, use el comando:
sudo cat /dev/ttyACM0
- El flujo de entrada de GPS se muestra similar al siguiente:
- Prensa Ctrl + C para cancelar la visualización de la transmisión.
- Para prevenir el receptor RTK de empezar en un diferente “ttyACM*” cada vez que se encienda, cree una regla udev (un enlace dinámico) que cree una entrada con un nombre específico agregando el siguiente archivo antes de conectar el receptor RTK.
sudo nano /etc/udev/rules.d/50-ardusimple.rules
- Ingrese el siguiente texto a la regla:
KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK="tty_Ardusimple", GROUP="dialout", MODE="0666"
- Prensa Ctrl + X para salir del archivo y presione Y para guardar el búfer modificado.
- Ahora cada vez que un receptor RTK está conectado, será accesible desde el “/dev/tty_Ardusimple" enlace. Para verificar esto, desconecte receptor RTK (apagar y volver a encender) e ingrese los comandos:
sudo service udev reload
sudo service udev restart
sudo udevadm trigger
ls /dev/
- Ahora puedes ver eso “tty_ArduSimple" se ha creado.
- Para utilizar el programa U-center en Ubuntu, instale Wine. Se trata de una colección de bibliotecas de Linux que permiten ejecutar muchas aplicaciones de Windows en distribuciones de Linux (entre otras, Ubuntu).
No hace que el software U-center sea totalmente compatible, pero se puede utilizar en caso de que desees verificar el estado o la configuración de tu receptor RTK.
Para instalar Wine (la instalación puede durar de 2 a 3 minutos), use el comando:
sudo apt install wine64 //if Ubuntu is installed natively
sudo apt install wine32 //if you run Ubuntu on a virtual machine
- Una vez instalado Wine, es posible instalar U-Center en Ubuntu, como si fuera Windows. Abra el navegador web Firefox y descargue el programa U-Center desde el sitio web oficial: https://www.u-blox.com/en/product/u-center.
- En el momento que todos los DARWINs coticen incluyendo los deslizamientos u-center se descarga, vaya a la carpeta Descargar y extraiga el u-center en el escritorio.
- Para iniciar la instalación de u-center software, escriba el comando:
cd ~/Desktop/
wine ./u-center_v22.07.exe
- de Vidir u-center como si estuvieras en Windows siguiendo los pasos de instalación.
- Para crear un COM1 puerto, abierto terminal e ingrese el siguiente comando para hacer un enlace a receptor RTK en la carpeta “~/.vino/dosdispositivo”.
ln -sf /dev/tty_Ardusimple ~/.wine/dosdevices/com1
- Cerrar u-center si lo tienes abierto. Abierto u-center.
- Conéctate a tu receptor RTK in u-center presionando Ctrl + 1 .
- Verá una luz verde en la esquina izquierda y los datos de su receptor RTK son similares a los que se muestran a continuación.
En segundo lugar, ejecute RTK Receiver en ROS.
- Haz una carpeta con los espacios de trabajo. Si no tienes uno, puedes hacerlo con los comandos:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
- Descargue e instale paquetes ROS dentro de src. En este tutorial vamos a descargar los paquetes de https://github.com/KumarRobotics/ublox que publicará la información de ROS. Esto funciona con esta versión 1.1.4. Puede usar las versiones más recientes, pero es posible que deba modificar algunos pasos. Introducir comandos:
cd ~/catkin_ws/src
git clone https://github.com/KumarRobotics/ublox
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src -r -y
- Verás en la Terminal:
#Todos los rosdeps requeridos se instalaron con éxito
- Compilar el programa para poder ejecutarlo.
catkin_make
source ~/catkin_ws/devel/setup.bash
- Cuando se ejecuta el setup.bash, estamos seleccionando el espacio de trabajo y actualizando los programas disponibles en ROS.
- Para tener control de los mensajes a publicar en ArduSimple puede modificar el yaml (archivo de configuración) que usará el nodo para ejecutar la comunicación con ros.
Este nodo tiene varios archivos de configuración de prueba, puede modificar los valores de este modificando los archivos ubicados en el siguiente directorio:
cd ~/catkin_ws/src/ublox/ublox_gps/config
- Puesto que el u-blox modelo interior Ardusimple es el zed_f9p, modificamos el archivo con el mismo nombre. Para abrir el editor, podemos usar el siguiente comando:
nano zed_f9p.yaml
Cambiar la dirección del dispositivo a “/dev/tty_Ardusimple" para asegurarse de que siempre va a la Receptor RTK:
device: /dev/tty_Ardusimple
frame_id: gps
uart1:
baudrate: 9600 //Change the baudrate value to the value set in U-Center.
config_on_startup: false
Cerrar u-center porque ROS y u-center no corran juntos.
- Para ejecutar el Nodo ROS, use el lanzador ubicado en la siguiente carpeta:
cd ~/catkin_ws/src/ublox/ublox_gps/launch
- Para comprobar que está en la lista, escriba el comando:
ls
- Archivos de lanzamiento de ROS simplificar el proceso de iniciar múltiples nodos y configurar sus parámetros. Un archivo de lanzamiento es un archivo XML que describe los nodos a ejecutar, sus parámetros y las conexiones entre ellos. Mediante el uso de archivos de inicio, puede iniciar varios nodos con un solo comando, lo que facilita la gestión de sistemas robóticos complejos. Estos archivos tienen la extensión “.launch”, hay otros archivos que son archivos de configuración que tienen la extensión “.yaml”.
Para iniciar el archivo:
roslaunch
- El archivo que lanzará nuestro programa se llama “dispositivo_ublox.lanzamiento”.
Este archivo se puede cambiar según sea necesario.
Para iniciar el programa, utilice el siguiente comando:
roslaunch ublox_gps ublox_device.launch param_file_name:=zed_f9p
- Abra una nueva Terminal e ingrese el comando:
source ~/catkin_ws/devel/setup.bash
- Nodos ROS cuando se ejecutan tienen nombres únicos. Para ver la lista de nombres de nodos ROS, use el comando en la Terminal:
rosnode list
- Para obtener información sobre los nodos ROS, como a qué temas están suscritos o publicando, puede usar el siguiente comando:
rosnode info
Por ejemplo, para obtener información sobre “información /ublox”, use el comando:
rosnode info /ublox
- Para mostrar una lista de activos Temas de ROS que están actualmente disponibles y están siendo publicados o suscritos a su sistema ROS, use el comando.
rostopic list
La salida de la lista de temas de ROS normalmente mostrará los nombres de los temas junto con sus tipos de mensajes. Este comando es útil para verificar los temas disponibles y verificar si los temas deseados se están publicando o suscribiendo en su entorno ROS.
- Para ver información sobre quién está publicando y suscrito a este mensaje, escriba el mensaje, use el comando en el formato:
rostopic info
- Por ejemplo, para recibir información sobre Tipo de Mensaje, Publicadores y Suscriptores del tema “/rosout”, ejecute el comando:
rostopic info /rosout
- Para recibir información sobre Tipo de Mensaje, Publicadores y Suscriptores del tema /ublox/arreglar, eejecuta el comando:
rostopic info /ublox/fix
- Para ver la información que se está publicando, utilice el comando en el formato:
rostopic echo
Para probar que funciona podemos suscribirnos a los diferentes temas que crea el nodo.
Los más importantes son “/gps/arreglar” (son los datos en WGS64) y “/diagnóstico” (nos da información del estado del GPS). Se pueden publicar otros datos según la configuración que se haya establecido desde receptor RTK.
Por ejemplo, para observar y controlar los datos fijos de GPS que se publican en “/ublox/arreglar” Tema (son los datos en WGS64), como latitud, longitud, altitud y otra información relevante, use el siguiente comando para ver los datos:
rostopic echo /ublox/fix
Para dejar de ver el tema, presione Ctrl + C.
- Para ver los datos que se publican en “/diagnóstico” que da la información del estado del GPS como la precisión entre otros, use el comando:
rostopic echo /diagnostics
Para dejar de ver los datos, presione Ctrl + C.
- Si desea registrar la información publicada sobre el Tema en el archivo, use el comando:
- para registrar los datos fijos de GPS que se publican en “/ublox/arreglar” Tema, como latitud, longitud, altitud entre otros:
rostopic echo /ublox/fix > gps_fix_data.txt
- para registrar datos sobre el estado del GPS “/diagnóstico”:
rostopic echo /diagnostics > gps_diagnostics.txt
Estos comandos crean archivos gps_fix_data.txt y gps_diagnostics.txt, donde se guardará el tema. Para detener la grabación, presione Ctrl + C.
- Para ver la información registrada en los archivos, ejecute:
nano gps_fix_data.txt
nano gps_diagnostics.txt
- Mensajes ROS son las estructuras de datos utilizadas para la comunicación entre los nodos ROS. Definen la información intercambiada sobre un tema. Los mensajes se definen utilizando el formato de archivo .msg.
Para ver la lista de los tipos de Mensajes ROS, use el comando:
rosmsg list
Para ver la estructura del mensaje, use el comando en el formato:
rosmsg show
- Por ejemplo, la directriz “sensor_msgs/NavSatFix” es un tipo de mensaje en ROS que se utiliza para representar datos fijos del GPS (Sistema de posicionamiento global) como la latitud, la longitud, la altitud y otros parámetros relacionados con la posición del GPS.
Para ver la estructura de “sensor_msgs/NavSatFix” mensaje, use el comando:
rosmsg show sensor_msgs/NavSatFix
- Para ver la lista de activos Servicios ROS que proporcionan una forma para que los nodos envíen solicitudes y reciban respuestas, use el comando:
rosservice list
- Para llamar al servicio, use el comando en el formato:
rosservice call
Este servicio responderá con el resultado.
Por ejemplo, para obtener la configuración actual del registrador del u-blox Nodo, que puede ser útil para fines de depuración y monitoreo, use el comando:
rosservice info /ublox/get_loggers
Si quieres hacer este tutorial, tenemos todos los productos en stock y listos para ser enviados:
- simpleRTK2B receptor en serie (en este tutorial usamos simpleRTK2B Budget)
- Antena RTK multibanda (en este tutorial usamos u-blox GNSS Multiband antenna ANN-MB-00 (IP67))
- cable USB