9#ifndef CROCODDYL_CORE_RESIDUALS_JOINT_ACCELERATION_HPP_ 10#define CROCODDYL_CORE_RESIDUALS_JOINT_ACCELERATION_HPP_ 12#include "crocoddyl/core/actuation-base.hpp" 13#include "crocoddyl/core/data/joint.hpp" 14#include "crocoddyl/core/fwd.hpp" 15#include "crocoddyl/core/residual-base.hpp" 36template <
typename _Scalar>
40 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
43 typedef _Scalar Scalar;
51 typedef typename MathBase::VectorXs VectorXs;
52 typedef typename MathBase::MatrixXs MatrixXs;
62 const VectorXs& aref,
const std::size_t nu);
73 const VectorXs& aref);
85 const std::size_t nu);
107 virtual void calc(
const std::shared_ptr<ResidualDataAbstract>& data,
108 const Eigen::Ref<const VectorXs>& x,
109 const Eigen::Ref<const VectorXs>& u)
override;
115 virtual void calc(
const std::shared_ptr<ResidualDataAbstract>& data,
116 const Eigen::Ref<const VectorXs>& x)
override;
125 virtual void calcDiff(
const std::shared_ptr<ResidualDataAbstract>& data,
126 const Eigen::Ref<const VectorXs>& x,
127 const Eigen::Ref<const VectorXs>& u)
override;
133 DataCollectorAbstract*
const data)
override;
145 template <
typename NewScalar>
163 virtual void print(std::ostream& os)
const override;
174template <
typename _Scalar>
175struct ResidualDataJointAccelerationTpl
176 :
public ResidualDataAbstractTpl<_Scalar> {
177 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
179 typedef _Scalar Scalar;
181 typedef ResidualDataAbstractTpl<Scalar> Base;
184 template <
template <
typename Scalar>
class Model>
185 ResidualDataJointAccelerationTpl(Model<Scalar>*
const model,
186 DataCollectorAbstract*
const data)
187 : Base(model, data) {
193 "Invalid argument: the shared data should be derived from " 194 "DataCollectorJoint");
198 virtual ~ResidualDataJointAccelerationTpl() =
default;
200 std::shared_ptr<JointDataAbstractTpl<Scalar> >
joint;
212#include "crocoddyl/core/residuals/joint-acceleration.hxx" 214CROCODDYL_DECLARE_EXTERN_TEMPLATE_CLASS(
216CROCODDYL_DECLARE_EXTERN_TEMPLATE_STRUCT(
Abstract class for the actuation-mapping model.
std::shared_ptr< StateAbstract > state_
ResidualModelAbstractTpl(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)
Initialize the residual model.
Define a joint-acceleration residual.
ResidualModelJointAccelerationTpl< NewScalar > cast() const
Cast the joint-acceleration residual model to a different scalar type.
ResidualModelJointAccelerationTpl(std::shared_ptr< StateAbstract > state, const std::size_t nu)
Initialize the joint-acceleration residual model.
ResidualModelJointAccelerationTpl(std::shared_ptr< StateAbstract > state)
Initialize the joint-acceleration residual model.
ResidualModelJointAccelerationTpl(std::shared_ptr< StateAbstract > state, const VectorXs &aref)
Initialize the joint-acceleration residual model.
virtual void calc(const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override
Compute the residual vector for nodes that depends only on the state.
virtual void calcDiff(const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute the derivatives of the joint-acceleration residual.
virtual std::shared_ptr< ResidualDataAbstract > createData(DataCollectorAbstract *const data) override
Create the joint-acceleration residual data.
void set_reference(const VectorXs &reference)
Modify the reference joint-acceleration vector.
ResidualModelJointAccelerationTpl(std::shared_ptr< StateAbstract > state, const VectorXs &aref, const std::size_t nu)
Initialize the joint-acceleration residual model.
virtual void calc(const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute the joint-acceleration residual.
virtual void print(std::ostream &os) const override
Print relevant information of the joint-acceleration residual.
const VectorXs & get_reference() const
Return the reference joint-acceleration vector.
Abstract class for the state representation.
DataCollectorAbstract * shared
std::shared_ptr< JointDataAbstractTpl< Scalar > > joint
Joint data.
DataCollectorAbstract * shared
Shared data allocated by the action model.