Robot SysID Lab

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 · 估计关节的惯量与阻尼,看看怎样从初始模型的偏差出发,完成拟合,再检查新的运动。

需要查阅更多术语时,可以打开系统辨识参考笔记。后续课程会在具体实验中逐步介绍这些概念。