IMU与里程计
1.里程计(轮式里程计odometry)
1.1在ROS当中,里程计是一种利用从移动传感器获得的数据来估计物体位置随时间的变化而改变的方法。
1.2而在ROS当中里程计信息可以分为两个部分:一个是位姿(位置和姿态),一个是速度(线速度和角速度)。
数据格式:
"/odom" nav_msgs/Odometry(描述自由空间中位置、速度的估计值)
std_msgs/Header header
uint32 seq
time stamp
string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose(协方差位姿)
geometry_msgs/Pose pose(pose.msg位姿)
geometry_msgs/Point position(Point空间中点的位置)
float64 x
float64 y
float64 z
geometry_msgs/Quaternion orientation(四元数表示旋转,九个轴数据融合得到的姿态角(默认用四元数表示,当然可以自行将四元数转换成欧拉角表示)
float64 x
float64 y
float64 z
float64 w
float64[36] covariance
geometry_msgs/TwistWithCovariance twist(协方差速度,定义了包含不确定性的速度量)
geometry_msgs/Twist twist(速度)
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
float64[36] covariance?
1.3误差处理
PID整定
2.IMU
1.1数据获取:IMU即为 惯性测量单元,一般包含了三个单轴的加速度计、陀螺仪和磁力计,简单理解通过加速度二次积分就可以得到位移信息、通过角速度积分就可以得到三个角度,实时要比这个复杂许多
加速度计、陀螺仪和磁力计的介绍:(8条消息) 加速度计 陀螺仪 磁力计_夏中伟的博客-CSDN博客
(8条消息) IMU中加速度计、陀螺仪、磁力计的工作原理_strongerHuang-CSDN博客
2.2数据格式:
“/imu” sensor_msgs/Imu.msg:
std_msgs/Header headeruint32 seq
time stamp
string frame_id
geometry_msgs/Quaternion orientation(四元数表示旋转)
float64 x
float64 y
float64 z
float64 w
float64[9] orientation_covariance
geometry_msgs/Vector3 angular_velocity(角速度)
float64 x
float64 y
float64 z
float64[9] angular_velocity_covariance
geometry_msgs/Vector3 linear_acceleration(线加速度)
float64 x
float64 y
float64 z
float64[9] linear_acceleration_covariance
1.2误差分析
Imu是一种高灵敏度的传感器,由于制造过程的物理因素,导致 IMU 惯性测量单元实际的坐标轴与理想的坐标轴之间会有一定的偏差,进而导致imu的噪声、尺度误差和轴偏差。出于这一点,需要对采集到的数据进行校准(内部标定),对这些误差进行补偿。
Imu校准后的九轴数据进行数据融合的过程中,由于加速度计和磁力计的高频噪声和陀螺仪的低频噪声,会导致解算姿态出现较大误差。对此,需要选择合适的九轴数据融合算法。常用的九轴数据融合算法包括:高低通互补滤波、扩展卡尔曼滤波 EKF、 Mahony 滤波。在实际情况中根据不同的用途进行选择