本帖最后由 zypdd 于 2017-8-28 12:56 编辑
DIY四轴已经很久了,从最开始自己画PCB,自己画机架,到最近直接买的开源的飞控板,从学习MK,MWC,cleanFlight,前前后后走了很长的路,也很少和其他人一起沟通,故借此贴希望能够认识更多的自己开发飞控的同学,一起沟通一起成长。废话不多说,开始进入正题。
话说对四轴来说最核心的问题就是震动。试想如果没有震动,那么四轴就没有这么复杂,我用一个加速度传感器就能知道当前的倾角,而且是准确无误的,那么控制就很简单了,但是现实情是很残酷的,震动不但影响加速度,同样影响角速度(陀螺仪)。震动处理的好坏直接影响到四轴的最终效果。
在机械震动情况下测量的角速度经过kalman滤波后,数据明显有一个干扰数据夹杂在里面,形成如下图所见的往复周期: 由此可以证明kalman滤波能帮助我们找到最解决真实的数据,但是无法过滤掉其中有效的其他频率的数据(后面会有测试数据证明)。 下图中蓝色和粉色表示实时测量的角速度:
局部放大后发现波形是这样的:大概25hz的震动干扰数据,这个震动干扰数据严重的影响内环PID的计算,因此需要解决。
为了解决上图中出现的问题,采用了二阶低通滤波器(参考cleanflight代码),经过软件模拟对比发现:在延迟(30ms)情况下,二阶低通滤波器数据明显更接近真实数据。下图是模拟数据进行测试结果:
上机验证结果图:
Kalman滤波+二阶低通滤波器,蓝色为滤波后的结果,从下图可看到,和软件模拟的结果完全一致,系统能有效的去除震动的干扰。
下图详细展示滤波前数据:后红色为原始测量数据,黄色为kalman滤波结果,蓝色为二阶低通波滤波器结果,效果非常明显
综上:通过低通滤波器能有效的减少震动对角速度的影响(加速度同样的处理即可)
附录: 下图展示了针对同样一个数据源分别做kalman滤波,二阶低通滤波,RC低通滤波的模拟效果:
其中:红色:kalman滤波,蓝色:二阶低通滤波,绿色:RC低通滤波 从上图可知: 1.相同延迟Kalman无法消除震动的影响 2.RC延迟比较大
第一次发帖,以上如有不对的地方请大家轻拍,欢迎沟通,大家可以加我Q:871542082
【本帖为作者原创,如要转载到其他网站,请联系作者】
|