这个面试问题是从2022年12家大工厂的秋季招聘面试问题中整理出来的。主题基本涵盖了惯性导航、点云、状态估计等自动驾驶和机器人定位方向的主要知识点CV/VIO、C 等部分。
建议您先自己回答问题,然后比较参考答案(参考答案由五位行业算法专家整理校对),我专门成立了面试题交流小组,进入小组的方式见文末。
整理不容易,点赞再走!
一、惯性导航方向
- IMU什么是测量方程?什么是噪声模型?
- 惯导误差模型是如何产生的?例如15维卡尔曼滤波模型。
- GPS如何校准双天线安装偏角?
- 多传感器之间是如何正确的?
- GPS到达时有延迟,但是IMU给出的加速度和角速度是实时的。在这种情况下,如何处理延迟?如何整合?
- DR递推的原理是什么?怎么做?
- 如何调节组合导航卡尔曼滤波过程中的噪声?
二、点云算法方向
-
近邻问题的典型解决方案有哪些?
-
怎么对KdTree插入操作?如何确定节点的分类面?
-
怎么对KdTree进行Search By Range和Search By KNN操作?
-
举出除了KdTree外部近邻计算方法(格栅,B树、R树、四叉、八叉等)。
-
给定一组点,如何计算拟合平面?如何计算拟合直线?解释方法的意义。
-
举出常见的点云registration方法。
-
说明ICP详细的过程需要解释代数解和匹配问题解。
-
说明NDT详细过程,Normal distribution意思是什么?
-
除了最近的邻居,匹配问题还有什么解决办法?说明匈牙利算法、最大流/最小切割、谱法等。
-
解释混合高斯模型的含义。EM算法原理。
三、状态估计方向
-
卡尔曼滤波器方程从增益优化的角度推出。
-
从Cholesky卡尔曼滤波器方程推出方程。
-
解释KF噪声矩阵的含义。运动方程中的噪声是大是小?修正方程中的噪声是大是小?
-
RTS与KF之间的联系?
-
推广卡尔曼滤波器EKF。
-
解释数值矩阵求逆的几种方法(QR、Cholesky、SVD)。
-
什么是Moore-Penrose逆?怎么计算?Moore-Penrose逆?
-
SVD是什么?SVD如何求解?
-
什么是特征值?如何计算矩阵的特征值和特征向量?什么样的矩阵必然会对角化?不能对角化矩阵的标准形式是什么?Jordan标准形?
-
如何解决线性最小二乘解?如何解决零空间解?说明特征值方法与奇异值方法的联系。
-
描述图优化与最小二乘之间的联系。VIO常用的图形优化模型。
-
稀疏图优化的稀疏性体现在哪里?要求回答稀疏性Schur和稀疏Cholesky之一。
-
描述滤波器和最小二乘之间的联系?解释为什么卡尔曼滤波器可以被视为两个时间的最小二乘。
-
说明UKF、EKF和PF关系。
-
解释UKF中的Sigma采样点关系。
-
解释PF如何做重采样的过程。解释轮盘赌的原理。
-
解释李群李代数在三维状态估计中的作用。
-
如何定义流形?局部和局部流形R同胚是什么意思?为什么说?SO三是流形?
-
解释SO3, SE3中的Exp和Log原理BCH原理和作用。
-
左右扰动模型分别用于解决几种常见的雅可比性:
-
解释四元数的更新和更新SO3.更新方式有什么异同?
-
说明四元数运动模型SO3运动模型之间的联系。
-
解释高斯推断与概率学边缘化的关系。解释边缘化与卡尔曼滤波器的关系。
-
M估计是什么?说明M估计与核函数的关系?
四、计算机视觉/VIO方向
-
定义单应矩阵、基本矩阵和基本矩阵?
-
相机内外参的含义?如果图像放大两倍,内外参如何变化?
-
径向和切向畸变模型的含义,鱼眼模型的含义(答等距投影模型)?
-
什么是极限?什么是极限约束?描述了什么几何关系?
-
八点法的原理和过程。
-
与传统积分相比,预积分有什么区别?
-
什么是预积分测量模型和噪声模型?如何处理预积分对零偏差?为什么要这样处理?
-
说明预积分图优化模型。
-
解释重投影模型和BA的原理。
-
说明PnP解决问题。
-
说明RANSAC讨论存在的问题。
-
解释单目VIO初始化过程。需要估计哪些量?如何估计重力的方向和尺度?
-
为什么单目VSLAM会有尺度漂移吗?如何解释这种尺度漂移?现实中有解决办法吗?
-
提出几种光流方法(LK,HS等)。说明LK光流的建模方式。
五.C 方向
-
C 函数指针有哪些类型?函数指针,lambda、什么是仿函数对象?
-
如何使用谓词对给定容器进行自定义排序?
-
传递引用和传递值的区别?传递常引用和传递引用之间的区别?传递右值引用和传递引用之间的区别?
-
函数对象应该通过什么传递?
-
万能引用是什么?用途是什么?
-
什么是完美转发?用途是什么?
-
std::unorded_map和std::map两者有什么区别?
-
虚函数、虚表的原理
-
如何在c 如何在线程间同步?
-
智能指针和裸指针的区别?为什么要用指针的引用计数?
-
智能指针有哪些?std::unique_ptr, std::shared_ptr, std::weak_ptr各有什么用途?
-
悬挂指针会导致什么问题?如何避免?
-
traits是什么?什么时候用?traits?
GitHub repo:
https://github.com/Charmve/LeetCode4FLAG https://github.com/Charmve/CppMaster
?? 知识星球
专为求职面试中算法和数据结构的小伙伴打造学习交流/刷题群(知识星球)!想尽快提高算法和数据结构技能,和更多的小伙伴一起来!高级面试八股文,大厂面经过
参考答案(部分)
一、惯性导航方向
- IMU什么是测量方程?什么是噪声模型?
中值积分,IMU测量方程如下:
IMU随机误差一般包括以下几类,各种误差及其原理如下(以陀螺仪为例): (1) 量化噪声 定量噪声是数字传感器中不可避免的噪声,我们通过AD采集将连续信号集成到离散信号中,在此过程中,精度会丧失,精度和损失AD采样精度有关(具体指模数转换时,AD设备的位数,采样越准确,精度越高,量化噪声越小。 (2) 角度随机游走 陀螺敏感角速率和输出时有噪声,在噪声中噪声成分叫宽带角速率白噪声,我们计算姿态时,本质上是对角速率做积分,这必然会对噪声也做了积分。白噪声的积分并不是白噪声,而是一个马尔可夫过程,即这一次的误差是在上一次误差的基础上累加一个随机白噪声得到的。角度误差所包含的这种马尔可夫性质的误差就叫做角度随机游走。
(3) 角速率随机游走
从理解上和角度随机游走一样,角速率里面并不全是白噪声,它也有马尔可夫性质的误差成分,而这个误差是由宽带角加速率白噪声累积的结果。
(4) 零偏不稳定性噪声
这应该是大家再熟悉不过的一个误差项了,如果一个陀螺只让你用一个指标来体现精度,那必然就是它了。但是这个指标的理解上却不像前几个参数那样直白。
我们可以先把它理解为零偏随时间的缓慢变化,假设在刚开始时零偏大小是某个值,那么过一段时间之后,零偏便发生了变化,具体变化成了多少,无法预估,所以就要给他一个概率区间,来描述它有多大的可能性落在这个区间内,时间越长,区间越大。
实际上,如果你真的测的时间足够长,会发现它也不会无限制增长下去,所以,这个对概率区间的描述只是近似有效,或者一定时间内有效,由于这个有效时间比较长,所以我们一般仍然使用这种方式来描述,只是在理解上要知道这一点的存在。
(5) 速率斜坡
看到斜坡这种描述词,我们一般会想它是不是一种趋势项。实际上,它确实是趋势性误差,而不是随机误差。所谓随机误差,是指你无法用确定性模型去拟合并消除它,最多只能用概率模型去描述它,这样得到的预测结果也是概率性质的。而趋势性误差是可以直接拟合消除的,在陀螺里,这种误差最常见的原因是温度引起零位变化,可以通过温补来消除。
加速度计同样具有这5项误差,而且原理一致,因此不再重复
-
惯导误差模型是怎么来的?比如15维的卡尔曼滤波模型。 可参考博客文章 < https://zhuanlan.zhihu.com/p/135230133> 或参考英文文献< Quaternion kinematics for the error-state Kalman filter >
-
GPS双天线安装偏角是怎么标定的? 通过车辆前行得到航迹角,同时双天线自己可以计算出一个航向角,两者之差为安装偏角,具体拟合方法可以通过最小二乘或滤波算出。
-
多传感器之间是怎么对时的? 激光雷达:大多数雷达如VLP-16等都提供基于pps脉冲和GPRMC信号的输入接口,PPS和GPRMC信号可以由GNSS或IMU提供,或者由外部时钟源提供。少数激光雷达还支持NTP/PTP同步,PTP的精度一般来说比NTP要高,这两个信号都需要由外部时钟源设备提供。 相机:需要支持外部触发曝光的型号,因为相机帧周期包括曝光时间和readout时间(整帧像素点读出),一般来说readout时间是固定的,可以补偿这个时间,相机的时间戳选择为曝光的中间时间。 GNSS:GNSS可以从卫星获得高精度的时钟信号,而且通常的GNSS都支持PPS脉冲以及GPRMC信号。 (1)使用GNSS作为时钟源,将GNSS的PPS信号提供给LiDAR和一个开发板,开发板将给相机同时提供一个曝光的脉冲信号。CAMVOX采用这种方案。 (2)使用外部时钟源,这种时钟源通常支持PPS信号输入,将GNSS的PPS传给外部时钟源,同时外部时钟源可以使用PTP/NTP/PPS给LiDAR做时间同步,同时触发相机开始曝光。外部时钟源同时也可以使用PTP/NTP对主机进行时间同步。
-
GPS到来时是有延时的,而IMU给出的加速度和角速度是实时的,这种情况下怎么处理延时?怎么做的融合? 先通过imu积分计算实时的轨迹,同时把imu数据缓存下来,当GPS到来时,再根据GPS的时间戳去修正历史时刻的数据,然后重新积分该时刻后的imu。
-
DR递推的原理是什么?大概怎么去做? DR,也叫航位推算,是在知道当前时刻位置的条件下,通过测量移动的距离和方位,推算下一时刻位置的方法。可以根据上一时刻位置速度角度,通过imu加速度二次积分得到平移量,角速度积分得到旋转量来进行DR,也可以通过轮速计和车辆运动模型来进行DR。
-
组合导航卡尔曼滤波过程噪声是如何调参的? 先通过GPS和imu的性能参数和频率确定一个米级单位下的噪声。之后在该噪声参数下得到融合的轨迹,然后分别对两个噪声增大缩小分成几组进行调节,观察轨迹。最终选最平滑的一组轨迹的噪声参数,或者选跟真值比精度最高的一组的噪声参数。
同时,我们除了准备详细答案,还为大家提供自动驾驶面试交流群,目前已经开到4群了~点击这里就可以来啦! http://fss.mpay8.cn/article/1M5Qr3HBL3iAAgb