vins博客的一部分2
程序员文章站
2022-03-26 15:52:47
...
sync_process()
对两个imgBuf里的图像进行双目时间匹配(通过判断双目图像时间之差 <3ms),扔掉匹配不到的老帧。
double time0 = img0_buf.front()->header.stamp.toSec();//front 返回值为队列中的第一个元素,也就是最早、最先进入队列的元素
double time1 = img1_buf.front()->header.stamp.toSec();
if(time0 < time1 - 0.003)
{
img0_buf.pop(); //如果img0里最靠前的元素太老了,就出队列:先进先出
}
else if(time0 > time1 + 0.003)
{
img1_buf.pop();//如果img1里最靠前的元素太老了,就出队列
}
不断丢弃老帧,直到image0
和image1
能匹配的上。然后将双目图像,时间戳输入到估计器中,然后进行光流法跟踪等一系列后续计算。inputImage
如下。
estimator.inputImage(time, image0, image1);
sync_process()
到此结束
Estimator::inputImage()
首先按照如下格式建立图像特征帧,存储每一帧的所有特征点的信息(camera_id xyz_uv_velocity)
map<int, vector<pair<int, Eigen::Matrix<double, 7, 1>>>> featureFrame;
// 数据格式为feature_id camera_id(0或1) xyz_uv_velocity(空间坐标,像素坐标和像素速度)
然后帧间光流法跟踪、检测特征点、左右目光流法匹配、计算像素速度、画图等,详见trackImage
featureFrame = featureTracker.trackImage(t, _img, _img1)
//追踪双目,得到FeatureFrame:{特征点id, [相机id, (特征点空间坐标,像素坐标,像素速度)]}的集合
写到这儿~~~~~~~~~~~~~~~
如果要画图,用featureTracker.getTrackImage()
得到trackImage()
中处理的imTrack
(左右目的拼接图、画上特征点、帧间变化轨迹),然后发布话题.
将trackImage
得到的特征点featureFrame,和时间戳组成pair,放到featureBuf中:
featureBuf.push(make_pair(t, featureFrame));//按照{时间,featureFrame}往featureBuf中填元素
最后执行imu预积分等后续操作:
processMeasurements()
推荐阅读
-
第2个word发布的博客
-
使用Hexo开源博客系统,轻松搭建你的个人博客(2)- 配置篇
-
第2个word发布的博客
-
2019Hexo博客Next主题深度美化 打造一个炫酷博客(2)-奥怪的小栈
-
基于MEAN全栈架构的多用户博客系统(Angular2+Node+MongoDB) Angular2
-
基于MEAN全栈架构的多用户博客系统(Angular2+Node+MongoDB) Angular2
-
使用Hexo开源博客系统,轻松搭建你的个人博客(2)- 配置篇
-
PHP实例教程(2):构建基于PHP的微博客服务
-
关于Yii2框架搭建完整博客系统的资源分享
-
我的前端博客地址 www.hacke2.cn