Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

OpenDoge 🤖

Hardware

OpenDoge 四足机器人的强化学习训练框架,衍生自 HIMLoco。

OpenDoge

目录结构

OpenDoge_train/
├── legged_gym/                  # 核心训练框架
│   ├── envs/
│   │   ├── base/                # 基础类 (LeggedRobot, LeggedRobotCfg)
│   │   ├── opendoge/            # OpenDoge 训练配置
│   │   ├── a1/                  # A1 训练配置
│   │   └── go1/                 # Go1 训练配置
│   ├── scripts/
│   │   ├── train.py             # 训练入口
│   │   └── play.py              # 演示 & ONNX 导出
│   ├── utils/                   # 工具 (task_registry, logger, terrain 等)
├── rsl_rl/                      # HIMLoco PPO 算法实现
│   └── rsl_rl/
│       ├── algorithms/          # PPO, HIMPPO, AMP, HIM-AMP
│       ├── modules/             # HIMActorCritic, HIMEstimator
│       ├── runners/             # PPO/HIM/AMP runners
│       └── storage/             # HIMRolloutStorage
├── datasets/opendoge_motion/    # 已重定向到 OpenDoge URDF 的 S-DOG2 AMP 数据
├── datasets/sdog2_motion/       # 旧版 S-DOG2 AMP 数据,仅作对照保留
├── datasets/keypoint_datasets/  # HIMloco 的 AI4Animation 原始关键点数据
├── deploy/deploy_mujoco/        # 配置驱动的 MuJoCo 验证与诊断
├── resources/robots/
│   ├── Opendoge/                # OpenDoge URDF + MuJoCo XML + STL 网格
│   ├── g1_description/          # G1 描述
│   ├── go1/ go2/                # Go1 / Go2 模型
│   └── h1/ h1_2/                # H1 模型
├── Tool/                        # 辅助工具
│   ├── check_urdf.py            # URDF 验证
│   └── simplify_mesh.py         # 网格减面
├── setup.py
└── LICENSE

快速启动

1. 创建 conda 环境

# Python 3.8 + PyTorch 2.3.1 + CUDA 12.1 + MuJoCo
conda create -n himloco python=3.8
conda activate himloco
pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
pip install mujoco==3.2.3

2. 安装 Isaac Gym

从 NVIDIA 官网 下载 Isaac Gym Preview 4,解压后安装:

conda activate himloco
pip install -e <isaacgym_path>/isaacgym/python

3. 配置环境变量

Isaac Gym 需要 libpython3.8.so 和自身 lib 目录。创建 activate hook 使变量仅在 himloco 环境生效:

mkdir -p ${CONDA_PREFIX}/etc/conda/activate.d
cat > ${CONDA_PREFIX}/etc/conda/activate.d/env_vars.sh << 'EOF'
export LD_LIBRARY_PATH=${CONDA_PREFIX}/lib:<isaacgym_path>/isaacgym/lib:$LD_LIBRARY_PATH
EOF

替换 <isaacgym_path> 为 Isaac Gym 的实际路径,例如 /home/lain/IsaacGym_Preview_4_Package。

4. 安装项目依赖

conda activate himloco
cd OpenDoge_train
pip install -e .

环境检查

conda activate himloco
python -c "
import isaacgym
print(f'IsaacGym:               ok')

import torch
print(f'PyTorch CUDA available: {torch.cuda.is_available()}')
print(f'PyTorch CUDA version:   {torch.version.cuda}')

import mujoco
print(f'MuJoCo:                 {mujoco.__version__}')

print('===== 环境就绪 =====')
"

预期输出:

IsaacGym:               ok
PyTorch CUDA available: True
PyTorch CUDA version:   12.1
MuJoCo:                 3.2.3
===== 环境就绪 =====

使用指南

1. Train

export PYTHONPATH=$PWD
python legged_gym/scripts/train.py --task=opendoge --headless

OpenDog V1.1 使用独立任务配置:

python legged_gym/scripts/train.py --task=opendoge_v1_1 --headless

OpenDoge 的任务已按 HIMloco 的训练阶段拆分,分别维护自己的地形、奖励、随机化和日志目录:

