SLAM面试题(一)

(一些网上的回答和自己的部分见解)

1.ORB-SLAM2为了特征点均匀化做了哪些处理?

答:

1)构建图像金字塔,构建八层的图像金字塔,在每层图像上提取特征点,具体每层提取多少数量的特征点都事先通过缩放因子计算好;
2)提取的时候,会将图像划分成一个个网格,分别在网格上进行特征点的提取。这时候特征点的数量往往是超过我们需要的点的数量,且只是初步进行了一个均匀化;
3)紧接着会使用四叉树均匀化的方法,这里就涉及到提取器节点的这么一个类。就是最开始整幅图像是一个节点,然后会对该节点进行划分,分成四个,然后将特征点都分别分配到这四个节点。后面就是不断重复类似的操作,划分节点,直到节点数等于所需的特征点数,然后只保留响应值最大的那个特征点。其实这里的操作也有点是把图像进行分块,直到分出来的块数等于所需的节点数,然后只留下质量最好的特征点。做完均匀化之后还会利用灰度质心法计算
4)通过上面的步骤就提取完特征点,然后这时候特征点的坐标还是不同图层下的坐标,因此需要将所有特征点坐标转到第0层图像下的坐标;
5)然后会进行高斯模糊,计算描述子。

2.H矩阵是什么?说出几个典型的应用场景。

答:

H矩阵指单应矩阵,一般如果所有特征点都落在同一平面上,可以利用这种矩阵进行运动估计,典型使用场景有无人机携带的俯视相机等。
当相机发生纯旋转时,此时平移为零,基础矩阵自由度下降,基础矩阵误差较大,选用单应矩阵来恢复位姿。相机标定里用的就是H矩阵,还有针对比较远的场景,也可以用H矩阵。

2.LOAM和LeGO-LOAM的区别。

在这里插入图片描述

1.地面点只匹配面点,分割点(上面的点)只匹配角点
2.将分组聚类后达不到30个点的全部剔除
3.同一聚类标签的点才能在里程计中匹配
4.两步LM法可减少35%的计算时间
5.用地面特征点得到的Z轴,roll角,pitch角的约束来求分割点的位姿变换

 4.IMU预积分为什么可以避免重复传播?

答:

IMU预积分与通常积分相比,解决了初始状态更新时以及加速度计、陀螺仪偏差变化时所导致的积分重新计算问题。其主要思路是计算两个关键帧之间的状态增量,当初始状态变化,就在原来增量基础上乘以初始状态的变化量;当偏差变化时,则通过求取预积分量关于偏差的雅各比,实现预积分的一阶线性近似更新。
 

5.so3与se3的区别是什么?

李代数so(3):Sophus::Vector3d so3 ;李代数se(3):Sophus::Vector6d se3。se3在使用cout输出时输出的也是一个6维向量,但是其前3维为平移值T(注意此时的T与SE3输出的t是不同的,t=JT,其中J是雅可比矩阵),后3维为其对应的so3

8.BA当中雅可比矩阵的维度如何计算 ?

答:

在向量微积分中,雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近。因此,雅可比矩阵类似于多元函数的导数。在向量分析中,雅可比矩阵是函数的一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。在代数几何中,代数曲线的雅可比行列式表示雅可比簇:伴随该曲线的一个代数群,曲线可以嵌入其中。

  1. 先画出因子图;
  2. 雅可比矩阵的行数为因子的个数m;列数为优化节点的数量n;
  3. 每一个因子对优化节点的导数同样是一个雅可比矩阵,这个维度也要计算进来。

9.逆深度的含义与作用。

答:逆深度就是深度的倒数。其特点如下:能够建模深度非常大的点,减少计算时候的误差;保持计算的稳定性。

10.如何理解视觉重投影误差。

答:对于单目视觉来说,3D点是通过两帧图像恢复得到的。3D点通过相机位姿重新投影到相机平面,与其对应像素点之间的像素差被称为重投影误差,也算是观察误差,投影的相机平面一般都是使用归一化平面。最终要优化的是重投影误差,理想情况下像素差是0。

11.请对比几种激光匹配算法(ICP、NDT、PL-ICP、CSM-cartographer)的优缺点。

答:ICP与NDT的对比。

1. ICP是点到点之间的匹配,而NDT是利用了概率的特点,将点云划分成栅格,对应匹配栅格匹配服从高斯分布。因此ICP匹配条件更加严格(容易“过拟合”),但是通常两片待匹配的点云,由于采样、遮挡等因素,不可能每个点完全重合(只是一部分重合),因此ICP比NDT更容易受初值影响,也更容易受噪声的影响。鲁棒性NDT优于ICP。

2. ICP的精度要优于NDT。

3. NDT的时间复杂度为O(N),ICP的时间复杂度为O(NlogN)。运算效率NDT优于ICP。

点云匹配的影响因素:1. 初始位姿;2. 噪声;3. 不重合度;4. 动态物体。

12.Ceres solver怎么加残差的权重,这样做的原理是?

