将LeGO LOAM的思路迁移到大疆Livox Horizon激光雷达上,从而实现轻量化的激光SLAM系统。本项目在算法上的创新性贡献不大,但是在代码实现方面有如下几点改善:
-
地面提取
由于livox的点云不像传统旋转式机械激光雷达那样规则分布,因此我们采用Run_based_segmentation的地平面拟合方法进行地面提取。
-
点云聚类分割
项目中有尝试autoware.ai中的欧式聚类方法进行点云聚类分割,但是在速度和分割效果上还没找到一个好的平衡点,因此暂时还没使用。
-
前端里程计关于
pitch
,roll
以及tz
的计算我们之前花了较大力气进行地面拟合和提取,得到较为准确的地面的平面方程。所以在前端部分直接通过两次扫描的地面方程进行
pitch
,roll
以及tz
的计算,没有像Lego-loam那样进行ICP配准。 -
使用右扰动模型推导ICP配准的雅克比
LOAM和lego-loam中,关于旋转的求导相信让很多朋友困惑了很久。因此,在本项目中我们采用右扰动模型进行旋转求导。从建图效果上可以表明理论上的数学推导是没问题的,剩下的就是精度问题。
-
回环检测
在后端部分已经构建好基于ISAM2的位姿图优化框架。后续会加上回环检测,已经使用基于里程计的回环检测与校正。后续计划使用scancontext实现回环检测。
依赖:
- Ubuntu 18.04 andROS melodic
- PCL 1.9
- Eigen 3.3.7
- livox_ros_driver
- GTSAM 4.1
cd ~/ros/catkin_ws/src
git clone https://github.com/GDUT-Kyle/LEGO-LIVOX.git
cd ../
catkin build lego_livox
source devel/setup.bash
由于不确定自己录制的数据包能否传播(没有测绘资质),建议下载Livox官方提供的数据包parking lot rosbag进行测试
roslaunch lego_livox lins_slam.launch
rosbag play 2020_parking_lot.bag --clock
roslaunch livox_ros_driver livox_lidar_msg.launch
roslaunch lego_livox lins_slam.launch
-
算法与代码勘误
该项目仍处于开发阶段,由于本人天性愚笨,相信在理论推导方面仍有不少错误,从而影响到代码实现的有效性。除此之外,本人代码能力较差,代码架构的设计不是很合理。望各位前辈指出其中不妥之处。以便改进,不胜感激。
-
性能测试与验证
该项目尚未进行过严格的性能测试,但是与livox_horizon_loam相比,我们可以在较低运算量的条件下,得到相似的建图效果。但是不可否认,鲁棒性和精度略低。
-
甩锅认错说明
我没错!(实不相瞒,本人比较菜,希望各位老师指正批评.....)
《视觉SLAM十四讲:从理论到实践》
本人博客:https://blog.csdn.net/m0_38144614?spm=1001.2014.3001.5343