G1 编程与工程 IsaacLab 训练配置

G1-23dof Fusion 多传感器融合任务配置规范 (V0~V11)

2026-04-12 · 5 min read

G1-23dof Fusion 多传感器融合任务配置规范 (V0~V11)

文档版本:V1.0
机器人平台:Unitree G1-23dof
仿真框架:IsaacLab 2.3.0 + IsaacSim 5.1.0
训练算法:FusionOnPolicyRunner + MultiCriticPPO
编写日期:2026-04-12
任务标识Unitree-G1-23dof-Fusion-V0 ~ Unitree-G1-23dof-Fusion-V11
相关文档G1-23dof Velocity 任务训练配置规范


1. 任务概述

1.1 任务目标

Fusion 是 G1-23dof 机器人的多传感器融合感知运动任务,融合 LiDAR + Depth Camera + Height Scanner 三种传感器输入,实现复杂地形(楼梯、坡道、不规则地面)下的稳定行走。

核心挑战:在无特权信息(privileged info)的情况下,仅凭视觉传感器实现复杂地形导航。

1.2 三传感器配置

传感器 类型 分辨率 用途
Depth Camera MultiMeshRayCasterCamera 48×64(1 channel) 前方地形深度感知
LiDAR RayCaster + LidarPattern 8×360 channels 360° 水平扫描
Height Scanner RayCaster + GridPattern 17×11 = 160D 基座下方高度图

1.3 V0~V11 版本演进总览

版本 核心创新 观测维度 奖励项数
V0 首个集成环境 6030D 9项
V1 密集步态奖励 + 正则化 6030D ~21项
V2 Curriculum 改进
V3 Curriculum 改进
V4 感知时序升级
V5 Depth 时序 + per-foot height scanner
V6 VolumePoints 物理穿透检测
V7-V9 地形/奖励调整
V10 混合地形 + 命令范围扩展 27项
V11 手臂约束拆分 + quality_gated curriculum 27项

2. Fusion V0 环境配置详解

2.1 地形配置

V0 复用 stair_climbing 混合地形,包含 6 种子地形:

FUSION_TERRAIN_CFG = TerrainGeneratorCfg(
    size=(8.0, 8.0),
    num_rows=10,                # 10 个难度等级
    num_cols=20,                # 20 列
    horizontal_scale=0.1,       # 10cm 分辨率
    vertical_scale=0.005,       # 5mm 高度分辨率
    sub_terrains={
        "flat":                    0.10,  # 平地 10%
        "pyramid_stairs":           0.30,  # 金字塔楼梯 30%
        "pyramid_stairs_inv":       0.20,  # 倒金字塔楼梯 20%
        "boxes":                    0.15,  # 随机方块 15%
        "random_rough":             0.15,  # 随机粗糙 15%
        "hf_pyramid_slope":        0.10,  # 高频坡道 10%
    },
)

2.2 传感器配置详解

Depth Camera (D435i 模拟)

depth_camera = MultiMeshRayCasterCameraCfg(
    prim_path="{ENV_REGEX_NS}/Robot/torso_link",
    offset=OffsetCfg(
        pos=(0.0385, 0.0, 0.432),   # 头部位置
        rot=(0.9914, 0.0, -0.1305, 0.0),  # 15° 向下倾斜
        convention="world",
    ),
    data_types=["distance_to_image_plane"],
    pattern_cfg=PinholeCameraPatternCfg(
        focal_length=1.93,
        horizontal_aperture=3.5,
        width=64, height=48,          # 64×48 分辨率
    ),
    max_distance=5.0,                # 最大深度 5m
    depth_clipping_behavior="max",  # 截断到 max_distance
)

LiDAR (Livox MID-360 模拟)

lidar = LIDAR_MID360_8CH_CFG
# 8 channels, -15°~+20° 垂直, 360° 水平 azimuth
# 2872 rays, padded → 2880 (8×360)

Height Scanner

height_scanner = RayCasterCfg(
    prim_path="{ENV_REGEX_NS}/Robot/torso_link",
    offset=OffsetCfg(pos=(0.0, 0.0, 20.0)),  # 基座上方 20m
    ray_alignment="yaw",                      # 随偏航角对齐
    pattern_cfg=patterns.GridPatternCfg(
        resolution=0.1,    # 10cm 网格
        size=[1.6, 1.0],  # 1.6m × 1.0m 范围
    ),
)
# 输出: 160D heightmap (17×11 grid)

2.3 观测空间

Policy 观测(Actor)- 6030D

观测项 维度 类型 说明
base_ang_vel 3D 本体 基座角速度
projected_gravity 3D 本体 重力投影
velocity_commands 3D 本体 指令速度
joint_pos_rel 23D 本体 关节位置
joint_vel_rel 23D 本体 关节速度
last_action 23D 本体 上一步动作
depth_image 3072D (1,48,64) 视觉 深度图
lidar_scan 2880D (1,8,360) 视觉 LiDAR 扫描

拼接方式concatenate_terms=False(保持 2D 形状),由 FusionVecEnvWrapper 展平拼接。

Critic 观测(Privileged)- 241D

