aligator  0.10.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
proximal-riccati.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "riccati-base.hpp"
4#include "riccati-impl.hpp"
5
6namespace aligator {
7namespace gar {
8
10template <typename _Scalar>
12public:
13 using Scalar = _Scalar;
16 using StageFactorVec = std::vector<StageFactor<Scalar>>;
18
21 using value_t = typename StageFactorType::value_t;
22 using kkt0_t = typename Impl::kkt0_t;
24
26
28 bool backward(const Scalar mudyn, const Scalar mueq);
29
30 bool forward(std::vector<VectorXs> &xs, std::vector<VectorXs> &us,
31 std::vector<VectorXs> &vs, std::vector<VectorXs> &lbdas,
32 const std::optional<ConstVectorRef> &theta = std::nullopt) const;
33
34 void cycleAppend(const KnotType &knot);
35 VectorRef getFeedforward(size_t i) { return datas[i].ff.matrix(); }
36 RowMatrixRef getFeedback(size_t i) { return datas[i].fb.matrix(); }
37
38 kkt0_t kkt0; //< initial stage KKT system
39 VectorXs thGrad; //< optimal value gradient wrt parameter
40 MatrixXs thHess; //< optimal value Hessian wrt parameter
41
42protected:
44};
45
46} // namespace gar
47} // namespace aligator
48
49#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
50#include "./proximal-riccati.txx"
51#endif
A Riccati-like solver for the proximal LQ subproblem in ProxDDP.
const LQRProblemTpl< Scalar > * problem_
std::vector< StageFactor< Scalar > > StageFactorVec
void cycleAppend(const KnotType &knot)
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
bool backward(const Scalar mudyn, const Scalar mueq)
Backward sweep.
ProximalRiccatiSolver(const LQRProblemTpl< Scalar > &problem)
typename StageFactorType::value_t value_t
Main package namespace.
Struct describing a stage of a constrained LQ problem.
Kernel for use in Riccati-like algorithms for the proximal LQ subproblem.