How to simulate closed chain gripper

Hi,

I’m currently working on simulating a gripper that has closed chain kinematics. I’ve been trying to convert the gripper’s URDF file to USD format using the URDF Importer in both IsaacSim2023.1.1 and IsaacSim2022.1.1.

I have two questions.

  1. How to convert URDF that has closed chain to USD file.
  2. How to simulate gripper that has closed chain.

First quastion: How to convert URDF to USD.
Although I am able to convert the gripper URDF to USD, I encounter a warning during the simulation process when I press the play button to start the simulation.

2024-01-25 07:40:01 [144,478ms] [Warning] [omni.importer.urdf] Link world has no colliders, and no inertia was imported; assigning a small isotropic inertia matrix
2024-01-25 07:40:01 [144,518ms] [Warning] [omni.usd] Coding Error: in _SetValueImpl at line 6189 of /buildAgent/work/ac88d7d902b57417/USD/pxr/usd/usd/stage.cpp -- Type mismatch for </xarm7/xarm_gripper_base_link/left_drive_joint.physxTendon:left_finger_joint:damping>: expected 'float', got 'double'

2024-01-25 07:40:01 [144,518ms] [Warning] [omni.usd] Coding Error: in _SetValueImpl at line 6189 of /buildAgent/work/ac88d7d902b57417/USD/pxr/usd/usd/stage.cpp -- Type mismatch for </xarm7/xarm_gripper_base_link/left_drive_joint.physxTendon:left_inner_knuckle_joint:damping>: expected 'float', got 'double'

2024-01-25 07:40:01 [144,531ms] [Warning] [omni.usd] Coding Error: in _SetValueImpl at line 6189 of /buildAgent/work/ac88d7d902b57417/USD/pxr/usd/usd/stage.cpp -- Type mismatch for </xarm7/xarm_gripper_base_link/right_drive_joint.physxTendon:right_finger_joint:damping>: expected 'float', got 'double'

2024-01-25 07:40:01 [144,532ms] [Warning] [omni.usd] Coding Error: in _SetValueImpl at line 6189 of /buildAgent/work/ac88d7d902b57417/USD/pxr/usd/usd/stage.cpp -- Type mismatch for </xarm7/xarm_gripper_base_link/right_drive_joint.physxTendon:right_inner_knuckle_joint:damping>: expected 'float', got 'double'

2024-01-25 07:40:02 [144,648ms] [Warning] [omni.hydra.scene_delegate.plugin] Calling getBypassRenderSkelMeshProcessing for prim /World/xarm7/right_finger/visuals.proto_mesh_0_id0 that has not been populated
2024-01-25 07:40:25 [168,486ms] [Warning] [omni.physx.plugin] Could not parse tendon axis at /World/xarm7/xarm_gripper_base_link/left_inner_knuckle_joint due to a topology issue: Refer to the topology constraints in the USD schema doc for PhysxTendonAxisAPI.
2024-01-25 07:40:25 [168,486ms] [Warning] [omni.physx.plugin] Could not parse tendon axis at /World/xarm7/xarm_gripper_base_link/right_inner_knuckle_joint due to a topology issue: Refer to the topology constraints in the USD schema doc for PhysxTendonAxisAPI.
2024-01-25 07:40:25 [168,486ms] [Warning] [omni.physx.plugin] The fixed tendon axis at /World/xarm7/xarm_gripper_base_link/left_inner_knuckle_joint was not parsed due to a topology issue: Refer to the topology constraints in the USD schema doc for PhysxTendonAxisAPI.
2024-01-25 07:40:25 [168,486ms] [Warning] [omni.physx.plugin] The fixed tendon axis at /World/xarm7/xarm_gripper_base_link/right_inner_knuckle_joint was not parsed due to a topology issue: Refer to the topology constraints in the USD schema doc for PhysxTendonAxisAPI.
2024-01-25 07:40:25 [168,489ms] [Warning] [omni.physx.plugin] Detected an articulation at /World/xarm7/world with more than 4 velocity iterations being added to a TGS scene.The related behavior changed recently, please consult the changelog. This warning will only print once.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/world.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/link_base.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/link1.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/link2.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/link3.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/link4.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/link5.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/link6.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/link7.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/xarm_gripper_base_link.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/left_outer_knuckle.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/left_inner_knuckle.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/right_outer_knuckle.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/right_inner_knuckle.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/left_finger.
2024-01-25 07:40:25 [168,508ms] [Warning] [omni.physx.plugin] Invalid PhysX transform detected for /World/xarm7/right_finger.

Specifically, I encounter the following error when attempting to move the robot’s joints using the Articulation Inspector. Subsequently, the simulator crashes.

2024-01-25 07:48:12 [634,792ms] [Error] [omni.ui.python] RecursionError: maximum recursion depth exceeded
2024-01-25 07:48:12 [634,792ms] [Error] [omni.ui.python] RecursionError: maximum recursion depth exceeded

At:
  /isaac-sim/exts/omni.isaac.core/omni/isaac/core/utils/numpy/tensor.py(64): expand_dims
  /isaac-sim/exts/omni.isaac.core/omni/isaac/core/articulations/articulation.py(459): set_joint_velocities
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(468): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(462): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(945): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(460): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(460): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(460): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(460): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(460): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(460): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(460): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(460): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(127): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/widgets.py(78): set_item_value
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(460): _on_dof_property_changed
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(494): <lambda>
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(941): _update_dof_ui
  /isaac-sim/exts/omni.isaac.articulation_inspector/omni/isaac/articulation_inspector/extension.py(408): _on_controller_value_changed

This is the original URDF file that I want to convert to USD.
xarm7_urdf.zip (6.0 MB)

Second quastion: How to simulate closed chain gripper.
I discovered a gripper model with closed chain kinematics among the default assets in IsaacSim. However, when simulating this gripper and moving the outer_knuckle using the Articulation Inspector, I encounter an issue: the chain breaks, and only the outer_knuckle moves, as illustrated in the figure below. How can I correctly simulate this gripper while preserving the integrity of its closed chain kinematics?

I would appreciate any suggestions on how to resolve the error I’m experiencing during this conversion.

Thank you in advance for your help!

It’s been resolved!

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.