第12章:系统辨识与参数估计

系统辨识是连接仿真与现实的关键桥梁。本章深入探讨如何从实验数据中准确估计物理系统参数,包括质量、惯性、摩擦系数等关键物理量。我们将从经典的最小二乘方法出发,逐步深入到贝叶斯框架下的参数估计,并特别关注接触参数的标定问题。这些技术对于构建高保真度的数字孪生系统至关重要,是实现仿真到现实成功迁移的基础。

12.1 最小二乘辨识

12.1.1 线性参数化模型

在机器人系统中,动力学方程往往可以重新整理为参数的线性形式:

$$\mathbf{Y}(\mathbf{q}, \dot{\mathbf{q}}, \ddot{\mathbf{q}}) \boldsymbol{\theta} = \boldsymbol{\tau}$$ 其中 $\mathbf{Y}$ 是回归矩阵(regressor matrix),$\boldsymbol{\theta}$ 是待辨识的参数向量,包含:

  • 质量 $m_i$
  • 质心位置 $\mathbf{r}_{c,i}$
  • 惯性张量元素 $I_{xx,i}, I_{yy,i}, I_{zz,i}, I_{xy,i}, I_{xz,i}, I_{yz,i}$

对于第 $i$ 个连杆,其最小参数集表示为: $$\boldsymbol{\theta}_i = [m_i, m_i r_{cx,i}, m_i r_{cy,i}, m_i r_{cz,i}, I_{xx,i}, I_{yy,i}, I_{zz,i}, I_{xy,i}, I_{xz,i}, I_{yz,i}]^T$$

12.1.2 激励轨迹设计

系统辨识的成功很大程度上取决于激励轨迹的质量。理想的激励轨迹应该:

  1. 持续激励条件:确保回归矩阵满秩
  2. 覆盖工作空间:遍历机器人的典型运动范围
  3. 激发动力学耦合:包含加速、减速、方向变化

常用的激励轨迹形式: $$q_j(t) = \sum_{k=1}^{N_f} \left[ a_{jk} \sin(\omega_k t) + b_{jk} \cos(\omega_k t) \right]$$ 其中频率 $\omega_k$ 的选择需要避免共振,通常选择为基频的整数倍。

优化激励轨迹的目标函数: $$\min_{\mathbf{a}, \mathbf{b}} \text{cond}(\mathbf{Y}^T\mathbf{Y})$$ 其中 $\text{cond}(\cdot)$ 是条件数,用于衡量数值稳定性。

12.1.3 递归最小二乘(RLS)

对于在线参数估计,递归最小二乘提供了计算高效的更新方式: $$\hat{\boldsymbol{\theta}}_{k+1} = \hat{\boldsymbol{\theta}}_k + \mathbf{K}_{k+1} (\boldsymbol{\tau}_{k+1} - \mathbf{Y}_{k+1} \hat{\boldsymbol{\theta}}_k)$$ 其中增益矩阵: $$\mathbf{K}_{k+1} = \mathbf{P}_k \mathbf{Y}_{k+1}^T (\lambda + \mathbf{Y}_{k+1} \mathbf{P}_k \mathbf{Y}_{k+1}^T)^{-1}$$ 协方差矩阵更新: $$\mathbf{P}_{k+1} = \frac{1}{\lambda} (\mathbf{I} - \mathbf{K}_{k+1} \mathbf{Y}_{k+1}) \mathbf{P}_k$$ 遗忘因子 $\lambda \in (0, 1]$ 用于处理时变参数。

12.1.4 物理一致性约束

