欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 自动驾驶-机器人-slam-定位面经和面试知识系列08之高频面试题(03)

自动驾驶-机器人-slam-定位面经和面试知识系列08之高频面试题(03)

2024/10/25 11:33:49 来源:https://blog.csdn.net/qq_42692305/article/details/141104679  浏览:    关键词:自动驾驶-机器人-slam-定位面经和面试知识系列08之高频面试题(03)

这个博客系列会分为C++ STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。在知乎和牛客(某些文章上会附上内推码)也会同步更新,全网同号(lonely-stone或者lonely_stone)。
关于高频面试题和C++ STL面经,每次我会更新10个问题左右,每次更新过多,害怕大家可能看了就只记住其中几个点。(在个人秋招面试过程中,面试到后面,发现除了个人项目和实习经历外,个人所记录的内容基本能涵盖面试官能问到的)
(另外个人才疏学浅,如果所分享知识中出现错误,请大家指出,避免误导其他人)

1. 描述下GN,LM方法:

  • GN:线搜索,将f(x)进行一节泰勒展开,最后求解,线性方程H△x=b,用JT*J近似H矩阵,省略H的运算。
  • LM:(H+λI)△x=b
      λ = 0,L-M 等于G-N;
      λ = 无穷,L-M等于一阶梯度下降
      L-M的好处就在于:如果下降的太快,使用较小的λ,如果下降的太慢,使用较大的λ

2. 为什么SLAM中常用L-M优化?

G-N中的H矩阵可能为奇异矩阵或者病态矩阵,导致算法不收敛。而且当步长较大时,也无法保证收敛性,所以采用L-M求解增量方程,但是它的收敛速度可能较慢。

  • H是半正定的,可能出现奇异矩阵(奇异矩阵是线性代数的概念,就是该矩阵的秩不是满秩,奇异矩阵是行列式值为零的矩阵。)或者病态(病态矩阵是对于线性方程Ax=b,对于系数阵A和右边的b发生微小的扰动,就会是解x发生较大的变化,也就是说这样的方程的解是非稳定的)的情况;
  • Δx太大的时候也会导致这种二阶泰勒展开的近似不够准确。为解决这个问题,提出了给Δx添加一个信赖区域方法,也就是LM法,其采用下式判断近似差异的大小进而确定信赖区域范围

3. 加速优化的方法(比如加速ORB2后端优化的方法)

  • 过滤重投影误差大的数据点;
  • 把要维护的三维点改成逆深度的形式,这样维度变少了就变快了
  • 本身orb2里面有的求解增量方程的稀疏性等性质也是加速方法,把这里面怎么使用的稀疏特征也要弄清楚。

4. BA优化中,雅克比矩阵的维数大小与约束和优化变量的关系

雅克比矩阵的行数是残差函数的维数,列数是优化变量的总维数和;比如以重投影误差约束为例:其误差函数为观测值的像素二维减去重投影过来的二维像素,故雅克比的行数为2,而列数是要优化的一个地图点和前后两帧的转换R、t,一共是9维(以3中的场景2为例子);
  举例:10个相机同时看到100个路标点,问BA优化的雅克比矩阵有多少维数?
  答:这里面的约束也是重投影误差,且约束线为10*100=1000条,每条线都是两维,故行数为2000;列数为10 * (3+3)+100 * 3 = 360,则雅克比矩阵的大小为2000x360;当然,这里都是假设全部路标点和位姿都是要进行优化的,如果有部分不进行优化,那相应减掉列数即可。

5. FEJ是什么?为什么要用FEJ?

问题:
第一种叙述:滑动窗口边缘化的时候会遇到新老信息融合的问题,旧的求解雅克比矩阵的变量线性化点和和新的求解雅克比矩阵的变量线性化点不同,可能会导致信息矩阵的零空间发生变化,使得不可观的变量变得可观,从而引入错误信息。解决方法是FEJ算法:不同残差对同一个状态求雅克比时,线性化点必须一致。这样就能避免零空间退化而使得不可观变量变得可观------在MSCKF中,(能观性矩阵的秩表示系统能观的维度,零空间的秩表示系统不能观的维度),FEJ做法就是我们⽆需关注0空间在每⼀时刻是否⼀样,保证的是每⼀时刻0空间维度都是4。
第二种叙述:我们将被Marge后的变量描述为Xm,剩余的变量记为Xr。Marg后:先验信息经过舒尔补操作后分别由残差矩阵b与先验信息矩阵Λ构成,对应的Jacobian和残差r需要由这2个矩阵通过正定方程(增量方程)反解出来
但这样就出现了2个核心问题:

  • 被Marg后的变量与测量已经丢弃,先验信息矩阵Λ中关于Xr的Jacobian在后续求解中已无法更新
  • Xr中部分变量还和其他残差有关,这些残差的Jacobian会随新的状态估计的迭代更新而不断在最新的线性化点中计算

则Λ变为了Λ1(线性化点固定)与Λ2(线性化点在变),这样最终将导致Λ的零空间改变,引入错误信息。

6. 如果对于一个3D点,我们在连续帧之间形成了2D特征点之间的匹配,但是这个匹配中可能存在错误的匹配,请问该如何构建3D点

  • 第一种方法:毋庸置疑首先想到的是用RANSAC方法进行连续帧之间的位姿估计,然后用内点三角化恢复地图点
  • 第二种方法:如果是利用非线性优化的方法获得位姿的话,可以在非线性优化代价函数中加入鲁棒核函数来减少无匹配所带来的误差

7. BA中,相机位姿很快接近真值,但地图点却不能很快的收敛,这是为什么?

约束相机位姿的方程远多于约束地图点的方程。

8. ORB-SLAM哪个部分最耗时?后端H矩阵求解的算法复杂度是多少?如何加速求解?

local BA最耗时,直接对H矩阵求逆时O(n3),利用稀疏结构加速

9. 对于光照明暗变化,动态场景,视觉SLAM如何去解决?

针对光照明暗变化:

  • 在相机上放置滤光片
  • 采用多传感器融合技术,去弱化光照变化带来的影响

针对于动态场景:

  • ransac方法:将运动的点视为outlier处理,但是当运动的物体占据图像大部分比例时失效
  • 前景背景的分割:通过像素灰度和目标深度的变化,分辨前景和背景,以为前景是动的,背景是静止的
  • 光流、场景流(三维光流):通过局部的像素灰度变化,推测书运动物体的运动方向和速度
  • 多传感器融合:将相机与IMU、轮式里程计等结合
  • 几何约束:利用静态特征点的三维空间相对位置不变的性质可以分离静态和动态的特征点
  • 目标识别:识别可能会移动的物体,将其去除
  • 建立运动模型:存在动态特征点就存在多个运动模型,找出一个最好的模型。

10. 纯旋转的图像帧可以实现ORB-SLAM的初始化吗?

在计算R,t的时候选择使用H单应矩阵即可

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com