在NVIDIA Omniverse Orbit中创建固定物理对象的技术指南
概述
在物理仿真场景中,我们经常需要创建一些固定不动的物体,这些物体虽然参与碰撞检测,但不会因物理作用而移动或旋转。本文将详细介绍在NVIDIA Omniverse Orbit仿真环境中创建固定物理对象的几种方法。
静态碰撞体
静态碰撞体是最简单的固定对象实现方式,它们具有碰撞属性但没有刚体属性,因此完全不受物理模拟影响。
特点
- 不参与动力学计算
- 可以与其他物体发生碰撞
- 无法通过刚体对象API访问
创建示例
import isaaclab.sim as sim_utils
# 配置一个绿色圆锥体作为静态碰撞体
cone_spawn_cfg = sim_utils.ConeCfg(
radius=0.15,
height=0.5,
collision_props=sim_utils.CollisionPropertiesCfg(),
visual_material=sim_utils.PreviewSurfaceCfg(diffuse_color=(0.0, 1.0, 0.0)),
)
# 在(0,0,2)位置生成圆锥体
cone_spawn_cfg.func(
"/World/Cone", cone_spawn_cfg,
translation=(0.0, 0.0, 2.0),
orientation=(0.5, 0.0, 0.5, 0.0)
)
固定刚体对象
如果需要保留刚体属性但固定物体位置,可以将刚体设置为运动学(kinematic)模式。
特点
- 保留刚体属性
- 可通过刚体API访问
- 位置和旋转固定
- 仍参与碰撞
创建示例
import isaaclab.sim as sim_utils
# 配置运动学圆锥体
cone_spawn_cfg = sim_utils.ConeCfg(
radius=0.15,
height=0.5,
rigid_props=sim_utils.RigidBodyPropertiesCfg(kinematic_enabled=True),
mass_props=sim_utils.MassPropertiesCfg(mass=1.0),
collision_props=sim_utils.CollisionPropertiesCfg(),
visual_material=sim_utils.PreviewSurfaceCfg(diffuse_color=(0.0, 1.0, 0.0)),
)
# 生成圆锥体
cone_spawn_cfg.func(
"/World/Cone", cone_spawn_cfg,
translation=(0.0, 0.0, 2.0),
orientation=(0.5, 0.0, 0.5, 0.0)
)
固定关节系统
对于复杂的关节系统(如机器人),需要固定其根关节来使整个系统保持静止。
实现原理
通过设置fix_root_link=True
,系统会自动在根关节与世界坐标系之间创建固定关节。
创建示例:固定ANYmal机器人
import isaaclab.sim as sim_utils
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR
# 配置ANYmal机器人
anymal_spawn_cfg = sim_utils.UsdFileCfg(
usd_path=f"{ISAACLAB_NUCLEUS_DIR}/Robots/ANYbotics/ANYmal-C/anymal_c.usd",
activate_contact_sensors=True,
rigid_props=sim_utils.RigidBodyPropertiesCfg(
disable_gravity=False,
retain_accelerations=False,
linear_damping=0.0,
angular_damping=0.0,
max_linear_velocity=1000.0,
max_angular_velocity=1000.0,
max_depenetration_velocity=1.0,
),
articulation_props=sim_utils.ArticulationRootPropertiesCfg(
enabled_self_collisions=True,
solver_position_iteration_count=4,
solver_velocity_iteration_count=0,
fix_root_link=True, # 关键参数
),
)
# 生成机器人
anymal_spawn_cfg.func(
"/World/ANYmal", anymal_spawn_cfg,
translation=(0.0, 0.0, 0.8),
orientation=(1.0, 0.0, 0.0, 0.0)
)
架构设计注意事项
在USD资产设计中,关节系统的根节点处理有几种常见模式:
- 推荐模式:根节点同时包含刚体和关节根属性,作为浮动基座
- 固定基座模式:关节根属性在父节点,通过固定关节连接世界坐标系
- 不推荐模式:关节根属性在刚体节点但存在固定关节,可能导致意外行为
技术实现细节
当设置fix_root_link=True
时,系统内部会执行以下操作:
- 检测是否为浮动基座系统
- 在世界坐标系和根关节之间创建固定关节
- 将关节根属性从刚体节点移至父节点
未来改进方向
未来版本可能会引入显式标志来区分固定基座和浮动基座系统,简化当前的工作流程。
总结
本文介绍了在NVIDIA Omniverse Orbit中创建固定物理对象的多种方法,从简单的静态碰撞体到复杂的关节系统固定。理解这些技术对于构建稳定的物理仿真环境至关重要,特别是在需要固定参考物体或测试平台的场景中。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考