aligator  0.13.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Loading...
Searching...
No Matches
aligator::gar::RiccatiSolverDense< _Scalar > Class Template Reference

A stagewise-dense Riccati solver. This algorithm uses a dense Bunch-Kaufman factorization at every stage. More...

#include <aligator/gar/dense-riccati.hpp>

Inheritance diagram for aligator::gar::RiccatiSolverDense< _Scalar >:
[legend]
Collaboration diagram for aligator::gar::RiccatiSolverDense< _Scalar >:
[legend]

Public Types

using Scalar = _Scalar
 
using Base = RiccatiSolverBase<Scalar>
 
using BlkMat44 = BlkMatrix<MatrixXs, 4, 4>
 
using BlkRowMat41 = BlkMatrix<RowMatrixXs, 4, 1>
 
using BlkVec4 = BlkMatrix<VectorXs, 4, 1>
 
using KnotType = LqrKnotTpl<Scalar>
 
using Kernel = DenseKernel<Scalar>
 
using Data = typename Kernel::Data
 
- Public Types inherited from aligator::gar::RiccatiSolverBase< _Scalar >
using Scalar = _Scalar
 
using LqrKnot = LqrKnotTpl<double>
 

Public Member Functions

 ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES (Scalar)
 
 RiccatiSolverDense (const LqrProblemTpl< Scalar > &problem)
 
bool backward (const Scalar mudyn, const Scalar mueq)
 
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
 
void cycleAppend (const KnotType &knot)
 
VectorRef getFeedforward (size_t i)
 
RowMatrixRef getFeedback (size_t i)
 
- Public Member Functions inherited from aligator::gar::RiccatiSolverBase< _Scalar >
 ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES (Scalar)
 
virtual void cycleAppend (const LqrKnot &knot)=0
 
virtual void collapseFeedback ()
 
virtual ~RiccatiSolverBase ()=default
 

Public Attributes

std::vector< Datastage_factors
 
std::vector< MatrixXs > Pxx
 
std::vector< MatrixXs > Pxt
 
std::vector< MatrixXs > Ptt
 
std::vector< VectorXs > px
 
std::vector< VectorXs > pt
 
struct { 
 
   BlkMatrix< MatrixXs, 2, 2 >   mat 
 
   BlkMatrix< VectorXs, 2, 1 >   ff 
 
   BlkMatrix< MatrixXs, 2, 1 >   fth 
 
