aligator  0.6.1
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 "fwd.hpp"
4#include "riccati-base.hpp"
5#include "riccati-impl.hpp"
6
7namespace aligator {
8namespace gar {
9
11template <typename _Scalar>
13public:
14 using Scalar = _Scalar;
16 using Base = RiccatiSolverBase<Scalar>;
17 using StageFactorVec = std::vector<StageFactor<Scalar>>;
19
20 using Impl = ProximalRiccatiKernel<Scalar>;
21 using StageFactorType = StageFactor<Scalar>;
22 using value_t = typename StageFactorType::value_t;
23 using kkt0_t = typename Impl::kkt0_t;
24 using KnotType = LQRKnotTpl<Scalar>;
25
26 explicit ProximalRiccatiSolver(const LQRProblemTpl<Scalar> &problem);
27
29 bool backward(const Scalar mudyn, const Scalar mueq);
30
31 bool forward(std::vector<VectorXs> &xs, std::vector<VectorXs> &us,
32 std::vector<VectorXs> &vs, std::vector<VectorXs> &lbdas,
33 const std::optional<ConstVectorRef> &theta = std::nullopt) const;
34
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:
43 const LQRProblemTpl<Scalar> *problem_;
44};
45
46} // namespace gar
47} // namespace aligator
48
49#include "./proximal-riccati.hxx"
50
51#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
52#include "./proximal-riccati.txx"
53#endif
A Riccati-like solver for the proximal LQ subproblem in ProxDDP.
const LQRProblemTpl< Scalar > * problem_
std::vector< StageFactor< Scalar > > StageFactorVec
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
ProximalRiccatiKernel< Scalar > Impl
Main package namespace.