Add Go1 15k deployment models

This commit is contained in:
youyuan.chen
2026-07-24 12:59:02 +08:00
parent 51a67fc81b
commit c1a4146f89
3 changed files with 37 additions and 6 deletions

View File

@@ -6,7 +6,8 @@ TorchScript 模型,例如:
- `resources/models/go1/policy.pt`
- `resources/models/go1/policy_10k.pt`
- 由 15k 楼梯 checkpoint 导出的 `policy.pt`
- `resources/models/go1/policy_15k.pt`
- `resources/models/go1/policy_15k.onnx`
## 1. 接口概览
@@ -168,7 +169,37 @@ Kd = 0.7
实际部署还应按电机能力限制输出力矩。
## 6. 最小调用示例
## 6. ONNX 输入输出
`policy_15k.onnx` 是无状态模型,不在模型内部保存历史。它与 TorchScript
的输入接口不同:
| 项目 | ONNX 规格 |
| - | - |
| 输入名称 | `obs` |
| 输入形状 | `[1, 225]` |
| 输出 0 | `actions`,形状 `[1, 12]` |
| 输出 1 | `weights`,形状 `[1, 8]` |
| 输出 2 | `latent`,形状 `[1, 32]` |
ONNX 输入不是直接对 `[1, 5, 45]` 执行 `reshape`。225 维输入按观测项分组,
每组内部再按时间从旧到新排列:
```text
[
angular_velocity(t-4:t), # 5 * 3 = 15
projected_gravity(t-4:t), # 5 * 3 = 15
command(t-4:t), # 5 * 3 = 15
dof_position_error(t-4:t), # 5 * 12 = 60
dof_velocity(t-4:t), # 5 * 12 = 60
last_action(t-4:t), # 5 * 12 = 60
]
```
调用方需要维护 5 帧历史,并在 episode reset 时将历史清零。RoboGauge 当前
直接使用 TorchScriptONNX 主要用于其他推理后端。
## 7. 最小调用示例
```python
import numpy as np
@@ -232,7 +263,7 @@ target_dof_pos = DEFAULT_DOF_POS + 0.25 * action
last_action = action.copy()
```
## 7. Reset 要求
## 8. Reset 要求
以下情况必须同时重置模型历史和上一动作:
@@ -249,7 +280,7 @@ last_action.fill(0.0)
只清零 `last_action` 而不调用 `model.reset()`,会残留上一段运行的历史状态。
## 8. 不需要的部署信号
## 9. 不需要的部署信号
部署使用 Student 策略,不需要训练阶段 Teacher/Critic 的 263 维 privileged
observation。以下信号不进入部署策略
@@ -264,7 +295,7 @@ observation。以下信号不进入部署策略
这些信息仅在训练阶段用于 Teacher/Critic。Student 通过 5 帧本体观测历史估计
32 维 latent。
## 9. RoboGauge 对应实现
## 10. RoboGauge 对应实现
RoboGauge 已实现上述接口:
@@ -286,7 +317,7 @@ python robogauge/scripts/run.py \
--goals target_pos_velocity
```
## 10. 常见错误检查
## 11. 常见错误检查
1. 输入形状应为 `[1, 45]`,不是 `[45]``[1, 225]`
2. 输入 dtype 必须为 `torch.float32`