本帖最后由 DusKing 于 2018-7-5 16:27 编辑
基于S.bus和F.port的遥控器信号基础上的输入信号平滑功能-官方说明书 由米克勒最后编辑 (注:Mikeller目前负责评审Betaflight固件功能,bug修正,并由他决定是否通过这些变更,然后编译到主程序中)
把遥控器的输出信号设定到8个通道,来获得最低的9ms延迟在FrSky高频头X模式下(在OpenTX中称为“D16模式”),S.Bus和F.Port接收机协议每9ms发送一次数据包,但是每个数据包只能传输最大八个通道的数据。
如果你只需要八个通道的话就够用的话,包括基础的四个控制通道(横滚俯仰油门偏航)和四个辅助开关通道,请确保将“Model Setup”页面中的通道范围设置成1-8,如下图所示: 这样设置能够确保每9ms发送一次完整的数据包(即步长间隔为9ms),来确保RC信号平滑的性能水平。
为什么设置频道数量这么重要?
如果FrSky X模式下设置超过8个通道,有些通道的信号可能是每一个9ms的数据帧都会发送,有些通道是间隔一个9ms的数据帧发送,那些每一帧都发送数据的通道延迟就是9ms,那些间隔一个9ms数据帧发送的通道,延迟就是18ms。目前还没有搞清楚到底是哪些频道会受到影响(注:可能当Mikeller看过Frsky接收固件的代码之后就知道了)。
但是你可以很明显的感觉到这种延迟,这对飞行控制具有负面的影响,当移动摇杆的时候这些延迟还会在电机信号中产生不必要的波纹。
为什么通道数量的多少会和Betaflight中的RC插值平滑设置值有关?
飞控固件中的PID中的微分D或前馈分量,例如D set point weight 或者油门增压,需要使用RC信号平滑功能。如果不使用这个功能,那么最终进入电调的信号将是十分尖锐混乱的。这种情况下,频繁的进行摇杆操作的时候,这些信号尖峰和会使得电机频繁进行不必要的加速减速,这会导致发热,进而浪费电池电量,但是对于飞行来说又没啥用。通过适当的调整RC信号平滑设定值,这些信号的尖峰可以被抹平,电机的转动将更平滑而且不会变热。
为了提供最佳的RC信号平滑设置,飞控需要知道发送旧数据包与新数据包之间的时间间隔。
当保持RC信号平滑设置为AUTO自动模式时,运行Betaflight3.4+固件版本的飞控会自动测量数据包之间的时间间隔。但是飞控并不知道遥控器与接收机之间通讯协议到底是怎样配置的,所以飞控会假设是S.Bus和F.Port,并将数据帧的时间间隔设置成9ms。
综上所述,需要将FrSky X模式下的通道数限制为8个。 如果玩家配置了8个以上的通道,则应该手动配置RC平滑设置,而不要使用自动测量值。
我如果将通道数量限制为8的话,我可以使用自动/默认设置吗?
当然可以,那样的话就完全没有问题了!
在CLI里面输入下面的命令,那么Betaflight3.4会自动设置最佳的滤波器的设定值
set rc_interp = AUTO save
什么时候我需要手动设置这个值?
在自动模式下,Betaflight会假设用户已经将FrSkyX模式的通道数限制到不大于8个,并且假设数据包的步长间隔为9ms。在此基础上,它通常将滤波器的频率设置为50hz,如果你还在使用旧版本的插值平滑功能,那么窗口区间的延迟是11ms。
你可以手动指定一个较低的滤波器频率来消除进入电调控制信号的RC输入信号尖峰,但通常来说这并不是必须的。如果用户将Dset point weight或者油门增压的值调的比较高,造成了较大信号波纹的时候,较低的设定值确实可以使ESC信号更加平滑。但不幸的是这种平滑会增加延迟,会拖延并减少前馈的效果,这并不是一件好事。通常来说最好保持默认值的设定,这样会在控制信号内保持一部分噪声(注:考虑到完全消除的话,滤波就太严重了,会导致原始输入信号的失真)。如果S.Bus的步长间隔为9ms,则飞控会自动设置成50hz。在尝试降低低通滤波器频率来降低RC信号输入的波纹时,ctzsnooze建议最低设定值不要低于30Hz。
如果我需要使用8个以上的通道怎么办?如果在FrSky X模式下需要用到超过8个S.Bus或者F.Port通道的话,那么最好将通道范围设置成1-16,这样所有的通道的步长间隔都相同,并将两个RC平滑滤波器手动配置为25hz,插值时间设置为19ms。
注:个人理解,这样只是便于飞控使用RC输入平滑功能,确保每一帧的数据都能被正确滤波,但是对于延迟来说,就是8通道的9ms VS16通道的18ms,虽说都是毫秒级别的响应,但是对于飞控来说,明显延迟越短越好。我也飞过一些烂控,如果控制延迟很长,的确能感觉出来。 如果通道的数量设置成8-16之间的数字,比方说是11通道,那么将在第13通道上面收到步长间隔为9ms的数据,在第3通道上面收到步长间隔为18ms的数据。这时就需要用黑匣子记录来识别那些通道是快的那些通道是慢的。如果所有的动态控制信号(注:油门,俯仰,横滚,方向)都在快速通道上面而所有辅助通道都在慢速通道上面的话,那么RC平滑插值的默认值足以优化性能。(注:问题在于现在还不知道接收机是如何分配这些通道信号的,不知道是不是真正的把控制飞行的4通道排在前面)
为什么不用旧的插值方法而使用基于滤波器的RC平滑插值?
因为这种方法更快,延迟更低,可以保证输出的ESC信号更加平滑,受looptime抖动造成的负面影响更小,并且可以更好地处理接收机链路中数据包丢失的情况。
注:RC输入平滑在3.4的固件中默认是关闭的,3.4包括之前的固件仍然是使用老的两点插值平滑方法。
同样,鼓励大家去 https://github.com/betaflight/betaflight/wiki/SBus-FPort-and-RC-Smoothing 官方发布页面查询,获得更多第一手信息
|