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

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

Betaflight 3.4 官方调参指南【新手进阶指南】

作者:DusKing  (Betaflight3.4调参指南由ctzsnooze  编辑)


关于3.4版本的新功能以及默认参数的注释:我只想爽飞,不想看这些“巴拉巴拉巴拉”


没问题,先刷写好3.4版本的固件,然后用默认参数飞一圈试试就行了。不管是8K还是32K的陀螺仪,默认值都应该能工作的很好。不过32K的陀螺仪需要更多的陀螺仪噪声滤波,在首飞之后一定要检查一下电机有没有过热。


需要注意的是3.4版本更换了新的滤波器,并且推出了几个重要的PID控制特性的更新。这些变更极大地优化和改善了飞行性能,飞行手感也会有很大变化,这和之前的版本是不同的!


如果电机没有过热,飞起来感觉也还不错,我建议你在CLi内输入以下代码:


set iterm_relax = RP

save

这行代码的作用是在Roll和Pitch方向启用I值释放功能,这个功能会减少横滚和俯仰方向滚转到位的回弹,并且允许你使用比之前版本更高的I值来提供更好的各个轴的稳定性能。和之前相比,基本上可以提高50%的I值,或者更多。尤其是在大风中飞行,或者高速贴门飞行的时候,来提供更好的方向锁定和机身稳定性能。


set rc_smoothing_type = FILTER

save

这行代码会激活遥控器输入信号上的低通滤波器,来了平滑遥控器输入信号,在快速频繁打杆时,它可以消除输入信号的尖峰,和信号边缘的尖锐毛刺。在你快速打杆和加减油门的时候,可以让电机运转声音变得更平滑,并且降低电机运行温度。和原有固件中集成的插值平滑的方式相比,现在的滤波器降噪带来的延迟更低。(老版本的插值平滑作为一个可选项被保留下来)。


需要留意的是,任何平滑遥控器输入信号的方法,D值或者油门输入的尖峰都会被适当的削平。虽说这会提高电机运行的效率,降低电机运行的温度,平滑电调的输出波峰,但是这种方式会在你快速打杆的时候,降低了油门控制信号,以及PID控制器的P和D值的工作效率。在启用遥控器输入信号的滤波功能以后,如果你留意到在你快速打杆的时候,穿越机的响应有任何一点点小的延迟的话,建议你提高P和D的设定值,至少增加20%。


默认值飞起来还算不错,我还想调整下飞的更好,要从哪里开始做?


新的D set point weight 参数的默认值已经修改到了0.6。这个数值相当于以往版本的0.8。更高的D set point weight 值意味着在你快速打杆的时候,提供更直接的响应。如果默认的0.6在你目前的rate值下没法像之前一样提供更好的响应,建议调高这个数值。当穿越机开始响应遥控器输入命令的时候,1.0的D set point weight值已经足够高到能够克服这个过程产生的震荡,更大的设定值带来的滞后效应会降低P的效率,降低穿越机的响应速度。如果设定值超过了1.0,可以考虑激活一个额外的“智能前馈”的效果,高的D set point 值会引起穿越机震颤,但是你也可以通过降低一点点P值来对应,这可以保持大体上的反应速度基本维持不变。


新的D set point transition的默认值是0。如果你之前的设定值是1.0或者0.5,在摇杆保持中位的时候飞行姿态的时候还算顺滑,但是现在飞起来有点点抖,那么建议你还是用之前的数值。 Dset point transition = 0 这个参数的效果,就是无论你的打杆位置是在中间还是到两边,穿越机的对于杆位的响应都是一样的没有任何变化,所以建议竞速飞手使用0这个设定值。建议花飞选手使用0.5这个设定值,可以在摇杆中位提供一定的顺滑阻尼。不建议把这个值调到0.1以下。


如果你的穿越机PID设定值比目前的默认值更高一些,但是穿越机的响应好像比之前慢了一拍,试试提高一点PID的设定值,和之前相比至少提高20%试试看。


不是说F3飞控禁用了一些功能吗?

我还能不能在F3飞控上面使用这些新功能?