辨识得到的参数必须满足物理约束:

  1. 质量正定性:$m_i > 0$
  2. 惯性张量正定性: $$\mathbf{I}_i = \begin{bmatrix} I_{xx} & I_{xy} & I_{xz} \\ I_{xy} & I_{yy} & I_{yz} \\ I_{xz} & I_{yz} & I_{zz} \end{bmatrix} \succ 0$$

  3. 三角不等式: $$I_{xx} + I_{yy} \geq I_{zz}, \quad I_{yy} + I_{zz} \geq I_{xx}, \quad I_{zz} + I_{xx} \geq I_{yy}$$ 带约束的最小二乘问题可以表述为半定规划(SDP): $$\begin{aligned} \min_{\boldsymbol{\theta}} & \quad |\mathbf{Y}\boldsymbol{\theta} - \boldsymbol{\tau}|^2 \\ \text{s.t.} & \quad \mathbf{I}_i(\boldsymbol{\theta}) \succeq \epsilon \mathbf{I}_3, \quad \forall i \\ & \quad m_i \geq \epsilon_m \end{aligned}$$

12.2 贝叶斯参数估计

12.2.1 概率框架

贝叶斯方法将参数估计问题转化为后验分布的推断: $$p(\boldsymbol{\theta} | \mathcal{D}) = \frac{p(\mathcal{D} | \boldsymbol{\theta}) p(\boldsymbol{\theta})}{p(\mathcal{D})}$$ 其中:

  • $p(\boldsymbol{\theta})$ 是先验分布,编码了对参数的先验知识
  • $p(\mathcal{D} | \boldsymbol{\theta})$ 是似然函数,描述观测数据的生成过程
  • $p(\boldsymbol{\theta} | \mathcal{D})$ 是后验分布,包含了参数的不确定性信息

对于动力学辨识,似然函数通常假设为高斯噪声模型: $$p(\boldsymbol{\tau} | \mathbf{q}, \dot{\mathbf{q}}, \ddot{\mathbf{q}}, \boldsymbol{\theta}) = \mathcal{N}(\mathbf{Y}\boldsymbol{\theta}, \boldsymbol{\Sigma}_{\tau})$$

12.2.2 共轭先验

选择共轭先验可以得到解析的后验分布。对于高斯似然,正态-逆威沙特分布是共轭先验: $$p(\boldsymbol{\theta}, \boldsymbol{\Sigma}) = \text{NIW}(\boldsymbol{\mu}_0, \boldsymbol{\Lambda}_0, \nu_0, \boldsymbol{\Psi}_0)$$ 后验更新公式: $$\begin{aligned} \boldsymbol{\mu}_n &= \frac{\boldsymbol{\Lambda}_0 \boldsymbol{\mu}_0 + n\bar{\boldsymbol{\theta}}}{\boldsymbol{\Lambda}_0 + n} \\ \boldsymbol{\Lambda}_n &= \boldsymbol{\Lambda}_0 + n \\ \nu_n &= \nu_0 + n \\ \boldsymbol{\Psi}_n &= \boldsymbol{\Psi}_0 + \mathbf{S} + \frac{n\boldsymbol{\Lambda}_0}{n + \boldsymbol{\Lambda}_0}(\bar{\boldsymbol{\theta}} - \boldsymbol{\mu}_0)(\bar{\boldsymbol{\theta}} - \boldsymbol{\mu}_0)^T \end{aligned}$$

12.2.3 马尔可夫链蒙特卡洛(MCMC)

对于复杂的后验分布,MCMC方法提供了通用的采样框架。Hamiltonian Monte Carlo (HMC) 特别适合高维参数空间:

动量变量引入: $$p(\boldsymbol{\theta}, \mathbf{p}) = p(\boldsymbol{\theta}) p(\mathbf{p}) = p(\boldsymbol{\theta}) \mathcal{N}(\mathbf{0}, \mathbf{M})$$ 哈密顿动力学: $$\begin{aligned} \frac{d\boldsymbol{\theta}}{dt} &= \mathbf{M}^{-1} \mathbf{p} \\ \frac{d\mathbf{p}}{dt} &= -\nabla_{\boldsymbol{\theta}} U(\boldsymbol{\theta}) \end{aligned}$$ 其中 $U(\boldsymbol{\theta}) = -\log p(\boldsymbol{\theta} | \mathcal{D})$ 是势能函数。

