Cómo ejecutar A-LOAM 3D SLAM en reComputer
Introducción a A-LOAM
A-LOAM es una implementación avanzada del algoritmo LOAM (Lidar Odometry and Mapping) original de J. Zhang y S. Singh. Las características clave de A-LOAM incluyen:
- Odometría y mapeo LiDAR en tiempo real.
- Estructura de código simplificada usando Eigen y Ceres Solver.
- Alto rendimiento y robustez en entornos diversos.
A-LOAM puede ser usado para varias aplicaciones incluyendo conducción autónoma, robótica y mapeo 3D.
Este wiki proporciona pasos detallados para configurar y ejecutar el algoritmo A-LOAM (Advanced LOAM) en reComputer Jetson Series usando un sensor LiDAR RoboSense RS32. A-LOAM es una implementación avanzada de LOAM (Lidar Odometry and Mapping in Real-time) que utiliza Eigen y Ceres Solver para mapeo y localización eficientes y en tiempo real.

Prerrequisitos
-
RoboSense RS32 Lidar.
note- Asegúrate de que tu reComputer esté ejecutando Jetpack 5.x. Solo hemos probado en Ubuntu 20.04 y ROS Noetic. Sigue la instalación de ROS1 para reComputer como se describe en esta guía para completar la configuración del entorno ROS.
- Asegúrate de seguir el tutorial para lanzar el RoboSense RS32 LiDAR en reComputer en ROS, y visualizar exitosamente los datos de nube de puntos.

Comenzando
Configuración del Entorno
-
Paso 1: Instalar gflags, google-glog, suitesparse, cxsparse3, cxsparse.
sudo apt-get install libgflags-dev libgoogle-glog-dev
sudo apt-get install libsuitesparse-dev libcxsparse3 libcxsparse-dev -
Paso 2: Instalar PCL (Point Cloud Library).
sudo apt install libpcl-dev
-
Paso 3: Instalar Ceres.
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
tar xvf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..
make -j4
sudo make install -
Step 4: Clone the A-LOAM code into the src directory of your workspace (~/catkin_ws/src).
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
Modificar Archivos de Configuración y Código Fuente
-
Paso 1: Dado que el algoritmo A-LOAM requiere que el tipo de nube de puntos sea XYZIRT, y la salida predeterminada del LiDAR RS32 es XYZI, necesitas modificar el archivo CMakeLists.txt en la línea 8 en el directorio ~/catkin_ws/src/rslidar_sdk/, cambiando XYZI a XYZIRT.
-
Paso 2: El tema de nube de puntos predeterminado al que se suscribe A-LOAM es /velodyne_points, mientras que el tema de salida predeterminado del LiDAR RS32 es /rslidar_points. Por lo tanto, modifica el nombre del tema en la línea 26 del archivo ~/catkin_ws/src/rslidar_sdk/config/config.yaml a /velodyne_points.
-
Paso 3: Si estás usando C++14, modifica la línea 5 en el archivo CMakeLists.txt ubicado en el directorio ~/catkin_ws/src/A-LOAM/, cambiando C++11 a C++14.
-
Paso 4: Si estás usando OpenCV 4.x, necesitas actualizar las referencias del archivo de cabecera de OpenCV en la línea 44 del archivo scanRegistration.cpp ubicado en el directorio ~/catkin_ws/src/A-LOAM/src (este paso se puede omitir si estás usando OpenCV 3.x).
Reemplazar código
#include <opencv/cv.h>
con
#include <opencv2/opencv.hpp>
-
Paso 5: En las líneas 91 y 93 de ~/catkin_ws/src/A-LOAM/src/kittiHelper.cpp, cambia CV_LOAD_IMAGE_GRAYSCALE por cv::IMREAD_GRAYSCALE
-
Paso 6: Si estás usando tf2, modifica todos los archivos .cpp (kittiHelper.cpp, laserMapping.cpp, laserOdometry.cpp, scanRegistration.cpp) en el directorio ~/catkin_ws/src/A-LOAM/src/ cambiando frame_id=/camera_init por frame_id=camera_init, eliminando únicamente el símbolo '/'.
Compilar el Paquete
- Paso 1: Regresa al espacio de trabajo y recompila el paquete de características y recarga el entorno.
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
Iniciando SLAM 3D
-
Paso 1: Ejecutando código lidar
roslaunch rslidar_sdk start.launch
-
Paso 2: Ejecutar el código A loam
roslaunch aloam_velodyne aloam_velodyne_HDL_32.launch
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.