VINS_Fusion代码注释(二)---------IMU预积分部分---------------

VINS_Fusion代码注释(二)---------IMU预积分部分---------------

VINS_Fusion程序注释(一) rosNodeTest.cpp https://blog.csdn.net/qq_36170626/article/details/103769507
上部分主要是通过ROS订阅传感器的信息(单目,双目,IMU)

void Estimator::inputImage(double t, const cv::Mat &_img, const cv::Mat &_img1)   //时间戳,左目,右目
{
    inputImageCnt++;
    map>>> featureFrame;//每一帧图像的特征点
    TicToc featureTrackerTime;//每一帧图像的时间戳

    if(_img1.empty())
        featureFrame = featureTracker.trackImage(t, _img);//追踪单目
    else
        featureFrame = featureTracker.trackImage(t, _img, _img1);//追踪双目
    //printf("featureTracker time: %f\n", featureTrackerTime.toc());

    if (SHOW_TRACK)//追踪情况
    {
        cv::Mat imgTrack = featureTracker.getTrackImage();
        pubTrackImage(imgTrack, t);
    }
    
    if(MULTIPLE_THREAD)  //启用多线程
    {     
        if(inputImageCnt % 2 == 0)
        {
            mBuf.lock();
            featureBuf.push(make_pair(t, featureFrame));
            mBuf.unlock();
        }
    }
    else//单线程
    {
        mBuf.lock();
        featureBuf.push(make_pair(t, featureFrame));
        mBuf.unlock();
        TicToc processTime;
        processMeasurements();
        printf("process time: %f\n", processTime.toc());
    }
    
}

c++之pair与make_pair的区别:

https://www.cnblogs.com/nimeux/archive/2010/10/05/1844191.html

std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。例如std::pair 或者 std::pair等。pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。初始化一个pair可以使用构造函数,也可以使用std::make_pair函数,make_pair函数的定义如下:
template pair make_pair(T1 a, T2 b) { return pair(a, b); }
一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象。 另一个使用的方面就是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。但是这样会出现如下问题:例如有如下两个定义:
std::pair(1, 1.1);
std::make_pair(1, 1.1);
其中第一个的second变量是float类型,而make_pair函数会将second变量都转换成double类型。这个问题在编程是需要引起注意。下面是一段pair与make_pair的例子程序:

/***********************************************************************/
#include 
#include 
#include 
using namespace std;

int main () {
    pair  product1 ("tomatoes",3.25);
    pair  product2;
    pair  product3;

    product2.first = "lightbulbs";     // type of first is string
    product2.second = 0.99;            // type of second is double

    product3 =make_pair("shoes",20.0); //pair("shoes",20.0)error

    cout << "The price of " << product1.first << " is $" << product1.second << "\n";
    cout << "The price of " << product2.first << " is $" &l

你可能感兴趣的:(开源SLAM系统分析)