aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
workspace-base.hpp
Go to the documentation of this file.
1
3
#pragma once
4
5
#include "
aligator/context.hpp
"
6
#include "
aligator/core/traj-opt-problem.hpp
"
7
#include "
aligator/core/traj-opt-data.hpp
"
8
#include "
aligator/utils/mpc-util.hpp
"
9
10
namespace
aligator
{
11
13
template
<
typename
Scalar>
struct
WorkspaceBaseTpl
{
14
ALIGATOR_DYNAMIC_TYPEDEFS
(Scalar);
15
16
protected
:
17
// Whether the workspace was initialized.
18
bool
m_isInitialized
;
19
20
public
:
22
std::size_t
nsteps
;
24
TrajOptDataTpl<Scalar>
problem_data
;
25
28
std::vector<VectorXs>
trial_xs
;
29
std::vector<VectorXs>
trial_us
;
31
33
std::vector<VectorXs>
dyn_slacks
;
34
35
WorkspaceBaseTpl
()
36
:
m_isInitialized
(false)
37
,
problem_data
() {}
38
39
explicit
WorkspaceBaseTpl
(
const
TrajOptProblemTpl<Scalar>
&problem);
40
41
~WorkspaceBaseTpl
() =
default
;
42
43
bool
isInitialized
()
const
{
return
m_isInitialized
; }
44
47
void
cycleLeft
();
48
52
void
cycleAppend
(shared_ptr<
StageDataTpl<Scalar>
> data) {
53
problem_data
.stage_data.emplace_back(data);
54
this->
cycleLeft
();
55
problem_data.
stage_data
.pop_back();
56
}
57
};
58
59
/* impl */
60
61
template
<
typename
Scalar>
62
WorkspaceBaseTpl<Scalar>::WorkspaceBaseTpl
(
63
const
TrajOptProblemTpl<Scalar>
&problem)
64
:
m_isInitialized
(true)
65
,
nsteps
(problem.numSteps())
66
,
problem_data
(problem) {
67
problem.
initializeSolution
(
trial_xs
,
trial_us
);
68
}
69
70
template
<
typename
Scalar>
void
WorkspaceBaseTpl<Scalar>::cycleLeft
() {
71
rotate_vec_left
(
problem_data
.stage_data);
72
73
rotate_vec_left
(
trial_xs
);
74
rotate_vec_left
(
trial_us
);
75
76
rotate_vec_left
(
dyn_slacks
, 1);
77
}
78
79
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
80
extern
template
struct
WorkspaceBaseTpl<context::Scalar>
;
81
#endif
82
}
// namespace aligator
context.hpp
mpc-util.hpp
Utils for model-predictive control.
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
aligator::rotate_vec_left
void rotate_vec_left(std::vector< T, Alloc > &v, long n_head=0, long n_tail=0)
Simply rotate an entire std::vector to the left.
Definition
mpc-util.hpp:17
aligator::StageDataTpl
Data struct for stage models StageModelTpl.
Definition
stage-data.hpp:10
aligator::TrajOptDataTpl
Problem data struct.
Definition
traj-opt-data.hpp:10
aligator::TrajOptDataTpl::stage_data
std::vector< shared_ptr< StageData > > stage_data
Data structs for each stage of the problem.
Definition
traj-opt-data.hpp:23
aligator::TrajOptProblemTpl
Trajectory optimization problem.
Definition
traj-opt-problem.hpp:102
aligator::TrajOptProblemTpl::initializeSolution
void initializeSolution(std::vector< VectorXs > &xs, std::vector< VectorXs > &us) const
Execute the initialization strategy to generate an initial candidate solution to the problem.
Definition
traj-opt-problem.hpp:237
aligator::WorkspaceBaseTpl
Base workspace struct for the algorithms.
Definition
workspace-base.hpp:13
aligator::WorkspaceBaseTpl::nsteps
std::size_t nsteps
Number of steps in the problem.
Definition
workspace-base.hpp:22
aligator::WorkspaceBaseTpl::isInitialized
bool isInitialized() const
Definition
workspace-base.hpp:43
aligator::WorkspaceBaseTpl::m_isInitialized
bool m_isInitialized
Definition
workspace-base.hpp:18
aligator::WorkspaceBaseTpl::trial_us
std::vector< VectorXs > trial_us
Definition
workspace-base.hpp:29
aligator::WorkspaceBaseTpl::~WorkspaceBaseTpl
~WorkspaceBaseTpl()=default
aligator::WorkspaceBaseTpl::problem_data
TrajOptDataTpl< Scalar > problem_data
Problem data.
Definition
workspace-base.hpp:24
aligator::WorkspaceBaseTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::WorkspaceBaseTpl::cycleLeft
void cycleLeft()
Cycle the workspace data to the left.
Definition
workspace-base.hpp:70
aligator::WorkspaceBaseTpl::dyn_slacks
std::vector< VectorXs > dyn_slacks
Dynamical infeasibility gaps.
Definition
workspace-base.hpp:33
aligator::WorkspaceBaseTpl::cycleAppend
void cycleAppend(shared_ptr< StageDataTpl< Scalar > > data)
Same as cycleLeft(), but add a StageDataTpl to problem_data.
Definition
workspace-base.hpp:52
aligator::WorkspaceBaseTpl::trial_xs
std::vector< VectorXs > trial_xs
Definition
workspace-base.hpp:28
aligator::WorkspaceBaseTpl::WorkspaceBaseTpl
WorkspaceBaseTpl()
Definition
workspace-base.hpp:35
traj-opt-data.hpp
traj-opt-problem.hpp
include
aligator
solvers
workspace-base.hpp
Generated by
1.17.0