cartographer位姿估计整理

cartographer位姿估计整理

代码所在目录:

cartographer/mapping/pose_extraplator.cc /.h中

代码整体框架:

cartographer在扫描匹配阶段(realtimescanmatcher Ceres 非线性优化)之前,使用 优化后的位姿、IMU、码盘
三个数据源进行融合,估计出最新时刻的位姿,用来作为下次非线性优化的初值。下面,针对这部分数据融合模块进行分析整理,如下图红圈部分。

代码入口:

PoseExtrapolator的构造函数 VS 通过IMU初始化InitializeWithImu方法。 AddImuData

cartographer/mapping/internal/2d/local_trajectory_build.cc 局部位姿估计中

AddImuData和AddOdometryData 增加Imu和Odom数据

代码解析:

1.数据源:

AddPose中传入的pose,保存在timed_pose_queue_中

|

获取最新优化的位姿并删除历史数据

—|---

|

由最新优化的位姿解算出角速度和线速度(angular_velocity_from_poses_、linear_velocity_from_poses_)

|

使用IMU数据进行姿态估计(imu_tracker_),并将此时估计出的姿态用于计算 码盘线速度 和最新估计姿态
的初值(odometry_imu_tracker_、extrapolation_imu_tracker_)

|

删除最新优化的位姿时刻之前的码盘和IMU数据

AddImuData中传入的imu_data,保存在imu_data_中

|

获取IMU数据

—|---

|

删除 最新优化的位姿时刻 之前的IMU数据

AddOdometryData传入的odometry_data,保存在odometry_data_中

|

获取码盘数据

—|---

|

删除最新优化的位姿时刻之前的码盘数据

|

由码盘数据解算出角速度和线速度(angular_velocity_from_odometry_、linear_velocity_from_odometry_)

2.数据融合

ExtrapolatePose

|

使用码盘计算出的线速度进行位置估计,使用IMU计算出的角度增量进行姿态估计

—|---

AdvanceImuTracker

|

使用IMU的陀螺仪和加速度计进行姿态估计,估计方法是比较简单的互补滤波算法。用此函数进行的姿态估计共有三个,分别是
imu_tracker_、odometry_imu_tracker_和extrapolation_imu_tracker_

|

imu_tracker_

|

直接使用IMU数据进行,只进行一次初始化

—|---

odometry_imu_tracker_

|

表示AddPose到AddOdometryData之间(即 最新优化的位姿时刻 到 最新码盘数据时刻 之间的时间段)的姿态变化

extrapolation_imu_tracker_

|

表示AddPose到ExtrapolatePose之间(即 最新优化的位姿时刻 到 最新估计位姿时刻 之间的时间段)的姿态变化

ExtrapolatePose

|

获取融合完成的位姿数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值