5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: BiquadRC+FIR2滤波器调试方法 [打印本页]

作者: 飞鸟翌    时间: 2018-3-31 21:40
标题: BiquadRC+FIR2滤波器调试方法
本帖最后由 飞鸟翌 于 2018-3-31 21:42 编辑

Betaflight3.3.0的一个重大更新,就是使用了新的Stage2滤波器,有个正式名字叫做BiquadRC+FIR2滤波器,这个名字实在太长,下文用BQRC代替吧。
(, 下载次数: 34)

Betaflight开发者认为这个滤波器代码在实际使用上,和kalman滤波器是等效的。实际上,我觉得以我这种乌龟反应速度,可能也真的感觉不出来。我在同一架飞机上,刷过RS2K的kalman滤波器Butterflight3.4.2和Betaflight3.3.0,所有PID参数默认,配置相同,说真的,飞不出区别,但是能听出掉头转弯的声音有区别……仅此而已。

当然如果飞的很快,非常快,应该能感觉到这之中的不同。

(, 下载次数: 29)
如果你是初学者,还没有太多的飞行经验,Betaflight3.3.0的默认参数已经非常优秀了,放心去飞,等获得更多飞行经验知道飞行状态好坏了以后,再来尝试调整参数。

(, 下载次数: 31)

如果你是休闲飞玩家,那么飞行体验才是第一位的,请保持一切设定默认,少折腾飞机,把更多的时间花在体验飞行乐趣上。

开始吧
首先,你得有块F4飞控,F3因为存储空间的关系,放不下这个滤波器的代码了,当然F7更加没问题嗯。没有打开BiquadRC+FIR2滤波器的话,理论上3.3.0和3.2.5的飞行性能是一样的,3.3.0就是增加了很多新的功能(详情查阅公众号历史信息里面的更新说明)。这个大家可以自己考虑是否更新。

=====我想就这样简简单单=======
下面的简单设定献给没有太多时间了解过滤器原理但是又想尝试一下的朋友们。
(, 下载次数: 40)
进入PID调参,点击过滤器设置

(, 下载次数: 30)
按图中红圈设置:
1:D-term低通滤波器为PT1
2:关闭启用陀螺仪陷波滤波器1
3:关闭启用陀螺仪陷波滤波器2

(, 下载次数: 27)
点击保存!

(, 下载次数: 28)
然后在CLi命令行中,复制粘贴以下命令

set gyro_stage2_lowpass_hz =90
save

恭喜你!设定成功!成功开启BiquadRC+FIR2过滤器,获得了和kalman滤波器一样的效果!现在出去爽飞吧!
















=====详细设定和调参过程=====
(, 下载次数: 25)
首先,刷写固件到3.3.0版本

(, 下载次数: 21)
3月2日以后发布的就是3.3.0正式版了,之前的RC版本,也会显示3.3.0而不会带RC后缀,通过看固件发布时间就可以知道是具体的哪个版本了。

进入PID设置里面的,过滤器设置

(, 下载次数: 32)
首先把D-term滤波器改为PT1

注:PT1是弱滤波,低延迟。Biquad(这个Biquad不是BiquadRC+FIR2)是强滤波,较高延迟。目前大部分机架噪声相对较低,打开PT1电机一般都不会过热。如果打开PT1电机热得厉害,那么只能用回Biquad。

(, 下载次数: 36)
关闭两个低通陷波器

(上面这些其实只是打开动态滤波的准备工作)
(, 下载次数: 39)
关键点-很重要:
1:如果你使用的是8K/4K的陀螺仪采样率
把第一个stage的陀螺仪软件低通滤波器,改为0 (这一项我没有经过测试,没有合适的飞机,有机会测试的同学可以在下面留言反馈)
这个主要是考虑6000系列的陀螺仪,噪声比较低,可以把所有噪声,都交给stage2滤波器来滤波。

2:如果你使用的是32K/16K陀螺仪采样率,保持第一个陀螺仪软件低通滤波器是90不变。(这一项我已经使用F7飞控测试通过)
这个主要是考虑ICM20602系列陀螺仪噪声比较高,这样设定相当于还是保留了老的1级软件滤波,比较保守。

点击SAVE保存


关键点!打开stage2滤波器代替原来的低通滤波器
(, 下载次数: 27)
打开CLi命令行

