里程计部分改为scan2localmap的匹配,特征提取部分去除了原LeGO-LOAM中的聚、分割并提取较为突出的边缘点和平面点,而是沿用LOAM中的边缘和平面点。(精度高一些,LeGO-LOAM主要考虑性能多一点) 维护两个因子图,预积分因子图可联合优化激光雷达odom和IMU,并估计IMU偏差,...
intmain(intargc,char**argv){ros::init(argc,argv,"lego_loam");lego_loam::ImageProjectionIP;ROS_INFO("\033[1;32m--->\033[0m Image Projection Started.");ros::spin();return0;} main函数中对ROS进行了初始化,然后就初始化了lego_loam::ImageProjection这么个东西,所以所有的内容都是在lego_loam...
UGA行驶的路面是非平滑连续的(运动是颠簸的),采集的数据将会失真(运动畸变,匀速运动模型无法适用于颠簸场景),使用LOAM很难在两帧之间找到可靠的特征对应。 在噪杂的环境中操作UGV也会给LOAM带来一些挑战,例如:浮动的草丛和摆动的树叶的点云将被误提取为角点或面点,这些特征是不可靠的,难以在连续帧之间获取准确的匹...
A-LOAM相较于LOAM而言舍去了IMU对信息修正的接口,同时A-LOAM使用了Ceres库完成了LM优化和雅克比矩阵的正逆解。A-LOAM可读性更高,便于上手。简而言之,A-LOAM就是LOAM的清晰简化,版本。 A-LOAM的代码清晰度确实很高,整理的非常简洁,主要是使用了Ceres函数库代替了张继手推的ICP优化求解部分(用Ceres的自动求导,代替...
ALOAM github page 另外,下面的算法都使用hdl_graph_slam给到的室外数据集做了结果的测试,建模的图像如下所示。由于没有找到轨迹的真实值,没有对轨迹误差做比较分析。 LOAM和ALOAM的区别(Difference LOAM vs A-LOAM): LOAM中提供了使用IMU信息修正的接口, ALOAM中省略了这一块。LOAM has IMU refinement. ...
代码中先初始化了lego_loam::FeatureAssociation,用来订阅了上一节点发出来的分割出来的点云,点云的属性,外点以及IMU消息,并设置了回调函数。其中IMU消息的订阅函数较为复杂,它从IMU数据中提取出姿态,角速度和线加速度,其中姿态用来消除重力对线加速度的影响。然后函数FeatureAssociation::AccumulateIMUShiftAndRotation用来...
论文认为loam系列文章存在一些问题:将其数据保存在全局体素地图中,难以执行闭环检测;没有结合其他绝对测量(GPS,指南针等);当该体素地图变得密集时,在线优化过程的效率降低。为此作者决定使用因子图的思想优化激光SLAM,引入四种因子:IMU预积分因子;激光雷达里程因子;GPS因子;闭环因子。下面是文章中主要的贡献点。
LeGO-LOAM是专门为地面车辆设计的SLAM算法,要求在安装的时候Lidar能以水平方式安装在车辆上;如果是倾斜安装的话,也要进行位姿转换到车辆上。而LOAM对Lidar的安装方式没有要求,即使手持都没有关系。 作者的实验平台是一个移动小车(UGA),挂载了一个Velodyne VLP-16 线激光雷达,还配有一个低精度的 IMU;选用的硬件平...
另外,下面的算法都使用hdl_graph_slam给到的室外数据集做了结果的测试,建模的图像如下所示。由于没有找到轨迹的真实值,没有对轨迹误差做比较分析。 LOAM和ALOAM的区别(Difference LOAM vs A-LOAM): LOAM中提供了使用IMU信息修正的接口, ALOAM中省略了这一块。
相对于LOAM算法,LeGo-LAOM能够进行地面优化,同时保证了轻量级,也加入了回环检测模块。 相对于LOAM算法,LeGo-LAOM能够进行地面优化,同时保证了轻量级;也使用了Keyframe概念以及回环检测位姿图优化的方式对后端进行重构。 对于工业领域而言,LeGo-LOAM有非常广泛的应用,尤其是工业机器人领域,LeGo-LOAM一直都是应聘者必须掌握...