3D激光SLAM(原理 + 公式 + 代码 理解)

总结: 

3D SLAM 的大体流程:(以多传感器融合为例)

(1) 首先进行传感器信息的读取: 包括激光雷达 . IMU(IMU 传感器可以提供 线加速度, 角速度 以及 旋转角RPY 信息)

(2) 扫描匹配:  对得到的数据进行畸变处理,校正位姿, 对得到的相邻两帧点云 计算位置变换矩阵和平移矩阵,从而进行配准, 使得相邻的点云相同部分可以重叠.  得到一个局部的点云地图.这个过程中还要进行下采样处理,过滤掉无关的点云.

(3) 精确定位: 对得到的局部地图进行优化, 使其能够得到一个完整的地图. 这里就需要进行相应的后端优化, 进行局部地图的配准, 位姿矫正, 同时也要进行回环检测, 判断是否之前经过某个位置, 从而得到全局一致的轨迹 和 地图. 这个过程中还要进行下采样处理,过滤掉无关的点云.

(4) 构建地图: 根据估计的轨迹以及自身的位姿信息 建立未知环境下的地图.

利用GPS GNSS 传感器融合 目的就是为了校正 路径漂移,使得最后的路径结果能尽可能与真实的路径重合, 使漂移降到最低.

网图简单理解:

各种库:

Ceres:   SLAM本质剖析-Ceres - 古月居

Eigen:  SLAM本质剖析-Eigen - 古月居

值得注意的是Eigen函数库是不存在动态链接库的,我们在CMakeList.txt编译时候只需要引入include即可。[这篇博客关于Eigen 矩阵的函数 和 操作讲的挺清楚的]

G2O:  SLAM本质剖析-G2O - 古月居

相较于Ceres而言,G2O函数库相对较为复杂,但是适用面更加广,可以解决较为复杂的重定位问题。Ceres库向通用的最小二乘问题的求解,定义优化问题,设置一些选项,可通过Ceres求解。而图优化,是把优化问题表现成图的一种方式,这里的图是图论意义上的图。一个图由若干个顶点,以及连着这些顶点的边组成

Sophus::  SLAM本质剖析-Sophus - 古月居

李群 李代数  Eigen库是一个开源的C++线性代数库,它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能。但是Eigen库提供了集合模块,但没有提供李代数的支持。一个较好的李群和李代数的库是Sophus库,它很好的支持了SO(3),so(3),SE(3)和se(3)。Sophus库是基于Eigen基础上开发的,继承了Eigen库中的定义的各个类。因此在使用Eigen库中的类时,既可以使用Eigen命名空间,也可以使用Sophus命名空间。

PCL:   SLAM本质剖析-PCL - 古月居

代码详解 :::: 信息的转换 ,  KDtree ,  Octree , 滤波,   三角化 , 分割 , NDT 配准,  

Gtsam: SLAM本质剖析-GTSAM - 古月居

Scan Context回环检测解读和使用 - 古月居    基于SC  的回环检测

SLAM之划窗优化 - 古月居    滑动窗口

​​​​​​【math】 向量运算:叉乘_阳光快乐普信男的博客-CSDN博客_向量叉乘

点到直线距离以及雅克比矩阵计算见 泡泡机器人 文章

6-DoF相关基础知识整理_WangKingJ的博客-CSDN博客

IMU 里程计估算 对应的LOAM 代码:

点云运动畸变矫正

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ORB-SLAM2是一种基于二维图像的实时单目视觉SLAM系统,可以在没有先验地图的情况下,从单个摄像头的输入中实时定位和建立环境模型。为了更好地理解ORB-SLAM2的原理代码实现,我们需要逐行分析其核心算法。 ORB-SLAM2的主要原理是通过特征提取,特征匹配和位姿估计来实现定位和建图。在代码中,我们可以看到一些关键的数据结构和函数调用,这些都是实现这些原理的关键。 首先,ORB-SLAM2使用FAST特征检测器在图像中检测关键点。这些关键点代表图像中的有趣区域。然后,使用ORB描述符对关键点进行描述。ORB描述符使用二进制位串来表示关键点周围的特征。 然后,ORB-SLAM2使用词袋法(Bag-of-Words)模型来进行特征匹配。它首先通过建立一个词典来表示所有关键点的描述符。然后,使用词袋模型来计算图像之间的相似度,从而找到匹配的关键点。 接下来,ORB-SLAM2使用RANSAC算法来估计两个图像之间的相对位姿。RANSAC算法通过迭代随机采样的方式来筛选出最佳的匹配关系,从而得到相对位姿估计。 最后,ORB-SLAM2使用优化算法(如g2o)来进行位姿图优化,从而更精确地估计相机的位姿。通过优化,ORB-SLAM2能够减少位置漂移,并在动态环境下更好地跟踪相机的位置。 总的来说,ORB-SLAM2通过特征提取、特征匹配和位姿估计实现实时单目视觉SLAM。核心代码实现了特征检测、描述符提取、特征匹配、RANSAC算法和图优化等关键步骤。了解这些原理代码实现,可以帮助我们更好地理解ORB-SLAM2系统背后的工作原理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值