aligator  0.6.1
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
integrator-rk2.hpp
Go to the documentation of this file.
1
2#pragma once
3
5
6namespace aligator {
7namespace dynamics {
8template <typename Scalar> struct IntegratorRK2DataTpl;
9
18template <typename _Scalar>
20 using Scalar = _Scalar;
22 using Base = ExplicitIntegratorAbstractTpl<Scalar>;
23 using BaseData = ExplicitDynamicsDataTpl<Scalar>;
24 using Data = IntegratorRK2DataTpl<Scalar>;
25 using ODEType = typename Base::ODEType;
27
29
30 IntegratorRK2Tpl(const shared_ptr<ODEType> &cont_dynamics,
31 const Scalar timestep);
32 void forward(const ConstVectorRef &x, const ConstVectorRef &u,
33 BaseData &data) const;
34 void dForward(const ConstVectorRef &x, const ConstVectorRef &u,
35 BaseData &data) const;
36
37 shared_ptr<StageFunctionDataTpl<Scalar>> createData() const {
38 return std::make_shared<Data>(this);
39 }
40
41protected:
43};
44
45template <typename Scalar>
48 using Base = ExplicitIntegratorDataTpl<Scalar>;
49 using ODEData = ODEDataTpl<Scalar>;
50 shared_ptr<ODEData> continuous_data2;
51
52 VectorXs x1_;
53 VectorXs dx1_;
54
55 explicit IntegratorRK2DataTpl(const IntegratorRK2Tpl<Scalar> *integrator);
56
57 using Base::dx_;
58 using Base::Jtmp_xnext;
59 using Base::Ju_;
60 using Base::Jx_;
61 using Base::xnext_;
62};
63
64} // namespace dynamics
65} // namespace aligator
66
67#include "aligator/modelling/dynamics/integrator-rk2.hxx"
68
69#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
70#include "aligator/modelling/dynamics/integrator-rk2.txx"
71#endif
Base definitions for explicit integrators.
Main package namespace.
ManifoldPtr space_next_
State space for the output of this dynamics model.
Definition dynamics.hpp:29
VectorXs dx_
Difference vector between current state x and xnext_.
MatrixRef Jx_
Jacobian with respect to .
MatrixRef Ju_
Jacobian with respect to .
IntegratorRK2DataTpl(const IntegratorRK2Tpl< Scalar > *integrator)
Second-order Runge-Kutta integrator.
shared_ptr< StageFunctionDataTpl< Scalar > > createData() const
Instantiate a Data object.
IntegratorRK2Tpl(const shared_ptr< ODEType > &cont_dynamics, const Scalar timestep)
IntegratorRK2DataTpl< Scalar > Data
void dForward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Compute the Jacobians of the forward dynamics.
void forward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the forward discrete dynamics.