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

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

Betaflight 3.1.X “反重力”参数详解

  [复制链接]
跳转到指定楼层
楼主
发表于 2017-4-30 00:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   此贴已被收录至论坛精选头条。更多精彩内容戳“5i上头条” 想知道上头条的方法戳“你也可以上头条”




本文源自约舒华·邦德威尔的youtube教学视频,由于是听译,不是一字一句都翻译出来,但是把关键的意思应该都翻译到位了,这个暂时还没有找到书面的材料,尽快的把这个关键信息传递出来!

=========开始了!耳机戴好!键盘敲起来!==========

不要被这个参数名字骗了。。。它不是让你的飞机能够对抗重力3D飞行,或者是能上你悬在天上飘啊飘和失重一样。

我们知道在我们猛轰油门,或者猛收油门的时候,飞机的高度会发生变化,这个时候会发生一些事情比如(油门会干预俯仰方向,使得俯仰角度发生变化)。你可以把你的I值,设置到10左右,飞一下就能很明显的看到这个现象。

有时也会是yaw方向角度发生变化。这个时候最好的方法就是增加I值,增加I值可以抑制这种飞机在轴线方向的漂移,但是我们也知道,这个I值不是越高越好,高了飞机的动作会很硬,或者引起震颤。

这个原因是一直以来都存在的,因为I值的响应是很慢的,I值只能纠正一些缓慢的漂移(这个也是I值的作用),但是当你猛轰猛收油门大机动飞行的时候,I值根本就跟不上飞机的机动变化。P值的响应非常迅速,但是P值的作用时间很短,它无法纠正轴线上面累积起来的漂移,为了解决这个问题,BF引入了Anti_gravity这个参数。

之所以叫“反重力参数”,主要是考虑你突然加油门弹射飞出去,或者收油门掉下来,看上去你就是在飞跃,有点反重力的意思,所以取了这个名字(译者注:老外真是脑洞大开)

这个anti_gravity_gain的作用,是当你在一瞬间短时间的时候,快速的移动油门的时候,这个gain参数会短暂的将I值迅速的增大,获得一个很高的I值。意味着当你油门增加最需要I值的时候,这个参数会迅速的将I值放大。但是当你平飞或者油门变化不大的时候,你可以保持一个很小的I值。

接着约舒华就演示了一下I值从30~60(60他认为已经很高了),主要是加油门,然后迅速收到零的,这是从FPV里面看到飞机在收油的时候是在左右飘的。30比较明显,60以后好一些,但是从FPV里面还是能看出来(他用了一棵树当参照物,很明显)

然后把anti_gravity_gain = 2.0 再搞了一次,还是用一棵树当参照物,做一个弹射的动作,可以看到几乎没有漂移,飞机几乎是固定位置的,然后让飞机倾斜一些角度,可以发现在roll方向有很小的一点点漂移。

然后这个约舒华建议把所有的飞机都引入这个参数调整,这个值可以在2,2.5到3之间都可以。(是多少就是当引入这个I值的时候,放大多少倍)。他也说到,有些飞机的D flaut参数是设置为零的,可能造成飞机进入横滚以后,因为引入了这个参数,造成I值溢出,就一直横滚下去直到炸鸡。这个几率很小,约舒华自己的飞机弄了一圈说没有这个问题,他认为anti_gravity_gain 在2~3之间是安全的。或许这个功能需要更多时间来完善,就会很完美了。

解释一下anti_gravity_gain 后面的2 和3 是什么意思,这里的2 和3 就是加倍的意思,也就是当这个参数生效的时候,I值会和这个gain的设置值相乘以后,把这个I值引入PID计算。如果I值是30,gain是2,那么当这个作用生效的时候,I值就变成60。

约舒华建议你PID的I值,按照普通飞行的I值设置就可以了。然后来做一些弹射,瞬间坠落,等等大油门变化量大机动动作,来看飞机的漂移,然后把anti_gravity_gain 慢慢的增大来试试这些情况有没有改善。按照他的测试结果,gain的值从2~5,总能解决你的问题。(5都是乘以5倍了……%)

还有一个参数是anti_gravity_gain_threshold 默认值是35,这个参数是用来检测你的油门变化幅度的,然后来决定是不是要启用anti_gravity_gain的加成,注释是当你的油门变化率在百万分之一秒的时间里面(还是十分之一秒的时间内,这个没有听的太清楚)你的油门变化率超过35%,那么作为一个引入gain的判断标准。所以这个值越小,你的油门变化比较慢的时候,这个gain的参数就引入了,你的这个值越大,你的油门得变化的比较快,这个gain参数才能引入。