对于一些具备128k闪存空间以上的F3飞控,我特别制作了一个定制版本的固件,把这些禁用了的功能加了回去。举个例子对于MotoLab这个飞控,我可以定制一个带I值释放,双重滤波,油门增压,遥控器信号滤波版本的飞控固件。这块F3运行在4k/4k下面,可以保持CPU占用率在30%左右。


但是我不得不删除新手训练这个飞行模式来获得足够的代码空间来放下这些新功能需要的代码,你可以在下面这个链接找到对应的带新功能版本的F3固件。

here:https://github.com/joelucid/betaflight/releases/tag/3.4-RC1


你们说的双滤波器是什么鬼?


3.4这个版本用双滤波器替换了原来的stage1,stage2滤波器,现在可以同时对陀螺仪数据和D值进行滤波。默认设定下,同时有四个低通滤波器在工作,并保持动态陷波器打开(动态滤波),除此以外就没有别的陷波器了。这种方法和之前版本相比,滤波延迟更低,但是滤波性能更好。


有两个陀螺仪滤波器滤波原始的陀螺仪数据,防止这些陀螺仪噪声进入PID控制器,P值,I值,D值都是从这些滤波之后的数据中获得。还有两个D值的滤波器仅仅单独对D值的数据进行滤波。


为了降低输出给电机信号中的噪声,试图确定到底对于电机来说,是P的噪声影响更大,还是D的噪声影响更大。我们从黑匣子数据中分离P和D的数据,并和PID的输出数据进行了对比,发现D的噪声会比P的噪声更多,所以一般情况下,我们需要对D进行更多的滤波。


如果我们使用更多的滤波,那么传递给电机的信号会更干净,这样电机运行的温度会降低,运转的也会更平顺。但是更多的滤波会增加PID控制器的延迟,这会影响飞行的性能。但是如果没有滤波的话,在使用软桨,或者电机轴承已经有点磨损的这种情况下,电机有可能会过热。


我们可以通过对双PT1滤波器的参数进行调整,来匹配不同的穿越机噪声。

(注:来获得更低的延迟,但是保持电机温度不高,穿越机也不抽风)


以下是一些经典参数匹配案例,你可以直接复制粘贴到Cli命令行里面。


如果你的穿越机状态很好,机架刚性很高,使用新的电机,并且只使用新的动平衡很好的重量很轻的螺旋桨,可以使用下面的参数:

set gyro_lowpass_type = PT1set gyro_lowpass_hz = 150set gyro_lowpass2_type = PT1set gyro_lowpass2_hz = 400set dterm_lowpass_hz = 100set dterm_lowpass2_hz = 250


大众化的5寸穿越机,状态还算不错但是电机和桨都不是新的,可能桨还有点点弯但是还能用(如果你的飞控使用MPU6000陀螺仪,老的二阶低通滤波器可以通过设定 gyro_lowpass2 = 0 来关闭,这样可以获得最好的飞行性能,但是需要通过黑匣子数据/或者手动关注 电机是不是过热,来确保这样的设置是可靠的。)可以使用下面的参数:

set gyro_lowpass_type = PT1set gyro_lowpass_hz = 120set gyro_lowpass2_type = PT1set gyro_lowpass2_hz = 300set dterm_lowpass_hz = 100set dterm_lowpass2_hz = 250


一般性的穿越机,机架还算过得去,但是桨已经不太好了,可以使用下面的参数:

set gyro_lowpass_type = PT1set gyro_lowpass_hz = 120set gyro_lowpass2_type = PT1set gyro_lowpass2_hz = 300set dterm_lowpass_hz = 80set dterm_lowpass2_hz = 160


一个比较渣的穿越机,烂机架,用炸弯的桨,可以使用下面的参数:

set gyro_lowpass_type = PT1set gyro_lowpass_hz = 90set gyro_lowpass2_type = PT1set gyro_lowpass2_hz = 180set dterm_lowpass_hz = 70set dterm_lowpass2_hz = 140


这些滤波器的设定数值更高,意味着更少的滤波,飞行性能就越好,穿越机就更好飞。


那么来说说PID控制器吧,默认值到底行不行?


我们认为对于大多数穿越机来说,默认值已经相当不错了,很多人反馈用默认值飞的相当OK。


