本文介绍的LeGO-LOAM同样是针对LOAM计算效率问题的优化,针对地面移动机器人在室内外环境下运行时的特点,针对性的对LOAM进行优化和改进,实现了一套轻量级的激光雷达SLAM系统。该工作由Shan Tixiao完成,论文LeGO-LOAM: Lightweight and Ground-Optimized LiDAR Odometry and Mapping on Variance Terrain发表于2018年IROS会议...
int main(int argc, char** argv){ ros::init(argc, argv, "lego_loam"); ImageProjection IP;//实例化了一个对象 IP ,一旦创建了一个对象,就进入到了 Class 中去执行构造函数。 ROS_INFO("\033[1;32m--->\033[0m Image Projection Started."); ros::spin(); return 0; } 2.2 构造函数...
LeGO-LOAM全称为:Lightweight and Groud-Optimized Lidar Odometry and Mapping on Variable Terrain,从标题可以看出 LeGO-LOAM 为应对可变地面进行了地面优化,同时保证了轻量级。 LeGO-LOAM是专门为地面车辆设计的SLAM算法,要求在安装的时候Lidar能以水平方式安装在车辆上;如果是倾斜安装的话,也要进行位姿转换到车辆上。
相对于LOAM算法,LeGo-LAOM能够进行地面优化,同时保证了轻量级;也使用了Keyframe概念以及回环检测位姿图优化的方式对后端进行重构。 对于工业领域而言,LeGo-LOAM有非常广泛的应用,尤其是工业机器人领域,LeGo-LOAM一直都是应聘者必须掌握的框架。 对于学术研究而言,LeGo-LOAM是激光SLAM的经典框架,LeGo-LOAM源码简洁清晰,比...
Lego - LOAM和LOAM存在怎样的关联与区别? 大家好,又见面了,我是你们的朋友全栈君。 本文为我在浙江省北大信研院-智能计算中心-情感智能机器人实验室-科技委员会所做的一个分享汇报,现在我把它搬运到博客中。 由于参与分享汇报的同事有许多是做其他方向的机器人工程师(包括硬件、控制等各方面并不是专门做SLAM...
intmain(intargc,char** argv){ros::init(argc, argv,"lego_loam");ROS_INFO("\033[1;32m--->\033[0m Map Optimization Started.");mapOptimization MO;// 1.进行闭环检测与闭环的功能std::threadloopthread(&mapOptimization::loopClosur...
LeGO-LOAM是专门为地面车辆设计的SLAM算法,要求在安装的时候Lidar能以水平方式安装在车辆上;如果是倾斜安装的话,也要进行位姿转换到车辆上。而LOAM对Lidar的安装方式没有要求,即使手持都没有关系。 作者的实验平台是一个移动小车(UGA),挂载了一个Velodyne VLP-16 线激光雷达,还配有一个低精度的 IMU;选用的硬件平...
LeGO-LOAM的设计思路 对地面点云的配准主要使用的是面点特征;在分割后的点云配准主要使用的是边缘点和面点特征。从中可以看出使用边缘点的数量是要远小于平面点的数量,这也是能实现加速的主要原因。 LeGO_LOAM的软件系统输入 3D Lidar 的点云,输出 6 DOF 的位姿估计。整个软件系统分为 5 个部分: ...
LeGO-LOAM是专门为地面车辆设计的SLAM算法,要求在安装时Lidar能以水平方式安装在车辆上;如果是倾斜安装,则需进行位姿转换至车辆坐标系。相比之下,LOAM对Lidar的安装方式无严格要求,即便手持亦可。在作者的实验中,其使用了一个移动小车(UGA),挂载Velodyne VLP-16线激光雷达,配有一个低精度IMU,...
点云分割对应的代码在"LeGO-LOAM/src/imageProjection.cpp"中,LeGO-LOAM的4个流程都是独立运行的ROS程序,入口函数如下:int main(int argc, char** argv){ ros::init(argc, argv, "lego_loam"); ImageProjection IP; // 工作主流程 ROS_INFO("\033[1;32m--->\033[0m Image Projection...