Files
go1_pro_deploy/test_deploy.md
2026-07-24 13:19:29 +08:00

4.8 KiB
Raw Blame History

Go1 PRO ONNX 策略部署测试

环境准备

conda activate free_dog_sdk
cd /Users/chenyouyuan/cyy_ws/deploy_go1_pro

目录结构

deploy_go1_pro/
├── deploy_45dim/          # 45-dim 策略部署
│   ├── deploy_onnx_pro_sdk.py
│   ├── policy.onnx
│   ├── go1_sim2sim.py
│   └── sim2sim_test_deploy.py
├── deploy_wtw/            # Walk-These-Ways 部署(开发中)
│   ├── deploy_isaaclab_onnx_no_torch_wtw_r2.py  (LCM 版本)
│   ├── body_latest.jit
│   └── adaptation_module_latest.jit
├── sim2sim_mujoco_example/
├── logs/
└── test_deploy.md

推荐部署命令45-dim

cd deploy_45dim
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 — 观测数据查验 ✓

cd deploy_45dim && 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 — 遥控器测试 ✓

cd deploy_45dim && 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.3new = 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 旋转