PhysX Lidar do not work in a specific stage

Isaac Sim Version

6.0.1
6.0.0
5.1.0
5.0.0
4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

Ubuntu 24.04
Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: NVIDIA GeForce RTX 3090
  • Driver Version: 580.105.08

Topic Description

Detailed Description

I followed this tutorial to learn Isaac Sim. However, when I reached this section and added a PhysX LiDAR sensor, I found that it did not work. No matter what I tried, I could not get it to function. What confuses me most is that it works correctly in every other scene, but not in this particular one. I also found a previous topic describing exactly the same issue, but I could not find a solution there. Therefore, I believe this issue is not caused by anything I did incorrectly.

Screenshots or Videos

Additional Information

  • The official “PhysX Lidar Sensor” example works correctly and displays scan lines on the same Isaac Sim installation.
  • carter.zip (1.4 MB)

Thanks for the clear report and for attaching carter.zip. I reproduced it on Isaac Sim 6.0.1 and it turns out **not** to be a lidar problem.

The stage in carter.zip has no authored time-code range. Reading it back:

startTimeCode = 0.0   endTimeCode = 0.0   HasAuthoredTimeCodeRange = False

When both are `0`, Kit’s play range collapses to a single frame (0 → 0.0417 s), and since looping is on by default the timeline rewinds continuously — I measured 72 rewinds in 180 frames. The PhysX Lidar is a *rotating* sensor: it builds its scan across successive physics steps, so every rewind destroys the sweep before it finishes and clears the drawn lines. That is why you see no beams at all, not even the gray “empty space” ones.

That also explains why it works everywhere else: any stage with a normal time-code range never rewinds, and the identical lidar prim then returns data immediately.

Fix: author a time-code range on the stage. In the GUI, Layer properties → Start Time Code / End Time Code (for example 0 and 1000000), then save. Or from Python:

stage = omni.usd.get_context().get_stage()
stage.SetStartTimeCode(0.0)
stage.SetEndTimeCode(1_000_000.0)

With that one change on your own stage, I get 0 rewinds, a valid lidar buffer on every frame, and the beams draw correctly — red on the obstacle cubes, gray elsewhere.

One thing worth noting: turning off timeline looping alone does not fix it. The play range is still only one frame long, so the timeline just stops. The range itself has to be authored.

Your asset was produced by “URDF USD Converter v0.1.3”, which left the range unauthored — I am filing that internally so exported stages get a sensible default, and so Isaac Sim warns instead of silently looping when a stage has no time-code range.

Internal ticket: 6631781

Thank you for identifying the cause and providing the fix. It works now.