XTDrone配置ALOAM三维激光SLAM环境
参考链接:
https://www.yuque.com/xtdrone/manual_cn/3d_laserslam
https://blog.csdn.net/cotex_A9/article/details/135931951
前提是已经配置到了 XTDrone 的基础环境,可以编译 px4,以及运行 ros
安装编译 ALOAM
安装 ALOAM 按照官网链接即可,注意需要安装 ros ,ceres,PCL 第三方库:
安装 ceres
sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev
之后下载压缩包,压缩包官网链接:http://ceres-solver.org/ceres-solver-2.2.0.tar.gz
在根目录下创建一个文件夹来存放 ceres 源码以及编译:
tar zxf ceres-solver-2.2.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.2.0
make -j3
make test
make install
我的是这样:
PCL 库安装
因为我的系统本来就已经有 PCL 库,因此直接就编译过了
重编译 catkin_ws
在安装完 aloam 依赖的库后,将 aloam 复制到 catkin_ws 的 src 目录下,用于重新编译:
cp -r ~/XTDrone/sensing/slam/laser_slam/A-LOAM ~/catkin_ws/src/
cp -r ~/XTDrone/sitl_config/gazebo_plugin/velodyne/* ~/catkin_ws/src/ #这里是3D激光雷达插件
cd ~/catkin_ws
catkin_make
我这边按照上述官网的步骤来重编的话,是有报错的,找不到一些库,因此需要修改 ALOAM 的代码:
报错:
根据这些报错提示,修改对应文件中的代码:
报错:
报错:
注意这个报错有多处,上面只是示例了一处,根据报错信息的文件,一个个修改即可。
非报错的修改
需要将 A-LOAM 中所有cpp文件中的主题类的 /camera_init 修改为 camera_init。这个涉及到后续运行 rviz 中的坐标系转换问题,没有修改的话,后续的 rviz 会报错很多坐标系无法转换
这个有很多,注意一个个修改。
修改完上述后,返回 catkin_ws 目录编译。
编译完成后,检查 ~/.bashrc 文件中是否有添加 source ~/catkin_ws/devel/setup.bash
运行仿真
运行 px4 的仿真文件,由于我的电脑直接运行 outdoor1 模型的话,主题不对,因此需要按官网的说明,修改 outdoor1.launch 文件中的飞机模型:
roslaunch px4 outdoor1.launch
再运行雷达slam的仿真:
roslaunch aloam_velodyne aloam_velodyne_HDL_32.launch
如果遇到这种报错,就是没有 source devel目录下的 setup.bash,source一下即可: