@@ -508,16 +508,28 @@ def create_model_builder(robot, world_count):
508508 return builder
509509
510510 @staticmethod
511- def create_solver (model , sim_dt ):
512- # Reuse the Kamino RL example's solver settings to mirror the deployed workload.
513- from newton ._src .solvers .kamino .examples .rl .simulation import RigidBodySim # noqa: PLC0415
514-
515- settings = RigidBodySim .default_settings (sim_dt )
516- settings .solver .collision_detector = settings .collision_detector
517- # Pin the linear solver so a change to default_settings cannot
518- # silently switch what this benchmark measures.
519- settings .solver .dynamics .linear_solver_type = "LLTBRCM"
520- return newton .solvers .SolverKamino (model , config = settings .solver )
511+ def create_solver (model , _sim_dt ):
512+ # Pin the deployed RL settings without importing its PyTorch-dependent module.
513+ config = newton .solvers .SolverKamino .Config (
514+ sparse_jacobian = True ,
515+ use_collision_detector = True ,
516+ integrator = "moreau" ,
517+ )
518+ config .collision_detector .pipeline = "unified"
519+ config .collision_detector .max_contacts_per_pair = 8
520+ config .constraints .alpha = 0.1
521+ config .padmm .primal_tolerance = 1e-4
522+ config .padmm .dual_tolerance = 1e-4
523+ config .padmm .compl_tolerance = 1e-4
524+ config .padmm .max_iterations = 200
525+ config .padmm .eta = 1e-5
526+ config .padmm .rho_0 = 0.05
527+ config .padmm .use_acceleration = True
528+ config .padmm .warmstart_mode = "containers"
529+ config .padmm .contact_warmstart_method = "geom_pair_net_force"
530+ config .padmm .use_graph_conditionals = False
531+ config .dynamics .linear_solver_type = "LLTBRCM"
532+ return newton .solvers .SolverKamino (model , config = config )
521533
522534
523535if __name__ == "__main__" :
0 commit comments