G1 速度阶梯:从步行到奔跑

摘要:本实验研究 Unitree G1 人形机器人的前进速度能力如何由训练命令分布决定。方法上继承 Isaac Lab 官方 Isaac-Velocity-Flat-G1-v0 任务,仅通过自定义配置子类覆盖前进速度命令范围 lin_vel_x 一项,奖励函数、观测、动作、网络结构与全部超参数保持官方原值不变,得到三个条件:官方范围 0–1.0 m/s(基线)、扩展范围 0–2.2 m/s(run2)与 0–4.5 m/s(sprint4)。每个扩展条件以 RSL-RL PPO 训练 3 个随机种子、每 run 1500 次迭代。独立评估(9 个策略、450 回合)显示:官方范围策略在 2.0 m/s 命令下三个种子中有两个整轮全部摔倒;把范围扩到 0–2.2 后,同一 2.0 m/s 命令下三个种子全部零摔、线速度 RMSE 0.040 ± 0.002 m/s;扩到 0–4.5 的策略在 4.0 m/s 命令下三个种子全部零摔、RMSE 0.080 ± 0.009 m/s,且腾空占比达 20.2%——在未修改任何奖励项的前提下自发形成了带腾空相的奔跑步态。核心结论是:官方为步行设计的奖励表本身足以支撑到奔跑速度,策略的速度能力边界主要由训练时见过的命令范围决定,而非奖励函数。

表 1 · 实验概要
状态已训练 ✓ 6 个正式 run(run2 / sprint4 各 3 种子)+ 复用基线 3 种子
机器人Unitree G1 minimal(23 自由度机身 + 三指手 14 关节 = 37 个受控关节;隐式 PD 关节位置执行器)
技术路线强化学习 · PPO · RSL-RL
任务环境Isaac-Velocity-Flat-G1-v0(Isaac Lab 官方 Manager-based 任务)
任务配置自定义 cfg 子类:继承官方 G1FlatEnvCfg,仅覆盖 commands.base_velocity.ranges.lin_vel_x(run2 = (0, 2.2)、sprint4 = (0, 4.5));奖励、观测、动作、网络、超参数一律沿用官方值
并行环境数4096
迭代 / 步数1500 次迭代;每迭代 4096×24 步;单 run 约 147,456,000 步
训练设备NVIDIA GeForce RTX 5070 Ti(16 GB)
真实训练耗时6 个正式 run 合计约 7928 秒(2.20 小时);单 run 约 21.5–22.8 分钟
观测 / 动作维度123 维 → 37 维(三条件相同)
策略网络Actor 123→256→128→128→37;Critic 123→256→128→128→1;合计 167,243 个参数(与基线同构)
关键结果sprint4 在 4.0 m/s 下三种子零摔、RMSE 0.080,腾空占比 20.2%(自发奔跑);官方范围基线在 2.0 m/s 下三种子中两个整轮全部摔倒
智能体(Agent)PPO Actor-Critic · 123→…→37环境(Environment)Isaac-Velocity-Flat-G1-v0动作 a ∈ ℝ³⁷观测 s′ ∈ ℝ¹²³奖励 r ∈ ℝ
图 1 · G1 速度跟踪任务的智能体–环境交互回路。策略接收本体观测与速度命令,输出 37 维关节位置动作;环境返回下一步观测、奖励与终止信号。本实验的唯一改动位于命令一侧——扩大前进速度命令的采样范围。

1背景与问题定义

Isaac Lab 官方 G1 平地任务要求机器人跟踪随机采样的底盘速度命令,其前进速度命令范围默认为 vₓ ∈ [0, 1.0] m/s。这一范围既定义了训练时机器人会遇到的速度,也隐含地划定了它"练过"的能力区间。本实验提出的问题是:如果只把这一个命令范围改大、其余全部不动,机器人能否学会更快的移动,速度的上限又在哪里?任务与被控系统如图 2 所示。

平地 planetorso_link:躯干接触即失败终止速度命令 c = (vₓ, vᵧ, ωz)训练范围:vₓ∈[0,1] m/s,vᵧ∈[-0.5,0.5] m/s,ωz∈[-1,1] rad/sUnitree G1 · 37 个受控关节 · 50 Hz 关节位置目标
图 2 · G1 平地速度跟踪任务示意。命令由 base_velocity 生成;躯干 torso_link 发生非法接触时回合失败终止。图中标注的 vₓ∈[0,1] 为官方默认范围,正是本实验作为研究变量加以扩展的对象。

