估计是Euroc吧,还是初始化设置的点太少了
判断mState==OK//判断是否为初始化成功状态 是 此时情况为:初始化成功 判断(mVelocity.empty() && !pCurrentMap->isImuInitialized()) || mCurrentFrame.mnId<mnLastRelocFrameId+2 //判断是否有当前帧速度,imu初始化是否成功或者当前帧是否刚进行重定位(不超过2帧) 是 bOK=TrackReferenceKeyFrame() //此时...
ORB-SLAM3中IMU初始化由LocalMapping线程中的InitializeIMU函数完成。 主要是完成重力方向RwgRwg和尺度scale的估算,总共进行三次。 InitializeIMU函数包含两部分:InertialOptimization 和 FullInertialBAInertialOptimization函数纯IMU的优化,固定关键帧位姿,优化重力方向、尺度、关键帧速度和偏置...
如果程序可以正常运行,检查你运行的数据集,还有你这个提问方式给的信息太少,没办法做出具体的错误分析 ...
ORB-SLAM-VI[4]是第一个能够重用地图的真正视觉惯性SLAM系统。但是,它仅限于针孔单目相机,并且其初始化速度太慢,在一些具有挑战性的场景中失败。在这项工作中,我们在ORB-SLAM-VI的基础上提供了一种快速准确的IMU初始化技术,以及一个能够实现单目惯性和立体惯性SLAM的开源SLAM库,带有针孔和鱼眼相机。
此外,在使用惯性数据的情况下,IMU 也会在该线程使用新的 MAP 估计技术进行初始化和优化。 LoopClosing将每次插入的关键帧(每个5毫秒检测是否有新的关键帧插入)与完整地图的DboW数据库进行匹配。如果发现了相同的场景,且两个关键帧同时位于active map,则意味着发生了回环,便按照回环的方式进行融合处理;如果匹配上的...
短期的失败:利用IMU的读数估计位姿,把地图点投影到估计的相机位姿上,然后在一个大的image窗口中做匹配,匹配的结果包含在VIO优化中。在大多说情况下可以恢复视觉跟踪,但是如果超过5s还没有恢复。进入下一个状态。 长期的失败:重新进行视觉惯导的初始化构建一个地图,这个地图成为active地图。
在视觉-惯性模式下,通过在优化中加入惯性残差来估计刚体速度和 IMU 偏差。当追踪丢失时,tracking 线程会尝试在 Atlas 地 图中重定位当前帧。若重定位成功,恢复追踪,并在需要的时候切换激活地图。若一段时间后仍未激活成功,该激活地图会被存储为未激活地图,并重新初始化一个新的激活地图。
实现了基于最大后验估计的IMU快速初始化方法。 实现了基于多子图系统Atlas。 论文中还提到另一个创新点:实现了无需离线校正的双目相机模型,主要实现想法是将双目的两个摄像机看做两个单目相机,中间存在一个仿射变化,观测公共区域中的共同特征点来实现校正的方式,但在双目系统初始化的代码注释中,却强调了输入的双目...