Hi! Thank you for your support.
I’m trying to add a robot to Isaac Sim.
However, I encountered this error…, I think the problem is I dont know how to add an Articulation to the robot.
Does anyone know the solution of this error??
I checked this topic but I can’t understand how to solve this problem.
- How can i fix DcGetArticulationRootBody: Invalid or expired articulation handle
- Adding articulation to imported URDF file
- Unexpected bug/change in ArticulationView of Isaac2023.1.1
Here is my super simple code.
from omni.isaac.examples.base_sample import BaseSample
from omni.importer.urdf import _urdf
import omni.kit.commands
import omni.usd
from omni.isaac.manipulators.grippers import ParallelGripper
from omni.isaac.manipulators import SingleManipulator
import numpy as np
class HelloWorld(BaseSample):
def __init__(self) -> None:
super().__init__()
return
def setup_scene(self):
world = self.get_world()
world.scene.add_default_ground_plane(-1.5)
# Acquire the URDF extension interface
urdf_interface = _urdf.acquire_urdf_interface()
# Set the settings in the import config
import_config = _urdf.ImportConfig()
import_config.merge_fixed_joints = False
import_config.convex_decomp = False
import_config.fix_base = True
import_config.make_default_prim = True
import_config.self_collision = False
import_config.create_physics_scene = True
import_config.import_inertia_tensor = False
import_config.default_drive_strength = 5.0
import_config.default_position_drive_damping = 1.0
import_config.default_drive_type = (
_urdf.UrdfJointTargetType.JOINT_DRIVE_POSITION
)
import_config.distance_scale = 1
import_config.density = 0.0
# Get the urdf file path
# Finally import the robot
result, prim_path = omni.kit.commands.execute(
"URDFParseAndImportFile",
urdf_path="robot_urdf/jaco2_j2n6s300/j2n6s300_standalone.urdf",
import_config=import_config,
)
print(f"robot: {prim_path}, result: {result}")
gripper = ParallelGripper(
# We chose the following values while inspecting the articulation
end_effector_prim_path="/j2n6s300/j2n6s300_end_effector",
joint_prim_names=["j2n6s300_link_finger_1", "j2n6s300_link_finger_3"],
joint_opened_positions=np.array([0, 0]),
joint_closed_positions=np.array([1.0, 1.0]),
)
jaco2 = SingleManipulator(
prim_path="/j2n6s300",
name="j2n6s300_robot",
end_effector_prim_name="j2n6s300_end_effector",
gripper=gripper,
)
jaco2 = world.scene.add(jaco2)
jaco2 = self._world.scene.get_object("/j2n6s300")
return
async def setup_post_load(self):
self._world = self.get_world()
self._world.add_physics_callback("sim_step", callback_fn=self.physics_step)
await self._world.play_async()
return
async def setup_post_reset(self):
await self._world.play_async()
return
def physics_step(self, step_size):
world = self.get_world()
observations = world.get_observations()
return
The error message is
2024-04-19 16:38:06 [201,184ms] [Warning] [omni.physx.plugin] Detected an articulation at /j2n6s300/world with more than 4 velocity iterations being added to a TGS scene.The related behavior changed recently, please consult the changelog. This warning will only print once.
2024-04-19 16:38:06 [201,247ms] [Warning] [omni.isaac.dynamic_control.plugin] Failed to find articulation at '/j2n6s300'
2024-04-19 16:38:06 [201,247ms] [Error] [omni.isaac.dynamic_control.plugin] DcGetArticulationRootBody: Invalid or expired articulation handle
2024-04-19 16:38:06 [201,247ms] [Warning] [omni.physx.tensors.plugin] Failed to find articulation at '/j2n6s300'
2024-04-19 16:38:06 [201,247ms] [Error] [omni.physx.tensors.plugin] Pattern '/j2n6s300' did not match any articulations
Isaac Sim version is 2023.1.1.
Thanks!!
(I also got the same error result even if I used the official franka URDF file.)