Crocoddyl
Loading...
Searching...
No Matches
linear.hpp
1
2// BSD 3-Clause License
3//
4// Copyright (C) 2026, Heriot-Watt University
5// Copyright note valid unless otherwise stated in individual files.
6// All rights reserved.
8
9#ifndef CROCODDYL_CORE_GUIDANCE_LINEAR_HPP_
10#define CROCODDYL_CORE_GUIDANCE_LINEAR_HPP_
11
12#include "crocoddyl/core/guidance-base.hpp"
13
14namespace crocoddyl {
15
25template <typename _Scalar>
27 public:
28 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
29 CROCODDYL_DERIVED_CAST(GuidanceModelBase, GuidanceModelLinearTpl)
30
31 typedef _Scalar Scalar;
33 typedef MathBaseTpl<Scalar> MathBase;
34 typedef typename Base::GuidanceDataAbstract GuidanceDataAbstract;
35 typedef typename MathBase::VectorXs VectorXs;
36 typedef typename MathBase::MatrixXs MatrixXs;
37
43 explicit GuidanceModelLinearTpl(const MatrixXs& gain);
44
50 explicit GuidanceModelLinearTpl(const VectorXs& diagonal_gain);
51
58 GuidanceModelLinearTpl(const std::size_t nr, const Scalar& gain);
59 virtual ~GuidanceModelLinearTpl() = default;
60
67 virtual void calc(const std::shared_ptr<GuidanceDataAbstract>& data,
68 const Eigen::Ref<const VectorXs>& error) const override;
69
76 virtual void calcDiff(const std::shared_ptr<GuidanceDataAbstract>& data,
77 const Eigen::Ref<const VectorXs>& error) const override;
78
84 const MatrixXs& get_gain() const;
85
89 template <typename NewScalar>
91
97 void set_gain(const MatrixXs& gain);
98
104 virtual void print(std::ostream& os) const override;
105
106 private:
107 MatrixXs gain_;
108
109 using Base::checkErrorDimension;
110 using Base::checkJacobianDimension;
111 using Base::checkRateDimension;
112 using Base::nr_;
113};
114
115} // namespace crocoddyl
116
117/* --- Details -------------------------------------------------------------- */
118#include "crocoddyl/core/guidance/linear.hxx"
119
120CROCODDYL_DECLARE_EXTERN_TEMPLATE_CLASS(crocoddyl::GuidanceModelLinearTpl)
121
122#endif // CROCODDYL_CORE_GUIDANCE_LINEAR_HPP_
GuidanceModelAbstractTpl(const std::size_t nr)
Initialize the guidance-model dimension.
Linear converging guidance model.
Definition linear.hpp:26
virtual void calc(const std::shared_ptr< GuidanceDataAbstract > &data, const Eigen::Ref< const VectorXs > &error) const override
Compute .
const MatrixXs & get_gain() const
Return the feedback-gain matrix.
virtual void calcDiff(const std::shared_ptr< GuidanceDataAbstract > &data, const Eigen::Ref< const VectorXs > &error) const override
Compute .
GuidanceModelLinearTpl< NewScalar > cast() const
Cast the guidance model to a different scalar type.
GuidanceModelLinearTpl(const MatrixXs &gain)
Initialize the model from a full gain matrix.
GuidanceModelLinearTpl(const std::size_t nr, const Scalar &gain)
Initialize the model from a scalar gain.
GuidanceModelLinearTpl(const VectorXs &diagonal_gain)
Initialize the model from a diagonal gain vector.
virtual void print(std::ostream &os) const override
Print the model parameters.
void set_gain(const MatrixXs &gain)
Set the feedback-gain matrix.