【知识总结系列】 - SLAM/三维重建相关知识点总结 && 面经

知识总结系列:SLAM相关知识点总结 && 面经

这篇文章旨在对SLAM领域一些关键知识点进行系统性的总结,作为个人SLAM关键基础知识点的百科,作为SLAM教科书的一些补充。

来源:

  • SLAM十四讲高博
  • 古月老师的技术博客
  • 崔神的github(VIO讲解)
  • 知乎面经
  • 计算机视觉life社区
  • ChatGPT问答
  • CHANGELOG
    24年12月1日 后端:更新了非线性优化和因子图之间的关系(GPT)
    22年12月5日 相关知识点不断更新中

内容繁杂如有不对欢迎指出~

工程问题

RANSAC异常点剔除算法

  • 使用要求及相关原理:使用需要有先验(需要提前知道inlier的比例是多少,知道点的卡方分布),迭代次数的公式模型(F或者H)。输入是一组观测数据、一个可以解释或适应观测数据的参数化模型以及一些可信参数,通过反复选择数据中的随机子集来达成目标。
  • 验证步骤
    1. 假设选取的子集为局内点,使模型适应这些假设的局内点,计算出所有未知参数。
    2. 用得到的模型去测试其他数据,若某个点适用于该模型,则认为它也是局内点。
    3. 若有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
    4. 用所有假设的局内点重新估计模型,因为它最初仅被初始假设局内点估计过。
    5. 通过估计局内点与模型的错误率来评估模型。固定迭代次数重复执行,每次产生的模型会因局内点太少被舍弃或比现有模型更好而被选用。

如何增强特征描述子之间的区分度

  • 旋转不变性:增加方向向量。
  • 尺度不变性:使用图像金字塔。
  • 光照不变性:使用对曝光模型增加识别度的方法。

单目视觉尺度漂移问题

  • 产生原因:在使用单目相机估计相机姿态和3D坐标时,需对极几何、三角化估计,过程中会产生累积误差,导致尺度不一致,根源是单目相机无法仅凭一张图片获取图中物体大小信息。
  • 解决办法:将前后两帧的尺度作为后续的尺度,采用全局式估计,使用统一的尺度。

单目和VIO的可观性

  • 单目VO:七自由度不可观,包括三自由度位置、三自由度旋转以及尺度。
  • VIO:四自由度不可观,由于加速计使得尺度可观,又因重力向量已知,导致和重力向量平行的roll翻滚角、与重力向量垂直相交的pitch俯仰角可观,剩下三自由度位置和绕重力旋转的yaw航向角不可观。

后端不收敛的解决办法

  • 第一次进入后端优化就不收敛:分析优化变量和约束条件的理论和code是否正确;可能是迭代次数不够,需增加迭代次数;也可能是优化方法的问题,比如使用高斯牛顿法时,JJT(H的近似)可能为奇异矩阵或病态情况,增量稳定性差,且步长较大时无法保证收敛性,可改进更换增量方程的求解方法,如使用高斯牛顿法时尝试使用LM法算法。
  • 前面优化收敛,当前优化不收敛:判断是否加入了错误的回环约束,可删除回环约束,重新进行本次优化,若恢复正常,则可能是回环错误。

定位阶段实际地图与离线地图发生较大差异的情况

先建立局部定位使系统在无地图时也能定位,等找到回环后,再进行全局优化。

针对SLAM算法的各个阶段,谈谈使用哪些方法可以提升算法的运行速度

  • 前端特点匹配识别使用GPU加速。
  • 后端涉及内存搬用的部分,全部改为引用和指针。

单目slam和双目slam的区别

  • 初始化及尺度恢复方面:双目SLAM不用初始化,且双目可以恢复世界尺度,单目不能。
  • 标定方面:单目标定简单,参数不易变换,双目标定难,维护也难。

紧耦合、松耦合、优缺点

  • 松耦合:视觉运动估计和惯导运动估计系统是两个独立的模块,将各模块输出结果进行融合。优点是算法简单、计算量不高、拓展性强(可增加传感器),缺点是精度一般。
  • 紧耦合:使用两个传感器的原始数据共用构建一个误差函数来估计一组变量,传感器噪声相互影响。优点是充分利用传感器数据,可实现更好的精度,缺点是算法较复杂、计算量大、拓展性能差。

多传感器时间标定(例如:相机和IMU之间的时间标定)

  • 在线标定:如VINS-mono,将时间漂移作为一个优化变量。
  • Kalibr工具箱中离线的时间标定方法
  • 硬件对齐:由于时钟源都有钟漂且各时钟源钟漂不同,即使初始时刻对齐传感器时间戳,运行一段时间后仍会偏离。可通过做一个脉冲发生器,让所有传感器都被其触发,每次触发校正自己的时钟,消除时钟源的累计误差。

