[FPV知识] Betaflight绝对控制Absolute Control详解 - 如何让你的飞机更听话

中文哔哩哔哩FPV 知识7:59
在哔哩哔哩观看
← 返回简体中文教程与视频指南

本篇用直观例子解释 Betaflight 的 Absolute Control:飞行器无法百分之百跟随 Setpoint 时会留下跟踪误差,而机体在三维空间转动后,这个误差也应转换到新的机体系坐标,才能继续表达飞手原来的控制意图。视频把 Absolute Control 描述为对三轴误差进行向量旋转,并通过修正 Setpoint 帮助完成未完全执行的动作。它基于 2021 年代码和作者个人理解,参数名称、实现和是否仍受支持必须以当前 Betaflight 源码与文档为准。

Absolute Control 想解决的误差方向问题

飞手给出摇杆命令后,PID 控制器努力让角速度跟随 Setpoint,但受惯性、推力、扰动和控制能力限制,实际响应总会留下误差。如果机体姿态随后改变,旧误差不能继续原封不动地留在原轴上,因为机体系的 Roll、Pitch、Yaw 方向已经一起转动。

视频用二维道路掉头作类比:车辆原先需要向左回到中线,掉头后同一个世界方向修正,在车体坐标中可能变成向右。若不旋转误差,控制器可能沿错误方向继续补偿。真实飞行是三维角速度问题,类比简化了数学,但抓住了坐标变换的核心。

从 I-Term Rotation 到三轴误差旋转

按视频的历史解释,I-Term Rotation 主要处理 Yaw 变化对 Roll/Pitch 积分误差方向的影响;Absolute Control 则把三根轴一视同仁,一根轴的姿态变化可能改变另外两轴误差的表达,因此对完整误差向量进行旋转。

这可以理解为更一般的坐标变换思路,而不是简单给某一轴多加一个增益。视频还推测旧功能未来可能被替代,但那是录制时状态,不是当前版本事实。今天检查配置时,应先确认目标固件是否仍包含相关命令。

它如何影响飞手给出的 Setpoint

作者把该功能比作一双“辅助小手”:飞手的大方向仍由摇杆决定,控制器捕获未完成的跟踪误差,把误差旋转到新的机体方向,经过限制与计算后用于修正 Setpoint,让飞机继续补上先前没有完全执行的部分。

这个比喻不意味着固件会预测飞手意图,也不保证任何机体都更听话。Absolute Control 的效果取决于误差估计、限制、滤波和整套 PID 行为;配置不当可能改变操控感。对精准动作有潜在价值,但必须通过日志和可重复测试验证。

理解四类参数,而不是盲目复制数值

视频在 CLI 中用“get abs”查看相关参数,重点介绍 Absolute Control Gain。Gain 类似强度系数:为 0 时相当于关闭,数值增大时,被带入修正的误差比例增加。Absolute Control Limit 与 Error Limit 用来约束作用范围,防止无限放大误差。

作者明确表示自己没有把 Absolute Control Cutoff 讲透,也邀请控制和信号专业的观众补充。因此本文不为 Cutoff 编造解释,也不提供通用数值。版本差异可能改变默认值、单位和命令;调参前应保存 diff,并阅读对应固件版本的源码或官方说明。

安全、可回退的验证方法

先备份完整 CLI diff,确认电机、滤波、PID 和机械状态已稳定,再在相同地图或受控飞行路径中建立关闭/当前值基线。一次只改一个相关参数,用相同 Rates、桨叶、电池和动作对比 Setpoint 与 Gyro 跟踪、异常振荡和飞手手感。

如果当前固件已移除或重构 Absolute Control,不应为了复刻视频而降级生产用飞机。历史教程的价值在于理解误差向量旋转;具体实现应服从当前版本。任何实机验证都应从小幅动作开始,并保留立即回退的配置。

