OpenDuckMini强化学习框架入门教程-目录
纠错,疑问,交流: 请进入讨论区或 请点击进入页面,扫码加入微信群或Q群进行交流
获取最新文章: 扫一扫加入“创客智造”公众号
欢迎加入我们的openduckmini交流群,微信扫描右侧二维码立即进群交流
概述
目的与范围
Open Duck Playground 是一个强化学习框架,专为 Open Duck Mini V2 机器人的控制策略训练和测试而设计。该仓库提供了从环境定义到策略训练再到实时推理的完整管线,使用户能够为机器人开发能够执行站立和摇杆控制运动等任务的控制器。
本文概述了核心系统及其关系。
核心组件与架构
Open Duck Playground 围绕几个关键系统构建,它们协同工作:
┌─────────────────────────────────────────────────────────────┐
│ Open Duck Mini V2 │
├─────────────┬───────────────┬──────────────┬───────────────┤
│ 奖励系统 │ 机器人定义 │ 推理系统 │ 训练系统 │
│ (rewards.py)│ (XML模型) │ (mujoco_infer)│ (runner.py) │
└─────────────┴───────────────┴──────────────┴───────────────┘
环境系统
提供训练和测试机器人策略的仿真框架,基于 MuJoCo 物理引擎构建,采用分层结构:
- 基础环境 (
OpenDuckMiniV2Env/base.py): 处理核心机器人仿真,包括模型加载、状态观测和物理仿真 - 任务环境:
- 摇杆环境 (
joystick.py): 实现由摇杆命令控制的运动 - 站立环境 (
standing.py): 实现稳定的站立行为
- 摇杆环境 (
环境遵循标准接口:reset()、step()、奖励计算和终止逻辑。
训练系统
管理强化学习策略的训练过程:
- Runner (
OpenDuckMiniV2Runner): 使用 Brax 的 PPO 实现协调训练过程 - 域随机化 (
randomize.py): 通过在训练过程中变化物理参数来提高策略鲁棒性 - 模型导出 (
export_onnx.py): 将训练好的模型转换为 ONNX 格式用于推理
训练过程保存检查点并定期将模型导出为 ONNX 格式用于部署。
推理系统
允许在实时仿真中运行训练好的策略:
- MuJoCo 推理 (
MjInfer/mujoco_infer.py): 加载 ONNX 模型并在 MuJoCo 仿真中运行 - ONNX 集成 (
onnx_infer.py): 提供标准化的模型导出和推理格式
推理管线:
训练管线 → 训练 → 保存 → 导出 → ONNX 模型
↓
推理管线 → MjInfer → MuJoCo 仿真 ← 用户输入
机器人模型
Open Duck Mini V2 机器人通过 MuJoCo XML 模型文件定义:
- 机器人定义: 描述机器人结构、关节和物理属性的 XML 文件
- 地形定义: 定义仿真环境(平坦地面、粗糙地形等)的 XML 文件
模型包含回差建模 (backlash modeling) 等高级功能,以模拟真实的关节行为。
奖励系统
奖励系统指导学习过程:
- 核心奖励: 基础奖励组件,如跟踪奖励、能量奖励和姿态奖励
- 模仿奖励: 基于参考运动的可选奖励
- 参考运动生成: 基于多项式的参考运动生成
奖励结构:
┌────────────────────────────────────────────────────┐
│ Imitation System (可选) │
│ PolyReferenceMotion → polynomial_coefficients.pkl │
└────────────────────────────────────────────────────┘
↓
┌────────────────────────────────────────────────────┐
│ 环境特定奖励组件 (rewards.py) │
│ ┌─────────────┬──────────────┬──────────────┐ │
│ │ 跟踪奖励 │ 能量奖励 │ 姿态奖励 │ │
│ │ tracking_ │ cost_torques│ cost_pose │ │
│ │ lin/ang_vel │ cost_energy │ │ │
│ └─────────────┴──────────────┴──────────────┘ │
│ ┌──────────────────────────────────────┐ │
│ │ 足部奖励 │ │
│ │ reward_feet_air_time │ │
│ └──────────────────────────────────────┘ │
│ 摇杆奖励 / 站立奖励(环境特定) │
└────────────────────────────────────────────────────┘
工作流程
Open Duck Playground 的典型工作流程:
- 环境设置: 定义任务环境(摇杆或站立)
- 训练: 使用 Runner 通过 PPO 训练策略
- 导出: 将训练好的策略转换为 ONNX 格式
- 推理: 使用 MuJoCo 推理实时运行策略
主要依赖
| 类别 | 依赖 |
|---|---|
| 物理仿真 | MuJoCo |
| 机器学习 | JAX, TensorFlow |
| 模型导出/推理 | ONNX Runtime, tf2onnx |
| 可视化 | mediapy, pygame |
添加新机器人
该框架设计为可扩展的,添加新机器人的过程包括:
- 在
playground/中创建以机器人命名的新目录 - 为新机器人编辑基础环境
- 在
xmls/目录中添加 MJCF 资源文件 - 为特定机器人配置奖励
- 设置用于训练的 Runner
纠错,疑问,交流: 请进入讨论区或 请点击进入页面,扫码加入微信群或Q群进行交流
获取最新文章: 扫一扫加入“创客智造”公众号
欢迎加入我们的openduckmini交流群,微信扫描右侧二维码立即进群交流


















