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

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



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

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



第一种假设:绕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);





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


第二种情况,旋转和情况一相同,从水平旋转到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);



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




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


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










  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
九轴融合算法一般包括以下步骤: 1. 加速度计和陀螺仪的数据预处理 加速度计和陀螺仪的数据通常需要进行预处理,包括去除偏移量、校准和滤波等操作。去除偏移量可以通过采集一段时间的静态数据并求平均值来实现。校准可以根据厂家提供的校准方法进行。滤波可以采用低通滤波器进行。 2. 计算姿态角 通过加速度计和陀螺仪的数据,可以计算出当前的姿态角,包括俯仰角、横滚角和偏航角。其中俯仰角和横滚角可以根据加速度计的数据计算,偏航角可以根据陀螺仪的数据计算。 3. 磁力计数据的处理 磁力计数据需要进行校准和滤波,同样可以采用厂家提供的校准方法和低通滤波器。 4. 磁力计姿态角的计算 通过磁力计的数据可以计算出当前的偏航角。不过磁力计的数据容易受到外部磁场的干扰,因此需要进行磁场校准。 5. 九轴融合算法 九轴融合算法通常采用卡尔曼滤波算法实现。该算法可以将加速度计、陀螺仪和磁力计的数据进行融合,得到更加准确的姿态角。具体实现可以参考相关资料或者开源代码。 在STM32上实现九轴融合算法需要采集传感器数据,并进行预处理、姿态角计算和融合算法实现。可以采用STM32的ADC模块采集传感器数据,使用定时器实现时间计数,并使用数学库实现姿态角计算和卡尔曼滤波算法。同时需要注意调试和校准过程中的精度和稳定性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值