Files
go1_pro_deploy/test_deploy.md
2026-06-21 21:58:39 +08:00

139 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Go1 PRO ONNX 策略部署测试
## 环境准备
```bash
conda activate free_dog_sdk
cd /Users/chenyouyuan/cyy_ws/deploy_go1_pro
```
---
## 推荐部署命令
```bash
python deploy_onnx_pro_sdk.py --onnx policy.onnx --kill-sport --log-dir logs \
--kp 80 --kd 1 --kp-cal 20 --kd-cal 1 \
--power-factor 7 --position-protect-limit 1.0 \
--action-ema-alpha 0.3 --print-every 10
```
---
## 测试流程
### Step 0 — 观测数据查验 ✓
```bash
python deploy_onnx_pro_sdk.py --obs-check --kill-sport --log-dir logs
```
| obs 段 | 含义 | 期望 | 结果 |
|---|---|---|---|
| `[0:3]` | gyro×0.25 | ~0 | ✅ |
| `[3:6]` | 投影重力 | ~[0,0,-1] | ✅ |
| `[6:18]` | 关节偏差 | ~0站姿时 | ⚠️ 蹲姿,正常 |
| `[18:30]` | 关节速度 | ~0 | ✅ |
| `[30:42]` | 上步动作 | [0] | ✅ |
| `[42:45]` | 指令×scale | ~0 | ✅ |
结论:关节初始为阻尼蹲姿(膝盖 ~-2.79radramp 渐变到站姿。
### Step 1 — 遥控器测试 ✓
```bash
python deploy_onnx_pro_sdk.py --monitor --kill-sport --log-dir logs
```
全部按钮R2/L2/L1/A/B/X/Y/START上升沿/下降沿检测正常,摇杆四轴 ±1.0。
### Step 2 — 起身 ✓
R2 → CALIBRATE2s 渐变)→ HOLD伺服站姿
### Step 3 — 急停 ✓
L2 → 立即 IDLE全阻尼恢复正常。
### Step 4 — RL 联调 ✓
R2 → RL摇杆控制速度。
---
## 参数调优记录
### 最终工作参数
| 参数 | 值 | 说明 |
|---|---|---|
| `--kp` | **80** | 与 sim 一致,直连 MCU |
| `--kd` | **1** | sim Kd=0.5+被动0.5=1.0 |
| `--kp-cal` | 20 | ramp 阶段 Kp |
| `--kd-cal` | 1.0 | ramp 阶段 Kd |
| `--power-factor` | 7 | hip:16.6, thigh:16.6, knee:24.9 Nm |
| `--position-protect-limit` | 1.0 | RL 阶段位置偏差保护 |
| `--action-ema-alpha` | **0.3** | 平滑 action 高频换向 |
### 调参过程
| 阶段 | 问题 | 原因 | 解决 |
|---|---|---|---|
| 起身 | 力矩被掐断 | `position_protect=0.5` 膝盖差 1.0rad 触发 | ramp/HOLD 阶段禁用 position_protect |
| 起身 | 力不够 | `Kp=5 / power_factor=3` 太保守 | Kp→20-30, power_factor→7 |
| RL | 高频抖动 | policy 本就会每2-3步换向sim 和 real 一致Kd=0.3 刹不住 | Kd→1, 加 EMA 滤波 |
| RL | 关节偏软 | Kp 不够大 | Kp→80 与 sim 对齐 |
### Safety 策略分层
| 阶段 | position_protect | 原因 |
|---|---|---|
| Ramp起身 | ❌ 禁用 | 大范围移动(膝盖 ~1.0rad |
| HOLD站姿 | ❌ 禁用 | 维持固定站姿,本身安全 |
| RL行走 | ✅ limit=1.0rad | 防策略突跳 |
### EMA 滤波
Policy 输出的 action 在 sim 和真机上方向切换率一致hips ~40%, calves ~25%这是模型本身特性。sim 中 Kp=80 硬吃掉了,真机需要用 EMA 平滑:
- `--action-ema-alpha 0.3``new = 0.3×raw + 0.7×prev`,时间常数 ~30ms
- 0.2:更强平滑但响应慢
- 1.0:不过滤
### Kd 选择依据
| 来源 | Kp | Kd | Kd/Kp |
|---|---|---|---|
| sim含被动阻尼 0.5 | 80 | 1.0 (0.5+0.5) | 0.0125 |
| WTW LCM deploy | 20 | 0.5 | 0.025 |
| **最终直连 MCU** | **80** | **1** | **0.0125** |
---
## 状态机
```
┌──────────────────────────────────────┐
│ L2 (急停) │
▼ │
IDLE ──R2──► CALIBRATE ──auto──► HOLD ──R2──► RL │
▲ ▲ │ │
└──────────── L2(急停) ────────────┘ R2 ──┘ │
└─────────────────────────────────────────────────────────┘
IDLE: 全阻尼,等待 R2
CALIBRATE: 渐变到站姿2s自动→HOLD
HOLD: 伺服保持站姿,等待 R2 启动 RL
RL: 运行 ONNX 策略,摇杆控制
```
## 遥控器
| 按键 | 功能 |
|---|---|
| R2 | 状态切换IDLE→起身 / HOLD↔RL |
| L2 | 急停任意状态→IDLE |
| 左杆 Y | 前进/后退 |
| 左杆 X | 平移 |
| 右杆 X | 旋转 |