Basado en Ubuntu18.04 + ROS Melodic para construir una computadora host de automóvil SLAM (Raspberry Pi)


1. El paquete de funciones y el puerto serie utilizados

1. Paquete de funciones

Este proyecto utiliza varios paquetes de funciones de proyectos de código abierto para implementar el mapeo y la navegación SLAM basados ​​en lidar. El código utilizado se puede descargar en Code Cloud .

El paquete de funciones debe guardarse y compilarse en el maestro y el esclavo.

2. Puerto serie

En este proyecto, la Raspberry Pi se utiliza como computadora superior para el desarrollo, y el radar y la computadora inferior deben comunicarse en serie con la Raspberry Pi. A través de la prueba aquí, el puerto serial de mi radar es / dev / ttyUSB1 , y el puerto serial de la computadora inferior es / dev / ttyUSB0 .

Si no conoce su puerto serie, puede verificar el puerto serie utilizado conectando y desconectando el dispositivo y luego usando el comando ls / dev / ttyUSB * .

Debe modificar los siguientes archivos de acuerdo con su situación real:

Puerto serie inferior de la computadora

Modifique el archivo bringup.launch en la carpeta de inicio bajo el paquete de funciones zxcar y coloque su número de puerto serie como se muestra en la siguiente figura.
Inserte la descripción de la imagen aquí

Puerto serie radar

Modifique el archivo rplidar.launch en la carpeta launch / lidar bajo el paquete de funciones zxcar , y complete el puerto serie de su radar en la posición que se muestra en la figura siguiente.
Inserte la descripción de la imagen aquí

Dos, crea un espacio de trabajo y compila

1. Crea un espacio de trabajo

Cree un nuevo espacio de trabajo y coloque el paquete de funciones descargado en la carpeta src debajo de él.
Inserte la descripción de la imagen aquí

2. Compilar

Compile en el espacio de trabajo. Puede aparecer un error durante la primera compilación. Simplemente descargue las dependencias de acuerdo con el mensaje de error.
Inserte la descripción de la imagen aquí

Para obtener más información, consulte: problema de instalación del paquete de dependencia ROS

Aquí, use el comando sudo apt-get install ros-melodic-geographic-msgs para instalar las dependencias requeridas y luego compile nuevamente.
Inserte la descripción de la imagen aquí

3. Permiso

Para ejecutar archivos Python en Linux, debe otorgarles permisos ejecutables. Para reducir los problemas, ejecute el comando ** sudo chmod -R + x src / ** para otorgar permisos ejecutables a todos los archivos en el paquete de funciones.
Inserte la descripción de la imagen aquí

4. Refrescar el medio ambiente

Para facilitar la ejecución posterior del programa ROS, no es necesario actualizar repetidamente el entorno, esta vez el comando de origen se escribe en el archivo .bashrc para garantizar que la actualización se realice directamente cada vez que se abre la línea de comando.

sudo vi ~/.bashrc

Escriba el contenido al final del archivo:

source ~/ws/devel/setup.bash

Inserte la descripción de la imagen aquí

Tres, calibración

Como imu puede tener problemas como la inclinación durante la instalación, se requiere calibración.

1. Calibrar imu

Primero, inicie el archivo bringup.launch bajo el paquete de funciones zxcar en el lado de la Raspberry Pi (lado del host) . Cuando aparezcan las palabras "zxcar_driver start success!" , Significa que el inicio fue exitoso.

roslaunch zxcar bringup.launch

Inserte la descripción de la imagen aquí

Luego, inicie otra línea de comando y continúe iniciando el nodo do_calib en el lado del host para realizar la calibración de imu. Al hacer esto, el automóvil debe descansar plano en el suelo, no toque el automóvil con la mano para garantizar la precisión de la calibración.

rosrun imu_calib do_calib

Inserte la descripción de la imagen aquí

Siga las instrucciones Presione [ENTER] una vez hecho .. Presione la tecla Enter para continuar con la siguiente medición. Se requieren un total de seis mediciones.
Inserte la descripción de la imagen aquí
Una vez completada la calibración , se generará el archivo imu_calib.yaml en el directorio actual. Este archivo debe reemplazarse con el archivo con el mismo nombre en el directorio / zxcar / param / imu .

roscd zxcar/param/imu/
sudo rm -rf imu_calib.yaml 
mv ~/imu_calib.yaml ~/ws/src/zxcar/param/imu/

Inserte la descripción de la imagen aquí

2. Calibre la velocidad angular

