从一个运动请求到十四个关节目标
用户说“向前走”之后发生了什么?本章沿着实际信息流解释命令、观测、策略、运行时、安全检查和电机通信,并说明训练软件与实体机器人软件为何必须遵守同一份接口约定。
本科生导读 · 先追踪一条命令,再理解完整软件系统
1 · 从完整闭环开始
控制不是一条只向前流动的流水线,而是不断重复的闭环:用户给出期望速度;机器人读取 IMU 和关节状态;策略根据当前观测产生动作;运行时把动作转换为安全的关节目标;电机改变身体;传感器再测量新的状态。
- 接收向前速度、转向速度或停止命令。
- 在同一时刻读取传感器,并转换到规定单位和坐标系。
- 按照训练时完全相同的顺序组成观测向量。
- 执行策略,得到十四个动作值。
- 缩放动作、加上基准姿态并限制目标。
- 向电机发送目标,同时检查故障和截止时间。
2 · 从用户请求到电机目标
“向前走”必须先变成明确数字,例如期望前向速度 0.3 m/s、横向速度 0 m/s、角速度 0 rad/s。策略不理解自然语言;它接收固定长度、固定顺序的数字向量。
具体的观测与动作约定
已发布的 Microduck 运动接口记录了 61 个观测值:3 个陀螺仪值、3 个投影重力值、14 个关节位置偏移、14 个关节速度、14 个上一步动作和 13 个命令值。策略输出 14 个动作,对应十四个学习控制的关节目标;嘴部电机不在这个行走动作向量中。
动作值通常不是直接转矩。运行时先乘以动作尺度,再加上 home pose(基准姿态),形成目标关节位置。随后还要经过关节范围、变化速度和通信状态等安全检查。
3 · 通信与感知是不同职责
通信层负责把数据可靠地送到正确设备,例如串口帧、舵机地址、超时与重试。感知层负责解释测量,例如校准 IMU、计算关节偏移或将向量转换到机身坐标系。策略层只应接收接口规定的数值,不应猜测某个字节代表什么。
请求不等于测量
期望速度属于命令;编码器位置属于观测。把命令写入状态并不能证明机器人已经达到该速度。评测必须用独立的实际运动估计与命令比较。
4 · 训练:模型、数据和方法从哪里来?
强化学习的数据由策略在仿真器中与机器人模型交互产生。模型定义身体和物理,任务定义命令、观测、动作、奖励与终止条件,PPO 算法用新采集的轨迹更新 actor(动作网络)和 critic(价值网络)。
一次迭代真正做什么
- 并行重置许多仿真环境并采样任务。
- 用当前策略产生动作,推进 MuJoCo,记录观测、奖励和结束标记。
- 用 critic 估计未来回报,并计算每个动作比预期好多少。
- PPO 在限制单次变化幅度的条件下更新 actor,同时拟合 critic。
- 保存检查点,并用冻结策略运行独立评测。
训练奖励上升只表示策略更会优化所定义的奖励。它不能替代对跌倒、速度误差、漂移、转向和停止能力的直接测量。MuJoCo、PPO 与仿真到现实的完整解释见训练专章。
5 · 导出、测试与部署:接口为何必须一致?
训练完成后通常只导出 actor,例如 ONNX 模型。导出包还应记录输入名称与顺序、归一化参数、输出顺序、动作尺度、home pose、控制频率、模型版本和校验和。缺少其中任何一项,都可能让同一个网络在部署时产生不同意义的动作。
三个测试回答不同问题
- 数值一致性测试:相同观测输入训练框架和导出运行时,输出是否接近?
- 仿真闭环测试:导出模型放回 MuJoCo 后,是否仍能完成站立、行走、转向和停止?
- 硬件测试:在受控安全条件下,实体机器人是否满足独立验收标准?
第一项通过不代表后两项通过。每一层都需要自己的证据。
6 · 可复现与恢复:怎样知道运行了什么?
每次可解释的实验至少保存:代码提交版本、机器人模型版本、配置、随机种子、依赖版本、检查点校验和、评测程序版本、原始指标和运动记录。目录名“final”不是证据;可以追溯到精确输入和程序的记录才是。
训练检查点用于继续优化,部署模型用于运行控制,两者目的不同。保留不可变的原始结果,在新目录中生成分析,避免后处理覆盖原证据。对失败也要记录原因,因为只保存成功视频会严重高估可靠性。