当前位置:   article > 正文

Isaac Lab tutorials 之场景创建_isaaclab教程

isaaclab教程

创建prims

python source/standalone/tutorials/00_sim/spawn_prims.py

绿色刚体与其Xform坐标 

桌子是usd文件reference到场景中,The table above is added as a reference to the scene.,以及其坐标

  1. def design_scene():
  2. """Designs the scene by spawning ground plane, light, objects and meshes from usd files."""
  3. # Ground-plane 配置地面
  4. cfg_ground = sim_utils.GroundPlaneCfg()
  5. cfg_ground.func("/World/defaultGroundPlane", cfg_ground)
  6. # spawn distant light
  7. # 配置灯光
  8. cfg_light_distant = sim_utils.DistantLightCfg(
  9. intensity=3000.0,
  10. color=(0.75, 0.75, 0.75),
  11. )
  12. cfg_light_distant.func("/World/lightDistant", cfg_light_distant, translation=(1, 0, 10))
  13. # create a new xform prim for all objects to be spawned under
  14. # 创建一个 Objects Xform
  15. prim_utils.create_prim("/World/Objects", "Xform")
  16. # spawn a red cone 图中两个红色的立锥, translation 是他们的坐标
  17. cfg_cone = sim_utils.ConeCfg(
  18. radius=0.15,
  19. height=0.5,
  20. visual_material=sim_utils.PreviewSurfaceCfg(diffuse_color=(1.0, 0.0, 0.0)),
  21. )
  22. cfg_cone.func("/World/Objects/Cone1", cfg_cone, translation=(-1.0, 1.0, 1.0))
  23. cfg_cone.func("/World/Objects/Cone2", cfg_cone, translation=(-1.0, -1.0, 1.0))
  24. # spawn a green cone with colliders and rigid body
  25. # 绿色的立锥是刚体,掉落下来到桌子上,这里展示了一个立锥刚体的创建方法
  26. cfg_cone_rigid = sim_utils.ConeCfg(
  27. radius=0.15,
  28. height=0.5,
  29. rigid_props=sim_utils.RigidBodyPropertiesCfg(),
  30. mass_props=sim_utils.MassPropertiesCfg(mass=1.0),
  31. collision_props=sim_utils.CollisionPropertiesCfg(),
  32. visual_material=sim_utils.PreviewSurfaceCfg(diffuse_color=(0.0, 1.0, 0.0)),
  33. )
  34. cfg_cone_rigid.func(
  35. "/World/Objects/ConeRigid", cfg_cone_rigid, translation=(0.0, 0.0, 2.0), orientation=(0.5, 0.0, 0.5, 0.0)
  36. )
  37. # spawn a usd file of a table into the scene
  38. # The table above is added as a reference to the scene
  39. # 桌子的创建是添加一个桌子实例usd文件,是作为reference加入进来的
  40. cfg = sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Props/Mounts/SeattleLabTable/table_instanceable.usd")
  41. cfg.func("/World/Objects/Table", cfg, translation=(0.0, 0.0, 1.05))

创建静态碰撞体

Making a physics prim fixed in the simulation — Isaac Lab documentation (isaac-sim.github.io)icon-default.png?t=N7T8https://isaac-sim.github.io/IsaacLab/source/how-to/make_fixed_prim.html#static-colliders生成一些静态障碍物,但没有刚体属性,生成多个物体的做法跟下面刚体的类似

  1. import omni.isaac.lab.sim as sim_utils
  2. cone_spawn_cfg = sim_utils.ConeCfg(
  3. radius=0.15,
  4. height=0.5,
  5. collision_props=sim_utils.CollisionPropertiesCfg(),
  6. visual_material=sim_utils.PreviewSurfaceCfg(diffuse_color=(0.0, 1.0, 0.0)),
  7. )
  8. cone_spawn_cfg.func(
  9. "/World/Cone", cone_spawn_cfg, translation=(0.0, 0.0, 2.0), orientation=(0.5, 0.0, 0.5, 0.0)
  10. )

创建刚体

与刚性对象交互 — Isaac Lab 文档 --- Interacting with a rigid object — Isaac Lab documentation (isaac-sim.github.io)icon-default.png?t=N7T8https://isaac-sim.github.io/IsaacLab/source/tutorials/01_assets/run_rigid_object.html实现在场景中随机掉落四个刚体

