当前位置:   article > 正文

无人机群全局一致性后端优化

无人机群全局一致性后端优化

视觉全局一致性

目的:不同无人机看到同一个路标点时,可以构建重投影误差来优化位姿
重点学习参考vins前端图像跟踪

双目模式vins

  1. VIO

入口为rosNodeTest.cpp,首先利用sync_process()中先读取配置文件,再调用estimator.inputImage(time, image0, image1);
estimator.cppinputImage(time, image0, image1)函数,在该函数中

  • 先调用featureFrame = featureTracker.trackImage(t, _img);,这个函数返回当前帧所有特征点以及每个特征点相对于上一帧的速度
  • featureFrame推入缓存区数组featureBuf
  • 最后调用processMeasurements()处理图像数据和imu数据(imu预积分)
  1. 回环检测

入口为posae_graph_node.cpp,主函数中首先读取brief_k10L6.bin,这个预训练的字典文件,用于brief描述子的查找和匹配;然后订阅和发布各种话题;最后进入主线程measurement_process = std::thread(process);
process()函数中,主要功能是向posegraph中添加关键帧,它维护一个list<KeyFrame*>keyframelist,当检测到回环的时候,更新这个链表的数据,标注他是检测到回环的关键帧;并且更新m_optimize_buf这个数组,里面添加检测到回环的关键帧id。
同时主函数中还有一个线程,用于检测m_optimize_buf中不为空时开启优化,优化关键帧位姿,其中固定检测到回环的关键帧。

回环检测的关键帧列表是怎么获取的呢?
(1)首先他会接受位姿、点云、图片数据
(2)然后在process进程中找到同一时刻的位姿、点云和图像数据,用他们来构建关键帧
(3)再把构造的关键帧加入posegraph中,posegraph.addKeyFrame(keyframe, 1)这个函数同时进行: a.回环帧的检索,b.新关键帧的添加,c.维护一个优化数组,以便告诉检测到回环之后,优化线程就可以开启优化了

  1. vio+gps融合
    vins其实还有一个模块,在global_fusion中,用于将vio和gps信息进行融合
    浅谈VINS中的global fusion节点

vins一些说明

1.外参
vins含有话题/vins_estimator/extrinsic,是相机与IMU的外参;配置文件中有关变量为 estimate_extrinsic
estimate_extrinsic=0,不需要标定
estimate_extrinsic=1,初始值为估计值,需要进一步优化
estimate_extrinsic=2,不知道外参值,需要标定
2.pose_graph_save_path
配置文件写入路径值,在vio进程中存储,在回环检测进程中读取
这个文件存的是什么?需要研究一下
3.发布点云
vins的/vins_estimator/keyframe_point和/vins_estimator/margin_cloud这俩点云有什么区别?

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/334054
推荐阅读
相关标签
  

闽ICP备14008679号