Unstable robot assembler in isaac sim 4.5

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
Other (please specify):

Operating System

Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: GeForce RTX2080
  • Driver Version: 535.183.01

Topic Description

Detailed Description

When using the robot assembler (tools > robotics > asset editors > robot assembler) with two official assets (a robot and a gripper from the assets browser), the simulation is very unstable.

Steps to Reproduce

  1. Open a new stage.
  2. Add a UR10e universal robot from the official assets browser (Robots/UniversalRobots/ur10e/ur10e.usd).
  3. Add a 2F140 Robotiq gripper from the official assets browser (Robots/Robotiq/2F-140/Robotiq_2F_140_physics_edit.usd).
  4. Open the robot assembler under tools > robotics > asset editors > robot assembler and assemble the robot and the gripper as follows:
  • base robot: /World/ur10e
  • attach robot: /World/Robotiq_2F_140_physics_edit
  • Base robot attach point: /gripper
  • Attach robot attach point: /robotiq_base_link
  • Click on assemble
  1. Play the simulation and observe “exploding” behavior (see video attached) where the arm is moving randomly ?!? and the gripper detaches itself.

Error Messages

Just after the problem arises, multiple “Invalid PhysX transform detected”

Screenshots or Videos

Additional Information

What I’ve Tried

I tried different robots (Yaskawa, Staubli) that were converted to USD from URDF file but same behavior arises when i move the robots’s joints with the physics inspector.

Related Issues

Additional Context

2 Likes

can we actually sort this issue out its been a long standing problem and there have been multiple reported problems for robotiq asset with UR or any robot and its a very typical configuration used in labs and even big OEM’s. I’ve reported the same issue in all versions of Isaac sim. I thought this was fixed in 4.5 finally but no, even the beta assets where we have the option to import usd for ur5e with robotiq as option directly doesn’t work let alone robot assembler.

I followed your steps and didn’t reproduce the issue.

Here is the python code from my “Assembly Summary Frame”:

from isaacsim.robot_setup.assembler import RobotAssembler,AssembledRobot 
from isaacsim.core.prims import SingleArticulation
import numpy as np

base_robot_path = "/World/ur10e"
attach_robot_path = "/World/Robotiq_2F_140_physics_edit"
base_robot_mount_frame = "/gripper"
attach_robot_mount_frame = "/robotiq_base_link"
fixed_joint_offset = np.array([0.0,0.0,0.0])
fixed_joint_orient = np.array([0.0,0.7071,0.0,0.7071])
single_robot = False

robot_assembler = RobotAssembler()
assembled_robot = robot_assembler.assemble_articulations(
	base_robot_path,
	attach_robot_path,
	base_robot_mount_frame,
	attach_robot_mount_frame,
	fixed_joint_offset,
	fixed_joint_orient,
	mask_all_collisions = True,
	single_robot=single_robot
)

# The fixed joint in a assembled robot is editable after the fact:
# offset,orient = assembled_robot.get_fixed_joint_transform()
# assembled_robot.set_fixed_joint_transform(np.array([.3,0,0]),np.array([1,0,0,0]))

# And the assembled robot can be disassembled, after which point the AssembledRobot object will no longer function.
# assembled_robot.disassemble()

# Controlling the resulting assembled robot is different depending on the single_robot flag
if single_robot:
	# The robots will be considered to be part of a single Articulation at the base robot path
	controllable_single_robot = SingleArticulation(base_robot_path)
else:
	# The robots are controlled independently from each other
	base_robot = SingleArticulation(base_robot_path)
	attach_robot = SingleArticulation(attach_robot_path)

Could you compare it to yours?

Hi thanks for the response, I have few doubts to clarify to verify I’m not doing something wrong before assembling should I ensure both the assets (Robotiq 2F-85) and UR5e have a valid articulation root layer. I’m creating a default stage, Issac Assets beta (Load UR5e (PhysX enabled) drag and drop under World), Choose Robotiq-2F-85-edit drag and drop in World. So right now both have prim paths (World/UR5e) and (World/Robotiq_2F_85_edit/Robotiq_2F_85). Articulation root layer for robotiq is right now at (Robotiq_2F_85_edit/Robotiq_2F_85) and root_joint for UR5e.

In Robot Assembler if I do Base Robot (World/UR5e) and Attach Robot (World/Robotiq_2F_85_edit/Robotiq_2F_85), base robot attach point /gripper. attach robot attach point /base_link, it doesn’t work please correct me If I’m missing something trivial here. Thanks.

Any updates on this?

Hi hariksee, I do see problems assembling these two parts:

  • /Robots/Robotiq/2F-140/Robotiq_2F_140_physics_edit.usd
  • /Robots/UniversalRobots/ur10e/ur10e.usd

