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"
20template <
typename _Scalar>
23 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
25 typedef _Scalar Scalar;
30 typedef typename MathBaseTpl<Scalar>::VectorXs VectorXs;
31 typedef boost::function<void(
const VectorXs&,
const VectorXs&)>
50 void calc(
const std::shared_ptr<ContactDataAbstract>& data,
51 const Eigen::Ref<const VectorXs>& x);
56 void calcDiff(
const std::shared_ptr<ContactDataAbstract>& data,
57 const Eigen::Ref<const VectorXs>& x);
62 void updateForce(
const std::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>& );
126template <
typename _Scalar>
128 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
130 typedef _Scalar Scalar;
133 typedef typename MathBaseTpl<Scalar>::VectorXs VectorXs;
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<std::shared_ptr<Base> >
174#include "crocoddyl/multibody/numdiff/contact.hxx"
PinocchioData * pinocchio
Pinocchio data.
Force f
Contact force expressed in the coordinate defined by type.