5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 15349|回复: 53
打印 上一主题 下一主题

(翻译)BetaFlight的滤波详解

  [复制链接]
跳转到指定楼层
楼主
发表于 2017-7-13 16:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Flameout 于 2017-7-13 16:55 编辑

貌似现在飞穿越机的大都是关注PID,对滤波没什么关注。然而,PID运算是建立在滤波后的信号之上。如果滤波没调好,参与运算的信息质量不高,对PID也会有影响。打个比方,滤波就像是一辆车的转向系统,PID是司机的操控。如果车子松松垮垮,再高手的司机,都不见得开的多好。滤波调好了,可以如虎添翼一般,让飞机更加顺手。下面就是BF官方的滤波简介,我把它翻译成中文了。
太长不看版:
从类型上分,滤波分为低通滤波和notch滤波。低通滤波是基础,控制整体噪音情况;notch是附加的,用于消除某个特定频率的噪音。
从信号来源上分,有陀螺仪滤波和D滤波。陀螺仪滤波负责处理机械震动,D滤波处理PID运算中D带来的噪音。
所以,他们组合起来,一共有4种:陀螺仪低通、D低通、陀螺仪notch、D notch。
低通滤波的强弱,由设定的频率决定。频率低,滤波就强,可以滤掉更多噪音,同时会损失一些有用的信号。频率高则反之,进入PID运算的信号更多,但夹杂了比较多的噪音。默认频率比较低,可以适当调高。
Notch滤波负责消除特定频率的噪音,只关系到一小个范围,情况好可以不开。
黑盒子曲线,就是打开文件后看得到东西,可以拖动查看。曲线设置在右下角,可以选择某个轴(横滚、俯仰、方向),单独看它们的PID运算情况。
频谱图是点击某个曲线(如PID_D【roll】,就是看横滚轴D运算的频谱),调出来的频率-噪音幅度的图像。

所以,滤波怎么调?低通滤要波刚好滤掉噪音,留下有用的信号。一般会比默认的高一些。噪音程度要看频谱图,上图的控制的还行。Notch也是看频谱,如果图像中间有一片很高的东西,就要靠notch来消除。他会用红字标出峰值的频率,也就是需要的notch中心。那个峰左边“山脚”对应频率就是需要的截止值。陀螺仪、D的频谱要和它们的notch对应,不要弄错了。
默认滤波设置变化
在2.7版本以前,默认的滤波强度是比较小的,目的是为了达到比较好的飞行效果。你可能在用新固件后发现,你的飞机变得比较抽风、难飞。这是因为你的飞机震动引发的噪音没有被滤波除掉,而进入了PID循环。
Boris说:
可能是你的设置噪音太大,要调一调滤波。下面是一些建议。滤波越强,噪音越小,但是会削弱PID的控制效果,在桨洗时稳定性更差(桨洗就是滚转急停时的回弹,拖泥带水的感觉)。尽量用弱一点的D滤波可以改善桨洗。
·        默认设置:
·        gyro_lowpass = 100
·        dterm_lowpass = 110
·        gyro_lpf = OFF
·        轻微噪音:
·        gyro_lowpass = 80
·        dterm_lowpass = 100
·        gyro_lpf = OFF
·        严重噪音:
·        gyro_lowpass = 50
·        dterm_lowpass = 100
·        gyro_lpf = 188HZ
·        2.6.1默认:
·        gyro_lowpass = 80
·        dterm_lowpass = 70
·        gyro_lpf = OFF
          (译者注:貌似set gyro_lpf=188hz后只能开双1k)
