策略部署与板端推理

本章目标:把训练好的 ONNX 策略上传到板端,验证推理链路,并重点解决观测/动作缩放对齐问题——Sim2Real 最常踩的坑。

14.1 部署流程

  1. 上传 ONNX:将 microduck_feetech_multitask.onnx 上传到 RK3566 板卡:
scp software/training/pretrained/microduck_feetech_multitask.onnx user@rk3566:~/microduck/
  1. 配置加载路径:让 robotd 加载该策略文件;
  2. 验证加载:确认板端成功加载 ONNX,输出维度为 14。

14.2 板端推理链路

IMU + 关节回读 → 打包观测(61维) → ONNX推理 → 动作(14维) → 舵机目标位置

关键:观测空间和动作缩放必须与仿真严格一致(见第 7 章)。仿真里归一化到 [-1,1] 的动作,板端必须反归一化到实际舵机位置范围(弧度/角度)再下发。

14.3 观测/动作缩放对齐(最容易踩坑)

三种典型 bug:

  1. 维度不一致:仿真观测 61 维,板端只打包 60 维,推理报错或静默错位;
  2. 缩放不一致:仿真用弧度,板端用角度下发,舵机转错方向;
  3. 顺序不一致:观测里关节顺序与板端回读顺序不同,策略"看不懂"数据。

用 check_obs_act_space.py 自动校验,杜绝这类隐性 bug(见第 7.5 节)。

14.4 50Hz 控制环时序校验

控制环必须以 20ms 周期稳定运行:

  • 用 WebUI 查看每次迭代耗时;
  • 若推理 + 总线通信超时,步态会抖动;
  • 优化:用 RKNN 加速推理、DMA 批量收发舵机指令。
# 在板端检查控制环延迟统计
robotd status
# 期望输出:control_loop_avg_ms < 20

14.5 首次通电部署步骤(安全)

  1. 先站立:加载站立任务,观察鸭子能否稳定站住;
  2. 再下蹲/复位:确认动作在物理限位内;
  3. 最后行走:确认稳定后再测试行走。

每个阶段都观察:是否抖动、是否漂移、是否超出关节限位。

14.6 工程踩坑实录

  • 动作未反归一化:仿真动作 [-1,1] 直接当位置下发,舵机转出物理限位,机械卡死。加反归一化 + 限幅。
  • 观测顺序错位:板端回读关节顺序与仿真训练时不一致,策略行为异常。用自动校验 + 单关节激励测试对齐。

14.7 本章小结

你已把 ONNX 策略部署到板端,跑通 50Hz 控制环,并重点解决了观测/动作缩放对齐。

但"能跑"不等于"走得好"。下一章做真机步态迭代,闭环调优 Sim2Real。