OpenDuckMini强化学习框架入门教程-安装与设置
纠错,疑问,交流: 请进入讨论区或 请点击进入页面,扫码加入微信群或Q群进行交流
获取最新文章: 扫一扫加入“创客智造”公众号
欢迎加入我们的openduckmini交流群,微信扫描右侧二维码立即进群交流
安装与设置
- 学习如何搭建OpenDuckMini强化学习框架的开发学习环境
使用 uv 包管理器安装
Open Duck Playground 使用 uv 作为包管理器——一个用 Rust 编写的极速 Python 包管理器。首先确保已安装 uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
克隆仓库
git clone https://github.com/apirrone/Open_Duck_Playground.git
cd Open_Duck_Playground
依赖环境
项目的依赖定义在 pyproject.toml 中。核心依赖包括:
[project]
name = "Open_Duck_Playground"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"framesviewer>=1.0.2",
"jax[cuda12]>=0.5.0",
"jaxlib>=0.5.0",
"jaxtyping>=0.2.38",
"matplotlib>=3.10.0",
"mediapy>=1.2.2",
"onnxruntime>=1.20.1",
"playground>=0.0.3",
"pygame>=2.6.1",
"tensorflow>=2.18.0",
"tf2onnx>=1.16.1",
]
依赖分类
| 类别 | 依赖 | 用途 |
|---|---|---|
| 物理仿真 | MuJoCo (通过 playground) |
机器人物理仿真引擎 |
| 机器学习 | JAX (>=0.5.0, CUDA 12), JAX lib | 自动微分与 GPU 加速计算 |
| 神经网络 | TensorFlow (>=2.18.0) | 模型导出时的神经网络框架 |
| 模型导出 | ONNX Runtime (>=1.20.1), tf2onnx (>=1.16.1) | 将训练好的策略转换为 ONNX 格式 |
| 可视化 | mediapy (>=1.2.2), matplotlib (>=3.10.0) | 训练过程可视化与渲染 |
| 用户交互 | pygame (>=2.6.1) | 摇杆控制输入 |
| 类型检查 | jaxtyping (>=0.2.38) | JAX 类型注解 |
| 数据查看 | framesviewer (>=1.0.2) | 帧数据查看器 |
安装依赖:
uv sync
参考运动数据(可选)
Open Duck Playground 支持基于参考运动的模仿奖励(Imitation Reward)。如需使用此功能,需要先生成参考运动数据:
- 使用参考运动生成器仓库生成多项式系数
- 将生成的
polynomial_coefficients.pkl复制到机器人数据目录:
cp polynomial_coefficients.pkl playground/open_duck_mini_v2/data/
- 在机器人对应的
joystick.py文件中设置USE_IMITATION_REWARD=True
训练命令
启动训练
使用 uv run 执行训练脚本,指定任务和相关参数:
uv run playground/open_duck_mini_v2/runner.py \
--task flat_terrain_backlash \
--num_timesteps 300000000
训练参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
--env |
joystick |
选择环境:joystick(摇杆控制)或 standing(站立) |
--task |
flat_terrain |
任务类型:flat_terrain, rough_terrain, flat_terrain_backlash, rough_terrain_backlash |
--num_timesteps |
150000000 |
总训练步数 |
--output_dir |
checkpoints |
检查点和日志输出目录 |
--restore_checkpoint_path |
None |
从指定检查点恢复训练 |
可用任务组合
| 任务名称 | 地形 | 回差建模 |
|---|---|---|
flat_terrain |
平坦 | 否 |
rough_terrain |
粗糙 | 否 |
flat_terrain_backlash |
平坦 | 是 |
rough_terrain_backlash |
粗糙 | 是 |
查看训练日志
uv run tensorboard --logdir=<your_log_directory>
推理命令
训练完成后,使用 MuJoCo 推理运行训练好的策略:
uv run playground/open_duck_mini_v2/mujoco_infer.py -o <path_to_.onnx>
推理参数:
| 参数 | 说明 |
|---|---|
-o, --onnx_model_path |
必填,导出 ONNX 模型的路径 |
--reference_data |
参考运动数据路径(默认: playground/open_duck_mini_v2/data/polynomial_coefficients.pkl) |
--model_path |
场景 XML 文件路径(默认: 平坦地形) |
--standing |
是否使用站立模式(默认: False,使用摇杆模式) |
推理控制
在推理过程中,键盘控制:
- 方向键 ↑/↓: 前进/后退速度
- 方向键 ←/→: 横向速度(摇杆模式)或头部偏航(头部控制模式)
- A/E: 旋转角速度(摇杆模式)或头部滚动
- H: 切换头部控制模式
- P/M: 增加/减少相位频率
使用 PyPI 的 playground 包
Open Duck Playground 依赖 PyPI 上发布的 playground 包(>=0.0.3),该包提供了 MuJoCo 仿真环境的底层封装,包括:
mujoco_playground._src.mjx_env:MJX 环境的基类mujoco_playground.wrapper:环境包装器,用于与 Brax 训练框架对接mujoco_playground.config.locomotion_params:PPO 训练配置参数mujoco_playground._src.collision:碰撞检测工具
该包源于 kscalelabs/mujoco_playground 项目,Open Duck Playground 在其基础上进行了定制化改造。
纠错,疑问,交流: 请进入讨论区或 请点击进入页面,扫码加入微信群或Q群进行交流
获取最新文章: 扫一扫加入“创客智造”公众号
欢迎加入我们的openduckmini交流群,微信扫描右侧二维码立即进群交流


















