aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
integrator-midpoint.hpp
Go to the documentation of this file.
1
2#pragma once
3
5
6namespace aligator {
7namespace dynamics {
8template <typename Scalar> struct IntegratorMidpointDataTpl;
9
27template <typename _Scalar>
29 using Scalar = _Scalar;
36
38
40 const xyz::polymorphic<ContinuousDynamics> &cont_dynamics,
41 const Scalar timestep);
42
43 void evaluate(const ConstVectorRef &x, const ConstVectorRef &u,
44 const ConstVectorRef &y, BaseData &data) const;
45
46 void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u,
47 const ConstVectorRef &y, BaseData &data) const;
48
49 shared_ptr<BaseData> createData() const;
50};
51
52template <typename _Scalar>
54 using Scalar = _Scalar;
57
60 MatrixXs J_v_0;
61 MatrixXs J_v_1;
62 MatrixXs Jtm0;
63 MatrixXs Jtm1;
64
66 const IntegratorMidpointTpl<Scalar> &integrator)
67 : Base(integrator)
68 , x1_(integrator.space().neutral())
69 , dx1_(this->ndx1)
70 , J_v_0(this->ndx1, this->ndx1)
71 , J_v_1(this->ndx1, this->ndx1)
72 , Jtm0(this->ndx1, this->ndx1)
73 , Jtm1(this->ndx1, this->ndx1) {
74 x1_.setZero();
75 dx1_.setZero();
76 J_v_0.setZero();
77 J_v_1.setZero();
78 Jtm0.setZero();
79 Jtm1.setZero();
80 }
81};
82
83#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
84extern template struct IntegratorMidpointTpl<context::Scalar>;
85extern template struct IntegratorMidpointDataTpl<context::Scalar>;
86#endif
87
88} // namespace dynamics
89} // namespace aligator
Base definitions for numerical integrators.
Namespace for modelling system dynamics.
Main package namespace.
Base class for manifolds, to use in cost funcs, solvers...
Continuous dynamics described by differential-algebraic equations (DAEs) .
IntegratorAbstractTpl(const xyz::polymorphic< ContinuousDynamics > &cont_dynamics)
Constructor from instances of DynamicsType.
typename math_types< Scalar >::VectorXs VectorXs
IntegratorDataTpl(const IntegratorAbstractTpl< Scalar > &integrator)
IntegratorMidpointDataTpl(const IntegratorMidpointTpl< Scalar > &integrator)
void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, BaseData &data) const
IntegratorMidpointTpl(const xyz::polymorphic< ContinuousDynamics > &cont_dynamics, const Scalar timestep)
shared_ptr< BaseData > createData() const
IntegratorMidpointDataTpl< Scalar > Data
ContinuousDynamicsAbstractTpl< Scalar > ContinuousDynamics
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, BaseData &data) const