VINS-闭环检测与优化解析

需积分: 42 116 下载量 92 浏览量 更新于2024-08-07 收藏 2.61MB PDF 举报
"闭环检测-4_1_alios things网络篇之netmgr" 本文主要讨论的是视觉惯性里程计(Visual-Inertial Odometry, VIO)系统中的闭环检测和优化,这部分是确保VIO系统长期精度和鲁棒性的重要环节。VIO系统结合了图像数据和IMU传感器数据,通过实时估计设备的运动轨迹。闭环检测能够检测到系统是否回到了之前经过的位置,从而修正累积的定位误差。 1. **闭环检测** - VINS(Visual-Inertial Navigation System)系统采用BRIEF描述子和DBoW2词袋方法进行闭环检测。首先,由于前端的Harris角点数量有限(约70个),系统会在后端非线性优化刚处理完的关键帧上重新检测500个FAST角点,增强闭环检测的可靠性。 - 这些新旧角点会进行BRIEF描述,随后计算当前帧与词袋模型的相似度得分,并与关键帧数据库中的所有帧进行比较。TemplatedLoopDetector::detectLoop函数用于寻找可能的闭环候选帧。 2. **闭环一致性检测** - 当找到闭环候选帧后,系统会使用BRIEF描述子进行点匹配,通过KeyFrame::searchInAera找到当前帧与闭环候选帧之间的对应点。接着,使用RANSAC算法排除异常匹配点(KeyFrame::PnPRANSAC),当匹配点数量超过设定阈值时,认为闭环检测成功。 3. **闭环优化** - 闭环检测后,系统会执行闭环优化,修正轨迹,以消除因重复路径导致的定位漂移。优化过程通常包括对所有受影响的关键帧进行非线性优化,考虑视觉和IMU的约束,确保优化结果的全局一致性。 4. **IMU预处理和预积分** - 在VIO中,IMU数据的预处理和预积分是关键步骤,涉及PVQ(Position-Velocity-Quaternion)的连续和离散形式的计算,以及误差和协方差的分析,这些都直接影响到后端优化的性能。 5. **后端非线性优化** - 后端优化的目标函数包括视觉和IMU约束,状态向量包含相机姿态、IMU偏置等信息。通过最小化这个目标函数,可以修正系统估计的轨迹,提高定位精度。 6. **前端视觉处理** - 前端主要负责特征点检测和跟踪,为后端优化提供基础。特征点检测如FAST角点,特征点跟踪确保在不同帧间保持一致性的点匹配。 7. **初始化** - 系统初始化包括相对姿态估计、全局SFМ构建、PnP问题求解以及初始对齐,这些都是为了获取准确的初始状态估计。 8. **边缘化和FEJ** - 边缘化是VIO中的一种重要技术,它通过丢弃某些不重要的变量来降低优化问题的维度,而FirstEstimateJacobian(FEJ)则用于快速估计系统状态。 9. **其他策略** - 包括选择关键帧的策略、后端优化后的变量更新以及在丢失跟踪后如何进行多地图融合,这些都是确保系统稳定性和鲁棒性的重要细节。 闭环检测和优化是VIO系统中的关键技术,它们能够识别并纠正系统的定位漂移,从而提高长期定位的准确性。理解并实现这些过程对于开发高效稳定的VIO系统至关重要。