SLAM面试总结

其他面试总结帖子:https://blog.csdn.net/shyjhyp11/article/details/115566100

作者:小葡萄
链接:https://zhuanlan.zhihu.com/p/68858564
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
关于面试题目我的目标公司是做自动驾驶或者机器人的公司,每个公司的面试不太一样。一种是先让你讲项目,一般在讲的时候会随时问问题,之后再是考一下基础SLAM问题和算法等。另一种是不让自己讲项目,面试官根据你的简历去不断深入发问。下面把我遇到的问题列举一下。
1、SLAM题目什么是闭环检测?常用的方法有哪些?你用的哪种方法?有没有创新?
2.解释一下Gauss-Netwon和LM算法。
3.熟悉Ceres优化库吗?说一下。
4.描述(扩展)卡尔曼滤波与粒子滤波,你自己在用卡尔曼滤波时遇到什么问题没有?
5.除了视觉传感,还用过其他传感吗?比如GPS,激光雷达。。。

7.你认为室内SLAM与自动驾驶SLAM有什么区别?
8.地图点的构建方法有哪些?
9.如果对于一个3D点,我们在连续帧之间形成了2D特征点之间的匹配,但是这个匹配中可能存在错误的匹配。请问你如何去构建3D点?
10.RANSAC在选择最佳模型的时候用的metric是什么?
11.除了RANSAC之外,还有什么鲁棒估计的方法?有哪几种鲁棒核函数?
答:在最小二乘,即重投影误差最小化的目标函数中,如果一旦出现误匹配,这一部分对目标函数的梯度会影响很大(梯度大),导致偏离正确的优化方向。原因可理解为误差很大时,二范数的增长过快。
解决的办法就是引入核函数概念:  将二次函数的改为增长较小的函数,比如常用的Huber核,在值比较小情况下是二次函数,值过大的时候退化为一次函数,这样一旦某一项误差项出现误匹配,有这项误差项所引起的目标函数的增长不至于过大,相比于原来,这一项误差项对目标函数的影响就会小很多。 
   简而言之,目标函数本来为二次函数,函数值过大时用梯度更增长小的函数代替,这样就限制了梯度的最大值,比如高斯牛顿法优化的过程中增量更新会较小,这样就不会很受误匹配的影响。    
    还有Cauchy 核, Tukey核等等。
12.  3D地图点是怎么存储的?表达方式?
13. 给你m相机n个点的bundle adjustment。
14. 当我们在仿真的时候,在迭代的时候,相机的位姿会很快的接近真值。而地图点却不能很快的收敛这是为什么呢?
15. LM算法里面那个  是如何变化的呢?
16. 说一下3D空间的位姿如何去表达?
17. 李群和李代数的关系。
18. 求导  (偏导R1R2/偏导R1)
19. 给你一个H高W宽的图像或者matrix,问如何去访问每一个元素,是先访问行呢?还是先访问列?提示:跟缓存还有关系~
20. 写出单目相机的投影模型,畸变模型。
21. 说一个自己熟悉的SLAM算法,Lidar/Visual slam,说优缺点。
22. 读Maplab,设计室内服务机器人地图更新的方法、流程。
23. 安装2D lidar的平台匀速旋转的时候,去激光数据畸变,写代码给两组已经匹配好的3D点,计算相对位姿变换。已知匹配的ICP问题,写代码。
26. 说一下Dog-Leg算法什么是边缘化?
27. First Estimate Jacobian?一致性?可观性?
28. 说一下VINS-Mono的优缺点
29. 你做的工作在本质上有什么不同,贡献,创新本质上在哪里?
30. 给定几个连续帧的带有位姿的帧,如何去测量车道线相对于世界坐标系的坐标。
31.  在给定一些有噪声的GPS信号的时候如何去精准的定位?
32. 如何标定IMU与相机之间的外参数?给你xx误差的GPS,给你xx误差的惯导你怎么得到一个cm级别的地图。
33. 计算H矩阵和F矩阵的时候有什么技巧呢?实际上在问归一化的操作。
34. 给一组点云,从中提取平面。
35. 给一张图片,知道相机与地面之间的相对关系,计算出图的俯视图。
36. 双线性差值如何去做,写公式。
37. RGB-D的SLAM和RGB的SLAM有什么区别?
38. 机器人从超市门口出发,前往3公里外的小区送货。请你设计一个定位系统,包括传感器的配置、算法的流程,用伪代码写出来。
39. 什么是ORB特征,ORB特征的旋转不变性是如何做的,BRIEF算子是怎么提取的。
40. 如果把一张图像去畸变,写公式,流程。
41. ORB-SLAM中的特征是如何提取的?如何均匀化的?

数据结构部分

