LESSON 13 · 阶段 D · 训练进阶 · LEARN NOTES

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

第 13 课 · 参数地图:想改行为去哪改

这一课解决什么问题:从这课起进入阶段 D,你会不断冒出"想让它站得稳一点、步子大一点、走得快一点"的念头。这一课给你一张地图:按"想改什么"直接定位到正确的文件和参数,而不是在 882 行配置里迷路。

前置:第 07 课 与 第 04 课。


1. 为什么需要一张地图

鸭子的训练参数散在 microduck_rl 上游仓库里,本项目的解读文档是 microduck-replica/docs/训练参数调整与新动作开发指南.md——882 行,其中第 6 节就是"症状 → 文件"对照表。你不需要读完,只需要会查:改零位查 6.1,改脚的高度查 6.5,改速度查 6.4,提抗扰查 6.7。

所以呢?调参第一步不是打开文件乱翻,而是先说清"我到底想改什么行为",再查表定位。

2. 动手前的铁律:61 → 14 契约不能动

第 04 课讲过:策略每次吃 61 个数、吐 14 个数。指南第 4 节把它称为"不能随便动的契约"——观测的顺序、数量、含义一改,所有已训练 checkpoint 和导出的 ONNX 全部作废。

同理,指南 6.10 节的 PPO 超参数表(隐层 512/256/128、学习率 1e-3、每次迭代采样 24 步)给新手的建议全是"不改"。它还点破最常见误区:行为不好就先调学习率——多数时候问题在目标不可达、奖励有漏洞或物理配置。

所以呢?新手能改、该改的是任务层参数(速度、奖励、随机化);网络结构和观测契约,前四个阶段一个都别碰。

3. 目标一:改站立姿态(零位)

相关区分(指南 6.2 节):机械限位 limit、安全余量系数 0.9、动作幅度 action scale 三层各管各的,别混着改。

4. 目标二:让脚抬高、步子更明显

文件:tasks/microduck_velocity_env_cfg.py,搜这几个奖励参数:

参数 作用
air_time.weight 迈步(脚离地)奖励强度
air_time.threshold_min/max 算奖励的有效离地时间窗口
foot_swing_height.target_height 摆动脚高度目标(当前 0.02 m)

threshold_min 上游值是 0.125 s,本工作区实验中已改成 0.04 s——完整故事在第 16 课。验证:看 TensorBoard 的 Metrics/air_time_mean 是否脱离零附近,再回放肉眼看有没有拖脚。

5. 目标三:改目标速度

同一文件搜 command.ranges,当前前进范围 lin_vel_x = (-0.4, 0.4) m/s。指南建议一次只提一档:0.4 → 0.5,回放固定测 0、0.2、0.4、0.5 m/s 四个点,看速度误差和摔倒率,稳定后再谈 0.6。

为什么不能一步拉满?指南原话:只扩大最大速度并不自动得到"跑步",策略可能用更快的小碎步或拖脚换速度分;超过真实执行器能力的命令只会训练出"奖励妥协"。

6. 目标四:提高 sim-to-real 鲁棒性

入口在走路配置顶部的域随机化(domain randomization,训练时故意随机扰动物理参数,让策略学会抗干扰,第 15 课专讲)开关表。当前开启的有:躯干质心 ±3 mm(课程逐步扩到 ±15 mm)、质量+惯量 0.95~1.05 倍、IMU 安装误差随机轴最大 6°、编码器偏置 ±0.015 rad;执行器侧还有命令延迟随机 3~6 仿真步(指南 6.3 节)。

验证方式不是看 reward 涨没涨,而是做扰动测试(第 15 课看 exp001b 的真实做法)。原则是指南原话:随机范围要覆盖实测误差,不是想象中的最坏情况;范围过大,策略会学得紧张保守,反而难走出正常步态。

动手练习(15 分钟)

打开 训练参数调整与新动作开发指南.md 第 6 节,把你最想改的 4 个行为抄成一张速查卡:目标 → 文件 → 参数 → 验证方法。这张卡是你后面做实验的导航。

自查清单

下一课预告

改了参数,怎么知道有没有用?第 14 课讲单变量 A/B 实验:先写假设、再跑对照、最后给出有边界的结论——全程用本仓库 exp001 的真实数据演示。

延伸资源

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