12.2.4 变分推断

变分推断通过优化寻找最接近真实后验的分布: $$q^*(\boldsymbol{\theta}) = \arg\min_{q \in \mathcal{Q}} \text{KL}(q(\boldsymbol{\theta}) | p(\boldsymbol{\theta} | \mathcal{D}))$$ 对于平均场近似: $$q(\boldsymbol{\theta}) = \prod_i q_i(\theta_i)$$ 坐标上升更新: $$\log q_j^*(\theta_j) = \mathbb{E}_{q_{-j}}[\log p(\boldsymbol{\theta}, \mathcal{D})] + \text{const}$$

12.3 接触参数标定

12.3.1 摩擦系数辨识

摩擦参数的辨识需要特殊设计的实验。对于库仑摩擦模型: $$\mathbf{f}_t = \begin{cases} -\mu_s |\mathbf{f}_n| \frac{\mathbf{v}_t}{|\mathbf{v}_t|} & \text{if } |\mathbf{f}_t^{\text{trial}}| > \mu_s |\mathbf{f}_n| \\ \mathbf{f}_t^{\text{trial}} & \text{otherwise} \end{cases}$$ 标定实验设计:

  1. 倾斜平面法:测量临界倾角 $\theta_c$ $$\mu_s = \tan(\theta_c)$$

  2. 拉力测试:施加水平力直到滑动 $$\mu_s = \frac{F_{\text{critical}}}{mg}$$

  3. 振荡运动:通过能量耗散估计动摩擦系数 $$E_{\text{lost}} = \mu_k mg \cdot d$$

12.3.2 恢复系数测量

恢复系数 $e$ 定义了碰撞前后的相对速度关系: $$e = -\frac{v_{\text{sep}}}{v_{\text{app}}}$$ 标准测量方法:

  1. 垂直跌落测试: $$e = \sqrt{\frac{h_{\text{bounce}}}{h_{\text{drop}}}}$$

  2. 摆锤碰撞:通过角度测量 $$e = \frac{\cos(\theta_{\text{min}}) - \cos(\theta_0)}{\cos(\theta_{\text{max}}) - \cos(\theta_0)}$$

  3. 高速摄像分析:直接测量碰撞前后速度

恢复系数的速度依赖性模型: $$e(v) = e_0 \cdot \exp(-\alpha v)$$

12.3.3 接触刚度与阻尼

柔性接触模型(Hunt-Crossley)的参数辨识: $$\mathbf{f}_n = k_n \delta^n - c_n \delta^n \dot{\delta}$$ 其中:

  • $k_n$ 是接触刚度
  • $c_n$ 是接触阻尼
  • $n$ 是非线性指数(通常 $n = 1.5$ 对应赫兹接触)

通过力传感器数据拟合: $$\min_{k_n, c_n, n} \sum_i |\mathbf{f}_{\text{measured},i} - \mathbf{f}_{\text{model},i}(k_n, c_n, n)|^2$$ 使用Levenberg-Marquardt算法求解非线性最小二乘问题。

12.3.4 接触面积与压力分布

对于面接触,压力分布的测量对于验证接触模型至关重要:

  1. 压力敏感膜:提供二维压力分布
  2. 触觉传感器阵列:高分辨率接触信息
  3. 光学方法:基于变形的压力推断

接触面积与法向力的关系(对于弹性接触): $$A = \pi \left(\frac{3FR}{4E^*}\right)^{2/3}$$ 其中有效弹性模量: $$\frac{1}{E^*} = \frac{1-\nu_1^2}{E_1} + \frac{1-\nu_2^2}{E_2}$$

12.4 动力学模型验证

12.4.1 交叉验证策略

将数据集分为训练集和验证集,评估模型的泛化能力:

  1. k折交叉验证
将数据分为k个子集
for i = 1 to k:
    使用除第i个子集外的所有数据训练
    在第i个子集上验证
