aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
expose-explicit-integrators.cpp
Go to the documentation of this file.
1
3
4
#include "
aligator/python/fwd.hpp
"
5
#include "
aligator/python/modelling/explicit-dynamics.hpp
"
6
7
#include "
aligator/modelling/dynamics/fwd.hpp
"
8
#include "
aligator/modelling/dynamics/integrator-euler.hpp
"
9
#include "
aligator/modelling/dynamics/integrator-rk2.hpp
"
10
#include "
aligator/modelling/dynamics/integrator-semi-euler.hpp
"
11
12
namespace
aligator
{
13
namespace
python
{
14
using
context::Scalar
;
15
using namespace
aligator::dynamics;
16
using
context::DynamicsModel
;
17
using
context::ExplicitDynamics
;
18
using
context::ExplicitDynamicsData
;
19
using
context::ExplicitIntegratorAbstract
;
20
using
context::ExplicitIntegratorData
;
21
using
context::IntegratorAbstract
;
22
using
xyz::polymorphic;
23
24
void
exposeExplicitIntegrators
() {
25
using
ODEType =
ODEAbstractTpl<Scalar>
;
26
28
29
using
PyExplicitIntegrator =
PyExplicitDynamics<ExplicitIntegratorAbstract>
;
30
31
PolymorphicMultiBaseVisitor<ExplicitIntegratorAbstract, ExplicitDynamics>
32
conversions_visitor;
33
34
register_polymorphic_to_python<polymorphic<ExplicitIntegratorAbstract>
>();
35
bp::class_<PyExplicitIntegrator, bp::bases<ExplicitDynamics>,
36
boost::noncopyable>(
"ExplicitIntegratorAbstract"
,
37
bp::init<const polymorphic<ODEType> &>(
38
"Construct the integrator from an ODE."
,
39
bp::args(
"self"
,
"cont_dynamics"
)))
40
.def_readonly(
"nx2"
, &
ExplicitIntegratorAbstract::nx2
,
41
"Next state dimension."
)
42
.def_readwrite(
"differential_dynamics"
, &
ExplicitIntegratorAbstract::ode_
,
43
"The underlying differential equation."
)
44
// required visitor to allow casting custom Python integrator to
45
// polymorphic<Base>
46
.def(conversions_visitor);
47
48
bp::register_ptr_to_python<shared_ptr<ExplicitIntegratorData>>();
49
bp::class_<ExplicitIntegratorData, bp::bases<ExplicitDynamicsData>>(
50
"ExplicitIntegratorData"
,
"Data struct for explicit time integrators."
,
51
bp::no_init)
52
.def_readwrite(
"continuous_data"
,
53
&
ExplicitIntegratorData::continuous_data
)
54
.def_readwrite(
"dx"
, &
ExplicitIntegratorData::dx_
);
55
56
bp::class_<IntegratorEulerTpl<Scalar>, bp::bases<ExplicitIntegratorAbstract>>(
57
"IntegratorEuler"
,
58
"The explicit Euler integrator :math:`x' = x \\oplus \\Delta t f(x, u)`; "
59
"this integrator has error :math:`O(\\Delta t)` "
60
"in the time step :math:`\\Delta t`."
,
61
bp::init<const polymorphic<ODEType> &,
Scalar
>(
62
bp::args(
"self"
,
"ode"
,
"timestep"
)))
63
.def_readwrite(
"timestep"
, &
IntegratorEulerTpl<Scalar>::timestep_
,
64
"Time step."
)
65
.def(conversions_visitor);
66
67
bp::class_<IntegratorSemiImplEulerTpl<Scalar>,
68
bp::bases<ExplicitIntegratorAbstract>>(
69
"IntegratorSemiImplEuler"
,
"The semi implicit Euler integrator."
,
70
bp::init<const polymorphic<ODEType> &,
Scalar
>(
71
bp::args(
"self"
,
"ode"
,
"timestep"
)))
72
.def_readwrite(
"timestep"
, &
IntegratorSemiImplEulerTpl<Scalar>::timestep_
,
73
"Time step."
)
74
.def(conversions_visitor);
75
bp::class_<IntegratorSemiImplDataTpl<Scalar>,
76
bp::bases<ExplicitIntegratorData>>(
"IntegratorSemiImplData"
,
77
bp::no_init);
78
79
bp::class_<IntegratorRK2Tpl<Scalar>, bp::bases<ExplicitIntegratorAbstract>>(
80
"IntegratorRK2"
, bp::init<const polymorphic<ODEType> &,
Scalar
>(
81
bp::args(
"self"
,
"ode"
,
"timestep"
)))
82
.def_readwrite(
"timestep"
, &
IntegratorRK2Tpl<Scalar>::timestep_
,
83
"Time step."
)
84
.def(conversions_visitor);
85
86
bp::class_<IntegratorRK2DataTpl<Scalar>, bp::bases<ExplicitIntegratorData>>(
87
"IntegratorRK2Data"
, bp::no_init);
88
}
89
90
}
// namespace python
91
}
// namespace aligator
fwd.hpp
explicit-dynamics.hpp
fwd.hpp
integrator-euler.hpp
Define the explicit Euler integrator.
integrator-rk2.hpp
integrator-semi-euler.hpp
aligator::context::DynamicsModel
DynamicsModelTpl< Scalar > DynamicsModel
Definition
context.hpp:27
aligator::context::ExplicitIntegratorData
dynamics::ExplicitIntegratorDataTpl< Scalar > ExplicitIntegratorData
Definition
fwd.hpp:72
aligator::context::IntegratorAbstract
dynamics::IntegratorAbstractTpl< Scalar > IntegratorAbstract
Definition
fwd.hpp:67
aligator::context::ExplicitIntegratorAbstract
dynamics::ExplicitIntegratorAbstractTpl< Scalar > ExplicitIntegratorAbstract
Definition
fwd.hpp:70
aligator::context::ExplicitDynamics
ExplicitDynamicsModelTpl< Scalar > ExplicitDynamics
Definition
context.hpp:38
aligator::context::Scalar
double Scalar
Definition
context.hpp:9
aligator::context::ExplicitDynamicsData
ExplicitDynamicsDataTpl< Scalar > ExplicitDynamicsData
Definition
context.hpp:39
aligator::python
The Python bindings.
Definition
blk-matrix.hpp:7
aligator::python::register_polymorphic_to_python
void register_polymorphic_to_python()
Expose a polymorphic value type, e.g. xyz::polymorphic<T, A>.
Definition
polymorphic.hpp:23
aligator::python::exposeExplicitIntegrators
void exposeExplicitIntegrators()
Definition
expose-explicit-integrators.cpp:24
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
aligator::ExplicitDynamicsModelTpl< Scalar >::nx2
int nx2() const
Definition
explicit-dynamics.hpp:40
aligator::dynamics::ExplicitIntegratorAbstractTpl< Scalar >::ode_
xyz::polymorphic< ODEType > ode_
Definition
integrator-explicit.hpp:34
aligator::dynamics::ExplicitIntegratorDataTpl< Scalar >::dx_
VectorXs dx_
Definition
integrator-explicit.hpp:61
aligator::dynamics::ExplicitIntegratorDataTpl< Scalar >::continuous_data
shared_ptr< ODEData > continuous_data
Definition
integrator-explicit.hpp:60
aligator::dynamics::IntegratorEulerTpl::timestep_
Scalar timestep_
Integration time step .
Definition
integrator-euler.hpp:23
aligator::dynamics::IntegratorRK2Tpl::timestep_
Scalar timestep_
Definition
integrator-rk2.hpp:27
aligator::dynamics::IntegratorSemiImplEulerTpl::timestep_
Scalar timestep_
Integration time step .
Definition
integrator-semi-euler.hpp:28
aligator::dynamics::ODEAbstractTpl
Base class for ODE dynamics .
Definition
ode-abstract.hpp:14
aligator::python::PolymorphicMultiBaseVisitor
Definition
polymorphic.hpp:107
aligator::python::PyExplicitDynamics
Definition
explicit-dynamics.hpp:22
bindings
python
src
modelling
expose-explicit-integrators.cpp
Generated by
1.17.0