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

这个博客系列会分为C++ STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。在知乎和牛客也会同步更新,全网同号(lonely-stone或者lonely_stone)。

关于高频面试题和C++ STL面经,每次我会更新10个问题左右,每次更新过多,害怕大家可能看了就只记住其中几个点。(在个人秋招面试过程中,面试到后面,发现除了个人项目和实习经历外,个人所记录的内容基本能涵盖面试官能问到的)

(另外个人才疏学浅,如果所分享知识中出现错误,请大家指出,避免误导其他人)

1. ceres solver之三种求导方式

  • 自动求导AutoDiffCostFunction:
    定义仿函数:仿函数必须是模板函数,因为在ceres内部要用到,
    构造CostFunction:
  • 数值求导NumericDiffCostFunction:
    有时,无法定义自动求导的模板仿函数,比如参数的估计调用了无法控制的库函数或外部函数。 这种情况无法使用自动求导了,数值求导便可以派上用场了。
    数值求导用法类似,先定义仿函数,然后传递给NumericDiffCostFunction,然后去构造问题求解
  • 解析求导:如果使用解析求导的方式,就要自行计算残差和雅克比。

2. 如何推导卡尔曼滤波的卡尔曼增益?状态预测过程中的协方差矩阵怎么计算?

我们要估计的是状态变量,希望估计值和真实值越接近越好。进一步,我们假设这个误差是个正态分布,将原问题转化为误差的协方差矩阵的迹最小。然后,将协方差矩阵表达式推导出来,令其对卡尔曼增益的导数为0,进而将卡尔曼增益求出来。

协方差矩阵的对角线是各个状态的方差,其余变量是状态之间的协方差。

3. 描述卡尔曼滤波(Kalman FIlter)的工作原理,并介绍自己曾经用Kalman Filter做状态估计的场景和遇到的困难

  • 卡尔曼滤波就是在测量结果和经验推测两个都不准确的结论下找到则中的,最有可能接近真实值的过程。卡尔曼滤波的优点不在于它的估计的偏差小多少,而在于它巧妙的融合了观测数据与估计数据,对误差进行闭环管理,将误差限定在一定范围
  • 卡尔曼滤波的流程:五大公式,预测和更新。
  • 场景:VIO与LIO位姿融合,困难主要是调试协方差

4. 哪些手段可以提升重复纹理环境的定位感知能力?

  • 调整SGBM的参数,增大平滑项的权重
  • VO后端增加robust norm,降低feature误匹配带来的误差
  • 对原图进行高斯滤波,降低重复纹理的梯度
  • 对depth增加时域的滤波,降低depth误匹配的影响

5. 如何存储稀疏矩阵?特征值和特征向量?

特征值和特征向量是线性代数中的概念,主要用于描述矩阵的性质。特征值是一个标量,表示矩阵在一定条件下的特殊值;特征向量是一个向量,表示矩阵在特征值处的方向。

稀疏矩阵是指矩阵中非零元素的数量远小于矩阵的总元素数的矩阵。在存储稀疏矩阵时,通常采用稀疏矩阵存储格式,以节省存储空间和提高存取效率。 常用的稀疏矩阵存储格式包括:

压缩行存储(Compressed Row Storage,CRS)格式

压缩列存储(Compressed Column Storage,CCS)格式

关于行(Row-Based)存储格式

关于列(Column-Based)存储格式

关于阶段(Level-Based)存储格式

6. 边缘化的意义

vins中,维护了一个窗口,要保证窗口大小就一定要滑窗,而任意划掉帧的话,就会丢失被划掉帧的约束,于是就通过边缘化的方式留下约束,作为下一次的一个先验约束。

另外,VINS中的边缘化和G2O计算过程中的边缘化意义不太相同(处理方法一致)。G2O中对路标点设置边缘化是为了在求解过程中,先消去路标点变量,实现先求相机位姿,然后利用求解出来的相机位姿去计算路标点的过程,目的是为了加速求解,并非真的将路标点给边缘化掉;而VINS中则真正需要边缘化掉窗口中的最老帧或者次新帧。

7. 剔除离散点有哪些方法

  • ORB slam里面采用卡方分布( 卡方=E( pow((O-E),2)/E ),其中O是实际频数,E是期望频数)来剔除离散点。

  • vins中前端采用F基础矩阵(rejectWithF,八点法)剔除;后端是计算重投影误差进行剔除,若大于三个像素就是外点。

8. ORBSLAM单目和双目初始化的区别?

  • 单目初始化:匹配初始帧(连续两帧匹配特征点数为100以上)、位姿计算(在匹配点中使用RANSAC方法抽样选出最佳F和H,得出最佳位姿)、三角测量和地图创建、BA优化。单目初始化是一个对极约束问题。
  • 双目初始化:当前帧的左右目匹配数超过一定量即可(因为本帧位姿为初始0,而双目可以直接测特征点深度)

9. LM算法的流程,以及与高斯牛顿的区别

相关推荐
天润融通2 小时前
AI客服机器人开启企业客户服务新纪元
人工智能·其他·机器人
超维机器人2 小时前
智能巡检机器人局部放电检测的应用
运维·人工智能·算法·机器人
Piccab0o2 小时前
【机器人建模和控制】读书笔记
机器人
AI科研视界2 小时前
机器人可能会在月球上提供帮助
人工智能·机器人
深蓝学院4 小时前
已开源!无限场景生成和高效数据迁移:3D金字塔扩散模型斩获ECCV24 Oral
人工智能·计算机视觉·机器人
鱼跃鹰飞6 小时前
Leetcode面试经典150题-138.随机链表的复制
算法·leetcode·链表·面试
秦明月136 小时前
【原创教程】自动化工程案例01:8工位插针装配机02
人工智能·机器人·自动化
微刻时光6 小时前
影刀RPA实战:自动化批量生成条形码完整指南
运维·python·低代码·机器人·自动化·rpa
微刻时光7 小时前
影刀RPA实战:自动化同步商品库存至各大电商平台(二)
经验分享·python·低代码·机器人·开源·自动化·rpa
软件测试雪儿8 小时前
2024软件测试自动化面试题(含答案)
软件测试·面试·自动化·软件测试面试