概述
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/sy: (-1.0, 1.0) m/sz: (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 |
按时间间隔触发 | 模拟动态扰动 |
总结
- 物理参数随机化:摩擦、质量
- 初始条件随机化:位姿、速度、关节状态
- 动态扰动:推力、命令变化
- 任务多样性:不同目标速度、静止指令
通过这些随机化,训练出的策略可以:
- 适应不同地面材质
- 应对负载变化
- 从多种初始状态恢复
- 抵抗外部干扰
- 执行多样化运动指令