6#include <pinocchio/multibody/model.hpp>
7#include <pinocchio/algorithm/center-of-mass.hpp>
11template <
typename Scalar>
struct CentroidalMomentumDerivativeDataTpl;
18template <
typename _Scalar>
24 using Base = StageFunctionTpl<Scalar>;
26 using Model = pinocchio::ModelTpl<Scalar>;
27 using SE3 = pinocchio::SE3Tpl<Scalar>;
28 using Data = CentroidalMomentumDerivativeDataTpl<Scalar>;
38 const int ndx,
const Model &model,
const Vector3s &gravity,
39 const std::vector<bool> &contact_states,
40 const std::vector<pinocchio::FrameIndex> &contact_ids,
42 :
Base(ndx, (int)contact_states.size() * force_size + model.nv - 6, 6),
45 mass_ = pinocchio::computeTotalMass(model);
48 fmt::format(
"contact_ids and contact_states should have same size: "
54 void evaluate(
const ConstVectorRef &x,
const ConstVectorRef &u,
55 const ConstVectorRef &,
BaseData &data)
const;
58 const ConstVectorRef &,
BaseData &data)
const;
61 return allocate_shared_eigen_aligned<Data>(
this);
65template <
typename Scalar>
67 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
68 using Base = StageFunctionDataTpl<Scalar>;
69 using PinData = pinocchio::DataTpl<Scalar>;
70 using Matrix3Xs =
typename math_types<Scalar>::Matrix3Xs;
71 using Matrix6Xs =
typename math_types<Scalar>::Matrix6Xs;
81 const CentroidalMomentumDerivativeResidualTpl<Scalar> *model);
86#include "aligator/modelling/multibody/centroidal-momentum-derivative.hxx"
88#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
89#include "./centroidal-momentum-derivative.txx"
#define ALIGATOR_DOMAIN_ERROR(msg)
Base definitions for ternary functions.
CentroidalMomentumDerivativeDataTpl(const CentroidalMomentumDerivativeResidualTpl< Scalar > *model)
typename math_types< Scalar >::Matrix3Xs Matrix3Xs
PinData pin_data_
Pinocchio data object.
typename math_types< Scalar >::Matrix6Xs Matrix6Xs
Eigen::Matrix< Scalar, 3, 3 > Matrix3s
pinocchio::DataTpl< Scalar > PinData
This residual returns the derivative of centroidal momentum for a kinodynamics model.
void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &, BaseData &data) const
pinocchio::SE3Tpl< Scalar > SE3
std::vector< bool > contact_states_
CentroidalMomentumDerivativeResidualTpl(const int ndx, const Model &model, const Vector3s &gravity, const std::vector< bool > &contact_states, const std::vector< pinocchio::FrameIndex > &contact_ids, const int force_size)
shared_ptr< BaseData > createData() const
Instantiate a Data object.
CentroidalMomentumDerivativeDataTpl< Scalar > Data
pinocchio::ModelTpl< Scalar > Model
typename Base::Data BaseData
std::vector< pinocchio::FrameIndex > contact_ids_
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &, BaseData &data) const
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
Base struct for function data.
Class representing ternary functions .
StageFunctionDataTpl< Scalar > Data