Error when using ROS2PublishJointState: Prim is not an articulation

Isaac Sim Version

4.2.0

Operating System

Ubuntu 22.04

GPU Information

  • Model: GeForce RTX 2070
  • Driver Version: 550.127.08

Topic Description

Detailed Description

I use this Omni Action Graph:

nodes:
  - ["OnPlaybackTick", "omni.graph.action.OnPlaybackTick"]
  - ["Context", "omni.isaac.ros2_bridge.ROS2Context"]
  - ["SubscribeJointState", "omni.isaac.ros2_bridge.ROS2SubscribeJointState"]
  - ["ArticulationController", "omni.isaac.core_nodes.IsaacArticulationController"]
  - ["ReadSimTime", "omni.isaac.core_nodes.IsaacReadSimulationTime"]
  - ["PublishClock", "omni.isaac.ros2_bridge.ROS2PublishClock"]
  - ["PublishJointState", "omni.isaac.ros2_bridge.ROS2PublishJointState"]

connections:
  - ["OnPlaybackTick.outputs:tick", "SubscribeJointState.inputs:execIn"]
  - ["Context.outputs:context", "SubscribeJointState.inputs:context"]
  - ["SubscribeJointState.outputs:execOut", "ArticulationController.inputs:execIn"]
  - ["SubscribeJointState.outputs:jointNames", "ArticulationController.inputs:jointNames"]
  - ["SubscribeJointState.outputs:positionCommand", "ArticulationController.inputs:positionCommand"]
  - ["SubscribeJointState.outputs:velocityCommand", "ArticulationController.inputs:velocityCommand"]
  - ["SubscribeJointState.outputs:effortCommand", "ArticulationController.inputs:effortCommand"]
  - ["ReadSimTime.outputs:simulationTime", "PublishJointState.inputs:timeStamp"]
  - ["ReadSimTime.outputs:simulationTime", "PublishClock.inputs:timeStamp"]
  - ["OnPlaybackTick.outputs:tick", "PublishClock.inputs:execIn"]
  - ["Context.outputs:context", "PublishClock.inputs:context"]
  - ["OnPlaybackTick.outputs:tick", "PublishJointState.inputs:execIn"]
  - ["Context.outputs:context", "PublishJointState.inputs:context"]

values:
  - ["Context.inputs:domain_id", "${ros_domain_id}"]
  - ["ArticulationController.inputs:robotPath", "${prim_path}"]
  - ["PublishJointState.inputs:targetPrim", "${prim_path}"]
  - ["PublishJointState.inputs:topicName", "${sim_joint_states}"]
  - ["SubscribeJointState.inputs:topicName", "${sim_joints_command_topic}"]

I import robot mode from URDF:

    def _import_robot(self, urdf_path: str) -> str:
        urdf_interface = _urdf.acquire_urdf_interface()
        # Set the settings in the import config
        import_config = _urdf.ImportConfig()
        import_config.merge_fixed_joints = True
        import_config.convex_decomp = False
        import_config.fix_base = True
        import_config.make_default_prim = False
        import_config.self_collision = True #
        import_config.create_physics_scene = False
        import_config.import_inertia_tensor = False # 
        # import_config.default_drive_strength = 1047.19751
        # import_config.default_position_drive_damping = 52.35988
        import_config.default_drive_type = _urdf.UrdfJointTargetType.JOINT_DRIVE_POSITION
        import_config.distance_scale = 1
        import_config.density = 0.0

        status, robot_prim_path = omni.kit.commands.execute(
            "URDFParseAndImportFile",
            urdf_path=urdf_path,
            import_config=import_config,
            get_articulation_root=False,
        )

I get an Error: [Error] [omni.graph.core.plugin] /RobotActionGraph/PublishJointState: [/RobotActionGraph] Prim is not an articulation

Steps to Reproduce

  1. Use the previous Omni Action Graph
  2. Run Isaac Sim

Error Messages

[Error] [omni.graph.core.plugin] /RobotActionGraph/PublishJointState: [/RobotActionGraph] Prim is not an articulation