关于大疆
大疆创新(DJI)是全球领先的无人机和机器人公司,总部位于深圳。在SLAM(同步定位与建图)领域,大疆拥有深厚的技术积累,其VIO(视觉惯性里程计)算法在无人机自主导航、避障、悬停等场景中发挥核心作用。大疆的SLAM面试非常注重算法原理与工程实践的结合。
第1题:VINS-Mono的初始化流程是怎样的?为什么初始化对VIO如此重要?
答案要点:
VINS-Mono的初始化分三个阶段:纯视觉SfM、视觉与IMU对齐、全局优化。
第一阶段在滑动窗口中用五点法估计帧间旋转平移,三角化3D点后做视觉BA。第二阶段利用视觉旋转约束估计陀螺仪bias,联合优化尺度因子s、重力向量和速度。第三阶段将窗口内所有状态量放入完整BA联合优化。
初始化之所以重要,是因为VIO系统是非线性的,错误的初始值会导致尺度漂移甚至发散。无人机场景要求初始化必须在几帧内完成。
第2题:IMU为什么要做预积分(Pre-integration)?
答案要点:
预积分的核心思想是将两帧之间IMU的积分结果与绝对位姿解耦。在基于图优化的VIO中,相机帧位姿是优化变量。如果每次优化更新关键帧位姿后都重新积分IMU,计算量巨大。
预积分将相对量(ΔR, Δv, Δp)在IMU坐标系下预先计算好,只与IMU读数和bias有关。当bias在小范围内变化时,通过一阶线性近似快速更新,无需重新积分。
第3题:什么是边缘化(Marginalization)?为什么需要FEJ?
答案要点:
滑动窗口VIO中窗口大小固定,需要移除旧帧。直接丢弃会丢失约束信息。边缘化通过Schur补将被移除状态量的信息转化为对保留状态的先验约束。
FEJ(First Estimate Jacobian)的核心:所有残差对同一个状态的线性化点必须一致,否则会在信息矩阵中重复注入信息(double counting),让不可观的变量变得可观。
第4题:ORB特征是如何实现旋转不变性和尺度不变性的?
答案要点:
旋转不变性通过灰度质心法计算特征点主方向,在计算BRIEF描述子时按主方向旋转坐标系。尺度不变性通过构建8层图像金字塔(尺度因子1.2),各层独立提取FAST角点。
特征点均匀化使用四叉树分配策略:初始一个节点,递归分裂直到节点数达目标数,每个节点只保留响应值最大的特征点。
第5题:请推导视觉SLAM中的BA,说明Hessian矩阵的稀疏性。
答案要点:
目标函数:优化所有关键帧位姿和地图点,使重投影误差最小。Hessian矩阵H = J^T*J,每个观测只涉及一个相机位姿和一个地图点,因此H具有箭头形稀疏结构。
利用Schur补对地图点消元,先求解位姿,再回代求解地图点。H_point是块对角矩阵,求逆复杂度O(n),整体从O((m+n)³)降到O(m³+n)。
第6题:推导四元数的运动学模型。
答案要点:
四元数对时间的导数:q̇ = 0.5 q ⊗ ω。VINS-Mono中使用中值积分传播IMU旋转:ω_avg = (ω_k + ω_k+1 - 2b_g)/2,Δq = exp(ω_avgΔt)。
四元数无奇异性,只有4个参数,便于插值和微分。但SO(3)上的扰动模型可避免归一化约束。
第7题:设计无人机GPS-denied环境中的多传感器融合定位系统。
答案要点:
推荐传感器组合:双目+IMU+单线激光+气压计。融合架构分三层:前端用ESKF(100-1000Hz)做快速姿态估计,后端用因子图优化(10-30Hz)维护滑窗,第三层做全局位姿图优化和重定位。
故障处理分级别:视觉失效时IMU维持,IMU饱和时视觉恢复,全部短时失效用运动模型预测,长期失效触发重定位。
第8题:如何设计大规模环境长期运行的SLAM系统?
答案要点:
三级地图管理:短时(滑窗15-20帧)、活跃(近10min)、全局(所有历史关键帧)。关键帧管理使用空间约束插入策略和冗余剔除算法。
回环检测使用DBOW2词袋模型加两级验证(词袋匹配+PnP+RANSAC)。长期运行通过共视地图维护高频点、描述子评分衰减、增量建图适应环境变化。
第9题:无人机高速飞行时VIO易失效,如何改进?
答案要点:
前端用自适应曝光控制减少运动模糊,金字塔LK光流从3层增加到5层,基于IMU预测特征点位置缩小搜索半径。双IMU冗余设计,一个高灵敏度用于悬停,一个大量程用于高速飞行。
算法层面:特征质量优先(50个好的>200个差的),高速时更激进地插入关键帧,特征难以提取时用直接法维持跟踪。
第10题:BA优化的实时性瓶颈在哪里?如何加速?
答案要点:
BA主要瓶颈:Hessian矩阵构建(O(m*n))、Schur补计算、线性求解。在Jetson TX2上,100个关键帧+2000个地图点的BA约需100-200ms。
加速方案:Schur补+稀疏Cholesky分解、PCG迭代求解器、增量BA(iSAM2)、边缘化策略、固定滞后平滑(只优化最近N帧)。