python source/standalone/tutorials/01_assets/run_rigid_object.py

 作为多次生成刚性对象 prim 的示例,我们创建其父 Xform prims, /World/Origin{i} 它们对应于不同的生成位置。当正则表达式 /World/Origin*/Cone 传递给 assets.RigidObject 类时,它会在每个 /World/Origin{i} 位置生成刚性对象 prim。例如,如果 /World/Origin1 场景中存在 和 /World/Origin2 ,则刚性对象素数分别在位置 /World/Origin1/Cone 和 /World/Origin2/Cone 处生成。

  1. # Create separate groups called "Origin1", "Origin2", "Origin3"
  2. # Each group will have a robot in it
  3. # 创建4个原点Xform
  4. origins = [[0.25, 0.25, 0.0], [-0.25, 0.25, 0.0], [0.25, -0.25, 0.0], [-0.25, -0.25, 0.0]]
  5. for i, origin in enumerate(origins):
  6. prim_utils.create_prim(f"/World/Origin{i}", "Xform", translation=origin)
  7. # Rigid Object
  8. # 立锥刚体配置
  9. cone_cfg = RigidObjectCfg(
  10. prim_path="/World/Origin.*/Cone",
  11. spawn=sim_utils.ConeCfg(
  12. radius=0.1,
  13. height=0.2,
  14. rigid_props=sim_utils.RigidBodyPropertiesCfg(),
  15. mass_props=sim_utils.MassPropertiesCfg(mass=1.0),
  16. collision_props=sim_utils.CollisionPropertiesCfg(),
  17. visual_material=sim_utils.PreviewSurfaceCfg(diffuse_color=(0.0, 1.0, 0.0), metallic=0.2),
  18. ),
  19. init_state=RigidObjectCfg.InitialStateCfg(),
  20. )
  21. # 创建刚体实体对象
  22. cone_object = RigidObject(cfg=cone_cfg)

在本教程中,我们使用类似于 Spawn Objects 教程中的刚性圆锥体的 spawn 配置创建一个圆锥形刚性对象。唯一的区别是,现在我们将生成配置包装到类中 assets.RigidObjectCfg 。此类包含有关资产的生成策略、默认初始状态和其他元信息的信息。当将此类传递给 assets.RigidObject 该类时,它会生成对象,并在播放模拟时初始化相应的物理句柄。

如果想屏蔽掉物体重力,修改这一句:

rigid_props=sim_utils.RigidBodyPropertiesCfg(disable_gravity=True),

这就做出了空间障碍物

四个原点的坐标位置

重置模拟状态

  1. # reset root state
  2. # 获取根状态
  3. root_state = cone_object.data.default_root_state.clone()
  4. # sample a random position on a cylinder around the origins
  5. # 给刚体根状态位置等信息赋值
  6. root_state[:, :3] += origins
  7. root_state[:, :3] += math_utils.sample_cylinder(
  8. radius=0.1, h_range=(0.25, 0.5), size=cone_object.num_instances, device=cone_object.device
  9. )
  10. # write root state to simulation
  11. # 将根状态写入到仿真中
  12. cone_object.write_root_state_to_sim(root_state)
  13. # reset buffers
  14. cone_object.reset()

要重置生成的刚体对象prims模拟状态,我们需要设置它们的姿态和速度。它们共同定义了生成的刚性对象的根状态。需要注意的是,此状态是在仿真世界框架中定义的,而不是在其父 Xform prim 中定义的。这是因为物理引擎只理解世界帧,而不理解父 Xform prim 的帧。因此,我们需要在设置刚体对象prims之前将刚体对象prims的期望状态转换为世界框架。

使用该 assets.RigidObject.data.default_root_state 属性来获取生成的刚体对象prims的默认根状态。

然后,我们随机化根状态的平移,并使用该 assets.RigidObject.write_root_state_to_sim() 方法设置刚体对象prims的所需状态。顾名思义,此方法将刚体对象prims 的根状态写入仿真缓冲区。

所以这里创建的刚体位置是相对于根的,跟父Xform之类的无关,反正我点来点去是没查到立锥体的位置;

接下来还有两步跟刚体有关的工作要做:

在步进模拟之前,我们执行该 assets.RigidObject.write_data_to_sim() 方法。此方法将其他数据(如外力)写入仿真缓冲区。在本教程中,我们不会对刚性对象施加任何外力,因此不需要此方法。但是,为了完整起见,它包括在内。

  1. # apply sim data
  2. cone_object.write_data_to_sim()

 在逐步仿真之后,我们更新刚性对象素数的内部缓冲区,以反映它们在属性中 assets.RigidObject.data 的新状态。这是使用该 assets.RigidObject.update() 方法完成的。

  1. # update buffers
  2. cone_object.update(sim_dt)

欢迎加QQ群一起交流学习:723139415

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/990496
推荐阅读
相关标签
  

闽ICP备14008679号