计算平均性能指标
  1. 留一法(LOO-CV):k = n的特殊情况

  2. 时间序列分割:保持时间顺序的连续性

12.4.2 预测误差分析

定义归一化预测误差: $$\text{NPE} = \frac{1}{N} \sum_{i=1}^N \frac{|\boldsymbol{\tau}_{\text{pred},i} - \boldsymbol{\tau}_{\text{meas},i}|}{|\boldsymbol{\tau}_{\text{meas},i}|}$$ 频域分析通过传递函数评估: $$H(\omega) = \frac{\mathcal{F}\{\boldsymbol{\tau}_{\text{pred}}\}}{\mathcal{F}\{\boldsymbol{\tau}_{\text{cmd}}\}}$$ 相位和幅值裕度提供稳定性指标。

12.4.3 轨迹跟踪验证

在闭环控制下验证模型:

  1. 位置跟踪误差: $$e_p = \sqrt{\frac{1}{T} \int_0^T |\mathbf{q}_{\text{ref}}(t) - \mathbf{q}(t)|^2 dt}$$

  2. 力矩预测误差: $$e_{\tau} = \sqrt{\frac{1}{T} \int_0^T |\boldsymbol{\tau}_{\text{model}}(t) - \boldsymbol{\tau}_{\text{real}}(t)|^2 dt}$$

  3. 能量一致性: $$\Delta E = |E_{\text{model}} - E_{\text{real}}|$$

12.4.4 统计检验

使用统计方法验证模型假设:

  1. 残差白度检验(Ljung-Box test): $$Q = n(n+2) \sum_{k=1}^h \frac{r_k^2}{n-k}$$ 其中 $r_k$ 是滞后k的自相关系数

  2. 正态性检验(Shapiro-Wilk test): 验证残差的高斯分布假设

  3. 异方差性检验(Breusch-Pagan test): 检测误差方差的非恒定性

12.4.5 模型选择准则

平衡模型复杂度与拟合质量:

  1. 赤池信息准则(AIC): $$\text{AIC} = 2k - 2\ln(L)$$

  2. 贝叶斯信息准则(BIC): $$\text{BIC} = k\ln(n) - 2\ln(L)$$

  3. 最小描述长度(MDL): $$\text{MDL} = -\ln(L) + \frac{k}{2}\ln(n)$$ 其中 $k$ 是参数数量,$L$ 是似然值,$n$ 是样本数。

12.5 RL应用:真实机器人参数的获取

12.5.1 Sim-to-Real的参数鸿沟

仿真与现实之间的参数差异是策略迁移失败的主要原因之一。典型的参数不确定性来源:

  1. 制造公差:实际质量与CAD模型的偏差可达5-10%
  2. 装配误差:连杆长度、关节零位的微小偏差
  3. 磨损与老化:摩擦系数随使用时间变化
  4. 负载变化:抓取物体改变系统动力学

12.5.2 在线自适应辨识

强化学习训练过程中的参数自适应:

初始化: θ_sim 从制造商规格
while 训练进行中:

    1. 在真实机器人上执行探索动作
    2. 收集状态-动作-力矩数据 (q, q̇, q̈, τ)
    3. 使用RLS更新参数估计 θ̂_real
    4. 计算参数不确定性范围 Δθ = |θ̂_real - θ_sim|
    5. 在仿真中使用 θ  Uniform(θ̂_real - Δθ, θ̂_real + Δθ)
    6. 训练策略对参数变化的鲁棒性

12.5.3 元学习框架下的快速适应

使用MAML(Model-Agnostic Meta-Learning)加速参数辨识: $$\theta^* = \arg\min_\theta \sum_{i=1}^N \mathcal{L}(\theta - \alpha \nabla_\theta \mathcal{L}_i(\theta))$$ 其中每个任务 $i$ 对应不同的机器人实例或工作条件。

12.5.4 主动学习策略