   Eigen::BunchKaufman< MatrixXs >   ldl 
 
kkt0 
 
VectorXs thGrad
 
MatrixXs thHess
 

Protected Attributes

const LqrProblemTpl< Scalar > * problem_
 

Detailed Description

template<typename _Scalar>
class aligator::gar::RiccatiSolverDense< _Scalar >

A stagewise-dense Riccati solver. This algorithm uses a dense Bunch-Kaufman factorization at every stage.

Remarks
This is the approach from the T-RO journal submission and 2022 IROS paper.

Definition at line 17 of file dense-riccati.hpp.

Member Typedef Documentation

◆ Scalar

template<typename _Scalar>
using aligator::gar::RiccatiSolverDense< _Scalar >::Scalar = _Scalar

Definition at line 19 of file dense-riccati.hpp.

◆ Base

template<typename _Scalar>
using aligator::gar::RiccatiSolverDense< _Scalar >::Base = RiccatiSolverBase<Scalar>

Definition at line 21 of file dense-riccati.hpp.

◆ BlkMat44

template<typename _Scalar>
using aligator::gar::RiccatiSolverDense< _Scalar >::BlkMat44 = BlkMatrix<MatrixXs, 4, 4>

Definition at line 22 of file dense-riccati.hpp.

◆ BlkRowMat41

template<typename _Scalar>
using aligator::gar::RiccatiSolverDense< _Scalar >::BlkRowMat41 = BlkMatrix<RowMatrixXs, 4, 1>

Definition at line 23 of file dense-riccati.hpp.

◆ BlkVec4

template<typename _Scalar>
using aligator::gar::RiccatiSolverDense< _Scalar >::BlkVec4 = BlkMatrix<VectorXs, 4, 1>

Definition at line 24 of file dense-riccati.hpp.

◆ KnotType

template<typename _Scalar>
using aligator::gar::RiccatiSolverDense< _Scalar >::KnotType = LqrKnotTpl<Scalar>

Definition at line 25 of file dense-riccati.hpp.

◆ Kernel

template<typename _Scalar>
using aligator::gar::RiccatiSolverDense< _Scalar >::Kernel = DenseKernel<Scalar>

Definition at line 26 of file dense-riccati.hpp.

◆ Data

template<typename _Scalar>
using aligator::gar::RiccatiSolverDense< _Scalar >::Data = typename Kernel::Data

Definition at line 27 of file dense-riccati.hpp.

Constructor & Destructor Documentation

◆ RiccatiSolverDense()

template<typename _Scalar>
aligator::gar::RiccatiSolverDense< _Scalar >::RiccatiSolverDense ( const LqrProblemTpl< Scalar > & problem)
explicit

Member Function Documentation

◆ ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES()

template<typename _Scalar>
aligator::gar::RiccatiSolverDense< _Scalar >::ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES ( Scalar )

◆ backward()

template<typename _Scalar>
bool aligator::gar::RiccatiSolverDense< _Scalar >::backward ( const Scalar mudyn,
const Scalar mueq )
virtual

◆ forward()

template<typename _Scalar>
bool aligator::gar::RiccatiSolverDense< _Scalar >::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
virtual

◆ cycleAppend()

template<typename _Scalar>
void aligator::gar::RiccatiSolverDense< _Scalar >::cycleAppend ( const KnotType & knot)

◆ getFeedforward()

template<typename _Scalar>
VectorRef aligator::gar::RiccatiSolverDense< _Scalar >::getFeedforward ( size_t i)
inlinevirtual

Implements aligator::gar::RiccatiSolverBase< _Scalar >.

Definition at line 53 of file dense-riccati.hpp.

◆ getFeedback()

template<typename _Scalar>
RowMatrixRef aligator::gar::RiccatiSolverDense< _Scalar >::getFeedback ( size_t i)
inlinevirtual

Implements aligator::gar::RiccatiSolverBase< _Scalar >.

Definition at line 54 of file dense-riccati.hpp.

Member Data Documentation

◆ stage_factors

template<typename _Scalar>
std::vector<Data> aligator::gar::RiccatiSolverDense< _Scalar >::stage_factors

Definition at line 29 of file dense-riccati.hpp.

◆ Pxx

template<typename _Scalar>
std::vector<MatrixXs> aligator::gar::RiccatiSolverDense< _Scalar >::Pxx

Definition at line 30 of file dense-riccati.hpp.

◆ Pxt

template<typename _Scalar>
std::vector<MatrixXs> aligator::gar::RiccatiSolverDense< _Scalar >::Pxt

Definition at line 31 of file dense-riccati.hpp.

◆ Ptt

template<typename _Scalar>
std::vector<MatrixXs> aligator::gar::RiccatiSolverDense< _Scalar >::Ptt

Definition at line 32 of file dense-riccati.hpp.

◆ px

template<typename _Scalar>
std::vector<VectorXs> aligator::gar::RiccatiSolverDense< _Scalar >::px

Definition at line 33 of file dense-riccati.hpp.

◆ pt

template<typename _Scalar>
std::vector<VectorXs> aligator::gar::RiccatiSolverDense< _Scalar >::pt

Definition at line 34 of file dense-riccati.hpp.

◆ mat

template<typename _Scalar>
BlkMatrix<MatrixXs, 2, 2> aligator::gar::RiccatiSolverDense< _Scalar >::mat

Definition at line 36 of file dense-riccati.hpp.

◆ ff

template<typename _Scalar>
BlkMatrix<VectorXs, 2, 1> aligator::gar::RiccatiSolverDense< _Scalar >::ff

Definition at line 37 of file dense-riccati.hpp.

◆ fth

template<typename _Scalar>
BlkMatrix<MatrixXs, 2, 1> aligator::gar::RiccatiSolverDense< _Scalar >::fth

Definition at line 38 of file dense-riccati.hpp.

◆ ldl

template<typename _Scalar>
Eigen::BunchKaufman<MatrixXs> aligator::gar::RiccatiSolverDense< _Scalar >::ldl

Definition at line 39 of file dense-riccati.hpp.

◆ [struct]

struct { ... } aligator::gar::RiccatiSolverDense< _Scalar >::kkt0

◆ thGrad

template<typename _Scalar>
VectorXs aligator::gar::RiccatiSolverDense< _Scalar >::thGrad

Definition at line 41 of file dense-riccati.hpp.

◆ thHess

template<typename _Scalar>
MatrixXs aligator::gar::RiccatiSolverDense< _Scalar >::thHess

Definition at line 42 of file dense-riccati.hpp.

◆ problem_

template<typename _Scalar>
const LqrProblemTpl<Scalar>* aligator::gar::RiccatiSolverDense< _Scalar >::problem_
protected

Definition at line 57 of file dense-riccati.hpp.


The documentation for this class was generated from the following file: