ORB-SLAM策略思考之线程交互

ORB-SLAM策略思考之线程交互

ORB-SLAM线程交互

1 跟踪线程

  1. 重启操作中,跟踪线程会向局部建图线程回环闭合线程发送重启请求,从而完成整个SLAM系统的重启
    1. 当使用恒速模型跟踪或者基于上一帧的跟踪失败时,会进行重定位跟踪,但是当重定位跟踪失败或者局部地图跟踪失败时,跟踪线程会执行重启操作
    2. 当初始化局部地图时,当三角化初始化的地图点中的中位数深度小于0时,说明初始化地图失败,位姿不准确,执行重启操作
  2. 除此之外,跟踪线程还会向局部建图线程发送停止BA优化的请求
    1. 当跟踪线程发现局部建图在很长一段时间内,不接受跟踪线程新产生的关键帧时,判断局部建图线程中累计需要处理的关键帧数目比较多,这时,跟踪线程每次在产生新的关键帧时,都会向局部建图线程发送终止BA的请求,从而可以实现局部建图线程的轻度优化,加快累计关键帧的处理速度,值得注意的是,跟踪线程在发送终止BA请求时,不会再插入新的关键帧,从而减缓局部建图线程的负担
  3. 最后,跟踪线程还会向局部建图线程发送关键帧
    1. 当跟踪线程判断局部建图线程可以接收关键帧,并且当前帧满足关键帧要求时,将会创建新的关键帧,并发送给局部建图关键帧,这里值得注意的是,跟踪线程创建的关键帧并不会放入全局地图中去,因为局部建图线程会对插入的关键帧再次进行判断,如果局部建图线程认为当前插入的关键帧符合要求,才会插入到全局地图中去

2 局部建图线程

  1. 局部建图线程会向回环闭合线程插入关键帧
    1. 当局部建图线程完成插入关键帧、地图点删除、新地图点创建、地图点融合和局部BA和关键帧删除后,会向回环闭合线程插入处理好的关键帧

3 回环闭合线程

  1. 回环闭合线程开启闭环矫正前,需要向局部建图线程发送停止请求
    1. 当进行闭环矫正时,说明回环闭合线程已经检测到了闭环匹配关键帧,这时回环闭合线程将全部算力集中在回环的矫正上,不需要局部建图线程再插入关键帧
  2. 回环闭合线程会向跟踪线程发送强制重定位请求
    1. 当回环闭合线程完成当前关键帧和当前关键帧的一阶相连关键帧的位姿矫正和当前关键帧、闭环匹配关键帧和他们一阶相连的关键帧对应的匹配地图点的位置矫正后,向跟踪线程发送强制重定位请求,执行跟踪线程的重定位
  3. 回环闭合线程执行完本质图优化后,需要向局部建图线程发送释放请求
    1. 当回环闭合线程执行完本质图优化后,全局地图中的地图点位置和关键帧位姿都会进行更新,整个地图的误差会纠正到一个比较好的范围内,这时就需要将局部建图线程中还没有及时处理并发送的回环闭合关键帧进行内存释放,因为这些关键帧有的没有经过局部建图线程的位姿优化,有的在局部建图线程优化过程中就被停止的关键帧。不管怎么说,这些关键帧的位姿都没有在本质图中得到优化,因此直接舍弃。
  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值