柳市网站推广,自己做服务器的网站,学校网站开发研究的意义和目的,互联网项目名称大全1.ORB-SLAM2的总体框架是怎样的
ORB-SLAM2一共有三个线程#xff0c;分别是Tracking、Local Mapping、Loop Closing线程#xff0c;#xff0c;其中Tracking负责完成关键点提取#xff0c;并进行帧间匹配#xff0c;同时初步选取关键帧#xff1b;Local Mapping线程主要…1.ORB-SLAM2的总体框架是怎样的
ORB-SLAM2一共有三个线程分别是Tracking、Local Mapping、Loop Closing线程其中Tracking负责完成关键点提取并进行帧间匹配同时初步选取关键帧Local Mapping线程主要进行关键点筛选和地图点剔除同时回环进行一个局部优化Loop Closing线程主要进行检测。 2.ORB-SLAM2怎样进行初始化
ORB-SLAM2在进行跟踪前需要先完成初始化初始化包括相机初始帧位姿新建地图新建关键帧等ORB-SLAM2一共提供三种接口分别为单目双目RGBD其中单目初始化最为复杂具体步骤如下
1寻找匹配点对前两帧图像提取ORB特征关键点进行特征匹配如果匹配点个数小于100认为匹配失败
2由匹配点恢复位姿利用八点法同时计算基础矩阵和本质矩阵通过计算评分比选择合适的结果来作为初始位姿
3创建初始地图根据前两帧位姿利用三角法恢复三维地图点创建初始如图将这两帧都设为关键帧并完成关键帧与关键帧关键帧与地图点的关联对上述两个关键帧和地图点进行一次全局BA并选择地图点深度的中位数作为单位尺度1来进行地图的尺寸初始化
其中单目初始化深度是根据三角化完成的因此只有纯旋转是不够的还需要进行平移。
双目和RGBD初始化不同的是初始化不需要三角化来恢复深度而是通过计算左右目的差别得到深度和采取特定的传感器因此只需要一个关键帧图像不具有上面3中关键帧间关联和全局BA的操作
3.ORB-SLAM2是如何进行Tracking的
Tracking的目的是兼顾计算速度和鲁棒性使得当前帧中的特征点可以跟踪匹配到上一帧在ORB-SLAM2中一共使用了三种模型分别是1运动模型2关键帧模型3重定位模型
1运动模型假设相机运动是匀速的根据上一帧的速度和位姿估计当前帧的位姿然后进行跟踪匹配也就是把地图点再投影到当前帧进行匹配然后就可以根据BA来进行优化了相当于经典的PnP。如果帧与帧之间都采用暴力匹配的话运行速度会受到很大限制因此作者采用跟踪匹配加速了匹配过程就是将上一帧的特征点投影到下一帧中然后在投影点的附近区域进行搜索
2关键帧模型和上一个关键帧匹配采用BOW进行匹配加速
3重定位模型和所有关键帧匹配采用BOW进行匹配加速
这几个模型的使用规则是1不好则使用22不好则使用3 ·
在完成上述三个模型的匹配后程序还会将局部地图点投影到当前帧中实现一个匹配目的是对局部地图和局部关键帧进行更新用于优化以提升速度
4.ORB_SLAM2如何选取关键帧
关键帧的选取标准是
1距离上一次重定位至少距离20帧
2局部建图线程空闲或者距离上一次加入关键帧过去了20帧防止图像重叠度太高并且局部建图线程有空闲处理新的关键帧。如果需要关键帧插入而Local Mapping建图线程忙则发送信号到Local Mapping建图线程停止局部地图优化使得新的关键帧可以被及时处理
3当前跟踪至少50个点确保了跟踪定位的精确度
4当前帧跟踪到Local Map中参考帧的地图点数量少于90%确保关键帧之间有明显的视觉变化
这里只是判断是否需要将当前帧加入到关键帧并没有真正加入到全局地图因为Tracking线程的主要作用就是局部定位而处理地图中的关键帧、地图点以及如何加入、如何删除的工作是在Local Mapping线程进行的
5.ORB-SLAM2中有哪些非线性/后端优化的相关操作
一共有五种分别是局部BA优化、全局BA优化、闭环位姿优化、全局位姿优化、单帧BA优化
1局部BA优化运行在Local Mapping线程在剔除关键帧之前进行局部地图优化当新的关键帧加入到convisibility graph时作者在关键帧附近进行一次局部优化优化目标是最小化重投影误差 2全局BA优化用于单目初始化的CreateInitialMapMonocular函数以及闭环优化的RunGlobalBundleAdjustment函数在闭环结束前新开一个线程用于全剧优化 3闭环位姿优化当检测到闭环时闭环连接的两个关键帧的位姿需要通过SIM3/SE3优化以使得其尺度一致。优化求解两帧之间的相似变换矩阵使得二维对应点的投影误差小 4全局位姿优化这相当于《视觉SLAM十四讲》中的Pose Graph值得注意的是如果是单目的话这里优化的是Sim3如果是双目或者RGBD的话这里优化的SE3残差定义为ORB SLAM2中优化的对象是Essential GraphEssential Graph指的是所有的关键帧顶点但是优化边大大减少包括spanning tree生成树和共视权重θ 100 的边以及闭环连接边闭环调整CorrectLoop过程中的优化。 5单帧BA优化只优化当前帧pose地图点固定用于LocalTracking中运动模型跟踪、参考帧跟踪、地图跟踪TrackLocalMap、重定位每进行过一次PnP投影操作将地图点投影到当前平面上之后都会进行一次PoseOptimization位姿优化通过BA优化重投影误差
上面几张图把问题描述得非常清楚红色的是优化的对象灰色的是固定的对象通过对比就能知道各个优化方法之间的区别。
6.ORB-SLAM2维护了哪些图
1Covisibility Graph共视图是一个无向有权图该图中每个顶点就是关键帧如果两个关键帧有相同的地图点即它们有共视点就把这两个顶点连接起来连接边的权重就是两个关键帧共享的3D点的个数。局部BA优化依赖的就是一个局部的共视图全局BA优化依赖的就是一个全局的共视图总之共视图在ORB-SLAM2里用的很多。
2Essential Graph为了在优化阶段减小计算量ORB-SLAM2作者提出了Essential Graph的概念主要用它来进行全局位姿优化。它是共视图的子集即Covisibity Graph的最小生成树MST。该图中顶点是关键帧但只连接某个关键帧和与之拥有最多共享的地图点的关键帧这样能够连接所有的顶点但是边会减少很多。3Spanning Graph生成树是代价最小的全联通图Essential Graph就是基于Sanning Graph生成的。 如下图所示可以观察他们的区别 7. ORB SLAM2中是如何对地图点进行筛选的
在Local Mapping线程中在进行局部BA之前会先对地图点进行剔除剔除规则如下 1该地图点是坏点直接从检查列表去掉 2跟踪匹配上到该地图点的普通帧帧数Increase Found小于应该观测到该地图点的普通帧数量25%*Increase Visible即比值mnFound/mnVisible小于0.25设置为坏点并从检查列表去掉。比值低说明这样的地图点该地图点虽在视野范围内但很少被普通帧检测到 3从添加该地图点的关键帧算起当前关键帧至少是第三个添加该地图点的关键帧的条件下看到该地图点的帧数2双目和RGBD模式是帧数3设置为坏点并从检查列表去掉因此在地图点刚建立的阶段要求比较严格很容易被剔除而且单目的要求更严格需要三帧都看到 4若从添加该地图点的关键帧算起一共有了大于三个关键帧还存在列表中则说明该地图点是高质量的从检查列表中去掉。
总而言之就是太少帧看到的地图点是坏点都要剔除掉而看得多的则是高质量点
8. ORB SLAM2中是如何对关键帧进行剔除的
候选的关键帧是LocalMapping中当前处理的关键帧的共视关键帧不包括第一帧关键帧与当前关键帧。如果一个关键帧检测到的90%的地图点在其他不少于三个具有相同或更精确尺度的关键帧里面都被检测到就认定该关键帧冗余该关键帧的存在提供的地图点观测信息有限并剔除。
9. ORB SLAM2中Loop Closing的具体实现流程是怎样的
首先是通过回环检测Bow得分和共视关系检查从所有关键帧中筛选出一组和当前帧有可能形成闭环的候选帧然后利用相似求解器Sim3Solver求解出候选帧与当前帧之间的相似变换注意这里是单目相似变换而双目或者RGBD是刚体变换利用相似变换找出更多的匹配地图点然后进行闭环位姿优化对应5中的回答如果优化结果较好的话就不再判断其他候选帧。然后就是闭环矫正通过就出来的相似变换对当前帧进行位姿调整并且传播到当前帧相连的关键帧回环两侧的关键帧完成对齐然后利用调整过的位姿更新这些相连关键帧对应的地图点同时在Covisibility Graph里面增加闭环边然后进行Essential Graph的优化即全局位姿优化当前帧与闭环匹配帧之间的边不进行优化最后再来一个全局BA优化即完成了Loop Closing的全部流程。
10.什么是Sim3优化
Sim3优化是单目特有的优化方式因为单目尺度具有不确定性对于空间点坐标有如下相似变换 于是我们建立了一个相似变换群Sim(3) 其对应的李代数如下 相比于欧式群的李代数其多了一个σ变成了一个七维向量而不是六维关联Sim(3) 和s i m ( 3 )的仍是指数映射和对数映射指数映射为 其中 微分求导模型和扰动求导模型对其同样适用。Sim3优化其实就是Pose Graph优化其优化目标残差是 其优化效果如下 11.如何理解视觉重投影误差
对于单目视觉来说3D点是通过两帧图像恢复得到的。3D点通过相机位姿重新投影到相机平面与其对应像素点之间的像素差被称为重投影误差也算是观察误差投影的相机平面一般都是使用归一化平面。最终要优化的是重投影误差理想情况下像素差是0。
12.简述PnP原理适用的场景是什么
答PnP是已知n个3D点坐标和其对应的2D相机投影点坐标求解相机位姿其中至少需要3对点3D-2D可求解平移旋转一共6个自由度。
其中求解方法有DLT直接线性变换法至少6对点因为旋转平移矩阵3*4个未知量P3P余弦定理、三角形相似EPnP等
13.关键帧的删除
在局部建图线程检查到当前关键帧为冗余关键帧了里面有90%的地图点都被至少其他三帧观察到过就会设置为冗余关键帧进行删除
14. 解释SLAM中的绑架问题
绑架问题就是重定位是指机器人在缺少之前位置信息的情况下如何去确定当前位姿。例如当机器人被安置在一个已经构建好地图的环境中但是并不知道它在地图中的相对位置或者在移动过程中由于传感器的暂时性功能故障或相机的快速移动都导致机器人先前的位置信息的丢失在这种情况下如何重新确定自己的位置。 初始化绑架可以阐述为一种通常状况初始化问题可使用蒙特卡洛估计器即粒子滤波方法重新分散粒子到三维位形空间里面被里程信息和随机扰动不断更新初始化粒子聚集到/收敛到可解释观察结果的区域。追踪丢失状态绑架即在绑架发生之前系统已经保存当前状态则可以使用除视觉传感器之外的其他的传感器作为候补测量设备
参考链接https://blog.csdn.net/weixin_46135347/article/details/120160599
https://www.cnblogs.com/linglingdog/p/15874424.html
https://blog.csdn.net/weixin_44580210/article/details/90760584