机器人:Unitree G1 minimal 资产,共 37 个受控关节。关节构成为:双腿 12 个(每侧 hip_yaw / hip_roll / hip_pitch / knee / ankle_pitch / ankle_roll),躯干 1 个(torso_joint),双臂 10 个(每侧 shoulder_pitch / shoulder_roll / shoulder_yaw / elbow_pitch / elbow_roll),双手指 14 个(G1 为三指灵巧手,每侧 7 个关节 = 拇指 3 + 食指 2 + 中指 2)。三个条件使用完全相同的 G1_MINIMAL_CFG 资产。

控制:控制量是与 37 个关节一一对应的关节位置偏移,而非期望速度本身。图 3 所示的链条是:策略输出动作 a → q* = q₀ + 0.5a 得到关节位置目标 → 隐式 PD/电机在物理仿真中产生力矩 → 形成站立、摆腿与速度跟踪。中间没有手写步态控制器;不同前进速度下的步态(步行、快步、奔跑)都是由同一套奖励与物理闭环学出,而不是为每档速度手工设计的。

正视示意 · 圆点 = 受控关节组(如髋部 3 个自由度并作一点),逐侧数量见图内标注Actor πa ∈ ℝ³⁷逐关节动作关节位置目标q* = q₀ + 0.5aqᵢ* 落到各关节torso_joint ×1left shoulder ×3right shoulder ×3left elbow ×2right elbow ×2left fingers ×7 = 拇指3 + 食指2 + 中指2(三指手)right fingers ×7 = 拇指3 + 食指2 + 中指2(三指手)left hip ×3right hip ×3left knee ×1right knee ×1left ankle ×2right ankle ×2躯干 ×1臂 ×5/侧手指 ×7/侧腿 ×6/侧控制量37 个 qᵢ* 位置目标腿 12 · 躯干 1 · 臂 10 · 手指 14隐式 PD/电机根据 qᵢ*在物理仿真中产生 τᵢτᵢτᵢ策略只给关节位置目标;没有手写步态控制器。站立、摆腿、接触节律与速度跟踪由 PPO 策略和物理闭环共同形成。
图 3 · 控制量示意(G1 关节位置目标)。策略输出 37 维动作 a,经 q* = q₀ + 0.5a 转为 37 个关节位置目标,分别落到双腿、躯干、双臂和手指的受控关节;隐式 PD/电机据此在物理仿真中产生关节力矩。

目标:最大化折扣累计奖励,使机器人在 20 秒回合内保持直立、不使躯干触地,并尽可能准确跟踪 (vₓ, vᵧ, ωz) 命令——其中 vₓ 的取值范围正是三个条件的唯一区别。三个条件的命令范围与各自的展示速度见图 4。

三个训练条件只有一处不同:前进速度命令范围 lin_vel_x(其余奖励、观测、网络与超参数全部相同)01234m/s官方基线(复用实验) 范围 0–1.0展示 1.0 m/s · 步行run2 条件 范围 0–2.2展示 2.0 m/s · 快步sprint4 条件 范围 0–4.5展示 4.0 m/s · 奔跑橙点 = 各条件的展示速度;条长 = 该条件训练时前进速度命令的采样范围。
图 4 · 三个训练条件的前进速度命令范围与展示速度。三者只有 lin_vel_x 采样范围不同:基线 0–1.0(官方)、run2 0–2.2、sprint4 0–4.5 m/s;其余奖励、观测、动作、网络与超参数完全一致。两个扩展条件的展示速度取各自范围上限的约 90%(2.0/2.2、4.0/4.5),基线展示速度即其范围上限 1.0 m/s。

按 MDP 表述,问题定义见表 2。

表 2 · 问题的形式化定义
环境4096 个并行 Isaac Lab GPU 物理环境,平地 plane,控制频率 50 Hz
智能体RSL-RL PPO 的 Actor-Critic 策略
状态 / 观测123 维本体观测与速度命令,构成见表 3
动作37 维关节位置目标偏移
奖励16 项加权和(官方 G1 flat 原表,三条件相同),见表 4
回合20 秒到时正常结束;躯干接触地面提前终止
目标最大化折扣累计回报,折扣因子 γ = 0.99