如果你是竞速飞手,你的穿越机没装GoPro这种运动相机,穿越机很轻响应很快,那么你可以试试下面的设定参数:(注:斜杠后面是对命令的解释)


set rc_smoothing_type = FILTER

//激活遥控器输入信号滤波


set setpoint_relax_ratio = 0

//设定D set point transition = 0


set dterm_setpoint_weight = 120

//设定 D set point weight = 1.2


set iterm_rotation = ON

//激活I值旋转功能,大幅度打方向更柔顺指向性更好


set iterm_relax = RP

// 激活I值释放功能,降低滚转到位回弹


set iterm_relax_type = SETPOINT

//设定I值响应模式,优先确保打杆响应速度而不是打杆精度


set iterm_relax_cutoff = 12

//设定I值释放作用范围


set throttle_boost = 2

//设定油门增压提高2%


set throttle_boost_cutoff = 15

//设定油门增压工作范围


以下是PID的推荐值,可以看到为了增加穿越机响应打杆的速度,增加D set point weight 到1.2以后,所有的P值都被适当的降低了,但是I值都增加了好多。


set p_pitch = 32set i_pitch = 65set d_pitch = 23set p_roll = 30set i_roll = 60set d_roll = 21set p_yaw = 65set i_yaw = 60set d_yaw = 20set tpa_rate = 15

//设定TPA衰减比例为15%


set tpa_breakpoint = 1050

//设定TPA衰减起始的油门位置


如果你专注的是花式飞行,并且你的穿越机还有点重,那么可以试试下面的参数:


set rc_smoothing_type = FILTER

//激活遥控器输入信号滤波器


set setpoint_relax_ratio = 50

//设定 D set point transition = 0.5 平滑中位阻尼


set dterm_setpoint_weight = 80 

//设定 d set point weight = 0.8 适度提高响应


set iterm_rotation = ON

//激活I值旋转功能,大幅度打方向更柔顺指向性更好set iterm_relax = RP

//激活I值释放功能,降低滚转到位回弹


set iterm_relax_type = GYRO

//设定I值释放响应模式,优先确保打杆精度而不是响应打杆速度


set iterm_relax_cutoff = 10

//设定I值释放作用范围


set throttle_boost = 8

//设定油门增压提高8%


set throttle_boost_cutoff = 15

//设定油门增压作用区间

//推荐的PID设定值 ,同样可以看到P值更高,D值也更大。


set p_pitch = 58set i_pitch = 65set d_pitch = 35set p_roll = 50set i_roll = 60set d_roll = 30set p_yaw = 65set i_yaw = 60set d_yaw = 20set tpa_rate = 20

//设定TPA衰减比例20%


set tpa_breakpoint = 1050

//设定TPA衰减起始的油门位置刷了3.4以后,我的穿越机飞起来比以前反应更慢了!


如果你的穿越机之前遥控器信号过滤是插值滤波器(注:就是默认设定)试试:


set rc_smoothing_type = FILTER.

save


试试提高你之前的PID的设定值,P,I,D,都分别提高20%试试。


如果你的穿越机并不需要太多陀螺仪噪声过滤,试试上面的“低噪声穿越机”的滤波器设定值。


如果上面这些办法都不行,那就试试你原来的设定参数,你会发现和现在的参数相比,你的老参数没有你记忆中的那么好!


那我现在还要保持开启动态滤波器吗?


不好说,要看情况。动态滤波确实会增加一部分延迟,但是对于一些情况下,比如桨弯了这种,确实帮助很大。如果你的穿越机陀螺仪数据非常干净没有多余噪声,那么飞行性能压倒一切,你可以试着把动态滤波关了。但是这要看情况,如果的你的桨是很软的,穿越机也比较渣,那么还是建议你使用比较多的D值过滤,不然你的电机会烧掉的。


那么我还需要固定的D值陷波器吗?


简短的来说:不需要。这些固定D值陷波器带来了太多的延迟,双PT1滤波器通常来说已经足够了。


详细点的来说:如果你不使用动态滤波的情况下,你的黑匣子数据显示一个很清晰固定的噪声高点,比如你使用的一个很软的机架,以及比较渣的螺旋桨,那么可以考虑使用固定的D值陷波器。但是这需要使用Blackbox,或者PID-Analyzer这种软件进行频域分析以后才能确定,你可以通过“拔出”螺旋桨这种方式,或者使用上面工具的频域分析模式来确定这个噪声频率,这个时候你用固定的D值陷波器可能会有点用。