(, 下载次数: 36)
输入get stage2,获得关于stage2滤波器的命令行,当然如果你能背下来命令这一步可以省去,get命令是一个搜索命令,只要你知道这个命令的一部分,比如关于gyro(陀螺仪的),也可以输入get gyro来获得相关命令,get rate,get pid都是一样的用法。

(, 下载次数: 33)
ok,这是我们要搜索的命令 gyro_stage2_lowpass_hz 单位是Hz,范围从0~16000
(, 下载次数: 20)
输入 set gyro_stage2_lowpass_hz =90,注意空格
set[空格]gyto_stage2_lowpass_hz[空格]=90[回车]

(, 下载次数: 28)
我们可以再用一遍get gyro 命令,来看看我们的设置有没有生效。


(, 下载次数: 24)
别忘记输入save[回车]进行保存。

到此为止,我们就用了BiquadRC+FIR2这个stage2滤波器,代替了原来的陀螺仪低通滤波器,启用了BiquadRC+FIR2这个滤波器。这里做的仅仅只是更换,没有做任何优化设置。


======下面是一些优化配置=======
(, 下载次数: 16)
在这里,我还是建议打开动态滤波,其余Airmode是否永久启用,反重力等等,请根据自己操作习惯来开启。

(, 下载次数: 22)
到之前的配置页面,打开陀螺仪配置。如果你是MPU6000系列的陀螺仪,那么最大可以支持8k的陀螺仪采样率。8K/8K情况下,使用BiquadRC+FIR2滤波器已经可以带来不错的性能提升(好歹是类似kalman算法)。

(, 下载次数: 26)
对于使用ICM206XX系列陀螺仪的同学来说,可以划开这个滑块,然后设定陀螺仪更新速率到32k。

PID循环时间,建议设定到16K,如果CPU占用率太高,使用8K的looptime也是没有什么太大问题的。

(, 下载次数: 21)
我们需要关注一下CPU占用率,建议保持在60~70%以下,不建议超过80%。

(, 下载次数: 18)
什么!我已经100%了啊,怎么搞啊

可以看到F4的性能极限了吧,我们有两个手段来解决这个问题。

1:超频
(, 下载次数: 17)
回到CLi命令行,输入get overclock

(, 下载次数: 17)
出现了CPU超频的选项,这里F4默认运行在168MHz下,我们可以小小的超一把,设定工作频率到192MHz,老外测试报告说还是比较稳定,但是到216Mhz以上就不做保证了。

(, 下载次数: 14)
输入 set cpu_overclock =192 回车,注意空格
set[空格]cpu_overclock[空格]=192

然后输入Save 保存

2:限制CPU开销
(, 下载次数: 21)
在配置页面下
(, 下载次数: 27)
把电调协议换成Multishot,这样可以节约大约10%上下的CPU资源。如果你确实用不到什么反乌龟模式啊,电调BB叫之类的,电调也不是32位没法开Dshot1200的话,我觉得Multishot其实也是不错的选择(Raceflightone就是这么干的)。

这里要注意,因为Multishot是模拟协议,由于我们的PIDlooptime不是32k,所以这里要强制电机的PWM频率,到32000Hz,充分发挥电调的性能。
如果你不强制的话,电调的运行频率是等同于Looptime的。
提示:Multishot是模拟协议!注意进电机页面做一次油门行程同步!
其实动态滤波是最消耗资源的,大约会占用30%左右的CPU资源,但是动态滤波的滤波效果实在是太变态了,效果太棒了,用了动态滤波基本可以和手动滤波说再见了 ,所以我强烈建议保留动态滤波。

========基础调试方法=======
去飞去飞啊,记得带上电脑或者另外啥能运行调参软件的东西。
飞一圈,摸一摸你的电机是不是过热。

注意:所谓的过热,是指你的手摸上去,“哎呀好烫啊”马上缩回来,这个叫过热。如果手还能摸的上去,那叫发热。

如果你的电机只是发热,并且温度并不高。

(, 下载次数: 22)
那么可以把最后一个D term陷波器也关掉,获得最低的延迟。

(, 下载次数: 23)
如果你的电机已经过热,那么请参照动态滤波调参的那个章节,老老实实的打开陀螺仪陷波器。

至此,BiquadRC+FIR2滤波器已经调试完毕,接下来可以进行PID,Rate调参了。


=======更加进阶的调参=====
如果你希望进一步折腾自己不好好去飞,那么可以在以上基础上,可以进一步提高Stage2低通滤波器的频率,把更多的噪声交给速度较快的BiquadRC+FIR2去处理,获得更低的延迟。

