K1 · 系统辨识基础
上一课讨论了为什么需要用实验数据改进模型。这一课把问题说得更具体:我们给系统什么输入,能测到什么,又想从数据中估计什么?
先沿用一个转动关节的例子。读完后,你应该能画出它的输入与观测,区分运动状态和模型参数,并解释为什么选模型和调参数是两件事。
先确定我们在研究哪一段系统
给关节施加力矩,再记录它的位置和速度,就得到下面这条关系:
输入是进入所研究系统的量,观测是我们记录下来的量。中间包含哪一段物理过程,决定了我们要建立什么模型。这就是确定系统的边界。
这里假定已知实际施加的力矩。如果手里只有目标位置指令,就还需要解释控制器怎样把位置指令变成力矩。L1 会研究这段过程;在 L0 中,我们先把实际力矩当作已知输入。
状态、观测和参数各指什么
关节转到哪里、转得多快,会随时间改变。它们描述系统此刻的情况,称为状态。传感器或记录程序提供的数据称为观测;观测可能只覆盖部分状态,也可能带有噪声。
参数描述模型中相对固定的特性。在第一个实验里,我们假定惯量和阻尼在一次运行中保持不变,并尝试从输入和运动数据中估计它们。
| 名称 | 在转动关节中的例子 | 在实验中的作用 |
|---|---|---|
| 输入 | 实际施加的力矩 $u$ | 驱动关节运动 |
| 状态 | 角位置 $q$、角速度 $\dot q$ | 描述此刻的运动 |
| 观测 | 记录的位置与速度 | 让我们比较模型和实验 |
| 参数 | 惯量 $J$、黏性阻尼 $b$ | 决定模型怎样响应输入 |
在 L0 中,位置和速度都能理想地观测到,所以状态和观测的数值一致。到了真实硬件,测得的位置可能有噪声,速度也可能需要从位置变化中计算。
用一个方程连接这些量
L0 使用下面的模型:
$$ J\ddot q+b\dot q=u $$
$\ddot q$ 表示角加速度,也就是角速度变化的快慢。$J\ddot q$ 描述加速所需的力矩,$b\dot q$ 描述运动时的黏性阻力。已知输入 $u$ 和初始运动状态后,模型就能预测关节接下来怎样运动。
惯量越大,同样的净力矩带来的加速度越小;黏性阻尼越大,同样速度下的阻力矩越大。辨识时,我们根据这些量在实验中呈现出的关系,估计 $J$ 和 $b$。
选模型和调参数有什么区别
写下刚才的方程时,我们已经作出了选择:模型包含惯量和黏性阻尼。决定包含哪些效应,叫作选择模型结构。在这个结构里寻找合适的 $J$ 和 $b$,叫作参数估计。
假如实际系统还有明显延迟,仅调整惯量和阻尼可能只能改善部分运动。此时需要检查实验和误差,判断是否应该把延迟加入模型。换一个更努力的优化器,并不能保证补上模型里缺少的效应。
第一个实验会让产生数据的系统和用于拟合的模型采用同一个方程。这样可以先看清参数估计怎样起作用,再逐步研究模型不完整时会发生什么。
图中的三条曲线分别代表什么
真实系统产生我们要解释的观测。合成实验中,它由已知参数的模拟器生成;视频和报告也会把它标成 True system 或 Oracle。
初始模型使用辨识前的参数猜测。辨识后模型使用根据实验数据估计出的参数。比较它们的预测,就能看到辨识改变了什么。
真实参数用于核对结果。拟合程序使用的是输入和观测数据,以及事先选定的模型和参数范围。
想一想
你已经记录了施加的力矩、关节位置和速度,但还不知道惯量与阻尼。请指出这次实验的输入、观测和待估计参数。仅凭一个时刻的位置,能确定两个参数吗?
查看参考思路
输入是力矩;观测是随时间记录的位置和速度;待估计参数是惯量与阻尼。
一个时刻的位置通常不足以确定它们。不同参数和运动历史都可能经过同一个位置。我们需要一段包含适当加速、减速过程的运动,观察不同参数怎样影响响应。
常见误区是把一个时刻的位置叫作数据集。如果卡住,先写出随时间变化的输入和观测列,再标出未知量。当你能不使用真实参数画出边界时再继续。
开始第一个实验
进入 L0 · 估计关节的惯量与阻尼,看看怎样从初始模型的偏差出发,完成拟合,再检查新的运动。
需要查阅更多术语时,可以打开系统辨识参考笔记。后续课程会在具体实验中逐步介绍这些概念。