MICRODUCK · 软件指南

从一个运动请求到十四个关节目标

用户说“向前走”之后发生了什么?本章沿着实际信息流解释命令、观测、策略、运行时、安全检查和电机通信,并说明训练软件与实体机器人软件为何必须遵守同一份接口约定。

本科生导读 · 先追踪一条命令,再理解完整软件系统

1 · 从完整闭环开始

控制不是一条只向前流动的流水线,而是不断重复的闭环:用户给出期望速度;机器人读取 IMU 和关节状态;策略根据当前观测产生动作;运行时把动作转换为安全的关节目标;电机改变身体;传感器再测量新的状态。

  1. 接收向前速度、转向速度或停止命令。
  2. 在同一时刻读取传感器,并转换到规定单位和坐标系。
  3. 按照训练时完全相同的顺序组成观测向量。
  4. 执行策略,得到十四个动作值。
  5. 缩放动作、加上基准姿态并限制目标。
  6. 向电机发送目标,同时检查故障和截止时间。
检查理解若传感器不再反馈,程序即使继续发送目标,也只是开环播放,不能根据真实姿态纠正动作。

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(价值网络)。

一次迭代真正做什么

  1. 并行重置许多仿真环境并采样任务。
  2. 用当前策略产生动作,推进 MuJoCo,记录观测、奖励和结束标记。
  3. 用 critic 估计未来回报,并计算每个动作比预期好多少。
  4. PPO 在限制单次变化幅度的条件下更新 actor,同时拟合 critic。
  5. 保存检查点,并用冻结策略运行独立评测。

训练奖励上升只表示策略更会优化所定义的奖励。它不能替代对跌倒、速度误差、漂移、转向和停止能力的直接测量。MuJoCo、PPO 与仿真到现实的完整解释见训练专章。

5 · 导出、测试与部署:接口为何必须一致?

训练完成后通常只导出 actor,例如 ONNX 模型。导出包还应记录输入名称与顺序、归一化参数、输出顺序、动作尺度、home pose、控制频率、模型版本和校验和。缺少其中任何一项,都可能让同一个网络在部署时产生不同意义的动作。

三个测试回答不同问题

  1. 数值一致性测试:相同观测输入训练框架和导出运行时,输出是否接近?
  2. 仿真闭环测试:导出模型放回 MuJoCo 后,是否仍能完成站立、行走、转向和停止?
  3. 硬件测试:在受控安全条件下,实体机器人是否满足独立验收标准?

第一项通过不代表后两项通过。每一层都需要自己的证据。

6 · 可复现与恢复:怎样知道运行了什么?

每次可解释的实验至少保存:代码提交版本、机器人模型版本、配置、随机种子、依赖版本、检查点校验和、评测程序版本、原始指标和运动记录。目录名“final”不是证据;可以追溯到精确输入和程序的记录才是。

训练检查点用于继续优化,部署模型用于运行控制,两者目的不同。保留不可变的原始结果,在新目录中生成分析,避免后处理覆盖原证据。对失败也要记录原因,因为只保存成功视频会严重高估可靠性。

检查理解若一个结果不能回答“哪段代码、哪份模型、哪个配置、哪个随机种子产生了它”,其他学生就无法真正复现或比较。