相机标定方法

  • 相机自标定法:不需要知道图像点的三维坐标,通过计算某一点在不同拍摄角度的场景图中的相对关系来确定相机标定参数,方法灵活,但结果较差。
  • 基于主动视觉的相机标定法:通过主动系统控制相机做特定运动,拍摄多组图像,依据图像信息和已知位移变化来求解相机内外参数。
  • 相机标定kalibr工具包:可用标定板进行标定,能进行多相机标定(内外参标定,包括无重叠视场的情况)、Visual - Inertial标定(包括空间的旋转+平移、时间上不同传感器时间戳的偏差)、卷帘相机标定(因卷帘相机不同行曝光开始时间有先后顺序,需标出来与快门相关的参数)。
  • IMU标定:IMU的误差模型给出了输出测量值与真实值的对应关系方程,求解变量即标定参数,对于加速度计可利用地球上的重力加速度,调整IMU姿态测若干组真值,但陀螺仪角速度真值获取较难,一般专业的IMU标定需借助专门的转台设备来进行。

如何标定IMU与相机的内参和外参

(此处未详细阐述具体标定方法,仅提及了相关概念及部分标定相关内容,需进一步查阅对应资料获取详细步骤)

多目相机的标定方法

(未详细展开具体的多目相机标定方法内容)

多相机怎样实现周视系统

(未具体说明实现方式)

相机畸变种类有哪些

包括径向畸变(由透镜的形状决定)、切向畸变(由感光元件的安装位置决定)。

在没有groundtruth情况下如何判断自己的置信度

因无外部参考的真实值,所以要采用平均值作为数据分析的center,然后求得偏差作为置信度。

光流法和直接法的区别

  • 误差函数方面:误差函数不同,特征点法是重投影误差,直接法是光度误差,雅克比矩阵也不同。
  • 计算过程方面:光流法需要提取图像中有代表性的点(特征点),但不需计算描述子,通过灰度假设计算特征点像素的运动,再借助PNP、对极几何、ICP等方法求解相机运动;而直接法直接通过灰度假设计算得到相机之间的运动,任何图像的点都可参与,无需提取有代表性的点。

如何存储稀疏矩阵

可采用十字链表、三元组顺序表、行逻辑连接表等方式存储。

SLAM中的绑架问题怎么理解

指机器人在缺少之前位置信息(如被安置在已构建好地图的环境中但不知相对位置),或跟踪丢失(因传感器暂时性功能故障或相机快速移动等导致先前位置信息丢失)的情况下,如何重新定位、确定当前位姿的问题。

手眼标定

(仅给出了表达式“AX = BX”,未详细介绍手眼标定相关内容)

SLAM基础知识

1. 旋转矩阵相关特性

  • 旋转矩阵的特征值和特征向量的关系:旋转向量是旋转矩阵特征值为1的特征向量。
  • 特征值和特征向量的一种物理意义:如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。

2. 各种矩阵的物理意义

  • 正交矩阵:(未详细阐述其物理意义,需进一步查阅资料补充)
  • 对角矩阵:(未详细阐述其物理意义,需进一步查阅资料补充)
  • 上三角或下三角矩阵:(未详细阐述其物理意义,需进一步查阅资料补充)
  • 反对称矩阵:(未详细阐述其物理意义,需进一步查阅资料补充)

3. 矩阵分解方法

半正定矩阵能分解成一个矩阵和其转置的乘积吗?

是的,半正定矩阵可以分解成一个矩阵和其转置的乘积。这种分解称为 Cholesky 分解 或广义的 矩阵平方根分解。以下是详细解释:

  1. 半正定矩阵的定义

一个矩阵  是半正定的,如果:
•  是对称的:。
• 对任意非零向量 ,有 。

  1. 分解的原理

对于一个  的半正定矩阵 ,可以找到一个  的矩阵 (通常 ),使得:

(1) Cholesky 分解
• 如果  是正定矩阵(即  对任意非零 ),则  可以分解为:

其中  是一个下三角矩阵。
• 如果  是半正定矩阵,则 Cholesky 分解仍适用,但  的某些行可能全为零。

(2) 广义矩阵平方根
• 对于半正定矩阵 ,可以通过特征值分解(Eigenvalue Decomposition, EVD)进行分解:

其中  是正交矩阵, 是对角矩阵,其对角线元素为  的特征值。
• 将非负特征值的平方根取出构造矩阵 ,然后构造:

