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-ode.cpp
Go to the documentation of this file.
1
3
#include "
aligator/python/modelling/continuous.hpp
"
4
#include "
aligator/python/visitors.hpp
"
5
#include "
aligator/modelling/dynamics/fwd.hpp
"
6
#include "
aligator/modelling/dynamics/linear-ode.hpp
"
7
#include "
aligator/modelling/dynamics/centroidal-fwd.hpp
"
8
#include "
aligator/modelling/dynamics/continuous-centroidal-fwd.hpp
"
9
#include "
aligator/modelling/contact-map.hpp
"
10
#include "
aligator/modelling/dynamics/wheeled-inverted-pendulum.hpp
"
11
12
namespace
aligator::python
{
13
using namespace
::aligator::dynamics;
14
using
context::ContinuousDynamicsAbstract
;
15
using
context::MatrixXs;
16
using
context::ODEAbstract
;
17
using
context::ODEData
;
18
using
context::Scalar
;
19
using
context::Vector3s;
20
using
context::VectorSpace
;
21
using
context::VectorXs;
22
using
PolyManifold
= xyz::polymorphic<context::Manifold>;
23
24
using
CentroidalFwdDynamics
=
CentroidalFwdDynamicsTpl<Scalar>
;
25
using
ContinuousCentroidalFwdDynamics
=
26
ContinuousCentroidalFwdDynamicsTpl<Scalar>
;
27
using
WheeledInvertedPendulumDynamics
=
28
WheeledInvertedPendulumDynamicsTpl<Scalar>
;
29
using
ContactMap
=
ContactMapTpl<Scalar>
;
30
31
void
exposeODEs
() {
32
register_polymorphic_to_python<xyz::polymorphic<ODEAbstract>
>();
33
PolymorphicMultiBaseVisitor<ODEAbstract, ContinuousDynamicsAbstract>
34
ode_visitor;
35
36
bp::class_<PyODEAbstract<>, bp::bases<ContinuousDynamicsAbstract>,
37
boost::noncopyable>(
38
"ODEAbstract"
,
39
"Continuous dynamics described by ordinary differential equations "
40
"(ODEs)."
,
41
bp::init<const PolyManifold &, int>(bp::args(
"self"
,
"space"
,
"nu"
)))
42
.def(
"forward"
, bp::pure_virtual(&
ODEAbstract::forward
),
43
bp::args(
"self"
,
"x"
,
"u"
,
"data"
),
44
"Compute the value of the ODE vector field, i.e. the "
45
"state time derivative :math:`\\dot{x}`."
)
46
.def(
"dForward"
, bp::pure_virtual(&
ODEAbstract::dForward
),
47
bp::args(
"self"
,
"x"
,
"u"
,
"data"
),
48
"Compute the derivatives of the ODE vector field with respect "
49
"to the state-control pair :math:`(x, u)`."
)
50
.def(
CreateDataPolymorphicPythonVisitor
<
ODEAbstract
,
PyODEAbstract<>
>())
51
.def(ode_visitor);
52
53
bp::class_<LinearODETpl<Scalar>, bp::bases<ODEAbstract>>(
54
"LinearODE"
,
55
"Linear ordinary differential equation, :math:`\\dot{x} = Ax + Bu`."
,
56
bp::init<PolyManifold, MatrixXs, MatrixXs, VectorXs>(
57
bp::args(
"self"
,
"A"
,
"B"
,
"c"
)))
58
.def(bp::init<MatrixXs, MatrixXs, VectorXs>(
59
"Constructor with just the matrices; a Euclidean state space is "
60
"assumed."
,
61
bp::args(
"self"
,
"A"
,
"B"
,
"c"
)))
62
.def_readonly(
"A"
, &
LinearODETpl<Scalar>::A_
,
"State transition matrix."
)
63
.def_readonly(
"B"
, &
LinearODETpl<Scalar>::B_
,
"Control matrix."
)
64
.def_readonly(
"c"
, &
LinearODETpl<Scalar>::c_
,
"Constant drift term."
)
65
.def(ode_visitor);
66
67
bp::class_<CentroidalFwdDynamics, bp::bases<ODEAbstract>>(
68
"CentroidalFwdDynamics"
,
69
"Nonlinear centroidal dynamics with preplanned feet positions"
,
70
bp::init<
const
VectorSpace
&,
const
double,
const
Vector3s &,
71
const
ContactMap
&,
const
int
>(
72
bp::args(
"self"
,
"space"
,
"total mass"
,
"gravity"
,
"contact_map"
,
73
"force_size"
)))
74
.def_readwrite(
"contact_map"
, &
CentroidalFwdDynamics::contact_map_
)
75
.def(
CreateDataPythonVisitor<CentroidalFwdDynamics>
())
76
.def(ode_visitor);
77
78
bp::register_ptr_to_python<shared_ptr<CentroidalFwdDataTpl<Scalar>>>();
79
bp::class_<CentroidalFwdDataTpl<Scalar>, bp::bases<ODEData>>(
80
"CentroidalFwdData"
, bp::no_init);
81
82
bp::class_<ContinuousCentroidalFwdDynamics, bp::bases<ODEAbstract>>(
83
"ContinuousCentroidalFwdDynamics"
,
84
"Nonlinear centroidal dynamics with preplanned feet positions and smooth "
85
"forces"
,
86
bp::init<
const
VectorSpace
&,
const
double,
const
Vector3s &,
87
const
ContactMap
&,
const
int
>(
88
bp::args(
"self"
,
"space"
,
"total mass"
,
"gravity"
,
"contact_map"
,
89
"force_size"
)))
90
.def_readwrite(
"contact_map"
,
91
&
ContinuousCentroidalFwdDynamics::contact_map_
)
92
.def(
CreateDataPythonVisitor<ContinuousCentroidalFwdDynamics>
())
93
.def(ode_visitor);
94
95
bp::register_ptr_to_python<
96
shared_ptr<ContinuousCentroidalFwdDataTpl<Scalar>>>();
97
bp::class_<ContinuousCentroidalFwdDataTpl<Scalar>, bp::bases<ODEData>>(
98
"ContinuousCentroidalFwdData"
, bp::no_init);
99
bp::class_<WheeledInvertedPendulumDynamics, bp::bases<ODEAbstract>>(
100
"WheeledInvertedPendulumDynamics"
,
101
"Wheeled inverted pendulum dynamics with integrator dynamics for the yaw"
,
102
bp::init<const Scalar, const Scalar>(
103
bp::args(
"self"
,
"gravity"
,
"length"
)))
104
.def(
CreateDataPythonVisitor<WheeledInvertedPendulumDynamics>
())
105
.def(ode_visitor);
106
}
107
}
// namespace aligator::python
centroidal-fwd.hpp
contact-map.hpp
continuous-centroidal-fwd.hpp
continuous.hpp
fwd.hpp
linear-ode.hpp
aligator::context::ODEData
dynamics::ContinuousDynamicsDataTpl< Scalar > ODEData
Definition
fwd.hpp:65
aligator::context::ContinuousDynamicsAbstract
dynamics::ContinuousDynamicsAbstractTpl< Scalar > ContinuousDynamicsAbstract
Definition
fwd.hpp:60
aligator::context::Scalar
double Scalar
Definition
context.hpp:9
aligator::context::ODEAbstract
dynamics::ODEAbstractTpl< Scalar > ODEAbstract
Definition
fwd.hpp:64
aligator::context::VectorSpace
VectorSpaceTpl< Scalar, Eigen::Dynamic > VectorSpace
Definition
context.hpp:15
aligator::python
The Python bindings.
Definition
blk-matrix.hpp:7
aligator::python::PolyManifold
xyz::polymorphic< Manifold > PolyManifold
Definition
expose-manifold.cpp:19
aligator::python::CentroidalFwdDynamics
CentroidalFwdDynamicsTpl< Scalar > CentroidalFwdDynamics
Definition
expose-ode.cpp:24
aligator::python::WheeledInvertedPendulumDynamics
WheeledInvertedPendulumDynamicsTpl< Scalar > WheeledInvertedPendulumDynamics
Definition
expose-ode.cpp:27
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::ContinuousCentroidalFwdDynamics
ContinuousCentroidalFwdDynamicsTpl< Scalar > ContinuousCentroidalFwdDynamics
Definition
expose-ode.cpp:25
aligator::python::exposeODEs
void exposeODEs()
Definition
expose-ode.cpp:31
aligator::python::ContactMap
ContactMapTpl< Scalar > ContactMap
Definition
expose-centroidal.cpp:26
aligator::ContactMapTpl
Contact map for centroidal costs and dynamics.
Definition
contact-map.hpp:8
aligator::dynamics::CentroidalFwdDynamicsTpl
Nonlinear centroidal forward dynamics.
Definition
centroidal-fwd.hpp:24
aligator::dynamics::CentroidalFwdDynamicsTpl< Scalar >::contact_map_
ContactMap contact_map_
Definition
centroidal-fwd.hpp:42
aligator::dynamics::ContinuousCentroidalFwdDynamicsTpl
Nonlinear centroidal forward dynamics with smooth control.
Definition
continuous-centroidal-fwd.hpp:25
aligator::dynamics::ContinuousCentroidalFwdDynamicsTpl< Scalar >::contact_map_
ContactMap contact_map_
Definition
continuous-centroidal-fwd.hpp:43
aligator::dynamics::LinearODETpl::c_
VectorXs c_
Definition
linear-ode.hpp:24
aligator::dynamics::LinearODETpl::B_
MatrixXs B_
Definition
linear-ode.hpp:23
aligator::dynamics::LinearODETpl::A_
MatrixXs A_
Definition
linear-ode.hpp:23
aligator::dynamics::ODEAbstractTpl< Scalar >::forward
virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const=0
aligator::dynamics::ODEAbstractTpl< Scalar >::dForward
virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const=0
aligator::dynamics::WheeledInvertedPendulumDynamicsTpl
Definition
wheeled-inverted-pendulum.hpp:8
aligator::python::CreateDataPolymorphicPythonVisitor
Definition
visitors.hpp:30
aligator::python::CreateDataPythonVisitor
Definition
visitors.hpp:15
aligator::python::PolymorphicMultiBaseVisitor
Definition
polymorphic.hpp:107
aligator::python::PyODEAbstract
Definition
continuous.hpp:42
visitors.hpp
wheeled-inverted-pendulum.hpp
bindings
python
src
modelling
expose-ode.cpp
Generated by
1.17.0