今日得空,开始愉快的解答!各位看官请指教。
第一部分,先来完成该专题最重要的内容,即笔试面试中所考察的SLAM专业知识。 SLAM知识篇所准备的这些问题不一定全面,但是问题都是基于三位求职者的总结回忆,具有很好的代表性。
可能用到的的参考资料有:
- A)《视觉slam十四讲》,入门slam绝对的好书,理论兼实践,已经看了很多遍;
- B)《机器人状态估计》,已经看完了,经典,书中讲滤波/非线性非高斯过程/李群/位姿估计等等平白中带着严谨,部分内容目前理解不够深;
- C)《计算机视觉:算法与应用》,这本书涉及到视觉的知识很广,包含了图像处理/三维几何/摄影学等等,看了差不多一半,作为参考书是不错的;
- D)《MVG》,多视图几何,slam领域经典中的经典,但是没有书只有电子版,全英文,内容多而深,如有用到我们再查阅;
- E)各种经典的文献,SVO/LSD/ORBSLAM/DSO/Manifold/VINS/PLSLAM等等,真正的把这些好的开源方案理论理解了,并阅读其源码,确实是要花很多时间而且对数学编程要求都不低,博主起步慢做得不好……
- F)网上的各种资源,尤其是各种博客不失为一种高效的学习资源。
为了图省事,很多地方我直接贴照片了。
以下为slam知识篇的D1部分。
目录
1. landmark参数化方式、对比,逆深度参数化;点线面因子图优化
7. Gridmap(网格标0、1)给定起点和终点,求最优路径(A*或其他路径规划算法)
13. 单目的初始化(拓展:双目,RGBD,VIO的初始化及传感器标定)
16. 说一说某个SLAM框架的工作原理(svo、orb、lsd)及其优缺点,如何改进?
18. 位姿不同表示间的相互转化、旋转矩阵特征值和特征向量物理意义
21. 常见滤波方法的对比(KF、EKF、IEKF、UKF、PF)
22. 双目测距范围Z=fb/d。问题: 640*480,fov=90°,zmax=10m,最小视差为2,求使zmax稳定的最小基线长度(6.25cm)
24. 光流的假设、仿射变换、4种方法,svo采取的方法,优势何在
25. MSCKF与ROVIO、MSCKF与预积分(structureless factor)
1. landmark参数化方式、对比,逆深度参数化;点线面因子图优化
曾以为博客SLAM中的逆深度及参数化问题_逆深度参数化_Fm镄的博客-CSDN博客 说的比较好。但后来发现,真的是把十四讲上的内容原文不动得搬到了博客上…… 与其看这个博客,不如听我在这里参考十四讲一书并结合自己的经验阐述一下:
- 空间点的参数化: landmark一般点和线两种比较常见,平面我不太了解。关于点,可以用点的x y z 世界坐标来描述,认为三者是随机的,服从三维高斯分布。另一种参数化形式,u v 假设是不动的,一般像素平面图像坐标u v是比较确定的,其不确定性取决于分辨率,而对应的深度d是很不确定的,假设d服从高斯分布。 上述两种参数化的区别,用世界坐标 xyz 描述一个3D点,这三者之间存在着明显的相关性,即协方差矩阵中的非对角元素不为零。 如果用uv d参数化一个点,可以认为uv和d近似独立,甚至uv之间也独立,协方差阵为对角阵,表达更简洁,体现在优化中更方便。
- 单目相机的逆深度问题(inverse depth): 广泛使用的参数化技巧,我们如果假设深度d满足高斯分布,但实际上这样的假设是不合理的,场景的深度假设为5-10, 则会有更远的点(甚至是无穷远),近处点的深度不可能小于0,这样的分布不太符合高斯分布的图像(引用自十四讲)。 之所以采用逆深度表示我觉得原因有两个: 1. 实际场景中,遇到点的深度可能很远甚至无穷远,遇到的点的深度非常近的较少,采用高斯分布假设,初始值难以覆盖深度很远的点。 这时候用深度的倒数,在数值分布上更符合高斯分布的假设; 2. 实际上应用中,逆深度具有更好的数值稳定性,为啥? 因为倒数的连续性较好啊, 你想5和10直线差了5,而1/5和1/10之间差的就小多了, 而且仿真发现逆深度的表示更有效,见论文十四讲[115]。
- 空间直线的参数化:点线结合的slam系统的会涉及到线的参数化,一般以直线的两个端点来表达直线居多,但是也会有一些用直线的空间普吕克坐标来表示,下面让我们用很大的篇幅来认识高大上的普吕克坐标参数化直线(来源于谢晓佳硕士论文:基于点线综合特征的双目视觉SLAM方法)
OK! 这一部分我直接将论文中的内容摘上了,因为感觉确实写得不错。 怎么样,诸君,是不是很高大上?本来简单的两个空间点确定一条直线,生生多了这么多公式! 但是,不要气馁,多看几遍你总是会看懂的。 这里我来解释一下:
里面有一个很重要的概念,空间直线的自由度是6吗?你可能想象用两个点来确定一条直线,6个自由度;或者一个方向向量,一个平移向量还是6个自由度,但是! 实际上的空间直线的最小参数化正如上面所说是4,可以理解为一条直线经过SO(3)变换,也就是三个方向的旋转,然后在平移距离d(直线与原点的距离),d属于R,可以为负的。
上面的讨论,给出了两种直线的参数化形式:第一种为直线的普吕克坐标,6个自由度,6维向量,前三维是法向量后三维是方向向量,上述内容还给出了普吕克坐标与普吕克矩阵的关系, 以及这种表示下的投影直线方程; 第二种是直线的最小参数化表示,即正交表示,4个自由度,正交表示表示为(U, W)属于SO(3) *SO(2), 注意这里的SO(3)用李代数来表示为3维向量,SO(2)为二维平面的旋转,是一维向量角度Θ,所以共有四个自由度。同时类似于李代数se(3)到SE(3)的流形增量更新变换,上述内容也给出了直线的流形增量更新直线表达。
评论:论文中两种参数化都用到了,landmark用六自由度的普吕克坐标,在后端优化的时候为了提高迭代稳定性,用到了直线的正交表示。我不知道实际效果怎么样,但是17年有一篇PL_SLAM_mono,以及18年TRO开源的PL_SLAM_stereo 这两篇论文中他们并没有用繁琐的普吕克坐标,而是用直线的端点来参数化直线。所以我觉得并不见的普吕克坐标参数化直线有很大的优势。
关于因子图优化——
先看贝叶斯图:
路标节点:l(可以点、直线等); 输入量节点:u; 观测数据节点: z
因子图中,箭头表示了一系列依赖关系,也就是条件概率,例如
通过最大后验概率计算:
将贝叶斯网络可以转换为因子图。
因子图是无向图,有两种节点组成,一种为优化变量节点,另一种为表示因子的因子节点。
因子图优化: 就是调整各优化变量节点的值,使得各因子乘积最大化。 通常做法中把各因子的条件概率看做高斯分布,因此求最大后验概率相当于取负对数最小化,因此 因子图优化问题最终可以转换为一个最小二乘问题。
因子图的优化和普通的图之间的区别在于: 因子图优化可以增量式的求解,例如08年提出的iSAM,在向因子图中增加节点的时候,通过确定受影响的区域,可以减少优化那些不变要的节点,这样提高了效率。
写起来真是好花时间……
2. 滤波+回环(Trifo-VIO)
SLAM系统的滤波和优化方法笔记 科学网—SLAM系统的滤波和优化方法笔记 - 王琳的博文
Trifo-VIO: Robust and Efficient Stereo Visual Inertial Odometry using Points and Lines
使用点和线的稳健且高效的双目视觉惯导里程计: https://www.cnblogs.com/feifanrensheng/articles/9846151.html
3. outlier+鲁棒核、RANSAC
在最小二乘,即重投影误差最小化的目标函数中,如果一旦出现误匹配,这一部分对目标函数的梯度会影响很大(梯度大),导致偏离正确的优化方向。原因可理解为误差很大时,二范数的增长过快。解决的办法就是引入核函数概念: 将二次函数的改为增长较小的函数,比如常用的Huber核,在小值情况下是二次函数,值值过大的时候退化为一次函数,这样一旦某一项误差项出现误匹配,有这项误差项所引起的目标函数的增长不至于过大,相比于原来,这一项误差项对目标函数的影响就会小很多,不知道你听懂没,反正大概就这么理解的,严格的数学推导书上也没有这里就不追究了。 简而言之,目标函数本来为二次函数,函数值过大时用梯度更增长小的函数代替,这样就限制了梯度的最大值,高斯牛顿法优化的过程中增量更新会较小,这样就不会很受误匹配的影响。 还有Cauchy 核, Tukey核等等。
RANSAC见另一问题。
4. EKF更新方程
图片,来源于《十四讲》:
5. AR系统如何实现
这篇博客不错:AR--基本原理实现科普_ar原理_芝麻粒儿的博客-CSDN博客
总结一下:
AR增强现实,虚拟影像与现实影像融合,AR技术具有虚拟现实融合、实时交互、三维注册三大特征。AR和VR的区别,除了从硬件和技术等方面有区别,归根到底是要看到底是对现实的增强还是完全的虚拟化。如若是让人们完全投入进入虚拟世界的沉浸感,则是VR。(如超级学校霸王电影里面2人进入街机里面玩超级玛丽),如若是让虚拟的事物和现实接轨,则是AR。(如超级学校霸王电影里面虚拟世界的英雄形象进入真实世界惩罚坏人)而MR则是让2者完全的融合,“实时的”进行虚拟和真实的交互。是最终的发展形态。混合现实是实现虚拟和现实的完美融合。目前的MR和AR可以从设备上来进行区分,有以下2点不同。
首先摄像头和传感器采集真实场景的视频或者图像,传入后台的处理单元对其进行分析和重构,并结合头部跟踪设备的数据来分析虚拟场景和真实场景的相对位置,实现坐标系的对齐并进行虚拟场景的融合计算;交互设备采集外部控制信号,实现对虚实结合场景的交互操作。系统融合后的信息会实时地显示在显示器中,展现在人的视野中。
6. 介绍下VO
里程计一词来源于汽车,轮式里程计可以通过对车轮的转动可以得知汽车的运动距离。对于机器人而言,简单的说里程计就是机器人的运动轨迹,即求解机器人在每一时刻的位姿表示,有六个自由度; 视觉里程计,机器人携带相机作为外传感器,根据实时的视频流,也就是相机图像信息估计机器人的位姿变换,即六自由度(位置和姿态),例如使用单目相机称为单目视觉里程计,两个相机称为立体视觉里程计。
7. Gridmap(网格标0、1)给定起点和终点,求最优路径(A*或其他路径规划算法)
暂时略,歇歇。。。
8. 相似变换、仿射变换、射影变换的区别
这三种变换直接拿出《计算机视觉:算法与应用》上的图,保你一目了然。