答:使用ceres::Covariance来求解。残差的权重是残差因子不确定度协方差矩阵的逆,也就是信息矩阵。经常出现在多传感器融合求解中,表示不同传感器的置信度的权重。

例如在vins mono中,视觉残差与IMU残差都有其对应的信息矩阵,信息矩阵越大,其可信度就越高,在整个优化过程中所占优化权重越大。

在纯视觉slam中,其残差一般看不到信息矩阵,因为只有视觉一个残差,其信息矩阵也可以看作是单位矩阵(说远一点,也可以写成普通的对角阵,表示各个优化变量之间的权重)

14.在特征点法slam中,如何增强特征描述子之间的区分度?

答:增加方向等信息,提高描述子的区分度。例如BRIEF描述子增加了方向信息,改进后的Steer BRIEF具有旋转不变性。

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

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

16.光流跟踪在快速运动过程中,跟踪容易失败,采取什么方法?

答:增大窗口,因为LK算法的约束条件即:小速度,亮度不变以及区域一致性都是较强的假设,并不很容易得到满足。如当物体运动速度较快时,假设不成立,那么后续的假设就会有较大的偏差,使得最终求出的光流值有较大的误差。构建图像金字塔可以解决大运动目标跟踪,也可以一定程度上解决孔径问题(相同大小的窗口能覆盖大尺度图片上尽量多的角点,而这些角点无法在原始图片上被覆盖)。
        考虑物体的运动速度较大时,算法会出现较大的误差。那么就希望能减少图像中物体的运动速度。一个直观的方法就是,缩小图像的尺寸。假设当图像为400×400时,物体速度为[16 16],那么图像缩小为200×200时,速度变为[8,8]。缩小为100*\100时,速度减少到[4,4]。
        所以光流可以通过生成原图像的金字塔图像,逐层求解,不断精确来求得。简单来说上层金字塔(低分辨率)中的一个像素可以代表下层的两个。

17.虚函数有什么作用,析构函数为什么定义为虚函数?

答:虚函数的作用是当基类调用派生类的对象时,能够实现多态,即虚函数会优先调用派生类的对应函数。如果基类的析构函数不是虚函数,则不能调用基类的析构函数析构从基类继承来的那部分成员,所以就会出现只删一半的现象,造成内存泄漏。

18.简述PnP原理,适用的场景是什么?

答:PnP是已知n个3D点坐标和其对应的2D相机投影点坐标,求解相机位姿,其中至少需要3对点(3D-2D)可求解(平移+旋转一共6个自由度)。

其中求解方法有:DLT(直接线性变换法,至少6对点,因为旋转平移矩阵3*4个未知量),P3P(余弦定理、三角形相似),EPnP等。

视觉里程计跟踪过程中,相机的位姿估计;

19.Eigen中求逆使用了哪些数学思想?

1)直接;2)SVD分解;3)QR分解

20.卡尔曼滤波状态预测的协方差矩阵如何计算?

其中 P 是状态方程的协方差, Pk−1 是根据上一时刻后验估计的状态协方差矩阵, Pk是当前时刻状态预测的协方差矩阵。该公式是卡尔曼滤波的预测步骤。

21.如何存储稀疏矩阵?

答:对于稀疏矩阵,顺序存储结构中常用的方式有两种:三元组表示法,伪地址表示法。三元组表示法,就是定义一个数据结构,里面保存了该元素的横坐标、列坐标,以及该元素的值,这也是最简单的一种表示方法。伪地址表示法比上面略微省了一些空间。伪地址表示法也需要定义一个结构体,里面一个成员变量是保存的元素的值,另外只需要一个成员变量用于保存它的伪地址即可。
伪地址就是该元素相对于这个矩阵保存的首地址的偏移量,这样只要经过简单计算就可以知道其对应的横纵坐标了。

而链式存储也有两种常见的方法,分别是邻接表表示法和十字链表法。

24.回环检测如何理解?请简述你熟悉的开源框架实现流程。

答:回环检测,又称闭环检测,是指机器人识别曾到达某场景,使得地图闭环的能力。 说的简单点,就是机器人在左转一下,右转一下建图的时候能意识到某个地方是“我”曾经来过的,然后把此刻生成的地图与刚刚生成的地图做匹配。

25.说说多目相机的标定原理和主要流程。

26.C++中智能指针相比普通指针的优势和劣势。

答:优势:避免内存泄露,会自动清空内存;解决多线程下对象析构问题;引用计数,实现了资源回收

劣势:智能指针只能管理堆对象,不能管理栈上对象;不要将 this 指针直接托管智能指针;循环引用;基于引用计数的一些性能损耗。

27.有序map和无序map的查找复杂度。

O(logn),O(1)

30.多传感器如何做时间同步。

答:同步就是插值(内插外推,两个时间点之间的数据用插值,时间点之外的,用历史数据进行推测),具体实现方法可查阅:https://zhuanlan.zhihu.com/p/108853312

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值