Skip to content

yusongmin1/My_unitree_go2_gym

Repository files navigation

Unitree GO2 GYM --YuSongmin

🌎 English | 🇨🇳 中文

🎮🚪 这是一个基于 Unitree 机器人实现强化学习的示例仓库开源后修改而成的仓库,支持 Unitree Go2。 🚪🎮


🔁 流程说明

强化学习实现运动控制的基本流程为:

TrainPlaySim2SimSim2Real

  • Train: 通过 Gym 仿真环境,让机器人与环境互动,找到最满足奖励设计的策略。通常不推荐实时查看效果,以免降低训练效率。
  • Play: 通过 Play 命令查看训练后的策略效果,确保策略符合预期。
  • Sim2Sim: 将 Gym 训练完成的策略部署到其他仿真器,避免策略小众于 Gym 特性。
  • Sim2Real: 将策略部署到实物机器人,实现运动控制。

🛠️ 使用指南

0. 安装依赖

Isaacgym 安装

rsl

cd ./rsl_rl && pip install -e .

legged_gym

cd .. && pip install -e .

1. 训练

运行以下命令进行训练:

python legged_gym/scripts/train.py --task=go2_trot --headless
python legged_gym/scripts/train.py --task=go2_stairs --headless
python legged_gym/scripts/train.py --task=go2_jump --headless
python legged_gym/scripts/train.py --task=go2_handstand --headless
python legged_gym/scripts/train.py --task=go2_spring_jump --headless

handstand 需要把mirror loss注释掉

⚙️ 参数说明

  • --task: 必选参数,值可选(go2, g1, h1, h1_2)
  • --headless: 默认启动图形界面,设为 true 时不渲染图形界面(效率更高)
  • --resume: 从日志中选择 checkpoint 继续训练
  • --experiment_name: 运行/加载的 experiment 名称
  • --run_name: 运行/加载的 run 名称
  • --load_run: 加载运行的名称,默认加载最后一次运行
  • --checkpoint: checkpoint 编号,默认加载最新一次文件
  • --num_envs: 并行训练的环境个数
  • --seed: 随机种子
  • --max_iterations: 训练的最大迭代次数
  • --sim_device: 仿真计算设备,指定 CPU 为 --sim_device=cpu
  • --rl_device: 强化学习计算设备,指定 CPU 为 --rl_device=cpu

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


2. Play

如果想要在 Gym 中查看训练效果,可以运行以下命令:

python legged_gym/scripts/play.py --task=go2_trot
python legged_gym/scripts/play.py --task=go2_spring_jump
python legged_gym/scripts/play.py --task=go2_handstand
python legged_gym/scripts/play.py --task=go2_stairs
python legged_gym/scripts/play.py --task=go2_jump

说明

  • Play 启动参数与 Train 相同。
  • 默认加载实验文件夹上次运行的最后一个模型。
  • 可通过 load_runcheckpoint 指定其他模型。

💾 导出网络

Play 会导出 Actor 网络,保存于 logs/{experiment_name}/exported/policies 中:

  • 普通网络(MLP)导出为 policy_1.pt

3. Sim2Sim (Mujoco)

mujoco_viewer mujoco.viewer two vision mujoco_viewer time sync is better

运行说明

纯强化学习代码,不含模仿学习

deploy_mujoco_48_handstand.py go2的handstand版本,没有base_line_vel,状态sin cos command ,command此时默认为0,后续可能加入起身下落的控制 对于站立控制的建议,不要把追踪速度作为最大值,否则他很容易学习到一前一后的叉开腿的动作。

目前只有handstand jump trot stairs是有效的,其他的还没有做完,我的想法是把其他的项目比方说BACKFLIP,难以阅读的代码整合到legged_gym框架,方便后来者进行学习 staris单训练比较困难,可以使用trot预训练抬脚高度20cm,然后再训练,我trot训练10000轮,stairs 8000轮可以爬20cm台阶,15cm 较为稳定

问题 与后续修改的计划

pakour

backflip

spring_jump

部署成功后开源部署代码,py

参考文章

https://arxiv.org/pdf/2205.02824

https://arxiv.org/pdf/2309.05665

https://arxiv.org/abs/2212.03238

https://arxiv.org/abs/2409.15755

https://arxiv.org/abs/2401.16337

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages