aligator  0.9.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
riccati-base.hpp
Go to the documentation of this file.
1
3#pragma once
4
5#include "aligator/math.hpp"
7#include <optional>
8
9namespace aligator {
10namespace gar {
11
12template <typename _Scalar> class RiccatiSolverBase {
13public:
14 using Scalar = _Scalar;
17
18 virtual bool backward(const Scalar mudyn, const Scalar mueq) = 0;
19
20 virtual bool
21 forward(std::vector<VectorXs> &xs, std::vector<VectorXs> &us,
22 std::vector<VectorXs> &vs, std::vector<VectorXs> &lbdas,
23 const std::optional<ConstVectorRef> &theta_ = std::nullopt) const = 0;
24
25 virtual void cycleAppend(const LQRKnot &knot) = 0;
26
29 virtual void collapseFeedback() {}
30 virtual VectorRef getFeedforward(size_t) = 0;
31 virtual RowMatrixRef getFeedback(size_t) = 0;
32
33 virtual ~RiccatiSolverBase() = default;
34};
35
36} // namespace gar
37} // namespace aligator
38
39#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
40#include "riccati-base.txx"
41#endif
virtual RowMatrixRef getFeedback(size_t)=0
virtual VectorRef getFeedforward(size_t)=0
virtual bool backward(const Scalar mudyn, const Scalar mueq)=0
virtual void cycleAppend(const LQRKnot &knot)=0
virtual ~RiccatiSolverBase()=default
virtual bool forward(std::vector< VectorXs > &xs, std::vector< VectorXs > &us, std::vector< VectorXs > &vs, std::vector< VectorXs > &lbdas, const std::optional< ConstVectorRef > &theta_=std::nullopt) const =0
Math utilities.
Main package namespace.
Struct describing a stage of a constrained LQ problem.