2理论基础

本实验沿用 PPO 作为连续控制算法。G1 速度跟踪任务具有高维连续动作、长时序稳定性要求和大量并行仿真的特征,适合 on-policy Actor-Critic:Actor 产生连续动作分布,Critic 估计状态价值以降低策略梯度方差。PPO 的核心约束是裁剪新旧策略概率比,避免单次更新过大导致步态崩溃;优势估计使用 GAE(λ),价值函数通过价值损失拟合回报,策略通过 surrogate loss 提升带正优势的动作概率。熵正则项控制动作分布的随机性。本实验三个条件的算法、网络与全部超参数完全相同,唯一的自变量是环境侧的命令采样范围。

命令范围与能力边界。在速度跟踪任务中,机器人每回合被下达一个从 lin_vel_x 范围内均匀采样的前进速度目标,并因跟踪该目标而获得奖励。因此训练分布决定了策略在训练中见过哪些速度:范围上限之外的速度在训练中从未出现,策略既没有为其优化过跟踪精度,也没有为其学过维持平衡所需的姿态与步频。把范围从 0–1.0 扩大到 0–2.2 或 0–4.5,等价于要求同一套奖励与网络在更宽的速度谱上都保持直立与跟踪——这既检验官方奖励表能支撑的速度上限,也检验"扩大命令范围"这一最小改动能否把能力边界整体外推。选择 PPO 的原因与基线条件一致:37 维连续动作适合策略梯度法、4096 并行环境提供充足样本、官方已给出可复现的 RSL-RL PPO 配置。

3实验框架

3.1网络结构

三个条件共用同一网络结构,如图 5、图 6 所示。Actor 与 Critic 共享 3 层隐藏层宽度(256、128、128),Actor 输出 37 维动作均值并带 37 个可学习 logσ,Critic 输出标量价值。实测 checkpoint 参数量:Actor 85,962(含 37 个 logσ)、Critic 81,281,合计 167,243——与官方基线完全一致,因为本实验没有改动网络。

躯干速度 ·6重力投影 ·3速度命令 ·3关节位置 ·37关节速度 ·37上步动作 ·37观测 s ∈ ℝ¹²³ℝ¹²³256 神经元全连接 · ELU参数 31,744ℝ²⁵⁶128 神经元全连接 · ELU参数 32,896ℝ¹²⁸128 神经元全连接 · ELU参数 16,512ℝ¹²⁸37 神经元全连接 · 线性参数 4,773ℝ³⁷μ ∈ ℝ³⁷动作均值logσ ∈ ℝ³⁷可学习参数N(μ, σ²)高斯策略采样a ∈ ℝ³⁷动作训练时从 N(μ, σ²) 采样以探索;推理 / 部署直接取均值 μ合计 85,962 个参数(按各层实时求和,含 37 个 logσ)
图 5 · Actor 网络架构。123 维观测经三层 MLP 映射为 37 维动作均值,配合独立可学习 logσ 构成对角高斯策略。
躯干速度 ·6重力投影 ·3速度命令 ·3关节位置 ·37关节速度 ·37上步动作 ·37观测 s ∈ ℝ¹²³ℝ¹²³256 神经元全连接 · ELU参数 31,744ℝ²⁵⁶128 神经元全连接 · ELU参数 32,896ℝ¹²⁸128 神经元全连接 · ELU参数 16,512ℝ¹²⁸1 神经元全连接 · 线性参数 129ℝ¹V(s) ∈ ℝ状态价值仅训练期为 Actor 提供基准合计 81,281 个参数(按各层实时求和)
图 6 · Critic 网络架构。输入与 Actor 相同,输出为状态价值 V(s),仅训练期使用。

3.2观测与动作

观测为 123 维,构成见表 3。值得指出的是,观测里包含 velocity_commands(3 维,即当前回合下达的 vₓ, vᵧ, ωz)——策略据此知道"这一回合要跑多快",从而在同一网络内对不同速度命令作出不同响应。这也是"扩大命令范围即可扩大能力"之所以成立的结构基础:速度目标是观测的一部分,网络本就具备按命令调整行为的输入通道。

