SLAM学习基础(二)——《视觉SLAM十四讲》读后感、SLAM核心技术总结(部分)

(1)《视觉SLAM十四讲》_高翔

第一遍学习:

《视觉SLAM十四讲》这本书,很详细的从几何学的角度讲述了SLAM的各种核心技术。是成为一名SLAM技术的边缘OB者的不二选择。

本书的前六讲主要是在安装库(当然,顺道介绍书数学基础知识),SLAM运行需要的各种库,因为我是在ubuntu16.04下做的,很多依赖项因为系统版本更新都变了,不过问题不大,如果安装报错,系统会提醒我们可以相应依赖项在什么新的lib***-dev里面有照着安就完事了。

系统这个东西,没啥好说的。找本薄点的书,外加每个命令敲一敲,通过实践来慢慢熟悉这个系统吧~

接下来的几讲,分别介绍了SLAM技术的前端,后端,回环检测和建图。具体是什么,看书吧,很详细啦~

SLAM和SFM的区别,可以把SLAM理解成实时的SFM。同时SFM给出的图像可以不具有时间顺序,并且因为没有时间限制,可以不选择0RB-SLAM(特征点法的标杆)中的ORB做特征点提取,可以选择恢复三维模型效果更好的SIFT/SURF特征提取方法。

这本书的核心在于向我们展示了完整而基础的SLAM几何框架下的核心技术,然而实际的SLAM系统是一个完整的东东,不会一个部分一个CMAKE,换言之一个main.cpp就完事了,所以你如果里面那个部分暂时没弄懂,别慌,有开源的完整代码在,那个能搞懂就OK了,当然能都跑一下,感受一下各部分的作用也是很棒的,加油!!!(这是我第一遍的理解,其实也有点问题,呵呵)

对了,学这本书的时候,学会看cmakelist.txt,不弄懂后面白搭!!!

第7章对应传统的特征点法,第8章对应较新一点的直接法。两者各有千秋,我爱特征!!

PS: 有对PL-SLAM感兴趣的没,交流一下啊~

第二遍学习:

第二遍看,发现4、6、10章串起来g2o那篇论文,这三章需要有一个整体的理解。并且他和Isam不是一路数,具体区别,还不知道。

第9章,是一个微型化的工程,在第一遍看的时候,C++基础不牢固,也没学设计模式,就简单跑一下代码,这很不科学。有了相关基础才能了解一个软件框架为什么这么搭,这是看一个实际工程的基础。所以,在第一遍近乎跳过的这一章,需要细细品读。

(2)SLAM核心技术总结

(0)【泡泡机器人公开课】公开课链接(实时更新)

找自己相关,并且感兴趣的东西看看吧~

https://www.rosclub.cn/post-1065.html

(1)Bundle Adjustment到底是什么?

Bundle adjustment优化的是sum of reprojection error,这是一个geometric distance(为什么要minimize geometric distance可以参考[Hartley00]),问题可以formulate成一个least squares problem, 如果nosie是gaussian的话,那就是一个maximum likelihood estimator,是这种情况下所能得到的最优解了。

机器人导航中,2D的特征reproject回三维域内,和真正的3D点的位置会有偏差。但是在物理意义上,3D点和投射到摄像机的2D特征点是同一个点。所以这个误差出现在计算3D点时摄像机自身旋转矩阵和位移向量上。

Bundle Adjustment的作用是,通过least square等算法,去最小化这个偏差,以此得到机器人移动和方向的精确值。这在物理意义上是最精确的,是Visual SLAM问题的state-of-art解决方法。

作者:versatran01
链接:https://www.zhihu.com/question/29082659/answer/62472382
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处

下面是个人的一点认识:

以ORB-SLAM为例,我们谈论BA,在ORB-SLAM中主要指的是Localmapping线程(后端)中同时对路标点和位姿进行局部BA优化的过程。而在Tracking线程(前端)是进行仅位姿的优化估计,路标点是不进行调整的,这为了保证计算速度。

(2)RANSAC随机抽样一致性算法

概述:
RANSAC算法的输入是一组观测数据,一个可以解释或者适应于观测数据的参数化模型,一些可信的参数。
RANSAC通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证:
1.有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。
2.用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。
3.如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
4.然后,用所有假设的局内点去重新估计模型,因为它仅仅被初始的假设局内点估计过。
5.最后,通过估计局内点与模型的错误率来评估模型。
这个过程被重复执行固定的次数,每次产生的模型要么因为局内点太少而被舍弃,要么因为比现有的模型更好而被选用。

优缺点:
A. RANSAC的优点是它能鲁棒的估计模型参数。例如,它能从包含大量局外点的数据集中估计出高精度的参数。RANSAC的缺点是它计算参数的迭代次数没有上限;如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。RANSAC只有一定的概率得到可信的模型,概率与迭代次数成正比。RANSAC的另一个缺点是它要求设置跟问题相关的阀值。
RANSAC只能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型,RANSAC不能找到别的模型。
B. 经典RANSAC有以下三个主要的局限性:
(1) 效率:经典方法效率与子集大小、类内点比例以及数据集大小有关,因此在某些场景下效率较低。
(2) 精度:经典方法计算参数时选取最小子集是从效率的角度考虑,往往得到的是非最佳参数,在应用产参数 之前还需要再经过细化处理。
(3) 退化:经典方法的目标函数求取最大化的过程基于一个假设:“选取的最小子集中如果有类外点,那么在这种情况下估计的参数获得的目标函数(数据集中点的个数)往往较少“但这种情况在退化发生时有可能是不对的。

https://blog.csdn.net/darlingqiang/article/details/79457596

RANSAC算法与最小二乘法的不同之处主要有以下两点:

  1. 最小二乘法总是使用所有的数据点来估计参数,而RANSAC算法仅使用局内点;
  2. 最小二乘法是一种确定性算法,给定数据集,每一次所得到的模型参数都是相同的;而RANSAC算法是一种随机算法,受迭代次数等的影响,每一次得到的参数一般都不相同。
  3. 一般而言,RANSAC算法先根据一定的准则筛选出局内点和局外点,然后对得到的局内点进行拟合,拟合方法可以是最小二乘法,也可以是其他优化算法,从这个角度来说,RANSAC算法是最小二乘法的扩展。
    RANSAC的基本假设是:
    (1)数据由“局内点”组成,例如:数据的分布可以用一些模型参数来解释;
    (2)“局外点”是不能适应该模型的数据;
    (3)除此之外的数据属于噪声。
    局外点产生的原因有:噪声的极值;错误的测量方法;对数据的错误假设。

(3)移动机器人的避障方法(四类主流传感器介绍)
https://www.rosclub.cn/post-1079.html

补充:深度相机简介

https://blog.csdn.net/qq_37764129/article/details/81011221
https://blog.csdn.net/bingoplus/article/details/56667475

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值