操作步骤

  1. 先理解误差为何需要旋转

    把机体转动后的坐标变化与二维掉头类比对应起来,再阅读参数。

  2. 区分 Absolute Control 与旧 I-Term Rotation

    按视频历史语境,前者处理更一般的三轴误差向量旋转,后者范围较窄。

  3. 确认当前固件是否支持

    备份 CLI diff,在对应版本中查询相关命令;不要假设 2021 年参数仍存在。

  4. 先从 Gain 的含义入手

    理解 0 表示关闭、增大代表更强误差修正,但不直接复制视频或他人的数值。

  5. 保留 Limit 与 Cutoff 的版本边界

    核对当前文档和源码;视频作者未完整解释 Cutoff,本文也不补写推测。

  6. 用单变量和日志验证

    保持硬件、Rates 与测试动作一致,一次只改一项并比较跟踪、振荡和手感。

常见问题

Absolute Control 是自动驾驶吗?

不是。它仍围绕飞手 Setpoint 工作,按视频解释对未完成的跟踪误差做坐标旋转和受限修正。

为什么机体转动后误差方向也要变化?

因为 Roll、Pitch、Yaw 是机体系坐标。机体方向改变后,同一个世界方向修正在新机体系中会投影到不同轴。

Gain 越大飞机越精准吗?

不能这样推断。更大 Gain 意味着更强误差修正,也可能改变操控感或暴露其他问题,必须小步并用日志验证。

Absolute Control Cutoff 应该设多少?

视频作者明确没有把它讲清,本文不提供猜测值。请查对应 Betaflight 版本的源码、文档与默认配置。

当前 Betaflight 还一定有这些参数吗?

不一定。视频发布于 2021 年,功能、命令和默认值可能被重构或移除,应在当前目标固件中确认。

完整时间轴文字稿

文字稿按视频时间排列,便于快速定位讲解内容。文字稿语言:简体中文。

今天来跟大家聊一聊什么呢?今天我们来聊一聊这个 Betaflight 的绝对控制,也就是 Absolute Control这个功能在网上很少有人提及但是少有人提及不代表这个功能不重要或者说这个功能不好用在我看来,这个功能其实是非常非常好用而且尤其是对于这个 Racing或者你在一些比较狭窄的地方 Free Freestyle 的时候这个功能尤其重要

我们先来看一下这个功能它主要是解决一个什么问题的我们知道在这个飞飞机的时候我们在打完摇杆这个飞机要要要track我们的这个setpoint对不对但是往往呢这个飞机不可能做到百分之百的这个track我们的setpoint总会有一些误差对不对那这些误差呢在飞机进行各种运动之后这些误差应该相应的做一些这个旋转才能够

更好地反映我们当时的操控的意愿。我刚刚说的这一段稍微的难以理解,我们用一个例子来看,飛机是在三维空间中运动,所以有点难以分析。这里我们用一个二维空间的运动来代替,来减化这个分析。我们假设老王刚买了一架老爷无人机。老爷无人机只能在一个二维的公路上行驶。

然后我们交警规定了我们这个行驶这个老业无人机的时候只能在这个中线上必须要在这个中线附近行驶才是安全的现在这个老王呢不小心他就这个跑到跑到另外一头去了所以呢这个时候他觉得我得往中间走才能够踩这个踩安全对不对所以他就开始慢慢往中间开对不对往中间开但是呢还没开完还开到一半的时候

这个时候接到一个电话,一看,诶,小莉来电话,小莉说,老王老王,今天小莉需要你。老王一听,诶,易不容辞。怎么办呢?掉头,现在老王就掉头了,对不对?现在老王掉头。我们刚刚在这里的时候,老王是有一个什么,有一个什么这个无差。刚刚在这里的时候,我们老王需要,需要往这个,往左边走,对不对?需要往左边走,才能回到中线。现在在这里掉头了。

吊头它需要往里边走。虽然对于我们来说是我们的左边,但是对于老王来说这个地方变成什么?这个地方变成它的右远了,对不对?就如果它还往左边走的话,如果它还继续往左边走,那是不是它会离这个中线越来越远?所以它吊完头之后,这个向左走的误差现在变成了什么?现在变成了需要向右走。这个地方稍微有点难以理解,我再来一遍。

