策略部署与板端推理
本章目标:把训练好的 ONNX 策略上传到板端,验证推理链路,并重点解决观测/动作缩放对齐问题——Sim2Real 最常踩的坑。
14.1 部署流程
- 上传 ONNX:将
microduck_feetech_multitask.onnx上传到 RK3566 板卡:
scp software/training/pretrained/microduck_feetech_multitask.onnx user@rk3566:~/microduck/
- 配置加载路径:让
robotd加载该策略文件; - 验证加载:确认板端成功加载 ONNX,输出维度为 14。
14.2 板端推理链路
IMU + 关节回读 → 打包观测(61维) → ONNX推理 → 动作(14维) → 舵机目标位置
关键:观测空间和动作缩放必须与仿真严格一致(见第 7 章)。仿真里归一化到 [-1,1] 的动作,板端必须反归一化到实际舵机位置范围(弧度/角度)再下发。
14.3 观测/动作缩放对齐(最容易踩坑)
三种典型 bug:
- 维度不一致:仿真观测 61 维,板端只打包 60 维,推理报错或静默错位;
- 缩放不一致:仿真用弧度,板端用角度下发,舵机转错方向;
- 顺序不一致:观测里关节顺序与板端回读顺序不同,策略"看不懂"数据。
用
check_obs_act_space.py自动校验,杜绝这类隐性 bug(见第 7.5 节)。
14.4 50Hz 控制环时序校验
控制环必须以 20ms 周期稳定运行:
- 用 WebUI 查看每次迭代耗时;
- 若推理 + 总线通信超时,步态会抖动;
- 优化:用 RKNN 加速推理、DMA 批量收发舵机指令。
# 在板端检查控制环延迟统计
robotd status
# 期望输出:control_loop_avg_ms < 20
14.5 首次通电部署步骤(安全)
- 先站立:加载站立任务,观察鸭子能否稳定站住;
- 再下蹲/复位:确认动作在物理限位内;
- 最后行走:确认稳定后再测试行走。
每个阶段都观察:是否抖动、是否漂移、是否超出关节限位。
14.6 工程踩坑实录
- 动作未反归一化:仿真动作 [-1,1] 直接当位置下发,舵机转出物理限位,机械卡死。加反归一化 + 限幅。
- 观测顺序错位:板端回读关节顺序与仿真训练时不一致,策略行为异常。用自动校验 + 单关节激励测试对齐。
14.7 本章小结
你已把 ONNX 策略部署到板端,跑通 50Hz 控制环,并重点解决了观测/动作缩放对齐。
但"能跑"不等于"走得好"。下一章做真机步态迭代,闭环调优 Sim2Real。