【问题标题】:MPU9150 data (gyro, mag, acce, e.g 9DoF) to QuaternionMPU9150 数据(陀螺仪、磁力仪、加速器,例如 9DoF)到四元数
【发布时间】:2015-09-15 01:50:54
【问题描述】:

我昨天遇到了一个严重的问题。我正在尝试使用 MPU9150 找到对象的绝对位置。它有陀螺仪、加速度计和磁力计。它们中的每一个都在 3 个轴(x、y、z)上提供信息。 我正在寻找如何将这 9 个数字转换为四元数,稍后我将其转换为欧拉角。 我找到了一些库,但是....我正在寻找解释如何处理来自传感器的原始数据,因为在每个库中,它们处理来自磁力计的数据的方式不同。

为了从传感器获取数据,我正在使用一些库,它只是根据以下代码读取数据:

mx = MPU9150_readSensor(MPU9150_CMPS_XOUT_L,MPU9150_CMPS_XOUT_H);
my = MPU9150_readSensor(MPU9150_CMPS_YOUT_L,MPU9150_CMPS_YOUT_H);
mz = MPU9150_readSensor(MPU9150_CMPS_ZOUT_L,MPU9150_CMPS_ZOUT_H);
gx = (MPU9150_readSensor(MPU9150_GYRO_XOUT_L,MPU9150_GYRO_XOUT_H)/32768.0)*250.0;
gy = (MPU9150_readSensor(MPU9150_GYRO_YOUT_L,MPU9150_GYRO_YOUT_H)/32768.0)*250.0;
gz = (MPU9150_readSensor(MPU9150_GYRO_ZOUT_L,MPU9150_GYRO_ZOUT_H)/32768.0)*250.0;
ax = (MPU9150_readSensor(MPU9150_ACCEL_XOUT_L,MPU9150_ACCEL_XOUT_H)/32768.0)*2.0;
ay = (MPU9150_readSensor(MPU9150_ACCEL_YOUT_L,MPU9150_ACCEL_YOUT_H)/32768.0)*2.0;
az = (MPU9150_readSensor(MPU9150_ACCEL_ZOUT_L,MPU9150_ACCEL_ZOUT_H)/32768.0)*2.0;

加速度以 G 为单位,而不是 m/s/s。

所以使用这段代码我得到了以下数据:

mx = 104.0f; my = 104.0f; mz = 106.0f;
gx = -1.62f; gy = 0.12f; gz = 0.32f;
ax = -0.01f; ay = -0.1f; az = 1.0f;

然后我尝试将物体旋转180度(围绕Z),数据如下:

mx = 116.f; my = 116.f; mz = 115.f;
gx = -1.63f; gy = 0.18f; gz = 0.58f;
ax = -0.02f; ay = -0.06f; az = 1.01f;

【问题讨论】:

  • 可能我没看懂问题,但是根据数据表,姿态变化率已经是欧拉角了。
  • 我错过了这部分文档。能给个链接吗?

标签: algorithm arduino mpu


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 2011-07-15
  • 2014-06-23
  • 1970-01-01
相关资源
最近更新 更多