刚开始,老王在没接到小莉电话的时候,他只需要往左走,就能够逐渐回到中线上。完了接到小莉的一通电话,叫他回家,这个小莉,这个老王掉头,掉完头之后,这个向左的误差,现在被变换了,需要变成向右,才能回到中线,否则的话,反而离中线越来越远。那这个upstool control 绝对控制,就是用来解决这个问题的。

用比较学术的语言来讲就是误差的实量旋转大家如果follow Betaflight比较久的话知道之前有个功能叫做Item RotationItem Rotation主要也是用来解决这种类似的问题只是说Item Rotation它只对由于Yaw的变换对于Raw和Page的影响做旋转

Apps Control 这功能对三根轴都一视同仁,每个轴的变化都会引起另外两个轴上无差的变化,它才会对它们做实量旋转。所以Apps Control 可以理解为是Item Rotation 的增强吧。所以Item Rotation 其实可能在不久的将来就会被从代碍库移除掉。目前就是没人做这个工作而已。

大家可以仔细琢磨琢磨这个粒子,虽然这个粒子做了很多减化,一个是把三维空间变成了二维空间,还有一个是把这个角速度减化成了这个位置,但其实它的基本原理都是类似的。

对于我们飞飞机来说因为我们在飞飞机的时候总会有一些误差的有的即便是这个PID算法极力的想减小这个误差但是在我们做每个运动的时候它都会留下一些误差那留下的这些误差呢最终就会被我们绝对控制这个功能补货到补货到之后加以使用旋转然后重新把旋转之后的

物差做一些运算之后最终Apply到我们的setpoint上面。就相当于什么呢?相当于你的一双手在开飞机对不对?但其实还有另外一双这个Betaflight小手在那帮你搬你的这个摇杆,把你把这个飞机刚刚没有执行完的动作,通过它的这双小手搬摇杆把它执行完。我不知道这样讲大家理由理解。就是

你的一双大手在操纵飞机保证飞机的这个主要方向是对的然后还有这么一个小秘书在旁边把这个飞机为执行完的动作然后再通过摆摇杆的方式我说的摇杆是摆这个setpoint的方式摆setpoint的方式把这个飞机的刚刚没执行完的东西再让它继续执行所以为什么这个功能对于这个操作精度要求高的这个飞手来说

理解了这个功能之后我们再来看一下这个Betaflight里面怎么来设置这个功能啊我们打开这个面铃行,敲入这个ZABS我们可以看到它其中有四个可以调整的参数啊其中最主要的参数就是这个Absolute Control Gain这个Gain是什么意思呢?就是一个增益了这个增益是个什么意思呢?这个增益其实就是

相当于一个大家知道的音量旋钮,你再调把这个电视的声音调大或者调低,那你调了就是这个声音的这个增益,其实就是一个系数了,把这个误差之后会呈上这个系数,这个系数如果为0,那你其实就是把这个apps上桌的功能关掉,然后这个系数越大呢?

它会帮你带过来的误差就会越大。这样的就是它的Absolute Control这个东西在工程的整体运行强度就会更高,越小它的整体运行强度就会越低。另外还有这个还有其他一些几个参数会设置这个Absolute Control Limit还有这个Error Limit其实就是设置两个上下线了这个不是特别重要。还有一个参数呢就是这个Absolute Control Cutoff

这个参数它做什么稍微有点复杂啊我在这个视频里面我也没自信我能把它讲得清楚但是我知道我的听众里面很多这个工业控制或者信号系统相关专业出生的这个朋友如果大家有了解这个功能的请在这个弹幕区或者评论区补充让我们大家一起学习共同进步那好那今天呢就跟大家闹这么多如果你觉得这个视频对你有帮助

还请别忘了一键三连我是Horank,那我们下期再会!