MCPcopy Create free account
hub / github.com/Simple-Robotics/Simple / BOOST_AUTO_TEST_CASE

Function BOOST_AUTO_TEST_CASE

tests/forward/mujoco-humanoid.cpp:87–147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

85}
86
87BOOST_AUTO_TEST_CASE(mujoco_humanoid)
88{
89 ModelHandle model_handle(new Model());
90 Model & model = ::pinocchio::helper::get_ref(model_handle);
91 GeometryModelHandle geom_model_handle(new GeometryModel());
92 GeometryModel & geom_model = ::pinocchio::helper::get_ref(geom_model_handle);
93
94 const bool verbose = false;
95 ::pinocchio::mjcf::buildModel(SIMPLE_TEST_DATA_DIR "/mujoco_humanoid.xml", model, verbose);
96 ::pinocchio::mjcf::buildGeom(model, SIMPLE_TEST_DATA_DIR "/mujoco_humanoid.xml", pinocchio::COLLISION, geom_model);
97 addFloorToGeomModel(geom_model);
98
99 // sanity checks
100 assert(model.nv == 27);
101 assert(geom_model.geometryObjects.size() == 20);
102
103 // initial state
104 const Eigen::VectorXd q0 = model.referenceConfigurations["qpos0"];
105 const Eigen::VectorXd v0 = Eigen::VectorXd::Zero(model.nv);
106 const Eigen::VectorXd tau0 = Eigen::VectorXd::Zero(model.nv);
107
108 // add collision pairs
109 addSystemCollisionPairs(model, geom_model, q0);
110 assert(geom_model.collisionPairs.size() == 175);
111
112 // run simulation
113 model.lowerPositionLimit.setConstant(-std::numeric_limits<double>::infinity());
114 model.upperPositionLimit.setConstant(std::numeric_limits<double>::infinity());
115 model.lowerDryFrictionLimit.setZero();
116 model.upperDryFrictionLimit.setZero();
117 const double dt = 1e-3;
118 const Eigen::VectorXd zero_torque = Eigen::VectorXd::Zero(model.nv);
119
120 {
121 Simulator sim(model_handle, geom_model_handle);
122 Eigen::VectorXd q = q0;
123 Eigen::VectorXd v = v0;
124 for (size_t i = 0; i < 100; ++i)
125 {
126 BOOST_CHECK_NO_THROW(sim.step<ADMM>(q, v, zero_torque, dt));
127 BOOST_CHECK(sim.admm_constraint_solver.getIterationCount() < sim.admm_constraint_solver_settings.max_iter);
128 BOOST_CHECK(sim.pgs_constraint_solver.getIterationCount() == 0); // make sure pgs didnt run
129 q = sim.qnew;
130 v = sim.vnew;
131 }
132 }
133
134 {
135 Simulator sim(model_handle, geom_model_handle);
136 Eigen::VectorXd q = q0;
137 Eigen::VectorXd v = v0;
138 for (size_t i = 0; i < 100; ++i)
139 {
140 BOOST_CHECK_NO_THROW(sim.step<PGS>(q, v, zero_torque, dt));
141 BOOST_CHECK(sim.pgs_constraint_solver.getIterationCount() < sim.pgs_constraint_solver_settings.max_iter);
142 BOOST_CHECK(sim.admm_constraint_solver.getIterationCount() == 0); // make sure admm didnt run
143 q = sim.qnew;
144 v = sim.vnew;

Callers

nothing calls this directly

Calls 2

addFloorToGeomModelFunction · 0.70
addSystemCollisionPairsFunction · 0.70

Tested by

no test coverage detected