则 。

(3) 奇异值分解(SVD)
• 对  做奇异值分解:

其中  是正交矩阵, 是非负对角矩阵。
• 定义 ,则 。

  1. 直观理解

将半正定矩阵  分解为  意味着  可以视为某种“协方差结构”的表示,其中  是数据矩阵(或特征矩阵)。这种分解在机器学习、统计学和信号处理中广泛应用,例如主成分分析(PCA)和高斯过程。

  1. 注意事项
    • 半正定矩阵的分解结果  不唯一。例如,对于给定的 ,也可以用 (其中  是任意正交矩阵)作为分解。
    • 如果  的秩小于 ,则  的列数会小于 (即  是一个  矩阵,)。

总结
半正定矩阵可以分解成一个矩阵  和其转置  的乘积,通过 Cholesky 分解、特征值分解或奇异值分解都可以实现这种分解。这种性质非常重要,尤其是在机器学习和优化问题中。

4. 旋转矩阵相关处理问题

  • 求出的R旋转矩阵不满足旋转矩阵的性质,该怎么做:(未给出具体应对做法,需深入探究)
  • so(3)和se(3)的区别及在算法中的使用:so3表示旋转,se3表示旋转和平移,在矩阵的求导过程中使用,利用李代数良好的加法特性,来简化矩阵使用扰动进行求导的过程,算法的使用参考SLAM十四讲。

5. 扰动模型相关

  • 推导左扰动模型:(未展开具体推导内容)
  • 左右扰动和旋转矩阵左乘右乘的定义和关系:(未详细说明其定义与关系,需进一步明确)

6. 引入李群和李代数的原因

旋转矩阵自身是带有约束的(正交且行列式为1)。它们作为优化变量时,会引入额外的约束,使优化变得困难。通过李群——李代数间的转换关系,我们希望把位姿估计变成无约束的优化问题,简化求解方式。

7. 相机的投影模型

  • 推导从世界坐标系到像素平面坐标系的过程以及fx的计算公式:(未具体推导相关过程及给出计算公式,需进一步梳理)

8. Eigen中矩阵求逆相关

不清楚Eigen中矩阵求逆用了哪些数学上的技巧。

9. 判断求导是否正确的方法

(未具体说明如何判断求导正确的相关内容,需进一步了解)

10. 三维空间的位姿表达方法及优缺点

  • 旋转矩阵:(未详细说明其优缺点,需进一步分析)
  • 旋转向量:(未详细说明其优缺点,需进一步分析)
  • 欧拉角:(未详细说明其优缺点,需进一步分析)
  • 四元数:(未详细说明其优缺点,需进一步分析)

11. 因子图和非线性优化的关系

  • 因子图的定义和作用
    • 因子图是一种用于表示概率模型的图结构,常用于描述变量之间的依赖关系,核心作用是将复杂的概率分布分解为多个简单的因子表示。
    • 其组成包括变量节点(代表待估计的状态变量,如位姿、速度等)和因子节点(代表变量之间的约束关系,如传感器测量、运动模型、回环检测等),目标是最大化后验概率。
  • 非线性优化的定义和作用
    • 是非线性优化是解决因子图问题的核心工具,在因子图中,变量之间的约束通常是非线性函数,需要通过优化求解使误差最小化。
    • 常用优化方法有高斯牛顿法、Levenberg - Marquardt(LM)法以及Ceres Solver / GTSAM等专门用于处理因子图优化的工具。
  • 两者关系
    • 因子图建模问题,非线性优化求解问题:因子图通过图结构表达状态变量和约束,非线性优化使用因子图中的信息,最小化误差,估计状态变量。
    • 因子图问题等价于非线性优化问题:因子图中的最大后验(MAP)问题在对数域中可转化为典型的非线性最小二乘优化问题。
    • 因子图结构决定优化效率:因子图的稀疏性(变量之间约束关系有限,导致雅可比矩阵是稀疏的)可以显著影响非线性优化的效率,利用稀疏性可通过高效的矩阵分解(如Cholesky分解)加速求解。
  • 结合应用场景
    • SLAM(Simultaneous Localization and Mapping):因子图中变量节点是机器人位姿和地图特征,因子节点是运动模型和观测模型,非线性优化通过最小化轨迹和地图之间的误差得到最优解。
    • 位姿图优化(Pose Graph Optimization):因子图节点是机器人位姿,因子是相邻位姿之间的相对约束,非线性优化最小化全局一致性的误差。
    • Bundle Adjustment(捆绑调整):因子图变量节点是相机位姿和3D点位置,因子节点是图像观测,非线性优化最小化重投影误差,估计最优相机位姿和3D点。
  • 总结:因子图是用于描述变量和约束关系的建模工具,将复杂问题分解为多个因子;非线性优化是解决因子图问题的核心算法,将最大后验概率估计转化为最小误差求解;因子图的稀疏性和结构化特性显著提高了非线性优化的效率,二者结合是现代机器人、计算机视觉等领域的重要工具。