约舒华建议这个参数保持默认,因为如果设置的比较小,可能你油门动的比较慢的时候,I值就开始翻倍了,忽然发现飞机怎么锁定了,动的很机械。设置的比较高的话,你需要I值增加,但是就是不来。这个默认参数至少是经过测试的,适合大多数人,如果你不是特别清楚自己在干什么的话,还是保持默认吧。

约舒华建议这个anti_gravity 功能生效的话,最好在OSD上面做个显示,这样至少你知道怎么样的油门变化,这个功能就参与PID计算了。然后你就知道应该怎么改这个参数了。反正约舒华建议不要修改threshold,就只修改gain就可以了。他建议gain的值对于大多数飞机来说,2~2.5就足够了(毕竟2都是I值翻了两倍嗯,虽说是一瞬间的事情)

所以这个anti_gravity(反重力)听上去是个很酷炫的名字,实际解决的就是一个飞机在大机动情况下瞬间增大I值提高大机动下的轴向抑制漂移的问题。

考虑到BF固件3.1.5和3.1.6里面,anti_gravity_gain=1.0,这就基本是禁用了。
3.1.7里面 anti_gravity_gain=3.0 模型这也有点高了,其他版本没有刷过,详情可以查阅一下我翻译的更新说明。

当然建议还是刷3.1.7吧,可以设置一个辅助开关来关闭这个anti_gravity功能,这样就可以试试看手感变化了。

PS:需要注意的是,3.1.7 固件,默认PID数值改变了,Pitch 和Roll 的D值分别为35和30,这个D值相对较高一些,可以有效的抑制洗桨震颤,当然也会造成飞机姿态过于锁定,恢复到原来默认的21~22,飞起来基本一致,但是飞power Loop最后那改出的一下,洗桨震颤还是比较难避免。
另外3.1.7,PID感觉算法修改过了,按照3.1.5调整好的P值全部都偏小,需要放大很多飞机修正的力度才够用。另外加上反重力参数的影响,基本上可以说原来调整PID的步骤和经验,都需要调整才能适应新的固件变化。现在飞3.1.7大约有将近2小时的飞行时间,总体感觉PID调试就是P需要放大,D大一些没有太大关系,电机不会过热。I基本可以保持非常小的数值基本可以不用调整(反正有反重力参数么)。



祝大家飞的开心!



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

沙发
发表于 2017-4-30 00:27 | 只看该作者
怪不得升级之后感觉很怪,又改算法,
3
 楼主| 发表于 2017-4-30 00:36 | 只看该作者
zaq321 发表于 2017-4-30 00:27
怪不得升级之后感觉很怪,又改算法,

哈,那你也可以刷回3.0.1噻,不过说实在的,3.1.X之后的固件带来的优势要比3.0.1强大太多,就光PID优化这一块就足够秒杀3.0.1这个老固件了。
知道主要修改了哪些参数,你就可以调整到最优化的手感噻。

4
发表于 2017-4-30 01:16 | 只看该作者
支持讲解帖。
受教了。
5
发表于 2017-4-30 04:47 | 只看该作者
收藏一下
来自苹果客户端来自苹果客户端
6
发表于 2017-4-30 09:53 | 只看该作者
学习了。。。。。。。。。。
7
发表于 2017-4-30 10:18 | 只看该作者
顶一下  大神 哈哈
8
发表于 2017-4-30 10:19 | 只看该作者
9
发表于 2017-4-30 10:32 ——“来自手机” | 只看该作者
学习了。我在mode界面看见了ANTI GRAVITY的飞行模式,这个和文中的ANTI GRAVITY GAIN有什么关系?
10
发表于 2017-4-30 10:36 | 只看该作者
还在琢磨3.01固件的pid又出新算法,又要适应,
来自苹果客户端来自苹果客户端
11
发表于 2017-4-30 11:34 | 只看该作者
317 的反重力 Mode 是一样的效果么?
12
发表于 2017-4-30 11:52 | 只看该作者
纸飞歼轰 发表于 2017-4-30 10:32
学习了。我在mode界面看见了ANTI GRAVITY的飞行模式,这个和文中的ANTI GRAVITY GAIN有什么关系?

