Update README
This commit is contained in:
86
README.md
86
README.md
@@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<h1 align="center">RoboGauge</h1>
|
<h1 align="center">RoboGauge</h1>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<span>🌎 English</span> | <a href="README_zh.md">🇨🇳 中文</a>
|
<span>🌎 English</span> | <a href="README_zh.md">🇨🇳 中文</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
This repository provides a suite of **motion-control evaluation for reinforcement-learning locomotion policies**. The goal is to measure the following aspects of a policy, so we can partially predict Sim2Real performance and reduce the risk of damaging real hardware:
|
This repository provides a suite of **motion-control evaluation for reinforcement-learning locomotion policies**. The goal is to measure the following aspects of a policy, so we can partially predict Sim2Real performance and reduce the risk of damaging real hardware:
|
||||||
@@ -17,22 +17,22 @@ The evaluation is automated with MuJoCo and implemented fully in Python.
|
|||||||
Demo of the evaluation process (4 terrains, 2 difficulty levels):
|
Demo of the evaluation process (4 terrains, 2 difficulty levels):
|
||||||
|
|
||||||
<table style="width: 100%; text-align: center;">
|
<table style="width: 100%; text-align: center;">
|
||||||
<tr>
|
<tr>
|
||||||
<td><b>Wave</b></td>
|
<td><b>Wave</b></td>
|
||||||
<td><b>Slope</b></td>
|
<td><b>Slope</b></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://raw.githubusercontent.com/robogauge/picture-bed/refs/heads/main/robogague/robogauge_wave.gif" width="100%"></td>
|
<td><img src="https://raw.githubusercontent.com/robogauge/picture-bed/refs/heads/main/robogague/robogauge_wave.gif" width="100%"></td>
|
||||||
<td><img src="https://raw.githubusercontent.com/robogauge/picture-bed/refs/heads/main/robogague/robogauge_slope.gif" width="100%"></td>
|
<td><img src="https://raw.githubusercontent.com/robogauge/picture-bed/refs/heads/main/robogague/robogauge_slope.gif" width="100%"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><b>Stairs</b></td>
|
<td><b>Stairs</b></td>
|
||||||
<td><b>Obstacles</b></td>
|
<td><b>Obstacles</b></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://raw.githubusercontent.com/robogauge/picture-bed/refs/heads/main/robogague/robogauge_stairs.gif" width="100%"></td>
|
<td><img src="https://raw.githubusercontent.com/robogauge/picture-bed/refs/heads/main/robogague/robogauge_stairs.gif" width="100%"></td>
|
||||||
<td><img src="https://raw.githubusercontent.com/robogauge/picture-bed/refs/heads/main/robogague/robogauge_obstaces.gif" width="100%"></td>
|
<td><img src="https://raw.githubusercontent.com/robogauge/picture-bed/refs/heads/main/robogague/robogauge_obstaces.gif" width="100%"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
## Supported Robots
|
## Supported Robots
|
||||||
@@ -78,22 +78,22 @@ from robogauge.scripts.client import RoboGaugeClient
|
|||||||
# Create client and submit a test task
|
# Create client and submit a test task
|
||||||
client = RoboGaugeClient(f"http://127.0.0.1:9973")
|
client = RoboGaugeClient(f"http://127.0.0.1:9973")
|
||||||
task_id = client.submit_task(
|
task_id = client.submit_task(
|
||||||
model_path=test_payload["model_path"],
|
model_path=test_payload["model_path"],
|
||||||
step=test_payload["step"],
|
step=test_payload["step"],
|
||||||
task_name=test_payload["task_name"],
|
task_name=test_payload["task_name"],
|
||||||
experiment_name=test_payload["experiment_name"],
|
experiment_name=test_payload["experiment_name"],
|
||||||
wait_for_server=True
|
wait_for_server=True
|
||||||
)
|
)
|
||||||
|
|
||||||
# Monitor task status and get results
|
# Monitor task status and get results
|
||||||
while True:
|
while True:
|
||||||
client.monitor_tasks()
|
client.monitor_tasks()
|
||||||
for task_id, resp in client.response_data.items():
|
for task_id, resp in client.response_data.items():
|
||||||
scores = resp['results']['scores']
|
scores = resp['results']['scores']
|
||||||
print("[RoboGaugeClient]📊 Scores:")
|
print("[RoboGaugeClient]📊 Scores:")
|
||||||
print(json.dumps(scores, indent=2, ensure_ascii=False))
|
print(json.dumps(scores, indent=2, ensure_ascii=False))
|
||||||
client.response_data.clear()
|
client.response_data.clear()
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
```
|
```
|
||||||
|
|
||||||
Example integration: `update_robogauge` in [`go2_rl_gym - on_policy_runner.py`](https://github.com/wty-yy/go2_rl_gym/blob/f9024e807758d497445857a21dce3b266876f375/rsl_rl/rsl_rl/runners/on_policy_runner.py#L252)
|
Example integration: `update_robogauge` in [`go2_rl_gym - on_policy_runner.py`](https://github.com/wty-yy/go2_rl_gym/blob/f9024e807758d497445857a21dce3b266876f375/rsl_rl/rsl_rl/runners/on_policy_runner.py#L252)
|
||||||
@@ -188,18 +188,18 @@ Create a new robot implementation and control-model configuration under `robogau
|
|||||||
## Directory Structure
|
## Directory Structure
|
||||||
|
|
||||||
- `robogauge/`: core Python package
|
- `robogauge/`: core Python package
|
||||||
- `robogauge/scripts/`: runnable entry scripts (run evaluation / start server)
|
- `robogauge/scripts/`: runnable entry scripts (run evaluation / start server)
|
||||||
- `robogauge/tasks/`: task system (sim config + metrics/scenes + robot + scheduling)
|
- `robogauge/tasks/`: task system (sim config + metrics/scenes + robot + scheduling)
|
||||||
- `robogauge/tasks/pipeline/`: scheduling & execution layer (lifecycle, DR, parallel seeds, aggregation)
|
- `robogauge/tasks/pipeline/`: scheduling & execution layer (lifecycle, DR, parallel seeds, aggregation)
|
||||||
- `robogauge/tasks/gauge/`: gauge layer (command generation, metric computation, result aggregation)
|
- `robogauge/tasks/gauge/`: gauge layer (command generation, metric computation, result aggregation)
|
||||||
- `robogauge/tasks/robots/`: robot adapters (obs/action, joint mapping, model loading, control rate)
|
- `robogauge/tasks/robots/`: robot adapters (obs/action, joint mapping, model loading, control rate)
|
||||||
- `robogauge/tasks/simulator/`: simulator wrappers / environment interfaces (MuJoCo integration, stepping, state access)
|
- `robogauge/tasks/simulator/`: simulator wrappers / environment interfaces (MuJoCo integration, stepping, state access)
|
||||||
- `robogauge/tasks/custom/`: project-specific extensions and custom tasks
|
- `robogauge/tasks/custom/`: project-specific extensions and custom tasks
|
||||||
- `robogauge/utils/`: utilities (logging, config/file helpers, stats, math)
|
- `robogauge/utils/`: utilities (logging, config/file helpers, stats, math)
|
||||||
- `resources/`: simulation static assets
|
- `resources/`: simulation static assets
|
||||||
- `resources/robots/`: robot assets (XML / meshes / textures), organized by robot type
|
- `resources/robots/`: robot assets (XML / meshes / textures), organized by robot type
|
||||||
- `resources/terrains/`: terrain assets (e.g., `flat.xml`, slope/stairs/wave/obstacle variants)
|
- `resources/terrains/`: terrain assets (e.g., `flat.xml`, slope/stairs/wave/obstacle variants)
|
||||||
- `resources/models/`: policy/model resources
|
- `resources/models/`: policy/model resources
|
||||||
- `assets/`: documentation assets
|
- `assets/`: documentation assets
|
||||||
- `scripts/`: helper shell scripts for running experiments
|
- `scripts/`: helper shell scripts for running experiments
|
||||||
|
|
||||||
|
|||||||
30
README_zh.md
30
README_zh.md
@@ -1,8 +1,8 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<h1 align="center">RoboGauge</h1>
|
<h1 align="center">RoboGauge</h1>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="README.md">🌎 English</a> | <span>🇨🇳 中文</span>
|
<a href="README.md">🌎 English</a> | <span>🇨🇳 中文</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
本仓库提供一系列**强化学习训练的运动控制模型指标**, 目标是衡量模型的以下信息, 从而能一定程度预测模型Sim2Real的结果, 避免损坏真机:
|
本仓库提供一系列**强化学习训练的运动控制模型指标**, 目标是衡量模型的以下信息, 从而能一定程度预测模型Sim2Real的结果, 避免损坏真机:
|
||||||
@@ -164,19 +164,19 @@ while True:
|
|||||||
## 目录结构
|
## 目录结构
|
||||||
|
|
||||||
- `robogauge/`:核心 Python 包
|
- `robogauge/`:核心 Python 包
|
||||||
- `robogauge/scripts/`:可执行入口脚本(运行评测 / 启动服务端)
|
- `robogauge/scripts/`:可执行入口脚本(运行评测 / 启动服务端)
|
||||||
- `robogauge/tasks/`:任务系统(仿真配置 + 指标/场景 + 机器人 + 调度执行)
|
- `robogauge/tasks/`:任务系统(仿真配置 + 指标/场景 + 机器人 + 调度执行)
|
||||||
- `robogauge/tasks/pipeline/`:调度与执行层(生命周期、域随机化、多 seed 并行、结果聚合)
|
- `robogauge/tasks/pipeline/`:调度与执行层(生命周期、域随机化、多 seed 并行、结果聚合)
|
||||||
- `robogauge/tasks/gauge/`:指标层(指令生成、指标计算、结果汇总)
|
- `robogauge/tasks/gauge/`:指标层(指令生成、指标计算、结果汇总)
|
||||||
- `robogauge/tasks/robots/`:机器人适配层(观测/动作、关节映射、模型加载、控制频率)
|
- `robogauge/tasks/robots/`:机器人适配层(观测/动作、关节映射、模型加载、控制频率)
|
||||||
- `robogauge/tasks/simulator/`:仿真器封装 / 环境接口(MuJoCo 集成、step、状态读取等)
|
- `robogauge/tasks/simulator/`:仿真器封装 / 环境接口(MuJoCo 集成、step、状态读取等)
|
||||||
- `robogauge/tasks/custom/`:项目自定义扩展与自定义任务
|
- `robogauge/tasks/custom/`:项目自定义扩展与自定义任务
|
||||||
- `robogauge/utils/`:工具库(日志、配置/文件处理、统计、数学工具)
|
- `robogauge/utils/`:工具库(日志、配置/文件处理、统计、数学工具)
|
||||||
|
|
||||||
- `resources/`:仿真静态资源
|
- `resources/`:仿真静态资源
|
||||||
- `resources/robots/`:机器人资源(XML / mesh / 纹理等),按机器人型号组织
|
- `resources/robots/`:机器人资源(XML / mesh / 纹理等),按机器人型号组织
|
||||||
- `resources/terrains/`:地形资源(如 `flat.xml`、slope/stairs/wave/obstacle 等)
|
- `resources/terrains/`:地形资源(如 `flat.xml`、slope/stairs/wave/obstacle 等)
|
||||||
- `resources/models/`:策略/模型资源
|
- `resources/models/`:策略/模型资源
|
||||||
|
|
||||||
- `assets/`:文档资源
|
- `assets/`:文档资源
|
||||||
- `scripts/`:实验运行的辅助 shell 脚本
|
- `scripts/`:实验运行的辅助 shell 脚本
|
||||||
|
|||||||
Reference in New Issue
Block a user