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. 任务多样性:不同目标速度、静止指令

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

  • 适应不同地面材质
  • 应对负载变化
  • 从多种初始状态恢复
  • 抵抗外部干扰
  • 执行多样化运动指令
CMakeLists Eigen FCPX GNU Gazebo Git Interest IsaacLab KDL Life Linux Matrix ODE PPO QoS ROS Ros UML Ubuntu VcXsrv algorithm algorithms axis-angle bode c++ calibration chrome control cpp dB data_struct dots figure gdb git latex launch life linux mac math matlab memory motor moveit operator optimal algorithm python robot robotics ros ros2 rtb simulation stl thread tools twist urdf valgrind velocity vim web work wsl 强化学习 配置类
知识共享许可协议