aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
integrator-explicit.hpp
Go to the documentation of this file.
1
#pragma once
5
6
#include "
aligator/core/explicit-dynamics.hpp
"
7
#include "
aligator/modelling/dynamics/ode-abstract.hpp
"
8
9
namespace
aligator
{
10
namespace
dynamics
{
11
18
template
<
typename
_Scalar>
19
struct
ExplicitIntegratorAbstractTpl
:
ExplicitDynamicsModelTpl
<_Scalar> {
20
using
Scalar
= _Scalar;
21
using
ODEType
=
ODEAbstractTpl<Scalar>
;
22
using
Base
=
ExplicitDynamicsModelTpl<Scalar>
;
23
using
typename
Base::Data
;
24
using
DerivedData
=
ExplicitIntegratorDataTpl<Scalar>
;
25
26
using
Base::dForward
;
27
using
Base::forward
;
28
using
Base::ndx1
;
29
using
Base::ndx2
;
30
using
Base::nu
;
31
using
Base::space_next_
;
32
using
Manifold
=
ManifoldAbstractTpl<Scalar>
;
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
41
explicit
ExplicitIntegratorAbstractTpl
(
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
53
template
<
typename
_Scalar>
54
struct
ExplicitIntegratorDataTpl
:
ExplicitDynamicsDataTpl
<_Scalar> {
55
using
Scalar
= _Scalar;
56
using
Model
=
ExplicitIntegratorAbstractTpl<Scalar>
;
57
using
Base
=
ExplicitDynamicsDataTpl<Scalar>
;
58
using
ODEData
=
ContinuousDynamicsDataTpl<Scalar>
;
59
ALIGATOR_DYNAMIC_TYPEDEFS
(
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
74
extern
template
struct
ExplicitIntegratorAbstractTpl<context::Scalar>
;
75
extern
template
struct
ExplicitIntegratorDataTpl<context::Scalar>
;
76
#endif
77
}
// namespace dynamics
78
}
// namespace aligator
explicit-dynamics.hpp
aligator::dynamics
Namespace for modelling system dynamics.
Definition
centroidal-fwd.hpp:10
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
ode-abstract.hpp
Defines a class representing ODEs.
aligator::ExplicitDynamicsDataTpl::ExplicitDynamicsDataTpl
ExplicitDynamicsDataTpl(int ndx1, int nu, int nx2, int ndx2)
Definition
explicit-dynamics.hpp:68
aligator::ExplicitDynamicsDataTpl< Scalar >::ndx2
int ndx2
Definition
explicit-dynamics.hpp:66
aligator::ExplicitDynamicsModelTpl< Scalar >::ndx2
int ndx2() const
Definition
explicit-dynamics.hpp:41
aligator::ExplicitDynamicsModelTpl< Scalar >::Data
ExplicitDynamicsDataTpl< Scalar > Data
Definition
explicit-dynamics.hpp:24
aligator::ExplicitDynamicsModelTpl< Scalar >::forward
virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const=0
aligator::ExplicitDynamicsModelTpl< Scalar >::space_next_
polymorphic< Manifold > space_next_
Definition
explicit-dynamics.hpp:58
aligator::ExplicitDynamicsModelTpl< Scalar >::space_
polymorphic< Manifold > space_
Definition
explicit-dynamics.hpp:57
aligator::ExplicitDynamicsModelTpl::ExplicitDynamicsModelTpl
ExplicitDynamicsModelTpl(const polymorphic< Manifold > &space, const int nu)
Constructor requires providing the next state's manifold.
Definition
explicit-dynamics.hpp:30
aligator::ExplicitDynamicsModelTpl< Scalar >::dForward
virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const=0
aligator::ExplicitDynamicsModelTpl< Scalar >::ndx1
int ndx1() const
Definition
explicit-dynamics.hpp:39
aligator::ExplicitDynamicsModelTpl< Scalar >::nu
int nu
Definition
explicit-dynamics.hpp:59
aligator::ManifoldAbstractTpl
Base class for manifolds, to use in cost funcs, solvers...
Definition
manifold-base.hpp:11
aligator::dynamics::ContinuousDynamicsDataTpl
Data struct for ContinuousDynamicsAbstractTpl.
Definition
continuous-dynamics-abstract.hpp:64
aligator::dynamics::ExplicitIntegratorAbstractTpl
Explicit integrators .
Definition
integrator-explicit.hpp:19
aligator::dynamics::ExplicitIntegratorAbstractTpl< Scalar >::ode_
xyz::polymorphic< ODEType > ode_
Definition
integrator-explicit.hpp:34
aligator::dynamics::ExplicitIntegratorAbstractTpl< Scalar >::Base
ExplicitDynamicsModelTpl< Scalar > Base
Definition
integrator-explicit.hpp:22
aligator::dynamics::ExplicitIntegratorAbstractTpl::getDynamics
const U * getDynamics() const
Definition
integrator-explicit.hpp:37
aligator::dynamics::ExplicitIntegratorAbstractTpl< Scalar >::nu
int nu
aligator::dynamics::ExplicitIntegratorAbstractTpl< Scalar >::ODEType
ODEAbstractTpl< Scalar > ODEType
Definition
integrator-explicit.hpp:21
aligator::dynamics::ExplicitIntegratorAbstractTpl< Scalar >::Manifold
ManifoldAbstractTpl< Scalar > Manifold
Definition
integrator-explicit.hpp:32
aligator::dynamics::ExplicitIntegratorAbstractTpl::ExplicitIntegratorAbstractTpl
ExplicitIntegratorAbstractTpl(const xyz::polymorphic< ODEType > &cont_dynamics)
Definition
integrator-explicit.hpp:41
aligator::dynamics::ExplicitIntegratorAbstractTpl< Scalar >::Scalar
Scalar Scalar
Definition
integrator-explicit.hpp:20
aligator::dynamics::ExplicitIntegratorAbstractTpl< Scalar >::DerivedData
ExplicitIntegratorDataTpl< Scalar > DerivedData
Definition
integrator-explicit.hpp:24
aligator::dynamics::ExplicitIntegratorAbstractTpl::getDynamics
U * getDynamics()
Definition
integrator-explicit.hpp:36
aligator::dynamics::ExplicitIntegratorAbstractTpl::createData
shared_ptr< Data > createData() const
Definition
integrator-explicit.hpp:48
aligator::dynamics::ExplicitIntegratorAbstractTpl::~ExplicitIntegratorAbstractTpl
virtual ~ExplicitIntegratorAbstractTpl()=default
aligator::dynamics::ExplicitIntegratorDataTpl
Definition
integrator-explicit.hpp:54
aligator::dynamics::ExplicitIntegratorDataTpl::~ExplicitIntegratorDataTpl
virtual ~ExplicitIntegratorDataTpl()=default
aligator::dynamics::ExplicitIntegratorDataTpl< Scalar >::dx_
VectorXs dx_
Definition
integrator-explicit.hpp:61
aligator::dynamics::ExplicitIntegratorDataTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::dynamics::ExplicitIntegratorDataTpl< Scalar >::Model
ExplicitIntegratorAbstractTpl< Scalar > Model
Definition
integrator-explicit.hpp:56
aligator::dynamics::ExplicitIntegratorDataTpl::ExplicitIntegratorDataTpl
ExplicitIntegratorDataTpl(const Model &integrator)
Definition
integrator-explicit.hpp:63
aligator::dynamics::ExplicitIntegratorDataTpl< Scalar >::continuous_data
shared_ptr< ODEData > continuous_data
Definition
integrator-explicit.hpp:60
aligator::dynamics::ExplicitIntegratorDataTpl< Scalar >::Base
ExplicitDynamicsDataTpl< Scalar > Base
Definition
integrator-explicit.hpp:57
aligator::dynamics::ExplicitIntegratorDataTpl< Scalar >::Scalar
Scalar Scalar
Definition
integrator-explicit.hpp:55
aligator::dynamics::ExplicitIntegratorDataTpl< Scalar >::ODEData
ContinuousDynamicsDataTpl< Scalar > ODEData
Definition
integrator-explicit.hpp:58
aligator::dynamics::ODEAbstractTpl
Base class for ODE dynamics .
Definition
ode-abstract.hpp:14
include
aligator
modelling
dynamics
integrator-explicit.hpp
Generated by
1.17.0