文章

Fusion融合算法使用 Madgwick AHRS

最近又研究起了陀螺仪,以前在电赛方面没有用到很好的角度融合算法,在算法中的四元数看的头疼,恍然间看见github上有MadgwickAHRS的融合算法,便下载下来,测试了一下我的6轴陀螺仪icm20608,效果还不错,记录一下。

下载库

下载Fusion库

下载好后是一个压缩包,进行解压得到源文件。

导入文件

将解压好的文件中的Fusion导入项目中(C/C++是这样,python另行研究):

在项目需要的地方添加头文件:

#include "Fusion/Fusion.h"

例子

话不多说直接上代码:

//头文件中定义
FusionAhrs ahrs;
FusionVector gyroscope,accelerometer;
FusionEuler euler;

//初始化变量
FusionAhrsInitialise(&ahrs);


//在陀螺仪采样结束后执行
gyroscope = {{gyro_x_act,gyro_y_act,gyro_z_act}};  //陀螺仪采样的数据
accelerometer = {{accel_x_act,accel_y_act,accel_z_act}};  //陀螺仪采样的数据
FusionAhrsUpdateNoMagnetometer(&ahrs,gyroscope,accelerometer,0.02f);//采样周期20ms
euler = FusionQuaternionToEuler(FusionAhrsGetQuaternion(&ahrs));
pitch = euler.angle.pitch;
roll = euler.angle.roll;
yaw = euler.angle.yaw;

效果:

其中的pitch、roll非常的稳,yaw在缓慢增加,原因是没有地磁数据,9轴陀螺仪没有暂时不研究。

License:  CC BY 4.0