# K1 · 系统辨识基础

上一课讨论了为什么需要用实验数据改进模型。这一课把问题说得更具体：我们给系统什么输入，能测到什么，又想从数据中估计什么？

先沿用一个转动关节的例子。读完后，你应该能画出它的输入与观测，区分运动状态和模型参数，并解释为什么选模型和调参数是两件事。

## 先确定我们在研究哪一段系统 {#boundary}

给关节施加力矩，再记录它的位置和速度，就得到下面这条关系：

<div class="signal-flow" role="img" aria-label="已知力矩进入转动关节，产生可观测的位置和速度"><span>已知力矩</span><span aria-hidden="true">→</span><strong>转动关节</strong><span aria-hidden="true">→</span><span>位置与速度</span></div>

**输入**是进入所研究系统的量，**观测**是我们记录下来的量。中间包含哪一段物理过程，决定了我们要建立什么模型。这就是确定系统的边界。

这里假定已知实际施加的力矩。如果手里只有目标位置指令，就还需要解释控制器怎样把位置指令变成力矩。L1 会研究这段过程；在 L0 中，我们先把实际力矩当作已知输入。

## 状态、观测和参数各指什么 {#quantities}

关节转到哪里、转得多快，会随时间改变。它们描述系统此刻的情况，称为**状态**。传感器或记录程序提供的数据称为**观测**；观测可能只覆盖部分状态，也可能带有噪声。

**参数**描述模型中相对固定的特性。在第一个实验里，我们假定惯量和阻尼在一次运行中保持不变，并尝试从输入和运动数据中估计它们。

| 名称 | 在转动关节中的例子 | 在实验中的作用 |
|---|---|---|
| 输入 | 实际施加的力矩 $u$ | 驱动关节运动 |
| 状态 | 角位置 $q$、角速度 $\dot q$ | 描述此刻的运动 |
| 观测 | 记录的位置与速度 | 让我们比较模型和实验 |
| 参数 | 惯量 $J$、黏性阻尼 $b$ | 决定模型怎样响应输入 |

在 L0 中，位置和速度都能理想地观测到，所以状态和观测的数值一致。到了真实硬件，测得的位置可能有噪声，速度也可能需要从位置变化中计算。

## 用一个方程连接这些量 {#equation}

L0 使用下面的模型：

$$
J\ddot q+b\dot q=u
$$

$\ddot q$ 表示角加速度，也就是角速度变化的快慢。$J\ddot q$ 描述加速所需的力矩，$b\dot q$ 描述运动时的黏性阻力。已知输入 $u$ 和初始运动状态后，模型就能预测关节接下来怎样运动。

惯量越大，同样的净力矩带来的加速度越小；黏性阻尼越大，同样速度下的阻力矩越大。辨识时，我们根据这些量在实验中呈现出的关系，估计 $J$ 和 $b$。

## 选模型和调参数有什么区别 {#structure}

写下刚才的方程时，我们已经作出了选择：模型包含惯量和黏性阻尼。决定包含哪些效应，叫作**选择模型结构**。在这个结构里寻找合适的 $J$ 和 $b$，叫作**参数估计**。

假如实际系统还有明显延迟，仅调整惯量和阻尼可能只能改善部分运动。此时需要检查实验和误差，判断是否应该把延迟加入模型。换一个更努力的优化器，并不能保证补上模型里缺少的效应。

第一个实验会让产生数据的系统和用于拟合的模型采用同一个方程。这样可以先看清参数估计怎样起作用，再逐步研究模型不完整时会发生什么。

## 图中的三条曲线分别代表什么 {#models}

**真实系统**产生我们要解释的观测。合成实验中，它由已知参数的模拟器生成；视频和报告也会把它标成 *True system* 或 *Oracle*。

**初始模型**使用辨识前的参数猜测。**辨识后模型**使用根据实验数据估计出的参数。比较它们的预测，就能看到辨识改变了什么。

真实参数用于核对结果。拟合程序使用的是输入和观测数据，以及事先选定的模型和参数范围。

## 想一想 {#exercise}

你已经记录了施加的力矩、关节位置和速度，但还不知道惯量与阻尼。请指出这次实验的输入、观测和待估计参数。仅凭一个时刻的位置，能确定两个参数吗？

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

输入是力矩；观测是随时间记录的位置和速度；待估计参数是惯量与阻尼。

一个时刻的位置通常不足以确定它们。不同参数和运动历史都可能经过同一个位置。我们需要一段包含适当加速、减速过程的运动，观察不同参数怎样影响响应。

</details>

常见误区是把一个时刻的位置叫作数据集。如果卡住，先写出随时间变化的输入和观测列，再标出未知量。当你能不使用真实参数画出边界时再继续。

## 开始第一个实验 {#next}

进入 [L0 · 估计关节的惯量与阻尼](../l0/index.md)，看看怎样从初始模型的偏差出发，完成拟合，再检查新的运动。

需要查阅更多术语时，可以打开[系统辨识参考笔记](../../01_sysid_101.md)。后续课程会在具体实验中逐步介绍这些概念。