举个例子:
下面是一个陀螺仪(上面)和PID运算结果(下面)的图像,用的是2.8默认设置。视图比例缩小到10%,可以很容易的看出他的噪音(很尖锐的曲线)。没调滤波,这飞机基本没法飞。
放大来看:
Ctzsnooze说:
理想的滤波可以把频率调得很高,马达不烫就OK。几乎没人说得清怎么样才算高。
但是要注意,马达有点暖很正常。所以要知道D滤波频率和陀螺仪滤波频率怎么调。这只能从实践中出真理。当知道了D滤波频率的最佳值,也就是马达最凉的那个值,这就对了,把他和陀螺仪滤波频率保持一样的比例。如果马达还是热,就把他们都减小20%。如果够凉了,你想要更干脆直接的操控感觉,就都增加20%,注意在发热和操控之间找到平衡。
如果真的想分析这些,要用黑盒子。马达发热可能是因为飞得太暴力,也可能PID根本没有问题,没有什么震荡。如果是这种情况,甚至可以不用黑盒子,把D滤波频率和陀螺仪滤波频率按固定的比例放大,直到马达明显发热或者产生噪音,然后退回来一步。如果还是有问题,就再慢慢分析,直到找到最佳值。
注意,如果P或者D值变了,滤波可能还要调。
按我的经验,D滤波频率设置90,陀螺仪设置70,就算用最烂的桨,最软的机架,最渣的马达,都可以让马达飞不热。
最好的方法是把notch滤波都关掉,然后进黑盒子看陀螺仪的曲线。如果线条很尖锐,这就是马达有噪音,这样就要用notch滤波把他消掉。如果噪音很乱,没有明显的波峰,就要biquad滤波、甚至陀螺仪的硬件低通滤波一起上阵了。
如果留着尖锐的波峰,并不是什么好事。当陀螺仪曲线干净了,就去看D噪音,看看他要怎么滤波。如果也有个峰,就要用notch滤波。但如果陀螺仪已经用notch了,就可以不在D上再用。
“如果看到陀螺仪和D上都有明显的峰,要怎么办?”
这个要看情况。如果陀螺仪的波峰很大,就可能影响到P的运算,这时候用D滤波是没用的,要用陀螺仪的notch才行。另一方面,如果陀螺仪的波峰不明显,但是D上的很明显,就要在D上用notch了。
没有黑盒子,就基本没法调。可以碰运气盲调,看看马达热不热,噪音大不大,也许会有用。但是详细调还是要黑盒子的。
我最近帮别人看了一下,他在陀螺仪和D上都用了PT1滤波,只有D用了notch滤波。
黑盒子显示D的中心并没有噪音,他开的D notch并没有什么卵用。。。
要记住,尽量不要盲调notch滤波。它要看黑盒子来调,不然基本没有什么卵用。如果真要盲调,先关掉频率最低的那个,它对飞行影响最大。比较高的频率,比如中心300截止200(下文写成300/200),就会比低频率, 200/140这样的影响更小。
如果把PID都设成2(几乎是关掉了),在黑盒子看得到曲线就是没受到PID参与的。但是要把飞机稳稳地抓好,注意安全。如果把曲线放大来看,就可以看到震动噪音进到PID循环里。
如果只把P加上去,稳稳地抓着(注意安全),可以看到噪音对P运算的影响比较小。就算用PT1,不开notch,P的效果也不怎么受到噪音的影响,对噪音的反馈基本看不到。
但如果加的是D,事情就变得有趣了。如果陀螺仪用PT1滤波,D就会把一大堆噪音输入给马达,哪怕D用的是biquad滤波。这是个了解P和D怎么影响噪音的巧妙的方法。
总之,我觉得应该要把D滤波调得比陀螺仪滤波更强有力。陀螺仪滤波可以弱一些,但是这会注入更多的噪音给D,把情况搞得更差。如果D滤波更强,就可以用更少的陀螺仪滤波,也可能飞的更好。
PS-我也发现了当机架震动,或者桨很乜,可能在某个油门值会引起共振,继续加油门就好了。开始时很抽,声音很难听,飞机很抖。如果还在地上,有点想飞起来的冲动。继续给油门,什么事情就都没了。马达发热也很快。在我这个飞机上,大概发生在145hz左右。我给他加了一个notch滤波,一切都好了。(关于共振的讨论详见下文)
3.1.7默认参数有哪些改变?
Boris的回答:
好多人觉得bf的默认D值太保守,就把他改了。
如果一个个把默认滤波关掉,再调好其他设置,可能效果不错。现在许多人都做了飞控减震(加橡胶球什么的),所以关掉滤波还是妥妥的。默认的参数是为消除中等大小噪音设计的。
我觉得最好的步骤是这样:
Set d_lowpass_type=PT1,这是第一步,如果飞的还好就继续
关掉notch 1,(把频率设成0)
如果还好,就关掉notch 2
如果依然没有问题,甚至可以关掉D notch
这样就差不多了。最干脆直接的操控,很容易调参,也没有桨洗。
bf的默认滤波,就是要让新手也可以把飞机飞起来,而不会拉烟。
D的低通滤波器很重要,千万不要关!哪怕按前面的来调都没问题也不行。
我觉得,如果你一定要让手感更干净,可以把滤波尽量关了。给飞控减震是个好方法,也不妨碍什么。
有没有滤波,最大的区别在于陀螺仪数据猛烈变化的时候。滤波开的更强,P的反应就更慢,手感也会拖泥带水。
像我之前提到的,默认设置比较安全(不容易拉烟),也可以消除大部分的抖动。但是更多人在意直接的控制手感,按流程关掉滤波后飞得更顺手。
Linklemming的问题:
我开了notch滤波,300/200,D滤波是PT1,调好了的,飞控做了减震。可是P和D的曲线都有尖锐的波峰。
Boris大神说先关掉notch,我不知道怎么取舍陀螺仪notch和D notch。很明显,如果只用陀螺仪notch,就可以减少P和D的噪音,似乎比只用D notch好。除非有些只适合开D notch的情况。我觉得只用D notch,滤出来的噪音已经够低了。
有趣的是,我的几台机的噪音都在300±30Hz左右。我有这些配置:
F1-4B,3毫米板子,DYS1806,2700kv,大力404503桨,4S电池
我自己设计的sub250g,180轴距,3毫米板子,rcx1306,3100kv,大力4045桨,4S电池
我自己的sub250g,150轴距,3毫米板子,DYS1306,4100kv,大力4045桨剪成3寸,4S电池
我猜这是因为机架?他们都是3毫米板子。
Ctzsnooze回答:
说实在的,我也不懂。。。
如果比较P和D的曲线,(放大,关平滑,关expo,按S和X键),如果大部分噪音在D上,有两种方法来解决。
首先看看是什么问题。可以只调D滤波。这样可以减小噪音,对P的延迟也小。
也可以给陀螺仪用notch滤波,这样P和D的噪音都能减小,相位差也不会变。
坦白的说,我不知道他们有没有区别。我只是在需要的地方用滤波,像这个例子,给D用notch就行。虽然这样会在P和D之间增加一些相位差,但因为D开了低通滤波,相位已经有延迟了。再加个300/200的notch,也不会影响太大。
如果可以都试一试,再比较一下黑盒子,这是坠吼的。也可以试试盲测,让别人调了不告诉你让你猜,飞一飞看看哪个更好。如果把notch的频率调低了,比如145/90,可能会有问题。但是高一些,应该会飞得相对顺滑。
别人说的:
Redtail2426:
我用了PT1滤波,关掉了陀螺仪和D的notch滤波,桨洗几乎减少了99%,比3.1.7默认好太多了。
Kevinpratt823:
我也关掉了notch滤波,用了PT1,机子的最后一点震动也消除了,PID也可以开得更高。
(这些都是玩家试过之后的改善,基本都是桨洗更小,反应更加直接,做动作停止更灵敏。但是楼主觉得可以适当的开notch滤波,用来压下在某个频率上比较大的噪音。这个详见下文)
Oz问:
我用F4飞的很好,但是,我突然想试一试32k/16k,结果陀螺仪曲线特别尖锐,不像8k那么好。前面两个马达比较热,在15~20%油门时声音很大。飞起来感觉还好。
Cheredanine的回答:
我个人飞8k/4k,没感觉到什么。我有5台机,都是bluejyF4飞控,都开32k/16k,真的没飞出什么特别的感觉。
一般开了32k/16k,马达会有4khz以上的噪音,开8k/4k没这么明显。但是32k/16k的噪音大得多,马达声音、发热也很大。飞控都会有震动,用了橡胶圈减震也是。32k/16k并不会比8k/4k好多少。
Boris说:
陀螺仪开8k以下时会有一个额外的滤波,32k就没有。把D滤波设置成PT1,关掉滤波,开32k噪音会很大。总的来说,我飞8k感觉很好,但是32k很难调成一样的手感。
QuadMcFly说:
¥#*#……¥@……(这些是他的经历,他按上面做了之后,觉得改变很大,就像从ppm变成sbus一样,就不啰嗦了)
千万不要开32k时用PT1滤波,大油门时搞不好真的会抽风!
Boris又说:
这些是滤波引起的,32k并没有什么魔力。盲测也基本测不出。32k完全禁用了内置的滤波,8k还有个256hz的低通滤波。这个滤波基本够用,但是还要像PT1那些软件的辅助。32k的内置低通滤波是3600hz的,所以很需要软件算法来辅助。Bf的思路是让人人都能飞起来不过热拉烟,也就是滤波要够强才行。
所以把滤波开得很强时,32k还是可以飞的,比8k不开滤波好一点。这不只是滤波带来的延迟更小,还有姿态急剧变化时可以减少桨洗。
PT1和biquad有什么区别?
Pete_oz的回答:
Biquad滤波更加强大(可以消除大部分噪音,但是延迟较大)。按Boris说的,用PT1就够了,除非飞机真的很抖。
Ctzsnooze的回答:
PT1是标准的-6db“无限脉冲型”(原文是infiniteimpulse type,直译的,我不知道有没有更准确的翻译。。。)IIR的低通滤波。信号的振幅在设定的频率减半,在频率的两倍时是四分之一。。延迟在100hz时是1毫秒,50hz是2毫秒。相位差在截止频率时是45°。这是个和模拟RC滤波等效的数字算法。
Biquad是-12db的低通滤波,振幅在设定频率上减半,两倍频率上是八分之一。滤波效果更好,代价是延迟和相位差都更大。100hz延迟2毫秒,50hz有4毫秒,相位差90°。
(这一段比较专业,我也不能保证完全准确,但原理基本是这样吧)
Boris说:
PT1效果比较好,但是比biquad快很多。D反应速度更快,PID控制器在有干扰时恢复更加迅猛。飞起来主要的区别,在陀螺仪急加减速时感觉很明显。陀螺仪曲线很陡峭时,PT1比别的滤波都好。
陀螺仪notch和D notch有什么区别?
Boris说:
陀螺仪notch用来消除陀螺仪接收到的信号(飞机的机械振动),D notch消除D运算后的噪音(就是PID的那个D)
他们有一些联系,一般陀螺仪噪音在300hz,D噪音也会是那个频率。
D notch怎么调?频率要和陀螺仪notch一样吗?
Pete_oz说:
很难说,因为看黑盒子很难判断噪音来源。我们可以看看没经过notch的陀螺仪曲线,和notch过的曲线比一比。开发者会看经过了陀螺仪notch,但是没经过D notch的曲线。我记得有人提过这个建议,想在黑盒子增加这个功能,然后就没有然后了。。。
当有人问我怎么调Dnotch时,我和他说,如果陀螺仪notch频率之间有个空白区的话,就放在它们之间。如果没有就放在噪音最大的位置。
ctzsnooze说:
首先,用普通滤波把噪音控制在合理范围内(不用notch),直到P曲线变得顺滑。如果还有个明显的噪音峰值,就用notch把他消掉。但是只有噪音很大时才用,如果几乎看不见,就不要用notch了。如果有两个波峰,就用两个notch。
然后,看看D曲线。D必须要有基本的滤波,如果它的噪音不大,就不用理它,适当少用点滤波可以飞得更加顺手。如果噪音范围很宽,就要降低滤波频率,或者用biquad滤波。搞好这些,再看情况用notch,他只用于消除频率范围比较窄,幅度大的噪音。
最后,正常飞一飞,看看曲线的情况。我们不是追求平滑的曲线,而是要保留有用的信号,减少噪音的影响。如果把大部分震动滤掉了,高频噪音可以消掉,但是低频震动就来了。他们之间有个平衡,要看情况取舍。
还有,如果炸到了桨,或者轴弯了,或者改了电调设置,都可能要重新调过。减轻滤波强度,对这些的适应性比较差,但是用好的桨、好的马达,可以飞得很爽。我喜欢去飞一飞,我把滤波开得比较强,可以让马达保持低温,用弯的桨也能飞。我的P比较低,适合温柔地过弯。
调滤波时,不要看马达曲线来调。P的噪音来源于陀螺仪噪音,被P值放大了。调陀螺仪滤波,要看陀螺仪或者P的噪音情况,而不是看马达。
D的噪音只有用黑盒子才能看得到。注意,D噪音来源于陀螺仪滤波后的数据,所以要先调好陀螺仪,再单独看D。notch只在有明显波峰时才用,如果没有,就不要用。随便乱写个数字上去,不见得一定有效。
比较一下P和D的曲线,很容易看出D滤波的作用。也可以关掉滤波试一试,不要飞太久,马达容易过热。马达曲线只是用来看“终点结果”,也就是震动的振幅,但这不是调机的重点。也不要看它来调黑盒子。
Zenkinsw说:
我把D滤波开成PT1,大风天飞得不错,抖动比较小,但是马达很热。我觉得用PT1,先要把D值减到24左右,再像平时一样调。
怎么看D的曲线?是横滚和俯仰的D频谱图吗?
ctzsnooze说:
是这个。在黑盒子点右边的值,就可以看到它们的频谱图。如果要看横滚D的频谱,就点“PID_D【roll】”。在此之前可以选定一个范围,按“i”设定起始点,“o”设定终点,这样就可以看到某个范围内的频谱。这个很有用,可以看大油门、低油门的情况,不同油门的情况可能不一样。看整个范围的频谱也行,但是针对性不够。看黑盒子要关掉expo和smooth,按“s”和“x”键。这两个东西挺干扰人的。
这个频谱图只看频率就够了,不用太在意噪音强度,也就是图像的高度。如果记录时间更长,它的高度就越大。如果时间一样,图像越高,就是噪音越大。
滤波的其他东西:
Boris说:
像之前说的,可以一个个关掉notch,看看飞的怎么样(就是上面说的方法,不再重复,把文章拉上去就看到了)
Ctzsnooze说:
Boris把notch滤波引入bf,来消除特定频率的噪音,效果妥妥的。可是,当滤波范围比较宽时,或者截止值比较低,就会引起延迟,或者相位差。这对低频的影响很明显。比如,200/100的滤波,就比200/160的差一些。所以,单个notch的范围不要太大。
r.a.v.说:
滤波首选PT1,其次是biquad。它们的主要区别是截止值有多陡峭(可以理解成曲线斜率)。下面给出了一幅图。X轴是频率,单位hz;Y轴是震动大小,单位db。可以看到,biquad对截止值频率以下的影响不大,但是高频很明显。它有个9毫秒,也就是111hz的延迟,影响到滤波前的D运算,所以PT1飞起来比biquad更好。
我更倾向调高D的滤波频率,而不是关掉notch。把PT1滤波的频率调高,开着notch,噪音减少了许多,也不影响低频表现(相比于关掉notch)。我的机子噪音很大,参数设置如下:
陀螺仪滤波:biquad,110hz
陀螺仪notch1:330/250
陀螺仪notch2:250/170
D滤波:PT1,170hz
D notch:280/160
各个设置都会互相影响,很难找到完美的值。110hz以下的震动是有用的信号,200hz以上的是马达噪音、机架抖动等,是真正的噪音。
信号处理流程如下:
陀螺仪输入→陀螺仪低通滤波→notch1→notch2→P值运算→输出给马达
陀螺仪输入→陀螺仪低通滤波→notch1→notch2→D运算→D低通滤波→D notch→输出给马达
这些环节滤波越强(也就是设定的频率比较低),产生的延迟就越大。
调参的目标是:
尽量减小P运算→马达和D运算→马达的延迟;
尽量滤掉更多的噪音。
低通滤波有biquad和PT1两种。Biquad滤波延迟比较大,但是在截止值“停下来”更好(几乎不影响截止值频率以下的信号),对低频的影响小。PT1延迟比较小,但是对低频影响比较大。Notch对特定频率滤波效果很好,延迟比低通滤波小。
在我看来,陀螺仪用biquad更好,他可以尽量滤掉噪音,保留有用信号。D还要额外的滤波,用PT1就够了,频率可以高一点。他产生的延迟也够小。默认的D用的是biquad滤波,频率比较低,结果是延迟偏大。
总的来说:
原始的陀螺仪信号,可以看出没经过滤波的情况;
普通的陀螺仪信号,是滤波后的情况。
从D的频谱可以看出D运算后产生的噪音,他影响到陀螺仪的数据。要搞清楚D“做了什么”,可以比较一下D和陀螺仪的频谱。它一般会放大噪音,尤其是高频噪音。这就是D必须要滤波的原因,也是陀螺仪有高频噪音,在D上表现的更明显的原因。D notch用来除掉陀螺仪滤波后剩下的噪音,防止D把他们放大。一般要先调好陀螺仪滤波,再调D滤波。
PID sum曲线和马达曲线,是马达最终得到的信号。他是经过上述所有运算的结果。
我们不是在“修好频谱”,而是把噪音排除在外,让有用的信号进入PID循环。还有可以看看马达曲线,他的噪音不一定要为零,只要够小就行。但是,5%的噪音,会消耗5%的动力,产生5%的热量。噪音越小越好,所有设置都一样。如果噪音还是太大,就要回头重新再调,直到满意为止。
低通滤波是为了把噪音控制在较低的水平,调好了可以消除大部分噪音。notch滤波是消除特定频率的噪音。但如果噪音总体不大,没有明显的波峰,就不用notch了。
但如果滤波不够强,飞机会比较“抽风”。降低滤波强度,P和D在高频运算更多。飞起来可能好一点,但可能会有共振,这时可能会突然翻过来。
滤波的目的是让更高的P和D值“available”(这个单词真的难翻译,大概意思就是通过滤波,减少对P和D的制约,从而可以开更高的P和D而不抖,发热也不会太严重)。把P和D开高,可以达到更好的锁姿态效果。太弱或太强的滤波,都会限制P和D能开多大,此时开高了马达容易发热。如果找到了他们之间的平衡,可以把P和D开高,用炸过的桨也可以不抖,继续爽飞。
机架共振:
Ctzsnooze说:
机架共振是挺难搞的。它和桨带来的抖动是两码事,是机架自身的特性。所有机架都有个固有频率,有共振时震动会很大。
假设有一个可以产生不同频率震动的震源,比如说不平衡的桨。马达加速时,频率变快,这就是“输入的震动”。在共振频率时,震动会很大,其他频率看不出什么问题。
如果机架够硬,共振频率会很高,软机架频率低。折叠机架的问题比较大,他的连接处一般不会很坚固。而且共振可能会被PID放大。这是因为桨有自己的共振频率,机架也有他自己的。可以试着把桨按在桌子上,伸出一片桨叶,压弯,然后突然放手,应该可以听出来,硬桨的音调比较高,也就是共振频率高。机架也可以这样测试。桨和机架的共振频率如果很接近,有可能突然抽风什么的。
专业一点的可以用测试台,一次开一个马达,慢慢加速,如果某个转速的震动特别大,这就是机机的共振点了。分开测试可以搞清楚是哪个马达的问题,一起测试可以看出总体结果。用测试台时PID没有参与运算,得出的结果只是硬件问题,不关飞控的事(但是电调参数可能产生影响)。
Notch滤波是用来消除某一个特定频率的震动,开的范围刚好够波峰的宽度就行。要搞清楚这个频率,就要用黑盒子,看看不同轴上的频率范围。P的波峰要用陀螺仪notch,然后再看D有没有问题。默认的参数一般不合适,因为每台机的特性都不一样,要针对它自己来调。
一般D会引起共振的放大。懒得看黑盒子,不想开notch,只是用低通滤波,比如70hz的biquad,也是可以的。如果陀螺仪滤波调好了,也可以不开D notch,因为噪音并没有进入D的运算。在这个例子中,只讨论了D notch。如果D的噪音不明显,开不开都无所谓。
但是,我们没法直接看出共振频率,唯一的方法是看黑盒子。换了桨,或者机架,notch的频率可能需要改变。Notch不是防止机子震动,而是防止设定频率的震动进入PID运算,防止震动被放大。它的效果是减少了总体的震动。
如果桨还算平衡,但还是有震动,理论上应该还可以飞,马达应该不会太热,声音也还好。换一套桨,或者换轴承,应该有改善。
PS:BlHeli电调在某些转速上可能不够顺滑。可以带桨慢慢让它加速,有可能找到这个转速,听起来像是轴承进了沙子(有点嗡嗡声?),也能感觉到明显震动。有时他们会引起共振,特别是这个转速和飞机共振频率比较近的时候。
Ctzsnooze继续说:
这东西我纠结了半天。Bluejayf4飞控,用橡胶环做了减震(不软不硬的那种)。我之前优化了P和D,也试了一些滤波范围。
我把陀螺仪和D的滤波都开成130hz的PT1,没有用notch。这时的噪音很大,频谱分析看得到180hz有一个很明显的峰。可以看到桨弯曲厉害,许多能量浪费掉了,桨盘的轮廓也变得模糊。把滤波频率开低一点,也没用notch,问题就消失了。我陷入了沉思,并无聊地弹那片桨。突然我灵光一闪,桨震动的频率是不是有什么玄机?我把声音录下来,发现它正是180hz。我又试了cyclone(也就是某力)的桨,频率是300hz,就是它比较硬。
于是,我加了180/140的陀螺仪notch,震动马上小了许多,低通滤波频率可以开更高了。用某力的桨时,开300hz左右的notch,结果一样很棒。
我也发现,当陀螺仪和D都用PT1滤波,当设定频率增大时,D的噪音增加得更多。为了不让他们比例失调,可以给D用biquad滤波。如果陀螺仪和D的频谱差不多,一般给陀螺仪加个notch就行了,D可以不用加。我给陀螺仪用PT1滤波,D用biquad,只给陀螺仪用了notch来减弱桨的震动,飞的感觉很棒。
我把陀螺仪和D的低通滤波设一样的频率。比较高的频率,陀螺仪频谱的频率范围会比较大,以至于比notch范围还宽。很明显会有一个合适的最大值,让滤波足够干净,同时用弯的桨也能爽飞。因为我经常飞炸过的桨,或者带着受伤的桨飞回来,我的滤波频率开得比较低。我的陀螺仪用80hz的PT1,D用80hz的biquad,有个180/140的陀螺仪notch来消除50403桨的震动。P大概40~50,D大概25。
至少要开一个陀螺仪notch来消除桨的震动,所以去弹弹你的桨吧:-)
Ctzsnooze还有话说:
来自马达的震动(轴承、转子不平衡、螺丝松了、桨歪了等等)是频率范围广泛的噪音,可能会有个小波峰,扩散的比较宽。主要的频率也会随着转速而改变。一般来说,转速越高,震动频率就越高。低通滤波把这些震动统统过滤掉,notch是针对特定的频率,保留其他的。
共振可以理解为特定频率的噪音,在黑盒子的曲线表现为有规律的震荡,频谱图表现为该频率的峰。它一般就是桨震动的固有频率,少数比较软的机架可能不同。它不会随马达转速变化,但在某个转速震动明显。PID越高,电调马达反应越快,机架越软,共振的影响就越明显。为了消除震动的影响,最好的方法是用notch滤波。共振产生的频率一般就是桨震动固有频率,但具体是多少并不好说,可能在怠速点,可能很高。但是震动频率范围不会太大。用notch滤掉那个频率就行。
BF3.2会有个自动调节功能,它可能会自动找出共振点。
调notch的步骤,可以先把陀螺仪和D都开100hz的PT1,关掉所有的notch。看频谱的峰的频率,作为notch中心点,降低25%作为截止值。如果飞控没有黑盒子,可以弹一弹桨,找出声音的频率,作为notch的中心点,降低25%作为截止值,理论上也可行。
如果马达还是热,与其再加个notch,还不如把D滤波开成biquad。因为发热主要是D的高频噪音引起的,把他们滤掉,可以解决这个问题。
滤波延迟:
Ctzsnooze说:
所有的滤波都会带来延迟。滤波越强,延迟就越大。在GitHub上有关于原理的专门讨论,这里就不说了。
从biquad换到PT1,假设都是100hz,会发生这些:
开200hz,噪音翻倍
开400hz,噪音翻4倍
开10hz,基本没有相位差
开50hz,相位差15°
开100hz,相位差45°
100hz是的延迟大概是1.5毫秒
下图是90~170hz的延迟曲线图。

