[Duck Together] A-仿真与强化学习:MicroDuck 云端仿真与首次行走策略训练验证

项目目标

在没有 RDK X5 和实体机器鸭的情况下,先使用 RoboGo 云端环境完成 MicroDuck 基础动作验证,并跑通强化学习训练环境,作为后续 sim2real 的起点。

当前完成情况

  • 已创建 RoboGo 开发机,配置为 1× NVIDIA RTX 5090、32 GB 显存、100 GB 系统盘。
  • 使用镜像:microduck-cloud-sim_fork。
  • 已在网页驾驶舱完成基础动作演示:移动、转向、踢球、坐下/站起、前滚翻、推倒恢复和复位。
  • 已阅读 MicroDuck RL 课程第 1~3 集。
  • 已克隆并安装 pollen-robotics/microduck_rl。
  • CUDA 检测通过,GPU 为 NVIDIA GeForce RTX 5090。
  • 任务注册通过,共发现 45 个环境任务。
  • 测试结果:199 passed, 1 skipped;跳过项为 x86_64 上预期跳过的 aarch64 专用测试。
  • 已启动首次行走策略训练:Mjlab-Velocity-Flat-MicroDuck,4096 个并行环境。

环境与版本

  • 云端 GPU:NVIDIA GeForce RTX 5090,32 GB
  • CUDA:驱动显示 CUDA 12.8
  • Python:uv 管理的 CPython 3.12.14
  • torch:2.9.1
  • mjlab:1.3.0
  • rsl-rl-lib:5.0.1
  • mujoco:3.10.0
  • mujoco-warp:3.8.1
  • warp-lang:1.12.0
  • better-actuator-models:Rhoban BAM,mjlab_frictionloss 分支

复现步骤

命令如下:

git clone https://github.com/pollen-robotics/microduck_rl
cd microduck_rl
uv sync
uv run python -c "import torch; print(torch.cuda.is_available())"
uv run list-envs
uv run --with pytest pytest tests/
WANDB_MODE=offline uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096

由于当前环境没有配置 W&B API Key,训练使用 WANDB_MODE=offline,日志保存在云端本地,不依赖 W&B 登录。

训练记录

首次训练日志目录:

/root/microduck_rl/logs/rsl_rl/velocity/2026-09-05_19-58-54_velocity

训练已成功进入迭代,观测到:

  • actor 观测维度 61
  • critic 观测维度 76
  • 动作维度 14
  • 4096 个环境运行在 cuda:0
  • 首轮后吞吐约 78k steps/s
  • 训练初期平均奖励从 -0.03 上升到约 1.77

当前问题

目前 RoboGo 云端开发机页面暂时无法打开,推测与平台地瓜干/算力额度有关;训练尚未完成,ONNX 导出和完整策略回放待资源恢复后继续。

当前没有 RDK X5,因此暂未验证端侧运控、BPU 视觉和真机 Sim2Real。

下一步

  1. 恢复云端资源后继续训练并保存 checkpoint。
  2. 在 CPU MuJoCo 中回放训练策略并录制视频素材。
  3. 使用 scripts/export.py 导出包含观测归一化器的 ONNX。
  4. 补充训练曲线、策略效果视频和最终复现记录。
  5. 后续有 RDK X5 后再接入板端运控和 BPU 视觉。

相关链接

开源与授权

本项目使用的 MicroDuck 运行时和 RL 仓库按其 Apache-2.0 许可证使用;3D 模型等文件的许可证需按源项目说明单独遵守。本帖记录的是个人云端仿真和训练验证,不代表 MicroDuck 官方活动成果。

训练进展更新(2026-09-07)

在前期云端 RTX 5090 环境验证之后,我将同一套 MicroDuck RL 环境迁移到 NVIDIA DGX Spark(ARM64,GB10)继续训练,结果如下:

  • 任务:Mjlab-Velocity-Flat-MicroDuck
  • 训练配置:4096 个并行环境,WANDB_MODE=offline
  • DGX Spark 环境:torch 2.9.1+cu129,torch.cuda.is_available() = True,GB10 CUDA 矩阵运算验证通过
  • 训练进度:已完成约 31,500 / 50,000 轮
  • 最新平均奖励:约 129.81
  • 平均单轮耗时:约 2.6 秒
  • 稳定性:nan_state = 0
  • 最新 checkpoint:model_31500.pt
  • 已生成对应 ONNX 文件

本轮训练使用后台持久化方式运行,日志保存在:

/home/Developer/microduck_rl/logs/spark/train.log

考虑到完整 50,000 轮训练时间较长,且当前 checkpoint 已达到可回放验证的阶段,我已暂停训练,保留 model_31500.pt 作为当前验证版本。下一步将进行 MuJoCo 回放、ONNX CPU 推理验证、训练曲线整理和录屏素材制作。

目前仍没有 RDK X5,因此暂不进行真机端侧运控、BPU 视觉和 sim2real 验证。这个记录仅代表个人仿真与训练过程,不代表官方活动成果。