12.基础矩阵、本质矩阵、单应矩阵的区别

基础矩阵和单应矩阵有以下区别:

定义与描述

  • 基础矩阵:是一个3×3的秩为2的矩阵,用于描述立体像对中不同视图下像点之间的对应关系。对于立体像对中的一对同名点,其齐次化图像坐标分别为(p)与(p’),基础矩阵(F)满足(p’^TFp = 0),它编码了两个摄像头之间的几何关系,但不涉及内参。
  • 单应矩阵:也是3×3的矩阵,用于描述两个平面之间的投影关系,可简单理解为世界坐标系中一平面上的点在不同像素坐标系之间的映射关系。若(x)和(x’)分别是两个平面上的对应点的齐次坐标,则有(x’ = Hx)。

应用场景

  • 基础矩阵:主要应用于立体视觉和对极几何中,用于确定立体像对中同名点之间的对应关系,进而用于双目视觉中的深度估计、立体匹配等任务。例如在自动驾驶场景中,通过两个摄像头获取的图像,利用基础矩阵可以计算出场景中物体的深度信息。
  • 单应矩阵:常用于图像拼接、图像矫正、目标跟踪、相机标定等领域。例如在图像拼接中,通过计算不同图像之间的单应矩阵,将它们投影到同一平面上,实现无缝拼接。

计算方法

  • 基础矩阵:通常需要至少7对同名点来估算其值,因为基础矩阵的秩为2且可以自由缩放,有7个自由度。
  • 单应矩阵:至少需要4对对应点来计算,不过要求这4组对应点必须三三不共线,否则方程组没有唯一解。

约束条件

  • 基础矩阵:由于其描述的是对极几何关系,所以存在对极约束,即一幅图像上的点对应另一幅图像上的一条极线,同名点必定在极线上。

  • 单应矩阵:它描述的是平面到平面的映射,要求对应点必须是在两个平面上的点,对于不在这两个平面上的点,单应矩阵不适用。

  • 本质矩阵:相比于基础矩阵包含了相机的内参K;

前沿理论

1.物体级SLAM有CodeSLAM,CubeSLAM ,QuadricSLAM

物体级SLAM,是我读研期间(2022年)看见了一些SLAM论文 。参加工作后感觉这块业界将这种目标位姿估计任务划分在SLAM领域已经比较少了。现在一般多属于感知领域,图像的BEV网络、3D目标检测、点云3D目标位姿估计CenterPoint等、预先建模的目标物体位姿估计onepose等。(202411更新)

预积分

  1. IMU为什要积分?预积分?预积分推导?预积分增量的原理?
  • IMU积分的作用:通过积分IMU每个时刻的加速度和角速度来结算位姿
  • 预积分的作用:IMU的采样频率是高于图像帧的发布频率的,所以相邻两个图像帧之间的IMU信息需要积分从而与视觉信息对齐。对IMU积分时,积分符号中有被优化的状态变量,通过预积分可以去除积分号里面被优化的状态变量,让IMU的积分只跟IMU的测量值有关,而与被优化的状态量无关,通过预积分可以避免每次优化完状态变量后,再重新进行积分操作,减少计算量。
  • 预积分的推导
  1. VIO中协方差怎么传递?
  2. 协方差的主要作用?在待优化的残差函数中,协方差的逆作为信息矩阵来表示每个传感器对应残差的权重,通过这个权重矩阵可以归一化不同残差的高斯分布,使得不同传感器残差可以线性相加。引用vinsmono作者,香港科大沈劭劼老师的话,简单来说协方差矩阵的逆,是多传感器信息融合时,残差加权平均的权重。

前端

光流匹配–理论

  1. 光流的原理,光流评价的指标?
  • 计算光流和GT的误差 Endpoint error(EPE),
  • 光流向量间的Angular error(AE)。
  • 图像颜色值插值误差 Interpolation error(IE),
  • 图像颜色值差值误差 Normalized interpolation error(NE)。
  1. 光流实现原理,为什么要用金字塔?

