vins博客的一部分1

imu_callback

从话题中读入各个数据的t,x,y,z,g,y,r,存放到accgry中:

//从话题读入
double t = imu_msg->header.stamp.toSec(); //将imu_msg的header中的时间戳转换为秒(s)
double dx = imu_msg->linear_acceleration.x;
double dy = imu_msg->linear_acceleration.y;
double dz = imu_msg->linear_acceleration.z;
double rx = imu_msg->angular_velocity.x;
double ry = imu_msg->angular_velocity.y;
double rz = imu_msg->angular_velocity.z;
Vector3d acc(dx, dy, dz);//线速度
Vector3d gyr(rx, ry, rz);//角速度

并将其放到Estimator中的accBufgyrBuf

estimator.inputIMU(t, acc, gyr);

其中inputIMU执行了:

Estimator::inputIMU(t, acc, gyr)
    accBuf.push(make_pair(t, acc))//<t, acc>放到Buf
    gyrBuf.push(make_pair(t, gry))//<t, gry>放到Buf

img_callback

将图像消息放到img_buf

m_buf.lock(); 
img0_buf.push(img_msg);//将img添加到队列中
m_buf.unlock();

注意m_buf.lock()作用:
一段时间内仅一个线程可以访问其中的变量。
多线程协同工作,往往要共享某一块或某几块内存区,各线程执行细节不完全可知可控,容易造成数据损失。如两个线程同时对一个字符串做修改,结果会变得混乱。
为避免这种情况,使用线程锁保证某一线程使用该内存区时,其他线程不得访问,即独占。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值