观测项 维度 类型 说明
base_lin_vel 3D 特权 真值线速度
height_scan 160D 特权 高度图
(本体感知 78D) 同 Policy

3. 网络架构:FusionActorCritic

3.1 整体结构

Actor Path:
  proprio(78D) ────────────────────────────────┐
  depth(1,48,64) ──→ DepthEncoder(64D) ──┐    │
  lidar(1,8,360) ──→ LiDAREncoder(64D) ──┼───→ CrossAttentionFusion(64D)
                                              │    concat(proprio, fused) = 142D
                                              └──→ Actor MLP → actions(23D)

Critic Path (×3 独立):
  critic_obs(241D) ───────────────────────────────→ 3× Critic MLP → 3 values

Aux Heads (训练辅助监督):
  depth_embed(64D)  ─→ TerrainHead → terrain(160D)
  lidar_embed(64D)   ─→ DistanceHead → distances(360D)
  concat(fused,proprio)(142D) ─→ VelocityHead → base_lin_vel(3D)

3.2 关键模块

Depth Encoder

Conv2dHeadModel(
    image_shape=(1, 48, 64),
    channels=[32, 64],
    kernel_sizes=[5, 3],
    strides=[2, 2],
    paddings=[2, 1],
    hidden_sizes=[256],
    output_size=64,           # 输出 64D 特征
)

CrossAttentionFusion(跨注意力融合)

CrossAttentionFusion(
    proprio_dim=78,    # 本体感觉维度
    visual_dim=64,      # 视觉特征维度
    d_model=64,        # 注意力维度
    n_heads=4,         # 4 头注意力
)

融合机制: - 以本体感觉为 Query,交叉注意力融合 depth 和 lidar 特征 - 物理意义:根据当前运动状态动态加权视觉传感器贡献 - 当只有 2 个 KV token 时,注意力退化为 sigmoid 门控

3.3 MultiCritic PPO

3 个独立 Critic 分组评估不同维度:

Critic 权重 评估内容
Task Critic 0.7 任务奖励(速度跟踪)
Reg Critic 0.1 正则化(步态、能耗)
Safety Critic 0.2 安全性(碰撞、倾斜)

Auxiliary Losses: - Terrain Head:预测 heightmap (160D) - Distance Head:预测 LiDAR 距离 (360D) - Velocity Head:预测基座线速度 (3D)


4. 奖励函数设计

4.1 Fusion V0 奖励分组

分组 奖励项 说明
Task track_lin_vel_xy(2.5), track_ang_vel_z(0.75), alive(0.15) 速度跟踪 + 存活
Reg joint_vel(-0.001), action_rate(-0.02), energy(-2e-5) 平滑性 + 能耗
Safety base_height(-10), flat_orientation_l2(-3), undesired_contacts(-2) 姿态 + 碰撞

总计:9 项奖励,3 组

4.2 Fusion V11 最终奖励(27 项)

V11 是融合训练的成熟版本,奖励项数增加到 27 项:

4.2.1 Locomotion 组(22 项)

奖励项 有效权重 函数 物理意义
track_lin_vel_xy 4.17(原始2.5×1.67) track_lin_vel_xy_yaw_frame_exp XY 平面速度跟踪
track_ang_vel_z 1.25(原始0.75×1.67) track_ang_vel_z_exp 偏航角速度跟踪
alive 0.25(原始0.15×1.67) is_alive 存活奖励
forward_progress 3.33(原始2.0×1.67) forward_progress_reward 前进距离激励
gait 0.50(原始0.3×1.67) feet_gait(period=1.0, offset=[0,0.5]) 周期性对角步态
feet_clearance 3.33(原始2.0×1.67) foot_clearance_reward_terrain_relative(target=0.15m) 抬脚高度奖励
feet_slide -1.33(原始-0.8×1.67) feet_slide 足部滑动惩罚
air_time_variance -0.83(原始-0.5×1.67) air_time_variance_penalty 腾空时间方差惩罚
joint_deviation_legs -0.83(原始-0.5×1.67) joint_deviation_l1(hip_roll/yaw) 髋关节侧向约束
joint_deviation_knees -0.25(原始-0.15×1.67) joint_deviation_l1(knee) 膝关节约束
joint_deviation_hip_pitch -0.25(原始-0.15×1.67) joint_deviation_l1(hip_pitch) 髋关节前后约束
joint_deviation_shoulder_pitch V11 强约束 joint_deviation_l1(shoulder_pitch) 阻止手臂前伸
undesired_contacts V11 维持 undesired_contacts 非期望接触惩罚

4.2.2 Safety 组(5 项)

奖励项 权重 函数 物理意义
base_height -10.0 base_height_l2_safe(target=0.78m) 基座高度约束
flat_orientation_l2 -3.0 flat_orientation_l2 基座水平约束
volume_points_penetration -V6+ volume_points_penetration 脚部物理穿透检测
feet_orientation_contact -V6+ feet_orientation_contact 触地时脚部水平度
torso_orientation -V11新增 torso_orientation 躯干姿态约束

4.2.3 V11 权重放大机制

