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
Open a new stage.
Add a UR10e universal robot from the official assets browser (Robots/UniversalRobots/ur10e/ur10e.usd).
Add a 2F140 Robotiq gripper from the official assets browser (Robots/Robotiq/2F-140/Robotiq_2F_140_physics_edit.usd).
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
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.
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)