XGO-Duck 使用基于 mjlab(MuJoCo Warp)的仿真环境,通过 PPO 训练策略并导出 ONNX。训练在具备 CUDA GPU 的电脑上进行,机载运行时负责执行兼容的策略。
安装环境
训练环境需要 CUDA GPU、Python 3.12 和 uv。克隆仓库后,在项目根目录安装依赖:
cd xgoduck_rl
uv sync
在 DGX Spark / GB10、Jetson 等 ARM 机器上,首次同步可能下载较大的 CUDA 安装包;可在同步前将 UV_HTTP_TIMEOUT 设置为 600 秒。具体依赖和设备支持请以所用版本为准。
训练与查看
在仓库根目录运行:
uv run list-envs
uv run train Mjlab-Velocity-Flat-XgoDuck --env.scene.num-envs 4096
uv run play Mjlab-Velocity-Flat-XgoDuck
4096 是示例中的并行环境数,并不保证适合所有 GPU;按可用显存和训练情况调整。play 不指定 checkpoint 时会读取该任务目录中的最新模型;也可使用 --checkpoint-file 选择具体文件。
其他训练任务包括粗糙地形、起身、拾取、坐站、左右脚踢球、翻滚和轮滑;名称及实验目录请查阅训练任务表。检查点和 TensorBoard 日志位于 logs/rsl_rl/<experiment>/。
导出 ONNX
把下面的 <run> 和 model_XXXX.pt 替换为实际训练结果:
uv run python scripts/export.py Mjlab-Velocity-Flat-XgoDuck \
--checkpoint-file logs/rsl_rl/xgoduck_velocity/<run>/model_XXXX.pt \
--onnx-file logs/rsl_rl/xgoduck_velocity/<run>/<run>.onnx
导出会将观测归一化写入模型;不指定 --onnx-file 时默认写到当前目录的 output.onnx。保留训练配置、checkpoint 和导出文件,方便追溯。
部署前核对
模型是 ONNX 格式并不自动意味着能用于所有动作或运行时版本。替换前需核对任务、观测和动作定义、关节顺序、默认姿态、策略命令、参数和运行时支持;例如仓库中的 Roulade Angle 变体需要运行时提供累计角度输入。新策略应先在仿真和卸力状态下验证,再在可靠支撑、空旷的场地逐步测试。
