
ORB_SLAM3_源码解析
文章平均质量分 93
该专栏为学习ORB_SLAM3笔记的总结与整理,其内容包括对ORB_SLAM3源码的解析以及自己的一些感悟。该专栏会持续更新
火柴的初心
这个作者很懒,什么都没留下…
展开
-
ORB_SLAM3_优化方法 InertialBA
关键帧创建的帧率降低,将有更多的时间进行LocalInertialBA优化,所以窗口大小扩大为。的主要作用是联合视觉和IMU信息优化当前关键帧的局部地图,主要用在。当Tracking线程跟踪的地图点超过。进行联合优化,主要作用在。原创 2024-02-19 17:44:42 · 959 阅读 · 0 评论 -
ORB_SLAM3 IMU初始化
因为在IMU初始化阶段假设biases为常数,所以IMU残差中不包含biases的随机游走。首先,对齐IMU轨迹与纯视觉轨迹,求解尺度、关键帧的速度、重力方向、IMU的biases。众所周知,重力和加速度的bias往往是耦合的,大多数情况下很难区分开,避免或者缓解的方法。问题:如果对于IMU参数没有比较好的初值,那么。将不能很快收敛,特别耗时,而且容易陷入局部最优。帧的位姿和速度以及3D点。对齐,bias需要更新,原创 2024-02-19 09:57:30 · 810 阅读 · 0 评论 -
ORB_SLAM3 LocalMapping中CreateNewMapPoints
在的中,通过与新插入关键帧中ORB特征进行匹配,并抛弃其中的匹配点对,接着通过生成地图点。原创 2024-01-14 23:52:32 · 1130 阅读 · 0 评论 -
ORB_SLAM3 LocalMapping中关键帧的处理ProcessNewKeyFrame和地图点的筛选MapPointCulling
更新关键帧中的地图点的属性,并更新和其他关键帧的连接。中新增的地图点,并剔除质量不好的地图点。主要的作用是更新关键帧之间的。已经检验过了,所以不再需要。中的关键帧,给关键帧添加。原创 2023-10-23 23:54:24 · 587 阅读 · 0 评论 -
ORB_SLAM3 判断关键帧与创建关键帧
ORB_SLAM3 判断关键帧与创建关键帧原创 2023-09-19 17:48:28 · 767 阅读 · 1 评论 -
ORB_SLAM3 Relocalization
为包含了PnP的所有内点的集合。为啥不在优化后赋值,主要是为了防止通过。中寻找和当前帧相似的关键帧作为匹配帧,进而恢复当前帧的位姿。的主要作用是通过将关键帧中的地图点投影到当前帧寻找两帧之间。为优化后的外点,那么再位姿优化,内点可能无法达标。主要是通过词袋搜索当前帧与候选关键帧的匹配,参考。进行匹配,这样避免了所有特征点之间的两两匹配。赋值是在PnP后,而不在优化后,说明。时,通过词袋在关键帧数据库。的作用是通过词袋模糊搜索在。为同一节点,再用节点下。,关键帧中的地图点不在。为更加抽象的簇,一个。原创 2023-08-15 16:03:49 · 219 阅读 · 0 评论 -
ORB SLAM3系统初始化
ORB SLAM3的初始化原创 2022-07-03 14:46:07 · 1670 阅读 · 0 评论 -
ORB SLAM3 构建Frame
矩在圆中以行的方式进行计算,首先计算v=0行,上下两行中对应的点为。将特征点分配到网格中主要的作用:加速特征点的搜索。对于金字塔的每一层,将其网格化,每个格子大小为。在四叉树均匀化后,将特征点坐标变换到。示例:目标特征点数(20)个点,两两相互比较,生成。提取到的角点的原点位于。组点对,每组点对包含。原创 2023-05-28 18:47:42 · 1213 阅读 · 0 评论 -
双目视觉(七)稀疏双目匹配
这里介绍ORB_SLAM算法中的双目匹配算法。原创 2023-05-07 00:31:38 · 1699 阅读 · 1 评论 -
ORB_SLAM3 单目初始化
单目初始化单目初始化通过前后两帧图像进行特征匹配,得到他们之间的匹配关系后,通过H或者F恢复两帧之间的运动,并通过三角化生成地图点1.接口void Tracking::MonocularInitialization()2.步骤单目初始化的大致步骤如下:创建单目初始化器,并创建当前帧和来自上一关键帧的IMU预积分mCurrentFrame.mpImuPreintegrated:当前帧的IMU预积分mpImuPreintegratedFromLastKF:来自上一关键帧的IMU预积分原创 2023-04-05 23:34:53 · 791 阅读 · 0 评论 -
ORB_SLAM3_IMU预积分理论推导(残差)
残差预积分的测量值采用一阶近似修正,免去了积分重新运算,降低计算量状态包含:Ri,pi,vi,Rj,pj,vj,δbig,δbia\mathbf{R}_{i}, \mathbf{p}_{i}, \mathbf{v}_{i}, \mathbf{R}_{j}, \mathbf{p}_{j}, \mathbf{v}_{j}, \delta \mathbf{b}_{i}^{g}, \delta \mathbf{b}_{i}^{a}Ri,pi,vi,Rj,pj,vj,δbig,δbia,其中关于原创 2023-04-10 10:26:55 · 833 阅读 · 0 评论 -
ORB_SLAM3_IMU预积分理论推导(更新)
预积分测量值更新当bias不发生变化时ΔR~ij−1→ΔR~ij\Delta \tilde{R} _{ij-1}\to \Delta \tilde{R}_{ij}ΔR~ij−1→ΔR~ijΔR~ij=∏k=ij−1Exp((ω~k−big)Δt)=∏k=ij−2Exp((ω~k−big)Δt)⋅Exp((ω~j−1−big)Δt)=ΔR~ij−1⋅ΔR~j−1j\begin{array}{l}\Delta \tilde{\mathbf{R}}_{i j}=\prod_{k=i}^{j原创 2023-04-09 20:53:36 · 638 阅读 · 0 评论 -
ORB_SLAM3_IMU预积分理论推导(预积分项)
误差1.确定性误差Bias:偏置Scale:实际数值和传感器输出值之间的比值。Misalignment:非正交误差。标定的方法:六面法标定加速度。2.随机误差Allan方差随机游走IMU器件测量模型1.角标符号说明b:body坐标系a:加速计(acc)g:陀螺仪(gyro)w:世界坐标系d:离散(discrete)2.假设假设:地球是静止的,忽略自转,运行平面为水平面,重力指向固定,模值恒定。运行场景小;运行时间短;精度低(mems);3.测量原创 2023-04-09 20:47:14 · 1397 阅读 · 0 评论 -
ORB_SLAM3_IMU预积分理论推导(噪声分析)
ORB_SLAM3 IMU预积分 理论推导原创 2023-04-09 20:41:40 · 654 阅读 · 0 评论 -
ORB_SLAM3 IMU预积分PreintegrateIMU
这篇博文主要分享ORB_SLAM3中Tracking::PreintegrateIMU(),其主要包括几个部分:获得两帧之间的IMU数据中值积分IMU状态更新关于IMU的理论推导参考:ORB_SLAM3_IMU预积分理论推导(预积分项)ORB_SLAM3_IMU预积分理论推导(噪声分析)ORB_SLAM3_IMU预积分理论推导(更新)ORB_SLAM3_IMU预积分理论推导(残差)1.获得两帧之间的IMU数据主要是为了获取当前帧和前一帧之间的IMU数据,以便用于后续的IMU预积分原创 2023-06-22 19:39:34 · 969 阅读 · 3 评论 -
ORB_SLAM3 TrackWithMotionModel
虽然在开始设置了位姿,但是没有参与优化,因此在下一次跟踪时,需要用。,为什么要更新上一帧的位姿,主要是在ORB_SLAM中优化的是。首先,假设两帧之间的变换近似,根据速度设置当前帧的初始位姿。是什么:当跟踪成功或者刚刚跟丢,会更新该速度,该速度表示。中的预积分测量值更新(bias更新,一阶近似)利用参考关键帧更新上一帧在世界坐标系下的。得到上一帧与当前帧的匹配关系后,利用。来预测当前帧的状态,就不用通过。预测当前帧的位姿与速度时,采用。注意:这里可以参考前面的。的位姿更新上一帧的位姿。原创 2023-07-24 23:01:17 · 486 阅读 · 0 评论 -
ORB_SLAM3 TrackReferenceKeyFrame
对于词汇树,它是由一堆图像离线训练而来的,首先对训练的图像计算。进行匹配,这样避免了所有特征点之间的两两匹配。两帧图像特征匹配类似,先对比。特征点,然后把这些特征点放在一起,通过。的树,除了叶子之外,每个节点都有。从词汇树中可以看出,如果想比较两个东西,那么先用。然后对每簇,再次通过。)以及一个正向索引表(对它们聚类, 将之分为。为同一节点,再用节点下。函数将当前帧的描述子。为更加抽象的簇,一个。原创 2023-07-31 09:00:00 · 333 阅读 · 0 评论 -
ORB_SLAM3 TrackLocalMap
TrackLocalMap通过TrackWithMotionModel或TrackReferenceKeyFrame的Frame to Frame跟踪得到了当前帧的初始位姿。为了得到更加精准的位姿,可以将局部地图投影到当前帧上得到更多的匹配实现Frame to Map,然后进一步优化当前帧的位姿1.UpdateLocalMapTrackLocalMap的第一步就是更新当前帧的局部地图,该地图包含:通过UpdateLocalKeyFrames更新局部关键帧:能观测到当前帧地图点的共视关键帧1中原创 2023-08-07 09:00:00 · 563 阅读 · 0 评论 -
ORB_SLAM3_优化方法 Pose优化
主要的作用是利用上一关键帧和当前关键帧的视觉以及IMU信息来优化当前帧的位姿,主要用在。对于先验信息公式推导,未完待续。原创 2023-04-16 14:49:57 · 946 阅读 · 0 评论 -
ORB_SLAM3 闭环检测
【代码】ORB_SLAM3 闭环检测。原创 2023-06-11 22:47:01 · 1247 阅读 · 0 评论