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.