表 3 · 观测向量构成
项维度含义训练期噪声
base_lin_vel3躯干线速度Uniform [-0.1, 0.1]
base_ang_vel3躯干角速度Uniform [-0.2, 0.2]
projected_gravity3重力方向在机体系中的投影,表征姿态Uniform [-0.05, 0.05]
velocity_commands3目标 vₓ、vᵧ、ωz无
joint_pos37关节相对默认位置Uniform [-0.01, 0.01]
joint_vel37关节相对速度Uniform [-1.5, 1.5]
actions37上一步动作无

动作项为 joint_pos,维度 37;策略输出经 scale=0.5 缩放并以默认关节位置为 offset,得到目标关节位置。Play 配置关闭观测 corruption(G1 训练配置本未启用随机推搡,Play 变体中相应事件同样为空)。

3.3奖励函数

奖励在每个控制步按权重与控制步长累加。本实验的关键前提是这张表一项没改——三个条件都使用官方 G1 flat 的 16 个活跃奖励项(见表 4),主目标是线速度与 yaw 速度跟踪,双足步态项鼓励单支撑与摆脚,其余为稳定性与能耗正则。下文将说明:正是这张为 0–1.0 m/s 步行调好的奖励表,在命令范围扩大后无需任何修改就支撑出了 4 m/s 的奔跑步态。

表 4 · 奖励项与权重(官方 G1 flat 原表,三条件相同)
奖励项权重作用
track_lin_vel_xy_exp+1.0指数核跟踪 xy 线速度命令
track_ang_vel_z_exp+1.0指数核跟踪 yaw 角速度命令
feet_air_time+0.75双足任务中鼓励非零命令下的单支撑/摆脚时间
termination_penalty−200.0提前失败终止重罚
flat_orientation_l2−1.0惩罚躯干偏离水平姿态
dof_pos_limits−1.0惩罚踝关节接近位置限位
feet_slide−0.1惩罚触地脚滑动
joint_deviation_hip / arms / fingers / torso−0.1 / −0.1 / −0.05 / −0.1限制髋偏航/滚转、手臂、手指与躯干偏离默认姿态
lin_vel_z_l2−0.2限制竖直方向速度
ang_vel_xy_l2−0.05限制横滚/俯仰角速度
action_rate_l2−0.005惩罚连续动作变化过大
dof_torques_l2 / dof_acc_l2−2e−6 / −1e−7惩罚髋/膝力矩与加速度

3.4终止与复位

终止条件包含 time_out(20 秒,即 1000 个控制步)与 base_contact(torso_link 接触力超阈值,表示摔倒或躯干触地)。复位时根位姿在 x/y/yaw 范围内随机化,关节以默认姿态复位;Play 任务关闭随机外力与观测噪声。三个条件的终止与复位设置相同——唯一区别仍是复位后每回合从各自的 lin_vel_x 范围采样命令。

3.5训练流程

每次迭代中,PPO 在 4096 个并行环境中各收集 24 个控制步,共 98,304 条 transition;随后以 4 个 mini-batch、5 个 learning epoch 更新 Actor-Critic。1500 次迭代对应约 1.47 亿控制步。两个扩展条件各训练 3 个随机种子(42/43/44)。

num_envs4096官方配置;利用 GPU 并行物理提高采样吞吐。
num_steps_per_env24G1 官方 RSL-RL 配置。
max_iterations1500沿用 G1 flat 官方训练预算,与基线可比。
seeds42 / 43 / 44每个扩展条件 3 个随机种子,末段统计取种子间 mean±std。

3.6环境与实验设置

任务以 Isaac Lab 的 Manager-based workflow 组织。本实验的自定义只有一处:一个继承官方 G1FlatEnvCfg 的配置子类,在 __post_init__ 中覆盖前进速度命令范围,其余字段全部继承。核心差量如下(run2 条件;sprint4 条件仅范围上限改为 4.5):

class G1FlatSpeedRun2Cfg(G1FlatEnvCfg):
    def __post_init__(self):
        super().__post_init__()                                   # 先套用官方全部配置
        self.commands.base_velocity.ranges.lin_vel_x = (0.0, 2.2) # 唯一改动