图像金字塔的方法,即窗口固定,将图像生成金字塔,在每一层金字塔上都用同一个大小的窗口来进行光流计算。那么在图像大小较小的时候,窗口显得较大,此时的光流可以跟踪速度较快的目标,而在原始图像的时候,光流窗口相对较小,得到的光流就更准确。这是一个由粗到精的过程。构建图像金字塔可以解决大运动目标跟踪,也可以一定程度上解决孔径问题(相同大小的窗口能覆盖大尺度图片上尽量多的角点,而这些角点无法在原始图片上被覆盖)。

  1. 光流的patch不同有什么影响?
  • 光流的基本假设:亮度不变,以及区域运动一致性(都是较强的假设)。
  • 当窗口较大时,光流计算更鲁棒。当运动较为剧烈的时候,无法实现光流的基本假设,所以当我们的领域加大的时候,算法更鲁棒。
  • 当窗口较小时,光流计算更正确。原因在于,当图像中每一个部分的运动都不一致的时候,如果开的窗口过大,很容易违背假设:窗口(邻域)内的所有点光流一致,这可能与实际不一致,所以窗口小,包含的像素少,更精确些。
  1. 光流跟踪在快速运动过程中,跟踪容易失败,采取什么方法?
  • 增大窗口,因为LK算法的约束条件即:小速度,亮度不变以及区域一致性都是较强的假设,并不很容易得到满足。如当物体运动速度较快时,假设不成立,那么后续的假设就会有较大的偏差,使得最终求出的光流值有较大的误差。构建图像金字塔可以解决大运动目标跟踪,也可以一定程度上解决孔径问题(相同大小的窗口能覆盖大尺度图片上尽量多的角点,而这些角点无法在原始图片上被覆盖)。
  • 考虑物体的运动速度较大时,算法会出现较大的误差。那么就希望能减少图像中物体的运动速度。一个直观的方法就是,缩小图像的尺寸。假设当图像为400×400时,物体速度为[16 16],那么图像缩小为200×200时,速度变为[8,8]。缩小为100*\100时,速度减少到[4,4]。
  • 所以光流可以通过生成原图像的金字塔图像,逐层求解,不断精确来求得。简单来说上层金字塔(低分辨率)中的一个像素可以代表下层的两个。
  1. 特征点法和直接法的对⽐及优缺点?
    1. 特征点法:运动或者旋转过大时,只要匹配点还在像素内,则不太会引起无匹配,相对于直接法有更好的鲁棒性。只能用来构建稀疏地图,无环境特征时无法工作,且计算和匹配描述子,耗费计算量。
    2. 直接法:有梯度即可,可以在渐变的环境下工作。
      不需要计算描述子,不需要匹配特征点,节省了很多计算量。可以筹建半稠密乃至稠密的地图。
      稀疏的直接法可以做到非常快速的效果,适合real time和资源受限的场合。基于灰度不变假设,容易受外界光照的影响。相机发生大尺度移动或旋转时无法很好的追踪,非凸优化,容易局部极值。用尺度金字塔改善。
    3. 光流法 :关键点提取的多少基本上都可以工作。

