diff --git a/README.md b/README.md index 258ef9f..a319e82 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ Example integration: `update_robogauge` in [`go2_rl_gym - on_policy_runner.py`]( > You can launch training with evaluation enabled via `python legged_gym/scripts/train.py --task=xxx --robogauge`. The trainer waits for the evaluation client to be available. Results are saved under `logs/{experiment_name}` and visualized in TensorBoard. -## Metrics / Goals / Terrains +## Env Params / Metrics / Goals Metrics are computed by sending fixed commands to the environment for a fixed duration, reading required signals from MuJoCo, and aggregating them. @@ -201,7 +201,11 @@ Create a new robot implementation and control-model configuration under `robogau - `assets/`: documentation assets - `scripts/`: helper shell scripts for running experiments -### Pipeline Logic +### RoboGauge Framework + +| Details | Diagram | +| - | - | +| RoboGauge evaluation framework consists of three parts as shown in the diagram on the right:
Part A: BasePipeline handles a single evaluation environment, including terrain, robot, domain randomization, and raw metric computation.
Part B: MultiPipeline launches multiple BasePipelines in parallel processes for multi-seed evaluation, while LevelPipeline calls MultiPipeline to find the highest difficulty terrain that the policy can handle.
Part C: StressPipeline handles testing across all terrains, providing an overall RoboGauge score.| ![robogauge framework](./assets/robogauge_framework.jpg) | [BasePipeline](./robogauge/tasks/pipeline/base_pipeline.py) manages scheduling among the simulator `sim`, the gauge (command generation + metric computation) `gauge`, and the locomotion policy wrapper `robot`. It also includes exception handling, domain randomization, and observation noise. @@ -224,4 +228,4 @@ Cause: MuJoCo cannot create an OpenGL context in headless mode. Fix: In `robogauge/scripts/run.py` and `robogauge/scripts/server.py`, set `os.environ['MUJOCO_GL']` to `egl` (GPU) or `osmesa` (CPU, slower). ## Thanks -Thanks to [@windigal](https://github.com/windigal) for editing the videos. +Thanks to [@windigal](https://github.com/windigal) for terrains generation and editing the videos. diff --git a/README_zh.md b/README_zh.md index 29a723c..88a92f2 100644 --- a/README_zh.md +++ b/README_zh.md @@ -89,7 +89,7 @@ while True: > 可通过`python legged_gym/scripts/train.py --task=xxx --robogauge`启动带有评估的训练,会等待客户端启动,结果会在`logs/{experiment_name}`目录下保存,并绘制tensorboard -## 指标/目标/地形 +## 环境参数/指标/目标 指标的计算方法是通过在环境中发送固定指令及持续时长, 通过Mujoco获取所需参数并计算. ### 环境参数 @@ -106,6 +106,8 @@ while True: 1. 支持legged_gym中的部分地形, 包括: `wave, slope, stairs up, stairs down, obstacles, flat`, 除`flat`地形外其他地形可进行难度系数提升 2. 地面类型 (影响接触摩擦系数, 弹性摩擦系数), 包括: 橡胶地, 木地板, 瓷砖地 +地形生成代码:[windigal - mujoco_terrains](https://github.com/windigal/mujoco_terrains) + ### 指标 目前在每个`env.step`后可度量的指标, 所有指标均要求**越大越好**, 目前支持: @@ -177,7 +179,11 @@ while True: - `assets/`:文档资源 - `scripts/`:实验运行的辅助 shell 脚本 -### Pipeline逻辑 +### RoboGauge评估框架 + +| 说明 | 框架图 | +| - | - | +| RoboGauge评估框架如右图中三部分组成:
Part A: BasePipeline负责单一评估环境,包含地形、机器人、域随机化、原始指标计算功能
Part B: MultiPipeline通过多进程启动多个BasePipeline,进行多seed评估,LevelPipeline负责调用MultiPipeline寻找最高难度地形
Part C: StressPipeline负责全地形下测试,给出整体RoboGauge评分| ![robogauge framework](./assets/robogauge_framework.jpg) | [BasePipeline](./robogauge/tasks/pipeline/base_pipeline.py)用于管理仿真`sim`, 度量器(控制指令, 指标计算)`gauge`, 机器人运控模型`robot`三者的调度, 并包含异常处理, 域随机化, 观测噪声的添加. @@ -196,4 +202,4 @@ while True: 解决方案: 在`robogauge/scripts/run.py`和`robogauge/scripts/server.py`中, 将`os.environ['MUJOCO_GL']`设置为`egl`(GPU)或`osmesa`(CPU, 慢) ## 致谢 -感谢[@windigal](https://github.com/windigal)剪辑视频 \ No newline at end of file +感谢[@windigal](https://github.com/windigal)地形生成及视频剪辑 \ No newline at end of file diff --git a/assets/robogauge_basepipeline.drawio b/assets/robogauge_basepipeline.drawio index 1282b5d..92779b9 100644 --- a/assets/robogauge_basepipeline.drawio +++ b/assets/robogauge_basepipeline.drawio @@ -1,79 +1,79 @@ - + - + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - - + + - + - - + + - + - + - + - + - - + + - + - + @@ -81,21 +81,21 @@ - - + + - - + + - + - + - + @@ -103,28 +103,28 @@ - - + + - + - - + + - - + + - - + + diff --git a/assets/robogauge_basepipeline.png b/assets/robogauge_basepipeline.png index 4df3e13..114f322 100644 Binary files a/assets/robogauge_basepipeline.png and b/assets/robogauge_basepipeline.png differ diff --git a/assets/robogauge_framework.jpg b/assets/robogauge_framework.jpg new file mode 100644 index 0000000..fe45b45 Binary files /dev/null and b/assets/robogauge_framework.jpg differ diff --git a/assets/robogauge_levelpipeline.drawio b/assets/robogauge_levelpipeline.drawio index aa68c0b..8422a76 100644 --- a/assets/robogauge_levelpipeline.drawio +++ b/assets/robogauge_levelpipeline.drawio @@ -1,28 +1,28 @@ - + - + - - + + - - + + - - + + - - + + - - + + - + - + @@ -30,10 +30,10 @@ - + - + @@ -41,42 +41,42 @@ - - + + - + - + - + - - + + - + - - + + - + - - + + - + - - + + - + @@ -84,16 +84,16 @@ - - + + - + - - + + - + @@ -101,16 +101,16 @@ - - + + - + - - + + - + @@ -118,7 +118,7 @@ - + @@ -127,30 +127,30 @@ - - + + - - + + - - + + - + - - + + - - + + - - + + diff --git a/assets/robogauge_levelpipeline.png b/assets/robogauge_levelpipeline.png index d77c19b..8eb7031 100644 Binary files a/assets/robogauge_levelpipeline.png and b/assets/robogauge_levelpipeline.png differ