IMU 计算 yaw,pitch 和roll

1 篇文章 0 订阅

IMU 计算 yaw,pitch 和roll

IMU是机器人领域中一种很重要的传感器,可以用于许多不同的用途。在,视觉slam,机器人导航,VR头盔中都有它的身影。
不管要搞VSLAM还是机器人导航,我TM都绕不过这个传感器。所以,这篇文章主要是想记录一下看到的一下IMU的资料,以防自己以后忘记了。
由于在市面上IMU的价格幅度变化很大,每个IMU也有很大的不同。这篇blog的IMU默认为是拥有9DOF的IMU, 比如MPU6050。
下面开始进入正文了哈。

一般情况下,IMU有三个部分组成:

  • 加速度计(Accelerometer)
  • 陀螺仪 (Gyroscope)
  • 磁力计(Magnetometer)
加速度计(Accelerometer)

加速度计这个东西告诉你,当前时刻在x轴,y轴和z轴上面的加速度是多少? 这个时候如果你把一个IMU放在一个平面上不动,那个它只会收到重力的影响,当然这里不考虑噪声的影响。
根据高中的力学基础我们可以知道,如果重力是指向地面的,并且和地面垂直。所以我们可以得出,IMU的三个轴上面的加速度的和也一定指向地面且大小为恒定的地球的重力。
然后根据x,y,z轴之间的关系,可以同步算出IMU的roll 和pitch的值是多少?
p i t c h = 180 ∗ a t a n 2 ( a c c e l X , s q r t ( a c c e l Y ∗ a c c e l Y + a c c e l Z ∗ a c c e l Z ) ) / P I ; r o l l = 180 ∗ a t a n 2 ( a c c e l Y , s q r t ( a c c e l X ∗ a c c e l X + a c c e l Z ∗ a c c e l Z ) ) / P I ; pitch = 180 * atan2(accelX, sqrt(accelY*accelY + accelZ*accelZ))/PI; \\ roll = 180 * atan2(accelY, sqrt(accelX*accelX + accelZ*accelZ))/PI; pitch=180atan2(accelX,sqrt(accelYaccelY+accelZaccelZ))/PI;roll=180atan2(accelY,sqrt(accelXaccelX+accelZaccelZ))/PI;

陀螺仪 (gyroscope)

陀螺仪这个东西可以告诉你,当前时刻x轴,y轴和z轴的角速度是多少?知道了角速度之后,我们就可以对角速度进行积分,就可以算出IMU在一定时间内的roll, pitch和yaw 值,是不是很爽? 太天真,真实的情况是,陀螺仪的数据一般有很大的误差,所以通常是不用陀螺仪得到IMU的roll,pitch和yaw值的。

那么问题来了,IMU的yaw 值一般是怎么计算的呢?
这个就要引出磁力计这个东西了。

磁力计 (Magnetometer)

磁力计这个东西它可以感受到地球的磁场,用它可以帮助我们找到自己的朝向,有点像指南针,罗盘之类的东西。然后呢,它可以计算IMU的yaw值(其实公式我TM也不懂)
m a g x = m a g R e a d X ∗ c o s ( p i t c h ) + m a g R e a d Y ∗ s i n ( r o l l ) ∗ s i n ( p i t c h ) + m a g R e a d Z ∗ c o s ( r o l l ) ∗ s i n ( p i t c h ) mag_x = magRead_X*cos(pitch) + magRead_Y*sin(roll)*sin(pitch) + magRead_Z*cos(roll)*sin(pitch) magx=magReadXcos(pitch)+magReadYsin(roll)sin(pitch)+magReadZcos(roll)sin(pitch)
m a g y = m a g R e a d Y ∗ c o s ( r o l l ) − m a g R e a d Z ∗ s i n ( r o l l ) mag_y = magRead_Y * cos(roll) - magRead_Z * sin(roll) magy=magReadYcos(roll)magReadZsin(roll)
y a w = 180 ∗ a t a n 2 ( − m a g y , m a g x ) / π ; yaw = 180 * atan2(-mag_y,mag_x)/ \pi; yaw=180atan2(magy,magx)/π;

总结一下:

IMU 部件作用备注
加速度计告诉我们当前时刻x轴,y轴和z轴的加速度可以利用加速度计的读数计算imu的roll和pitch
陀螺仪告诉我们当前时刻x轴,y轴和z轴的角速度通常数值不准
磁力计感受地球的磁场,告诉我们当前的朝向可以利用它的数值计算imu的yaw角

这样的话,我们就可以利用IMU计算出它的roll,pitch和yaw了。

  • 20
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值