软硬件环境与基线条件一致,只列版本:

Isaac Labisaaclab 0.54.3 · isaaclab_tasks 0.11.16 · Isaac Sim 5.1
RSL-RL / PyTorchrsl-rl-lib 5.0.1 · torch 2.7.0+cu128
GPUNVIDIA GeForce RTX 5070 Ti · driver 580.159.03
learning_rate1e-3, adaptive官方 G1 PPO 配置;按 desired_kl=0.01 自适应。
clip_param / gamma / lam0.2 / 0.99 / 0.95PPO 与 GAE 的官方通用设置。
entropy_coef0.008沿用官方默认;本实验不改熵系数。
actor_hidden_dims[256, 128, 128]G1 flat 官方策略网络宽度。

复现命令。训练走本仓自定义任务入口(在官方 train.py 基础上先注册自定义任务):

TASK=G1-Flat-SpeedRun2-v0    scripts/train_custom.sh --seed 42 --run_name run2-s42       --logger wandb --log_project_name robot-learning-dashboard
TASK=G1-Flat-SpeedSprint4-v0 scripts/train_custom.sh --seed 42 --run_name sprint4-s42 --logger wandb --log_project_name robot-learning-dashboard

4实验结果

6 个正式 run(run2 / sprint4 各 3 种子)的记录与训练耗时见表 5,全部完成 1500 次迭代并写出最终 checkpoint。两个条件的训练回报曲线如图 7 所示。

表 5 · 正式 run 清单
条件seed公开标识W&Breal time末 100 回报
run242run2-s42to21hu1f1289 s21.08
run243run2-s43okkmk1u01314 s22.14
run244run2-s44pis40k1k1339 s22.27
sprint442sprint4-s423357kqdu1315 s8.19
sprint443sprint4-s43pk9sudvo1301 s6.40
sprint444sprint4-s445q42aiyw1370 s8.66
图 7 · run2 与 sprint4 两条件的训练回报曲线(Train/mean_reward,6 个 run)。同条件同色、种子以线型区分;数据由本地 TensorBoard 事件文件导出,未作平滑或修饰。sprint4 的回报绝对值低于 run2,是因为更高速度命令下跟踪与稳定更难、正则惩罚更大,回报绝对值不可跨条件直接比较。

如图 7 所示,两个条件都在前若干百次迭代内进入稳定行走,随后回报缓慢上升;末段平均回合长度均接近 1000 步(run2 约 995、sprint4 约 989),说明两条件的多数回合都以 20 秒到时正常结束,而非中途摔倒终止——即便 sprint4 的命令范围高达 4.5 m/s。

5实验分析

5.1学习过程

两个条件的学习形态相似:前期先学会在宽速度谱上维持直立与基本迈步(回合长度快速上升到接近 1000 步),随后训练重点转向速度跟踪精度与动作平滑。差异主要体现在回报绝对水平——sprint4 末段回报(约 6.4–8.7)明显低于 run2(约 21.1–22.3),这不代表 sprint4 学得差,而是它被要求在最高 4.5 m/s 的命令上也跟踪与稳定,指数核跟踪奖励在高速误差下更难拿满、能耗与动作正则惩罚也更大。回合长度接近满值说明高回报差距来自"跟得多准",而非"是否摔倒"。

5.2辅助指标

两个条件的回合长度末段都稳定在约 988–996 步(满值 1000),训练期 base_contact 终止比例很低;这与后文独立评估中两条件在各自范围内的速度命令下零摔倒一致。sprint4 的动作幅度与步频在训练后段随高速命令上升,是它在评估中于 4 m/s 呈现奔跑步态(步频约 3.7 Hz、带腾空相)的训练期先兆。

5.3多种子稳定性

每个扩展条件覆盖 3 个随机种子。run2 三种子末段回报为 21.83 ± 0.65,sprint4 为 7.75 ± 1.19;两条件的种子间方差都不大,回合长度高度一致,说明"扩大命令范围即可获得更高速度能力"不是单一 checkpoint 的偶然结果。sprint4 的种子间回报方差略大,与更宽命令范围下高速段的探索差异有关。

5.4策略行为