python legged_gym/scripts/train.py --task=opendoge_flat --headless
python legged_gym/scripts/train.py --task=opendoge_rough --headless
python legged_gym/scripts/train.py --task=opendoge_getup --headless
python legged_gym/scripts/train.py --task=opendoge_amp --headless
python legged_gym/scripts/train.py --task=opendoge_him_amp --headless

AMP 默认读取 datasets/opendoge_motion/*.json。这些片段由 HIMloco 的 S-DOG2/AI4Animation 关键点数据重定向到 OpenDoge URDF;重新生成数据:

python datasets/retarget_opendoge_motions.py

从 checkpoint 继续训练:

python legged_gym/scripts/train.py --task=opendoge --resume --load_run <run_name> --checkpoint <model_number>

可用 task

task 机器人
opendoge OpenDoge
opendoge_v1_1 OpenDog V1.1
opendoge_flat OpenDoge 平地行走预训练
opendoge_rough OpenDoge 粗糙地形课程训练
opendoge_getup OpenDoge 翻倒恢复
opendoge_amp OpenDoge AMP 行为先验训练
opendoge_him_amp OpenDoge HIM + AMP 训练
a1 Unitree A1
go1 Unitree Go1

参数说明

参数 说明 默认值
--task 任务名称 必选
--headless 不渲染图形界面 false
--num_envs 并行环境数 4096
--seed 随机种子 1
--max_iterations 最大迭代次数 300000
--resume 继续训练 false
--load_run 加载的运行名称 -1 (最新)
--checkpoint checkpoint 编号 -1 (最新)
--experiment_name 实验名称 覆盖默认值
--run_name 运行名称 覆盖默认值
--sim_device 仿真设备 cuda:0
--rl_device 强化学习设备 cuda:0

训练结果保存在 logs/<experiment_name>/<date_time>_<run_name>/model_<iteration>.pt。

2. Play

加载训练好的模型进行仿真演示并导出 ONNX:

export PYTHONPATH=.
python legged_gym/scripts/play.py --task=opendoge --load_run <run_name> --checkpoint <model_number>

导出的 ONNX 模型保存在 onnx/ 目录,TorchScript 模型保存在 logs/<experiment_name>/exported/policies/。

查看训练曲线:

tensorboard --logdir=./logs/

3. MuJoCo Deploy / Sim2Sim

训练完成后,在 MuJoCo 中实时验证策略迁移效果:

# OpenDoge 键盘可视化
python deploy/deploy_mujoco/deploy_mujoco.py opendoge.yaml --keyboard

# OpenDoge 固定速度运行和诊断
python deploy/deploy_mujoco/deploy_mujoco.py opendoge.yaml --no-keyboard --cmd_vx 1.0

# OpenDoge 策略验证
python deploy/deploy_mujoco/deploy_mujoco.py opendoge.yaml --validate --duration 5

# OpenDog V1.1 键盘可视化
python deploy/deploy_mujoco/deploy_mujoco.py opendoge_v1_1.yaml --keyboard

# OpenDog V1.1 HIMloco 风格 PyQt 内嵌界面(推荐)
python deploy/deploy_mujoco/opendoge_v1_1_panel.py

# 指定其他 V1.1 ONNX 模型
python deploy/deploy_mujoco/deploy_mujoco.py opendoge_v1_1.yaml \
  --onnx onnx/opendoge_v1_1_directional_model_7600.onnx --keyboard

键盘操作

前进 后退 左转 右转 左平移 右平移 暂停
↑ ↓ ← → Ctrl+← Ctrl+→ Space

XBOX 手柄操作

操作 映射
左摇杆 ↑↓ 前进 / 后退
左摇杆 ←→ 左 / 右平移
右摇杆 ←→ 左转 / 右转
START 暂停 / 恢复
BACK 退出仿真

配置参数 (PD、缩放因子、默认角度等) 在 deploy/deploy_mujoco/configs/ 中与训练配置对齐。V1.1 的 PyQt 面板使用离屏 mujoco.Renderer 将画面嵌入 Qt 窗口,鼠标相机行为和 HIMloco 面板保持一致。

4. Sim2Real

目前 deploy_real/ 中的实机部署脚本基于 Unitree SDK(Go2/G1/H1),OpenDoge 的实机部署通过 ROS2 固件仓库 OpenDoge_firmware 完成。

致谢

本项目衍生自 HIMLoco,同时参考了:

许可证

BSD-3-Clause,详见 LICENSE。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages