# 合成实验与知识路线图

本文定义 `robot-sysid-lab` 的项目方向。仓库同时服务两个目标：

1. 为机器人工程师提供实用系统辨识知识；
2. 作为以仿真为主的研究实验室，用完整、可配置的真值检验辨识方法。

通用软件框架不是组织主线。可复用抽象应从具体实验和重复流程中提取。

当前 K/L 教学范围、推荐顺序和必要前置以[统一课程设计评审稿](lessons/course-design.zh-CN.md)为准；本文保留长期研究选项，不作为每课的累计实现要求。

## 1. 项目主张

课程要讲清并检验以下闭环：

```text
构建合成真值 → 向辨识流程隐藏真值 → 设计有信息量的实验
  → 选择实际可得的观测 → 选择 Student 假设类别 → 估计参数
  → 诊断残差与可辨识性 → 验证未见工况 → 扩展到更复杂机器人
```

仿真提供强实验控制：可获取真实物理和仿真参数；分析时可见隐状态和内力；可任意设置激励、重置、姿态、负载、接触和动作；可受控加入/移除噪声、延迟、量化、饱和及未观测条件；可重复比较模型与估计方法；在参数恢复有意义时直接测量恢复误差。因此合成教师是现实的受控替身，不只是单元测试。

## 2. 知识路线

知识内容应简洁到算法工程师能直接使用，同时足以支撑实验。

### K0 — 为什么机器人需要系统辨识

回答：为什么 CAD 不是完整机器人模型？为什么物理参数错误仍可能匹配轨迹？为什么单条轨迹吻合却可能迁移失败？为什么宽泛域随机化不能代替理解系统？

### K1 — 系统辨识基础

核心词汇：系统、输入、状态、观测、模型、参数、噪声、实验、估计器、验证。必须区分：**选择模型结构 ≠ 估计参数**。

### K2 — 用于辨识的机器人动力学

只覆盖理解实验所需的动力学：

```text
M(q) qdd + C(q, qd) qd + g(q) + tau_f = tau + J_c^T lambda
```

包括质量、质心、惯量、折算惯量、重力和动态耦合、执行器力矩生成、摩擦耗散、柔性回差和接触力。

### K3 — 执行器建模

从简单到丰富建立模型阶梯：

```text
理想执行器 → 比例/偏置/延迟 → 饱和及速度相关上限
  → 黏性与库仑摩擦 → Stribeck/非对称/负载相关项
  → 折算惯量/电机侧动力学 → 柔性/回差/共振
  → 证据需要时再加入电压、温度、迟滞
```

BAM 是本节和执行器实验的重要参考。

### K4 — 实验设计与可辨识性

数据质量取决于执行了什么运动，不只是采集数量。示例激励包括慢正弦、扫频、多正弦、阶跃和换向、适用时的自由衰减/反驱、类似 PRBS 的激励，以及后续由信息量驱动的主动激励。

重点理解持续激励、敏感度、参数相关性、实际可辨识性，以及不同工况下隐藏效应是否可观测。

### K5 — 估计与优化

理解线性/加权最小二乘、非线性最小二乘/Gauss-Newton、CMA-ES、并行/随机采样、适用时的贝叶斯优化，以及梯度/可微方法之间的取舍。

教学目标是区分**优化器失败、模型失败和实验信息不足**。PACE 可作为进化式整系统拟合的参考。

### K6 — 验证与残差诊断

牢记：**训练误差低 ≠ 模型已经验证**。验证应覆盖不同运动、频率、方向、姿态、负载、控制增益、接触条件，以及已建模的电压/温度条件。残差结构应帮助提出缺失物理假设。

### K7 — 物理参数与等效参数

- **物理参数**：可独立解释的真实量；
- **等效参数**：改善仿真预测的值，可能吸收省略物理；
- **干扰参数**：解释观测所需，但不是下游目标；
- **不确定参数**：取值范围比单点估计更重要。

### K8 — 从辨识到仿真迁移

建立“校准 → 辨识后的标称模型 → 量化剩余不确定性 → 有针对性的域随机化/鲁棒控制”的连接。目标不是消除所有不确定性，而是不再用不必要的宽随机化隐藏可诊断的系统误差。

## 3. 合成实验阶梯

