vinsfusion含有大量容器嵌套的数据结构。我一般看的方法是,把容器看做数据的集合,<>括号内为单个历元数据的数据样式。
featureFrame
// 特征点id、相机id、(x,y,z,pu,pv,vx,vy)
map<int, vector<pair<int, Eigen::Matrix<double, 7, 1>>>> featureFrame;
featureFrame为 一个map容器也就是一个数据集合,第一个< >内为单个历元数据格式包含一个int型的key值,和一个vector容器。
vector容器也是一个数据集合,< >内为一个由一个int型数据和7*1的矩阵组成的数组。
vinsfusion中featureFrame双目情况下:
特征点id---对应左右相机两个组vector数据
featureBuf
//t、特征点id、相机id、7维向量
queue<pair<double, map<int, vector<pair<int, Eigen::Matrix<double, 7, 1> > > > > > featureBuf;
queue容器包含由时间和map容器构成的数组
featureBuf就是将featureFrame和时间做一个集合
feature = featureBuf.front();
将queue的队头元素提取出来也就是最先进入帧的特征点信息