Autonomous vehicle 杂谈_12
一. 写在前面
上回书成功复现了LOAM的进阶版本 - ALOAM,但其实还有一个更加进阶的版本 - LeGO LOAM,这种方法与普通的LOAM相比,更改了特征点的提取形式,添加了后端优化,因此,构建出来的地图也就更加的完善。
简单总结起来,LeGO-LOAM的主要特点有以下三点:
(1)对地面做了分割,减少了特征搜索范围
(2)提取特征之前做了聚类,提高了特征质量
(3)水平和航向分别优化,提高了效率
分享放在前面(提前阅读一下比较好入口):
(1)LeGO-LOAM初探:原理,安装和测试
(2)LeGO-LOAM和LOAM的区别与联系
(3)LeGO-LOAM Public Datasets
(4)LeGO-LOAM Github
二. 实战复现 LeGO-LOAM
2.1 下载安装gtsam
# 第一步:安装依赖的功能包
sudo apt-get install libboost-all-dev
sudo apt-get install libparmetis-dev
# 第二步:检查环境版本对应情况
cmake --version # 需要 CMake >= 2.6
gcc -v # 需要 gcc >= 4.7.3
# 第三步:下载gtsam
cd ~
git clone https://bitbucket.org/gtborg/gtsam.git
# 第四步:编译
cd ~/gtsam
mkdir build
cd build
cmake ..
sudo make install # 花费时间较久,无报错显示100%即为安装完成
2.2 下载编译LeGO-LOAM
mkdir -p ~/legoloam_ws/src
cd ~/legoloam_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1
2.3 运行LeGO-LOAM,并读取bag
# 运行LeGO-LOAM
cd ~/legoloam/devel/
source setup.bash
cd ../src
roslaunch lego_loam run.launch
# 读取bag
cd 到bag所在位置
rosbag play *.bag --clock --topic /velodyne_points /imu/data # 有IMU单元的加上 /imu/data,没有的将其去掉即可
2.4 Rviz 查看地图生成过程及成果展示
2.5 地图保存方法
# 在整个地图生成快要结束前,输入:
rosbag record -o out /laser_cloud_surround
# 从录制的地图包中提取出pcd格式的map
rosrun pcl_ros bag_to_pcd ***.bag /laser_cloud_surround pcd
结束后最后会生成一个pcd文件夹,按时间排序后,时间最新的pcd文件就是最终生成的地图。
三. 评价
LeGO-LOAM是比较经典的激光SLAM算法,在LOAM的基础上改进而来。从目前的结果看来,里程计部分scan2scan的匹配是不够平稳的,此外其对IMU的使用也是比较松的耦合,仅限于去畸变和提供位姿旋转初值。回环检测部分也是比较简单,可以改进的空间较大。
如有问题,敬请指正。欢迎转载,但请注明出处。