MPU9150数据(陀螺仪、磁、加速度,例如9DoF)到四元数



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

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

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为单位。

因此,使用此代码我获得以下数据:

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;

希望这能有所帮助,

这并不简单。

https://learn.adafruit.com/ahrs-for-adafruits-9-dof-10-dof-breakout/sensor-fusion-algorithms

相关内容

  • 没有找到相关文章

最新更新