10 #ifndef CROCODDYL_MULTIBODY_CONTACTS_CONTACT_2D_HPP_
11 #define CROCODDYL_MULTIBODY_CONTACTS_CONTACT_2D_HPP_
13 #include "crocoddyl/multibody/contact-base.hpp"
14 #include "crocoddyl/multibody/fwd.hpp"
18 template <
typename _Scalar>
21 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
24 typedef _Scalar Scalar;
30 typedef typename MathBase::Vector2s Vector2s;
31 typedef typename MathBase::Vector3s Vector3s;
32 typedef typename MathBase::VectorXs VectorXs;
33 typedef typename MathBase::Matrix3s Matrix3s;
45 const pinocchio::FrameIndex
id,
const Vector2s& xref,
47 const Vector2s& gains = Vector2s::Zero());
60 const pinocchio::FrameIndex
id,
const Vector2s& xref,
61 const Vector2s& gains = Vector2s::Zero());
71 virtual void calc(
const std::shared_ptr<ContactDataAbstract>& data,
72 const Eigen::Ref<const VectorXs>& x)
override;
81 virtual void calcDiff(
const std::shared_ptr<ContactDataAbstract>& data,
82 const Eigen::Ref<const VectorXs>& x)
override;
90 virtual void updateForce(
const std::shared_ptr<ContactDataAbstract>& data,
91 const VectorXs& force)
override;
97 pinocchio::DataTpl<Scalar>*
const data)
override;
108 template <
typename NewScalar>
131 virtual void print(std::ostream& os)
const override;
144 template <
typename _Scalar>
146 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
148 typedef _Scalar Scalar;
151 typedef typename MathBase::Matrix2s Matrix2s;
152 typedef typename MathBase::Matrix3s Matrix3s;
153 typedef typename MathBase::Matrix6xs Matrix6xs;
154 typedef typename MathBase::Vector3s Vector3s;
156 template <
template <
typename Scalar>
class Model>
158 pinocchio::DataTpl<Scalar>*
const data)
160 fJf(6, model->get_state()->get_nv()),
161 v_partial_dq(6, model->get_state()->get_nv()),
162 a_partial_dq(6, model->get_state()->get_nv()),
163 a_partial_dv(6, model->get_state()->get_nv()),
164 a_partial_da(6, model->get_state()->get_nv()),
165 fXjdv_dq(6, model->get_state()->get_nv()),
166 fXjda_dq(6, model->get_state()->get_nv()),
167 fXjda_dv(6, model->get_state()->get_nv()) {
168 frame = model->get_id();
169 jMf = model->get_state()->get_pinocchio()->frames[
frame].placement;
170 fXj =
jMf.inverse().toActionMatrix();
172 v_partial_dq.setZero();
173 a_partial_dq.setZero();
174 a_partial_dv.setZero();
175 a_partial_da.setZero();
198 pinocchio::MotionTpl<Scalar> v;
199 pinocchio::MotionTpl<Scalar> a;
201 Matrix6xs v_partial_dq;
202 Matrix6xs a_partial_dq;
203 Matrix6xs a_partial_dv;
204 Matrix6xs a_partial_da;
220 #include "crocoddyl/multibody/contacts/contact-2d.hxx"
State multibody representation.