前言 广度优先遍历(BFS)算计介绍 广度优先遍历(BFS)和深度优先遍历(DFS)同属于两种经典的图遍历算法 广度优先遍历算法:首先从某个节点出发,一层一层的遍历,下一层必须等到上一层节点全部遍历完之后才会开始遍历基本思想:尽最大程度辐射能够覆盖的节点,并对其进行访问。 用一道BFS的题来进行举例 以M节点为顶点的话则遍历顺序为:MNQP或MNPQ或MQNP或MQPN或MPQN
前言 地面点提取方法 LeGO-LOAM中前端改进中很重要的一点就是充分利用地面点,本片博客主要讲解 如何进行地面点提取 如下图所示,相邻的两个scan的同一列,打在地面上,形成两个点A和B。 它们的垂直高度差为h,这个值在理想情况(雷达水平安装,地面是水平的)接近于0水平距离差d和水平面的夹角为如果为地面点,在理想情况下,这个角点接近0. 但是雷达的安装不会完全水平,并且地面也不是平的
轻量级激光雷达里程计和建图方法 系统框架 整体框架如下: 输入:三维激光点云 输出:六自由度位姿估计 整个系统可以分为五个模块: 分割:指获取单次扫描的点云,并将其投影到距离图像上进行分割。_16_1800个点用cvmat来对点进行初步管理* 特征提取:分割的点云被发送到特征提取模块。 激光雷达里程计:使用从先前模块中提取的特征点进行帧间位姿估计 激光建图部分:这些特
论文的标题是:LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain 标题给出的应用场景是 可变地形 重点是 轻量级 并 利用 地面优化 本质依然是一个 激光雷达里程计和建图 摘要部分 文章提出了一种轻量级、基于地面优化的激光里程计和建图算法LeGo-
LeGO-LOAM 简介 LeGO-LOAM 的英文全称是 lightweight and ground optimized lidar odometry and mapping。轻量化具有地面优化的激光雷达里程计和建图 其框架如下,大体和LOAM是一致的LeGO-LOAM是基于LOAM的改进版本,其主要目的是为了实现小车在多变地形下的定位和建图,针对前端和后端都做了一系列的改进。 在原本的
前言 在之前的博客中对ALOAM的前端和后端做了代码详细的梳理 这里先对前几篇后端的内容做一个总结 这篇博客中,首先对订阅的前端的数据做了处理 这篇博客中,对地图进行栅格处理并根据当前帧位姿提取局部地图 这篇博客中,对当前帧中的角点和面点与局部地图的角点和面点构建Ceres约束 这篇博客中,通过Ceres进行位姿优化 这篇博客中,进行里程计到地图位姿更新维护 本篇为ALOA
前言 在上一篇博客(ALOAM:后端lasermapping通过Ceres进行帧到地图的位姿优化)中,通过Ceres优化得到了 当前帧到地图的最优位姿 下面要做的是更新地图模块中维护的一个位姿,这个位姿就是odom到map之间的位姿变换。 为什么要更新这个位姿呢?因为在前面这篇博客中(ALOAM:后端laserMapping代码结构与数据处理分析),在收到前端里程计数据后,会以前端里程计的频
前言 上一篇博客构建了线约束和面约束,添加到了残差模块。ALOAM:后端 lasermapping构建角点约束与面点约束 本片主要介绍通过ceres构建的约束的CostFuction,及后续的通过Ceres进行位姿优化 角点的约束添加在这个地方这里的CostFunction是通过LidarEdgeFactor自定义的结构体建立的和前端里程计用的角点约束是一样的在这篇博客中做了分析原理就是求当
前言 上一篇博客中地图栅格化处理与提取完成了从整个地图中提取出要和当前帧做匹配的局部地图 下面要做的就是要构建角点约束和面点约束 后端的构建约束问题和前端不一样。原因就是前端从上一帧上去找,而后端是在局部地图上找,点要多很多,并且没有了线束信息,所以原理上不一样了。 线特征的提取通过kdtree在局部地图中找到5个最近的线特征,为了判断他们是否符合线特征的特性,需要对5个点构成的协方差矩阵
前言 栅格点云地图处理原因不同于前端的scan-to-scan的过程,ALOAM的后端是scan-to-map的算法,具体来说就是把当前帧和地图进行匹配,得到更准确的位姿同时也可以构建更好的地图.由于是scan-to-map的算法,因此计算量会明显高于scan-to-scan的前端,所以后端通常处于一个低频的运行频率,但是由于scan-to-map的精度往往优于scan-to-scan.因此后端
前面分析的ALOAM相关的链接如下:ALOAM:后端laserMapping代码结构与数据处理分析ALOAM:帧间里程计代码解读ALOAM:Ceres 优化部分及代码解析ALOAM:激光雷达的运动畸变补偿代码解析ALOAM:异常点剔除机制代码解析A-LOAM :前端lidar点特征提取部分代码解读A-LOAM :前端lidar点预处理部分代码解读 前言 ALOAM方法实现了低的漂移,并且计算的
前言 ALOAM方法实现了低的漂移,并且计算的复杂度低,实时性很好.并且不需要高精度的lidar和惯导 这个方法的核心思想就是把SLAM问题进行了拆分,通过两个算法来进行.一个是执行高频率的前端里程计但是低精度的运动估计(定位),另一个算法在比定位低一个数量级的频率执行后端建图(建图和校正里程计).这个两个算法都需要提特征点,就是经典的角点和面点,然后进行配准.在前端的那个算法中也就是里程计算
gazebo世界场景 在launch文件中加入 gazebo世界场景的配置 场景选择了软件博物馆,其中场景的结构比较丰富,适于激光雷达建图定位,颜色也比较丰富,后期还可用于相机的建图定位. <!-- 设置gazebo世界 --> <arg name="world" value="$(find robot_sim_demo)/worlds/ROS-Aca
前言 A-LOAM的cpp有四个,其中 kittiHelper.cpp 的作用是将kitti数据集转为rosbag剩下的三个是作为 slam 的 部分,分别是: laserMappin.cpp ++++ 当前帧到地图的优化 laserOdometry.cpp ++++ 帧间里程计 scanRegistration.cpp ++++ 前端lidar点预处理及特征提取 本篇主要解读
前言 Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。 Ceres可以解决边界约束鲁棒非线性最小二乘法优化问题。这个概念可以用以下表达式表示:这一表达式在工程和科学领域有非常广泛的应用。比如统计学中的曲线拟合,或者在计算机视觉中依据图像进行三维模型的构建等等。 ALOAM里面的优化问题的建模和求解都是通过Ce
前言 什么是激光雷达的运动畸变 ?激光雷达的一帧数据是过去一周期内形成的所有数据,数据仅有一时间戳,而非某个时刻的数据,因此在这一帧时间内的激光雷达或者其载体通常会发生运动,因此,这一帧的原点不一致,会导致一些问题,这个问题就是运动畸变所以需要去运动畸变,也叫畸变校正 如何进行运动补偿? 运动补偿的目的就是把所有的点云补偿到某一时刻,这样就可以把本身在过去100ms内收集的点云统一到一个时间点上去
前言 在LOAM的论文中,作者提到了要剔除两种异常点. 平行点 遮挡点 但是在ALOAM的代码中并未写相关的功能. 如果想把论文中两种异常点的剔除机制加进去,可以参考下面的代码. 之前把一些其它的异常点剔除的方法总结了,可以参考这个地方 去除掉非常近的点 去除掉非常远的点 去除NaN的点 反射率处理 去除入射角较小的点 (实际就是平行点) LOAM中的异常点 再回顾下LOAM中定义的两类异
A-LOAM代码的结构 A-LOAM的cpp有四个,其中 kittiHelper.cpp 的作用是将kitti数据集转为rosbag剩下的三个是作为 slam 的 部分,分别是: laserMappin.cpp ++++ 当前帧到地图的优化 laserOdometry.cpp ++++ 帧间里程计 scanRegistration.cpp ++++ 前端lidar点预处理及特征提取 本片主要解
LOAM是 Lidar SLAM 中非常基础的框架之一,后面在此基础上又延伸 优化 出 一些 框架,比如 A-LOAM Lego-LOAM LIO-SAM 所以还是要好好研究下这个基础框架 本篇主要是论文和算法内容方面的解读 LOAM简介 LOAM 实现的功能:LOAM 实现 了 一种实时激光里程计并建图的算法,使用的硬件是一个三维空间中运动的两轴单线激光雷达. 两轴单线激光雷达,就是在水平方
3d 激光slam 介绍开源框架:aloam、lego-loam、lio-sam的算法原理,源码分析,使用实践
博客
泡泡
积分
勋章
精选激光SLAM:Faster-Lio 算法编译与测试
精选在gazebo里搭建一个livox mid360 + 惯导仿真平台测试 FAST-LIO2
精选通过gazebo对 livox mid360 激光雷达进行仿真
ouster-32激光雷达实测:雷达参数配置与输出数据分析
ouster-32激光雷达实测:ROS驱动编译使用与设备连接的网络配置
lio-sam框架:后端里程计、回环、gps融合
lio-sam框架:回环检测及位姿计算
lio-sam框架:点云匹配之手写高斯牛顿优化求状态量更新
LIO-SAM框架:点云匹配前处理之初值计算及局部地图构建
3d激光SLAM:LIO-SAM框架---特征点提取
LIO-SAM框架:点云预处理前端---畸变矫正数据预处理
LIO-SAM框架:点云预处理前端---畸变矫正
3d激光SLAM:LIO-SAM框架---位姿融合输出
3d激光SLAM:LIO-SAM框架---IMU预积分流程
3d激光SLAM:LIO-SAM框架---IMU预积分功能数据初始化
因子图优化及GTSAM中IMU预积分接口
IMU预积分在优化问题中的建模及外参标定
惯性测量单元预积分原理与实现
3D激光SLAM:LIO-SAM
激光SLAM:LeGO-LOAM---两步优化的帧间里程计及代码分析
3D激光slam:LeGO-LOAM---基于广度优先遍历的点云聚类算法及代码分析
激光slam:LeGO-LOAM---地面点提取方法及代码分析
激光slam:LeGO-LOAM论文解读(二)
激光slam:LeGO-LOAM---论文解读(一)
激光slam:LeGO-LOAM---代码编译安装与gazebo测试
ALOAM:后端lasermapping最终篇---地图更新及消息发布
ALOAM:后端lasermapping 里程计到地图位姿更新维护
ALOAM:后端lasermapping通过Ceres进行帧到地图的位姿优化
ALOAM:后端 lasermapping构建角点约束与面点约束
ALOAM:后端lasermapping地图栅格化处理与提取
ALOAM:后端lasermapping数据处理低延时性保障操作
ALOAM:后端laserMapping代码结构与数据处理分析
ALOAM:gazebo仿真测试场景搭建
ALOAM:帧间里程计代码解读
ALOAM:Ceres 优化部分及代码解析
ALOAM:激光雷达的运动畸变补偿代码解析
ALOAM:异常点剔除机制代码解析
A-LOAM :前端lidar点特征提取部分代码解读
A-LOAM :前端lidar点预处理部分代码解读
LOAM 论文解读
KITTI数据集处理--转换成ROS可用数据
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信