aligator  0.6.1
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;
31 using Base = IntegratorAbstractTpl<Scalar>;
32 using ContinuousDynamics = ContinuousDynamicsAbstractTpl<Scalar>;
33 using Manifold = ManifoldAbstractTpl<Scalar>;
34 using Data = IntegratorMidpointDataTpl<Scalar>;
35
37
38 IntegratorMidpointTpl(const shared_ptr<ContinuousDynamics> &cont_dynamics,
39 const Scalar timestep);
40
41 void evaluate(const ConstVectorRef &x, const ConstVectorRef &u,
42 const ConstVectorRef &y, DynamicsDataTpl<Scalar> &data) const;
43
44 void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u,
45 const ConstVectorRef &y,
46 DynamicsDataTpl<Scalar> &data) const;
47
48 shared_ptr<DynamicsDataTpl<Scalar>> createData() const;
49};
50
51template <typename _Scalar>
53 using Scalar = _Scalar;
55 using Base = IntegratorDataTpl<Scalar>;
56
59 MatrixXs J_v_0;
60 MatrixXs J_v_1;
61 MatrixXs Jtm0;
62 MatrixXs Jtm1;
63
65 const IntegratorMidpointTpl<Scalar> *integrator)
66 : Base(integrator), x1_(integrator->space().neutral()), dx1_(this->ndx1),
67 J_v_0(this->ndx1, this->ndx1), J_v_1(this->ndx1, this->ndx1),
68 Jtm0(this->ndx1, this->ndx1), Jtm1(this->ndx1, this->ndx1) {
69 x1_.setZero();
70 dx1_.setZero();
71 J_v_0.setZero();
72 J_v_1.setZero();
73 Jtm0.setZero();
74 Jtm1.setZero();
75 }
76};
77
78} // namespace dynamics
79} // namespace aligator
80
81#include "aligator/modelling/dynamics/integrator-midpoint.hxx"
Base definitions for numerical integrators.
Main package namespace.
Base class for (implicit) numerical integrators.
Data class for numerical integrators (IntegratorAbstractTpl).
typename math_types< Scalar >::VectorXs VectorXs
IntegratorMidpointDataTpl(const IntegratorMidpointTpl< Scalar > *integrator)
void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, DynamicsDataTpl< Scalar > &data) const
shared_ptr< DynamicsDataTpl< Scalar > > createData() const
Instantiate a Data object.
IntegratorMidpointTpl(const shared_ptr< ContinuousDynamics > &cont_dynamics, const Scalar timestep)
IntegratorMidpointDataTpl< Scalar > Data
ContinuousDynamicsAbstractTpl< Scalar > ContinuousDynamics
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, DynamicsDataTpl< Scalar > &data) const