第一篇 夯实基础

大家好,本篇将开启 SLAM 技术交流前奏。作为或者想作为一名出色的多传感器多场景定位导航算法工程师,首先需要有坚实的 SLAM 基础知识,不然代码看起来一头雾水。本文干货多多。不过如果打算跳槽或跳入此行业,或者才开始进入的小白童鞋,还是建议先把视觉 SLAM 十四讲、自动驾驶与机器人中的 SLAM 技术、机器人 SLAM 导航核心技术与实战、Probabilistic Robotics 和 Multiple View Geometry in Computer Vision 等熟悉一下。

好了,本文主要罗列一些 SLAM 面试中经常会遇到的一些问题,希望对各位朋友有所帮助。

SLAM 面试问题提炼(按激光 SLAM 与视觉 SLAM 分类)

一、激光 SLAM 问题

1. 激光 SLAM 基础

  1. HDL Graph SLAM 导航中滤波应用了哪些方法?
  2. 地面检测的原理和方法是什么?(平面方程、高度滤波、法向量滤波、RANSAC)
  3. 激光扫描匹配用了哪些算法?
  4. ICP 的原理是什么?请简述 ICP 匹配流程。
  5. GICP 和 ICP 有什么区别?
  6. NDT 算法的原理是什么?
  7. ICP 与 NDT 有什么区别?请从原理、适用场景、计算效率、优缺点等方面比较。
  8. 点云配准目前有哪些算法?ICP、KC、RPM、形状描述符配准、UPF/UKF 等分别有什么特点?
  9. 简述 ICP 匹配原理,状态方程有多少维?优化方程有多少维?
  10. 点线匹配的原理和误差方程是什么?点到直线的距离公式是什么?
  11. 什么是因子图?Factor Graph 的概率图基础、变量节点和函数节点是什么?
  12. ikd-Tree 的原理是什么?它如何支持动态点插入、树重新平衡、惰性删除和双线程重建?
  13. LCDNet 的步骤原理是什么?特征提取、全局描述子提取、相对位姿估计、Loss Function 分别如何设计?

2. 激光 SLAM 系统 / 建图 / 回环 / 运动补偿

  1. 建图流程,有没有包含回环检测?建图是怎么优化的?
  2. 回环检测中如何选择候选帧?如何构建 submap?多分辨率 NDT 如何匹配?得分阈值如何判定?
  3. 什么是运动畸变?产生原因是什么?如何去除或进行运动补偿?
  4. 运动补偿中如何获取每个点时刻对应的位姿?高频里程计、IMU、匀速模型假设分别怎么用?
  5. 激光 SLAM 的具体方法有哪些?Gmapping、Hector、Karto、Cartographer、LOAM、LeGO-LOAM、LOAM-Livox 的特点分别是什么?
  6. 单线雷达和多线雷达分别适用于什么场景?2D 激光 SLAM 与 3D 激光 SLAM 有何区别?
  7. 激光 SLAM 中常用滤波方式有哪些?距离滤波、下采样/体素滤波、统计与半径野值点滤波分别如何应用?
  8. 激光 SLAM 中 RTK / 组合导航如何作为绝对观测?如何判定 RTK 有效性?

二、视觉 SLAM 问题

1. 视觉几何 / 基础

  1. 单目和双目观测的维度有什么区别?
  2. 投影交互以及双目立体重构原理中的方程自由度是什么?左乘和右乘的区别是什么?
  3. 视觉 SLAM 中,本质矩阵、基础矩阵、单应性矩阵的自由度和秩分别是多少?为什么?
  4. 单应矩阵 H 和基础矩阵 F 的区别是什么?
  5. 相似变换、仿射变换、射影变换的区别是什么?
  6. 四元数的相关概念是什么?如何表示旋转?单位四元数、旋转轴和夹角如何转换?
  7. 什么是左扰动和右扰动?在优化旋转/变换矩阵时如何选择?左扰动和右扰动哪个好?
  8. 单目相机、双目相机、深度相机的分类及优缺点是什么?
  9. 单目 SLAM 的尺度不确定性、初始化、三角化等问题是什么?
  10. 视觉 SLAM 中可能用到的边缘检测算子有哪些?Canny、Sobel、Laplacian 等分别有什么特点?

2. 视觉 SLAM 方法 / 框架 / 后端优化

  1. 视觉 SLAM 方法的分类和对应特点是什么?特征点法与直接法各有什么优缺点?
  2. 请描述视觉 SLAM 的框架以及各个模块的作用。
  3. 关键帧的作用是什么?如何选择关键帧?
  4. 重定位和回环检测的区别是什么?
  5. SLAM 中的“绑架/重定位”问题是什么?
  6. 在 SLAM 中,如何对匹配好的点做进一步处理,更好保证匹配效果?
  7. 什么是 BA 优化?误差如何表示?雅可比矩阵如何分块?H 矩阵如何构成?
  8. 描述 RANSAC 算法。
  9. SLAM 后端有滤波方法和非线性优化方法,这两种方法的优缺点是什么?
  10. 什么是 FE?边缘化时为什么要固定线性化点,避免线性化点不可观测性变化?

三、进阶问题

  1. Hessian 矩阵什么时候可以被 J^T J 近似?
  2. 梯度算法与牛顿-拉普拉斯方法有什么区别?
  3. KF、EKF 与 UKF 三者的区别是什么?
  4. 说明 UKF、EKF 和 PF 之间的关系。
  5. EKF 和 ESKF 的主要区别是什么?
  6. ESKF 的基本过程及优点是什么?
  7. ROS 中 rosrun 和 roslaunch 的区别是什么?

3. VIO / 视觉惯性 / IMU

  1. SLAM 相关项目中 IMU 融合需要哪些深入知识?参数问题有哪些?
  2. 零偏稳定性和零偏不稳定性是什么?国军标与 Allan 方差给出的指标有什么区别?
  3. VIO、VINS 中左扰动和右扰动哪个好?
  4. 组合导航中状态量是什么?观测量是什么?怎么融合?
  5. 状态向量分别是哪些?P、Q、V、Ba、Bg 是几维?为什么 Q 是三维?
  6. IMU 中加速度计和陀螺仪的确定性误差和随机误差包括哪些?
  7. 定位这块遇到的最难解决的两个问题是什么?怎么解决?
  8. 在你的工作中,你提出过创新性的算法吗?

如果你能把以上问题回答得清楚,说明你就真正具有了 SLAM 基础知识技能,入行了。下次我们将介绍实际工程中传感器的选型及应用场景。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