注:SmartFox小组会在后期推出PID-Analyzer这个可视化PID分析工具的教程,请保持关注。


新增功能的详细解答


遥控器输入信号滤波


感谢eTracer,3.4加入了遥控器输入信号滤波功能。和原有的遥控器输入信号插值相比,延迟更低并且抖动更少。另外,这个功能也可以自动调整滤波器的设定值来匹配不同遥控器输入信号的间隔。


你需要在CLi界面中,粘贴:


set rc_smoothing_type = FILTER

save


然后你的遥控器输入信号,就会通过一个biquad(双四方滤波器)进行滤波,平滑默认频率下的输入信号边缘毛刺,以及尖锐的油门阶跃变化,连P和D的尖峰都会被削弱。考虑到D set point weight 设定值会放大每一个遥控器输入信号的毛刺,所以会在D set point 值上面再增加一个滤波器。


这一切的结果,是电机的运行曲线更为平滑。虽然PID控制器还是迅速的响应每一个遥控器输入的阶跃信号,但是控制信号的尖峰已经被移除,这降低了电机的发热,提高了电机的工作效率(注:更省电),无论你如何疯狂的推拉油门,电机的运转声音始终柔顺。原来的遥控器输入信号尖峰,会触发 Iterm_windup保护(注:I值抽风保护),但是现在的这个代码已经解决了这个问题。


当你设定“set rc_smoothing_input_hz = 0”的时候,代码会自动根据你输入的遥控信号的间隔,来决定最佳的低通过滤频率。同样的,你可以设定“set rc_smoothing_derivative_hz = 0”让程序来自动确定最佳的D值滤波频率。对于9ms间隔的Sbus信号来说,最佳的滤波器设定值是50Hz,在黑匣子记录的表头文件上面你可以看到这个实际的设定值。


如果你设定了一个很高的D值,一个较低的导数设定值可以平滑那些大的尖峰,否则你会在你的穿越机飞行过程中,感受到这些尖峰带来的影响。


很多同学会担心新增加的遥控器输入信号滤波会带来更多延迟。这说的没错事实上的确如此,但是如果不对输入信号进行任何过滤,遥控器输入毛刺带来的尖峰会充满到电机驱动曲线的每一处角落。目前的过滤器仅仅只是移除那些尖峰的最尖锐的部分,对于其余大部分步骤来说并没有带来延迟,对于D值的效力来说也没有削弱,我们可以从黑匣子曲线里面观测到D值曲线和电机曲线几乎是同步的,只是变得更为平滑和圆润。


I值释放


I值释放这个新功能是由JoeLucid写的,主要用于切断,或者减少在遥控快速移动过程中,累计起来的I值误差。(注:也就是在你频繁打杆的时候,I值的累积其实是缓慢的,并不能跟上你的打杆速度,但会在某个时刻累积起来影响到你打杆到位的效果,造成锁定感变差,回弹增加,这个功能就是根据摇杆的输入指令,设定一定的区域,在区域内,I值可以正常累积,当遥控输入信号变化频繁,I值没法跟上的时候,就释放掉累积的Itermerror,计入到pidlooperror,这也是“释放”这个命名的含义。)你可以设定这个功能是针对 pitch和roll生效,或者pitch,roll 和yaw,一起生效。


这个代码有两种工作模式,Setpoint(设定值模式)和gyro(陀螺仪模式),陀螺仪模式更多的保留了实际完整的I值参数,setpoint模式则更多的考虑响应速度,而相对放宽打杆的准确度。


setpoint模式在遥控器输入信号上增加了一个高通滤波器,当打杆速度很快的时候,I值的累计会变得高一些。当你的滚转率基本是零的时候(例如你的摇杆几乎在中位没有动)I值的累计是保持正常的,当你的打杆速度越来越高接近到了阈值上限,那么I值的累计是被线性比例的降低的,当你打杆速度超过设定阈值以后,I值就不再继续累积了。


