aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
vector-space.hpp
Go to the documentation of this file.
1
3
#pragma once
4
5
#include "
aligator/core/manifold-base.hpp
"
6
7
#include <type_traits>
8
9
namespace
aligator
{
10
12
template
<
typename
_Scalar,
int
_Dim>
13
struct
VectorSpaceTpl
:
ManifoldAbstractTpl
<_Scalar> {
14
using
Scalar
= _Scalar;
15
static
constexpr
int
Dim
= _Dim;
16
using
Base
=
ManifoldAbstractTpl<Scalar>
;
17
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
18
using
Base::ndx
;
19
using
Base::nx
;
20
22
explicit
VectorSpaceTpl
(
const
int
dim
)
23
:
Base
(
dim
,
dim
) {
24
static_assert
(
25
Dim
== Eigen::Dynamic,
26
"This constructor is only valid if the dimension is dynamic."
);
27
}
28
29
int
dim
()
const
{
return
this->
nx_
; }
30
35
template
<
int
N =
Dim
,
36
typename
=
typename
std::enable_if_t<N != Eigen::Dynamic>>
37
explicit
VectorSpaceTpl
()
38
:
Base
(
Dim
,
Dim
) {}
39
41
template
<
int
OtherDim>
42
VectorSpaceTpl
(
const
VectorSpaceTpl<Scalar, OtherDim>
&other)
43
:
Base
(other.
nx_
, other.
nx_
) {
44
static_assert
((
Dim
== OtherDim) || (
Dim
== Eigen::Dynamic));
45
}
46
47
protected
:
49
50
/* Integrate */
51
52
void
integrate_impl
(
const
ConstVectorRef &x,
const
ConstVectorRef &v,
53
VectorRef out)
const
{
54
out = x + v;
55
}
56
57
void
Jintegrate_impl
(
const
ConstVectorRef &,
const
ConstVectorRef &,
58
MatrixRef Jout,
int
)
const
{
59
Jout.setIdentity();
60
}
61
62
void
JintegrateTransport_impl
(
const
ConstVectorRef &,
const
ConstVectorRef &,
63
MatrixRef,
int
)
const
{}
64
65
/* Difference */
66
67
void
difference_impl
(
const
ConstVectorRef &x0,
const
ConstVectorRef &x1,
68
VectorRef out)
const
{
69
out = x1 - x0;
70
}
71
72
void
Jdifference_impl
(
const
ConstVectorRef &,
const
ConstVectorRef &,
73
MatrixRef Jout,
int
arg)
const
{
74
switch
(arg) {
75
case
0:
76
Jout.setIdentity() *= -1;
77
break
;
78
case
1:
79
Jout.setIdentity();
80
break
;
81
default
:
82
ALIGATOR_DOMAIN_ERROR
(
"Wrong arg value."
);
83
}
84
}
85
86
void
interpolate_impl
(
const
ConstVectorRef &x0,
const
ConstVectorRef &x1,
87
const
Scalar
&u, VectorRef out)
const
{
88
out = u * x1 + (
static_cast<
Scalar
>
(1.) - u) * x0;
89
}
90
};
91
92
}
// namespace aligator
ALIGATOR_DOMAIN_ERROR
#define ALIGATOR_DOMAIN_ERROR(...)
Definition
exceptions.hpp:16
manifold-base.hpp
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
aligator::ManifoldAbstractTpl::ManifoldAbstractTpl
ManifoldAbstractTpl(int nx, int ndx)
Definition
manifold-base.hpp:18
aligator::ManifoldAbstractTpl< Scalar >::nx
int nx() const
Definition
manifold-base.hpp:25
aligator::ManifoldAbstractTpl< Scalar >::nx_
int nx_
Definition
manifold-base.hpp:123
aligator::ManifoldAbstractTpl< Scalar >::ndx
int ndx() const
Definition
manifold-base.hpp:27
aligator::VectorSpaceTpl::interpolate_impl
void interpolate_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
Interpolation operation.
Definition
vector-space.hpp:86
aligator::VectorSpaceTpl::VectorSpaceTpl
VectorSpaceTpl(const int dim)
Default constructor where the dimension is supplied.
Definition
vector-space.hpp:22
aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >::dim
int dim() const
Definition
vector-space.hpp:29
aligator::VectorSpaceTpl::VectorSpaceTpl
VectorSpaceTpl()
Default constructor without arguments.
Definition
vector-space.hpp:37
aligator::VectorSpaceTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::VectorSpaceTpl::Jdifference_impl
void Jdifference_impl(const ConstVectorRef &, const ConstVectorRef &, MatrixRef Jout, int arg) const
Definition
vector-space.hpp:72
aligator::VectorSpaceTpl::integrate_impl
void integrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
Perform the manifold integration operation.
Definition
vector-space.hpp:52
aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >::Scalar
Scalar Scalar
Definition
vector-space.hpp:14
aligator::VectorSpaceTpl::JintegrateTransport_impl
void JintegrateTransport_impl(const ConstVectorRef &, const ConstVectorRef &, MatrixRef, int) const
Definition
vector-space.hpp:62
aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >::Base
ManifoldAbstractTpl< Scalar > Base
Definition
vector-space.hpp:16
aligator::VectorSpaceTpl::VectorSpaceTpl
VectorSpaceTpl(const VectorSpaceTpl< Scalar, OtherDim > &other)
Build from VectorSpaceTpl of different dimension.
Definition
vector-space.hpp:42
aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >::Dim
static constexpr int Dim
Definition
vector-space.hpp:15
aligator::VectorSpaceTpl::difference_impl
void difference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
Implementation of the manifold retraction operation.
Definition
vector-space.hpp:67
aligator::VectorSpaceTpl::Jintegrate_impl
void Jintegrate_impl(const ConstVectorRef &, const ConstVectorRef &, MatrixRef Jout, int) const
Definition
vector-space.hpp:57
include
aligator
core
vector-space.hpp
Generated by
1.17.0