ROS机器人底盘(22)-IMU和里程计融合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS机器人底盘(22)-IMU和里程计融合相关的知识,希望对你有一定的参考价值。

参考技术A 实际使用中会出现轮子打滑和累计误差的情况,这里单单使用编码器得到里程计会出现一定的偏差,虽然激光雷达会纠正,但一个准确的里程对这个系统还是较为重要

IMU 即为 惯性测量单元,一般包含了三个单轴的加速度计和三个单轴的陀螺仪,简单理解通过加速度二次积分就可以得到位移信息、通过角速度积分就可以得到三个角度,实时要比这个复杂许多

PIBOT 在嵌入式程序提供出原始的数据接口,通过配置可以输出原始 raw_imu topic ,

通过对原始数据处理得到一个 /imu/data_raw 数据类型为 sensor_msgs/Imu ,

从imu得到的数据为一个相对角度(主要使用 yaw , roll 和 pitch 后面不会使用到),使用该角度来替代由编码器计算得到的角度。
这个方法较为简单,出现打滑时候因 yaw 不会受到影响,即使你抬起机器人转动一定的角度,得到的里程也能正确反映出来

官方提供了个扩展的卡尔曼滤波的包 robot_pose_ekf ,robot_pose_ekf开启扩展卡尔曼滤波器生成机器人姿态,支持

再回去看下该包的输出

bringup.lauch 或者 bringup_with_imu.launch 输出的 tf 都为 odom → base_footprint ;发出的里程也都是 odom
bringup_with_imu.launch 轮子的里程 topic 映射为 wheel_odom

下2张图展示了未使用 IMU 和使用 IMU 时候的 tf tree 情况, 可以看到用了一致的 frame

ros机器人用底盘里程计不准怎么改成激光里程计定位

参考技术A 1、启动初始化节点,打开第一个终端。
2、打开机器人的初始化节点(开启控制和ROS通讯的ROS节点)。
3、启动控制节点(可以是键盘/手柄)打开第二个终端。

以上是关于ROS机器人底盘(22)-IMU和里程计融合的主要内容,如果未能解决你的问题,请参考以下文章

ros机器人用底盘里程计不准怎么改成激光里程计定位

ROS实验笔记之——基于Augmented State EKF的多传感器融合(IMU,PnP,VO)

用于传感器融合(IMU 和压力)数据的 Ros 包?

视觉-惯导多传感器融合IMU & ROS

视觉-惯导多传感器融合IMU & ROS

ROS机器人底盘(2)-运动解算