让 MicroDuck 在现实中走起来,需要把几种不同的模型接在一起:机械装配决定它能怎样动,物理模型决定仿真中它怎样响应,策略网络决定每个控制周期要求它怎样动,板卡运行时负责把这些要求变成舵机指令。

这个系列以官方项目为主线,回答“从一只 CAD 里的鸭子,到一只能在真机上执行新策略的鸭子,中间具体要做什么”。它延续此前的官方训练启动指南,进一步解释命令背后的工程接口。

按什么顺序阅读

篇目 解决的问题 应留下的产物
01 机械建模与 MJCF CAD 如何变成可计算的机器人,质量、关节和碰撞怎样检查 可编译的 MJCF、关节映射、机械版本记录
02 创建仿真与训练环境 场景如何变成强化学习任务,如何增加自己的任务 注册任务、观测/动作约定、reset 与终止条件
03 配置训练参数 环境数、采样长度、网络、学习率和课程如何一起工作 可追溯的训练配置、日志和检查点
04 PPO 与奖励设计 PPO 怎样更新网络,怎样让奖励推动想要的行为 算法基线、奖励规格、消融与评估方案
05 Sim2Real 与 ONNX 如何缩小动力学差异,并保证导出的网络仍做同一件事 带归一化的 ONNX、接口对照、迁移验收记录
06 烧录、运行时与真机部署 空板如何装系统,已有机器人如何换策略、验证和回退 可运行的板卡系统、策略安装记录与真机检查结果

两个官方仓库,各负责一半

训练代码在 pollen-robotics/microduck_rl,主要使用 Python、mjlab、MuJoCo Warp、BAM 执行器模型和 PPO。真机软件在 pollen-robotics/microduck,由 robotd 等服务处理总线、状态、策略、更新和交互。

社区的 ROS 2/Isaac 集成项目提供另一条实验路径。本系列采用官方 mjlab 路线,不要求先搭 ROS 2 或 Isaac Sim。机器人图形模型、MuJoCo 物理模型、ONNX 网络与实机运行时也不是同一个文件。

为了让文中的源码位置可复查,本次阅读固定到以下提交:

仓库 阅读版本
microduck_rl bae39f5900b318f7e87fc485c30a31213cfa14eb
microduck 6cdfdaad21bed25e01b450c0dd4e0aee0ae19fde

文章日期为 2026-10-29。命令与参数以这些版本为依据;跟随上游更新时,重新检查依赖、任务注册和 CLI 帮助,特别是硬件安装脚本。

系列命令中的 rtk proxy 是本机命令包装器。服务器或机器人上未安装 RTK 时,去掉这个前缀直接运行后面的命令即可,不需要为了部署模型额外安装 RTK。所有占位路径、IP 和用户名都应替换为自己的实际值。

先建立一张工程地图

CAD 装配/实际零件与材料
  → 网格、连杆、关节、质量与惯量
  → MJCF + 执行器模型 + 传感器 + 地面
  → 强化学习任务:观测、动作、指令、奖励、reset、终止
  → 并行采样 + PPO:参数、课程、日志、检查点
  → 导出 ONNX:包含观测归一化和来源信息
  → 仿真复查:接口一致、指令有效、动力学扰动可接受
  → 板卡系统与 robotd:50 Hz 控制、总线、HOME 与限位
  → 真机分阶段验收、记录、回退

这张图中的每个箭头都应该有一项可检查的约定。例如,机械导出的关节顺序必须能映射到策略的 14 个动作;训练时的重力方向必须能对应实机 IMU;导出网络的归一化必须与训练使用的统计量一致。

“烧录到真机”实际上是三件不同的事

动作 写入什么 通常何时需要
烧录板卡系统 Linux 镜像、启动分区与根文件系统 空白开发板或恢复系统
安装/更新运行时 robotd 等程序、服务和依赖 首次配置板卡或更新软件版本
部署策略 ONNX 文件、策略槽位与相关配置 新训练完成后换一个步态或技能

普通策略迭代走第三条。ONNX 是由板卡推理程序加载的模型文件,不能把它当成 Linux 启动镜像,也不需要每训练一次就重刷整张卡。舵机或外设微控制器的固件更新又是另一件事,应使用对应硬件的独立流程。

本系列怎样区分证据与建议

文中会分别标明上游现有实现、作者给出的教学配置、以及需要运行验证的操作。上游默认值可以证明“这份代码采用了什么”,不能证明换一块显卡、换一个电池或换一套打印件后仍有同样表现。

这次系列是文档与源码核查结果,未执行 CAD 重新导出、PPO 长训练、板卡烧录或真机运动。尤其不会把“检查点保存成功”写成“学会行走”,也不会把“ONNX 能加载”写成“真机已验收”。

每阶段怎样判断可以往下走

阶段 应满足的检查 不够充分的证据
机械与物理模型 关节方向、限位、HOME、质量和接触有记录且可解释 模型看起来像鸭子
环境 reset、动作、奖励和终止能工作,观测没有 NaN 打开了一个查看器
训练 更新正常、检查点可重载、分项指标与行为相符 总奖励上涨
导出 输入顺序、归一化、动作尺度和指令语义一致 张量形状恰好正确
实机 初始化、总线和停止路径正常,再逐步检查低速行为 服务进程处于 active

每次实验保存代码提交、模型文件哈希、配置、检查点、视频和失败条件,可以把下一次调整建立在证据上。

从这里继续:第一篇:机械建模与 MJCF。