| 149 | |
| 150 | |
| 151 | def parse_sim_params(args, cfg, cfg_train): |
| 152 | # initialize sim |
| 153 | sim_params = gymapi.SimParams() |
| 154 | sim_params.dt = SIM_TIMESTEP |
| 155 | sim_params.num_client_threads = args.slices |
| 156 | |
| 157 | if args.physics_engine == gymapi.SIM_FLEX: |
| 158 | if args.device != "cpu": |
| 159 | print("WARNING: Using Flex with GPU instead of PHYSX!") |
| 160 | sim_params.flex.shape_collision_margin = 0.01 |
| 161 | sim_params.flex.num_outer_iterations = 4 |
| 162 | sim_params.flex.num_inner_iterations = 10 |
| 163 | elif args.physics_engine == gymapi.SIM_PHYSX: |
| 164 | sim_params.physx.solver_type = 1 |
| 165 | sim_params.physx.num_position_iterations = 4 |
| 166 | sim_params.physx.num_velocity_iterations = 0 |
| 167 | sim_params.physx.num_threads = 4 |
| 168 | sim_params.physx.use_gpu = args.use_gpu |
| 169 | sim_params.physx.num_subscenes = args.subscenes |
| 170 | sim_params.physx.max_gpu_contact_pairs = 8 * 1024 * 1024 |
| 171 | |
| 172 | sim_params.use_gpu_pipeline = args.use_gpu_pipeline |
| 173 | sim_params.physx.use_gpu = args.use_gpu |
| 174 | |
| 175 | # if sim options are provided in cfg, parse them and update/override above: |
| 176 | if "sim" in cfg: |
| 177 | gymutil.parse_sim_config(cfg["sim"], sim_params) |
| 178 | |
| 179 | # Override num_threads if passed on the command line |
| 180 | if args.physics_engine == gymapi.SIM_PHYSX and args.num_threads > 0: |
| 181 | sim_params.physx.num_threads = args.num_threads |
| 182 | |
| 183 | return sim_params |
| 184 | |
| 185 | |
| 186 | def get_args(benchmark=False): |