Purpose
This document provides a line-by-line reference of all changes required to convert the Concert robot URDF from Gazebo format to Isaac Sim 5.1.0 format. Use this to update the Python URDF generator script.
Summary of Required Changes
| Issue Type |
Occurrences |
Lines Affected |
| Floating Joint |
1 |
28-31 |
| World Link |
1 |
27 |
| Gazebo Blocks |
3 |
39-59, 315-318, 320-369 |
| Empty Links |
43 |
See table below |
| Mesh Hyphens |
24 |
See table below |
Issue 1: floating Joint Type
Error in Isaac Sim
RuntimeError: Used null prim
Coding Error: Path must be an absolute path: <>
Location in Original URDF
File: concert_robot_original.urdf
Lines: 28-31
28: <joint name="reference" type="floating">
29: <parent link="world"/>
30: <child link="base_link"/>
31: </joint>
Required Change
DELETE these lines entirely. Isaac Sim doesn't support floating joints. The base_link becomes the root instead.
Python Generator Fix
# BEFORE (Gazebo)
def create_world_joint():
return '''
<link name="world"/>
<joint name="reference" type="floating">
<parent link="world"/>
<child link="base_link"/>
</joint>
'''
# AFTER (Isaac Sim)
def create_world_joint():
# Don't create world link or floating joint for Isaac Sim
return '' # Empty - base_link is root
Issue 2: world Link
Location in Original URDF
Line: 27
Required Change
DELETE this line. Isaac Sim doesn't need a world link.
Python Generator Fix
# BEFORE (Gazebo)
urdf_content += '<link name="world"/>\n'
# AFTER (Isaac Sim)
# Remove this line entirely
Issue 3: Gazebo Blocks
Error in Isaac Sim
Isaac Sim ignores <gazebo> elements but they can cause XML parsing issues.
Locations in Original URDF
Block 1: Lines 39-59 (Gazebo plugins)
39: <gazebo>
40: <plugin filename="libxbot2_gz_joint_server.so" name="xbot2_gz_joint_server">
...
59: </gazebo>
Block 2: Lines 315-318 (Gazebo material)
315: <gazebo>
316: <material>Gazebo/DarkGrey</material>
317: <self_collide>0</self_collide>
318: </gazebo>
Block 3: Lines 320-369 (IMU sensor)
320: <gazebo reference="imu_link">
321: <gravity>true</gravity>
322: <sensor name="imu_sensor" type="imu">
...
369: </gazebo>
Required Change
DELETE all <gazebo> blocks (lines 39-59, 315-318, 320-369).
Python Generator Fix
# BEFORE (Gazebo)
def add_gazebo_plugins():
return '''
<gazebo>
<plugin filename="libxbot2_gz_joint_server.so" ...>
</plugin>
</gazebo>
'''
# AFTER (Isaac Sim)
def add_gazebo_plugins():
return '' # Don't add any gazebo blocks for Isaac Sim
Issue 4: Empty Links (Self-Closing Tags)
Error in Isaac Sim
RuntimeError: Used null prim
Cause
Isaac Sim requires ALL links to have at least <visual> OR <inertial> elements. Empty links (self-closing <link name="..."/>) cause null prim errors.
All 43 Occurrences in Original URDF
| Line |
Link Name |
Purpose |
| 27 |
world |
World reference (DELETE) |
| 91 |
base_link_projected |
Ground projection |
| 121 |
D435i_camera_front_link |
Camera frame |
| 128 |
D435i_camera_front_depth_frame |
Depth sensor |
| 135 |
D435i_camera_front_depth_optical_frame |
Depth optical |
| 142 |
D435i_camera_front_color_frame |
Color sensor |
| 149 |
D435i_camera_front_color_optical_frame |
Color optical |
| 156 |
D435i_camera_front_left_ir_frame |
Left IR |
| 163 |
D435i_camera_front_left_ir_optical_frame |
Left IR optical |
| 170 |
D435i_camera_front_right_ir_frame |
Right IR |
| 177 |
D435i_camera_front_right_ir_optical_frame |
Right IR optical |
| 212 |
D435i_camera_back_link |
Back camera |
| 219 |
D435i_camera_back_depth_frame |
Back depth |
| 226 |
D435i_camera_back_depth_optical_frame |
Back depth optical |
| 233 |
D435i_camera_back_color_frame |
Back color |
| 240 |
D435i_camera_back_color_optical_frame |
Back color optical |
| 247 |
D435i_camera_back_left_ir_frame |
Back left IR |
| 254 |
D435i_camera_back_left_ir_optical_frame |
Back left IR optical |
| 261 |
D435i_camera_back_right_ir_frame |
Back right IR |
| 268 |
D435i_camera_back_right_ir_optical_frame |
Back right IR optical |
| 279 |
T265_camera_left_pose_frame |
T265 left |
| 285 |
T265_camera_right_pose_frame |
T265 right |
| 375 |
VLP16_lidar_front_base_link |
Front LiDAR |
| 381 |
VLP16_lidar_back_base_link |
Back LiDAR |
| 387 |
ultrasound_fl_sag_base_link |
Ultrasound FL sagittal base |
| 393 |
ultrasound_fl_sag |
Ultrasound FL sagittal |
| 399 |
ultrasound_fr_sag_base_link |
Ultrasound FR sagittal base |
| 405 |
ultrasound_fr_sag |
Ultrasound FR sagittal |
| 411 |
ultrasound_rl_sag_base_link |
Ultrasound RL sagittal base |
| 417 |
ultrasound_rl_sag |
Ultrasound RL sagittal |
| 423 |
ultrasound_rr_sag_base_link |
Ultrasound RR sagittal base |
| 429 |
ultrasound_rr_sag |
Ultrasound RR sagittal |
| 435 |
ultrasound_fl_lat_base_link |
Ultrasound FL lateral base |
| 441 |
ultrasound_fl_lat |
Ultrasound FL lateral |
| 447 |
ultrasound_rl_lat_base_link |
Ultrasound RL lateral base |
| 453 |
ultrasound_rl_lat |
Ultrasound RL lateral |
| 459 |
ultrasound_fr_lat_base_link |
Ultrasound FR lateral base |
| 465 |
ultrasound_fr_lat |
Ultrasound FR lateral |
| 471 |
ultrasound_rr_lat_base_link |
Ultrasound RR lateral base |
| 477 |
ultrasound_rr_lat |
Ultrasound RR lateral |
| 485 |
dalsa_camera_right |
Dalsa camera right |
| 492 |
dalsa_camera_left |
Dalsa camera left |
| 1291 |
ee_E |
End effector |
Required Change
BEFORE (Line 121 example):
121: <link name="D435i_camera_front_link"/>
AFTER:
<link name="D435i_camera_front_link">
<visual>
<geometry>
<sphere radius="0.01"/>
</geometry>
</visual>
<inertial>
<mass value="0.001"/>
<inertia ixx="1e-9" ixy="0" ixz="0" iyy="1e-9" iyz="0" izz="1e-9"/>
</inertial>
</link>
Python Generator Fix
# BEFORE (Gazebo - allowed empty links)
def create_sensor_frame(name):
return f'<link name="{name}"/>'
# AFTER (Isaac Sim - must have content)
def create_sensor_frame(name):
return f'''<link name="{name}">
<visual>
<geometry>
<sphere radius="0.01"/>
</geometry>
</visual>
<inertial>
<mass value="0.001"/>
<inertia ixx="1e-9" ixy="0" ixz="0" iyy="1e-9" iyz="0" izz="1e-9"/>
</inertial>
</link>'''
Issue 5: Hyphens in Mesh Filenames
Error in Isaac Sim
Ill-formed SdfPath </visuals/J1_E_stator/concert_yaw-base>
Cause
USD (Universal Scene Description) paths cannot contain hyphens (-). Mesh filenames with hyphens get converted to prim paths and cause parsing errors.
All 24 Occurrences in Original URDF
| Line |
Original Filename |
Required Filename |
| 887 |
concert_yaw-base.stl |
concert_yaw_base.stl |
| 896 |
simple/concert_yaw-base.stl |
simple/concert_yaw_base.stl |
| 916 |
concert_yaw-link.stl |
concert_yaw_link.stl |
| 925 |
simple/concert_yaw-link.stl |
simple/concert_yaw_link.stl |
| 944 |
concert_elbow-base.stl |
concert_elbow_base.stl |
| 953 |
simple/concert_elbow-base.stl |
simple/concert_elbow_base.stl |
| 973 |
concert_elbow-link.stl |
concert_elbow_link.stl |
| 982 |
simple/concert_elbow-link.stl |
simple/concert_elbow_link.stl |
| 1001 |
concert_yaw-base.stl |
concert_yaw_base.stl |
| 1010 |
simple/concert_yaw-base.stl |
simple/concert_yaw_base.stl |
| 1030 |
concert_yaw-link.stl |
concert_yaw_link.stl |
| 1039 |
simple/concert_yaw-link.stl |
simple/concert_yaw_link.stl |
| 1084 |
concert_elbow-base.stl |
concert_elbow_base.stl |
| 1093 |
simple/concert_elbow-base.stl |
simple/concert_elbow_base.stl |
| 1113 |
concert_elbow-link.stl |
concert_elbow_link.stl |
| 1122 |
simple/concert_elbow-link.stl |
simple/concert_elbow_link.stl |
| 1141 |
concert_yaw-base.stl |
concert_yaw_base.stl |
| 1150 |
simple/concert_yaw-base.stl |
simple/concert_yaw_base.stl |
| 1170 |
concert_yaw-link.stl |
concert_yaw_link.stl |
| 1179 |
simple/concert_yaw-link.stl |
simple/concert_yaw_link.stl |
| 1224 |
concert_elbow-base.stl |
concert_elbow_base.stl |
| 1233 |
simple/concert_elbow-base.stl |
simple/concert_elbow_base.stl |
| 1253 |
concert_elbow-link.stl |
concert_elbow_link.stl |
| 1262 |
simple/concert_elbow-link.stl |
simple/concert_elbow_link.stl |
Required Changes
- Rename the STL files (4 unique files + 4 in simple/):
cd models/modular/meshes/concert/
mv concert_yaw-base.stl concert_yaw_base.stl
mv concert_yaw-link.stl concert_yaw_link.stl
mv concert_elbow-base.stl concert_elbow_base.stl
mv concert_elbow-link.stl concert_elbow_link.stl
cd simple/
mv concert_yaw-base.stl concert_yaw_base.stl
mv concert_yaw-link.stl concert_yaw_link.stl
mv concert_elbow-base.stl concert_elbow_base.stl
mv concert_elbow-link.stl concert_elbow_link.stl
- Update URDF references:
sed -i 's/-base\.stl/_base.stl/g; s/-link\.stl/_link.stl/g' concert_robot.urdf
Python Generator Fix
# BEFORE (Gazebo - hyphens allowed)
def get_mesh_filename(joint_type):
return f"concert_{joint_type}-base.stl"
# AFTER (Isaac Sim - use underscores)
def get_mesh_filename(joint_type):
return f"concert_{joint_type}_base.stl"
Issue 6: base_link Without Visual
Error in Isaac Sim
RuntimeError: Used null prim
Location in Original URDF
Lines: 33-38
33: <link name="base_link">
34: <inertial>
35: <mass value="0.001"/>
36: <inertia ixx="1.0e-06" ixy="0.0" ixz="0.0" iyy="1.0e-06" iyz="0.0" izz="1.0e-06"/>
37: </inertial>
38: </link>
Required Change
Add a visual element (even a tiny sphere):
<link name="base_link">
<visual>
<geometry>
<sphere radius="0.01"/>
</geometry>
</visual>
<inertial>
<mass value="0.001"/>
<inertia ixx="1.0e-06" ixy="0.0" ixz="0.0" iyy="1.0e-06" iyz="0.0" izz="1.0e-06"/>
</inertial>
</link>
Purpose
This document provides a line-by-line reference of all changes required to convert the Concert robot URDF from Gazebo format to Isaac Sim 5.1.0 format. Use this to update the Python URDF generator script.
Summary of Required Changes
Issue 1:
floatingJoint TypeError in Isaac Sim
Location in Original URDF
File:
concert_robot_original.urdfLines: 28-31
Required Change
DELETE these lines entirely. Isaac Sim doesn't support floating joints. The base_link becomes the root instead.
Python Generator Fix
Issue 2:
worldLinkLocation in Original URDF
Line: 27
Required Change
DELETE this line. Isaac Sim doesn't need a world link.
Python Generator Fix
Issue 3: Gazebo Blocks
Error in Isaac Sim
Isaac Sim ignores
<gazebo>elements but they can cause XML parsing issues.Locations in Original URDF
Block 1: Lines 39-59 (Gazebo plugins)
Block 2: Lines 315-318 (Gazebo material)
Block 3: Lines 320-369 (IMU sensor)
Required Change
DELETE all
<gazebo>blocks (lines 39-59, 315-318, 320-369).Python Generator Fix
Issue 4: Empty Links (Self-Closing Tags)
Error in Isaac Sim
Cause
Isaac Sim requires ALL links to have at least
<visual>OR<inertial>elements. Empty links (self-closing<link name="..."/>) cause null prim errors.All 43 Occurrences in Original URDF
worldbase_link_projectedD435i_camera_front_linkD435i_camera_front_depth_frameD435i_camera_front_depth_optical_frameD435i_camera_front_color_frameD435i_camera_front_color_optical_frameD435i_camera_front_left_ir_frameD435i_camera_front_left_ir_optical_frameD435i_camera_front_right_ir_frameD435i_camera_front_right_ir_optical_frameD435i_camera_back_linkD435i_camera_back_depth_frameD435i_camera_back_depth_optical_frameD435i_camera_back_color_frameD435i_camera_back_color_optical_frameD435i_camera_back_left_ir_frameD435i_camera_back_left_ir_optical_frameD435i_camera_back_right_ir_frameD435i_camera_back_right_ir_optical_frameT265_camera_left_pose_frameT265_camera_right_pose_frameVLP16_lidar_front_base_linkVLP16_lidar_back_base_linkultrasound_fl_sag_base_linkultrasound_fl_sagultrasound_fr_sag_base_linkultrasound_fr_sagultrasound_rl_sag_base_linkultrasound_rl_sagultrasound_rr_sag_base_linkultrasound_rr_sagultrasound_fl_lat_base_linkultrasound_fl_latultrasound_rl_lat_base_linkultrasound_rl_latultrasound_fr_lat_base_linkultrasound_fr_latultrasound_rr_lat_base_linkultrasound_rr_latdalsa_camera_rightdalsa_camera_leftee_ERequired Change
BEFORE (Line 121 example):
AFTER:
Python Generator Fix
Issue 5: Hyphens in Mesh Filenames
Error in Isaac Sim
Cause
USD (Universal Scene Description) paths cannot contain hyphens (
-). Mesh filenames with hyphens get converted to prim paths and cause parsing errors.All 24 Occurrences in Original URDF
concert_yaw-base.stlconcert_yaw_base.stlsimple/concert_yaw-base.stlsimple/concert_yaw_base.stlconcert_yaw-link.stlconcert_yaw_link.stlsimple/concert_yaw-link.stlsimple/concert_yaw_link.stlconcert_elbow-base.stlconcert_elbow_base.stlsimple/concert_elbow-base.stlsimple/concert_elbow_base.stlconcert_elbow-link.stlconcert_elbow_link.stlsimple/concert_elbow-link.stlsimple/concert_elbow_link.stlconcert_yaw-base.stlconcert_yaw_base.stlsimple/concert_yaw-base.stlsimple/concert_yaw_base.stlconcert_yaw-link.stlconcert_yaw_link.stlsimple/concert_yaw-link.stlsimple/concert_yaw_link.stlconcert_elbow-base.stlconcert_elbow_base.stlsimple/concert_elbow-base.stlsimple/concert_elbow_base.stlconcert_elbow-link.stlconcert_elbow_link.stlsimple/concert_elbow-link.stlsimple/concert_elbow_link.stlconcert_yaw-base.stlconcert_yaw_base.stlsimple/concert_yaw-base.stlsimple/concert_yaw_base.stlconcert_yaw-link.stlconcert_yaw_link.stlsimple/concert_yaw-link.stlsimple/concert_yaw_link.stlconcert_elbow-base.stlconcert_elbow_base.stlsimple/concert_elbow-base.stlsimple/concert_elbow_base.stlconcert_elbow-link.stlconcert_elbow_link.stlsimple/concert_elbow-link.stlsimple/concert_elbow_link.stlRequired Changes
sed -i 's/-base\.stl/_base.stl/g; s/-link\.stl/_link.stl/g' concert_robot.urdfPython Generator Fix
Issue 6: base_link Without Visual
Error in Isaac Sim
Location in Original URDF
Lines: 33-38
Required Change
Add a visual element (even a tiny sphere):