aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
cost-abstract.hpp
Go to the documentation of this file.
1
4
#pragma once
5
6
#include "
aligator/context.hpp
"
7
#include "
aligator/core/manifold-base.hpp
"
8
#include "
aligator/third-party/polymorphic_cxx14.h
"
9
10
namespace
aligator
{
13
template
<
typename
_Scalar>
struct
CostAbstractTpl
{
14
using
Scalar
= _Scalar;
15
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
16
using
CostData
=
CostDataAbstractTpl<Scalar>
;
17
using
Manifold
=
ManifoldAbstractTpl<Scalar>
;
18
20
xyz::polymorphic<Manifold>
space
;
22
int
nu
;
23
24
int
nx
()
const
{
return
space
->nx(); }
25
int
ndx
()
const
{
return
space
->ndx(); }
26
27
template
<
class
U>
28
CostAbstractTpl
(U &&
space
,
const
int
nu
)
29
:
space
(std::forward<U>(
space
))
30
,
nu
(
nu
) {}
31
33
virtual
void
evaluate
(
const
ConstVectorRef &x,
const
ConstVectorRef &u,
34
CostData
&data)
const
;
35
37
virtual
void
computeGradients
(
const
ConstVectorRef &x,
38
const
ConstVectorRef &u,
CostData
&data)
const
;
39
41
virtual
void
computeHessians
(
const
ConstVectorRef &x,
const
ConstVectorRef &u,
42
CostData
&data)
const
;
43
44
virtual
shared_ptr<CostData>
createData
()
const
{
45
return
std::make_shared<CostData>(
ndx
(),
nu
);
46
}
47
48
virtual
~CostAbstractTpl
() =
default
;
49
};
50
51
template
<
typename
Scalar>
52
void
CostAbstractTpl<Scalar>::evaluate
(
const
ConstVectorRef &,
53
const
ConstVectorRef &,
54
CostData
&)
const
{
55
ALIGATOR_RUNTIME_ERROR
(
"not implemented"
);
56
}
57
58
template
<
typename
Scalar>
59
void
CostAbstractTpl<Scalar>::computeGradients
(
const
ConstVectorRef &,
60
const
ConstVectorRef &,
61
CostData
&)
const
{
62
ALIGATOR_RUNTIME_ERROR
(
"not implemented"
);
63
}
64
65
template
<
typename
Scalar>
66
void
CostAbstractTpl<Scalar>::computeHessians
(
const
ConstVectorRef &,
67
const
ConstVectorRef &,
68
CostData
&)
const
{
69
ALIGATOR_RUNTIME_ERROR
(
"not implemented"
);
70
}
71
73
template
<
typename
_Scalar>
struct
CostDataAbstractTpl
{
74
using
Scalar
= _Scalar;
75
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
76
int
ndx_
,
nu_
;
77
Scalar
value_
;
78
VectorXs
grad_
;
79
MatrixXs
hess_
;
80
82
VectorRef
Lx_
;
84
VectorRef
Lu_
;
86
MatrixRef
Lxx_
;
88
MatrixRef
Lxu_
;
90
MatrixRef
Lux_
;
92
MatrixRef
Luu_
;
93
94
CostDataAbstractTpl
(
const
int
ndx,
const
int
nu)
95
:
ndx_
(ndx)
96
,
nu_
(nu)
97
,
value_
(0.)
98
,
grad_
(ndx + nu)
99
,
hess_
(ndx + nu, ndx + nu)
100
,
Lx_
(
grad_
.head(ndx))
101
,
Lu_
(
grad_
.tail(nu))
102
,
Lxx_
(
hess_
.topLeftCorner(ndx, ndx))
103
,
Lxu_
(
hess_
.topRightCorner(ndx, nu))
104
,
Lux_
(
hess_
.bottomLeftCorner(nu, ndx))
105
,
Luu_
(
hess_
.bottomRightCorner(nu, nu)) {
106
grad_
.setZero();
107
hess_
.setZero();
108
}
109
110
CostDataAbstractTpl
(
const
CostAbstractTpl<Scalar>
&cost)
111
:
CostDataAbstractTpl
(cost.ndx(), cost.nu) {}
112
113
virtual
~CostDataAbstractTpl
() =
default
;
114
};
115
116
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
117
extern
template
struct
CostAbstractTpl<context::Scalar>
;
118
extern
template
struct
CostDataAbstractTpl<context::Scalar>
;
119
#endif
120
}
// namespace aligator
context.hpp
ALIGATOR_RUNTIME_ERROR
#define ALIGATOR_RUNTIME_ERROR(...)
Definition
exceptions.hpp:8
manifold-base.hpp
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
polymorphic_cxx14.h
aligator::CostAbstractTpl
Stage costs for control problems.
Definition
cost-abstract.hpp:13
aligator::CostAbstractTpl< Scalar >::space
xyz::polymorphic< Manifold > space
Definition
cost-abstract.hpp:20
aligator::CostAbstractTpl::createData
virtual shared_ptr< CostData > createData() const
Definition
cost-abstract.hpp:44
aligator::CostAbstractTpl::evaluate
virtual void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, CostData &data) const
Evaluate the cost function.
Definition
cost-abstract.hpp:52
aligator::CostAbstractTpl::CostAbstractTpl
CostAbstractTpl(U &&space, const int nu)
Definition
cost-abstract.hpp:28
aligator::CostAbstractTpl::nx
int nx() const
Definition
cost-abstract.hpp:24
aligator::CostAbstractTpl< Scalar >::Manifold
ManifoldAbstractTpl< Scalar > Manifold
Definition
cost-abstract.hpp:17
aligator::CostAbstractTpl< Scalar >::CostData
CostDataAbstractTpl< Scalar > CostData
Definition
cost-abstract.hpp:16
aligator::CostAbstractTpl< Scalar >::nu
int nu
Definition
cost-abstract.hpp:22
aligator::CostAbstractTpl::ndx
int ndx() const
Definition
cost-abstract.hpp:25
aligator::CostAbstractTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::CostAbstractTpl::computeGradients
virtual void computeGradients(const ConstVectorRef &x, const ConstVectorRef &u, CostData &data) const
Compute the cost gradients .
Definition
cost-abstract.hpp:59
aligator::CostAbstractTpl< Scalar >::Scalar
Scalar Scalar
Definition
cost-abstract.hpp:14
aligator::CostAbstractTpl::computeHessians
virtual void computeHessians(const ConstVectorRef &x, const ConstVectorRef &u, CostData &data) const
Compute the cost Hessians .
Definition
cost-abstract.hpp:66
aligator::CostAbstractTpl::~CostAbstractTpl
virtual ~CostAbstractTpl()=default
aligator::CostDataAbstractTpl
Data struct for CostAbstractTpl.
Definition
cost-abstract.hpp:73
aligator::CostDataAbstractTpl< Scalar >::Lx_
VectorRef Lx_
Definition
cost-abstract.hpp:82
aligator::CostDataAbstractTpl< Scalar >::Lux_
MatrixRef Lux_
Definition
cost-abstract.hpp:90
aligator::CostDataAbstractTpl::CostDataAbstractTpl
CostDataAbstractTpl(const int ndx, const int nu)
Definition
cost-abstract.hpp:94
aligator::CostDataAbstractTpl::CostDataAbstractTpl
CostDataAbstractTpl(const CostAbstractTpl< Scalar > &cost)
Definition
cost-abstract.hpp:110
aligator::CostDataAbstractTpl< Scalar >::grad_
VectorXs grad_
Definition
cost-abstract.hpp:78
aligator::CostDataAbstractTpl< Scalar >::Luu_
MatrixRef Luu_
Definition
cost-abstract.hpp:92
aligator::CostDataAbstractTpl< Scalar >::Scalar
Scalar Scalar
Definition
cost-abstract.hpp:74
aligator::CostDataAbstractTpl< Scalar >::Lxx_
MatrixRef Lxx_
Definition
cost-abstract.hpp:86
aligator::CostDataAbstractTpl< Scalar >::hess_
MatrixXs hess_
Definition
cost-abstract.hpp:79
aligator::CostDataAbstractTpl< Scalar >::ndx_
int ndx_
Definition
cost-abstract.hpp:76
aligator::CostDataAbstractTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::CostDataAbstractTpl< Scalar >::nu_
int nu_
Definition
cost-abstract.hpp:76
aligator::CostDataAbstractTpl< Scalar >::value_
Scalar value_
Definition
cost-abstract.hpp:77
aligator::CostDataAbstractTpl< Scalar >::Lxu_
MatrixRef Lxu_
Definition
cost-abstract.hpp:88
aligator::CostDataAbstractTpl< Scalar >::Lu_
VectorRef Lu_
Definition
cost-abstract.hpp:84
aligator::CostDataAbstractTpl::~CostDataAbstractTpl
virtual ~CostDataAbstractTpl()=default
aligator::ManifoldAbstractTpl
Base class for manifolds, to use in cost funcs, solvers...
Definition
manifold-base.hpp:11
include
aligator
core
cost-abstract.hpp
Generated by
1.17.0