设计信息量最大的探索动作: $$\mathbf{u}^* = \arg\max_{\mathbf{u}} I(\boldsymbol{\theta}; \mathbf{y} | \mathbf{u}, \mathcal{D})$$ 其中 $I(\cdot;\cdot)$ 是互信息,衡量动作 $\mathbf{u}$ 对参数 $\boldsymbol{\theta}$ 的信息增益。

实践中使用近似方法:

  • 不确定性采样:选择预测方差最大的区域
  • 期望改进:平衡探索与利用
  • 贝叶斯优化:高斯过程指导的实验设计

12.6 历史人物:Åström与1971年自适应控制理论奠基

Karl Johan Åström(1934-)是现代控制理论的奠基人之一,他在1970年代开创性地将统计方法引入控制系统设计。

主要贡献

  1. 自适应控制理论(1971): - 提出了自校正调节器(Self-Tuning Regulator) - 将系统辨识与控制设计统一在一个框架下 - 证明了双重控制(Dual Control)的最优性

  2. 最小方差控制(1970): - 针对随机系统的最优控制策略 - 奠定了预测控制的理论基础

  3. 确定性等价原理(1973): - 分离估计与控制的理论依据 - 简化了自适应控制器的设计

对现代机器人学的影响

Åström的工作直接影响了:

  • 在线参数估计:RLS算法在机器人实时控制中的应用
  • 自适应控制:处理负载变化和参数不确定性
  • 随机最优控制:强化学习的理论基础之一

他的名言:"All models are wrong, but some are useful"深刻影响了系统辨识领域的哲学思考。

12.7 高级话题:神经系统辨识与物理引导学习

12.7.1 物理信息神经网络(PINN)

将物理定律作为神经网络训练的约束: $$\mathcal{L} = \mathcal{L}_{\text{data}} + \lambda \mathcal{L}_{\text{physics}}$$ 其中物理损失项: $$\mathcal{L}_{\text{physics}} = |\mathbf{M}(\mathbf{q})\ddot{\mathbf{q}} + \mathbf{C}(\mathbf{q}, \dot{\mathbf{q}})\dot{\mathbf{q}} + \mathbf{g}(\mathbf{q}) - \boldsymbol{\tau}|^2$$

12.7.2 神经常微分方程(Neural ODE)

将动力学建模为连续时间系统: $$\frac{d\mathbf{x}}{dt} = f_\theta(\mathbf{x}, t)$$ 其中 $f_\theta$ 是神经网络参数化的向量场。

优势:

  • 内存高效的反向传播(伴随方法)
  • 自然的不规则时间序列处理
  • 保证的李雅普诺夫稳定性(通过构造)

12.7.3 哈密顿神经网络

保持能量守恒的神经网络架构: $$\begin{aligned} \frac{d\mathbf{q}}{dt} &= \frac{\partial H_\theta}{\partial \mathbf{p}} \\ \frac{d\mathbf{p}}{dt} &= -\frac{\partial H_\theta}{\partial \mathbf{q}} \end{aligned}$$ 其中 $H_\theta(\mathbf{q}, \mathbf{p})$ 是神经网络表示的哈密顿量。

12.7.4 高斯过程动力学模型

