1111 # Usage
1212 ./isaaclab.sh -p scripts/demos/quadcopter.py
1313
14+ # Run with the Newton backend
15+ ./isaaclab.sh -p scripts/demos/quadcopter.py physics=newton_mjwarp -visualizer=newton
16+
1417"""
1518
16- """Launch Isaac Sim Simulator first ."""
19+ """Parse command line arguments ."""
1720
1821import argparse
19-
22+ import sys
2023from isaaclab .app import AppLauncher
2124
25+ from isaaclab_tasks .utils import add_launcher_args ,fold_preset_tokens ,launch_simulation ,setup_preset_cli
26+
2227# add argparse arguments
2328parser = argparse .ArgumentParser (description = "This script demonstrates how to simulate a quadcopter." )
2429# append AppLauncher cli args
25- AppLauncher . add_app_launcher_args (parser )
30+ add_launcher_args (parser )
2631# demos should open Kit visualizer by default
2732parser .set_defaults (visualizer = ["kit" ])
2833# parse the arguments
29- args_cli = parser .parse_args ()
34+ args_cli , hydra_args = setup_preset_cli (parser )
35+ sys .argv = [sys .argv [0 ]] + fold_preset_tokens (hydra_args )
36+
3037
3138# launch omniverse app
3239app_launcher = AppLauncher (args_cli )
3946import isaaclab .sim as sim_utils
4047from isaaclab .assets import Articulation
4148from isaaclab .sim import SimulationContext
49+ from isaaclab_tasks .utils .hydra import collect_presets , parse_overrides , resolve_presets
50+ from default_physics_cfg import DefaultPhysicsCfgs
4251
4352##
4453# Pre-defined configs
4554##
4655from isaaclab_assets import CRAZYFLIE_CFG # isort:skip
4756
4857
49- def main ():
50- """Main function."""
51- # Load kit helper
52- sim_cfg = sim_utils .SimulationCfg (dt = 0.005 , device = args_cli .device )
58+ def main () -> None :
59+ """Run the quadcopter demo."""
60+ sim_cfg = sim_utils .SimulationCfg (dt = 0.005 , device = args_cli .device , physics = DefaultPhysicsCfgs ())
61+ global_presets , preset_sel , * _ = parse_overrides (sys .argv [1 :], {"env" : collect_presets (sim_cfg )})
62+ sim_cfg = resolve_presets (sim_cfg , {* global_presets , * (name for _ , _ , name in preset_sel )})
63+
5364 sim = SimulationContext (sim_cfg )
65+ # launch_simulation(sim, args_cli)
66+
5467 # Set main camera
5568 sim .set_camera_view (eye = [0.5 , 0.5 , 1.0 ], target = [0.0 , 0.0 , 0.5 ])
5669
@@ -74,7 +87,7 @@ def main():
7487
7588 # Fetch relevant parameters to make the quadcopter hover in place
7689 prop_body_ids = robot .find_bodies ("m.*_prop" )[0 ]
77- robot_mass = robot .root_view . get_masses () .sum ()
90+ robot_mass = robot .data . body_mass . torch [ 0 ] .sum ()
7891 gravity = torch .tensor (sim .cfg .gravity , device = sim .device ).norm ()
7992
8093 # Now we are ready!
@@ -85,7 +98,7 @@ def main():
8598 sim_time = 0.0
8699 count = 0
87100 # Simulate physics
88- while simulation_app . is_running ():
101+ while sim . has_alive_visualizers ():
89102 # reset
90103 if count % 2000 == 0 :
91104 # reset counters
0 commit comments