VI-SLAM的边缘化管理与问题修复

问题描述

在实现在线估计路标点的VI-SLAM时,遇到不一致性的问题,位姿的协方差估计偏低。


原因分析

在执行边缘化时,为了降低信息矩阵的稠密度,只剔除仅被第一帧观测的路标点以及第一帧,其余路标点均保留。具体而言,首先找出第一帧观测到的路标点,分为即将被边缘化的点和被保留的点。执行舒尔补操作后,被保留的点成为下一轮优化时的先验信息。
在这里插入图片描述

如图所示, p 1 p_1 p1 l 1 l_1 l1被边缘化得到新的因子图, l 2 l_2 l2 l 3 l_3 l3被保留在先验信息中。在下一轮构建先验信息矩阵时,由于前述的策略,只有 l 2 l_2 l2 l 4 l_4 l4被选入了状态向量中,而 l 3 l_3 l3与其他变量在本轮先验信息中的关系则被忽略( l 3 l_3 l3- p 2 p_2 p2 l 3 l_3 l3- l 2 l_2 l2),这导致边缘化后只存在 l 4 l_4 l4 p 3 p_3 p3错误先验信息


解决方案

  1. 在构建边缘化需要的先验信息矩阵 Λ = [ Λ m m Λ m r Λ r m Λ r r ] \Lambda=\begin{bmatrix}\Lambda_{mm} & \Lambda_{mr} \\ \Lambda_{rm} & \Lambda_{rr}\end{bmatrix} Λ=[ΛmmΛrmΛmrΛrr]时,将带有先验信息的路标点和新观测到的路标点都要考虑在内。
  2. 参考VINS-Mono构建先验信息矩阵的方案,逐个矩阵块地添加到整个的信息矩阵中。
...
Lambda = zeros(2 * stateDim + 3 * length(involvedLandmarks));
b = zeros(2 * stateDim + 3 * length(involvedLandmarks), 1);
% 添加IMU约束信息
...
% 添加Visual约束信息
for i = 1:length(involvedLandmarks)
   lmId = involvedLandmarks(i);
   if ~isempty(find(priorLandmarks == lmId, 1))
       [Error, H_pose, H_lm] = visualMeasurement(lmId, obs, state{1}, landmarks);
       colIdx = 2 * stateDim + 3 * lmId - 2;
       Tk = eye(2);
       Lambda(1:stateDim, 1:stateDim) = Lambda(1:stateDim, 1:stateDim) + H_pose' * (Tk \ H_pose);
       Lambda(1:stateDim, colIdx:colIdx+2) = Lambda(1:stateDim, colIdx:colIdx+2) + H_pose' * (Tk \ H_lm);
       Lambda(colIdx:colIdx+2, 1:stateDim) = Lambda(1:stateDim, colIdx:colIdx+2)';
       Lambda(colIdx:colIdx+2, colIdx:colIdx+2) = Lambda(colIdx:colIdx+2, colIdx:colIdx+2) + H_lm' * (Tk \ H_lm);
       b(1:stateDim, 1) = b(1:stateDim, 1) + H_pose' * (Tk \ Error);
       b(colIdx:colIdx+2, 1) = b(colIdx:colIdx+2, 1) + H_lm' * (Tk \ Error);
   end
end  
% 添加先验信息
...

NOTE: 更好的方式是参照OpenVINS使用位姿与地图点按照自然顺序排列,比如( p 1 p_1 p1, l 1 l_1 l1, l 2 l_2 l2, l 3 l_3 l3, p 2 p_2 p2, l 4 l_4 l4, p 3 p_3 p3),每一个位姿后伴随着对应的新观测到的地图点,如此在进行路标点管理与边缘化时都更加方便。


仿真验证