下图是notch滤波的延迟曲线图,截止值比中心值低80hz。可以看出,滤波越强,延迟越大。总的来说,notch+高频率的低通滤波,要比只有低频的低通滤波延迟更小,滤掉噪音的效果却差不多。



RU41S7WQC9N$$PTL3)GH339.png (215.07 KB, 下载次数: 72)

RU41S7WQC9N$$PTL3)GH339.png

162746qwjss4ptr4zyza84.jpg (33.05 KB, 下载次数: 76)

162746qwjss4ptr4zyza84.jpg

162746yplyf2l4gsyktgf3.jpg (70.21 KB, 下载次数: 85)

162746yplyf2l4gsyktgf3.jpg

162746loerj6300ewz4eo7.jpg (85.24 KB, 下载次数: 72)

162746loerj6300ewz4eo7.jpg

162747ysb41550nc4lo4b1.jpg (56.79 KB, 下载次数: 72)

162747ysb41550nc4lo4b1.jpg

162747kg5xd2xgvm000zv2.jpg (140.65 KB, 下载次数: 67)

162747kg5xd2xgvm000zv2.jpg

162748f4zj3f94vp2rp942.jpg (138.71 KB, 下载次数: 61)

162748f4zj3f94vp2rp942.jpg

162801a432gugbf7mf111p.jpg (80.45 KB, 下载次数: 85)

