Adding a new robot by using URDF importer (Invalid Articulation handle)

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.

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.)

I think I finally found the solution.

What I should do is using a correct prim path…
The prim path should be a base link name such as fancy_franka/base_link not the top link name such as fancy_franka