Tutorial 6: Setup a Manipulator#

Learning Objectives#

This is the first manipulator tutorial in a series of four tutorials. This tutorial shows how to import the UR10e robot from Universal Robots and the 2F-140 gripper from Robotiq into NVIDIA Isaac Sim from URDF files and connect them together under one articulation.

30 Minutes Tutorial

Prerequisites#

  • If you are new to NVIDIA Isaac Sim, please complete the Wheeled Robot Set Up Tutorials tutorial prior to beginning this tutorial.

  • Review the ROS 2 installations ROS 2 Installation prior to beginning this tutorial.

  • Review the URDF importer URDF Importer Extension tutorial.

  • In a ROS sourced terminal, install xacro using the following command (Linux only):

    sudo apt install ros-$ROS_DISTRO-xacro
    

Note

The ROS URDF import steps are tested on linux only, it may not work on Windows. If you are using Windows, you can skip the ROS import steps and use the USD files provided in the content browser. The USD files are available in the content browser at Isaac Sim/Samples/Rigging/Manipulator/import_manipulator/ur10e/ur/ur.usd and Isaac Sim/Samples/Rigging/Manipulator/import_manipulator/robotiq_2f_140/robotiq_2f_140.usd.

Build and Install the UR description package (linux only)#

Isaac Sim 5.0 requires Python 3.11, which is not natively supported by the ROS 2 UR description package, so we need to build the package from source.

Clone the UR description package#

  1. Clone the UR description package from the Universal Robots ROS 2 Description repository.

    git clone https://github.com/UniversalRobots/Universal_Robots_ROS2_Description.git
    
  2. Switch to the branch that matches your ROS distribution.

    git checkout humble
    
    git checkout jazzy
    
  3. Copy the repository into your Isaac Sim ROS Workspace src folder.

Build the UR description package using Python 3.11#

  1. Go to the Isaac Sim ROS Workspace, and run the following command to build the UR description package using Python 3.11.

    ./build_ros.sh
    
  2. Source the Python 3.11 ROS environment and launch Isaac Sim.

    source build_ws/<ROS distro>/<ROS distro>_ws/install/local_setup.bash
    source build_ws/<ROS distro>/isaac_sim_ros_ws/install/local_setup.bash
    ./path/to/isaac-sim.sh
    

Note

Replace <ROS distro> with your ROS distribution (for example, humble or jazzy).

Build the UR description package using System ROS#

  1. Source your system ROS environment.

  2. Navigate to your Isaac Sim ROS Workspace and run the following commands to build it:

    rosdep install -i --from-path src --rosdistro $ROS_DISTRO -y
    colcon build
    source install/setup.sh
    

Note

Refer to Setting Up Workspaces for more information on setting up your ROS 2 workspace.

Import the UR10e Robot (linux only)#

Enable the ROS 2 Robot Description URDF Importer Extension#

  1. Go to Window > Extensions.

  2. Type URDF in the search box, and find the ROS 2 Robot Description URDF Importer Extension.

  3. If you can’t find it, remove the @feature filter from the search box.

  4. If you still can’t find it, make sure Isaac Sim was launched from the same terminal where ROS was sourced.

  5. Enable the extension by clicking the toggle button labeled ENABLE.

  6. Check the box for AUTOLOAD, just to the right of ENABLE.

Launch the URDF Publisher Topic#

  1. In the system ROS sourced terminal that you created earlier, launch the UR10e description by running:

    ros2 launch ur_description view_ur.launch.py ur_type:=ur10e
    
  2. Verify that you see a window similar to the image below:

    UR10e Description
  3. Set up one more terminal for rqt_graph, to see ROS nodes and topics being published:

    rqt_graph
    
  4. Verify that you see a window similar to the image below:

    UR10e RQT Graph

Hint

If the nodes are not showing up in rqt_graph, press the refresh button next to the drop down menu.