162801a432gugbf7mf111p.jpg

欢迎继续阅读楼主其他信息

来自 6楼
 楼主| 发表于 2017-7-13 16:43 | 只看该作者
诶呀忘记说了,原文网址是这个:
https://github.com/betaflight/be ... ing-recommendations
沙发
 楼主| 发表于 2017-7-13 16:32 | 只看该作者
这图片排版好奇怪。。。
3
发表于 2017-7-13 16:36 | 只看该作者
好帖啊!!收藏了,慢慢学习!
来自安卓客户端来自安卓客户端
4
发表于 2017-7-13 16:39 | 只看该作者
感觉很厉害的~
5
发表于 2017-7-13 16:42 | 只看该作者
notch是陷波。
biquad是双二阶
7
发表于 2017-7-13 16:58 | 只看该作者
哎。字看着好累。 顶
来自苹果客户端来自苹果客户端
8
发表于 2017-7-13 17:32 | 只看该作者
翻译辛苦了,看了一半,下班了,明天仔细研读。
9
发表于 2017-7-13 18:05 | 只看该作者
10
发表于 2017-7-13 19:11 | 只看该作者
好东西 目前我最需要的东西
11
发表于 2017-7-13 19:32 | 只看该作者

感觉很厉害的~
12
发表于 2017-7-13 19:44 | 只看该作者
请教下gyro_lowpass和gyro_lpf有什么区别?
来自苹果客户端来自苹果客户端
13
发表于 2017-7-13 21:04 | 只看该作者
慢慢学,赞楼主大好人啊!
14
发表于 2017-7-13 22:15 | 只看该作者
收藏学习。
来自安卓客户端来自安卓客户端
15
发表于 2017-7-13 22:33 | 只看该作者
好贴,楼主好人。我也觉得陷波的副作用最小,不开可惜了,所以我都是根据黑盒子的频谱图,先滤掉大于110hz的波峰,效果很好,飞机跟手,电机温度低。
来自苹果客户端来自苹果客户端
16
 楼主| 发表于 2017-7-13 22:56 | 只看该作者