V11 的一个关键变化:所有 locomotion 奖励乘以 1.67 系数(原始值 × 1.67 = 有效权重),使总奖励量级与 Safety 惩罚更平衡。

4.2.4 V11 核心修复:手臂约束拆分

# V10 问题:joint_deviation_arms 权重 -0.1 对 6030D 网络太弱
joint_deviation_arms = RewTerm(weight=-0.1)  # V10

# V11 拆分为两个独立约束
joint_deviation_shoulder_pitch = RewTerm(weight=-1.0)  # 强约束,阻止手臂前伸
joint_deviation_arms_other     = RewTerm(weight=-0.25)  # 弱约束,roll/yaw/elbow/wrist

效果:V11 机器人在平地行走时手臂自然下垂,不再前伸。


5. 版本迭代关键变更

5.1 V1 核心改进(V0 → V1)

问题 解决方案
episode_length ~890(目标 950+) 增加 forward_progress 奖励
缺步态约束 增加 feet_gait, feet_slide, feet_clearance
动作质量差(手臂乱甩、不抬脚) 增加 joint_deviation 约束
Curriculum 效果差 改为 failure_adaptive_terrain_curriculum

5.2 V5 核心改进(V4 → V5)

改进项 V4 V5
本体感知历史 1 帧 8 帧 (582D)
Depth 时序 单帧 4 帧堆叠 (4,24,32)
足部感知 Per-foot height scanner
奖励项 新增 feet_at_plane, feet_air_time_positive_biped

5.3 V6 核心改进(V5 → V6)

改进项 说明
VolumePoints 传感器 100 采样点/脚,GPU Warp 穿透检测
volume_points_penetration 核心硬约束,惩罚物理穿透
feet_orientation_contact 接触时脚部水平度惩罚
Curriculum 门控 min_episode_fraction 0.6 → 0.75

5.4 V11 核心改进(V10 → V11)

V10 的已知问题: - 手臂前伸 + 弯曲(joint_deviation_arms -0.10 对 6534D 网络太弱) - 转圈也能升级 curriculum(纯距离门控的漏洞)

V11 解决方案:

# 手臂约束拆分
joint_deviation_shoulder_pitch = -0.60  # 阻止前伸
joint_deviation_arms_other = -0.15     # roll/yaw/elbow/wrist

# Curriculum 改为 quality_gated
terrain_levels = quality_gated(
    min_distance=2.0,           # 至少走 2m
    min_survival_rate=0.6     # 存活率 > 60%
)

# 抬脚增强
feet_clearance: 有效 +1.50 → +2.00

6. 超参数配置

6.1 MultiCriticPPO 超参数

MultiCriticPPOCfg(
    # 标准 PPO
    num_learning_epochs=5,
    num_mini_batches=16,         # 4096 × 24 / 16 = 6144 samples/batch
    clip_param=0.2,
    gamma=0.99,
    lam=0.95,
    entropy_coef=0.008,
    learning_rate=3e-4,

    # Multi-Critic
    encoder_learning_rate=1e-4, # 编码器单独学习率
    num_critic_groups=3,        # 3 个独立 Critic
    advantage_weights=[0.7, 0.1, 0.2],  # Task/Reg/Safety

    # Auxiliary Losses
    lambda_terrain=0.5,
    lambda_distance=0.3,
    lambda_velocity=0.2,
    lambda_terrain_schedule={milestones: [30000, 60000], values: [0.5, 0.25, 0.1]},
)

6.2 关键超参数影响

超参数 默认值 影响分析
num_mini_batches 16 影响梯度估计稳定性,GPU 显存限制
encoder_lr 1e-4 过低:视觉特征学习慢;过高:遮盖 MLP 学习
advantage_weights[0] 0.7 Task 权重过高会压制 Reg/Safety 学习
lambda_terrain_schedule 衰减 terrain aux loss 随训练递减,最终仅依赖视觉

7. 训练与推理

7.1 训练命令

# Fusion V0 训练
./unitree_rl_lab.sh -t --task Unitree-G1-23dof-Fusion-V0 --num_envs 4096 --max_iterations 50000 --headless

# Fusion V11 训练
./unitree_rl_lab.sh -t --task Unitree-G1-23dof-Fusion-V11 --num_envs 4096 --max_iterations 50000 --headless

7.2 推理命令

./unitree_rl_lab.sh -p --task Unitree-G1-23dof-Fusion-V11

8. 版本对比总表

特性 V0 V1 V5 V6 V11
地形 混合 混合 混合 混合 混合(57% stairs max 0.25m)
本体历史 8帧 8帧 8帧
Depth 时序 4帧 4帧 4帧
VolumePoints
奖励项数 9 ~21 27
Curriculum terrain_levels failure_adaptive quality_gated
手臂约束 无专项 -0.1 -0.75(拆分)

版本记录

版本 日期 修改内容 作者
V1.0 2026-04-12 初始版本,Fusion V0~V11 完整配置规范 AI Assistant

本文档由 AI 辅助整理自 unitree_lab_locomotion 仓库源码

← 上一篇
G1-23dof 强化学习策略部署架构
下一篇 →
G1-23dof 强化学习训练实战复盘与经验总结
← 返回博客列表