通过Set gyro_stage2_lowpass_hz 这个参数,从90调整到100,120,基本上是要把低通滤波放到电机噪声刚刚要起来的这个频率。当然另外一种做法,是放到正好在电机频率的尖峰位置。

这种更为精细的调整,就需要使用BBlog来进行频域分析了,这个比较复杂,这里就不做展开,设定到90Hz,已经能覆盖到绝大多数的人的使用需求了。

======个人经验的分享=======

是否保留D-Term陷波器
还是留一个陷波器吧,个人感觉动态滤波不一定能够完全处理掉所有的噪声,所以留着这个Dterm滤波器来再处理一下D值的波形吧。

这个,根据自己飞机的电机,桨,机架情况灵活判断吧,并不是打开就最好,或者关掉就最好,注意观察你的电机发热就行。
(, 下载次数: 22)
像我这种桨炸了掰一掰继续用,电机只要还能转就继续用,机臂有裂缝了502伺候一下继续服役,还是留着这个陷波器吧。

处理ICM206XX陀螺仪在低温或者32K采样率下的不稳定
在陀螺仪处于低温(低于20℃或者干脆0℃以下时),陀螺仪的表现会非常糟糕。此时你插上电池以后,在电调的启动音过后,飞控自检通过的“哔哔哔”三声就是出不来。另外ICM206XX在32k以下的噪声远远要高于MPU6000系列(MPU6000系列是出了名的耐震低噪声,不加减震都不会出震动产生的抽风问题)

(, 下载次数: 19)
在你打开解锁的时候,OSD会出现这个提示,或者BB响会叫(12次短滴滴,说实话不太好数,还是看OSD吧)

解决办法:
1:预热飞机,在汽车暖气出风口吹着。
2:进入CLi命令行,输入
set moron_threshold =48~200
save

moronthreshold是陀螺仪的初始化健康值,越低越严格,越高越宽松。默认值是48,如果你的飞机插上电池以后不能自检通过,但是这个状态下插上调参软件(记得拆下螺旋桨!)可以解锁,那么多半可以判定是陀螺仪的噪声问题。你可以尝试适当调高,从100,150,甚至到最高200。如果设定到200还不过,那么就换一块飞控,或者降低陀螺仪采样率吧,你的陀螺仪已经扛不住了。

飞控减震问题:
(, 下载次数: 18)
这是我的飞机,使用MatekF722-STD 飞控,减震比较简单,就是简单的加了3个O型圈把飞控垫起来。


(, 下载次数: 13)
嗯,在飞控上面又挂了一个XSR接收机,几个关键参数,陀螺仪运行在32k,PID的looptime是16K,开了动态滤波,使用multishot,moron_threshold=200(天气冷,陀螺仪自检总是不过,无奈设定到了 200)。
再加了一个松下金字FM极品电容。

还有我的电机忘记做减震了,就装了一个电机保护座以后直接拧在碳板上的。在这个状态下,没有遇到飞控受震动抽疯的问题。

F7系列飞控的CPU高占用率问题
(, 下载次数: 21)
这个问题是由于通讯协议没有优化造成的,现在还在解决,据说快了,最迟会在3.4.0正式版解决,早一点的话会在之前的维护更新中解决。




(, 下载次数: 18)
BiquadRC+FIR2滤波器是个新东西,相关的讨论还在继续展开,本文仅仅针对到现在为止获得的信息,实际上比较有限,也可能会有错误。后续有更新或者有更多信息的话会继续展开。

大家有问题,或者有指正的地方,也请在下面留言,尽可能给我一些反馈。

近期公众号会推出有关kalman滤波器的设定,调参。butterflight(黄油固件)调参设定等等相关内容也在制作当中,请大家持续关注我们这个公众号。

注意飞行安全,祝大家飞的开心!

注:本文中的滤波设定部分来自YouTube UP主,UAV tech的教学视频,有兴趣的可以去看看。





作者: 兔蛋    时间: 2018-3-31 22:01
没毛病 飞鸟

作者: XSJFYZS    时间: 2018-3-31 22:19
公众号呢?

作者: 飞不高的小小鸟    时间: 2018-4-1 01:24
学习。

作者: 武杰杰    时间: 2018-4-1 08:55
一直收藏起来

作者: hcc    时间: 2018-4-1 08:58
学习!!!

作者: a7945685213    时间: 2018-4-6 23:58
什么公众号





欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://5imx.com./) Powered by Discuz! X3.3