Isaac Sim Version
[✔] 5.0.0
Operating System
[✔] Ubuntu 24.04
GPU Information
- Model: RTX-A4000
- Driver Version: 575.64.03
Topic Description
Unable to move custom vehicle in the simulation environment.
Detailed Description
I customized a single-steering-wheel vehicle in URDF format and converted it into USD format through Isaac Sim. Using a Python script, I assigned a velocity to the steering wheel, but I found that when the wheel touches the ground, it doesn’t rotate and the vehicle cannot move. Only when I increase the vehicle’s z-coordinate to lift it off the ground does the wheel start rotating. Other joint like fork can be controlled.
Steps to Reproduce
ware_house = stage_utils.add_reference_to_stage("warehouse.usd", "/World/warehouse")
robot_prim = stage_utils.add_reference_to_stage("Robot.usd", "/World/Robot")
simulation_context = SimulationContext()
simulation_context.initialize_physics()
robot = Articulation(prim_paths_expr="/World/Robot", name="Robot")
robot.initialize()
robot.set_gains(kps=[0], kds=[50], indices=[0], joint_indices=[self.steer_weel_id]) #suggestion from gpt
robot.set_max_efforts(values=[1000], joint_indices=[self.steer_wheel_id])
robot.set_joint_velocity_targets(velocities=[50], joint_indices=[self.steer_wheel_id])
I tried to use vehicle from isaacsim assets. It can be moved with the same code. And I found some difference between the robot from isaacsim assets and my custom robot. The icon of customized robot has a blue arrow, but the official robot has a orange arrow. What dose the diffrence mean? And when lift the official robot off the ground, it can fall back to the ground automatically. But customized robot can not, it just frozen in the air.
@Carl_0127 the color of the arrow corresponds to the composition arc and how it’s being brought into your USD stage/scene. blue indicates payload while orange is reference composition arc. you can switch between them if you were to right click on the selective composition arc in the stage list.
you can read more about the composition arcs here as it’s a core concept with OpenUSD - Glossary — Isaac Sim Documentation
that said, i suspect it’s not the root cause of the simulation but worth a try first.
Hi @Carl_0127,
The issue is that the URDF importer defaults to “Static Base” (fix_base = True), which anchors your robot’s root link to the world. This is why:
- The vehicle can’t drive forward (base is fixed in place)
- Wheels only spin when lifted (no ground contact opposing the motor)
- The robot “freezes in the air” instead of falling (gravity doesn’t act on a fixed base)
Fix: Re-import your URDF with fix_base = False. In the URDF import dialog, under Links, select “Moveable Base” instead of “Static Base”.
If importing via Python:
from isaacsim.asset.importer.urdf import URDFCreateImportConfig, URDFParseAndImportFile
config = URDFCreateImportConfig()
config.set_fix_base(False) # Required for mobile robots/vehicles
config.set_make_default_prim(Tru e)
URDFParseAndImportFile(
urdf_path="/path/to/robot.urdf",
import_config=config,
dest_path="/World/Robot"
)
If you don’t want to re-import, you can fix the existing USD by selecting and deleting the fixed joint that connects the root link to the world (look for a FixedJoint prim at the top level of your robot hierarchy).
As @Simplychenable noted, the blue/orange arrow difference (payload vs reference composition arc) is cosmetic and unrelated to this physics issue.