ROS Tutorials (Linux Only)

URDF Import: Turtlebot

Learning Objectives
Import a Turtlebot3 into Isaac Sim using the URDF importer
Getting Started
Prerequisites
Completed ROS & ROS2 installation so that ROS is available
ROS extension is enabled
Necessary environment variables are set
Importing TurtleBot URDF
-Download and build the Turtlebot3 description package if you haven’t done so already
Option1: Can be built inside the ROS workspace
Option2: Can also use your own ROS workspace
If choosing to use your own workspace, make sure to source that workspace before launching Omniverse Isaac Sim
(So that the path to it is part of ROS_PACKAGE_PATH)
=>Already sourced in .bashrc
(1)Clone the turtlebot3 github repository
git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3.git turtlebot3
(2)Navigate to the urdf folder turtlebot3/turtlebot3_description/urdf/
code
Either the .urdf file, or the .xacro file for turtlebot3_burger(Depending on the distro version) can be found
(3)Convert .xacro file to .urdf file
rosrun xacro xacro -o .urdf .urdf.xacro
(Make sure the path to those ROS packages are also inside the ROS_PACKAGE_PATH before launching the simulator)
Purpose of the Tutorial
:Only need to build the turtlebot3_description package (Feel free to bypass other packages in the repository)
Process
(1)Import Environment
(1)-1 Use an Isaac environment for this tutorial
picture
Open the environment by going to the Content tab below the viewport
picture
Find Isaac/Environments/Simple_Room/simple_room.usd
(1)-2 Import the robot into any environment of your choosing (Not wanting to use the provided environment)
picture
Navigate to Create -> Physics
Add GroundPlane and a PhysicsScene to your environment
picture
Navigate to Create -> Light
Add some lighting by playing with the various types of lighting
(2)Add simple_room.usd
picture
Drag the simple_room.usd onto a new stage
Place it at the origin in the Transform Property (Zero out all the Translate components)
(3)Open the URDF importer
picture
Isaac Utils > Workflows > URDF Importer
(4)Configure Option
picture
Uncheck clear stage: Preserve the existing environment
picture
In the prompt window, inside Import Option section
uncheck clear stage to preserve the existing environment
picture
uncheck Fix Base Link since this is a mobile robot
picture
Change Joint Drive Type to Velocity: wheels can be properly driven later
(Need to zoom in a bit to see the table inside the room)
(5)Locate and import URDF file
picture
Inside Import section
Locate the URDF file you wish to import in the Input File
(Import button will only enable after you’ve selected the file)
(6)Save asset
picture
Once the asset is imported into Omniverse Kit
Copy of the .usd version of the asset will be automatically saved
Specify the folder you wish to save the asset in Output Directory if it’s different than the folder that the .urdf file is located in
Folder name matching the .urdf file will be created in the specified directory, and the .usd file will be inside the newly created folder
(7)Caution on import
Make sure to unselect everything on the stage (Click on an empty space inside the Stage tab, or select /World on the tree)
Why?
Otherwise you might be importing the Turtlebot as a child of a random object on the tree
(8)Import
picture
Click Import
(9)Play with Turtlebot
picture
When first imported, Turtlebot will be on the table
picture
Using the gizmo place it just above the floor of the room
(10)Play
Press Play
Should see the Turtlebot fall onto the floor
**Tune the Robot**
URDF importer:
Imports material, physical, and joint properties automatically
(Whenever it is available and have matching categories in Omniverse Isaac Sim)
In cases there are no available or matching categories, or if the units are different between the two systems
Problem:
What gets automatically filled in may not be accurate and changes the robot’s behavior
Steps for tuning some of the common parameters:
Frictional Properties
If robot’s wheels are slipping
Try changing the friction coefficients of the wheels and potentially the ground as well
Follow steps in 3.4.2 [Add Simple Objects]
(https://docs.omniverse.nvidia.com/isaacsim/latest/gui_tutorials/tutorial_intro_simple_objects.html#isaac-sim-app-tutorial-intro-simple-objects)
Physical Properties
-If no explicit mass or inertial properties are given:
The physics engine will estimate them from the geometry mesh
-Verify this by finding “Physics > Rigid Body” under its property tab:
Find the prim that contains the rigid body for the given link to update the mass and inertial properties
Option1: If already having a “Mass” category under its Physics property tab
Modify them accordingly
Option2: If a “Mass” category doesn't exist already
Add it by clicking on the +Add button on top of the Propery tab
Select “Physics > Mass”
Joint Properties
Robot is oscillating at the joint or moving too slow
Take a look at the stiffness and damping parameters for the joints
High stiffness:
Makes the joints snap faster and harder to the desire target
Higher damping:
Smoothes but also slows down the joint’s movement to target
Pure position drives
Set relatively high stiffness and low damping
Velocity drives
Stiffness must be set to zero with a non-zero damping
Two tools are provided to help with inspect the joints and tune the stiffness and damping parameters
Gain Tuner and Articulation Inspector
Perspective tutorials for details on how to use them
**Summary**
Tutorial covered the following topics:
URDF import
Tuning the robot parameters

Reference
https://docs.omniverse.nvidia.com/isaacsim/latest/ros_tutorials/tutorial_ros_turtlebot.html