aligator  0.6.1
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
continuous-dynamics-abstract.hpp
Go to the documentation of this file.
1
4#pragma once
5
6#include "aligator/fwd.hpp"
8#include <proxsuite-nlp/manifold-base.hpp>
9
10namespace aligator {
11namespace dynamics {
12
18template <typename _Scalar> struct ContinuousDynamicsAbstractTpl {
19 using Scalar = _Scalar;
21 using Manifold = ManifoldAbstractTpl<Scalar>;
22 using ManifoldPtr = shared_ptr<Manifold>;
23 using Data = ContinuousDynamicsDataTpl<Scalar>;
24
28 const int nu_;
29
30 inline int ndx() const { return space_->ndx(); }
31 inline int nu() const { return nu_; }
32
34 inline const Manifold &space() const { return *space_; }
35
37
38 virtual ~ContinuousDynamicsAbstractTpl() = default;
39
45 virtual void evaluate(const ConstVectorRef &x, const ConstVectorRef &u,
46 const ConstVectorRef &xdot, Data &data) const = 0;
47
53 virtual void computeJacobians(const ConstVectorRef &x,
54 const ConstVectorRef &u,
55 const ConstVectorRef &xdot,
56 Data &data) const = 0;
57
59 virtual shared_ptr<Data> createData() const;
60};
61
63template <typename _Scalar> struct ContinuousDynamicsDataTpl {
64 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
65 using Scalar = _Scalar;
67
69 VectorXs value_;
71 MatrixXs Jx_;
73 MatrixXs Ju_;
75 MatrixXs Jxdot_;
77 VectorXs xdot_;
78
79 ContinuousDynamicsDataTpl(const int ndx, const int nu);
80
81 // marks this type as polymorphic; required for Boost.Python
82 virtual ~ContinuousDynamicsDataTpl() = default;
83};
84
85} // namespace dynamics
86} // namespace aligator
87
88#include "aligator/modelling/dynamics/continuous-dynamics-abstract.hxx"
89
90#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
91#include "aligator/modelling/dynamics/continuous-dynamics-abstract.txx"
92#endif
Forward declarations.
Main package namespace.
Continuous dynamics described by differential-algebraic equations (DAEs) .
ContinuousDynamicsAbstractTpl(ManifoldPtr space, const int nu)
virtual shared_ptr< Data > createData() const
Create a data holder instance.
const Manifold & space() const
Return a reference to the state space.
virtual void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xdot, Data &data) const =0
Differentiate the vector field.
virtual void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xdot, Data &data) const =0
Evaluate the vector field at a point .
VectorXs xdot_
Time derivative , output of ODE model.
ContinuousDynamicsDataTpl(const int ndx, const int nu)