Isaac Sim使用代码方式导入将场景usd导入

环境说明

Ubuntu 20.04 Isaac sim 4.0.0

涉及类

omni.isaac.core.utils.stage.stage_utils
omni.isaac.core.prims.XFormPrim

代码实现

from omni.isaac.examples.base_sample import BaseSample
from omni.isaac.core.utils.stage import stage_utils
from omni.isaac.core.core.task import BaseTask
from omni.isaac.core.prims import XFormPrim


class BaseTaskName(BaseTask):
	def __init__(self, name):
		super().__init__(name=name, offset=None)
        return
    def set_up_scene(self,scene):
        super().set_up_scene(scene)
        scene.add_default_ground_plane()
        prim_path = "/World/名称(最好小写)"
        stage_utils.add_reference_to_stage(usd_path="/xxx/xxx/xxx.usd", prim_path=prim_path)
        self._usdobj = scene.add(XFormPrim(prim_path=prim_path ,
                                           name="usd_object",
                                           position=np.array([-0.2, 0, 0.02])))
        return
    """
		其它代码块
	"""
class BaseSampleName(BaseSample):
	def __init__(self) -> None:
        super().__init__()
        return
    
    def setup_scene(self):
        world = self.get_world()
        world.add_task(BaseTaskName(name="my_first_task"))    
        return
    """
		其它代码块
	"""

说明

需先学习Omniverse Isaac sim官方教程的Core API,本代码基于Core API中的 What is a Task修改。

参考资料

1、 Omniverse Isaac sim官方教程
2、 Isaac Sim API 手册
3、 Isaac sim论坛问题:cannot add own usd object to scene in python

Logo

更多推荐