Como executar A-LOAM 3D SLAM no reComputer
Introdução ao A-LOAM
A-LOAM é uma implementação avançada do algoritmo LOAM (Lidar Odometry and Mapping) original de J. Zhang e S. Singh. Os principais recursos do A-LOAM incluem:
- Odometria e mapeamento LiDAR em tempo real.
- Estrutura de código simplificada usando Eigen e Ceres Solver.
- Alto desempenho e robustez em ambientes variados.
O A-LOAM pode ser usado para várias aplicações, incluindo direção autônoma, robótica e mapeamento 3D.
Este wiki fornece etapas detalhadas para configurar e executar o algoritmo A-LOAM (Advanced LOAM) na reComputer Jetson Série usando um sensor LiDAR RoboSense RS32. O A-LOAM é uma implementação avançada do LOAM (Lidar Odometry and Mapping in Real-time) que utiliza Eigen e Ceres Solver para mapeamento e localização eficientes e em tempo real.

Pré-requisitos
-
RoboSense RS32 Lidar.
nota- Certifique-se de que o seu reComputer esteja executando Jetpack 5.x. Nós testamos apenas no Ubuntu 20.04 e ROS Noetic. Siga a instalação do ROS1 para reComputer conforme descrito neste guia para concluir a configuração do ambiente ROS.
- Certifique-se de seguir o tutorial para iniciar o RoboSense RS32 LiDAR no reComputer em ROS e visualizar com sucesso os dados de nuvem de pontos.

Primeiros Passos
Configuração do Ambiente
-
Etapa 1: Instale gflags, google-glog, suitesparse, cxsparse3, cxsparse.
sudo apt-get install libgflags-dev libgoogle-glog-dev
sudo apt-get install libsuitesparse-dev libcxsparse3 libcxsparse-dev -
Etapa 2: Instale PCL (Point Cloud Library).
sudo apt install libpcl-dev -
Etapa 3: Instale 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 -
Etapa 4: Clone o código do A-LOAM no diretório src do seu workspace (~/catkin_ws/src).
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
Modificar Arquivos de Configuração e Código-fonte
-
Etapa 1: Como o algoritmo A-LOAM requer que o tipo de nuvem de pontos seja XYZIRT, e a saída padrão do RS32 LiDAR é XYZI, você precisa modificar o arquivo CMakeLists.txt na linha 8 no diretório ~/catkin_ws/src/rslidar_sdk/, alterando XYZI para XYZIRT.

-
Etapa 2: O tópico padrão de nuvem de pontos ao qual o A-LOAM assina é /velodyne_points, enquanto o tópico de saída padrão do RS32 LiDAR é /rslidar_points. Portanto, modifique o nome do tópico na linha 26 no arquivo ~/catkin_ws/src/rslidar_sdk/config/config.yaml para /velodyne_points.

-
Etapa 3: Se você estiver usando C++14, modifique a linha 5 no arquivo CMakeLists.txt localizado no diretório ~/catkin_ws/src/A-LOAM/, alterando C++11 para C++14.

-
Etapa 4: Se você estiver usando OpenCV 4.x, será necessário atualizar as referências aos arquivos de cabeçalho do OpenCV na linha 44 do arquivo scanRegistration.cpp localizado no diretório ~/catkin_ws/src/A-LOAM/src (esta etapa pode ser ignorada se você estiver usando OpenCV 3.x).
Substitua o código
#include <opencv/cv.h>por
#include <opencv2/opencv.hpp>
-
Etapa 5: Nas linhas 91 e 93 de ~/catkin_ws/src/A-LOAM/src/kittiHelper.cpp, altere CV_LOAD_IMAGE_GRAYSCALE para cv::IMREAD_GRAYSCALE

-
Etapa 6: Se você estiver usando tf2, modifique todos os arquivos .cpp (kittiHelper.cpp, laserMapping.cpp, laserOdometry.cpp, scanRegistration.cpp) no diretório ~/catkin_ws/src/A-LOAM/src/ alterando frame_id=/camera_init para frame_id=camera_init, removendo apenas o símbolo '/'.

Compilar o Pacote
-
Etapa 1: Volte para o workspace e recompile o pacote de recursos e recarregue o ambiente.
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
Iniciando o 3D SLAM
-
Etapa 1: Executando o código do lidar
roslaunch rslidar_sdk start.launch -
Etapa 2: Executando o código do A-LOAM
roslaunch aloam_velodyne aloam_velodyne_HDL_32.launch
Suporte Técnico e Discussão de Produtos
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes formas de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.