陀螺仪模式是基于遥控器输入信号变化率模式之上,增加的高通滤波器,并且使用这个高通滤波器来创建一个陀螺仪数值窗口,使用这个窗口来跟踪穿越机的姿态变化。当穿越机的姿态变化率处于窗口之内,那么I值不会被累积,变化率超过这个窗口,则I值开始累积。如果你的摇杆几乎保持在中位不动,那么这个变化率的窗口会被压缩的几乎没有,然后I值就和平常一样开始持续累积。


由于陀螺仪的数据中,I值主要用来控制穿越机是不是能够精确的保持前进的路线是不是能够跟随的摇杆的指令而不发生航线的偏移。我们可以根据摇杆指令输入的快慢程度,来决定I值到底是如何累积起来。这对于一架震动比较大大的穿越机,或者飞行姿态中油门快速变化的穿越机来说,是非常有用的。


这两种滤波器都可以通过调整滤波器的时间常数来精细调整穿越机的响应,通常来说是不需要动这个参数的。针对某些极端情况,比如快速的复合翻转,或者其他快速输入的动作,一些I值会被慢慢累积起来,并且累积的太多了,当你突然停止摇杆移动的时候,导致你的滚转率变得迟钝没法及时跟得上。针对这种情况,只需要简单的增加滤波器的时间常数,就可以消除这种情况。


这个功能真的非常有用,而且作用效果明显,如果一架调整穿越机的P和D调整的比较到位的话,这个功能几乎可以完全消除由I值引起的滚转回弹。


油门增压


这个功能的代码也是由JoeLucid写的,提高了油门快速变化时候的响应。这个代码在遥控器的油门通道上面,额外的增加了一个高通滤波器,用来制造一个“踢一脚”油门信号,基本上可以算是一个油门信号的上的前置进给因子。你上下移动油门的速度越快,这个增压加速的效果就越明显。结果就是无论你是迅速的加油门,还是切断油门到零,油门的响应变得更快,更积极。对于一些动力不足响应慢的穿越机来说作用效果非常明显,或者可以让你的3S飞出4S的感觉,4S飞出5S的感觉。


这个决定“踢一脚”到底是多大力度的一脚,取决于遥控器输入信号的阶跃变化和 throttle_boost 这个参数的乘积。这个“踢一脚”到底踢多长时间,取决于throttle_boost_cutoff 的值。


默认的throttle_boost_cutoff值是15Hz,大概意味着持续10ms左右的时间。对于大多数使用Sbus接收机9ms左右的输入信号间隔来说已经工作的非常好,无论你启用还是禁用油门通道的遥控器输入信号滤波功能。大约有40%的“踢一脚”增量值会作用到下一个接收机输入信号的步长里去,这个增量值会随着你的油门移动速度加快而更多的累积起来持续进入下一个步长。当然如果你的油门移动速度降低下来,这个增量也会减少,或者变得圆滑。


如果你在油门通道上启用了 rc_smoothing (注:遥控器输入信号滤波)这个功能,一个较高的油门频率切断值会降低这个“踢一脚”的累积效果,并且允许遥控器信号滤波平滑油门的尖峰值,甚至把尖峰消除。举个例子,如果油门信号切断值在50Hz左右,油门增压在25左右的数值,其“踢一脚”的效果和油门信号切断值15Hz,油门增压5的数值作用效果相当,但是前者的信号超调量更小。


如果你设定 throttle_boost的设定值到零,那么这个功能就被禁用了。


默认的 throttle_boost_cutoff的值是15,throttle_boost的值是5,已经足够克服遥控器输入信号滤波带来的油门通道的延迟。(当然前提是你启用了油门通道的遥控器输入信号滤波)和没有经过滤波的油门输入信号相比,这两个设定值已经能够提升一点油门的响应,并且电机转动声听起来更平顺。在throttle_boost_cutoff切断值是15的情况下,设定throttle_boost的值高于5的话,能够提供更多的油门前馈响应。如果throttle_boost的设定值高于10,或者更高的话,就可以有效的克服由于电机扭力不足没法克服较大的桨带来的这种提速慢的不足。但是太高的油门增压值会导致一种超调情况,或者在大油门下穿越机变得过于敏感。可以通过适当的增加throttle_boost_cutoff的设定值,例如到50Hz,或者降低油门增压值到25,来减轻这种情况的产生。在这种情况下必须启用油门通道上的遥控器输入信号滤波。因为较高的油门切断频率会导致油门通道输入曲线上面布满细小尖锐的毛刺,这种情况下油门的增压值也很难被累积起来。


