aligator  0.6.1
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
stage-data.hpp
Go to the documentation of this file.
1
3#pragma once
4
5#include "aligator/fwd.hpp"
9
10namespace aligator {
11
13template <typename _Scalar>
14struct StageDataTpl : Cloneable<StageDataTpl<_Scalar>> {
15 using Scalar = _Scalar;
17
18 using StageModel = StageModelTpl<Scalar>;
19 using CostDataAbstract = CostDataAbstractTpl<Scalar>;
20 using StageFunctionData = StageFunctionDataTpl<Scalar>;
21 using DynamicsData = DynamicsDataTpl<Scalar>;
22
24 std::vector<shared_ptr<StageFunctionData>> constraint_data;
26 shared_ptr<CostDataAbstract> cost_data;
27 // Data for the system dynamics.
28 shared_ptr<DynamicsData> dynamics_data;
29
34 explicit StageDataTpl(const StageModel &stage_model)
35 : constraint_data(stage_model.numConstraints()),
36 cost_data(stage_model.cost_->createData()),
37 dynamics_data(stage_model.dynamics_->createData()) {
38 const std::size_t nc = stage_model.numConstraints();
39
40 for (std::size_t j = 0; j < nc; j++) {
41 const auto &func = stage_model.constraints_[j].func;
42 constraint_data[j] = func->createData();
43 }
44 }
45
46 virtual ~StageDataTpl() = default;
47
49 virtual void checkData() {
50 const char msg[] = "StageData integrity check failed.";
51 if (cost_data == nullptr)
53 fmt::format("{} (cost_data cannot be nullptr)", msg));
54 if (dynamics_data == nullptr)
56 fmt::format("{} (dynamics_data cannot be nullptr)", msg));
57 }
58
59protected:
60 StageDataTpl() = default;
61 virtual StageDataTpl *clone_impl() const override {
62 return new StageDataTpl(*this);
63 }
64};
65
66} // namespace aligator
67
68#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
69#include "aligator/core/stage-data.txx"
70#endif
Defines the constraint object and constraint stack manager for this library.
#define ALIGATOR_RUNTIME_ERROR(msg)
Definition exceptions.hpp:6
Forward declarations.
Main package namespace.
Mixin which makes a class/class hierarchy cloneable.
Definition clone.hpp:12
Data struct for stage models StageModelTpl.
shared_ptr< DynamicsData > dynamics_data
std::vector< shared_ptr< StageFunctionData > > constraint_data
Data structs for the functions involved in the constraints.
virtual ~StageDataTpl()=default
StageDataTpl(const StageModel &stage_model)
Constructor.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
virtual void checkData()
Check data integrity.
shared_ptr< CostDataAbstract > cost_data
Data for the running costs.
virtual StageDataTpl * clone_impl() const override