Isaac Lab 事件函数(Events)说明文档

概述

Domain Randomization(域随机化)是一种提高机器人策略从仿真到真实环境迁移能力的技术。通过在训练时随机化各种物理参数和环境条件,使策略能够适应真实世界的不确定性。


1. 物理材质随机化 physics_material

函数: mdp.randomize_rigid_body_material
触发模式: startup(启动时执行一次)

参数说明

  • asset_cfg: 指定机器人实体,".*" 表示所有刚体部件
  • static_friction_range: 静摩擦系数范围 (0.4, 1.0)
    • 控制物体从静止开始移动时的阻力
    • 值越大,越难开始滑动
  • dynamic_friction_range: 动摩擦系数范围 (0.4, 0.8)
    • 控制物体运动时的阻力
    • 通常小于静摩擦系数
  • restitution_range: 恢复系数范围 (0.0, 0.0)
    • 0.0 = 完全非弹性碰撞(不反弹)
    • 1.0 = 完全弹性碰撞(完全反弹)
  • num_buckets: 64 个离散化桶,用于参数采样
  • make_consistent: 确保动摩擦不超过静摩擦(符合物理规律)

作用

模拟不同地面材质(混凝土、瓷砖、草地等),提高机器人在不同摩擦条件下的适应性。


2. 质量随机化 add_base_mass

函数: mdp.randomize_rigid_body_mass
触发模式: startup

参数说明

  • mass_distribution_params: (0.95, 1.05)
    • 质量缩放范围:95%-105%
  • operation: "scale" 表示按比例缩放原始质量

作用

模拟机器人携带不同负载或部件质量差异,使策略对质量变化鲁棒。


3. 外力/力矩扰动 base_external_force_torque

函数: mdp.apply_external_force_torque
触发模式: reset(每次重置环境时)

参数说明

  • force_range: (0.0, 0.0) - 当前未施加外力
  • torque_range: (-0.0, 0.0) - 当前未施加力矩

作用

可用于模拟风力、碰撞等外部扰动(当前已禁用)。


4. 基座状态随机化 reset_base

函数: mdp.reset_root_state_uniform
触发模式: reset

参数说明

  • pose_range: 初始位姿范围
    • x: (-0.5, 0.5) 米
    • y: (-0.5, 0.5) 米
    • yaw: (-3.14, 3.14) 弧度(完整旋转)
  • velocity_range: 初始速度范围
    • 线速度 x, y, z: (-0.5, 0.5) m/s
    • 角速度 roll, pitch, yaw: (-0.5, 0.5) rad/s

作用

每次训练回合开始时,机器人从不同位置、朝向和初始速度开始,增加训练多样性。


5. 关节状态随机化 reset_robot_joints

函数: mdp.reset_joints_by_scale
触发模式: reset

参数说明

  • position_range: (0.5, 1.5) - 关节位置按默认值的 50%-150% 缩放
  • velocity_range: (0.0, 0.0) - 关节初始速度为 0

作用

使机器人从不同的关节配置开始,避免策略过拟合到特定初始姿态。


6. 动态推力扰动 push_robot

函数: mdp.push_by_setting_velocity
触发模式: interval(间隔触发)

参数说明

  • interval_range_s: (12.0, 15.0) - 每 12-15 秒随机触发一次
  • velocity_range: 施加的速度扰动
    • x: (-1.0, 1.0) m/s
    • y: (-1.0, 1.0) m/s
    • z: (0, 0) - 不施加垂直扰动

作用

模拟外部推力(如人的推动、碰撞),训练策略的恢复能力。


7. 速度命令随机化 base_velocity

函数: mdp.UniformVelocityCommandCfg
类型: 命令生成器

参数说明

  • resampling_time_range: (9.0, 10.0) 秒 - 命令更新频率
  • rel_standing_envs: 0.1 - 10% 的环境执行静止命令
  • debug_vis: True - 显示调试可视化
  • ranges: 目标速度范围
    • lin_vel_x: (-1.5, 1.5) m/s - 前后速度
    • lin_vel_y: (-0.4, 0.4) m/s - 左右速度
    • ang_vel_z: (-1.5, 1.5) rad/s - 旋转速度

作用

训练机器人跟随不同速度命令的能力,包括前进、后退、侧移、旋转及组合动作。


触发模式说明

模式 触发时机 用途
startup 环境创建时执行一次 固定整个训练过程的参数(如质量、摩擦)
reset 每次回合重置时 随机化初始状态
interval 按时间间隔触发 模拟动态扰动

总结

  1. 物理参数随机化:摩擦、质量
  2. 初始条件随机化:位姿、速度、关节状态
  3. 动态扰动:推力、命令变化
  4. 任务多样性:不同目标速度、静止指令

通过这些随机化,训练出的策略可以:

  • 适应不同地面材质
  • 应对负载变化
  • 从多种初始状态恢复
  • 抵抗外部干扰
  • 执行多样化运动指令
知识共享许可协议