DEEP 23 · 第三辑 · 训练代码 · LEARN NOTES

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

解读 23 · velocity 配置(中):动作与观测

解读对象:microduck-replica/upstream/microduck_rl/src/mjlab_microduck/tasks/microduck_velocity_env_cfg.py 第 193–638 行
需要的前置:解读 22(开关常量);term(项)= 挂在某个 manager 下"一个函数+参数+权重"的最小单元

make_microduck_velocity_env_cfg(play=False, rough=False)(193 行)不是从零写配置,而是
"取 mjlab 官方模板,再逐项改造":263 行 cfg = make_velocity_env_cfg() 拿到基座,266 行
把机器人换成 MICRODUCK_WALK_ROBOT_CFG,267 行装上三个自研传感器配置
(feet_ground_cfg 220 行、self_collision_cfg 234 行、foot_height_scan_cfg 246 行)。

动作:14 维关节位置,缩放 1.0

271–273 行把 cfg.actions["joint_pos"](一个 JointPositionActionCfg)的 scale 设为
1.0——策略输出直接是目标关节位置偏移,14 个下肢与颈部关节(两条腿各 5 + 颈部 4)。623–627 行解释了为什么
观测恰好也是 14 维:passive_* 下颌连杆关节被正则 ^(?!passive_).* 排除,否则观测会是
原始的 16 维,与动作维数对不上。

观测改造:删、换、加延迟、加噪声

这一段是全文件最能体现 sim2real 思路的部分(534–638 行):

顺带的奖励微调与事件

同区间还夹着奖励覆盖:pose 权重 1.0(289 行)、upright 权重 2.0/std²=0.05(300–301 行,
注释给出 4° 前倾代价从 0.05→0.19/步的计算)、foot_slip 弱化到 -0.1(314 行)、air_time
权重 3.0、threshold_min=0.04(333–339 行)。事件区注册了 push_robot(398–409 行)与
一排 DR 事件(randomize_com 417、randomize_head_com 429、randomize_mass_inertia 465
等),实现见 解读 26。

你带走的收获

延伸

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