视频 1 展示 run2 条件(seed 42)在 2.0 m/s 命令下的 9.98 秒跟随镜头回放,视频 2 为同一策略把评估回合扩展到 60 秒的耐力回放(仅评估用,不改训练配置)。

视频 3 展示 sprint4 条件(seed 42)在 4.0 m/s 命令下的奔跑;如图 8 所示,其抽帧序列中可见双脚同时离地的腾空相——这是步行与奔跑的运动学分界,也说明官方奖励表在未修改的情况下自发产生了奔跑步态。

4.0 m/s 奔跑抽帧连拍,可见双脚同时离地的腾空相
图 8 · sprint4 条件 4.0 m/s 奔跑的抽帧连拍(约 1.6 秒、10 fps,共 16 帧)。序列中可见双脚同时离地的腾空相,与 1–2 m/s 时始终至少一脚触地的步态形成对比。独立评估测得该条件在 4.0 m/s 的双脚腾空占比为 20.2%。

6对比实验:命令范围如何决定速度能力

本节把三个条件放到同一组速度命令上直接对照,回答"扩大命令范围到底改变了什么"。实验设计见表 6:三个条件除 lin_vel_x 范围外完全一致,各在 1.0、2.0、4.0 m/s 三个固定前进命令上评估(每条件每速度 30 回合 = 3 种子 × 10 回合)。

表 6 · 对比实验设计。除 lin_vel_x 范围外,其余配置保持一致。
条件lin_vel_x 范围Seeds每 run 迭代并行环境奖励/观测/动作
基线(0, 1.0) 官方42, 43, 4415004096不变
run2(0, 2.2)42, 43, 4415004096不变
sprint4(0, 4.5)42, 43, 4415004096不变

核心对照是视频 4——其抽帧如图 9 所示——三个条件各在自己的展示速度上并排回放,速度差异一目了然:

基线1.0 | run2 2.0 | sprint4 4.0 三画面并排
图 9 · 速度阶梯三画面对照(视频 4 抽帧):基线 @1.0 m/s 步行、run2 @2.0 m/s 快步、sprint4 @4.0 m/s 奔跑,三段同镜头、跟随拍摄。三者步频与步幅随速度递增,右格已出现明显前倾与腾空。

结果矩阵见表 7。关键对照是同一 2.0 m/s 命令下的基线与 run2:该速度落在基线训练范围(0–1.0)之外,基线三个种子中有两个(seed 42、43)10 回合全部摔倒、仅 seed 44 存活;而把范围扩到 0–2.2 的 run2 三个种子全部零摔、线速度 RMSE 仅 0.040 m/s。视频 5 把这组对照并排呈现,其失效过程如图 10 所示——左格基线策略在 2.0 m/s 命令下起步即失稳摔倒,右格 run2 在同一命令下稳定奔跑;这直观说明速度能力的边界由训练命令分布划定,而非机器人本体或奖励函数的硬限制。

表 7 · 三条件在 1/2/4 m/s 固定命令下的成功率与跟踪精度(每格 30 回合 = 3 种子 × 10)。线速度 RMSE 只统计未摔倒回合。
条件\命令1.0 m/s2.0 m/s4.0 m/s
基线 (0–1.0)0 摔 · RMSE 0.11720/30 摔(2 种子整轮摔)30/30 摔
run2 (0–2.2)0 摔 · RMSE 0.0410 摔 · RMSE 0.04030/30 摔(范围外)
sprint4 (0–4.5)0 摔 · RMSE 0.0890 摔 · RMSE 0.0600 摔 · RMSE 0.080(腾空 20.2%)
官方范围基线在 2.0 米每秒命令下失稳摔倒的连拍
图 10 · 官方范围基线(范围 0–1.0)在 2.0 m/s 命令下的失效连拍(约 6 秒、1 fps,共 6 帧)。命令超出训练范围后,基线策略无法产生足够快的步频,身体前倾后失稳,最终躯干触地终止(画面随后回到初始位置为评估环境的自动重置)。对照视频为并排双画面(实测 1280×360)、失效连拍为 6 帧拼接(实测 2880×270),二者的单机位源视频原生分辨率为 1280×720。

