Directorio de artículos
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.
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.
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.
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.
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.
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.
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
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
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
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.
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/
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.
Inicie la herramienta rqt en el lado de la PC (lado esclavo) de acuerdo con las indicaciones.
rosrun rqt_reconfigure rqt_reconfigure
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.
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
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
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
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
Una vez completada la instalación, puede ejecutarla de nuevo y aparecerá la palabra ¡ odom recibido! Para indicar un inicio exitoso.
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
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:
al manipular el automóvil para caminar, puede ver el efecto de la creación del mapa en RVIZ.
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
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.