(sim: simple.Simulator, args: SimulationArgs)
| 51 | |
| 52 | |
| 53 | def setupSimulatorFromArgs(sim: simple.Simulator, args: SimulationArgs): |
| 54 | sim.warm_start_contact_forces = args.warm_start |
| 55 | sim.constraints_problem.setMaxNumberOfContactsPerCollisionPair( |
| 56 | args.max_contacts_per_pair |
| 57 | ) |
| 58 | sim.constraints_problem.Kp = args.Kp |
| 59 | sim.constraints_problem.Kd = args.Kd |
| 60 | sim.constraints_problem.is_ncp = not args.solve_ccp |
| 61 | # PGS |
| 62 | sim.pgs_constraint_solver_settings.stat_record = args.debug |
| 63 | sim.pgs_constraint_solver_settings.max_iter = args.maxit |
| 64 | sim.pgs_constraint_solver_settings.absolute_precision = args.tol |
| 65 | sim.pgs_constraint_solver_settings.relative_precision = args.tol_rel |
| 66 | # ADMM |
| 67 | sim.admm_constraint_solver_settings.stat_record = args.debug |
| 68 | sim.admm_constraint_solver_settings.max_iter = args.maxit |
| 69 | sim.admm_constraint_solver_settings.absolute_precision = args.tol |
| 70 | sim.admm_constraint_solver_settings.relative_precision = args.tol_rel |
| 71 | sim.admm_constraint_solver_settings.ratio_primal_dual = args.ratio_primal_dual |
| 72 | sim.admm_constraint_solver_settings.mu = args.mu_prox |
| 73 | sim.admm_constraint_solver_settings.rho = args.rho |
| 74 | sim.admm_constraint_solver_settings.tau = args.tau |
| 75 | if args.admm_update_rule == "spectral": |
| 76 | sim.admm_constraint_solver_settings.admm_update_rule = ( |
| 77 | pin.ADMMUpdateRule.SPECTRAL |
| 78 | ) |
| 79 | sim.admm_constraint_solver_settings.rho_power_factor = args.rho_power_factor |
| 80 | sim.admm_constraint_solver_settings.rho_power = args.rho_power |
| 81 | sim.admm_constraint_solver_settings.lanczos_size = args.lanczos_size |
| 82 | elif args.admm_update_rule == "linear": |
| 83 | sim.admm_constraint_solver_settings.admm_update_rule = pin.ADMMUpdateRule.LINEAR |
| 84 | sim.admm_constraint_solver_settings.linear_update_rule_factor = ( |
| 85 | args.linear_update_rule_factor |
| 86 | ) |
| 87 | elif args.admm_update_rule == "constant": |
| 88 | sim.admm_constraint_solver_settings.admm_update_rule = ( |
| 89 | pin.ADMMUpdateRule.CONSTANT |
| 90 | ) |
| 91 | |
| 92 | |
| 93 | def plotContactSolver( |
no test coverage detected