Import the UR10e Robot into Isaac Sim#

  1. Go to Isaac Sim.

  2. Navigate to File > Import from the ROS 2 URDF Node.

    • In the Node field, type robot_state_publisher, click Refresh.

    • In the Model field, select the desired output (for example, ~/Desktop).

    • Select Natural Frequency for joint configuration.

    • Select all the joints listed below, then set the Natural Frequency to 300 to ensure the joints are sufficiently stiff.

    UR10e Import
  3. Click Import.

Note

The imported robotics arm asset is available in the content browser at Isaac Sim/Samples/Rigging/Manipulator/import_manipulator/ur10e/ur/ur.usd

Import the Robotiq 2F-140 Gripper (linux only)#

Use the URDF file provided by ros-industrial-attic. Even though this package is built for ROS1 and is deprecated, we can still adopt the URDF files and import the gripper for NVIDIA Isaac Sim.

Convert XACRO to URDF#

  1. Download the Repository from here.

    git clone https://github.com/ros-industrial-attic/robotiq.git
    
  2. Navigate to the robotiq/robotiq_2f_140_gripper_visualization/urdf folder, open each xacro file.

    • Replace $(find robotiq_2f_140_gripper_visualization) with relative path to the target file (for example, robotiq_arg2f_transimission.xacro) from the current xacro file.

      For example, in robotiq_arg2f_140_model.xacro, replace:

      <xacro:include filename="$(find robotiq_2f_140_gripper_visualization)/urdf/robotiq_arg2f_transmission.xacro" />
      

      With:

      <xacro:include filename="./robotiq_arg2f_transmission.xacro" />
      
    • Replace package:// with relative path to the target file (for example, robotiq_arg2f_${stroke}_inner_finger.stl) from the current xacro file.

      For example, in robotiq_arg2f_140_model.xacro, replace:

      <mesh filename="package://robotiq_2f_140_gripper_visualization/meshes/visual/robotiq_arg2f_${stroke}_inner_finger.stl" />
      

      With:

      <mesh filename="../meshes/visual/robotiq_arg2f_${stroke}_inner_finger.stl" />
      
  3. Convert the xacro files to URDF format:

    xacro robotiq_arg2f_140_model.xacro > robotiq_2f_140.urdf
    

Note

  • Install xacro using the following command:

sudo apt install ros-$ROS_DISTRO-xacro
  • The robotiq_2f_140.urdf file is available at Isaac Sim/Samples/Rigging/Manipulator/import_manipulator/robotiq_2f_140_urdf/urdf/robotiq_2f_140.urdf.

Import Robotiq 2F-140 Gripper into Isaac Sim#

  1. Go to Isaac Sim.

  2. Let’s create a new stage by going to File > New.

  3. Navigate to File > Import.

  4. Select the robotiq_2f_140.urdf file that you imported from the previous step.

  5. In the import settings:

    • For USD Output, navigate to your desktop using file browser and select Desktop this will be the output location of the gripper USD.

    • For finger_joint, set the Natural Frequency to 300.

    • For the other joints of target Mimic, set the Natural Frequency to 2500.

  6. Click Import to complete the process.

    Gripper Import

Note

The robotiq_2f_140.usd file is available in the content browser at Isaac Sim/Samples/Rigging/Manipulator/import_manipulator/robotiq_2f_140/robotiq_2f_140.usd.

Expected Parameters for Finger and Knuckle Joints#

Joint Name

Lower Limit

Upper Limit

Gearing

Stiffness

Damping

Max Force

Finger Joint

0

40.107

N/A

0.26055

0.0001

1000

Left inner Finger

-8.021

48.128

-1

N/A

N/A

N/A

Left Inner Knuckle

-48.128

8.021

1

N/A

N/A

N/A

Right inner Knuckle

-48.128

8.021

1

N/A

N/A

N/A

Right outer knuckle

-48.128

8.021

1

N/A

N/A

N/A

Right inner Finger

-8.021

48.128

-1

N/A

N/A

N/A

Expected Parameters for Mimic Joints#

  • Reference Joint: /robotiq_arg2f_140_model/joints/finger_joint

  • Reference Joint Axis: rotX

  • Natural Frequency: 2500

  • Damping Ratio: 0.005

Connect the UR10e Robot with the Robotiq 2F-140 Gripper#