表 7 同时揭示了扩大范围的代价:sprint4 虽在 4.0 m/s 上稳定奔跑,但它在 1.0 m/s 上的跟踪 RMSE 为 0.089,高于把范围只扩到 0–2.2 的 run2(0.041)——极宽的命令范围把训练样本摊薄到 0–4.5 的整个速度谱,稀释了低速段的采样密度,低速跟踪精度因此下降。这是"训练分布决定行为质量"的另一面:范围不是越宽越好,应与目标速度区间匹配。run2 在 1.0 与 2.0 m/s 上都优于基线与 sprint4,是"范围恰好覆盖目标速度"时精度与能力兼得的例子。

7独立评估

第 6 节的对照来自固定命令回放;本节用独立评估管线在统一考卷下量化三个条件的可靠性与跟踪精度。评估在去随机化的 Play 环境中进行,推理确定性(取动作分布均值),9 个策略(3 条件 × 3 种子)在每个命令点前重设同一评估种子、同卷可比;每轮 10 个并行环境同时执行;逐回合明细与聚合结果落盘为 CSV 与 JSON 并记录 checkpoint 与场景配置哈希。协议见表 8,合计 9 策略 × 50 回合 = 450 回合。

表 8 · 独立评估协议。三个固定速度点 + 两个耐力点,每点每策略 10 回合。
场景命令回合 × 时长检验目标
固定网格1.0 / 2.0 / 4.0 m/s 确定性前进每点 10 × 20 s各速度档的可靠性与跟踪精度
耐力2.0 与 4.0 m/s 恒定前进每点 10 × 60 s高速档超过训练回合 3 倍时长的连续运行

指标口径与基线条件一致:速度跟踪误差为基座系下水平速度误差的 L2 范数、对有效步取时间平均(剔除起步 1 秒稳定期与终止边界步,摔倒后数据不计);可靠性主指标为摔倒回合数与成功率(摔倒 = 躯干触地终止);步态量化按左右脚分别统计单步腾空时长、触地交替率与双脚同时离地占比(flight_fraction,奔跑步态该值显著为正)。核心结果见表 9。

表 9 · 独立评估核心结果。数值为 3 个训练种子的 mean±std(ddof=1);跟踪 RMSE 只统计未摔倒回合,单位 m/s;每条件每命令点 30 回合。
命令指标基线 (0–1.0)run2 (0–2.2)sprint4 (0–4.5)
1.0 m/s成功率1.0001.0001.000
线速度 RMSE0.117 ± 0.0240.041 ± 0.0090.089 ± 0.038
2.0 m/s成功率0.333(2 种子整轮摔)1.0001.000
摔倒数(/30)2000
线速度 RMSE0.179(幸存种子)0.040 ± 0.0020.060 ± 0.015
4.0 m/s成功率0.0000.000(范围外)1.000
摔倒数(/30)30300
线速度 RMSE——0.080 ± 0.009
双脚腾空占比——0.202 ± 0.014
耐力 60 s@2.0 摔倒(/30)2000
@4.0 摔倒(/30)30300

表 9 给出三条一致的结论。第一,命令范围决定可用速度上限:基线(0–1.0)只在 1.0 m/s 可靠,2.0 m/s 三种子中两个整轮摔倒、4.0 m/s 全摔;run2(0–2.2)把可靠上限推到 2.0 m/s(三种子零摔、RMSE 0.040);sprint4(0–4.5)进一步在 4.0 m/s 三种子零摔。每个条件都在其范围内可靠、范围外迅速失效,可用速度与训练范围的对应关系清晰。第二,4.0 m/s 是真正的奔跑而非快走:sprint4 在该速度的双脚腾空占比达 20.2%,60 秒耐力回合同样零摔且维持相同腾空比例——奔跑步态是稳定持续的,不是短暂现象。第三,精度与范围需匹配:run2 在 1.0 与 2.0 m/s 的跟踪都优于其余条件,而 sprint4 因范围极宽在 1.0 m/s 上精度下降(RMSE 0.089 对 run2 的 0.041)。

视频 6 为 sprint4 在 4.0 m/s 命令下的 60 秒耐力回放:全程零摔并维持带腾空相的奔跑步态,说明上述"稳定持续"并非短时现象,而是可长时间保持的行为。

