Loading Cesium USD files via Isaac Sim 5.1 standalone workflow / ROS2 launch file

am trying to load a Cesium for Omniverse Earth model USD file through a ROS2 Jazzy launch file using Isaac Sim 5.1’s standalone Python workflow (SimulationApp).

My setup:

  • Isaac Sim 5.1 (pip install into Python 3.11 conda environment)

  • ROS2 Jazzy on Ubuntu 24.04

  • Cesium for Omniverse v0.27.0 (community extension, installed locally at ~/.local/share/ov/data/exts/v2)

  • The USD file loads correctly when opened manually through the Isaac Sim GUI

What I’ve tried:

python

from isaacsim import SimulationApp
simulation_app = SimulationApp({"headless": False})

from isaacsim.core.utils.extensions import enable_extension
import omni.kit.app

manager = omni.kit.app.get_app().get_extension_manager()
manager.add_path("/home/user/.local/share/ov/data/exts/v2")

enable_extension("cesium.usd.plugins")
enable_extension("cesium.omniverse")

for _ in range(20):
    simulation_app.update()

from isaacsim.core.utils.stage import open_stage, is_stage_loading
open_stage("/path/to/earthmodel.usd")

Result: Cesium extensions load but the terrain doesn’t render because the ion token isn’t authenticated. When launched through the GUI the token is already cached from a previous login.

Questions:

  1. Is there a way to programmatically set the Cesium ion token in standalone mode?

  2. Is there a recommended way to load Cesium USD files via ROS2 Jazzy launch files?

  3. If possible, is there a way to make this portable?

Any help appreciated.