# K3 · 从控制指令追踪到关节力矩

控制指令不自动等于力矩测量。控制器、时序、摩擦和输出上限都可能改变关节实际接收到的力矩。本课让你学会把这些效应逐一放进边界中思考。

关键问题不是“哪个执行器模型最丰富”，而是“当前证据要求我们加入哪个隐藏效应”。

## 指令正确，运动仍可能错误 {#failure}

假设目标位置是一段干净的扫频，但关节在高频处滞后，换向附近还出现方向相关的偏差。增加刚体惯量可能改善一张图，却掩盖了指令到力矩之间的问题。

先预测三个孤立效应的表现：固定的指令延迟、随速度方向变化的阻力，以及对称的力矩限幅。闭环运动中的线索可能重叠，因此实验必须改变每个效应所响应的条件。

## 定义从指令到力矩的边界 {#boundary}

一个简单控制器可以写成

$$
\tau_\text{cmd} = K_p(q_\text{des}-q) + K_d(\dot q_\text{des}-\dot q).
$$

之后的被辨识边界可以在机械动力学前包含延迟、限幅和阻力：

```text
q_des → 固定控制器 → 指令延迟 → 限幅/摩擦 → 关节动力学 → q、q̇
```

课程必须声明 Student 得到哪个信号。命令-only Student 不能使用 Oracle 的实际施加力矩来解释自己的结果。如果实际力矩被测量并属于目标边界，也要明确声明。

## 看见边界中的时序 {#media}

短片先展示机械图，再打开 PD 之后的力矩缓存。注意黄色指令和橙色输入的时间关系；这两个内部信号是 Oracle 诊断。

<figure class="clip"><video controls="" playsinline="" poster="../../../demos/manim/rendered/l1-boundary.png" preload="metadata"><source src="../../../demos/manim/rendered/l1-boundary.mp4" type="video/mp4"/><track kind="subtitles" label="English" src="../../site/subtitles/l1-boundary.en.vtt" srclang="en"/><track default="" kind="subtitles" label="中文" src="../../site/subtitles/l1-boundary.zh-CN.vtt" srclang="zh-CN"/></video><figcaption>延迟藏在哪里？</figcaption><details><summary>阅读视频说明</summary><p>延迟位于固定 PD 之后，作用于完整力矩指令。</p><p>图中的内部缓存和实际力矩没有加入只看指令与运动的拟合 API。</p></details></figure>

对于频率线索，观察固定延迟怎样占据更短周期的更大部分。相位公式提供纯延迟的局部直觉；闭环位置还受机械和控制器影响。

<figure class="clip"><video controls="" playsinline="" poster="../../../demos/manim/rendered/l1-phase.png" preload="metadata"><source src="../../../demos/manim/rendered/l1-phase.mp4" type="video/mp4"/><track kind="subtitles" label="English" src="../../site/subtitles/l1-phase.en.vtt" srclang="en"/><track default="" kind="subtitles" label="中文" src="../../site/subtitles/l1-phase.zh-CN.vtt" srclang="zh-CN"/></video><figcaption>啁啾为什么能揭示延迟？</figcaption><details><summary>阅读视频说明</summary><p>频率升高时，延迟仍为 0.080 秒。</p><p>延迟在周期中所占的比例增大；这并非直接测量电机时间常数。</p></details></figure>

## 每次只隔离一种执行器效应 {#comparison}

固定控制器和机械参数，每次改变一个隐藏效应：

| 孤立效应 | 能显现它的条件 | 首个对比 |
|---|---|---|
| 延迟 | 频率与指令时序 | 扫频与换向，重置指令历史 |
| 摩擦 | 速度方向与换向速率 | 低/高速，正/反向 |
| 限幅 | 指令幅值 | 阈值以下与以上 |

在还没有理解单项案例前，不要把延迟、摩擦和限幅一次放入 Student。更丰富的模型可能通过吸收另一种缺失效应来降低拟合误差。

## 对比摩擦线索 {#friction-media}

摩擦扩展采用另一条已声明边界：已知实际力矩进入旋转载荷；惯量已知，延迟、重力和饱和均关闭。两个 Student 使用同一组 t、u、q、qd 拟合，之后固定参数比较新输入。

<figure class="clip"><video controls="" playsinline="" poster="../../../demos/manim/rendered/l1-friction.png" preload="metadata"><source src="../../../demos/manim/rendered/l1-friction.mp4" type="video/mp4"/><track kind="subtitles" label="English" src="../../site/subtitles/l1-friction.en.vtt" srclang="en"/><track default="" kind="subtitles" label="中文" src="../../site/subtitles/l1-friction.zh-CN.vtt" srclang="zh-CN"/></video><figcaption>黏性阻尼能解释摩擦吗？</figcaption><details><summary>阅读视频说明</summary><p>阻力曲线是评估者诊断，白色为 Oracle，橙色为黏性模型，蓝色为摩擦模型。</p><p>留出位置残差中，蓝色接近零；橙色仍有结构。该模式不能单独证明摩擦。</p></details></figure>

## 阅读执行器证据 {#evidence}

上表是概念契约；L1 短片与报告给出已运行的合成实验证据。实际力矩或内部状态曲线都是 Oracle 诊断信息，除非本页明确声明它们是观测。

边界图、信号时序和按条件拆分的残差要一起看。相位偏移是延迟线索，不是电机电磁时间的直接测量。换向附近残差是阻力线索，不证明摩擦是唯一缺失项。大指令下响应变平，只有在指令确实超过上限时才支持限幅。

标出实际施加力矩和内部延迟状态等 Oracle-only 信号。它们可以解释曲线，但不能泄露给命令-only Student。

## 想一想 {#exercise}

比较两个短片：为什么摩擦 Student 可以看到实际力矩 u，而延迟 Student 不能看到橙色执行器输入曲线？

<details><summary>核对边界</summary><p>摩擦实验明确从已知实际力矩开始；延迟实验从位置指令开始，估计隐藏的指令到力矩时序。把实际力矩加入后者的拟合会改变问题。</p></details>

某条指令扫频在高频处出现类似相位的误差；低速换向出现方向相关误差；大幅指令在 Oracle 诊断图中显示实际力矩被截平。你分别用什么实验测试这三个假设？哪个信号必须对拟合器隐藏？

<details markdown="1">
<summary>查看参考思路</summary>

用频率对比和声明的指令历史测试延迟；用双向低/高速运动测试摩擦；用阈值下/上的幅值测试限幅。当 Student 需要从指令和运动中推断效应时，实际施加力矩和执行器内部状态必须隐藏。它们可以出现在解释图或评估者专用图中。
</details>

常见误区是用 Oracle 的实际力矩解释 command-only 拟合。如果还不能选择实验，固定控制器，只改变频率、方向或幅值。当每个假设都有一个能与其他假设产生不同预测的条件时再继续。

## 指令边界不能证明什么 {#limits}

等效指令延迟取决于边界画在哪里，不自动等于电机电磁时间常数。平滑阻力项不是完整摩擦定律；如果数据从未触及上限，拟合出的限幅只能是下界。

K7 会解释拟合值可能是物理、等效、干扰或不确定参数。L1 应用延迟和摩擦的隔离案例；L1-O 增加观测质量，L1-S 是选修的限幅案例。

继续阅读 [L1 · 执行器延迟与摩擦](../l1/index.zh-CN.md)。
