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:
-
Is there a way to programmatically set the Cesium ion token in standalone mode?
-
Is there a recommended way to load Cesium USD files via ROS2 Jazzy launch files?
-
If possible, is there a way to make this portable?
Any help appreciated.