40. 算法数据结构&C++ORB-SLAM的共视图是什么结构?内部如何存储的?
41. 写一个四叉树的结构
42. 不用递归遍历二叉树
43. 求最大连通域
44. 多线程的实现
45. 方式std::vector描述一下,如何动态扩展,如何shink内存
46. Eigen是行优先还是列优先
47. unorder容器与ordered容器的区别
48. 说一下Mat是如何析构的
49. 说一下智能指针,shared_ptr与unique_ptr
50. 说一下什么是虚函数
51. 普通指针如何实现一块内存只能有一个指针指向这种功能
52. C++ RTTI 是什么东西?
53. C++是如何实现多态的?
54. vector的iterator什么时候失效?
55. 重建二叉树
56. 写CmakeLists.txt,写gcc指令
57. 一个图,给出两个一对的若干节点对,求两个节点之间的通路。
58. 实现一个稀疏矩阵的数据结构,并实现稀疏矩阵的加法。
59. 棋盘格,每个格子角点上有一个灯,按一下周围四个灯就会取反。开始的时候这个棋盘格上灯状态随机,问如何操作这些按钮可以使得整个棋盘全灭。
60. 编一个二分查找
61. 给你一个数组去排序,说排序算法
62. 给你2D平面的两个线段,判断两个线段是否相交
63. 写快速排序、写反转链表
64. 给两个排序数组,升序的。一个大小为n,一个大小为m。从中找出第k小的数字。

有时间的话最好把基础的SLAM算法自己实现一遍,比如PnP、ICP、BA等;多刷基础的算法题。

1.视觉变换
(1) 欧式变换:相当于是平移变换(t)和旋转变换(R)的复合,等距变换前后长度,面积,线线之间的角度都不变。自由度为6(3+3)。
(2)相似变换:等距变换和均匀缩放(S)的一个复合,类似相似三角形,体积比不变。自由度为7(6+1)。
(3)仿射变换:一个平移变换(t)和一个非均匀变换(A)的复合,A是可逆矩阵,并不要求是正交矩阵,仿射变换的不变量是:平行线,平行线的长度的比例,面积的比例。自由度为12(9+3)。
(4)射影变换:当图像中的点的齐次坐标的一般非奇异线性变换,射影变换就是把理想点(平行直线在无穷远处相交)变换到图像上,射影变换的不变量是:重合关系、长度的交比。自由度为15。
在这里插入图片描述2. Homography单应、Essential本质和Fundamental基础 矩阵的区别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述3.什么是紧耦合、松耦合?优缺点。
紧耦合是把图像的特征加到特征向量中去,这样做优点是可以免去中间状态的累计误差,提高精度,缺点是系统状态向量的维数会非常高,需要很高的计算量;
松耦合是把VO处理后获得的变换矩阵和IMU进行融合,这样做优点是计算量小但是会带来累计误差。
4. 什么是极线约束
所谓极线约束就是说同一个点在两幅图像上的映射,已知左图映射点p1,那么右图映射点p2一定在相对于p1的极线上,这样可以减少待匹配的点数量。如下图:
在这里插入图片描述
5. 介绍一下RANSAC
参考:RANSAC
6.H,F的几何含义是什么,ORB-SLAM初始化的时候为什么要同时计算H矩阵和F矩阵?

  • 基础矩阵:反映空间点的像素点在不同视角摄像机下的图像坐标系的表示关系。

  • 本质矩阵:反映空间点的像素点在不同视角摄像机下的摄像机坐标系的表示关系。

  • 选用区别:主要是针对初始化时不同的图像中不同的状态, H矩阵适用与特征点都处于同一个平面或者发生纯旋转时的状况, 这种状态时F举矩阵退化, 因此需要使用H矩阵; 而F矩阵适用于特征点在不同深度的情况;

接下来总结一下关于F矩阵,H矩阵和E矩阵的一些相关的知识点:
首先来说E矩阵,也就是本质矩阵, 本质矩阵有几个很重要的特性:

 1.本质矩阵在不同尺度下都是等价的; 对E乘以任意的非常数之后, 对极约束依然满足;
   2. 本质矩阵的奇异值必定是[a, a, 0]的形式, 这称为本质矩阵的内在性质;
    3.因为旋转和平移各有三个自由度,所以t^R共有6个自由度, 但是由于第一条的尺度等价性, 
    实际上E只有五个自由度; 也就是我们用五个点就可以求出E矩阵;

原文链接:https://blog.csdn.net/qq_25458977/article/details/111062239
7. BundleAjustment相关的文章
泡泡机器人三部曲:
(1):https://www.sohu.com/a/195484669_715754
(2)https://www.sohu.com/a/195737646_715754
(3)https://www.sohu.com/a/196023173_715754

博客:(泡泡的作者在博客上将上面三部曲的合成)https://blog.csdn.net/OptSolution/article/details/64442962

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值