前馈控制与反馈控制(Feedforward vs. Feedback Control)

本章定位:理解前馈控制和反馈控制的区别,以及 PD 控制在角色动画中的定位。


一、基本概念

反馈控制(Feedback Control)

定义:根据当前状态目标状态的误差来调整控制输出。

$$ \tau = f(\text{当前状态}, \text{目标状态}) = f(e(t)) $$

核心特征

  • 依赖传感器测量当前状态
  • 根据误差调整输出
  • 可以抵抗扰动和不确定性

框图

flowchart LR
    Ref[目标状态] --> Sum((+/-))
    Sum --> Controller[控制器]
    Controller --> Plant[被控对象]
    Plant --> Output[输出]
    Output --> Sensor[传感器]
    Sensor --> Sum

例子

  • PD 控制:\(\tau = k_p(q_{\text{des}} - q_{\text{curr}}) + k_d(\dot{q}{\text{des}} - \dot{q}{\text{curr}})\)
  • 巡航控制:根据当前速度调整油门
  • 恒温器:根据当前温度调整加热

前馈控制(Feedforward Control)

定义:根据目标状态系统模型预先计算控制输出,不依赖当前状态测量。

$$ \tau = f(\text{目标状态}, \text{系统模型}) = f(q_{\text{des}}, M, C, G) $$

核心特征

  • 不依赖传感器
  • 基于模型预先计算
  • 无法抵抗未建模的扰动

框图

flowchart LR
    Ref[目标状态] --> Controller[控制器]
    Controller --> Plant[被控对象]
    Plant --> Output[输出]

例子

  • 根据期望加速度预先计算需要的力矩
  • 钢琴自动演奏:按预设程序执行
  • 洗衣机:按预设程序运行,不检测衣服干净程度

二、核心区别

维度反馈控制前馈控制
输入当前状态 + 目标状态仅目标状态 + 模型
误差纠正✅ 可以❌ 不可以
抗扰动能力✅ 强❌ 弱
响应速度受限于误差出现可以预先动作
稳定性可能振荡取决于模型精度
模型依赖

三、PD 控制是反馈还是前馈?

这个问题很复杂...

从公式角度看:PD 是反馈控制

$$ \tau = k_p (q_{\text{des}} - q_{\text{curr}}) + k_d (\dot{q}{\text{des}} - \dot{q}{\text{curr}}) $$

反馈特征

  • 使用了当前状态 \(q_{\text{curr}}, \dot{q}_{\text{curr}}\)
  • 根据误差 \(e = q_{\text{des}} - q_{\text{curr}}\) 计算输出
  • 可以抵抗扰动

从系统角度看:PD 可以是前馈控制

在角色动画的完整系统中:

flowchart TB
    subgraph "中层策略"
        Traj[轨迹生成]
    end

    subgraph "底层执行"
        PD[PD 控制器]
    end

    subgraph "仿真器"
        Sim[物理仿真]
    end

    Traj -->|"目标状态 q*<br/>(位置,不是 q)"| PD
    PD -->|"力矩 τ"| Sim
    Sim -->|"新状态"| Traj

前馈特征

  • PD 的输入是轨迹生成器输出的 \(q^*\)
  • \(q^*\) 是期望位置,不是当前状态 \(q\)
  • PD 在这个层次上是执行器,不是控制器

正确答案:取决于观察层次

观察层次PD 控制类型原因
关节级别反馈控制使用当前关节状态计算力矩
系统级别前馈控制目标状态由上层决定,PD 只是执行

四、PD 控制器的两种形式

1. 纯反馈 PD(无前馈项)

$$ \tau = k_p (q^* - q) + k_d (\dot{q}^* - \dot{q}) $$

特点说明
力矩来源100% 来自反馈项
输入仅需目标状态 \((q^, \dot{q}^)\)
优点简单、无需轨迹优化
缺点稳态误差大、响应滞后、需要较大增益
适用场景简单动作、对精度要求不高

DeepMimic/AMP 等深度学习方法采用这种形式

  • RL 策略输出目标状态 \((q^, \dot{q}^)\)
  • PD 控制器负责计算力矩

2. 前馈 - 反馈复合 PD(有前馈项)

$$ \tau = \underbrace{\tau^}_{\text{前馈}} + \underbrace{k_p (q^ - q) + k_d (\dot{q}^* - \dot{q})}_{\text{反馈}} $$

特点说明
力矩来源前馈 \(\tau^*\) + 反馈 \(\text{PD}\)
输入目标状态 \((q^, \dot{q}^)\) + 前馈力矩 \(\tau^*\)
优点跟踪精度高、稳态误差小、增益可设小、动作更自然
缺点需要轨迹优化或逆动力学计算 \(\tau^*\)
适用场景高精度跟踪、复杂动作

前馈项 \(\tau^*\) 的来源

  1. 轨迹优化:同时优化状态轨迹和控制轨迹,\(\tau^*\) 作为前馈项
  2. 逆动力学:给定期望运动 \((q^, \dot{q}^, \ddot{q}^*)\),计算需要的力矩

3. 两种形式的对比

