Cartographer位姿估计器
pose_extrapolator重要变量
姿态预测相关:在AddPose中更新
- imu_tracker_: 只在添加位姿时更新,用于保存添加校准位姿时的姿态
- odometry_imu_tracker_: 在添加位姿时更新,用于根据里程计数据计算线速度
- extrapolation_imu_tracker_: 只在添加位姿时更新,用于更新时的姿态预测
通过里程计计算线速度和角速度:
- linear_velocity_from_odometry_: 只在添加里程计数据时更新,用于位姿预测时的平移量预测_
- angular_velocity_from_poses_: 只在添加里程计数据时更新,用于不使用imu数据时的角速度更新
通过pose计算线速度和角速度
- linear_velocity_from_poses_: 只在添加位姿时更新,用于位姿预测时不适用里程计数据时的平移量预_
- angula_velocity_from_poses: 只在添加位姿时更新,用于不使用里程计数据时的角速度更新
传感器数据队列的个数
imu_date_: 队列数据的个数最少是1
odometry_data_: 队列数据的个数最少是2
time_pose_queue_: 位姿队列数据的个数最少是2
总结
预测平移时: 有里程计就用里程计的线速度,没有里程计就用pose计算的线速度进行预测
预测姿态时: 有IMU就用IMU的角速度,没有IMU时,有里程计就用里程计计算出的角速度,没有里程计的时候就用pose计算的角速度进行预测
预测都是相对的值,要在最后加上一个pose的位姿
可能有的问题
1.计算pose的线速度与角速度时,是采用数据队列的开始和末尾的两个数据进行计算的。假如pose队列时间较长,速度不准
2.计算里程计的线速度和角速度时,采用数据队列的开始和末尾的两个数据进行计算的
3.使用里程计,不使用IMU时,计算里程计的线速度方向和姿态的预测时,用的是里程计数据队列开始和末尾的两个数据的平均角速度计算的,时间长了就不准
不使用里程计不使用IMU时,用的是pose数据队列开始和末尾的2个数据的平均角速度计算的,时间长了就不准
添加位姿时,没有用pose的姿态对imu_tracker进行校准,也没有对整体的位姿预测器进行校准,只计算了pose的线速度与角速度
cartographer认为位姿推测器推测出来的位姿具有一定的准确性,将其加入到了后端优化之中