激光SLAM从理论到实践学习——第四节(激光SLAM的前端配准方法)
激光的前端配准算法(帧间匹配算法)
- 前端配准在视觉内叫做Tracking或者帧间匹配,对激光SLAM是有非常大的影响的
- 帧间匹配不一定说的是前后两帧进行匹配,也可以是任意帧之间进匹配
- 是一个Map—>Scan的过程,一个Scan和一个Map去匹配的过程
- 常用的方法有下面四种
- ICP匹配方法(对上节ICP算法的证明)
- PL-ICP匹配方法(与ICP算法相似,只是说误差是之间的)
- 基于优化的匹配方法(Hector和cartographer两种算法是基于优化的方法)
- 相关匹配方法及分支定界加速(CSM算法)
ICP匹配方法
ICP方法的目的:就是两帧3D点云的匹配,求解一个R和t使得下列式(误差)最小。
已知对应点的求解方法
就是先求一个平均点,每一个点云都求一个平均点,然后对任何一个点云进行平移操作,把它移到以P点为圆心的地方,然后构造一个矩阵W,然后对这个矩阵进行SVD分解,然后得到ICP的解R与t
下面对ICP的解 (R与t)进行证明
对加号左边与加号右边分别取极小值,所以加号右边=0时,即可得t=ux-Rup
现在来求R,现在加号左边是这样的式子
我们知道(红色字)
所以可以将加号左边写成
把两式展开
R的转置* R是=I 一个常数,a²那项也是常数,所以最后留下
所以最后就是
所以要求的就是上面这个式子的最小值,也就是求下面式子的最大值,然后得R
未知对应点的求解方法
上节已经推理
ICP实现过程
也就是求一个R和t,使得两个点云间的距离最短(下式(误差)最小),求解下式
t和R的求解过程忽略,得到R和t的解
然后就可以计算得两个点云间的最短距离(使得(误差)最小)
PL-ICP方法(已有开源代码—indigo下的CSM)
上节ICP其实别名是PP-ICP,Point-to-Point ,点到点距离的ICP匹配方法
PL-ICP是Point-to-Line,点到线距离的ICP匹配方法
他的算法流程(和PP-ICP没什么区别,就是误差形式不同,到后面也是求R和t)
基于优化的匹配方法(基于梯度,HectorSLAM是纯梯度优化方法、Cartogerepher用的是CSM+梯度优化)
基于优化的匹配方法实际上就是基于梯度的方法
示意图:其实就是求极值,按照梯度下降方向一步一步求极值
数学描述:T表示我们要求解的机器人的位姿,Si(T)表示把激光数据用位姿T进行转换,也就是说把激光数据(Pix、Piy)用一个T转换到世界坐标系下(地图坐标系下)得到一个二维的坐标(x,y),i表示第i个激光束。
M(x)表示得到坐标x的地图占用概率(激光数据与地图最大匹配程度),激光数据与地图匹配程度最高是1,M(x)表示最大匹配程度,那么也就是1-minM(x),所以有
这个M(x)一般会是个似然场,就是一个似然得分,目标函数就定义成如上图那样。所以我们只需要求得一个T,使得M(x)最大。
M(Si(t))表示的是我们把每个激光束都统一到我们的世界坐标系下,然后求它占用的概率(与地图的最大匹配程度)越大代表激光与地图重合程度越好,机器人的位姿也就越准确。
目标函数E(T)这个式子他是非线性的,因为我们的旋转矩阵T,要求它的梯度,但因为地图是栅格化的也就是离散的,无法进行求解梯度,所以只能对地图进行插值。
求解这个式子还有一个前提就是需要知道梯度,所以他里面肯定是包含一个梯度项的,那为了求解这个梯度项,我们就必须对地图进行插值,那怎么对地图进行插值?这就是主要要讲的内容
基于优化方法的求解
目标函数依然是E(T),设pi=(pix,piy)表示第i个激光点的坐标,Si(T)表示将激光点的坐标转换到世界坐标,M(Si(t))是个非线性函数,对其进行一节泰勒展开,转换成线性函数E(T+△T),下图中▽的意思是对△T进行求偏导,M(Si(T))是个常数项。得到线性函数E(T+△T),对于线性系统,求其对△T的导数,并令其等于0得到下式
然后求解上式即可得到△T,令
激光SLAM从理论到实践学习——第四节(激光SLAM的前端配准方法)相关推荐
- 激光SLAM——第四节(激光SLAM的前端配准方法)
@[目录] ICP变种方法 – 第四章 激光的前端配准算法(ICP) 4.1.2.3.4的ICP方法,一个比一个精度高,计算量也大. 点云匹配算法是为了匹配两帧点云数据,从而得到传感器(激光雷达或摄像 ...
- 浅读《视觉SLAM十四讲:从理论到实践》--操作1--初识SLAM
浅读<视觉SLAM十四讲:从理论到实践>--操作1--初识SLAM 下载<视觉SLAM十四讲:从理论到实践>源码:https://github.com/gaoxiang12/s ...
- 多传感器融合定位四-3D激光里程计其四:点云线面特征提取
多传感器融合定位四-3D激光里程计其四:点云线面特征提取 1. 点云线面特征提取 1.1 按线数分割 1.2 计算曲率(重要!) 1.3 按曲率大小筛选特征点 2. 基于线面特征的位姿变化 2.1 帧 ...
- 四种激光雷达技术的最新发展趋势
编辑丨LiDAR前沿 激光雷达技术是3D点云的代名词,为了充分利用3D点云数据,我们有必要考虑Lidar技术的最新趋势以及如何使数据让用户受益.本文探讨了最新的发展. 在空间工业中,有四个流行的lid ...
- 激光SLAM入门笔记(五):前端配准 II
前端配准 II 1.爬山法(拟梯度法) 1.1 示意图 1.2 基本思想 1.3 得分函数定义 1.4 算法流程 1.5 伪代码 2.高斯牛顿优化方法 2.1 示意图 2.2 数学描述 2.3 优化方 ...
- 激光SLAM的前端配准算法
四.激光的前端配准算法 Tracking , 激光slam里为 帧间匹配算法 帧间匹配算法 ---- map和scan匹配,不一定是前后两帧. 1.ICP匹配方法 2.PL-ICP匹配方法 3.基于优 ...
- 激光雷达SLAM激光的前端配准算法
激光雷达SLAM激光的前端配准算法 ICP匹配方法 两组三维点集的最小二乘拟合 ICP匹配方法 两组三维点集的最小二乘拟合 给定两个三维点集: {xi}={x1,x2,-,xN}{pi}={p1,p2 ...
- SLAM综述阅读笔记七:Visual and Visual-Inertial SLAM: State of the Art, Classification,and Experimental 2021
Visual and Visual-Inertial SLAM: State of the Art, Classification,and Experimental Benchmarking 作者:M ...
- slam特征点深度 svd_SLAM初探:关于视觉SLAM的一些常识
视觉slam从根本上其实就是为了回答两个问题,机器人在哪,机器人所处的环境是什么样的.这其实和人进入一个陌生的环境时所思考的问题非常相似. 比如我们被拉进了一个陌生的屋子,我们会首先观察这个屋子,观察 ...
最新文章
- 图模型+Bert香不香?完全基于注意力机制的图表征学习模型Graph-Bert
- go:系统参数or函数--未完
- 前端学习(2061):vue的mvvm
- FTP服务器配置部分
- python查找指定文件夹_python实现在目录中查找指定文件的方法
- 安卓application_安卓系统蓝牙配对流程分析
- 个性化你的IE,把你的名字刻在IE上!
- 7-3 主从复制配置
- 大数据分析平台如何进行支出跟踪
- DevExpress控件的GridControl控件小结
- Win10将中文用户名修改为英文
- 创业公司一年工作总结!
- stm32 常见错误之can线通信
- 详细的苹果快捷键,赶快保存吧!
- Cartoon Animator动画制作软件CTA自动保存项目小工具
- OpenGL 相关的理论
- html图片缩放6,html img图片不变形等比例缩放,兼容ie6
- 那些年,我们一起游玩过的地方
- Kindle电子书整理脚本
- 一、 SAP MM模块概览
热门文章
- python系列-认识python
- VB运行后去除窗体标题栏且可改变窗口大小及移动窗体
- FHQ-Treap(非旋treap/平衡树)——从入门到入坟
- java host头攻击漏洞_Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法...
- python写简单的脚本-你用 Python 写过哪些牛逼的程序/脚本?
- 计算机技术在电网中的应用,浅析计算机技术在电力系统中的应用
- Word中样式与样式集
- 魅族16php7.3系统,魅族16X 官方Flyme7.3.0.0A稳定版
- 离线下载pytorch安装包
- java如何统计文章阅读量_博客中的阅读量是如何设计的?
- 激光SLAM——第四节(激光SLAM的前端配准方法)