update history length to 10; update readme; add demo resources; update policy files and deploy config.
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -72,14 +72,12 @@ __pycache__/
|
||||
|
||||
# ML checkpoints / datasets
|
||||
*.pth
|
||||
*.onnx
|
||||
*.npz
|
||||
*.npy
|
||||
|
||||
# Large ML artifacts (do not commit)
|
||||
*.pth
|
||||
*.ckpt
|
||||
*.onnx
|
||||
|
||||
# logs
|
||||
logs/
|
||||
|
||||
76
README.md
76
README.md
@@ -1,22 +1,90 @@
|
||||
<div align="center">
|
||||
<h1 align="center">Go2 RL RobotLab</h1>
|
||||
<a href="https://robogauge.github.io/complete/">
|
||||
<img src="https://img.shields.io/badge/Project-Page-green.svg" alt="Project Page"/>
|
||||
</a>
|
||||
<a href="https://robogauge.github.io/static/files/arxiv.pdf">
|
||||
<img src="https://img.shields.io/badge/Paper-RSS%202025-blue.svg" alt="RSS 2025 Paper"/>
|
||||
</a>
|
||||
<a href="https://arxiv.org/abs/2602.00678">
|
||||
<img src="https://img.shields.io/badge/arXiv-2602.00678-b31b1b.svg" alt="arXiv:2602.00678"/>
|
||||
</a>
|
||||
<a href="https://github.com/wty-yy/go2_rl_gym">
|
||||
<img src="https://img.shields.io/badge/IsaacGym-go2__rl__gym-orange.svg" alt="IsaacGym go2_rl_gym"/>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## Overview
|
||||
|
||||
Train a Unitree Go2 robot in IsaacLab, and deploy policy to MuJoCo for Sim2Sim. For more, see the [project page](https://robogauge.github.io/complete/).
|
||||
|
||||
Train the Unitree Go2 robot with MoE-CTS in IsaacLab, and deploys policy to MuJoCo for Sim2Sim.
|
||||
|
||||
It is a official reproduction of [go2_rl_gym](https://github.com/wty-yy/go2_rl_gym), adapted to the IsaacLab / RobotLab ecosystem.
|
||||
It is an official [MoE-CTS](https://robogauge.github.io/static/files/arxiv.pdf) algorithm implementation in IsaacLab / RobotLab, as a reproduction of [go2_rl_gym](https://github.com/wty-yy/go2_rl_gym).
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="resources/go2/isaaclab_scene.png" width="70%"/>
|
||||
<img src="resources/results/isaaclab_scene.png" width="70%"/>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## Demos
|
||||
|
||||
<p align="center">
|
||||
<b>Train in IsaacLab → validate with MuJoCo Sim2Sim → evaluate on the real Unitree Go2.</b>
|
||||
</p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="50%" align="center">
|
||||
<b>IsaacLab Play</b><br/>
|
||||
<sub>Policy rollout in the IsaacLab environment.</sub><br/><br/>
|
||||
<img src="https://raw.githubusercontent.com/wertyuilife2/picture-bed/main/go2_rl_robotlab/demo-isaaclab.gif" width="80%"/>
|
||||
</td>
|
||||
<td width="50%" align="center">
|
||||
<b>MuJoCo Sim2Sim</b><br/>
|
||||
<sub>Exported policy running in MuJoCo before real-world deployment.</sub><br/><br/>
|
||||
<img src="https://raw.githubusercontent.com/wertyuilife2/picture-bed/main/go2_rl_robotlab/demo-sim2sim.gif" width="80%"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="center">
|
||||
<b>Real Robot</b><br/>
|
||||
<sub>Robust walking front on stairs.</sub><br/><br/>
|
||||
<img src="https://raw.githubusercontent.com/wertyuilife2/picture-bed/main/go2_rl_robotlab/demo-real-walk-front.gif" width="100%"/>
|
||||
</td>
|
||||
<td width="50%" align="center">
|
||||
<b>Real Robot</b><br/>
|
||||
<sub>Robust walking sideways on stairs.</sub><br/><br/>
|
||||
<img src="https://raw.githubusercontent.com/wertyuilife2/picture-bed/main/go2_rl_robotlab/demo-real-walk-side.gif" width="100%"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
---
|
||||
|
||||
## RoboGauge Benchmark
|
||||
|
||||
<p align="center">
|
||||
<b><a href="https://github.com/wty-yy/RoboGauge">RoboGauge</a> score comparison between go2_rl_robotlab and the original go2_rl_gym.</b>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="resources/results/robogauge_compare.png" width="100%"/>
|
||||
</p>
|
||||
|
||||
### Algorithm Results (Best of 150k training steps)
|
||||
|
||||
| Model | Score | Tracking | Safety | Quality | Level |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| go2_moe_cts (go2_rl_robotlab) | **0.6828** | **0.6785** | 0.7552 | **0.7645** | **8.17** |
|
||||
| go2_moe_cts (go2_rl_gym) | **0.6713** | 0.6669 | **0.7857** | 0.7392 | 7.85 |
|
||||
| [CTS](https://arxiv.org/pdf/2405.10830) vanilla | 0.5786 | 0.5755 | 0.7066 | 0.6624 | 6.83 |
|
||||
| [HIM](https://github.com/InternRobotics/HIMLoco) | 0.5379 | 0.5453 | 0.6476 | 0.6050 | 6.19 |
|
||||
| [DreamWaQ](https://arxiv.org/abs/2301.10602) | 0.5054 | 0.5105 | 0.6149 | 0.5730 | 5.74 |
|
||||
|
||||
---
|
||||
|
||||
## Installation Guide
|
||||
|
||||
### 1. Install IsaacLab
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
policy_path: "{ROOT_DIR}/deploy/pre_train/go2/xxx.pt" # policy.pt exported by running scripts/rsl_rl/play.py
|
||||
policy_path: "{ROOT_DIR}/deploy/pre_train/go2/go2_moe_cts_185k_0.6828.pt" # policy.pt exported by running scripts/rsl_rl/play.py
|
||||
|
||||
xml_path: "{ROOT_DIR}/resource/go2/stairs.xml"
|
||||
xml_path: "{ROOT_DIR}/resources/go2/stairs_and_slope.xml"
|
||||
|
||||
render_fps: 240
|
||||
render_fps: 300
|
||||
video_fps: 60
|
||||
save_video: false
|
||||
|
||||
|
||||
BIN
deploy/pre_train/go2/go2_moe_cts_185k_0.6828.onnx
Normal file
BIN
deploy/pre_train/go2/go2_moe_cts_185k_0.6828.onnx
Normal file
Binary file not shown.
BIN
deploy/pre_train/go2/go2_moe_cts_185k_0.6828.pt
Normal file
BIN
deploy/pre_train/go2/go2_moe_cts_185k_0.6828.pt
Normal file
Binary file not shown.
39
resources/go2/stairs_and_slope.xml
Normal file
39
resources/go2/stairs_and_slope.xml
Normal file
@@ -0,0 +1,39 @@
|
||||
<mujoco model="stairs_and_slope">
|
||||
<include file="go2.xml"/>
|
||||
|
||||
<statistic center="0 0 0.1" extent="0.8"/>
|
||||
|
||||
<visual>
|
||||
<headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0"/>
|
||||
<rgba haze="0.15 0.25 0.35 1"/>
|
||||
<global azimuth="-130" elevation="-20"/>
|
||||
</visual>
|
||||
|
||||
<asset>
|
||||
<texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="512" height="3072"/>
|
||||
<texture type="2d" name="groundplane" builtin="checker" mark="edge" rgb1="0.2 0.3 0.4" rgb2="0.1 0.2 0.3"
|
||||
markrgb="0.8 0.8 0.8" width="300" height="300"/>
|
||||
<material name="groundplane" texture="groundplane" texuniform="true" texrepeat="5 5" reflectance="0.2"/>
|
||||
</asset>
|
||||
|
||||
<worldbody>
|
||||
<light pos="0 0 1.5" dir="0 0 -1" directional="true"/>
|
||||
<geom name="floor" size="0 0 0.05" type="plane" material="groundplane"/>
|
||||
|
||||
<body name="stairs" pos="2 0 0">
|
||||
<geom name="step_0" type="box" size="0.15 3.0 0.095" pos="0.15 0 0.095" rgba="1 1 1 1"/>
|
||||
<geom name="step_1" type="box" size="0.15 3.0 0.095" pos="0.45 0 0.285" rgba="1 1 1 1"/>
|
||||
<geom name="step_2" type="box" size="0.15 3.0 0.095" pos="0.75 0 0.475" rgba="1 1 1 1"/>
|
||||
<geom name="step_3" type="box" size="0.15 3.0 0.095" pos="1.05 0 0.665" rgba="1 1 1 1"/>
|
||||
<geom name="step_4" type="box" size="0.15 3.0 0.095" pos="1.35 0 0.855" rgba="1 1 1 1"/>
|
||||
<geom name="step_5" type="box" size="0.15 3.0 0.095" pos="1.65 0 1.045" rgba="1 1 1 1"/>
|
||||
<geom name="step_6" type="box" size="0.15 3.0 0.095" pos="1.95 0 1.235" rgba="1 1 1 1"/>
|
||||
<geom name="step_7" type="box" size="0.15 3.0 0.095" pos="2.25 0 1.425" rgba="1 1 1 1"/>
|
||||
<geom name="step_8" type="box" size="0.15 3.0 0.095" pos="2.55 0 1.615" rgba="1 1 1 1"/>
|
||||
<geom name="step_9" type="box" size="0.15 3.0 0.095" pos="2.85 0 1.805" rgba="1 1 1 1"/>
|
||||
</body>
|
||||
|
||||
<!-- 斜坡:从最后一阶末端(X=6)开始,向下倾斜0.4rad,水平长度约4.493m,白色 -->
|
||||
<geom name="ramp" type="box" size="2.2465 3.0 0.1" pos="7.0465 0 0.95" rgba="1 1 1 1" euler="0 0.4 0"/>
|
||||
</worldbody>
|
||||
</mujoco>
|
||||
|
Before Width: | Height: | Size: 2.5 MiB After Width: | Height: | Size: 2.5 MiB |
BIN
resources/results/robogauge_compare.png
Normal file
BIN
resources/results/robogauge_compare.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 896 KiB |
@@ -159,7 +159,7 @@ class ObservationsCfg:
|
||||
scale=1.0,
|
||||
)
|
||||
def __post_init__(self):
|
||||
self.history_length = 5
|
||||
self.history_length = 10
|
||||
self.enable_corruption = True
|
||||
self.concatenate_terms = True
|
||||
self.flatten_history_dim = True
|
||||
|
||||
Reference in New Issue
Block a user