aligator  0.6.1
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
4#include "./fwd.hpp"
5#include <proxsuite-nlp/modelling/spaces/multibody.hpp>
6#include <pinocchio/algorithm/frames-derivatives.hpp>
7
8namespace aligator {
9
11template <typename _Scalar>
13 using Scalar = _Scalar;
15 static constexpr int NR = 2;
16
17 using Base = UnaryFunctionTpl<Scalar>;
18 using BaseData = StageFunctionDataTpl<Scalar>;
19 using PhaseSpace = proxsuite::nlp::MultibodyPhaseSpace<Scalar>;
20
21 struct Data;
22
23 FlyHighResidualTpl(shared_ptr<PhaseSpace> space,
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 allocate_shared_eigen_aligned<Data>(*this);
32 }
33
34 const auto &getModel() const { return pmodel_; }
35
37
38private:
39 pinocchio::ModelTpl<Scalar> pmodel_;
40};
41
42template <typename Scalar>
44
45template <typename Scalar>
47 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
48 using BaseData::ndx1;
49 using BaseData::nr;
50 using BaseData::nu;
51
53 : BaseData(model.ndx1, model.nu, model.ndx2, model.nr),
54 pdata_(model.pmodel_), d_dq(6, model.pmodel_.nv),
55 d_dv(6, model.pmodel_.nv), l_dnu_dq(6, model.pmodel_.nv),
56 l_dnu_dv(6, model.pmodel_.nv), o_dv_dq(3, model.pmodel_.nv),
57 o_dv_dv(3, model.pmodel_.nv), vxJ(3, model.pmodel_.nv) {
58 d_dq.setZero();
59 d_dv.setZero();
60 l_dnu_dq.setZero();
61 l_dnu_dv.setZero();
62 o_dv_dq.setZero();
63 o_dv_dv.setZero();
64 vxJ.setZero();
65 }
66
67 pinocchio::DataTpl<Scalar> pdata_;
68 Matrix6Xs d_dq, d_dv;
69 Matrix6Xs l_dnu_dq, l_dnu_dv;
70 Matrix3Xs o_dv_dq, o_dv_dv, vxJ;
72};
73
74} // namespace aligator
75
76#include "aligator/modelling/multibody/fly-high.hxx"
77
78#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
79#include "./fly-high.txx"
80#endif
Main package namespace.
typename FlyHighResidualTpl< Scalar >::Data FlyHighResidualDataTpl
Definition fly-high.hpp:43
Data(FlyHighResidualTpl const &model)
Definition fly-high.hpp:52
pinocchio::DataTpl< Scalar > pdata_
Definition fly-high.hpp:67
A port of sobec's ResidualModelFlyHighTpl.
Definition fly-high.hpp:12
static constexpr int NR
Definition fly-high.hpp:15
FlyHighResidualTpl(shared_ptr< PhaseSpace > space, const pinocchio::FrameIndex frame_id, Scalar slope, int nu)
proxsuite::nlp::MultibodyPhaseSpace< Scalar > PhaseSpace
Definition fly-high.hpp:19
void evaluate(const ConstVectorRef &x, BaseData &data) const
void computeJacobians(const ConstVectorRef &x, BaseData &data) const
const auto & getModel() const
Definition fly-high.hpp:34
shared_ptr< BaseData > createData() const
Instantiate a Data object.
Definition fly-high.hpp:30
const int ndx2
Next state dimension.
const int nu
Control dimension.
const int ndx1
Current state dimension.
const int nr
Function codimension.
Represents unary functions of the form , with no control (or next-state) arguments.