aligator  0.16.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
integrator-explicit.hpp
Go to the documentation of this file.
1#pragma once
5
8
9namespace aligator {
10namespace dynamics {
11
18template <typename _Scalar>
20 using Scalar = _Scalar;
23 using typename Base::Data;
25
26 using Base::dForward;
27 using Base::forward;
28 using Base::ndx1;
29 using Base::ndx2;
30 using Base::nu;
33
34 xyz::polymorphic<ODEType> ode_;
35
36 template <typename U> U *getDynamics() { return dynamic_cast<U *>(&*ode_); }
37 template <typename U> const U *getDynamics() const {
38 return dynamic_cast<const U *>(&*ode_);
39 }
40
42 const xyz::polymorphic<ODEType> &cont_dynamics)
43 : Base(cont_dynamics->space_, cont_dynamics->nu())
44 , ode_(cont_dynamics) {}
45
46 virtual ~ExplicitIntegratorAbstractTpl() = default;
47
48 shared_ptr<Data> createData() const {
49 return std::make_shared<DerivedData>(*this);
50 }
51};
52
53template <typename _Scalar>
55 using Scalar = _Scalar;
60 shared_ptr<ODEData> continuous_data;
61 VectorXs dx_;
62
63 explicit ExplicitIntegratorDataTpl(const Model &integrator)
64 : Base(integrator)
65 , continuous_data(integrator.ode_->createData())
66 , dx_(integrator.ndx2()) {
67 dx_.setZero();
68 }
69
70 virtual ~ExplicitIntegratorDataTpl() = default;
71};
72
73#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
76#endif
77} // namespace dynamics
78} // namespace aligator
Namespace for modelling system dynamics.
Main package namespace.
Defines a class representing ODEs.
ExplicitDynamicsDataTpl(int ndx1, int nu, int nx2, int ndx2)
virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const=0
ExplicitDynamicsModelTpl(const polymorphic< Manifold > &space, const int nu)
Constructor requires providing the next state's manifold.
virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const=0
Base class for manifolds, to use in cost funcs, solvers...
Data struct for ContinuousDynamicsAbstractTpl.
ExplicitIntegratorAbstractTpl(const xyz::polymorphic< ODEType > &cont_dynamics)
Base class for ODE dynamics .