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-function.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
aligator/core/function-abstract.hpp
"
4
5
namespace
aligator
{
9
template
<
typename
Scalar>
struct
LinearFunctionTpl
:
StageFunctionTpl
<Scalar> {
10
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
11
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
12
using
Base
=
StageFunctionTpl<Scalar>
;
13
using
Data
=
StageFunctionDataTpl<Scalar>
;
14
15
MatrixXs
A_
;
16
MatrixXs
B_
;
17
VectorXs
d_
;
18
19
LinearFunctionTpl
(
const
int
ndx,
const
int
nu
,
const
int
nr
);
20
21
LinearFunctionTpl
(
const
ConstMatrixRef A,
const
ConstMatrixRef B,
22
const
ConstVectorRef d);
23
24
void
evaluate
(
const
ConstVectorRef &x,
const
ConstVectorRef &u,
25
Data
&data)
const override
{
26
data.value_ =
d_
;
27
data.value_.noalias() +=
A_
* x;
28
data.value_.noalias() +=
B_
* u;
29
}
30
36
void
computeJacobians
(
const
ConstVectorRef &,
const
ConstVectorRef &,
37
Data
&data)
const override
{
38
data.Jx_ =
A_
;
39
data.Ju_ =
B_
;
40
}
41
44
virtual
shared_ptr<Data>
createData
()
const override
{
45
auto
data = std::make_shared<Data>(this->
ndx1
, this->
nu
, this->
nr
);
46
data->Jx_ =
A_
;
47
data->Ju_ =
B_
;
48
return
data;
49
}
50
};
51
52
template
<
typename
Scalar>
53
LinearFunctionTpl<Scalar>::LinearFunctionTpl
(
const
int
ndx,
const
int
nu
,
54
const
int
nr
)
55
:
Base
(ndx,
nu
,
nr
)
56
,
A_
(
nr
, ndx)
57
,
B_
(
nr
,
nu
)
58
,
d_
(
nr
) {
59
A_
.setZero();
60
B_
.setZero();
61
d_
.setZero();
62
}
63
64
template
<
typename
Scalar>
65
LinearFunctionTpl<Scalar>::LinearFunctionTpl
(
const
ConstMatrixRef A,
66
const
ConstMatrixRef B,
67
const
ConstVectorRef d)
68
:
Base
((int)A.cols(), (int)B.cols(), (int)d.rows())
69
,
A_
(A)
70
,
B_
(B)
71
,
d_
(d) {
72
assert((
A_
.rows() ==
d_
.rows()) && (
B_
.rows() ==
d_
.rows()) &&
73
"Number of rows not consistent."
);
74
}
75
76
}
// namespace aligator
function-abstract.hpp
Base definitions for ternary functions.
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
aligator::LinearFunctionTpl::computeJacobians
void computeJacobians(const ConstVectorRef &, const ConstVectorRef &, Data &data) const override
Compute Jacobians of this function.
Definition
linear-function.hpp:36
aligator::LinearFunctionTpl::Base
StageFunctionTpl< Scalar > Base
Definition
linear-function.hpp:12
aligator::LinearFunctionTpl::ALIGATOR_DYNAMIC_TYPEDEFS
EIGEN_MAKE_ALIGNED_OPERATOR_NEW ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::LinearFunctionTpl::A_
MatrixXs A_
Definition
linear-function.hpp:15
aligator::LinearFunctionTpl::createData
virtual shared_ptr< Data > createData() const override
Instantiate a Data object.
Definition
linear-function.hpp:44
aligator::LinearFunctionTpl::evaluate
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const override
Evaluate the function.
Definition
linear-function.hpp:24
aligator::LinearFunctionTpl::d_
VectorXs d_
Definition
linear-function.hpp:17
aligator::LinearFunctionTpl::LinearFunctionTpl
LinearFunctionTpl(const int ndx, const int nu, const int nr)
Definition
linear-function.hpp:53
aligator::LinearFunctionTpl::Data
StageFunctionDataTpl< Scalar > Data
Definition
linear-function.hpp:13
aligator::LinearFunctionTpl::B_
MatrixXs B_
Definition
linear-function.hpp:16
aligator::StageFunctionDataTpl
Base struct for function data.
Definition
function-abstract.hpp:73
aligator::StageFunctionTpl< Scalar >::nu
const int nu
Definition
function-abstract.hpp:21
aligator::StageFunctionTpl< Scalar >::Scalar
Scalar Scalar
Definition
function-abstract.hpp:14
aligator::StageFunctionTpl< Scalar >::ndx1
const int ndx1
Definition
function-abstract.hpp:19
aligator::StageFunctionTpl< Scalar >::nr
const int nr
Definition
function-abstract.hpp:23
aligator::StageFunctionTpl< Scalar >::StageFunctionTpl
StageFunctionTpl(const int ndx, const int nu, const int nr)
include
aligator
modelling
linear-function.hpp
Generated by
1.17.0