10 #ifndef CROCODDYL_MULTIBODY_NUMDIFF_CONTACT_HPP_
11 #define CROCODDYL_MULTIBODY_NUMDIFF_CONTACT_HPP_
13 #include <boost/function.hpp>
15 #include "crocoddyl/multibody/contact-base.hpp"
16 #include "crocoddyl/multibody/fwd.hpp"
20 template <
typename _Scalar>
23 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
25 typedef _Scalar Scalar;
31 typedef boost::function<void(
const VectorXs&,
const VectorXs&)>
50 void calc(
const boost::shared_ptr<ContactDataAbstract>& data,
51 const Eigen::Ref<const VectorXs>& x);
56 void calcDiff(
const boost::shared_ptr<ContactDataAbstract>& data,
57 const Eigen::Ref<const VectorXs>& x);
62 void updateForce(
const boost::shared_ptr<ContactDataAbstract>& data,
63 const VectorXs& force);
72 pinocchio::DataTpl<Scalar>*
const data);
98 void set_reevals(
const std::vector<ReevaluationFunction>& reevals);
108 std::vector<ReevaluationFunction>
123 void assertStableStateFD(
const Eigen::Ref<const VectorXs>& );
126 template <
typename _Scalar>
128 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
130 typedef _Scalar Scalar;
135 template <
template <
typename Scalar>
class Model>
137 pinocchio::DataTpl<Scalar>*
const data)
139 dx(model->get_state()->get_ndx()),
140 xp(model->get_state()->get_nx()) {
144 const std::size_t ndx = model->get_model()->get_state()->get_ndx();
145 data_0 = model->get_model()->createData(data);
146 for (std::size_t i = 0; i < ndx; ++i) {
147 data_x.push_back(model->get_model()->createData(data));
165 std::vector<boost::shared_ptr<Base> >
174 #include "crocoddyl/multibody/numdiff/contact.hxx"