维度纯反馈 PD前馈 - 反馈复合 PD
公式\(\tau = k_p e + k_d \dot{e}\)\(\tau = \tau^* + k_p e + k_d \dot{e}\)
力矩分配反馈 100%前馈 60-80% + 反馈 20-40%
跟踪精度较低(有稳态误差)较高(前馈抵消大部分力)
抗扰动能力
参数整定\(k_p, k_d\) 需较大\(k_p, k_d\) 可较小
动作自然度可能僵硬更自然流畅
计算成本中(需计算 \(\tau^*\))

4. 直观类比:开车

纯反馈 PD前馈 - 反馈复合 PD
场景新手开车上山老司机开车上山
做法看速度表,慢了加油,快了收油凭经验预先加油门,同时微调
结果能开,但速度波动大开得平稳、省油

5. 实际建议

推荐方案:前馈 - 反馈复合控制

参数分配建议

  • 前馈项 \(\tau^*\):承担 60-80% 的跟踪任务
  • 反馈项 \(k_p e + k_d \dot{e}\):承担 20-40% 的纠偏任务

好处

  • 反馈增益可以设小,动作更自然
  • 前馈提供主要驱动力,跟踪更精确
  • 反馈负责抗扰动,系统更鲁棒

五、在角色动画中的应用

纯反馈控制的局限

如果只用反馈控制:

$$ \tau = k_p (q_{\text{des}} - q_{\text{curr}}) + k_d (\dot{q}{\text{des}} - \dot{q}{\text{curr}}) $$

问题

  1. 稳态误差:需要误差才能产生力矩
  2. 响应滞后:误差出现后才纠正
  3. 被动性:无法主动预测

前馈 + 反馈的组合控制

最优方案:结合前馈和反馈的优势

$$ \tau = \underbrace{k_p e + k_d \dot{e}}{\text{反馈}} + \underbrace{\tau{\text{feedforward}}}_{\text{前馈}} $$

其中前馈项:

$$ \tau_{\text{feedforward}} = M(q)\ddot{q}_{\text{des}} + C(q, \dot{q}) + G(q) $$

框图

flowchart LR
    subgraph "前馈路径"
        Ref[目标状态] --> Model[逆动力学模型]
        Model --> Sum((+))
    end

    subgraph "反馈路径"
        Ref --> Sum2((+/-))
        Output[输出] --> Sensor[传感器]
        Sensor --> Sum2
        Sum2 --> PD[PD 控制器]
        PD --> Sum
    end

    Sum --> Plant[被控对象]
    Plant --> Output

优势

  • 前馈项负责精确跟踪目标
  • 反馈项负责抵抗扰动
  • 两者结合实现最优控制

六、DeepMimic/AMP 中的控制类型

DeepMimic 的控制架构

flowchart TB
    Mocap[参考动作] --> Reward[奖励函数]
    Reward --> RL[RL 策略训练]
    RL --> Policy[策略网络 π(a|s)]
    Policy --> PD[PD 控制器]
    PD --> Sim[物理仿真]

控制类型分析

模块控制类型说明
策略网络前馈 + 反馈输入当前状态 s,输出动作 a
PD 控制器反馈使用当前关节状态计算力矩
整体系统反馈根据当前状态调整输出

AMP 的控制架构

flowchart LR
    Data[无标注 mocap] --> Discriminator[判别器 D]
    Discriminator --> Policy[策略π]
    Policy --> Sim[仿真]
    Sim --> Discriminator

控制类型

  • 对抗学习训练策略
  • 策略输出关节力矩或 PD 目标
  • 本质上是反馈控制

七、实际应用中的选择

何时使用反馈控制?

场景原因
有外部扰动反馈可以纠正误差
模型不确定不依赖精确模型
需要鲁棒性反馈提供稳定性

何时使用前馈控制?

场景原因
已知轨迹可以预先计算
快速响应不需要等待误差
模型精确前馈效果准确

最佳实践:组合使用

总控制 = 前馈(逆动力学) + 反馈(PD)

比例建议

  • 前馈:60-80%(承担主要跟踪任务)
  • 反馈:20-40%(负责误差纠正)

八、关键要点总结

  1. 反馈控制

    • 根据当前状态与目标的误差调整输出
    • 可以抵抗扰动
    • PD 控制是典型的反馈控制
  2. 前馈控制

    • 根据目标状态和模型预先计算
    • 无法抵抗未建模扰动
    • 响应更快,可以"预见"动作
  3. PD 控制的定位

    • 关节级别:反馈控制
    • 系统级别:前馈控制的执行器
    • 完整系统:通常与前馈组合使用
  4. 实际应用

    • 纯反馈:简单但有稳态误差
    • 纯前馈:无法抵抗扰动
    • 前馈 + 反馈:最优方案

九、与前向/后向动力学的关系

动力学类型对应控制类型说明
前向动力学-给定力求运动(仿真器)
后向动力学前馈控制给定运动求力(逆动力学)

关系

  • 前馈控制需要解决后向动力学问题
  • 反馈控制只需要前向动力学(仿真)

📚 深入学习


本文出自 CaterpillarStudyGroup,转载请注明出处。 https://caterpillarstudygroup.github.io/GAMES105_mdbook/