通常来说 throttle_boost_cutoff  的默认值15Hz已经相当不错了,如果你确实需要通过油门增压来改善油门的响应,只需要调整 throttle_boost这个值就可以了。


I值旋转


这个代码也是由JoeLucid写的,并且默认激活,那些只靠目视操作穿越机的飞手特别欢迎这个功能。尤其在你表演一个漏斗路线复合了方向和横滚的组合滚转(注:翻译不了了,总之就是满天乱转乱飞)的情况下。当穿越机朝不同的方向旋转的时候,这个代码巧妙的旋转了I值的矢量方向,因为穿越机真正的旋转方向和当前的行进方向是不同的。对于FPV飞行来说这个代码的效果很微妙,但是当你突然进行大机动的时候,可能会产生一些更可预期的反应。这个代码没有设定参数,只有激活和关闭两个参数。


智能前馈


这是一个实验性质的代码,也是由JoeLucid写的,改变了D set weight 值的作用方式,默认是关闭的。


通常来说,D set point 值是是一个进给量,并且根据遥控器摇杆移动的增加而增加,D set point 值越大,穿越机的在横滚和俯仰方向的灵敏度也越大。


对于经典的Betaflight的控制器来说,D set point  值是用来协助P值来协助穿越机改变姿态的,通常来说,随着P值的增加,D set point 的值也会跟着P值迅速的增加,但是比会比P值相对慢一步。增加更多的Dset point 的值,适当减小P值,能够有效的降低PID的超调震荡,并且几乎不损失摇杆的灵敏度。


智能前馈改变了D set point 值的作用方式,当Dset point的值超过P的设定值以后,它可以完全替换掉P的设定值变成D值,(在同一个方向上)。为了这个功能能够正常启动,Dset point 的值必须比之前大幅度的提高,至少是2.0或者更高。这样在改变穿越机姿态的时候,大部分驱动力由D set point值产生,而P基本上没事干或者根本不起作用,在某种程度上可以减少超调量。


绝对控制


这个也是JoeLucid的试验代码,这个代码解决的问题和I值旋转的一样但是没有I值旋转那么多负面作用。


绝对控制持续的监测穿越机根据遥控器指令实际飞行的路径错误,并且正确的将其正确的旋转对应到穿越机的坐标系当中去。并混合了一个比例修正值去纠正这个错误。就好像你自己在不停检测穿越机,观察到了小的错误就立即在遥控器上面输入了一个纠正值。


结果就是让穿越机能够更好的跟随摇杆的输入移动(注:传说中的“更跟手”哈哈),尤其是在混合了方向的旋转或者是快速轰油门的时候。


看起来绝对控制最后会取代I值旋转的功能,不过这个功能默认也是禁用的。你不能同时启用绝对控制和I值旋转这两个功能。


激活这个选项需要输入:

set abs_control_gain = 10

save

对于较小的穿越机来说,这个设定值改成5就够了。


绝对控制需要配合I值释放功能一起使用,来避免摇杆移动和穿越机响应之间的延迟带来的滚转回弹。同样I值释放会“释放”掉在摇杆快速移动过程中,绝对控制累积的I值错误。需要注意的是,绝对控制和Airmode一样,只有当油门超过了Airmode激活的最小值以后,才能正常开启,这也是为了避免穿越机长时间在地面不起飞造成的累积错误。(注:不然大部分人喜欢玩的在地面倾斜穿越机的起跑姿势就出不来了,倾斜时间一长穿越机直接翻掉了哈哈)。


注:这个调参指南的翻译尽量忠于ctzsnooze的原稿,至于3.4版本带来的大量更新改进本身不在这个帖子里展开,会在后续陆续推出专题详解。blackbox查看器的噪声频谱图的噪声属于累积性计算得出的,飞鸟翌也说了,最好还是用你的bbl做非累积性分析。


业界快讯 More

  • 活动 
  • 精华 
More

阅读排行 More

关闭

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

返回顶部