contact-force.hpp
Go to the documentation of this file.
1 // BSD 3-Clause License
3 //
4 // Copyright (C) 2019-2021, LAAS-CNRS, University of Edinburgh
5 // Copyright note valid unless otherwise stated in individual files.
6 // All rights reserved.
8 
9 #ifndef SOBEC_CONTACT_FORCE_HPP_
10 #define SOBEC_CONTACT_FORCE_HPP_
11 
12 #include "crocoddyl/core/residual-base.hpp"
13 #include "crocoddyl/core/utils/exception.hpp"
14 #include "crocoddyl/multibody/contact-base.hpp"
15 #include "crocoddyl/multibody/contacts/contact-6d.hpp"
16 #include "crocoddyl/multibody/data/contacts.hpp"
17 #include "crocoddyl/multibody/fwd.hpp"
18 #include "crocoddyl/multibody/residuals/contact-force.hpp"
19 #include "crocoddyl/multibody/states/multibody.hpp"
22 #include "sobec/fwd.hpp"
23 
24 namespace sobec {
25 namespace newcontacts {
26 
52 template <typename _Scalar>
54  : public crocoddyl::ResidualModelContactForceTpl<_Scalar> {
55  public:
56  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
57 
58  typedef _Scalar Scalar;
59  typedef crocoddyl::MathBaseTpl<Scalar> MathBase;
60  typedef crocoddyl::ResidualModelContactForceTpl<Scalar> Base;
61  typedef crocoddyl::ResidualDataContactForceTpl<Scalar> Data;
62  typedef crocoddyl::StateMultibodyTpl<Scalar> StateMultibody;
63  typedef crocoddyl::ResidualDataAbstractTpl<Scalar> ResidualDataAbstract;
64  typedef pinocchio::ForceTpl<Scalar> Force;
65  typedef typename MathBase::VectorXs VectorXs;
66  typedef typename MathBase::MatrixXs MatrixXs;
67 
78  ResidualModelContactForceTpl(boost::shared_ptr<StateMultibody> state,
79  const pinocchio::FrameIndex id,
80  const Force& fref, const std::size_t nc,
81  const std::size_t nu);
82  // const std::size_t type = 2);
83 
95  ResidualModelContactForceTpl(boost::shared_ptr<StateMultibody> state,
96  const pinocchio::FrameIndex id,
97  const Force& fref, const std::size_t nc);
99 
112  virtual void calc(const boost::shared_ptr<ResidualDataAbstract>& data,
113  const Eigen::Ref<const VectorXs>& x,
114  const Eigen::Ref<const VectorXs>& u);
115 
128  virtual void calcDiff(const boost::shared_ptr<ResidualDataAbstract>& data,
129  const Eigen::Ref<const VectorXs>& x,
130  const Eigen::Ref<const VectorXs>& u);
131 };
132 
133 } // namespace newcontacts
134 } // namespace sobec
135 
136 /* --- Details -------------------------------------------------------------- */
137 /* --- Details -------------------------------------------------------------- */
138 /* --- Details -------------------------------------------------------------- */
140 
141 #endif // SOBEC_CONTACT_FORCE_HPP_
sobec::newcontacts::ResidualModelContactForceTpl::StateMultibody
crocoddyl::StateMultibodyTpl< Scalar > StateMultibody
Definition: contact-force.hpp:62
sobec::newcontacts::ResidualModelContactForceTpl::~ResidualModelContactForceTpl
virtual ~ResidualModelContactForceTpl()
Definition: contact-force.hxx:27
sobec::newcontacts::ResidualModelContactForceTpl::Force
pinocchio::ForceTpl< Scalar > Force
Definition: contact-force.hpp:64
sobec::newcontacts::ResidualModelContactForceTpl::ResidualDataAbstract
crocoddyl::ResidualDataAbstractTpl< Scalar > ResidualDataAbstract
Definition: contact-force.hpp:63
sobec::newcontacts::ResidualModelContactForceTpl::ResidualModelContactForceTpl
ResidualModelContactForceTpl(boost::shared_ptr< StateMultibody > state, const pinocchio::FrameIndex id, const Force &fref, const std::size_t nc, const std::size_t nu)
Initialize the contact force residual model.
Definition: contact-force.hxx:15
sobec::newcontacts::ResidualModelContactForceTpl
Define a contact force residual function.
Definition: contact-force.hpp:53
fwd.hpp
sobec::newcontacts::ResidualModelContactForceTpl::calcDiff
virtual void calcDiff(const boost::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
Compute the derivatives of the contact force residual.
Definition: contact-force.hxx:78
sobec
Definition: activation-quad-ref.hpp:19
contact3d.hpp
sobec::newcontacts::ResidualModelContactForceTpl::Scalar
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
Definition: contact-force.hpp:58
sobec::newcontacts::x
@ x
Definition: contact1d.hpp:26
sobec::newcontacts::ResidualModelContactForceTpl::calc
virtual void calc(const boost::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
Compute the contact force residual.
Definition: contact-force.hxx:30
sobec::newcontacts::ResidualModelContactForceTpl::Data
crocoddyl::ResidualDataContactForceTpl< Scalar > Data
Definition: contact-force.hpp:61
sobec::newcontacts::ResidualModelContactForceTpl::MathBase
crocoddyl::MathBaseTpl< Scalar > MathBase
Definition: contact-force.hpp:59
contact1d.hpp
sobec::newcontacts::ResidualModelContactForceTpl::VectorXs
MathBase::VectorXs VectorXs
Definition: contact-force.hpp:65
sobec::newcontacts::ResidualModelContactForceTpl::Base
crocoddyl::ResidualModelContactForceTpl< Scalar > Base
Definition: contact-force.hpp:60
contact-force.hxx
sobec::newcontacts::ResidualModelContactForceTpl::MatrixXs
MathBase::MatrixXs MatrixXs
Definition: contact-force.hpp:66