10 #ifndef CROCODDYL_MULTIBODY_RESIDUALS_CONTROL_GRAVITY_HPP_
11 #define CROCODDYL_MULTIBODY_RESIDUALS_CONTROL_GRAVITY_HPP_
13 #include "crocoddyl/core/residual-base.hpp"
14 #include "crocoddyl/multibody/data/multibody.hpp"
15 #include "crocoddyl/multibody/states/multibody.hpp"
35 template <
typename _Scalar>
38 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
41 typedef _Scalar Scalar;
48 typedef typename MathBase::VectorXs VectorXs;
49 typedef typename MathBase::MatrixXs MatrixXs;
58 const std::size_t nu);
77 virtual void calc(
const std::shared_ptr<ResidualDataAbstract> &data,
78 const Eigen::Ref<const VectorXs> &x,
79 const Eigen::Ref<const VectorXs> &u)
override;
85 virtual void calc(
const std::shared_ptr<ResidualDataAbstract> &data,
86 const Eigen::Ref<const VectorXs> &x)
override;
95 virtual void calcDiff(
const std::shared_ptr<ResidualDataAbstract> &data,
96 const Eigen::Ref<const VectorXs> &x,
97 const Eigen::Ref<const VectorXs> &u)
override;
104 virtual void calcDiff(
const std::shared_ptr<ResidualDataAbstract> &data,
105 const Eigen::Ref<const VectorXs> &x)
override;
119 template <
typename NewScalar>
127 virtual void print(std::ostream &os)
const override;
135 typename StateMultibody::PinocchioModel
139 template <
typename _Scalar>
141 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
143 typedef _Scalar Scalar;
148 typedef pinocchio::DataTpl<Scalar> PinocchioData;
150 template <
template <
typename Scalar>
class Model>
153 :
Base(model, data) {
159 "Invalid argument: the shared data should be derived from "
160 "DataCollectorActMultibodyTpl");
171 std::shared_ptr<ActuationDataAbstractTpl<Scalar> >
184 #include "crocoddyl/multibody/residuals/control-gravity.hxx"
Abstract class for residual models.
std::shared_ptr< StateAbstract > state_
State description.
std::size_t nu_
Control dimension.
Control gravity residual.
virtual void calc(const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override
virtual void calcDiff(const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute the Jacobians of the control gravity residual.
ResidualModelControlGravTpl(std::shared_ptr< StateMultibody > state)
Initialize the control gravity residual model.
ResidualModelControlGravTpl< NewScalar > cast() const
Cast the control-gravity residual model to a different scalar type.
virtual void calc(const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute the control gravity residual.
ResidualModelControlGravTpl(std::shared_ptr< StateMultibody > state, const std::size_t nu)
Initialize the control gravity residual model.
virtual void print(std::ostream &os) const override
Print relevant information of the control-grav residual.
virtual std::shared_ptr< ResidualDataAbstract > createData(DataCollectorAbstract *const data) override
Create the residual data.
virtual void calcDiff(const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override
State multibody representation.
const std::shared_ptr< PinocchioModel > & get_pinocchio() const
Return the Pinocchio model (i.e., model of the rigid body system)
MatrixXs Ru
Jacobian of the residual vector with respect the control.
MatrixXs Rx
Jacobian of the residual vector with respect the state.
DataCollectorAbstract * shared
Shared data allocated by the action model.
VectorXs r
Residual vector.
PinocchioData pinocchio
Pinocchio data.
std::shared_ptr< ActuationDataAbstractTpl< Scalar > > actuation
Actuation data.
DataCollectorAbstract * shared
Shared data allocated by the action model.