Inicie el archivo bringup.launch en el paquete de funciones zxcar en el lado de Raspberry Pi (lado del host) y abra la línea de comando para iniciar el nodo calibrate_angular . Cuando aparecen las palabras "Mostrar rqt_reconfigure para controlar la prueba" , significa que el inicio se ha realizado correctamente.
Inserte la descripción de la imagen aquí
Inicie la herramienta rqt en el lado de la PC (lado esclavo) de acuerdo con las indicaciones.

rosrun rqt_reconfigure rqt_reconfigure 

Inserte la descripción de la imagen aquí

Los parámetros que se pueden modificar aquí son los siguientes:

  • test_angle: prueba el ángulo de rotación
  • velocidad: prueba la velocidad de rotación
  • tolerancia: el rango de error de la prueba

Mantenga los parámetros predeterminados sin cambios, abra la brújula del teléfono móvil y cuadrela sobre el automóvil, registre el valor del ángulo actual y marque start_test para comenzar la prueba y registre el ángulo final en el teléfono móvil, y calcule el ángulo de rotación del automóvil.
Inserte la descripción de la imagen aquí
Aquí mi coche gira 355 grados, por lo que utilizo 355/360 para calcular el factor de zoom. Mida el efecto de la rotación nuevamente y complete el archivo bringup.launch con el número promedio de múltiples mediciones.

roscd zxcar/launch/
sudo vi bringup.launch 

Inserte la descripción de la imagen aquí

3. Calibre la velocidad de la línea

Del mismo modo, la velocidad de la línea debe calibrarse. En el
host, ejecute los siguientes comandos en dos líneas de comando:

roslaunch zxcar bringup.launch
rosrun zxcar_nav calibrate_linear.py

Después de que aparezca el mensaje Mostrar rqt_reconfigure para controlar la prueba , ejecute la herramienta rqt en el esclavo.

rosrun rqt_reconfigure rqt_reconfigure

Inserte la descripción de la imagen aquí
También haga clic en start_test para probar y mida la distancia a pie del carro con una cinta métrica. Aquí medí 1.02 metros caminados, divididos por 1 metro, y llené el factor de zoom resultante en el archivo bringup.launch.

roscd zxcar/launch/
sudo vi bringup.launch 

Inserte la descripción de la imagen aquí

Cuarto, mapeo y navegación por radar

Una vez completada la calibración, se puede realizar el trabajo de mapeo de radar.

1. Crea un mapa

Inicie el archivo lidar_slam.launch en el host

roslaunch zxcar lidar_slam.launch

El primer error de inicio es el siguiente y es necesario instalar las dependencias relevantes.

sudo apt-get install ros-melodic-gmapping
sudo apt-get install ros-melodic-move-base
sudo apt-get install ros-melodic-amcl
sudo apt-get install ros-melodic-map-server
sudo apt-get install ros-melodic-global-planner
sudo apt-get install ros-melodic-dwa-local-planner

Inserte la descripción de la imagen aquí
Una vez completada la instalación, puede ejecutarla de nuevo y aparecerá la palabra ¡ odom recibido! Para indicar un inicio exitoso.
Inserte la descripción de la imagen aquí

Luego, debe ejecutar el archivo lidar_slam_rviz.launch en el esclavo para iniciar la interfaz RVIZ e iniciar el nodo teleop_twist_keyboard al mismo tiempo .

roslaunch zxcar lidar_slam_rviz.launch
rosrun teleop_twist_keyboard teleop_twist_keyboard.py

Inserte la descripción de la imagen aquí

El nodo teleop_twist_keyboard se usa para controlar que el automóvil camine, y el método de uso es el mismo que el del indicador:
Inserte la descripción de la imagen aquí
al manipular el automóvil para caminar, puede ver el efecto de la creación del mapa en RVIZ.
Inserte la descripción de la imagen aquí

2. Guarde el dibujo

Después de construir un mapa de radar manipulando el automóvil para caminar, debe guardar el mapa creado en zxcar / maps .

Ejecute el siguiente comando desde la máquina para guardar el dibujo.

roscd heimarobot/maps
rosrun map_server map_saver -f house

Después de guardar, puede detener el archivo lidar_slam.launch en el host.

3. Navegación

Ejecute los siguientes comandos en el esclavo y también se mostrarán las palabras ** ¡odom recibido! **, lo que significa que el inicio se realizó correctamente.

roslaunch zxcar navigate.launch

Ejecute el comando en el host para iniciar RVIZ

roslaunch zxcar navigate_rviz.launch

Inserte la descripción de la imagen aquí

En este momento, debe usar el pincel de estimación de pose 2D en la barra de herramientas sobre RVIZ para calibrar la posición inicial del automóvil, y luego usar el objetivo de navegación 2D para navegar.

Supongo que te gusta

Origin blog.csdn.net/weixin_45929038/article/details/114061424
Recomendado
Clasificación