Much like a real robot can have its tools changed for different tasks, simulated robots benefit from the same capability. In this section, we will outline two methods to connect the UR10e robot with the Robotiq 2F-140 gripper:

  • Option 1, shows how to connect the gripper to the robot directly using a fixed joint with a shared articulation.

  • Option 2, shows how to use the robot assembler and variant to connect the end effectors to the robot. Depending on the variant selected, the gripper will be added as a payload, which allows us to load or unload the different end effectors depending on which variant is enabled.

Option 1: Connect the UR10e with the Robotiq 2F-140 Gripper using the GUI#

  1. Open the UR10e USD file created from the last activity (ur10.usd).

  2. Drag and drop the robotiq_2f_140.usd file, we created earlier, into the stage.

  3. Rename the robotiq_2f_140.usd prim to ee_link.

  4. Set the ee_link xform to the position and orientation of wrist_3_link.

    Translate (1.18425, 0.2907, 0.06085)
    Orient (-90, 0, -90)
    
  5. Select ee_link/root_joint.

  6. Go to the Physics Articulation Root section in the Property Editor, remove the Articulation Root.

    We only want a single articulation for the robot.

  7. Go down to the Joints section in the Property Editor.

  8. Set Body0 to /ur/wrist_3_link, to joint the end effector to the robot.

    UR10e Manual Connection

Nest the UR10e robot schema into the 2F-140 gripper’s robot schema:

  1. Select the ur prim.

  2. Go down to the IsaacRobotAPI section in the Property Editor, and add /ur/ee_link to both the isaac:physics:robotjoints and isaac:physics:robotLinks fields, to make sure that the UR10e robot’s robot schema includes the 2F-140 gripper’s robot schema.

UR10e Manual Connection 2

Note

Your robot is now connected to the gripper, and you can test your robot in Tutorial 6: Setup a Manipulator.

Hint

The completed USD file is available in the content browser at Isaac Sim/Samples/Rigging/Manipulator/import_manipulator/ur10e/ur/ur_gripper_manual.usd.

Option 2: Connect the UR10e with the Robotiq 2F-140 Gripper using the Robot Assembler#

Alternatively, you can use the Robot Assembler to connect the UR10e with the Robotiq 2F-140 gripper. The robot assembler will add the gripper as a variant to a sublayer of the base robot, giving you greater flexibility to switch between different end effectors.

  1. Open the UR10e USD file created from the last activity (ur.usd).

  2. Drag and drop the robotiq_2f_140.usd file we created earlier into the stage.

  3. Rename the robotiq_2f_140 prim to ee_link.

  4. Open the robot assembler by going to Tools > Robotics > Asset Editor > Robot Assembler.

    • In Base Robot, set Select Base Robot to /ur, Attach Point to wrist_3_link.

    • In Attach Robot, set Select Attach Robot to /ur/ee_link, Attach Point to robotiq_arg2f_base_link.

    • Set Assembly Namespace to ee_link.

  5. Click Begin Assembling Process to start the process.

    UR10e Assembler Connection
  6. Adjust the attachment point orientation to make sure the end effector is attached to the gripper correctly. Rotate the gripper 90 degrees around the z-axis by clicking Z +90.

    UR10e Assembler Connection 2
  7. Click Assemble and Simulate to test the process.

  8. Click End Simulation And Finish to complete the process.

Run the Simulation#

  1. In the Stage panel, select the ur prim.

  2. In the Property Editor at the bottom right, find the Variants section.

  3. Beside ee_link, select None and the gripper will be removed from the robot.

  4. Beside ee_link, select robotiq_2f_140 and the gripper will be added to the robot.

  5. Save the asset by going to File > Save or press Ctrl+S.

UR10e Variant Editor

Note

The completed robotics arm asset is available in the content browser at Isaac Sim/Samples/Rigging/Manipulator/import_manipulator/ur10e/ur/ur_gripper.usd.

Summary#

In this tutorial, you took the UR10e robot from Universal Robots and the 2F-140 gripper from Robotiq and imported them into NVIDIA Isaac Sim from URDF files and connected them together under one articulation using the GUI and Robot Assembler.