LESSON 04 · 阶段 B · 软件与仿真 · LEARN NOTES

收进学习手册 · 2026-09-11 · duck.whatled.com

第 04 课 · 61 → 14:一只鸭子的神经回路

这一课解决什么问题:读懂你第 03 课跑起来的那个"大脑"——它每 20 毫秒吃什么(61 个数)、吐什么(14 个数)、这套契约为什么一个都不能乱动。这是全课程最重要的数字。

前置:第 03 课。手头有一个已经能跑的本地环境,边读边对照。


1. 每 20 毫秒,一次"读 → 算 → 发"

整只鸭子就是一个跑在 50 Hz 上的循环,每 20 毫秒重复三步:读全部关节状态和身体姿态 → 喂给神经网络 → 把 14 个输出下发给舵机。

            每 20 ms 重复一次(50 Hz)

  传感器                策略网络(ONNX)             执行
 ┌───────────┐  61 个数  ┌───────────────┐  14 个数  ┌──────────┐
 │ IMU(200号)│ ────────▶ │  神经网络      │ ────────▶ │ 14 个关节 │
 │ 14 关节    │           │  61 → 14      │           │ 转到目标  │
 └───────────┘           └───────────────┘           └──────────┘
      ▲                          ▲
      └──── 传感数据回流 ─────────┘└── 命令:往哪走、多快、头什么姿态(你给)

类比:你走路时没人逐条指挥每块肌肉——身体自动决定下一步怎么迈。你(按方向键的人)只发目标,策略管过程。

2. 61 个数:策略能看到的一切

全部 alpha 策略共用同一张观测表(记不住没关系,先知道"分七段"):

索引 宽度 内容
0–2 3 躯干角速度(转多快)
3–5 3 投影重力(歪没歪)
6–19 14 相对 HOME 的关节角(嘴除外)
20–33 14 关节速度
34–47 14 上一次策略输出的动作
48–50 3 速度指令 vx, vy, yaw_rate
51–54 4 头颈命令 neck_pitch, head_pitch, head_yaw, head_roll
55–60 6 身体位姿命令槽 x, y, z, roll, pitch, yaw

加一下:3+3+14+14+14+3+4+6 = 61,正好。前 48 个数是"身体的自我感觉"(姿态、关节、上次动作),后 13 个是"你下的命令"。另:训练时网络背后还有个 76 维的 critic("教练视角"),真机只跑 61 维的 actor。

3. 14 个数:每个关节往哪转

输出不是"转多少度"的绝对值,而是相对 HOME 姿态的关节位置偏移,顺序固定:

0..4   左腿:hip_yaw, hip_roll, hip_pitch, knee, ankle
5..8   颈头:neck_pitch, head_pitch, head_yaw, head_roll
9..13  右腿:hip_yaw, hip_roll, hip_pitch, knee, ankle

顺序是左腿 → 头颈 → 右腿,不对称。真机有 15 只舵机,第 10 个物理槽位是嘴巴——策略不输出它,运行时负责把 14 个数映射回 15 个槽位(duck-control/src/obs.rs 用同一张表完成读取和回填)。

4. 为什么这套契约不能随便动

三个理由,一个比一个硬:

  1. **训练和部署是两拨代码,靠这张表对齐。**训练仓按这个顺序生成观测,真机按同一顺序读取回填——悄悄改了顺序,ONNX 照样"能跑",但鸭子立刻倒下(位置 6 的数被当成位置 0 的意思)。
  2. **新策略要与旧运行时热切换。**官方约定:新技能用不到的命令槽要保留并填零,不许删——删了,新 ONNX 就装不进现有运行时。
  3. 出问题时没法归因。docs/microduck-30day/source-map.md 的推荐阅读顺序就是沿这条链排的:任务注册 → 环境配置 → 观测/奖励 → 真机的 obs.rs。契约稳定,你才能顺链找问题。

所以呢:想改行为,先改奖励和参数,永远别先动 61/14 的布局——这是阶段 D 的纪律。

动手练习(15 分钟)

对照 microduck-replica/docs/训练参数调整与新动作开发指南.md 第 4 节核查本文表格,合上资料手画一遍数据流图。再答一题:动作 0–4 是左腿、9–13 是右腿,头颈夹中间——这是推导出来的吗?(不是,是全链路共用的约定。)

自查清单

全部打勾,进入第 05 课:第一次训练。

下一课预告

第 05 课真正开训:训练 → 回放 → 导出 → 验证四步全流程,加上 Mac 无 GPU 机器的两个必踩坑(都是构建日志里的真实事故)。

延伸资源

什么鸭 WHATDUCK · 复刻学习笔记 ← 全部手册 · 首页