运动求解—理论

  1. 前端对极几何中的:E本质矩阵 F基础矩阵 H单应矩阵是什么?
  • 本质矩阵E:E = t^R (本质矩阵E根据匹配的特征点求得,包含了平移和旋转的信息,可以通过奇异值分解(SVD)求得平移和旋转)
    * E的自由度和求解方法:具有平移和旋转共六自由度,但由于尺度等价性事实上只有五自由度,因此需要至少五对点求解,一般使用八点法求解。
    * E的内在性质:1-本质矩阵 E 的奇异值必定是 [σ, σ, 0]T 的形式 (t^ 是反对称矩阵,R是正交矩阵,E=t^R所以存在E的内在性质)。2.-E秩是2(对于线性方程求解出来不满足内在性质E, 可以将最小奇异值设为0).
    * E求解出R和t的方法:使用矩阵奇异值分解 E = UΣVT 其中 U,V 为正交阵,Σ 为奇异值矩阵
    * E的求解技巧:据线性方程解出的 E,可能不满足 E 的内在性质——它的奇异值不一定为 σ, σ, 0 的形式。这时,在做 SVD 时,我们会刻意地把 Σ 矩阵调整成上面的样子。通常的做法是对八点法求得的 E 进行 SVD 分解后,会得到奇异值矩阵 Σ = diag(σ1, σ2, σ3),不妨设 σ1 ≥ σ2 ≥ σ3。取:diag( (σ1 + σ2)*1/2,(σ1 + σ2)*1/2 , 0))这相当于是把求出来的矩阵投影到了 E 所在的流形上。当然,更简单的做法是将奇异值矩 阵取成 diag(1, 1, 0),因为 E 具有尺度等价性,这样做也是合理的。
  • 本质矩阵基础矩阵的推导:
    * 在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 基本矩阵F:F = k’Ek-1 (基本矩阵就是本质矩阵多了相机外参)
  • 单应矩阵H:H 描述两个平面之间的映射关系 。
    * 应用场景:如扫地机器人携带顶视相机,和无人机携带俯视相机
    * 单应矩阵H的工程作用:特征点共面或者相机发生纯旋转的时候,基础矩阵的自由度下降,这就出现了所谓的退化(degenerate)。现实中的数据总包含一些噪声,这时候如果我们继续使用八点法求解基础矩阵,基础矩阵多余出来的自由度将会主要由噪声决定。为了能够避免退化现象造成的影响,通常我们会同时估计基础矩阵 F 和单应矩阵。H: 选择重投影误差比较小的那个作为最终的运动估计矩阵。
    * 计算H:自由度8,使用4点,每个点提供两自由度(理论上提供3自由度,自由度实际能用2)。分解的方法包括数值法与解析法。
  • 单目相机的F和H矩阵有何不同,E和F矩阵有何不同,只旋转不平移能不能求 F、能不能求H?(答案如上)
  1. 2d-3d PnP原理? (PnP位姿最少需要几个点?有几组解?误差来源于哪里)
  • 特点:两张图一张3D点已经知道,至少三对点才能。3D-2D 方法不需要使用对极约束,又可以在很少的匹配点中获得较好的运动估计,是最重要的一种姿态估计方法。
  • 求解方法:
    • 三对点估计位姿的P3P(3对点)
    • 直接线性变换(DLT)(六对点,使用SVD求解 u=[RT]P)( 直接线性变换的误差,在于求解出来的矩阵可能不满足旋转矩阵约束,需要利用QR分解进行近似,如果不知道内参时,内参估计的过程也会引入误差。)
    • EPnP(Efficient PnP)[46],UPnP[47] 等等)。
    • 非线性优化BA.
  1. 3d-3d ICP 原理?

匹配3D点,求解R和T的方法:

  • 点对点旋转平移转换公式,通过SVD方法,先求旋转矩阵R, 再求平移T。
  • 使用BA优化方法,直接求RT.
  1. icp至少需要几对点,已知对应点的话,怎么求变换关系闭式解?
  2. 恢复特征点深度的方法?-三角测量
  3. SFM定义?即给出多幅图像及其图像特征的一个稀疏对应集合,估计3D点的位置,这个求解过程通常涉及3D几何(结构)和摄像机姿态(运动)的同时估计。

后端优化

  1. 两帧之间构建残差

    视觉残差:
    1)特征点法:通过重投影误差构建残差,使用观测值减去估计值来构建代价函数,可以同时位姿和特征点。
    2) 直接法:光度误差
    IMU残差:IMU预积分增量和帧间增量的差值
    公式推导

    • 重投影误差公式推导:
    • 光度误差公式推导:
    • IMU残差推导;
  2. 非线性优化的方法和区别?

    非线性优化问题的框架,分为 Line Search 和 Trust Region 两类。
    Line Search (线性搜索) 先固定搜索方向,然后在该方向寻找步长,以最速下降法和 Gauss-Newton 法为代表。
    Trust Region(信赖区域)先固定搜索区域,再考虑找该区域内的最优点。此类方法以 L-M 为代表。

    公式推导:求解增量deltX使得目标函数最小
    在这里插入图片描述
    * 最速下降法(目标函数泰勒展开保留一阶梯度,过于贪心容易走出锯齿形):在这里插入图片描述
    * 牛顿法(目标函数泰勒展开保留二阶梯度,H矩阵难以计算):在这里插入图片描述
    * G-N(f(x)一阶泰勒展开,展开目标函数的平方项,求导数为0):在这里插入图片描述
    * 在这里插入图片描述
    * LM(GN的二阶近似,只能在展开点附近有好的效果,给deltx设置限定区域从而保证近似值的准确性):
    * 我们用 Lagrange 乘子将它转化为一个无约束优化问题在这里插入图片描述

  3. 图优化

  • 图优化与非线性最小二乘的关系:slam中的图优化的环节,本质上实际是一个非线性最小二乘问题的求解过程.
  • 图优化求解过程:
  1. 控制优化模型规模的方法

