I want to add own usd object to the scene in Isaac sim with python. Here is sample of the code I use:
add_reference_to_stage(usd_path=path, prim_path=prim_path)
prim = XFormPrim(
prim_path=prim_path, name=f"object_{self._object_count}",
position=np.array([40, 0, 40])
)
self.get_world().scene.add(prim)
Where path
is for example: "/home/user/my_object.usd"
and prim_path
: "/World/objects/object"
.
if path is a file in Isaac sim assets /Isaac/Props/Flip_Stack/screw_95_physics.usd
it works, but if I try to load my own object, following error shows up:
[Error] [asyncio] [/home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/kit/python/lib/python3.7/asyncio/base_events.py:1619] Task exception was never retrieved
future: <Task finished coro=<BaseSampleExtension._on_load_world.<locals>._on_load_world_async() done, defined at /home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/exts/omni.isaac.examples/omni/isaac/examples/base_sample/base_sample_extension.py:161> exception=ErrorException(Error in 'pxrInternal_v0_20__pxrReserved__::UsdStage::_SetValueImpl' at line 6043 in file /buildAgent/work/ca6c508eae419cf8/USD/pxr/usd/usd/stage.cpp : 'Type mismatch for </World/objects/object_0.xformOp:orient>: expected 'GfQuatf', got 'GfQuatd'')>
Traceback (most recent call last):
File "/home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/exts/omni.isaac.examples/omni/isaac/examples/base_sample/base_sample_extension.py", line 162, in _on_load_world_async
await self._sample.load_world_async()
File "/home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/exts/omni.isaac.examples/omni/isaac/examples/base_sample/base_sample.py", line 44, in load_world_async
self.setup_scene()
File "/home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/exts/omni.isaac.examples/omni/isaac/examples/user_examples/master_thesis.py", line 55, in setup_scene
self.add_object()
File "/home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/exts/omni.isaac.examples/omni/isaac/examples/user_examples/master_thesis.py", line 79, in add_object
position=np.array([40, 0, 40])
File "/home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim.py", line 82, in __init__
XFormPrim._set_xform_properties(self)
File "/home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim.py", line 160, in _set_xform_properties
XFormPrim.set_world_pose(self, position=current_position, orientation=current_orientation)
File "/home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim.py", line 329, in set_world_pose
self, translation=np.array(calculated_translation), orientation=gf_quatd_to_np_array(calculated_orientation)
File "/home/filip/.local/share/ov/pkg/isaac_sim-2021.2.0/exts/omni.isaac.core/omni/isaac/core/prims/xform_prim.py", line 389, in set_local_pose
xform_op.Set(rotq)
pxr.Tf.ErrorException:
Error in 'pxrInternal_v0_20__pxrReserved__::UsdStage::_SetValueImpl' at line 6043 in file /buildAgent/work/ca6c508eae419cf8/USD/pxr/usd/usd/stage.cpp : 'Type mismatch for </World/objects/object_0.xformOp:orient>: expected 'GfQuatf', got 'GfQuatd''
Can somebody help me with this error?
Thank you.
lego_4x2_red_isaac.usd (327.5 KB) - my .usd file which doesn’t work.
screw_95_physics.usd (20.1 KB) - file from Isaac assets which works.