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
26 typedef _Scalar Scalar;
32 typedef boost::function<void(
const VectorXs&,
const VectorXs&)>
51 void calc(
const std::shared_ptr<ContactDataAbstract>& data,
52 const Eigen::Ref<const VectorXs>& x)
override;
57 void calcDiff(
const std::shared_ptr<ContactDataAbstract>& data,
58 const Eigen::Ref<const VectorXs>& x)
override;
63 void updateForce(
const std::shared_ptr<ContactDataAbstract>& data,
64 const VectorXs& force)
override;
73 pinocchio::DataTpl<Scalar>*
const data)
override;
75 template <
typename NewScalar>
102 void set_reevals(
const std::vector<ReevaluationFunction>& reevals);
112 std::vector<ReevaluationFunction>
127 void assertStableStateFD(
const Eigen::Ref<const VectorXs>& );
130 template <
typename _Scalar>
132 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
134 typedef _Scalar Scalar;
139 template <
template <
typename Scalar>
class Model>
141 pinocchio::DataTpl<Scalar>*
const data)
143 dx(model->get_state()->get_ndx()),
144 xp(model->get_state()->get_nx()) {
148 const std::size_t ndx = model->get_model()->get_state()->get_ndx();
149 data_0 = model->get_model()->createData(data);
150 for (std::size_t i = 0; i < ndx; ++i) {
151 data_x.push_back(model->get_model()->createData(data));
169 std::vector<std::shared_ptr<Base> >
178 #include "crocoddyl/multibody/numdiff/contact.hxx"