1515 from isaaclab_rl .rsl_rl import RslRlOnPolicyRunnerCfg
1616
1717
18- def make_simulation_app () -> SimulationApp :
18+ def make_simulation_app () -> tuple [ SimulationApp , argparse . Namespace ] :
1919 # Create argument parser for headless mode
20- parser = argparse .ArgumentParser ()
20+ parser = argparse .ArgumentParser (description = "Export Isaac Lab environment to ONNX" )
21+
22+ # Add custom arguments
23+ parser .add_argument (
24+ "--task" ,
25+ type = str ,
26+ default = "Isaac-Velocity-Rough-G1-Play-v0" ,
27+ help = "Name of the Isaac Lab task to export (default: Isaac-Velocity-Rough-G1-Play-v0)" ,
28+ )
29+ parser .add_argument (
30+ "--pause-on-failure" ,
31+ action = "store_true" ,
32+ default = False ,
33+ help = "Pause on evaluation failure (default: False, useful for debugging)" ,
34+ )
2135
2236 AppLauncher .add_app_launcher_args (parser )
23- args_cli = parser .parse_args ([] )
37+ args_cli = parser .parse_args ()
2438 args_cli .headless = True
2539 args_cli .num_envs = 1
2640
2741 # launch omniverse app
2842 app_launcher = AppLauncher (args_cli )
2943 simulation_app = app_launcher .app
3044
31- return simulation_app
45+ return simulation_app , args_cli
3246
3347
34- simulation_app = make_simulation_app ()
48+ simulation_app , args = make_simulation_app ()
3549
3650
3751# Import tasks to register environments
@@ -47,8 +61,10 @@ def make_simulation_app() -> SimulationApp:
4761import exporter
4862
4963
50- def main (task_name : str = None ):
51- # test_dir = pathlib.Path(tempfile.gettempdir()) / "exporter_tests"
64+ def export_isaaclab (
65+ task_name : str = "Isaac-Velocity-Rough-G1-Play-v0" , pause_on_failure : bool = False
66+ ):
67+ """Test Isaac Lab ONNX export and evaluation pipeline."""
5268 test_dir = pathlib .Path (__file__ ).parent / "exporter_tests"
5369
5470 task_device = "cpu"
@@ -96,12 +112,13 @@ def main(task_name: str = None):
96112 # Evaluate.
97113 evaluate_steps = 200
98114 with torch .inference_mode ():
99- exporter .evaluate (
115+ export_ok , _ = exporter .evaluate (
100116 env = exportable_env ,
101117 context_manager = exportable_env .context_manager (),
102118 session_wrapper = session_wrapper ,
103119 num_steps = evaluate_steps ,
104120 verbose = True ,
121+ pause_on_failure = pause_on_failure ,
105122 )
106123
107124 # Close simulation app.
@@ -110,10 +127,17 @@ def main(task_name: str = None):
110127 SimulationContext .clear_instance ()
111128 simulation_app .close ()
112129
113- print ( "Done." )
130+ assert export_ok , "ONNX export validation failed"
114131
115132
116133if __name__ == "__main__" :
117- # main(task_name="Isaac-Velocity-Flat-Anymal-C-Play-v0")
118- # main(task_name="Isaac-Velocity-Rough-Anymal-C-Play-v0")
119- main (task_name = "Isaac-Velocity-Rough-G1-Play-v0" )
134+ import sys
135+
136+ try :
137+ export_isaaclab (task_name = args .task , pause_on_failure = args .pause_on_failure )
138+ except Exception as e :
139+ print (f"❌ Test ERROR: { e } " )
140+ import traceback
141+
142+ traceback .print_exc ()
143+ sys .exit (1 )
0 commit comments