aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
fly-high.hpp
Go to the documentation of this file.
1#pragma once
2
3#ifdef ALIGATOR_WITH_PINOCCHIO
5#include "./fwd.hpp"
7
8namespace aligator {
9
11template <typename _Scalar>
12struct FlyHighResidualTpl : UnaryFunctionTpl<_Scalar>, frame_api {
13 using Scalar = _Scalar;
15 static constexpr int NR = 2;
16
17 using Base = UnaryFunctionTpl<Scalar>;
18 using BaseData = StageFunctionDataTpl<Scalar>;
19 using Model = pinocchio::ModelTpl<Scalar>;
20
21 struct Data;
22
23 FlyHighResidualTpl(const int ndx, const Model &model,
24 const pinocchio::FrameIndex frame_id, Scalar slope,
25 int nu);
26
27 void evaluate(const ConstVectorRef &x, BaseData &data) const;
28 void computeJacobians(const ConstVectorRef &x, BaseData &data) const;
29
30 shared_ptr<BaseData> createData() const {
31 return std::make_shared<Data>(*this);
32 }
33
34 const auto &getModel() const { return pin_model_; }
35
36 Scalar slope_;
37
38private:
39 Model pin_model_;
40};
41
42template <typename Scalar>
43using FlyHighResidualDataTpl = typename FlyHighResidualTpl<Scalar>::Data;
44
45template <typename Scalar>
46struct FlyHighResidualTpl<Scalar>::Data : StageFunctionDataTpl<Scalar> {
47 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
48 using BaseData::ndx1;
49 using BaseData::nr;
50 using BaseData::nu;
51
52 Data(FlyHighResidualTpl const &model)
53 : BaseData(model.ndx1, model.nu, model.nr)
54 , pdata_(model.pin_model_)
55 , d_dq(6, model.pin_model_.nv)
56 , d_dv(6, model.pin_model_.nv)
57 , l_dnu_dq(6, model.pin_model_.nv)
58 , l_dnu_dv(6, model.pin_model_.nv)
59 , o_dv_dq(3, model.pin_model_.nv)
60 , o_dv_dv(3, model.pin_model_.nv)
61 , vxJ(3, model.pin_model_.nv) {
62 d_dq.setZero();
63 d_dv.setZero();
64 l_dnu_dq.setZero();
65 l_dnu_dv.setZero();
66 o_dv_dq.setZero();
67 o_dv_dv.setZero();
68 vxJ.setZero();
69 }
70
71 pinocchio::DataTpl<Scalar> pdata_;
72 Matrix6Xs d_dq, d_dv;
73 Matrix6Xs l_dnu_dq, l_dnu_dv;
74 Matrix3Xs o_dv_dq, o_dv_dv, vxJ;
75 Scalar ez;
76};
77
78} // namespace aligator
79
80#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
81#include "aligator/modelling/multibody/fly-high.txx"
82#endif
83#endif
#define ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
Definition math.hpp:8
::aligator::context::Scalar Scalar
Definition context.hpp:14
Main package namespace.
Base struct for function data.
Represents unary functions of the form , with no control (or next-state) arguments.