vins 后端

  1. 回环检测
  1. 1DBoW

        二进制形式,解压58M。

        Orb是txt形式,解压130多M。

  1. 描述符

         在原图上进行描述符提取。描述符与orb相同。

  1. 回环流程

         在原图上算描述符。用fast额外提取了些特征点。

        DBoW查找4个得分最高的备选帧,从大到小排序。得分筛查。同时还要看id,id要尽量小。这里只选一帧。接下来是描述符匹配大于25个匹配对时继续,PNP及随机一致性(opencv的函数)去除误匹配同时求出回环帧在当前vio下的位姿,如果匹配数大于25个就算成功,同时更新两帧之间的转换关系存在loop_info中并发布回环帧到滑窗。两帧不在同一个sequence中时,要进行sequence合并。

       滑窗优化位移,updateKeyFrameLoop用来更新优化的结果。

       最近50帧不进行回环检测。

       所有关键帧都放到一个列表中,如果同一个地方多次到达,重复放类似的关键帧,且DBoW库也是一样。

        1.3 前端与后端位姿管理

        前端和后端之间需要维护一个位置差。

        每个keyframe都有如上数据。如果没有放入滑窗更新位姿差(回环),T_w_i、R_w_i和vio_T_w_i和vio_R_w_i相等。看updatePose和updateVioPose两个函数的调用。

        维护一个滑窗和图之间的位姿差t_drift和rdrift。t_drift和rdrift的更新,要把回环帧丢到滑窗里去算得出当前关键帧的T_w_i和R_w_i,再用当前关键帧的T_w_i和R_w_i更新图的t_drift和rdrift。最后用t_drift和rdrift更新关键帧列表中所有关键帧的T_w_i和R_w_i。关键帧中的T_w_i和R_w_i代表了其当前的实际姿态。

        w_t_vio和w_r_vio在描述符匹配,PNP及随机一致性去除误匹配,算位移时更新。w_t_vio和w_r_vio表示滑窗与此sequence的位姿差,用于sequence合并。

      1.4 Sequence

        Sequence建立,与滑窗跟丢reset同时发生,各个sequence之间没有关系。Sequence建新的时候,t_drift和r_drift,w_t_vio和w_r_vio都要复位为零。     

        Sequence合并:sequence的编号没有合并,只更新了w_t_vio和w_r_vio。

      2. 全局图优化

        顺序边,每个关键帧往前找5帧,建立顺序边。顺序边的建立方法为两个关键帧的位姿差,原点为当前关键帧。残差构建,就是优化后的位姿差与建立的顺序边之间的差值。

        需要优化的帧,为当前帧到上次产生回环的关键帧。也就是没有被图优化优化过的帧。

        图管理,长时间运行,位姿图会逐渐增大,会严重影响系统的实时性。作者采用了降采样处理。具体策略为:所有附带闭合回路抑制的关键帧被保存,其它太接近或者相邻间航向角比较接近的关键帧可能会被移除。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值