ORBSLAM2--TrackRGBD()方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16481211/article/details/83542794

RGBD跟踪方法中可以获得的数据为彩图,深度图,时间戳。

step1

在ORBSLAM2中运行模式有两种,一种是仅进行跟踪,一种是局部建图和跟踪模式。

step2

接着会检查系统是否复位。

{
	unique_lock<mutex> lock(mMutexReset);  //使用mMutexReset锁
	if(mbReset)
	{
	    mpTracker->Reset();
	    mbReset = false;
	}
}

这里用到了std::unique_lock为锁管理模板类。
std::unique_lock对象以独占所有权的方式(unique owership)管理mutex对象的上锁和解锁操作,即在unique_lock对象的声明周期内,它所管理的锁对象会一直保持上锁状态;而unique_lock的生命周期结束之后,它所管理的锁对象会被解锁。
我们可以看到这段代码被包含在了花括号内,说明所管理的锁对象只在这个生命周期内有效。

step3

根据当前获得的图像计算相机的变换矩阵T,追踪线程基础
cv::Mat Tcw = mpTracker->GrabImageRGBD(im,depthmap,timestamp);

step4

把当前追踪的状态赋值给mTrackingState
把当前帧的地图点的指针赋值给system的地图点当中。
把当前帧的追踪线程中的关键点的指针赋值给system的关键点当中。

step5

最后返回Tcw。

猜你喜欢

转载自blog.csdn.net/qq_16481211/article/details/83542794