### L0 — 单自由度解析概念

定位是教学放大镜，不是真实电机模型。研究惯量在数据中的样子、何时能看到阻尼、延迟如何影响相位、慢激励为何掩盖惯量，以及摩擦/饱和如何改变残差。实现保持小规模，先约定实验边界再构建。

### L1 — 合成执行器

在保留完整隐藏真值的前提下复现、扩展 BAM 类研究。教师可包含力矩比例/偏置、指令/测量延迟、饱和和速度相关上限、黏性/库仑/Stribeck 摩擦、方向和负载依赖、折算惯量、回差/柔性、电压/温度依赖。

逐步丰富 Student，并在留出工况上比较。维度包括结构匹配/失配、激励选择、观测可用性、参数恢复与预测性能，以及估计器行为。

### L2 — 固定基座关节腿

引入多体耦合，暂时排除接触和浮动基座不确定性。

| 案例 | 执行器模型 | 刚体模型 | 主要问题 |
|---|---|---|---|
| A | 正确 | 错误 | 能否恢复连杆/刚体误差而不扭曲执行器参数？ |
| B | 错误 | 正确 | 执行器误差如何随姿态和频率显现？ |
| C | 错误 | 错误 | 出现哪些补偿解？ |
| D | 部分约束 | 部分约束 | 低层先验有多大帮助？ |

明确引入实际可辨识性、敏感度和参数共享规则。

### L3 — 带接触的腿

自由空间预测合格后再增加一个不确定性类别。教师可加入地面摩擦、接触刚度/阻尼、足底柔性、足部几何和黏着/滑动转变。

依次检查：执行器正确吗？刚体子系统正确吗？接触模型正确吗？不能让接触参数补偿已知的自由空间错误。

### L4 — Microduck 整机

第一个整机合成基准，直接比较部件优先与全局拟合。

#### 路线 A — 先辨识部件

```text
执行器辨识 → 子系统验证 → 约束低层参数 → 整机残差匹配
```

#### 路线 B — 全局拟合

```text
整机轨迹 → 紧凑仿真参数化 → PACE 类优化
```

比较训练/验证误差、参数正确性和可解释性、优化难度、跨动作族鲁棒性、对模型失配的敏感度，以及下游仿真行为。

### L5 — Microban 小型人形

Microban 是项目指定的小型人形平台。重点是规模和层次，而不是一次增加很多物理效应。

研究执行器族共享参数、逐关节残差、分组与完全独立参数化、高维可辨识性、部件先验与无约束全局拟合、全身动作多样性和留出验证。

代表策略：A 每关节全部独立；B 执行器族共享参数加少量关节残差；C 紧凑整机等效参数。

### L6 — 跨仿真器失配

超越相同实现的教师/Student。可比较丰富自定义执行器教师与 MuJoCo 原生参数 Student、不同积分/步长假设、参数语义一致时的 MuJoCo CPU 与 Warp，以及不同接触实现。

这一层逼近仿真迁移的关键特征：Student 模型类别无法精确包含现实。教学范围已明确为同一小系统的两案：先在主后端隔离结构失配，再完成真正不同物理引擎间的对比；仅完成第一案不构成完整 L6。L4 后可进入，L5 不是必要前置，第二引擎在单课评审时选定。

## 4. 硬件迁移路线

硬件复用合成实验建立的实验与证据约定。单独设为 `H` 路线，因为硬件准备和合成实验进展相关，但不能互相替代。

### H0 — 真实执行器台架

在受控物理子系统上面对力矩校准、时序、测量噪声、温度、电压、安全上限和可重复性。

### H1 — 真实 Microduck / Microban

将部件证据与整机动作结合，在小规模平台验证完整仿真迁移闭环。

### H2 — 完整人形机器人

将数据采集、参数共享、拟合、验证和部署证据扩展到完整平台。

所有硬件阶段复用明确边界、实验与观测格式、模型层级、留出验证、残差诊断和不确定性报告。

## 5. 跨实验的基准类别

### B1 — 模型失配

故意从 Student 中移除教师的一种或多种效应，研究补偿解。例如真值有延迟或回差而 Student 没有；真值有 Stribeck/负载依赖而 Student 只用库仑加黏性；刚体质量错误时允许 Student 改变力矩比例。

