How to construct UR10+Robotiq_2F_140 model

Isaac Sim Version

4.5.0

Operating System

Ubuntu 22.04

GPU Information

  • Model: RTX4090
  • Driver Version:

Topic Description

Detailed Description

I load ur10.usd and robotiq_2f_140.usd using python API, and add a fixedjoint between them. When I execute my script, the girpper fly out(in UI view),

Steps to Reproduce

my_world = World(stage_units_in_meters=1.0)
my_world.scene.add_default_ground_plane()

asset_path = parent_dir_path + '/asserts/ur10.usd'
add_reference_to_stage(usd_path=asset_path, prim_path="/World/UR")
my_ur10=my_world.scene.add(Robot("/World/UR/ur10"))
my_ur10.set_world_pose([0, 0, 1])
my_ur10.set_joints_default_state(
positions=np.array([-np.pi / 2, -np.pi / 2, -np.pi / 2, -np.pi / 2, np.pi / 2, 0])
)
my_controller = KinematicsSolver(my_ur10, attach_gripper=False)
gripper_usd_path = parent_dir_path + "/asserts/robotiq_2f_140.usd"
root_prim = "/World"
robotiq_prim = root_prim + "/Robotiq_2F140"
add_reference_to_stage(gripper_usd_path, robotiq_prim)
gripper_xform = my_world.scene.add(SingleXFormPrim(robotiq_prim))
articulation_controller = my_ur10.get_articulation_controller()
mass_api = UsdPhysics.MassAPI.Apply(get_prim_at_path(robotiq_prim))
mass_api.CreateMassAttr(1.5)
my_world.reset()
gripper_subframe = robotiq_prim + "/robotiq_base_link"
fixed_joint_path = "/World/UR" + "/FixedJoint"
stage = get_current_stage()
fixed_joint = UsdPhysics.FixedJoint.Define(stage, fixed_joint_path)
fixed_joint.GetBody1Rel().SetTargets([gripper_subframe])
fixed_joint.GetBody0Rel().SetTargets(['/World/UR/ur10/ee_link'])
fixed_joint.GetLocalPos0Attr().Set(Gf.Vec3f(0.05, -0.1, 0))
fixed_joint.GetLocalRot0Attr().Set(Gf.Quatf(0.707, 0., 0.707, 0))

an error or warning occur:

025-04-14 02:50:02 [11,761ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/Robotiq_2F140/robotiq_base_link.
2025-04-14 02:50:02 [11,761ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/Robotiq_2F140/left_outer_knuckle.
2025-04-14 02:50:02 [11,761ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/Robotiq_2F140/right_outer_knuckle.
2025-04-14 02:50:02 [11,761ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/Robotiq_2F140/left_outer_finger.
2025-04-14 02:50:02 [11,761ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/Robotiq_2F140/right_outer_finger.
2025-04-14 02:50:02 [11,761ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/Robotiq_2F140/left_inner_finger.
2025-04-14 02:50:02 [11,761ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/Robotiq_2F140/right_inner_finger.
2025-04-14 02:50:02 [11,761ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/Robotiq_2F140/left_inner_knuckle.
2025-04-14 02:50:02 [11,761ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/Robotiq_2F140/right_inner_knuckle.
2025-04-14 02:50:02 [11,765ms] [Error] [omni.physx.plugin] PhysX error: Illegal BroadPhaseUpdateData 
, FILE /builds/omniverse/physics/physx/source/lowlevelaabb/src/BpBroadPhaseABP.cpp, LINE 4023
2025-04-14 02:50:02 [12,096ms] [Warning] [omni.kit.notification_manager.manager] PhysX error: Illegal BroadPhaseUpdateData

Screenshots or Videos

execute the script:

stop and play:

Additional Information

What I need

  1. can control gripper
  2. can control robot us IK

Hi @496098804 thanks for posting your question. I will take a look at this issue promptly.

Your errors on:PhysX error: Illegal BroadPhaseUpdateData seem to be due to the gripper being in collision with the UR10. One way to attach a gripper to a robot arm and still have Articulation working is to:

  1. Create a base prim Xform (e.g. at path /robot)
  2. Load the prim for UR10 and Robotiq as childs of this base prim. So prims would be at /robot/UR10 and /robot/Robotiq
  3. Translate Robotiq prim to match the position of the last frame (i.e. ee_link) of the UR10.
  4. Create a fixed joint between ee_link and the Robotiq.

The prim tree should look like this:

I am also attaching the corresponding USD.
ur10_robotiq2f_140.usd (5.0 KB)

Hope that helps,
Michael

2 Likes

hi, I have solved this problem, but a new problem has occured, For example, when I set_world_pose in python API, the robot can not work ,
my code like it:

asset_path = parent_dir_path + '/asserts/ur10_2f140_flatten.usd'
add_reference_to_stage(usd_path=asset_path, prim_path="/World/Robot")
robot = my_world.scene.add(Robot("/World/Robot"))
robot.set_world_pose(
    np.array([0.0, 0.0, 2]),
)

the screenshot is:

Can you provide more details on how it is failing? If you can share your full script to reproduce the error that would help speed up debugging.

Hello!

We noticed that this topic hasn’t received any recent responses, so we are closing it for now to help keep the forum organized.

If you’re still experiencing this issue or have additional questions, please feel free to create a new topic with updated details. When doing so, we recommend mentioning or linking to this original topic in your new post—this helps provide context and makes it easier for others to assist you.

Thank you for being part of the NVIDIA Isaac Sim community.

Best regards,
The NVIDIA Isaac Sim Forum Team