关于磁力计和加速度计的融合以及坐标系的对准

1.关于磁力计的校准,我用了简单的方式,也就是拿着磁力计360度旋转,找到最大最小值,然后求得中心点。网上一堆的。



2.就是磁力计和加速度计的摆放问题。由于我当时的摆放和加速度计只有Y轴相同,X轴反向,当你用旋转矩阵右乘以后,发现不对。

目前网上并没有人说这个x,y,z的摆放会对磁力计的计算的影响。也可能是我没找到把

关于磁力计和加速度计的融合以及坐标系的对准_第1张图片


第一种假设:绕X轴旋转20度,得到的姿态角是 pitch = -20.  roll = 0;同时得到Pitch = 0.roll = 0时刻的磁力计的值。如下。这个是我自己算出来的结果

mag.world_mx= mag.mx*fast_cos(angle.roll)+mag.my*fast_sin(-angle.pitch)*fast_sin(angle.roll)

+mag.mz*fast_sin(angle.roll)*fast_cos(-angle.pitch);
  mag.world_my=mag.my *fast_cos(-angle.pitch)-mag.mz*fast_sin(-angle.pitch);

关于磁力计和加速度计的融合以及坐标系的对准_第2张图片关于磁力计和加速度计的融合以及坐标系的对准_第3张图片




结论,发现旋转后的值和水平放的值是差不多的。


第二种情况,旋转和情况一相同,从水平旋转到pitch = -20.roll = 0;  但是严格按照旋转矩阵来计算。代码如下。

mag.world_mx= mag.mx*fast_cos(angle.roll)+mag.my*fast_sin(angle.pitch)*fast_sin(angle.roll)

+mag.mz*fast_sin(angle.roll)*fast_cos(angle.pitch);
  mag.world_my=mag.my *fast_cos(angle.pitch)-mag.mz*fast_sin(angle.pitch);

关于磁力计和加速度计的融合以及坐标系的对准_第4张图片关于磁力计和加速度计的融合以及坐标系的对准_第5张图片


可见,mx,my旋转到world_mx,world_my以后,这个值相差就挺大的了。




综上所述,关于坐标系的对其,是非常有必要的。


推荐参考《Implementing a Tilt-Compensated eCompass using Accelerometer and Magnetometer Sensors》










你可能感兴趣的:(imu,磁力计,磁力计加速度,指南针,坐标对齐,AK8963的应用)