最值得强调的是:上述奔跑步态是在奖励表一项未改的情况下自发出现的。官方 G1 flat 的奖励只要求跟踪速度命令、不摔倒并满足若干正则,其中并没有"进入奔跑"或"产生腾空相"的显式项。当命令速度被提高到 4 m/s 时,策略发现带腾空相的奔跑是同时满足高速跟踪与省力正则的解,于是自行采用——这与显式奖励某种步态形状(后者容易被策略以表面达标的退化解利用)是相反的路径:在本实验中,通过在命令分布上做文章诱导出的奔跑,既满足高速跟踪又保持了达标的可靠性,未出现为迎合奖励而牺牲步态的退化解。

8局限性

第一,本实验只覆盖仿真平地,无外力扰动、地形、传感噪声或 sim-to-real 随机化。第二,评估使用单一评估种子(为 9 策略同卷可比而固定),靠每命令点 30 回合摊薄,未做多评估种子稳定性检验。第三,宽命令范围以牺牲低速段样本密度为代价,sprint4 在 1.0 m/s 上的跟踪精度不及范围较窄的 run2;本实验也未评估更自然的步态质量,只报告了可靠性与跟踪误差。第四,速度阶梯只取了 1/2/4 三档,未系统扫描"范围上限—可达速度"的关系曲线,也未定位官方奖励表失效的确切速度上限(4.5 m/s 范围已能稳定跑到 4.0 m/s,更高速度未测)。第五,评估只在纯前进命令下进行,未覆盖高速与转向、横移同时下达的复合命令。

9结论与未来工作

本实验通过仅覆盖前进速度命令范围一项,得到从步行到奔跑的速度阶梯:run2 把可靠速度上限从官方的 1.0 提升到 2.0 m/s(三种子零摔、RMSE 0.040),sprint4 进一步在 4.0 m/s 实现三种子零摔的奔跑(腾空占比 20.2%、60 秒耐力零摔)。核心结论是——在保持官方奖励、观测、网络与超参数完全不变的前提下,机器人的前进速度能力主要由训练命令分布决定,官方为步行调好的奖励表足以支撑到 4 m/s 的奔跑,且带腾空相的奔跑步态是速度提高后自发涌现的,而非被显式奖励塑形。这为后续工作提供了一个稳健的调节手段:与其为新行为手工设计奖励项,不如先检验能否通过调整任务/命令分布达成。未来工作包括系统扫描命令范围上限与可达速度的关系、在扩展速度上加入地形与扰动,以及把高速策略纳入统一评估考卷的抗扰动专项。

附录 · 关于本报告

数据来源。任务与 PPO 配置读取自 Isaac Lab 官方 G1 flat 配置与本实验的自定义子类;曲线与表格统计来自 6 个正式 run 的本地 TensorBoard 事件文件,末段口径为最后 100 迭代种子间 mean±std(ddof=1);参数量读自最终 checkpoint;视频与抽帧来自各条件的跟随镜头 Play 回放。第 6、7 节的评估数字来自代码仓评估管线的落盘产物(每回合明细 CSV 共 450 回合,聚合 JSON 记录 checkpoint 与场景配置的 SHA-256 哈希、Isaac Lab 版本与代码 git 提交号),摔倒计数经"CSV 逐行计数"与"聚合脚本"两条独立路径对账一致。

报告产物。训练曲线、对比曲线、回放与对照视频、抽帧均随页面仓库提供;跟随镜头回放脚本为 scripts/play_follow_camera.py,评估管线为代码仓 eval/ 目录(声明式场景 YAML + 采集/聚合两段式脚本)。

参考文献。

  1. J. Schulman, F. Wolski, P. Dhariwal, A. Radford, O. Klimov. Proximal Policy Optimization Algorithms. arXiv:1707.06347, 2017.
  2. J. Schulman, P. Moritz, S. Levine, M. Jordan, P. Abbeel. High-Dimensional Continuous Control Using Generalized Advantage Estimation. arXiv:1506.02438, 2015.
  3. N. Rudin, D. Hoeller, P. Reist, M. Hutter. Learning to Walk in Minutes Using Massively Parallel Deep Reinforcement Learning. CoRL 2021.
  4. Isaac Lab Project Developers. Isaac Lab, official manager-based locomotion velocity tasks and Unitree G1 configuration.

返回报告介绍 / Back to report