查看: 5714|回复: 0

[资料] 【更新】GD32F103+MPU9150 四轴飞行器第一步:9DOF姿态融合

[复制链接]

该用户从未签到

发表于 2015-5-13 10:23:10 | 显示全部楼层 |阅读模式
分享到:
采用AHRSUpdate算法进行姿态融合:
苦恼多日的AHRSUpdate算法问题终于解决了,该算法直接融合9轴数据,包括加速度计、陀螺仪和磁力计,其中0°<yaw<360°, -90°<pitch<+90°, -180°<roll<180°,并且我定义:Yaw北偏西为正,pitch往上为正,roll“右翼”下沉为正。传感器坐标轴:绕y旋转是roll,绕x旋转为pitch,绕z旋转为yaw。代码里只有姿态更新,更新频率接近400Hz,这还只是跑72Mhz频率下的数据,想要跑108M可以自己修改。
说下改进:
1.由于IMUupdate算法只融合了加速度计和陀螺仪的数据,因此我用了互补滤波来融合磁力计以修正偏航角,但是这种互补滤波有个小问题,就是假如定义偏航角的范围是0-360度,那么当机头大概从北偏西1度转到北偏东364度时,机头会经过0度(360度)这个点,那么这时,yaw不会直接1-0-364这么变化,而是会被逆向积分从1-20-180-270-364这么转一圈,这是个不好的现象,实验了半天也没有解决,而AHRSupdate很好的解决了这个问题。
2.放弃了DMP输出,DMP输出会有部分数据丢失现象,输出频率只有200Hz,虽然也够用,但还是太低了,采用I2C直接读取raw数据,做了简单校准,下一步打算边做精确校准边搞PID控制,然后再加上加速度计的平滑滤波和磁力计的椭圆拟合校准,最好还有陀螺仪的自动零漂校准。
3.考虑到电机的转动频率是100Hz以上,因此我采用加速度计的低通滤波(DLPF)为98Hz,可以有效滤掉电机振动带来的影响,结合平滑滤波效果应该不错。
说下AHRSUpdate算法的缺点:
由于把磁力计的数据融合到了pitch和roll里面,那么当磁力计突然收到强磁场干扰时,会导致四轴失控。亲测过拿手机等物品靠近飞控板时,pitch、roll和yaw的数据有明显变化,变化程度跟物品具有的磁场强度成正比,不过应该是有算法可以滤掉这些固定的外部干扰的。
而IMUupdate只把磁力计融合进了yaw,那么即便有强磁场干扰也不会造成全方位的失控。
按照惯例,上代码,代码里有详细注释:
GD32F103CB IMU-AHRSUpdate.rar (620.55 KB, 下载次数: 179)
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /5 下一条



手机版|小黑屋|与非网

GMT+8, 2024-12-24 07:23 , Processed in 0.109789 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.