Note: For any Isaac Lab topics, please submit your topic to its GitHub repo ( GitHub - isaac-sim/IsaacLab: Unified framework for robot learning built on NVIDIA Isaac Sim ) following the instructions provided on Isaac Lab’s Contributing Guidelines ( Contribution Guidelines — Isaac Lab Documentation ).
Please provide all relevant details below before submitting your post. This will help the community provide more accurate and timely assistance. After submitting, you can check the appropriate boxes. Remember, you can always edit your post later to include additional information if needed.
Isaac Sim Version
4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
x Other (please specify):5.0.0
Operating System
x Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):
GPU Information
- Model: RTX5880ada
- Driver Version: 550.144.03
Topic Description
Detailed Description
(Describe the issue in detail, including what you were trying to do, what you expected to happen, and what actually happened)
I imported three robot arms in format of urdf, and I want to set the joint values of the robot arm.
I can use the Physics Inspector in the Tool Panel to manipulate the robot, but when I followed the instruction of Robot Simulation Snippets — Isaac Sim Documentation to complete the same task in python script, it failed.
Here is part of my code :
async def set_scene():
import omni
import omni.kit.commands
import omni.usd
from isaacsim.core.api.world import World
from isaacsim.core.prims import RigidPrim
from isaacsim.core.api.objects import DynamicCuboid
if World.instance():
World.instance().clear_instance()
world=World()
await world.initialize_simulation_context_async()
world.scene.add_default_ground_plane(z_position=-1.0)
# Retrieve the path of the URDF file
......
# create a physical scene
stage = omni.usd.get_context().get_stage()
import omni
omni.timeline.get_timeline_interface().play()
......
# dymical control/ robot articulation
from omni.isaac.dynamic_control import _dynamic_control
dc = _dynamic_control.acquire_dynamic_control_interface()
# Print the state of each degree of freedom in the articulation
art = dc.get_articulation("/RMBF_8_G3_0")
if art == _dynamic_control.INVALID_HANDLE:
print("Error: Articulation not found!")
dof_states = dc.get_articulation_dof_states(art, _dynamic_control.STATE_ALL)
print("RMBF state", dof_states)
# Get state for a specific degree of freedom
dof_ptr = dc.find_articulation_dof(art, "rlnd_A3_2")
dof_state = dc.get_dof_state(dof_ptr, _dynamic_control.STATE_ALL)
# print position for the degree of freedom
print("rlnd_A3_2 pos", dof_state.pos)
num_joints = dc.get_articulation_joint_count(art)
print("number of joints", num_joints)
world.reset()
......
asyncio.ensure_future(set_scene())
Steps to Reproduce
(Add more steps as needed)
Error Messages
(If applicable, copy and paste any error messages you received)
2025-08-07T09:29:57Z [13,811,466ms] [Warning] [omni.isaac.dynamic_control.plugin] Failed to find articulation at '/RMBF_8_G3_0'
Error: Articulation not found!
RMBF state None
2025-08-07T09:29:57Z [13,811,466ms] [Warning] [omni.isaac.dynamic_control.plugin] DcFindArticulationDof: Function called while not simulating
2025-08-07T09:29:57Z [13,811,466ms] [Warning] [omni.isaac.dynamic_control.plugin] DcGetDofState: Function called while not simulating
rlnd_A3_2 pos 0.0
2025-08-07T09:29:57Z [13,811,466ms] [Warning] [omni.isaac.dynamic_control.plugin] DcGetArticulationJointCount: Function called while not simulating
number of joints 0
Screenshots or Videos
(If applicable, add screenshots or links to videos that demonstrate the issue)
Additional Information
What I’ve Tried
(Describe any troubleshooting steps you’ve already taken)
import omni
omni.timeline.get_timeline_interface().play()
# dymical control/ robot articulation
from omni.isaac.dynamic_control import _dynamic_control
dc = _dynamic_control.acquire_dynamic_control_interface()
# new api
from isaacsim.core.utils.prims import get_articulation_root_api_prim_path
root_api_prim_path = get_articulation_root_api_prim_path("/RMBF_8_G3_0")
print("root_api_prim_path is", root_api_prim_path)
# find
from isaacsim.core.utils.articulations import find_all_articulation_base_paths
rootpath = find_all_articulation_base_paths()
print("find_all_articulation_base_paths", rootpath)
stage = omni.usd.get_context().get_stage()
for prim in stage.Traverse():
from pxr import Gf, Sdf, Usd, UsdGeom, UsdPhysics
if prim.HasAPI(UsdPhysics.ArticulationRootAPI):
print(prim.GetPath(), " is articulation")
elif prim.IsA(UsdPhysics.PrismaticJoint) or prim.IsA(UsdPhysics.RevoluteJoint) or prim.IsA(UsdPhysics.SphericalJoint):
print(prim.GetPath(), " is joint")
############################below is log###############################
root_api_prim_path is /RMBF_8_G3_0/root_joint
find_all_articulation_base_paths ['/SetupArmG2_2', '/RMBF_8_G3_0', '/RLND_8_G3_0']
/RMBF_8_G3_0/joints/fixed_base is joint
/RMBF_8_G3_0/joints/arm_joint_1 is joint
/RMBF_8_G3_0/joints/arm_joint_2 is joint
/RMBF_8_G3_0/joints/arm_joint_3 is joint
/RMBF_8_G3_0/joints/arm_joint_4 is joint
/RMBF_8_G3_0/joints/arm_joint_5 is joint
/RMBF_8_G3_0/joints/arm_joint_6 is joint
/RMBF_8_G3_0/joints/arm_joint_7 is joint
/RMBF_8_G3_0/joints/arm_joint_8 is joint
/RMBF_8_G3_0/joints/arm_joint_9 is joint
/RMBF_8_G3_0/joints/rmbf_A1 is joint
/RMBF_8_G3_0/joints/rmbf_A2 is joint
/RMBF_8_G3_0/joints/rmbf_A3_1 is joint
/RMBF_8_G3_0/joints/rmbf_A3_2 is joint
/RMBF_8_G3_0/joints/rmbf_linkA1_to_shell is joint
/RMBF_8_G3_0/root_joint is articulation
/RLND_8_G3_0/joints/fixed_base is joint
/RLND_8_G3_0/joints/arm_joint_1 is joint
/RLND_8_G3_0/joints/arm_joint_2 is joint
/RLND_8_G3_0/joints/arm_joint_3 is joint
/RLND_8_G3_0/joints/arm_joint_4 is joint
/RLND_8_G3_0/joints/arm_joint_5 is joint
/RLND_8_G3_0/joints/arm_joint_6 is joint
/RLND_8_G3_0/joints/arm_joint_7 is joint
/RLND_8_G3_0/joints/arm_joint_8 is joint
/RLND_8_G3_0/joints/arm_joint_9 is joint
/RLND_8_G3_0/joints/rlnd_A1 is joint
/RLND_8_G3_0/joints/rlnd_A2 is joint
/RLND_8_G3_0/joints/rlnd_A3_1 is joint
/RLND_8_G3_0/joints/rlnd_A3_2 is joint
/RLND_8_G3_0/joints/rlnd_linkA1_to_shell is joint
/RLND_8_G3_0/root_joint is articulation
/SetupArmG2_2/joints/arm_joint_1 is joint
/SetupArmG2_2/joints/arm_joint_2 is joint
/SetupArmG2_2/joints/arm_joint_3 is joint
/SetupArmG2_2/joints/arm_joint_4 is joint
/SetupArmG2_2/joints/arm_joint_5 is joint
/SetupArmG2_2/joints/arm_joint_6 is joint
/SetupArmG2_2/joints/arm_joint_7 is joint
/SetupArmG2_2/joints/arm_joint_8 is joint
/SetupArmG2_2/joints/arm_joint_9 is joint
/SetupArmG2_2/joints/A1234 is joint
/SetupArmG2_2/joints/A5 is joint
/SetupArmG2_2/root_joint is articulation
from isaacsim.asset.importer.urdf._urdf import UrdfJointTargetType
import_config.default_drive_type = UrdfJointTargetType.JOINT_DRIVE_POSITION
world.step(render=True)
Related Issues
(If you’re aware of any related issues or forum posts, please link them here)
Additional Context
(Add any other context about the problem here)