控制优化模型规模原因:
在slam的后端优化问题中,通常会通过⼀些传感器的观测,比如视觉特征点,IMU预积分量,Lidar面点和边缘点(角点)的约束去构建一个优化问题,去求解状态量(如位姿、速度等)。这个时候存在一个问题,当给这个系统新增⼀个约束时,就会重新建立所有的约束对状态量的优化问题进行求解;当优化模型增大时,显然进行一次优化的时间也会增加很多;一方面实时性遭遇了挑战,另一方面,很久之前的状态也没有继续更新的必要。这时候就需要控制优化模型的规模。

  • 第⼀种方式:滑动窗口来控制优化问题的规模,但滑动窗口需要处理好边缘化的问题;
  • 第二种方式:因子图的模型来解决优化模型的规模。
    • 增量推理:前面所说的约束就是因子节点,优化变量就是优化节点,通过调整变量求得最大后验估计,就得到了我们想要的状态量。最大后验概率正比于所有因子图相乘的最大概率值。最大后验是整个因子图实际上就是每个因子单独的乘积。在机器人运行的过程,因子图往往是逐渐成长和增大的。比如说在往前移动的过程中,加了一组节点,随着观测的数据越来越多,加了越来越多的因子进来。 每一次求解都是比上次多一些因子,而且大部分因子图跟之前因子图是基本一致的,这是增量推理(incremental inference).
    • 因子图求解过程: 假设因子图只加了一点, 其他都没变,如果从零开始求解,矩阵会越来越大,求解速度会越来越慢,而且绝大多数都是重复性的工作。sam1实际上做的是增量QR分解。给定一个J矩阵,可以分解成Q和R,假设因子图其他都不变,之前的因子图还在,加了一些新的因子。每一个因子对应的是J矩阵的每一行,所以新加了几个因子,就是在J矩阵中增加了几行。问题就是如果在已知分解出来的QR的情况下,J增加了几行,如何快速算出R矩阵。
  • 第三种方式,位姿图优化,只优化位姿位姿变量,不优化特征点变量。
  1. 卡尔曼滤波算法的主要公式及各参数代表的意义

卡尔曼滤波步骤
在这里插入图片描述

  • 卡尔曼滤波的过程简述:卡尔曼滤波通过协方差传播状态。首先通过运动方程预测下一时刻的状态变量,再通过观测方程求得卡尔曼增益K,并利用卡尔曼增益融合数据,以达到最小化噪音和最大化后验估计的目的。
  • 卡尔曼增益K的含义:增益是指每次融合数据后不确定性的变化程度。如果融合了新的数据后不确定性降低了,那么这个增益就是正面的,有助于提高预测的准确度。如果不确定性反而升高了,那么这个增益就是负面的,对于系统预测的准确性反而起了反面作用
  • 卡尔曼滤波过程的噪音变化:预测噪音应该是越来越大的,观测方程的噪音应该是是在一定范围内变化的(可能变大,可能变小),通过卡尔曼增益融合之后的噪音一般情况是变小的。
  1. BA当中雅可比矩阵的纬度是 ?
  2. 什么是紧耦合、松耦合?优缺点?

优化过程中的工程问题

  1. 如何增加鲁棒核函数,雅克比需要重新计算么,增加核函数后雅克比怎么变化?对于视觉中有鲁棒核的损失函数,因为视觉里面有Huber核函数的原因,需要重写雅克比与残。
  2. 多传感器之间的误差分摊,那传感器多怎么办?使用协方差矩阵的逆对误差,进行归一化。
  3. 边缘化的意义? 边缘化在概率中的意义是条件概率,在SLAM的BA问题中是指利用H矩阵的稀疏性进行加速计算。
  4. 滑动窗口的理解? 为了控制状态量的维度和规模,保证实时性。
  5. 滑窗时边缘化是怎么实现的?通过舒尔补对变量进行消元。
  • 求解高阶非线性方程组
  1. 常用的优化方法有哪些(GN,LM, Dog-Leg)?这三种优化方法的原理是什么?最速下降法,GN,LM,Dog-Leg的区别?LM中的lamda的作用?λ 为 Lagrange 乘子,这 个子问题是带不等式约束的优化问题,我们用 Lagrange 乘子将它转化为一个无约束优化
  2. 高斯牛顿法,两个方程f1(x,y),f2(x,y),雅克比是J1,J2。增量方程中最后的J是什么。(J = J12+J22)

求解线性方程组

  1. 求解AX = B 有几种解法? 什么时候适用什么方法 ?
    齐次线性方程组和非齐次线性方程组的解有各自不同的特点和求解方法,以下是详细介绍:

