训练得到一个策略模型,并不代表把 .pt 文件加载进仿真器,机器人就一定能稳定运动。

在实际评估中,经常会遇到这些情况:

  • 策略文件加载成功,机器人却一启动就倒下。
  • 模型输入、输出维度都正确,关节运动依然异常。
  • 机器人可以站立,但无法响应前进和转向指令。
  • 同一个策略,换一个初始高度后表现完全不同。
  • 机器人出现剧烈抖动、反向运动或者脚部穿透地面。

这些问题不一定来自策略模型本身。初始姿态、关节顺序、观察量、动作缩放和物理场景,都可能影响最终结果。

本文以 G1 12DOF 人形机器人和 motion.pt 行走策略为例,梳理一次完整的策略评估流程。

一、策略评估到底在做什么

策略评估可以理解为:把已经训练好的控制器放回物理环境中试跑。

整个控制流程可以简化为:

当前仿真状态
    ↓
构造策略观察量
    ↓
motion.pt 策略模型
    ↓
输出关节动作
    ↓
转换为关节控制目标
    ↓
物理求解器计算下一帧
    ↓
得到新的机器人状态

评估不会重新训练模型,也不会生成新的策略文件。它要验证的是:现有策略能否在当前机器人模型和物理场景中正常运行。

二、先确认策略的输入和输出维度

本次使用的 motion.pt 对应 G1 的 12 个腿部驱动关节。

模型检测结果为:

观察维度:47
动作维度:12

47维观察量通常由以下内容组成:

基座角速度          3
重力投影方向        3
运动指令            3
关节位置           12
关节速度           12
上一帧动作         12
步态相位            2
----------------------
合计               47

模型输出的12维动作,则对应G1左右腿的12个驱动关节。

维度匹配只是第一步。如果动作顺序和关节顺序不一致,12维动作仍然可能被发送到错误的关节。

三、关节顺序为什么比关节数量更重要

策略输出本质上是一组按照固定顺序排列的数字:

action[0], action[1], action[2] ... action[11]

仿真器需要知道每一维动作应该控制哪个关节。

以部署版 G1 策略为例,关节顺序通常从左腿开始,再映射到右腿,包括髋部、膝部和踝部关节。

如果策略认为 action[0] 控制髋部俯仰,而仿真器却把它映射到了髋部偏航,那么即使输入、输出维度完全正确,机器人也可能出现:

  • 左右腿动作不对称
  • 关节反向运动
  • 高频抖动
  • 起步时直接失去平衡

因此,使用部署策略 motion.pt 时,需要选择与部署工程一致的关节顺序,而不是仅按照名称排序。

四、初始高度会直接影响评估结果

在当前 G1 案例中,机器人根节点的初始位置为:

x = 0
y = 0
z = 0.8m

这里的 0.8m 不是机器人的整体身高,而是机器人根节点,也就是骨盆附近坐标系相对地面的高度。

初始高度太低时,脚部碰撞体可能已经进入地面。物理仿真开始后,求解器会产生较大的接触力,将机器人向上推出。

初始高度太高时,机器人会先自由落体。落地瞬间产生的冲击可能超出策略训练时经历过的状态范围,导致策略无法及时恢复平衡。

因此,评估前应检查:

  • 地面高度是否正确。
  • 双脚是否与地面合理接触。
  • 碰撞体是否发生初始穿透。
  • 根节点高度是否接近训练配置。
  • 初始姿态是否接近策略的默认站立姿态。

五、默认姿态不是“完全站直”

人形机器人的默认站立姿态通常会保留一定的关节弯曲。

以当前 G1 配置为例,部分关节的默认角度为:

髋部俯仰:-0.1 rad
膝关节:   0.3 rad
踝部俯仰:-0.2 rad

这种轻微屈膝姿态可以为平衡控制留出调节空间。

如果将所有关节强行设为零,机器人虽然看起来更加“笔直”,但初始观察量已经偏离策略训练时的默认状态,启动后反而可能更不稳定。

六、动作缩放和PD参数也必须一致

策略输出通常不会直接作为关节角度使用,而是经过缩放后叠加到默认姿态上:

目标关节角度 = 默认关节角度 + action_scale × 策略动作

当前示例中的动作缩放系数为:

action_scale = 0.25

如果动作缩放过大,机器人可能出现剧烈摆动;如果过小,动作又可能不足以维持平衡或完成行走。

此外,关节刚度和阻尼也会影响动作效果:

  • 刚度过高,动作可能僵硬并产生振荡。
  • 刚度过低,关节可能无法支撑机器人。
  • 阻尼过低,关节容易持续抖动。
  • 阻尼过高,动作响应会变慢。

这些参数应尽量与策略训练或部署时的配置保持一致。

七、在 FlexPhysics Gym 中进行 G1 策略评估

本次评估流程如下:

  1. 进入案例展台,加载 G1 12DOF 案例。
  2. 确认场景中已经包含 G1 和地面。
  3. 检查机器人初始高度、姿态和脚部接触。
  4. 打开“评估”页面。
  5. 在评估模型中选择 motion.pt
  6. 等待系统检测模型的观察维度和动作维度。
  7. 在驱动关节页面确认12个腿部关节及其顺序。
  8. 检查观察模板、动作缩放和运动指令。
  9. 点击“开始评估”。
  10. 在视图区观察机器人姿态和行走效果。
  11. 使用 W、S、A、D 调整运动指令。
  12. 通过回放检查完整运动过程。

需要注意,WASD代表的是速度指令:

W:向前
S:向后
A:身体向左转
D:身体向右转

A和D控制的是偏航方向,不是直接向左、向右平移。

当前默认运动指令可以表示为:

cmd_init = [vx, vy, yaw]
cmd_init = [0.5, 0, 0]

也就是给策略一个向前运动的速度目标。

八、我们还测试了几个特殊初始高度

为了观察策略面对异常初始状态时的表现,我们调整了 G1 的初始高度。

初始高度3.5米

G1从高处落下后产生了明显冲击,但策略仍然恢复了身体姿态,并继续向前运动。

这说明该策略在当前仿真配置下具有一定的状态恢复能力。

初始高度35米

高度提高到35米后,落地冲击明显超出策略能够恢复的范围,机器人最终失稳。

初始高度0.54米

在0.54米时,机器人与地面产生了剧烈的初始接触,被接触力向上弹起。

有意思的是,机器人在跌跌撞撞之后仍然恢复了运动。虽然步态并不自然,但策略没有立即完全失效。

需要强调的是,这些结果只代表当前策略、碰撞体和物理参数组合下的仿真现象,不能直接视为真实机器人抗冲击能力。

九、常见问题排查

现象 优先检查
启动后直接倒下 初始高度、默认姿态、脚部接触、关节顺序
机器人剧烈抖动 动作缩放、PD参数、关节映射
模型无法开始评估 观察维度和动作维度是否匹配
机器人站着不动 运动指令、驱动关节、策略输出
左右腿动作异常 左右关节名称和映射顺序
按WASD没有反应 输入焦点是否停留在文本框
转向方向相反 偏航指令方向和坐标系约定
脚部弹飞或穿透 初始高度、碰撞体和地面位置

十、总结

一个策略能否在仿真环境中正常运行,不只取决于 motion.pt 文件是否加载成功。

完整的评估链路至少包括:

机器人模型
+ 初始姿态
+ 碰撞与物理场景
+ 观察量结构
+ 驱动关节顺序
+ 动作缩放
+ 控制参数
+ 运动指令

只有这些条件与训练或部署配置保持一致,评估结果才具有参考价值。

FlexPhysics 案例库:

https://flexphysics.com/showcase?utm_source=cn&utm_campaign=pe

FlexPhysics 文档中心:

https://flexphysics.com/docs?utm_source=cn&utm_campaign=pe

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