赞
踩
目的:不同无人机看到同一个路标点时,可以构建重投影误差来优化位姿
重点学习参考vins前端图像跟踪
双目模式vins
入口为rosNodeTest.cpp
,首先利用sync_process()
中先读取配置文件,再调用estimator.inputImage(time, image0, image1);
在estimator.cpp
的inputImage(time, image0, image1)
函数,在该函数中
featureFrame = featureTracker.trackImage(t, _img);
,这个函数返回当前帧所有特征点以及每个特征点相对于上一帧的速度featureFrame
推入缓存区数组featureBuf
processMeasurements()
处理图像数据和imu数据(imu预积分)入口为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.维护一个优化数组,以便告诉检测到回环之后,优化线程就可以开启优化了
global_fusion
中,用于将vio和gps信息进行融合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这俩点云有什么区别?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。