run_euro.cpp
在run_euroc.cpp函数中开了四个线程,分别对应四个函数,处理线程,对应 System::ProcessBackEnd,用作对imu数据以及image数据的后台处理优化,PubImuData线程,对应PubImuData函数,用于IMU数据的读取和发布,PubImageData用作图像数据的读取和跟踪处理,Draw线程,将图像和轨迹进行绘制。
PubImuData读取存储IMU信息的文件,然后获取时间t, 加速度a和角速度w, 然后交给后台进行处理,处理函数为void System::PubImuData(double dStampSec, const Eigen::Vector3d &vGyr, const Eigen::Vector3d &vAcc)
处理第一帧图像,prev_img = cur_img = forw_img = img, 三个图像都是第一帧图像,第二帧图像进入后perv和cur是上一帧图像,forw_img是最新进入的图像
cur_pts是记录的上一帧已经处理的图像的特征点,当第一帧图像进入时,cur_pts还为空,因此不会进入这一处理函数。如果是上一帧的img已经存在并且提取了特征点,就可以进行光流跟踪。cur_img是上一处理过的图像,cur_pts是对那张图像处理获得的二维点,forw_img是最新进来的图像,forw_pts是利用光流获得的跟踪点,status会记录是否跟踪成功。
如果status为0,也就是未成功跟踪,或者出界的点,将会被从prev_pts,cur_pts,forw_pts,ids,cur_un_pts,track_cnt中进行移除