ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

第265篇 SLAM面试高频题——面试官最爱问的20个SLAM问题

第265篇 SLAM面试高频题——面试官最爱问的20个SLAM问题 前面将近30篇把SLAM从基础到进阶都过了一遍从数学原理到具体系统从传统方法到深度学习。这篇做个收尾把面试官最爱问的SLAM问题做个汇总。面试SLAM岗位不管是视觉SLAM还是激光SLAM面试官的提问思路通常分三步基础概念看你是不是真的理解、算法细节看你有没有动手做过、系统设计看你能不能解决工程问题。下面按这个思路来整理。基础概念类5题1. SLAM是什么和里程计有什么区别SLAM全称Simultaneous Localization and Mapping同时做定位和建图。里程计只做定位估计运动不建图。SLAM的核心价值在于闭环——地图可以反过来帮助定位形成正反馈。2. SLAM的前端和后端分别做什么前端做帧间运动估计视觉里程计或激光里程计输出相邻帧之间的相对位姿。后端做全局优化利用回环检测和因子图把所有位姿约束放在一起优化消除累积误差。前端追求实时性后端追求全局一致性。3. 什么是回环检测为什么SLAM必须有回环检测回环检测是识别当前来过的地方。没有回环检测SLAM就是纯里程计累积误差无法消除走一圈回来地图对不上。回环提供了跨时间的约束让后端优化能把轨迹拉回来。4. 单目SLAM的尺度问题是什么怎么解决单目相机只能观测角度不能观测距离所以估计的轨迹和地图没有绝对尺度——你无法分辨是走了1米还是10米。解决方案包括融合IMU提供尺度约束VINS方案、用深度学习预测深度DROID-SLAM、用已知尺寸的物体做标定。5. 特征法和直接法的区别特征法先提取关键点再匹配用匹配点的重投影误差做优化。直接法不提取特征直接用像素灰度值的光度误差做优化。特征法对光照变化鲁棒但计算量大直接法速度快但对光照敏感。ORB-SLAM用特征法DSO用直接法。视觉SLAM核心题5题6. 对极几何是什么本质矩阵和基础矩阵的区别对极几何描述两视图之间的几何约束。本质矩阵E用于归一化坐标去掉了相机内参基础矩阵F用于像素坐标包含内参。已知内参可以从F推出E从E分解出旋转和平移差一个尺度。7. PnP问题是什么常用哪些求解方法PnP是根据3D-2D对应点估计相机位姿的问题。常用方法有P3P3个点的最小二乘解、EPnP高效n点算法、迭代法先用P3P给初值再用非线性优化精调。OpenCV的solvePnP函数封装了这些方法。8. Bundle Adjustment在SLAM中扮演什么角色BA是SLAM后端优化的核心。它同时优化所有相机位姿和3D点位置最小化所有观测的重投影误差。本质是一个大稀疏非线性最小二乘问题利用稀疏性可以高效求解。# BA优化的目标函数示意 def ba_cost(poses, points, observations): cost 0 for obs in observations: proj project(obs.point, obs.pose) # 3D投影到2D cost (obs.pixel - proj).squaredNorm() return cost # 最小化这个cost面试官追问BA的稀疏性体现在哪里回答每个3D点只被少数几帧观测到所以雅可比矩阵大部分位置是零。利用Schur补可以把3D点边缘化掉只对位姿做优化维度大幅降低。g2o和GTSAM都利用了这种稀疏性。9. ORB-SLAM的三个线程分别做什么Tracking线程做前端跟踪每帧提取ORB特征、和参考关键帧匹配、估计当前位姿。Local Mapping线程做局部建图插入新关键帧、局部BA优化、剔除坏点。Loop Closing线程做回环检测和全局优化。三个线程并行工作。10. VINS-Mono的IMU预积分是什么为什么不直接积分预积分把两帧之间的IMU测量预先积分成一个相对运动约束这个约束和当前状态估计无关。好处是当状态估计更新时优化迭代不需要重新积分IMU数据只需要用预积分量做简单修正大幅减少计算量。激光SLAM核心题5题11. ICP和NDT的区别是什么ICP做点到点或点到面的最近邻匹配然后最小化距离对初始值敏感容易陷入局部最优。NDT把点云分成体素每个体素拟合一个正态分布用概率密度函数做配准不需要显式的点匹配对初始值要求更低。面试追问实际项目中你怎么选回答初始位姿比较准比如用IMU给了好的初值就用点到面ICP精度高速度快。初始位姿不确定或者场景特征不明显就用NDT收敛域更宽。也可以先用NDT粗配准再用ICP精配准。12. LOAM的核心思路是什么LOAM把点云中的点分为边缘点和平面点。边缘点用点到线距离做配准平面点用点到面距离做配准。这种分类处理利用了环境中的几何结构比全局ICP更快更准。LOAM是实时激光SLAM的里程碑。13. Cartographer的子图submap机制是什么Cartographer把地图分成多个子图。前端扫描匹配在当前子图中做子图完成后冻结不再更新。后端用回环检测在所有已完成的子图之间做全局优化。这种设计控制了优化规模适合大场景。14. 激光SLAM中的运动畸变怎么消除激光雷达是旋转扫描一帧点云采集过程中传感器在运动导致点云有运动畸变。消除方法是用IMU或里程计数据估计每个点的精确时间戳和位姿把每个点都投影到帧开始的位姿下。LOAM和LeGO-LOAM都做了去畸变。15. 点云下采样为什么重要常用什么方法原始点云数据量巨大16线雷达每秒约30万点直接处理太慢。下采样减少点数同时保持几何特征。常用方法有体素滤波voxel filter把空间分成网格每个网格只保留一个点和随机采样。体素滤波最常用网格大小是关键参数。优化与系统题5题16. 图优化中节点和边分别代表什么节点代表状态变量位姿、3D点等边代表观测约束里程计测量、回环约束、GPS观测等。每条边有一个信息矩阵表示约束的置信度。优化就是找一组节点值使所有边的误差加权平方和最小。17. g2o和GTSAM的区别g2o更轻量接口灵活ORB-SLAM用的就是g2o。GTSAM更重量级有完整的因子图框架支持增量式优化iSAM2代码更规范但学习曲线陡。研究用GTSAM更方便工程部署g2o更灵活。18. 关键帧选取策略有哪些常用策略有三种基于共视关系和已有帧共视点太少就插入新帧、基于运动量移动距离或角度超过阈值就插帧、基于时间间隔每隔固定帧数插入。ORB-SLAM用的是共视关系运动量的组合策略。19. 怎么评估一个SLAM系统的好坏从精度、鲁棒性、实时性三个维度评估。精度用ATE和RPEevo工具鲁棒性测试光照变化、动态物体、传感器退化等极端条件实时性统计前端后端各自的耗时。还要关注内存占用和关键帧管理策略。20. 你在SLAM项目中遇到过什么坑怎么解决的这是开放式问题面试官想看你的实战经验。准备几个具体的例子初始化失败——IMU静止时陀螺仪噪声导致初始化超时解决方案是要求用户做特定运动画8字来激励IMU。回环误检——走廊里两扇门长得很像被误判为回环导致地图扭曲解决方案是提高回环阈值并加几何一致性验证RANSAC验证回环约束。优化不收敛——信息矩阵设置不当导致某些约束权重过大解决方案是仔细调信息矩阵的对角元素。特征点跟踪丢失——快速运动时特征点出视野解决方案是加入运动模型做位姿预测减少帧间搜索范围。这20个问题覆盖了SLAM面试的核心知识点。基础概念、视觉SLAM、激光SLAM、优化系统四大块每块都挑了最高频的问题。面试前把这些问题的答案过一遍心里就有底了。SLAM这个系列从第236篇到这篇一共30篇文章从数学基础到具体系统从传统方法到深度学习再到性能评估和面试题基本覆盖了SLAM岗位面试需要的所有知识。上一篇第264篇 SLAM系统性能评估下一篇我们进入导航模块从ROS2 Navigation2框架开始。如果这篇文章对你有帮助欢迎点赞支持一下你的鼓励是我持续更新的动力
返回列表