使用高斯过程捕获模型不确定性: $$\mathbf{f}(\mathbf{x}) \sim \mathcal{GP}(m(\mathbf{x}), k(\mathbf{x}, \mathbf{x}'))$$ 核函数选择:

  • RBF核:平滑动力学假设
  • Matérn核:可调节的平滑度
  • 周期核:捕获循环运动模式

稀疏高斯过程用于大规模数据: $$q(\mathbf{f}) = \int p(\mathbf{f} | \mathbf{u}) q(\mathbf{u}) d\mathbf{u}$$ 其中 $\mathbf{u}$ 是诱导点。

12.7.5 可解释的混合模型

结合物理模型与数据驱动补偿: $$\boldsymbol{\tau} = \boldsymbol{\tau}_{\text{physics}}(\mathbf{q}, \dot{\mathbf{q}}, \ddot{\mathbf{q}}, \boldsymbol{\theta}) + \boldsymbol{\tau}_{\text{residual}}(\mathbf{q}, \dot{\mathbf{q}}, \ddot{\mathbf{q}})$$ 其中:

  • $\boldsymbol{\tau}_{\text{physics}}$ 是基于第一性原理的模型
  • $\boldsymbol{\tau}_{\text{residual}}$ 是神经网络学习的残差

这种方法保持了可解释性,同时提高了预测精度。

本章小结

系统辨识是连接理论模型与实际系统的关键技术。本章介绍了从经典最小二乘到现代贝叶斯方法的参数估计技术,强调了物理一致性约束的重要性。关键要点:

  1. 最小二乘辨识提供了计算高效的参数估计方法,但需要精心设计激励轨迹
  2. 贝叶斯框架不仅给出点估计,还量化了参数不确定性
  3. 接触参数的准确标定对仿真保真度至关重要
  4. 模型验证需要多角度的评估,包括预测精度、能量一致性和统计检验
  5. 神经网络方法为复杂系统提供了灵活的建模工具,但需要与物理知识结合

核心公式回顾:

  • 线性参数化:$\mathbf{Y}(\mathbf{q}, \dot{\mathbf{q}}, \ddot{\mathbf{q}}) \boldsymbol{\theta} = \boldsymbol{\tau}$
  • 贝叶斯后验:$p(\boldsymbol{\theta} | \mathcal{D}) \propto p(\mathcal{D} | \boldsymbol{\theta}) p(\boldsymbol{\theta})$
  • 库仑摩擦:$\mathbf{f}_t = -\mu |\mathbf{f}_n| \text{sign}(\mathbf{v}_t)$
  • 恢复系数:$e = -v_{\text{sep}}/v_{\text{app}}$

练习题

基础题

练习 12.1:最小二乘辨识 一个2自由度机械臂的动力学方程可以写成线性参数形式 $\mathbf{Y}\boldsymbol{\theta} = \boldsymbol{\tau}$。给定100组测量数据 $(q_i, \dot{q}_i, \ddot{q}_i, \tau_i)$,如何判断激励轨迹是否充分?

Hint:检查回归矩阵 $\mathbf{Y}$ 的秩和条件数。

答案
  1. 构建回归矩阵 $\mathbf{Y}$ (100×10 对于2DOF机械臂)
  2. 计算 $\text{rank}(\mathbf{Y})$,应该等于参数个数(10)
  3. 计算条件数 $\kappa = \sigma_{\max}/\sigma_{\min}$
  4. 如果 $\kappa < 100$,激励充分;$\kappa > 1000$ 表示数值问题
  5. 检查 $\mathbf{Y}^T\mathbf{Y}$ 的最小特征值,应远大于机器精度

练习 12.2:递归最小二乘 推导遗忘因子 $\lambda = 0.95$ 时,历史数据的有效窗口长度(即多少步之前的数据权重降到原来的5%)。

Hint:权重按 $\lambda^k$ 指数衰减。

答案

设第k步前的数据权重为 $\lambda^k$,要求: $$\lambda^k = 0.05$$ $$k = \frac{\ln(0.05)}{\ln(0.95)} = \frac{-2.996}{-0.0513} \approx 58.4$$ 因此约59步前的数据权重降到5%,有效窗口约60个采样点。

练习 12.3:摩擦系数测量 设计一个实验测量机器人关节的粘性摩擦系数。假设摩擦模型为 $\tau_f = b\dot{q}$,其中 $b$ 是粘性摩擦系数。

Hint:考虑恒速运动时的力矩平衡。

答案

实验设计:

  1. 让关节以不同恒定速度 $\dot{q}_i$ 运动(如 0.1, 0.2, ..., 1.0 rad/s)
  2. 测量维持恒速所需的力矩 $\tau_i$
  3. 在恒速下,$\tau_i = b\dot{q}_i$(忽略重力)
  4. 用最小二乘拟合:$b = (\sum \dot{q}_i^2)^{-1} \sum \dot{q}_i \tau_i$
  5. 检查线性关系的R²值验证模型假设

挑战题

练习 12.4:贝叶斯参数估计 假设机器人连杆质量的先验分布为 $m \sim \mathcal{N}(1.0, 0.1^2)$ kg。经过n次测量后,后验分布为 $m \sim \mathcal{N}(\mu_n, \sigma_n^2)$。推导需要多少次独立测量才能将不确定性(标准差)降低到0.01 kg?

Hint:使用贝叶斯更新公式,假设测量噪声标准差为 $\sigma_m$。

答案

对于高斯先验和高斯似然: $$\frac{1}{\sigma_n^2} = \frac{1}{\sigma_0^2} + \frac{n}{\sigma_m^2}$$ 其中 $\sigma_0 = 0.1$,要求 $\sigma_n = 0.01$: $$\frac{1}{0.01^2} = \frac{1}{0.1^2} + \frac{n}{\sigma_m^2}$$ $$10000 = 100 + \frac{n}{\sigma_m^2}$$ $$n = 9900 \sigma_m^2$$ 如果测量噪声 $\sigma_m = 0.05$ kg,则需要 $n = 9900 \times 0.0025 = 24.75 \approx 25$ 次测量。

练习 12.5:物理一致性约束 证明对于任意刚体,其惯性张量必须满足三角不等式。提示:考虑主轴坐标系。

Hint:在主轴坐标系中,惯性张量是对角的。

答案

在主轴坐标系中,惯性张量: $$\mathbf{I} = \text{diag}(I_1, I_2, I_3)$$ 根据定义: $$I_1 = \int (y^2 + z^2) dm, \quad I_2 = \int (x^2 + z^2) dm, \quad I_3 = \int (x^2 + y^2) dm$$ 显然: $$I_1 + I_2 = \int (x^2 + y^2 + 2z^2) dm > \int (x^2 + y^2) dm = I_3$$ 同理可证其他两个不等式。物理意义:刚体不能退化为一维线段。

练习 12.6:主动学习 设计一个基于高斯过程的主动学习策略,用于机器人动力学模型的在线改进。定义获取函数(acquisition function)并说明其物理意义。

Hint:考虑预测不确定性和模型改进的权衡。

答案

获取函数设计: $$a(\mathbf{x}) = \sigma^2(\mathbf{x}) + \beta \cdot |\mu(\mathbf{x}) - f_{\text{physics}}(\mathbf{x})|$$

其中:

  • $\sigma^2(\mathbf{x})$:GP预测方差(探索项)
  • $|\mu(\mathbf{x}) - f_{\text{physics}}(\mathbf{x})|$:与物理模型的偏差(利用项)
  • $\beta$:权衡参数

物理意义:

  1. 高方差区域:模型不确定,需要更多数据
  2. 大偏差区域:物理模型不准确,需要数据驱动补偿
  3. 结合两者实现高效的数据收集

实施步骤:

  1. 在状态空间采样候选点
  2. 计算每个点的获取函数值
  3. 选择值最大的点进行实验
  4. 更新GP模型
  5. 重复直到满足精度要求

练习 12.7:开放性思考题 在仿真到现实迁移中,是否应该让仿真参数完全匹配真实系统?讨论过度拟合真实参数可能带来的问题。

答案

不应该追求完全匹配,原因:

  1. 过拟合风险: - 完美匹配特定机器人,策略可能对微小变化敏感 - 失去对其他机器人的泛化能力

  2. 参数时变性: - 摩擦随温度、磨损变化 - 负载变化改变动力学 - 固定参数无法捕获这些变化

  3. 测量局限性: - 某些参数难以准确测量(如内部摩擦) - 测量本身有噪声和偏差

  4. 更好的方法: - 使用参数分布而非点估计 - 域随机化训练鲁棒策略 - 在线自适应补偿参数变化 - 学习对参数不敏感的策略

  5. 实践建议: - 核心参数(质量、长度)尽量准确 - 不确定参数(摩擦、阻尼)使用范围 - 保留10-20%的参数随机化 - 定期重新标定关键参数

常见陷阱与错误

1. 数值问题

问题:回归矩阵病态导致参数估计不稳定

症状

  • 参数估计值异常大或振荡
  • 微小的数据变化导致巨大的参数变化
  • 条件数 > 10^6

解决方案

# 使用SVD进行稳健求解
U, S, Vt = np.linalg.svd(Y)
# 截断小奇异值
threshold = 1e-6 * S[0]
S_inv = np.where(S > threshold, 1/S, 0)
theta = Vt.T @ np.diag(S_inv) @ U.T @ tau

2. 物理不一致

问题:辨识得到的参数违反物理定律

常见情况

  • 负质量或负惯性
  • 惯性张量非正定
  • 摩擦系数 > 1(某些材料组合除外)

预防措施

  • 在优化中加入约束
  • 使用参数的物理表示(如Cholesky分解保证正定性)
  • 后处理投影到可行域

3. 激励不充分

问题:某些参数无法辨识或辨识精度差

诊断方法

# 计算Fisher信息矩阵
FIM = Y.T @ Y
# 检查可辨识性
eigenvalues = np.linalg.eigvals(FIM)
if min(eigenvalues) < 1e-6:
    print("参数不可辨识")

改进激励轨迹

  • 增加频率成分
  • 覆盖更大的工作空间
  • 包含加速和减速阶段

4. 模型偏差

问题:使用错误的模型结构

例子

  • 忽略关节柔性却用刚体模型
  • 线性摩擦模型用于存在库仑摩擦的系统
  • 忽略齿轮传动的非线性

检测方法

  • 残差分析(应该是白噪声)
  • 交叉验证误差异常大
  • 系统性的预测偏差

5. 过度自信

问题:忽略参数估计的不确定性

后果

  • 控制器设计过于激进
  • 仿真与实际差异被低估
  • 安全边界设置不当

正确做法

  • 报告置信区间而非点估计
  • 在控制设计中考虑最坏情况
  • 使用鲁棒控制方法

最佳实践检查清单

实验设计

  • [ ] 激励轨迹覆盖预期工作空间
  • [ ] 采样频率至少是系统带宽的10倍
  • [ ] 数据采集时间足够长(至少100个时间常数)
  • [ ] 包含静态和动态实验
  • [ ] 多次重复实验评估可重复性
  • [ ] 记录环境条件(温度、湿度)

数据预处理

  • [ ] 低通滤波去除高频噪声
  • [ ] 检查并去除异常值
  • [ ] 时间同步多传感器数据
  • [ ] 数值微分使用适当的平滑
  • [ ] 数据归一化避免数值问题

参数估计

  • [ ] 检查回归矩阵的条件数
  • [ ] 验证物理一致性约束
  • [ ] 使用多种初始值验证收敛性
  • [ ] 计算参数的置信区间
  • [ ] 对比不同估计方法的结果

模型验证

  • [ ] 使用独立数据集验证
  • [ ] 检查不同工作点的预测精度
  • [ ] 分析预测误差的频谱特性
  • [ ] 验证能量守恒(对于保守系统)
  • [ ] 测试对扰动的响应

文档记录

  • [ ] 记录所有实验条件和参数
  • [ ] 保存原始数据和处理脚本
  • [ ] 说明模型假设和局限性
  • [ ] 提供参数的物理解释
  • [ ] 包含验证结果和误差分析

实施集成

  • [ ] 参数更新的版本控制
  • [ ] 定期重新标定计划
  • [ ] 在线监测参数漂移
  • [ ] 异常参数值的报警机制
  • [ ] 与控制系统的接口测试