9#ifndef CROCODDYL_MULTIBODY_TASKS_CENTROIDAL_MOMENTUM_HPP_ 10#define CROCODDYL_MULTIBODY_TASKS_CENTROIDAL_MOMENTUM_HPP_ 12#include "crocoddyl/core/task-base.hpp" 13#include "crocoddyl/multibody/data/multibody.hpp" 14#include "crocoddyl/multibody/fwd.hpp" 15#include "crocoddyl/multibody/states/multibody.hpp" 41template <
typename _Scalar>
44 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
47 typedef _Scalar Scalar;
54 typedef typename MathBase::Vector6s Vector6s;
55 typedef typename MathBase::VectorXs VectorXs;
66 const Vector6s& href,
const Vector6s& hdot_ref,
67 const std::size_t nu);
80 const Vector6s& hdot_ref);
92 const Vector6s& href,
const std::size_t nu);
104 const Vector6s& href);
107 virtual void calc(
const std::shared_ptr<TaskDataAbstract>& data,
108 const Eigen::Ref<const VectorXs>& x,
109 const Eigen::Ref<const VectorXs>& u)
override;
111 virtual void calcDiff(
const std::shared_ptr<TaskDataAbstract>& data,
112 const Eigen::Ref<const VectorXs>& x,
113 const Eigen::Ref<const VectorXs>& u)
override;
116 DataCollectorAbstract*
const data)
override;
118 template <
typename NewScalar>
121 const Vector6s& get_reference()
const;
122 const Vector6s& get_rate_reference()
const;
123 void set_reference(
const Vector6s& href);
124 void set_rate_reference(
const Vector6s& hdot_ref);
126 virtual void print(std::ostream& os)
const override;
136 std::shared_ptr<typename StateMultibody::PinocchioModel> pin_model_;
142template <
typename _Scalar>
144 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
146 typedef _Scalar Scalar;
150 typedef typename MathBase::Vector6s Vector6s;
151 typedef typename MathBase::Matrix6xs Matrix6xs;
161 template <
template <
typename Scalar>
class Model>
163 DataCollectorAbstract*
const data)
165 hdot(Vector6s::Zero()),
166 dh_dq(6, model->get_state()->get_nv()),
167 dhdot_dq(6, model->get_state()->get_nv()),
168 dhdot_dv(6, model->get_state()->get_nv()),
169 dhdot_da(6, model->get_state()->get_nv()) {
179 "Invalid argument: the shared data should be derived from " 180 "DataCollectorMultibody");
193 std::shared_ptr<JointDataAbstractTpl<Scalar>>
207#include "crocoddyl/multibody/tasks/centroidal-momentum.hxx" 209CROCODDYL_DECLARE_EXTERN_TEMPLATE_CLASS(
211CROCODDYL_DECLARE_EXTERN_TEMPLATE_STRUCT(
State multibody representation.
TaskModelAbstractTpl(std::shared_ptr< StateAbstract > state, const std::size_t nr, const std::size_t nu, const bool q_dependent=true, const bool v_dependent=true, const bool u_dependent=true, const bool has_acceleration=true)
Initialize the task model.
Centroidal-momentum task model.
virtual void calcDiff(const std::shared_ptr< TaskDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute task Jacobians using values stored by calc().
TaskModelCentroidalMomentumTpl(std::shared_ptr< StateMultibody > state, const Vector6s &href, const Vector6s &hdot_ref, const std::size_t nu)
Initialize with momentum and momentum-rate references.
TaskModelCentroidalMomentumTpl(std::shared_ptr< StateMultibody > state, const Vector6s &href, const Vector6s &hdot_ref)
Initialize with momentum and momentum-rate references.
TaskModelCentroidalMomentumTpl(std::shared_ptr< StateMultibody > state, const Vector6s &href, const std::size_t nu)
Initialize with a constant momentum reference.
virtual std::shared_ptr< TaskDataAbstract > createData(DataCollectorAbstract *const data) override
Allocate task data and bind it to the action model's shared data.
TaskModelCentroidalMomentumTpl(std::shared_ptr< StateMultibody > state, const Vector6s &href)
Initialize with a constant momentum reference.
virtual void calc(const std::shared_ptr< TaskDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute the task quantity, rate, and acceleration.
virtual void print(std::ostream &os) const override
Print relevant information about the task model.
Preallocated values and derivatives produced by a task model.
TaskDataAbstractTpl(TaskModelAbstract *const model, DataCollectorAbstract *const data)
Allocate and initialize the common task data.
DataCollectorAbstract * shared
Cached values and derivatives for the centroidal-momentum task.
TaskDataCentroidalMomentumTpl(Model< Scalar > *const model, DataCollectorAbstract *const data)
Bind the task data to the shared Pinocchio data and, optionally, joint data.
std::shared_ptr< JointDataAbstractTpl< Scalar > > joint
DataCollectorAbstract * shared
pinocchio::DataTpl< Scalar > * pinocchio