> 技术文档 > XTDrone——ALOAM与3D激光雷达三维SLAM(处理没有点云和坐标系报错的问题)

XTDrone——ALOAM与3D激光雷达三维SLAM(处理没有点云和坐标系报错的问题)


A-LOAM算法跑通velodyneHDL32激光雷达SLAM

首先复制XTDrone中的(A-LOAM算法代码以及激光雷达插件部分)

cp -r ~/XTDrone/sensing/slam/laser_slam/A-LOAM ~/catkin_ws/src/cp -r ~/XTDrone/sitl_config/gazebo_plugin/velodyne/* ~/catkin_ws/src/

catkin_ws是自己的一个工作空间,可以自己设置。

安装依赖包

ceres   http://ceres-solver.org/ceres-solver-2.2.0.tar.gz

sudo apt-get install cmakesudo apt-get install libgoogle-glog-dev libgflags-devsudo apt-get install libatlas-base-devsudo apt-get install libeigen3-devsudo apt-get install libsuitesparse-devtar zxf ceres-solver-2.2.0.tar.gzmkdir ceres-bincd ceres-bincmake ../ceres-solver-2.2.0make -jsudo make install

安装完需要一些时间!!!等待一下。

修改复制过来的A-LOAM代码

cd ~/catkin_ws/src/A-LOAM/src
#将src文件夹下所有.cpp/.hpp文件中出现的下列代码进行修改
#\"/camera_init\"改为\"camera_init\"
#\"/camera\"改为\"camera\"
#\"#include \"改为\"#include \"
#\"CV_LOAD_IMAGE_GRAYSCALE\"改为\"cv::IMREAD_GRAYSCALE\"
cd ~/catkin_ws/src/A-LOAM
gedit CMakeLists.txt
#将\"set(CMAKE_CXX_FLAGS \"-std=c++11\")\"改为\"set(CMAKE_CXX_FLAGS \"-std=c++14\")\"

我只碰到以上的问题,其他的问题可以参考以下两个博客和XTDrone三维激光SLAM官方文档。

XTDrone仿真平台示例解析(四)——三维激光SLAM-CSDN博客

https://zhuanlan.zhihu.com/p/1908159272816186679

三维激光SLAM · 语雀

编译catkin_ws

cd ~/catkin_wscatkin_make

修改PX4_Firmware中的outdoor1.launch代码

【注意】:我用的是iris_3d_lidar这个sdf,所以修改成这个,也可以用官网上的iris_3d_gpu_lidar.sdf文件,如果直接用这个launch文件,后续启动雷达的launch文件的时候会报坐标系camera_init有问题的错误,因此,在该launch文件中加入了tf坐标转换,如果出现问题可以改改,没有就不需要,我是一开始出问题,后面又不需要了。

就是把下面这段tf转换坐标系的代码加到outdoor1.launch的后面:

完整修改好的outdoor1.launch文件如下:

                                                

运行PX4和A-LOAM算法

【注意】:如果直接运行以下两行指令,rviz将不会出现点云,有可能是velodyne_HDL_32 线的雷达没有订阅到gazebo的话题,从gazebo发出的激光点云话题必须跟该雷达所订阅的/velodyne_points进行匹配才可以进行数据流的传输。从gezebo雷达发出的话题在路径/home/nvidia/PX4_Firmware/Tools/sitl_gazebo/models/3d_lidar/3d_lidar.sdf这里,话题不对的话,可以检查gazebo雷达发出和后面建图部分接收的话题是否有误。我出现过gazebo发出的话题为/iris_0/velodyne_points,接收端还是/velodyne_points这个话题的情况。然后就没有点云。

 0.01     /velodyne_points laser_3d 0.008  1 15 0   
roslaunch px4 outdoor1_1.launchroslaunch aloam_velodyne aloam_velodyne_HDL_32.launch

运行效果如下: