人形机器人策略评估:从 motion.pt 到 G1 在仿真环境中走起来
训练得到一个策略模型,并不代表把 .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 策略评估
本次评估流程如下:
- 进入案例展台,加载 G1 12DOF 案例。
- 确认场景中已经包含 G1 和地面。
- 检查机器人初始高度、姿态和脚部接触。
- 打开“评估”页面。
- 在评估模型中选择
motion.pt。 - 等待系统检测模型的观察维度和动作维度。
- 在驱动关节页面确认12个腿部关节及其顺序。
- 检查观察模板、动作缩放和运动指令。
- 点击“开始评估”。
- 在视图区观察机器人姿态和行走效果。
- 使用 W、S、A、D 调整运动指令。
- 通过回放检查完整运动过程。
需要注意,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
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)