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-continuous-dynamics.cpp
Go to the documentation of this file.
1
3
#include "
aligator/python/fwd.hpp
"
4
#include "
aligator/python/visitors.hpp
"
5
#include "
aligator/python/modelling/continuous.hpp
"
6
#include "
aligator/modelling/dynamics/continuous-dynamics-abstract.hpp
"
7
#include "
aligator/modelling/dynamics/fwd.hpp
"
8
9
namespace
aligator
{
10
namespace
python
{
11
using namespace
::aligator::dynamics;
12
using
context::MatrixXs;
13
using
context::Scalar
;
14
using
context::VectorXs;
15
16
using
context::ContinuousDynamicsAbstract
;
17
using
context::ContinuousDynamicsData
;
18
19
struct
ContinousDataWrapper
:
ContinuousDynamicsData
,
20
bp::wrapper<ContinuousDynamicsData> {
21
using
ContinuousDynamicsData::ContinuousDynamicsData;
22
};
23
24
void
exposeODEs
();
25
26
void
exposeContinuousDynamics
() {
27
using
ManifoldPtr = xyz::polymorphic<context::Manifold>;
28
29
register_polymorphic_to_python
<
30
xyz::polymorphic<ContinuousDynamicsAbstract>>();
31
PolymorphicMultiBaseVisitor<ContinuousDynamicsAbstract>
conversion_visitor;
32
33
bp::class_<PyContinuousDynamics<>, boost::noncopyable>(
34
"ContinuousDynamicsAbstract"
,
35
"Base class for continuous-time dynamical models (DAEs and ODEs)."
,
36
bp::init<ManifoldPtr, int>(
"Default constructor: provide the working "
37
"manifold and control space "
38
"dimension."
,
39
bp::args(
"self"
,
"space"
,
"nu"
)))
40
.add_property(
"ndx"
, &
ContinuousDynamicsAbstract::ndx
,
41
"State space dimension."
)
42
.add_property(
"nu"
, &
ContinuousDynamicsAbstract::nu
,
43
"Control space dimension."
)
44
.def(
"evaluate"
, bp::pure_virtual(&
ContinuousDynamicsAbstract::evaluate
),
45
bp::args(
"self"
,
"x"
,
"u"
,
"xdot"
,
"data"
),
46
"Evaluate the DAE functions."
)
47
.def(
"computeJacobians"
,
48
bp::pure_virtual(&
ContinuousDynamicsAbstract::computeJacobians
),
49
bp::args(
"self"
,
"x"
,
"u"
,
"xdot"
,
"data"
),
50
"Evaluate the DAE function derivatives."
)
51
.add_property(
"space"
,
52
bp::make_function(&
ContinuousDynamicsAbstract::space
,
53
bp::return_internal_reference<>()),
54
"Get the state space."
)
55
.def(
CreateDataPolymorphicPythonVisitor
<
ContinuousDynamicsAbstract
,
56
PyContinuousDynamics<>
>())
57
.def(conversion_visitor);
58
59
bp::register_ptr_to_python<shared_ptr<ContinuousDynamicsData>>();
60
auto
cont_data_cls =
61
bp::class_<ContinousDataWrapper, boost::noncopyable>(
62
"ContinuousDynamicsData"
,
63
"Data struct for continuous dynamics/DAE models."
,
64
bp::init<int, int>(bp::args(
"self"
,
"ndx"
,
"nu"
)))
65
.add_property(
"value"
,
66
bp::make_getter(&
ContinuousDynamicsData::value_
,
67
bp::return_internal_reference<>()),
68
"Vector value of the DAE residual."
)
69
.add_property(
"Jx"
,
70
bp::make_getter(&
ContinuousDynamicsData::Jx_
,
71
bp::return_internal_reference<>()),
72
"Jacobian with respect to state."
)
73
.add_property(
"Ju"
,
74
bp::make_getter(&
ContinuousDynamicsData::Ju_
,
75
bp::return_internal_reference<>()),
76
"Jacobian with respect to controls."
)
77
.add_property(
"Jxdot"
,
78
bp::make_getter(&
ContinuousDynamicsData::Jxdot_
,
79
bp::return_internal_reference<>()),
80
"Jacobian with respect to :math:`\\dot{x}`."
)
81
.add_property(
"xdot"
,
82
bp::make_getter(&
ContinuousDynamicsData::xdot_
,
83
bp::return_internal_reference<>()),
84
"Time derivative :math:`\\dot{x}`."
);
85
86
// Alias this for back-compatibility
87
bp::scope().attr(
"ODEData"
) = cont_data_cls;
88
89
exposeODEs
();
90
}
91
92
}
// namespace python
93
}
// namespace aligator
fwd.hpp
continuous-dynamics-abstract.hpp
Base definitions for continuous dynamics.
continuous.hpp
fwd.hpp
aligator::context::ContinuousDynamicsAbstract
dynamics::ContinuousDynamicsAbstractTpl< Scalar > ContinuousDynamicsAbstract
Definition
fwd.hpp:60
aligator::context::ContinuousDynamicsData
dynamics::ContinuousDynamicsDataTpl< Scalar > ContinuousDynamicsData
Definition
fwd.hpp:62
aligator::context::Scalar
double Scalar
Definition
context.hpp:9
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::exposeODEs
void exposeODEs()
Definition
expose-ode.cpp:31
aligator::python::exposeContinuousDynamics
void exposeContinuousDynamics()
Expose continuous dynamics.
Definition
expose-continuous-dynamics.cpp:26
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
aligator::dynamics::ContinuousDynamicsAbstractTpl< Scalar >::nu
int nu() const
Definition
continuous-dynamics-abstract.hpp:32
aligator::dynamics::ContinuousDynamicsAbstractTpl< Scalar >::space
const Manifold & space() const
Definition
continuous-dynamics-abstract.hpp:35
aligator::dynamics::ContinuousDynamicsAbstractTpl< Scalar >::ndx
int ndx() const
Definition
continuous-dynamics-abstract.hpp:31
aligator::dynamics::ContinuousDynamicsAbstractTpl< Scalar >::computeJacobians
virtual void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xdot, Data &data) const=0
aligator::dynamics::ContinuousDynamicsAbstractTpl< Scalar >::evaluate
virtual void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xdot, Data &data) const=0
aligator::dynamics::ContinuousDynamicsDataTpl< Scalar >::Ju_
MatrixXs Ju_
Definition
continuous-dynamics-abstract.hpp:74
aligator::dynamics::ContinuousDynamicsDataTpl< Scalar >::value_
VectorXs value_
Definition
continuous-dynamics-abstract.hpp:70
aligator::dynamics::ContinuousDynamicsDataTpl< Scalar >::Jx_
MatrixXs Jx_
Definition
continuous-dynamics-abstract.hpp:72
aligator::dynamics::ContinuousDynamicsDataTpl< Scalar >::Jxdot_
MatrixXs Jxdot_
Definition
continuous-dynamics-abstract.hpp:76
aligator::dynamics::ContinuousDynamicsDataTpl< Scalar >::xdot_
VectorXs xdot_
Definition
continuous-dynamics-abstract.hpp:78
aligator::python::ContinousDataWrapper
Definition
expose-continuous-dynamics.cpp:20
aligator::python::CreateDataPolymorphicPythonVisitor
Definition
visitors.hpp:30
aligator::python::PolymorphicMultiBaseVisitor
Definition
polymorphic.hpp:107
aligator::python::PyContinuousDynamics
Definition
continuous.hpp:17
visitors.hpp
bindings
python
src
modelling
expose-continuous-dynamics.cpp
Generated by
1.17.0