aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
linear-ode.hpp
Go to the documentation of this file.
1
2
#pragma once
3
4
#include "
aligator/context.hpp
"
5
#include "
aligator/modelling/dynamics/ode-abstract.hpp
"
6
#include "
aligator/core/vector-space.hpp
"
7
8
namespace
aligator
{
9
namespace
dynamics
{
15
template
<
typename
_Scalar>
struct
LinearODETpl
:
ODEAbstractTpl
<_Scalar> {
16
using
Scalar
= _Scalar;
17
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
18
using
Base
=
ODEAbstractTpl<Scalar>
;
19
using
ODEData
=
ContinuousDynamicsDataTpl<Scalar>
;
20
using
Manifold
=
ManifoldAbstractTpl<Scalar>
;
21
using
ManifoldPtr
= xyz::polymorphic<Manifold>;
22
23
MatrixXs
A_
,
B_
;
24
VectorXs
c_
;
25
28
LinearODETpl
(
const
ManifoldPtr
&
space
,
const
MatrixXs &A,
const
MatrixXs &B,
29
const
VectorXs &c)
30
:
Base
(
space
, (int)B.cols())
31
,
A_
(A)
32
,
B_
(B)
33
,
c_
(c) {
34
if
(A.cols() !=
space
->ndx()) {
35
ALIGATOR_DOMAIN_ERROR(
36
"A.cols() should be equal to space.ndx()! (got {:d} and {:d})"
,
37
A.cols(), space->ndx());
38
}
39
bool
rows_ok = (A.rows() ==
space
->ndx()) && (B.rows() ==
space
->ndx()) &&
40
(c.rows() ==
space
->ndx());
41
if (!rows_ok) {
42
ALIGATOR_DOMAIN_ERROR
(
"Input matrices have wrong number of rows."
);
43
}
44
}
45
50
LinearODETpl
(
const
MatrixXs &A,
const
MatrixXs &B,
const
VectorXs &c)
51
:
LinearODETpl
(xyz::polymorphic<
Manifold
>(
52
::
aligator
::
VectorSpaceTpl
<
Scalar
>((int)A.rows())),
53
A, B, c) {}
54
55
void
forward
(
const
ConstVectorRef &x,
const
ConstVectorRef &u,
56
ODEData
&data)
const
;
57
void
dForward
(
const
ConstVectorRef &x,
const
ConstVectorRef &u,
58
ODEData
&data)
const
;
59
virtual
shared_ptr<ContinuousDynamicsDataTpl<Scalar>>
createData
()
const
{
60
auto
data =
Base::createData
();
61
data->Jx_ =
A_
;
62
data->Ju_ =
B_
;
63
return
data;
64
}
65
};
66
67
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
68
extern
template
struct
LinearODETpl<context::Scalar>;
69
#endif
70
71
}
// namespace dynamics
72
}
// namespace aligator
73
74
#include "aligator/modelling/dynamics/linear-ode.hxx"
context.hpp
ALIGATOR_DOMAIN_ERROR
#define ALIGATOR_DOMAIN_ERROR(...)
Definition
exceptions.hpp:16
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::ManifoldAbstractTpl
Base class for manifolds, to use in cost funcs, solvers...
Definition
manifold-base.hpp:11
aligator::VectorSpaceTpl
Standard Euclidean vector space.
Definition
vector-space.hpp:13
aligator::dynamics::ContinuousDynamicsAbstractTpl< Scalar >::createData
virtual shared_ptr< Data > createData() const
aligator::dynamics::ContinuousDynamicsAbstractTpl::space
const Manifold & space() const
Return a reference to the state space.
Definition
continuous-dynamics-abstract.hpp:35
aligator::dynamics::ContinuousDynamicsDataTpl
Data struct for ContinuousDynamicsAbstractTpl.
Definition
continuous-dynamics-abstract.hpp:64
aligator::dynamics::LinearODETpl::c_
VectorXs c_
Definition
linear-ode.hpp:24
aligator::dynamics::LinearODETpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::dynamics::LinearODETpl::Base
ODEAbstractTpl< Scalar > Base
Definition
linear-ode.hpp:18
aligator::dynamics::LinearODETpl::Manifold
ManifoldAbstractTpl< Scalar > Manifold
Definition
linear-ode.hpp:20
aligator::dynamics::LinearODETpl::B_
MatrixXs B_
Definition
linear-ode.hpp:23
aligator::dynamics::LinearODETpl::ManifoldPtr
xyz::polymorphic< Manifold > ManifoldPtr
Definition
linear-ode.hpp:21
aligator::dynamics::LinearODETpl::LinearODETpl
LinearODETpl(const MatrixXs &A, const MatrixXs &B, const VectorXs &c)
Definition
linear-ode.hpp:50
aligator::dynamics::LinearODETpl::Scalar
_Scalar Scalar
Definition
linear-ode.hpp:16
aligator::dynamics::LinearODETpl::forward
void forward(const ConstVectorRef &x, const ConstVectorRef &u, ODEData &data) const
Evaluate the ODE vector field: this returns the value of .
aligator::dynamics::LinearODETpl::createData
virtual shared_ptr< ContinuousDynamicsDataTpl< Scalar > > createData() const
Create a data holder instance.
Definition
linear-ode.hpp:59
aligator::dynamics::LinearODETpl::dForward
void dForward(const ConstVectorRef &x, const ConstVectorRef &u, ODEData &data) const
Evaluate the vector field Jacobians.
aligator::dynamics::LinearODETpl::A_
MatrixXs A_
Definition
linear-ode.hpp:23
aligator::dynamics::LinearODETpl::LinearODETpl
LinearODETpl(const ManifoldPtr &space, const MatrixXs &A, const MatrixXs &B, const VectorXs &c)
Standard constructor with state space, matrices and constant term .
Definition
linear-ode.hpp:28
aligator::dynamics::LinearODETpl::ODEData
ContinuousDynamicsDataTpl< Scalar > ODEData
Definition
linear-ode.hpp:19
aligator::dynamics::ODEAbstractTpl
Base class for ODE dynamics .
Definition
ode-abstract.hpp:14
vector-space.hpp
include
aligator
modelling
dynamics
linear-ode.hpp
Generated by
1.17.0