Carro para camiones ROS. Parte 8. Controlamos desde el control del teléfono ROS, nodo GPS

Continuación de la serie de artículos.

Publicaciones en la serie:
8. Controlamos desde el control del teléfono ROS, nodo GPS
7. Localización de robots: gmapping, AMCL, puntos de referencia en el mapa de la sala
6. Odometría con codificadores de rueda, mapa de habitación, lidar
5. Trabajamos en rviz y gazebo: xacro, nuevos sensores.
4. Cree una simulación de robot utilizando los editores rviz y gazebo.
3. Acelera, cambia la cámara, arregla la marcha
2. Software
1. hierro

Al construir mapas en un robot dentro de un espacio limitado, no hay problemas. Al controlar el robot desde el teclado desde la estación de control o en el propio robot, puede observar visualmente sus movimientos y evitar obstáculos no deseados a tiempo. La situación es complicada si hay varias habitaciones. Y aquí hay varias opciones para observar a un robot que construye un mapa si sale de la sala del operador:
- conecte la cámara directamente al robot;
- utilizar el sistema de videovigilancia existente fuera del robot;
- control con wi-fi, teclado bluetooth, estar cerca del robot
- "lleve el robot en sus brazos" para que el lidar recopile datos;
- Controla el robot desde el teléfono.

La última opción puede parecer conveniente. Para controlar el robot desde el teléfono, simplemente inclínelo (el teléfono) en la dirección correcta, mientras el robot está construyendo un mapa. Tal misión es posible.
Consideremos cómo dirigir el robot desde el teléfono, enviando los mensajes apropiados a los temas de ROS en el robot.

No es necesario escribir una aplicación separada en el teléfono para los fines establecidos. Para aprovechar las prácticas existentes, simplemente descargue en su teléfono e instale la aplicación de Android del mercado: "ROS Control".

Configure la aplicación ROS Control en su teléfono.


La aplicación es intuitiva: se agrega un robot con un signo "+", su ip está configurada:
foto


A continuación, seleccione "Mostrar opciones avanzadas" y prescriba temas para el carro robot:
foto


foto


Los mensajes del teléfono abordarán estos temas y también serán aceptados en un formato que ROS entienda.
En la aplicación, los temas están disponibles para nosotros:
- tema de joystick - control desde el teléfono;
- tema de escaneo láser - datos del lidar;
- tema de navegación por satélite - datos del robot gps;
- odom - odometría (todo lo que llega desde codificadores y / o imu y / o lidar);
- pose - "posición", la ubicación del robot.

Domina el tema del joystick.


El robot en sí no funcionará, por lo tanto, lanzaremos un tema sobre el robot con un controlador de movimiento, que ya ha aparecido en publicaciones anteriores:
1er terminal:
rosrun rosbots_driver part2_cmr.py

En el teléfono en la aplicación ROS Control, haga clic en la línea con el nombre del robot y falle en el menú de control del robot:
foto


Ahora, si tira del joystick con el dedo (en cualquier dirección), el carro irá. Todo es simple aquí.
Si observa lo que sucede con el tema del controlador del motor que se ejecuta en frambuesa, verá que el teléfono publica y el controlador recibe mensajes en el formato apropiado:


Todos los demás temas funcionan con el mismo principio.

* Si, sin embargo, algo salió mal, es necesario, estando en el modo de control del robot, haga clic en tres tiras paralelas en la esquina superior izquierda de la pantalla de la aplicación. Falla en las "Preferencias" y luego selecciona "Temas":

foto


foto


Luego, haciendo clic en el tema apropiado, registre la ruta (Valor):
foto



Veamos qué es lidar en la aplicación.


En el robot, ejecute el nodo lidar:
roslaunch rplidar_ros rplidar.launch
Si vuelve a ingresar a la aplicación, en la pantalla de control del robot veremos puntos característicos y una flecha azul:
foto



* También puede conducir inclinando el teléfono en diferentes direcciones y seleccionando el modo de control de inclinación:
foto


Hay otros modos de "conducir", incluso con la capacidad de indicar un punto en el mapa, directamente en el teléfono, pero dado que el mapa es muy arbitrario, el viaje también será condicional, es decir, en ninguna parte.

Con temas de movimiento, como cámaras (no lo consideraremos), todo está más o menos claro, trataremos con gps.


Hay poco sentido en la sala de los gps, pero es interesante ver cómo funciona.
Para las pruebas, cualquier silbato GPS es adecuado. Mi opción es la siguiente:
foto


Para que funcione, primero debe instalar el nodo gps en frambuesa.
Pero primero, verifiquemos si el silbato de GPS funciona, de lo contrario, todas las demás conversaciones serán a favor de los pobres.
Ponemos paquetes en frambuesa:
sudo apt-get install gpsd
sudo apt-get install gpsd-clients

Verifique que el silbato GPS esté definido entre los dispositivos usb:
lsusb


Ahora, compruebe que gps está aceptando algo:
gpscat -s 9600 /dev/ttyACM1
* En lugar de ttyACM1, puede haber otros valores (ttyACM0, ttyUSB0, ttyAMA0) dependiendo del puerto en el que esté activado el silbato GPS.
Los mensajes de GPS aparecerán en la terminal:
foto


Se pueden obtener datos más estructurados (agradables a la vista) de la siguiente manera:
gpsmon /dev/ttyACM1
foto


* las coordenadas no son mías, lo cual es extraño. No está claro con qué está conectado esto.

Instale el nodo gps en frambuesa:
sudo apt-get install libgps-dev
cd catkin_ws/src
git clone https://github.com/ros-drivers/nmea_navsat_driver
git clone https://github.com/ros/roslint
cd /home/pi/rosbots_catkin_ws
catkin_make


Ahora que hemos ensamblado el nodo GPS, ejecútelo (en el robot):
rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM1 _baud:=9600

Si observa los temas (en otra terminal del robot), puede ver que el teléfono está suscrito a un tema y la publicación de un nodo gps va a otro:
foto


Cambie el tema de recepción en el teléfono al tema / corregir a través de la configuración como se describe anteriormente.
Después del cambio, la publicación y recepción en un tema:
foto


Y en el teléfono puedes observar las coordenadas:
foto



Odometría (tema / odom).


Si ejecuta la nota del cuentakilómetros de publicaciones anteriores, entonces, cuando el robot se mueve, también puede obtener las velocidades lineales y angulares del robot en el teléfono (las velocidades no se calculan usando gps).
En el robot:
cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver
python diff_tf.py

En el teléfono:
foto

Source: https://habr.com/ru/post/474650/


All Articles