就是在大油门时 i 提高的倍数

比如ANTI GRAVITY GAIN = Y
在大油门时,你的  i 就会成为 i 乘 Y。


13
发表于 2017-4-30 12:07 | 只看该作者
学习,谢谢分享。
来自安卓客户端来自安卓客户端
14
发表于 2017-4-30 12:41 | 只看该作者
请教一下,我的飞机在打ROLL进行翻滚的时候,突然会不受控的进入快速连续的翻滚,已经因为这个炸过一次机了,我需要修改哪个参数才能改善这个现象啊
来自安卓客户端来自安卓客户端
15
 楼主| 发表于 2017-4-30 12:45 | 只看该作者
l917931 发表于 2017-4-30 12:41
请教一下,我的飞机在打ROLL进行翻滚的时候,突然会不受控的进入快速连续的翻滚,已经因为这个炸过一次机了 ...

如果是3.1.7固件,可能是I值太高溢出了,这个具体处理需要改D值一个啥啥参数我忘记了。。。
你试试看降低I值试试。

打roll进入连续翻滚,我在钻门的时候天线挂到布的时候翻过一次,快速不受控横滚速度超快,但是一拉油门自己改出就ok了,这个可能需要多研究一下。
来自苹果客户端来自苹果客户端
16
发表于 2017-4-30 12:48 | 只看该作者
飞鸟翌 发表于 2017-4-30 12:45
如果是3.1.7固件,可能是I值太高溢出了,这个具体处理需要改D值一个啥啥参数我忘记了。。。
你试试看降低 ...

就是3.1.7固件,我现在很烦恼啊,都不敢飞带翻滚的动作了,修改I值低一点就可以了吗?翻滚的时候我没有碰到什么东西,他自己就进去了
来自安卓客户端来自安卓客户端
17
发表于 2017-4-30 12:52 ——“来自手机” | 只看该作者
飞鸟翌 发表于 2017-4-30 12:45
如果是3.1.7固件,可能是I值太高溢出了,这个具体处理需要改D值一个啥啥参数我忘记了。。。
你试试看降低 ...

我遇到过更奇怪的。airmode相当于怠速,油门为0也能稳定,如果不开airmode那么油门0桨不转就无法控制姿态了。


奇怪的是,我F3和F4飞控BF3.1.6/7最大油门飞机会一边倒甚至侧翻(早期BF没试过忘了)。但是打开airmode满油门就不会一边倒了。

其中我没碰过antigravity
18
发表于 2017-4-30 18:08 | 只看该作者
l917931 发表于 2017-4-30 12:41
请教一下,我的飞机在打ROLL进行翻滚的时候,突然会不受控的进入快速连续的翻滚,已经因为这个炸过一次机了 ...

是不是没开airmode或者油门收得太小了。
来自苹果客户端来自苹果客户端
19
发表于 2017-4-30 21:06 | 只看该作者
飞鸟翌 发表于 2017-4-30 00:36
哈,那你也可以刷回3.0.1噻,不过说实在的,3.1.X之后的固件带来的优势要比3.0.1强大太多,就光PID优化这 ...

我有一台鸡一直用cc3d,3.0.1,完全没问题,不影响飞行,

运算能力的提升和辅助功能的增加,我个人认为,和飞得好不好,没有必然关系,







20
 楼主| 发表于 2017-4-30 21:25 | 只看该作者
zaq321 发表于 2017-4-30 21:06
我有一台鸡一直用cc3d,3.0.1,完全没问题,不影响飞行,

运算能力的提升和辅助功能的增加,我个人认 ...

说的很对,就像藤原拓海能把AE86开出F1的感觉一样。
不过我的观点,正确理解手中的硬件,用好并发挥最佳性能,来匹配自己的飞行特点,是我喜欢的方式。
CC3D也就止步于3.0.1了,即使在这个版本下,关闭加速度计looptime到1K也是极限了,在BF极大的依赖looptime的运算速度算法下,已经被卡住性能了。

3.1.X以后,BF的PID控制器将完全基于FPU运算单元处理,这对于没有FPU的CC3D来说,就是被放弃了。更何况今年下半年BF要升级到16K的陀螺仪采样率,我觉得已经可以放弃F1级别的飞控了。国外基本也开始放弃老总线的F3了,主流基本是SPI总线的F3或者F4,F7也已经少量铺货了。
来自苹果客户端来自苹果客户端
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

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

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