齐次线性方程组

  • 解的性质
    • 齐次线性方程组一定有零解,即所有未知数都为零的解。
    • 若(\xi_1),(\xi_2)是齐次线性方程组的解,则(k_1\xi_1 + k_2\xi_2)((k_1),(k_2)为任意常数)也是该方程组的解,这意味着齐次线性方程组的解构成一个向量空间,称为解空间。
  • 解的情况
    • 当系数矩阵的秩(r(A))等于未知数的个数(n)时,齐次线性方程组只有零解。例如,对于方程组(\begin{cases}x + y = 0\x - y = 0\end{cases}),系数矩阵(A=\begin{bmatrix}1&1\1& -1\end{bmatrix}),(r(A)=2),未知数个数(n = 2),只有零解(x = 0),(y = 0)。
    • 当系数矩阵的秩(r(A))小于未知数的个数(n)时,齐次线性方程组有非零解,且基础解系所含向量的个数为(n - r(A))。例如,对于方程组(\begin{cases}x + y + z = 0\2x + 2y + 2z = 0\end{cases}),系数矩阵(A=\begin{bmatrix}1&1&1\2&2&2\end{bmatrix}),(r(A)=1),(n = 3),(n - r(A)=2),基础解系含有(2)个线性无关的解向量,通解可以表示为(k_1\begin{bmatrix}-1\1\0\end{bmatrix}+k_2\begin{bmatrix}-1\0\1\end{bmatrix}),(k_1),(k_2)为任意常数。
  • 求解方法:通常通过对系数矩阵进行初等行变换,将其化为行最简形矩阵,然后根据矩阵的秩和自由变量来确定基础解系和通解。

非齐次线性方程组

  • 解的性质
    • 若(\eta)是非齐次线性方程组的一个特解,(\xi)是对应的齐次线性方程组(称为导出组)的解,则(\eta + \xi)是非齐次线性方程组的解。
    • 非齐次线性方程组的任意两个解之差是其导出组的解。
  • 解的情况
    • 当系数矩阵的秩(r(A))等于增广矩阵的秩(r(\overline{A}))且等于未知数的个数(n)时,非齐次线性方程组有唯一解。
    • 当系数矩阵的秩(r(A))不等于增广矩阵的秩(r(\overline{A}))时,非齐次线性方程组无解。
  • 求解方法:先对增广矩阵进行初等行变换化为行最简形矩阵,判断解的情况。若有解,先求出对应的齐次线性方程组的基础解系,再找出非齐次线性方程组的一个特解,从而得到非齐次线性方程组的通解。
  1. QR分解,LDLT,Cholskey,SVD分解各自使用条件是什么,优劣势是什么,原理是什么 ?
  2. 谈谈QR分解,chokesly分解、SVD分解各自特点 ?
  3. Ax=B什么时候有唯一解,无穷解和无解?

李群李代数的导数

  1. 李群上位姿的导数 ?
  2. 为什么要引⼊李群李代数?李群与李代数的关系?指数映射关系

回环检测

  1. 回环检测方法有哪些?怎么实现?

MSCKF

  1. MSCKF中为什么分为SLAM点和MSCKF点?MSCKF中SLAM特征与MSCKF特征的区别?
  2. MSCKF中为什么没有landmark会很快,MSCKF是如何操作的,如果这个点没有左零空间呢?

ORBSLAM

  1. orbslam的位姿图优化是怎么建立的?
  2. orbslam单目初始化与双目初始化的区别?
  3. ORB-SLAM中单⽬地图初始化过程?
  4. orbslam为了特征点均匀化做了哪些处理?使用四叉树对一个图像金字塔图层中的特征点进行均匀化,在特征点均匀化之前,需确定每层图像上特征点的提取数量。图像金子塔层数越高,对应层数的分辨率越低,面积越小,所能提取到的特征点数量就越少,所以分配策略根据图像的面积来定,将总特征点数目根据面积比例均摊到每层图像上。
  5. 卡方检验在orbslam起什么作用? 计算每个点对的对称转移误差和卡方分布的对应值比较,由此判定该点是否为内点。累计内点的总得分。
  6. orb-slam2的如何实现的整个流程,说说他的初始化?
  7. 在orb-slam回环中,更新的数据在哪个环节起到哪些作用?
  8. ORB-SLAM中的B是什么?(B是特征描述子描)ORB和FAST的区别?(可以指定特征点数量添加了尺度和旋转的描述)
  9. 你认为ORB-SLAM3和VINS-Fusion的几个不同点?
  10. Vins mono的初始化和orb slam3的初始化有啥区别?
  11. 什么是ORB特征,ORB特征的旋转不变性是如何做的?BRIEF算⼦是怎么提取的?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值