turtlebot3-burger_150.png
turtlebot3-waffle-pi_150.png
turtlebot3-arm_150.png
walking-y2_150.png
turbot3-multi_150.png
turbot3-dl-ros1_150.png
turbot3-ai.png
turbot3-dl-ros2_150.png
turbot3-slam_150.png
turbot3-arm_150.png
turtlebot4-lite_150.png
turtlebot4-pro_150.png
turbot4-dl_150.png
turbot4-ai_150.png
aidriving-racebot_150.png
aidriving-autodrive_150.png
turtlebot-arm_150.png
openmanipulator-x_150.png
Home » OpenDuckMini强化学习框架入门教程 » OpenDuckMini强化学习框架入门教程-安装与设置

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)。如需使用此功能,需要先生成参考运动数据:

  1. 使用参考运动生成器仓库生成多项式系数
  2. 将生成的 polynomial_coefficients.pkl 复制到机器人数据目录:
cp polynomial_coefficients.pkl playground/open_duck_mini_v2/data/
  1. 在机器人对应的 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交流群,微信扫描右侧二维码立即进群交流

群二维码

标签: OpenDuckMini强化学习框架