I am using iw_hub.usd robot to pickup a cart and drop it at specific location and go to parking area.
When the robot’s position is near (X = 0, Y = 0) it works reliably, but as the coordinate values increase example when the coordinate is higher like X=-32000, and Y=14000, the robot becomes unstable.
Steps to Reproduce
Attached the source code to simulate the issue.
Download the attached iwhubbot_task_testing.txt rename it to iwhubbot_task_testing.py
Run iwhubbot_task_testing.py from isaac sim 5.1.0 using python.sh
Error Messages
(If applicable, copy and paste any error messages you received)
Screenshots or Videos
(If applicable, add screenshots or links to videos that demonstrate the issue)
This is a known limitation of the physics engine (PhysX), not a bug in
Isaac Sim. PhysX uses single-precision (32-bit) floating point for all
physics calculations, which provides approximately 7 significant digits
of precision.
At your coordinates (X=-32740, Y=13725 meters), the absolute precision
of float32 degrades to about 2mm – far too coarse for stable robot
control. This is why your robot works perfectly near the origin but
becomes increasingly unstable at larger coordinates.
The fix: keep all simulated objects near the stage origin (0, 0, 0).
Instead of placing objects at their real-world map coordinates, apply a
constant offset so everything stays within a few hundred meters of the
origin:
# Your real-world reference point
WORLD_OFFSET_X = -32740.0
WORLD_OFFSET_Y = 13725.0
WORLD_OFFSET_Z = -588.0
# In simulation, subtract the offset -- everything is now near origin
GROUND_X_POS = 0.0
GROUND_Y_POS = 0.0
GROUND_Z_POS = 0.0
# Robot starts near origin
START_X_POS = -6.0 # relative to ground
START_Y_POS = 0.0
START_Z_POS = 0.1
When you need to convert between simulation coordinates and real-world
coordinates (e.g., for fleet management or map display), just add/subtract
the offset in your application logic.
This is the standard approach used in game engines, robotics simulators,
and any physics system that uses single-precision floats. The rule of
thumb: keep everything within ~500m of the origin for reliable physics.
Your observations match the theory perfectly:
0m: perfect (sub-micrometer precision)
1200m: works (0.1mm precision)
6000m: unstable (0.5mm precision – marginal for robots)