选用Kaist_vio数据集的圆形轨迹,前100秒的运行场景如下:
circle轨迹
位姿的NEES结果如下:
pose nees

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Vi-ORB-SLAM2是一种视觉惯性(VI)同时定位与地图构建(SLAM)系统,用于无人机和移动机器人的自主导航。它融合了惯性测量单元(IMU)和摄像头信息,通过实时跟踪相机的位置和姿态来构建地图和定位机器人。 Vi-ORB-SLAM2采用了ORB特征描述子和FAST角点特征,以实时地提取和匹配特征点。它利用相机的运动估计来排除误匹配的特征点,从而提高了对动态环境的鲁棒性。 Vi-ORB-SLAM2使用基于滤波器的方法来融合IMU和视觉数据。通过IMU的角速度和加速度数据,可以估计相机的运动和姿态,并根据视觉测量来校准IMU的漂移。这种融合可以提高系统的鲁棒性和精确性,特别是在存在相机运动模糊或视觉信息缺失的情况下。 Vi-ORB-SLAM2还具有回环检测和优化的能力,可以在长时间的导航中自动修正漂移误差。它采用词袋模型来建立地图和检测回环,通过优化相机和地图的位姿关系来实现全局一致性。 Vi-ORB-SLAM2已经在无人机和移动机器人的多个实验平台上进行了验证,并取得了令人满意的性能。它在实时性和精确性方面都有不错的表现,并且相对于传统的视觉SLAM系统更具鲁棒性。 综上所述,Vi-ORB-SLAM2是一种基于视觉惯性融合的SLAM系统,具有鲁棒性、精确性和实时性的优势,适用于无人机和移动机器人的自主导航。 ### 回答2: vi-orb-slam2是一种基于视觉的实时单目SLAM(Simultaneous Localization and Mapping)系统。SLAM是一种能够同时估计相机位姿和环境的三维地图的技术。vi-orb-slam2采用单个摄像头进行定位和地图构建。 vi-orb-slam2使用了一种双目VO(Visual Odometry)和ORB特征的融合方法。VO方法通过连续帧之间的图像匹配和运动估计来计算相机的运动轨迹。ORB特征是一种高效的特征提取算法,它可以在快速实时的情况下提取和匹配特征点。 vi-orb-slam2通过在VO方法中引入ORB特征,进一步提高了系统的鲁棒性和准确性。ORB特征具有自适应的尺度和旋转不变性,可以应对不同尺度和姿态变化的场景。此外,ORB特征的计算效率也很高,可以实现实时的图像处理和跟踪。 vi-orb-slam2在实际应用中具有广泛的应用前景。它可以用于室内导航、增强现实、机器人自主导航等领域。通过实时地建立环境地图和同时估计相机的位姿,vi-orb-slam2可以帮助机器人或者无人机在未知环境中进行自主导航和定位。同时,vi-orb-slam2的实时性和高效性也使得它可以应用于实时监控、虚拟现实等实时场景中。 总的来说,vi-orb-slam2是一种高效、鲁棒和实时的单目SLAM系统,具有广泛的应用前景,可以在多个领域中实现定位和地图构建的任务。 ### 回答3: vi-orb-slam2 是一种基于视觉和惯性传感器数据的实时单目SLAM(Simultaneous Localization and Mapping)系统。SLAM是一种同时利用感知和定位能力,实时构建环境地图并实现自我定位的技术。 vi-orb-slam2利用摄像头和惯性测量单元(IMU)融合数据,可以在没有GPS信号的情况下,实时地建立并更新环境地图,并估计自身相对于地图的位置和姿态信息。 其中,ORB指的是Oriented FAST and Rotated BRIEF,是一种特征检测和描述子提取算法,可以快速地检测和描述图像中的特征点。SLAM系统通过ORB算法提取图像关键点,并利用这些特征点进行特征匹配,从而实现环境地图的构建和定位过程。 vi-orb-slam2还利用IMU的数据,并将其与视觉数据进行融合,从而提高系统的稳定性和鲁棒性。IMU可以提供姿态和加速度信息,用于补偿视觉数据中的相机运动误差,进一步提高SLAM系统的定位精度和鲁棒性。 vi-orb-slam2具有实时性能,可以在实时视频流上运行,并实时地估计相机的位姿。这使得vi-orb-slam2在许多应用中具有广泛的应用前景,例如机器人导航、增强现实和虚拟现实等领域。 总之,vi-orb-slam2是一种基于视觉和惯性传感器的实时单目SLAM系统,通过视觉特征匹配和IMU数据融合,实现了环境地图的构建和自我定位。它具有实时性能和鲁棒性,适用于多种应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值