And you may need to do some modifications to make it work stably.

Modifications to Make it Work

  1. The first modification you need is to fix the gripper by adding a PhysicsFixedJoint on it. Because the robot assembler performs robot assembling during playing time, a fixed joint prevents it falling to nowhere. Some other hands, e.g. the Allegro hand has a fixed joint on the root and it has no problem.

  1. When Assembling the robot using the assembler, you may notice that the /gripper xform doesn’t connect to any other part. We can change it to /World/ur10e/wrist_3_link to keep the articulation structure

  1. Finally, you can following your previous steps to make a stable assemble. I believe this bug is specifically related to these two assets, but you may encounter more as due to different asset formats.

I noticed that there is an assembled robotiq140 + ur10e combo that might be helpful.

https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/4.5/Isaac/Robots/UR10/ur10e_robotiq2f-140.usd

Hi thanks for the response, I think I have precisely tried whatever you suggested and I feel there is something broken in the asset level for this. My problem with this is that if i do any tuning I’m not able to get stable parameters for the position control to work properly. Can you please look at this flattened usd to help me out with the stable limits and parameters for both robot and robotiq 2F85 together. That would be really helpful for my workflow.

Currently the only articulation root layer is in prim /Robot under which you have /Robotiq_2F_85 and /ur10e, I think I more or less copied the parameters for gripper from the already present ROS2 scenario example, however I feel the joint drive limits should be different for this gripper as it’s 2F85 and not 2F140. I followed the Rigging complicated structure tutorial but that led to a velocity control rather than position one which I could readily use with omnigraph.

In IsaacLab as well this would help in doing AssetCfg as people have issues using robot assembler via code. Thanks in advance.

1 Like

Hi,
Did you happen to find solution so far?

I also have a 6DoF URDF (loaded in IsaacSim) and looking for a gripper, is this even working for you?

Hi if you are asking if it’s working and tuned properly no, I’m having trouble tuning the gripper for position control to have stable simulation all the time along with the robot. However I can articulate it without physics if that’s what you are asking. But with physics the solver is struggling / I’m clueless about tuning for mimic joints. but I suspect this is only happening in Robotiq 2F85 gripper.

So, other than this model. Is there any other gripper model, functional with code availability too?

There is no gripper asset as such apart from this to my knowledge, you can bring in your own asset like Onrobot gripper along with the robot from Onshape and try configuring the stiffness/damping. URDF importer with other grippers could also be a possible workflow. In the examples, there’s only situations where the parallel jaw is already part of the robot prim like cobotta900 and franka.

2 Likes

Yeah, that’s a pity we don’t have a plug&play gripper to attach to a robot arm.. I am still struggling with the gripper to have a stable simulation. Like moving the robot arm only (and NOT controlling the gripper) makes the gripper super instable until it “explodes”.
And as suggested by Nvidia team, i did the above-mentioned changes but without success. :/

2 Likes

Hello, I am looking forward if you could find a solution, because I have already tried to export the builtin Robotiq_2F_85 gripper to URDF and it says that it cannot export closed kinematics, so I am willing to hear if there are news concerning the topic.

Hello, just wanted to chime in and see if this issue (involving the robot assembler tool for a UR arm and a gripper and/or physics simulation post assembly) was resolved to any extent?

I am experiencing similar problems to those described, specifically with a UR5 or UR5e arm with a Robotiq 2F 85 gripper. It seems like related issues have been raised before too, such as here and here.

I did not have time to test it, but Isaac Sim 5.0 features a new robot assembler tool. Maybe is it better for having a more stable simulation?

i tested the robot assembler in Isaac Sim 5.0 and is still not working as intended… crazy how such a necessary tool is still not working with the official assets.

Thank you for testing this with Isaac Sim 5.0 developer preview and reporting back. We are sorry to hear the issue persists.

To help our team investigate this further, could you confirm if you were following the workflow described in the latest Robot Assembler documentation?

If you have been following that procedure, would it be possible for you to share a short video clip of the issue you are encountering in Isaac Sim 5.0? This would be very valuable for our engineering team to see the exact behavior in the new version.

We appreciate your continued assistance.

Please also check Tutorial 6: Setup a Manipulator — Isaac Sim Documentation.

This issue occurs even when using the short gripper attachment available in the asset list. I encountered the problem while trying to attach it to the UR5e.

I’m currently following the importing a manipulator guide to set up a basic pick-and-place task. While I was able to successfully replicate the tutorial with the cobotta_900 robot, I’m now trying to apply the same process to a new manipulator — specifically the UR5e — which requires attaching a different gripper.

Unfortunately, the Robot Assembler fails at this step. I’ve attached a screenshot below showing how it breaks. Any guidance would be appreciated.