14template <
typename Scalar>
16 std::vector<xyz::polymorphic<ConstraintSetTpl<Scalar>>> components;
17 for (
size_t i = 0; i < constraints.
size(); i++) {
18 components.push_back(constraints.
sets[i]);
31 using VecBool = Eigen::Matrix<bool, Eigen::Dynamic, 1>;
45 std::vector<VectorXs>
Lxs;
46 std::vector<VectorXs>
Lus;
47 std::vector<VectorXs>
Lvs;
48 std::vector<VectorXs>
Lds;
80 std::vector<VectorXs>
dxs;
81 std::vector<VectorXs>
dus;
82 std::vector<VectorXs>
dvs;
120 template <
typename T>
125template <
typename Scalar>
127 return oss << fmt::format(
"{}", self);
132template <
typename Scalar>
133struct fmt::formatter<
aligator::WorkspaceTpl<Scalar>> {
134 constexpr auto parse(format_parse_context &ctx)
const
135 ->
decltype(ctx.begin()) {
139 auto format(
const aligator::WorkspaceTpl<Scalar> &ws,
140 format_context &ctx)
const ->
decltype(ctx.out()) {
141 return fmt::format_to(ctx.out(),
144 "\n n_multipliers:\t{:d}"
146 ws.nsteps, ws.lams_plus.size());
150#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
151#include "./workspace.txx"
Block matrix class, with a fixed-size number of row and column blocks.
std::ostream & operator<<(std::ostream &oss, const ExplicitDynamicsDataTpl< S > &self)
auto getConstraintProductSet(const ConstraintStackTpl< Scalar > &constraints)
Cartesian product of multiple constraint sets. This class makes computing multipliers and Jacobian ma...
Convenience class to manage a stack of constraints.
const std::vector< long > & dims() const
Get the set of dimensions for each constraint in the stack.
std::vector< PolySet > sets
Data struct for stage models StageModelTpl.
A stage in the control problem.
Trajectory optimization problem.
std::size_t nsteps
Number of steps in the problem.
std::vector< VectorXs > trial_us
TrajOptDataTpl< Scalar > problem_data
Problem data.
std::vector< VectorXs > dyn_slacks
Dynamical infeasibility gaps.
std::vector< VectorXs > trial_xs
Workspace for solver SolverProxDDP.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
gar::LqrProblemTpl< Scalar > LqrProblemType
WorkspaceTpl(const WorkspaceTpl &)=delete
VectorXs state_dual_infeas
Dual infeasibility in the states for each stage of the problem.
std::vector< VectorXs > dlams
std::vector< VectorXs > dvs
ConstraintSetProductTpl< Scalar > ConstraintSetProduct
LqrProblemType lqr_problem
std::vector< VectorXs > trial_lams
std::vector< VectorXs > vs_plus
std::vector< VecBool > active_constraints
Masks for active constraint sets.
friend std::ostream & operator<<(std::ostream &oss, const WorkspaceTpl< T > &self)
std::vector< VectorXs > dxs
std::vector< VectorXs > lams_plus
std::vector< VectorXs > Lus
std::vector< VectorXs > shifted_constraints
Shifted constraints the projection operators should be applied to.
std::vector< VectorXs > prev_lams
std::vector< VectorXs > Lxs
WorkspaceTpl(const TrajOptProblemTpl< Scalar > &problem)
std::vector< VectorXs > Lvs
std::vector< VectorXs > lams_pdal
Eigen::Matrix< bool, Eigen::Dynamic, 1 > VecBool
VectorXs stage_cstr_violations
Constraint violation measures for each stage and constraint.
std::vector< BlkJacobianType > cstr_proj_jacs
Projected path constraint Jacobians (used to symmetrize the LQ subproblem)
std::vector< VectorXs > vs_pdal
std::vector< VectorXs > prev_vs
std::vector< VectorXs > prev_us
std::vector< VectorXs > dus
VectorXs stage_inner_crits
Subproblem termination criterion for each stage.
StageModelTpl< Scalar > StageModel
std::vector< VectorXs > stage_infeasibilities
Stagewise infeasibilities.
WorkspaceTpl & operator=(const WorkspaceTpl &)=delete
WorkspaceTpl & operator=(WorkspaceTpl &&)=default
WorkspaceBaseTpl< Scalar > Base
std::vector< ConstraintSetProduct > cstr_product_sets
Cartesian products of the constraint sets of each stage.
BlkMatrix< MatrixXs, -1, 2 > BlkJacobianType
gar::LqrKnotTpl< Scalar > KnotType
std::vector< VectorXs > cstr_lu_corr
Scalar inner_criterion
Overall subproblem termination criterion.
std::vector< VectorXs > prev_xs
std::vector< VectorXs > cstr_lx_corr
WorkspaceTpl(WorkspaceTpl &&)=default
void cycleAppend(const TrajOptProblemTpl< Scalar > &problem, shared_ptr< StageDataTpl< Scalar > > data)
VectorXs control_dual_infeas
Dual infeasibility in the controls for each stage of the problem.
std::vector< VectorXs > trial_vs
std::vector< VectorXs > Lds
Struct describing a stage of a constrained LQ problem.