@@ -178,42 +178,13 @@ namespace simple_mpc
178178 }
179179 }
180180
181- const ConstVectorRef getStateDerivative (const std::size_t t)
182- {
183- ExplicitIntegratorData * int_data =
184- dynamic_cast <ExplicitIntegratorData *>(&*solver_->workspace_ .problem_data .stage_data [t]->dynamics_data );
185- assert (int_data != nullptr );
186- return int_data->continuous_data ->xdot_ ;
187- }
188-
189- const Eigen::VectorXd getContactForces (const std::size_t t)
190- {
191- Eigen::VectorXd contact_forces;
192- contact_forces.resize (3 * (long )ee_names_.size ());
193-
194- ExplicitIntegratorData * int_data =
195- dynamic_cast <ExplicitIntegratorData *>(&*solver_->workspace_ .problem_data .stage_data [t]->dynamics_data );
196- assert (int_data != nullptr );
197- MultibodyConstraintFwdData * mc_data = dynamic_cast <MultibodyConstraintFwdData *>(&*int_data->continuous_data );
198- assert (mc_data != nullptr );
181+ const ConstVectorRef getStateDerivative (const std::size_t t);
199182
200- std::vector<bool > contact_state = ocp_handler_->getContactState (t);
201-
202- size_t force_id = 0 ;
203- for (size_t i = 0 ; i < contact_state.size (); i++)
204- {
205- if (contact_state[i])
206- {
207- contact_forces.segment ((long )i * 3 , 3 ) = mc_data->constraint_datas_ [force_id].contact_force .linear ();
208- force_id += 1 ;
209- }
210- else
211- {
212- contact_forces.segment ((long )i * 3 , 3 ).setZero ();
213- }
214- }
215- return contact_forces;
216- }
183+ /* *
184+ * @brief Return contact forces for a full dynamics MPC problem
185+ * @warning Only work with fulldynamics OCP handler
186+ */
187+ const Eigen::VectorXd getContactForces (const std::size_t t);
217188
218189 void switchToWalk (const Vector6d & velocity_base);
219190
0 commit comments