deploy 成功

This commit is contained in:
cyy_mac
2026-06-21 21:58:39 +08:00
parent 631dfd0a2d
commit 1f5e2bdfad
9 changed files with 1451 additions and 0 deletions

138
test_deploy.md Normal file
View File

@@ -0,0 +1,138 @@
# 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 | 旋转 |