reach3 发表于 2017-7-13 22:33
好贴,楼主好人。我也觉得陷波的副作用最小,不开可惜了,所以我都是根据黑盒子的频谱图,先滤掉大于110hz ...

陷波如果没必要最好不开,因为它也会带来一些延迟,或许有点影响。只要信号够干净,就可以不开。
来自安卓客户端来自安卓客户端
17
 楼主| 发表于 2017-7-13 22:58 | 只看该作者
stone95 发表于 2017-7-13 19:44
请教下gyro_lowpass和gyro_lpf有什么区别?

lowpass是bf软件的滤波,lpf是硬件的。
来自安卓客户端来自安卓客户端
18
发表于 2017-7-13 23:05 | 只看该作者
本帖最后由 reach3 于 2017-7-13 23:06 编辑
Flameout 发表于 2017-7-13 22:56
陷波如果没必要最好不开,因为它也会带来一些延迟,或许有点影响。只要信号够干净,就可以不开。

但是振动是事实存在无法避免的东西, 不用notch,就要用低通。 notch带来的延迟比低通小。


19
发表于 2017-7-13 23:17 | 只看该作者
收藏了,学习!
20
发表于 2017-7-14 08:18 | 只看该作者
翻译辛苦  必须顶
来自苹果客户端来自苹果客户端
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /2 下一条

快速回复 返回顶部 返回列表