### B2 — 激励设计

固定真值/模型组合，比较激励类别，测量参数误差、留出误差、敏感度或类似 Fisher 信息的指标、参数相关性或不确定性代理量。

### B3 — 观测消融

利用仿真能够公开所有内部信号的优势，研究移除信号后的变化。全知分析数据可以包含 `q/qd/qdd`、真实力矩、电机电流、控制器输出、接触力和隐状态；Student 则只得到实际观测组合，如“指令+编码器”“指令+编码器+电流估计”，或条件允许时加入外力/力矩测量。

将噪声、量化、滤波和时序不确定性作为显式实验因素。

### B4 — 优化器对比

只在固定模型/数据约定下比较估计器。同时报告计算预算与拟合质量，避免混淆优化失败和模型质量。

### B5 — 跨工况验证

每个正式基准都保留未用于拟合的工况。留出维度应与预期部署变化一致。

## 6. 真值难度等级

| 难度 | 教师/Student 关系 | 目的 |
|---|---|---|
| `D0` | 相同结构 | 实现检查与基础恢复 |
| `D1` | 教师稍丰富 | 模型选择与残差诊断 |
| `D2` | 强结构失配 | 等效参数与补偿 |
| `D3` | 隐藏工况依赖 | 数据分布变化与缺失上下文 |
| `D4` | 不同实现/后端 | 用跨仿真逼近真实模型失配 |

## 7. 支撑软件模块

实验需求驱动复用代码。可能的模块包括 Experiment/Excitation、Plant/Teacher、Observation policy、Dataset、Student Model、ParameterSchema、SimulatorBackend、Loss、Estimator、Validation、Report。它们支撑实验，不是项目主线。

### 实验 / 数据

定义激励、初始状态、运行工况、观测、时序和元数据。

### 系统 / 教师

定义隐藏真值系统及其指令接口。

### 模型库

包含逐步丰富的执行器、摩擦、传动、刚体和接触 Student 模型。

### 参数化 / 可辨识性

定义单位、边界、先验、共享规则、物理/等效语义，以及实际可辨识性诊断。

### 估计

保持优化器可替换，适配层尽量薄。

### 验证 / 报告

将留出表现、残差、敏感度、参数稳定性和真值比较作为核心输出。

## 8. 实现顺序

从实验约定出发，不先搭通用框架骨架。

### 阶段 0 — 稳定学习与实验规格

交付知识提纲、实验阶梯、真值难度、共同词汇，以及参数恢复和预测的成功指标。

### 阶段 1 — 重建最小单自由度实验

规格稳定后，实现正确的最小教师/Student；明确实验、观测、拟合、验证和真值比较；据此建立报告约定。

### 阶段 2 — 合成执行器基准

构建第一套可复用基准，用已知真值研究 BAM 类问题，由此确定真正可复用的抽象。

### 阶段 3 — 固定基座腿与接触

先加入多体耦合，再将接触作为可独立诊断的不确定性类别。

### 阶段 4 — Microduck 整机基准

在相同合成真值上比较部件优先与 PACE 类全局拟合。

### 阶段 5 — Microban 规模基准

在小型人形上研究参数共享、层次和高维可辨识性。

### 阶段 6 — 跨仿真与后续硬件

使用不同数值/模型实现，再将同一方法应用到真实系统。

## 9. 设计原则

1. **合成本身就是研究环境**，不只是通往硬件的临时步骤。
2. **知识与可执行实验对应**，重要概念尽可能有具体实验。
3. **真值可以复杂，观测应实际可得**，隐藏真值只供评估。
4. **不能始终使用相同教师/Student**，结构匹配只是基线。
5. **实验设计属于辨识**，更多优化迭代无法创造缺失信息。
6. **验证属于结果**，只有参数文件而没有留出证据是不完整的。
7. **区分物理参数与等效参数**，两者有用但回答不同问题。
8. **按层级扩展**：执行器 → 腿 → 接触 → Microduck → Microban，逐步隔离新不确定性。
9. **抽象来自重复实验**，避免过早泛化。
10. **最终目标是有用的机器人预测仿真**。可辨识时参数恢复有价值，模型最终仍应以对控制/RL 有用的留出行为评价。
