residual-com-velocity.hpp
Go to the documentation of this file.
1 // BSD 3-Clause License
3 //
4 // Copyright (C) 2021, University of Edinburgh
5 // Copyright note valid unless otherwise stated in individual files.
6 // All rights reserved.
8 
9 #ifndef SOBEC_RESIDUAL_COM_VELOCITY_HPP_
10 #define SOBEC_RESIDUAL_COM_VELOCITY_HPP_
11 
12 #include <crocoddyl/core/residual-base.hpp>
13 #include <crocoddyl/multibody/data/multibody.hpp>
14 #include <crocoddyl/multibody/fwd.hpp>
15 #include <crocoddyl/multibody/states/multibody.hpp>
16 
17 #include "sobec/fwd.hpp"
18 
19 namespace sobec {
20 using namespace crocoddyl;
21 
22 template <typename _Scalar>
23 struct ResidualDataCoMVelocityTpl : public ResidualDataAbstractTpl<_Scalar> {
24  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
25 
26  typedef _Scalar Scalar;
27  typedef MathBaseTpl<Scalar> MathBase;
28  typedef ResidualDataAbstractTpl<Scalar> Base;
29  typedef DataCollectorAbstractTpl<Scalar> DataCollectorAbstract;
30  typedef typename MathBase::Matrix3xs Matrix3xs;
31 
32  template <template <typename Scalar> class Model>
33  ResidualDataCoMVelocityTpl(Model<Scalar>* const model,
34  DataCollectorAbstract* const data)
35  : Base(model, data), dvcom_dq(3, model->get_state()->get_nv()) {
36  dvcom_dq.setZero();
37  // Check that proper shared data has been passed
38  DataCollectorMultibodyTpl<Scalar>* d =
39  dynamic_cast<DataCollectorMultibodyTpl<Scalar>*>(shared);
40  if (d == NULL) {
41  throw_pretty(
42  "Invalid argument: the shared data should be derived from "
43  "DataCollectorMultibody");
44  }
45 
46  // Avoids data casting at runtime
47  pinocchio = d->pinocchio;
48  }
50  pinocchio::DataTpl<Scalar>* pinocchio;
51  using Base::r;
52  using Base::Ru;
53  using Base::Rx;
54  using Base::shared;
55 };
56 
72 template <typename _Scalar>
73 class ResidualModelCoMVelocityTpl : public ResidualModelAbstractTpl<_Scalar> {
74  public:
75  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
76 
77  typedef _Scalar Scalar;
78  typedef MathBaseTpl<Scalar> MathBase;
79  typedef ResidualModelAbstractTpl<Scalar> Base;
81  typedef StateMultibodyTpl<Scalar> StateMultibody;
82  typedef ResidualDataAbstractTpl<Scalar> ResidualDataAbstract;
83  typedef DataCollectorAbstractTpl<Scalar> DataCollectorAbstract;
84  typedef typename MathBase::Vector3s Vector3s;
85  typedef typename MathBase::VectorXs VectorXs;
86  typedef typename MathBase::MatrixXs MatrixXs;
87 
95  ResidualModelCoMVelocityTpl(boost::shared_ptr<StateMultibody> state,
96  const Vector3s& vref, const std::size_t nu);
97 
106  ResidualModelCoMVelocityTpl(boost::shared_ptr<StateMultibody> state,
107  const Vector3s& vref);
108  virtual ~ResidualModelCoMVelocityTpl();
109 
117  virtual void calc(const boost::shared_ptr<ResidualDataAbstract>& data,
118  const Eigen::Ref<const VectorXs>& x,
119  const Eigen::Ref<const VectorXs>& u);
120 
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  virtual boost::shared_ptr<ResidualDataAbstract> createData(
132  DataCollectorAbstract* const data);
133 
137  const Vector3s& get_reference() const;
138 
142  void set_reference(const Vector3s& vref);
143 
144  protected:
145  using Base::nu_;
146  using Base::state_;
147  using Base::u_dependent_;
148  using Base::unone_;
149  using Base::v_dependent_;
150 
151  private:
152  Vector3s vref_;
153  typename StateMultibody::PinocchioModel
154  pin_model_;
155 };
156 
157 } // namespace sobec
158 
159 /* --- Details -------------------------------------------------------------- */
160 /* --- Details -------------------------------------------------------------- */
161 /* --- Details -------------------------------------------------------------- */
162 
164 
165 #endif // SOBEC_RESIDUAL_COM_VELOCITY_HPP_
sobec::ResidualDataCoMVelocityTpl::ResidualDataCoMVelocityTpl
ResidualDataCoMVelocityTpl(Model< Scalar > *const model, DataCollectorAbstract *const data)
Definition: residual-com-velocity.hpp:33
sobec::ResidualModelCoMVelocityTpl::Scalar
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
Definition: residual-com-velocity.hpp:77
sobec::ResidualModelCoMVelocityTpl::Base
ResidualModelAbstractTpl< Scalar > Base
Definition: residual-com-velocity.hpp:79
fwd.hpp
residual-com-velocity.hxx
sobec::ResidualModelCoMVelocityTpl::MatrixXs
MathBase::MatrixXs MatrixXs
Definition: residual-com-velocity.hpp:86
sobec::ResidualModelCoMVelocityTpl::DataCollectorAbstract
DataCollectorAbstractTpl< Scalar > DataCollectorAbstract
Definition: residual-com-velocity.hpp:83
sobec::ResidualModelCoMVelocityTpl::Data
ResidualDataCoMVelocityTpl< Scalar > Data
Definition: residual-com-velocity.hpp:80
sobec::ResidualModelCoMVelocityTpl::Vector3s
MathBase::Vector3s Vector3s
Definition: residual-com-velocity.hpp:84
sobec::ResidualModelCoMVelocityTpl::VectorXs
MathBase::VectorXs VectorXs
Definition: residual-com-velocity.hpp:85
sobec::ResidualModelCoMVelocityTpl::StateMultibody
StateMultibodyTpl< Scalar > StateMultibody
Definition: residual-com-velocity.hpp:81
sobec::ResidualModelCoMVelocityTpl::ResidualDataAbstract
ResidualDataAbstractTpl< Scalar > ResidualDataAbstract
Definition: residual-com-velocity.hpp:82
sobec
Definition: activation-quad-ref.hpp:19
sobec::ResidualDataCoMVelocityTpl::DataCollectorAbstract
DataCollectorAbstractTpl< Scalar > DataCollectorAbstract
Definition: residual-com-velocity.hpp:29
sobec::ResidualDataCoMVelocityTpl
Definition: residual-com-velocity.hpp:23
sobec::newcontacts::x
@ x
Definition: contact1d.hpp:26
sobec::ResidualDataCoMVelocityTpl::dvcom_dq
Matrix3xs dvcom_dq
Definition: residual-com-velocity.hpp:49
sobec::ResidualDataCoMVelocityTpl::pinocchio
pinocchio::DataTpl< Scalar > * pinocchio
Pinocchio data.
Definition: residual-com-velocity.hpp:50
sobec::ResidualDataCoMVelocityTpl::Scalar
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
Definition: residual-com-velocity.hpp:26
sobec::ResidualModelCoMVelocityTpl
CoM velocity residual.
Definition: residual-com-velocity.hpp:73
sobec::ResidualDataCoMVelocityTpl::MathBase
MathBaseTpl< Scalar > MathBase
Definition: residual-com-velocity.hpp:27
sobec::ResidualDataCoMVelocityTpl::Base
ResidualDataAbstractTpl< Scalar > Base
Definition: residual-com-velocity.hpp:28
sobec::ResidualModelCoMVelocityTpl::MathBase
MathBaseTpl< Scalar > MathBase
Definition: residual-com-velocity.hpp:78
sobec::ResidualDataCoMVelocityTpl::Matrix3xs
MathBase::Matrix3xs Matrix3xs
Definition: residual-com-velocity.hpp:30