|
aligator
0.16.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
|
Namespaces | |
| namespace | helpers |
Classes | |
| struct | DenseKernel |
| A dense Bunch-Kaufman based kernel. More... | |
| struct | LqrKnotTpl |
| Struct describing a stage of a constrained LQ problem. More... | |
| struct | LqrProblemTpl |
| class | ParallelRiccatiSolver |
| A parallel-condensing LQ solver. More... | |
| struct | ProximalRiccatiKernel |
| Kernel for use in Riccati-like algorithms for the proximal LQ subproblem. More... | |
| class | ProximalRiccatiSolver |
| A Riccati-like solver for the proximal LQ subproblem in ProxDDP. More... | |
| class | RiccatiSolverBase |
| class | RiccatiSolverDense |
| A stagewise-dense Riccati solver. This algorithm uses a dense Bunch-Kaufman factorization at every stage. More... | |
| struct | StageFactor |
| Per-node struct for all computations in the factorization. More... | |
Functions | |
| template<typename MatrixType, class A> | |
| MatrixType::PlainObject | blockTridiagToDenseMatrix (const std::vector< MatrixType, A > &subdiagonal, const std::vector< MatrixType, A > &diagonal, const std::vector< MatrixType, A > &superdiagonal) |
| template<typename MatrixType, class A, typename InputType, typename OutType, typename Scalar = typename MatrixType::Scalar> | |
| bool | blockTridiagMatMul (const std::vector< MatrixType, A > &Asub, const std::vector< MatrixType, A > &Adiag, const std::vector< MatrixType, A > &Asuper, const BlkMatrix< InputType, -1, 1 > &b, BlkMatrix< OutType, -1, 1 > &c, const Scalar beta) |
Evaluate c <- beta * c + A * b, where A is the block-tridiagonal matrix described by the first three inputs. | |
| template<typename MatrixType, class A, class A2, typename RhsType, typename DecType> | |
| bool | symmetricBlockTridiagSolve (std::vector< MatrixType, A > &subdiagonal, std::vector< MatrixType, A > &diagonal, const std::vector< MatrixType, A > &superdiagonal, BlkMatrix< RhsType, -1, 1 > &rhs, std::vector< DecType, A2 > &facs) |
| Solve a symmetric block-tridiagonal \(Ax=b\) problem by in-place factorization. The subdiagonal will be used to store factorization coefficients. | |
| template<typename MatrixType, class A, class A2, typename RhsType, typename DecType> | |
| bool | blockTridiagRefinementStep (const std::vector< MatrixType, A > &transposedUfacs, const std::vector< MatrixType, A > &superdiagonal, const std::vector< DecType, A2 > &diagonalFacs, BlkMatrix< RhsType, -1, 1 > &rhs) |
| Given the decomposed matrix data, just perform the backward-forward step of the algorithm. | |
| template<typename MatrixType, class A, class A2, typename RhsType, typename DecType> | |
| bool | symmetricBlockTridiagSolveDownLooking (std::vector< MatrixType, A > &subdiagonal, std::vector< MatrixType, A > &diagonal, std::vector< MatrixType, A > &superdiagonal, BlkMatrix< RhsType, -1, 1 > &rhs, std::vector< DecType, A2 > &facs) |
| Solve a symmetric block-tridiagonal \(Ax=b\) problem by in-place factorization. The subdiagonal will be used to store factorization coefficients. This version starts by looking down from the top-left corner of the matrix. | |
| template<typename Scalar> | |
| bool | lqrKnotsSameDim (const LqrKnotTpl< Scalar > &lhs, const LqrKnotTpl< Scalar > &rhs) |
| template<typename Scalar> | |
| std::ostream & | operator<< (std::ostream &oss, const LqrKnotTpl< Scalar > &self) |
| template<typename Scalar> | |
| ParallelRiccatiSolver (LqrProblemTpl< Scalar > &, const uint) -> ParallelRiccatiSolver< Scalar > | |
| template<typename Scalar> | |
| ProximalRiccatiSolver (const LqrProblemTpl< Scalar > &) -> ProximalRiccatiSolver< Scalar > | |
| template<class T, class A> | |
| boost::span< T > | make_span_from_indices (std::vector< T, A > &vec, size_t i0, size_t i1) |
| Create a boost::span object from a vector and two indices. | |
| template<class T, class A> | |
| boost::span< const T > | make_span_from_indices (const std::vector< T, A > &vec, size_t i0, size_t i1) |
| Create a boost::span object from a vector and two indices. | |
| template<typename Scalar> | |
| void | lqrCreateSparseMatrix (const LqrProblemTpl< Scalar > &problem, const Scalar mueq, Eigen::SparseMatrix< Scalar > &mat, Eigen::Matrix< Scalar, -1, 1 > &rhs, bool update) |
| template<typename Scalar> | |
| std::array< Scalar, 3 > | lqrComputeKktError (const LqrProblemTpl< Scalar > &problem, boost::span< const typename math_types< Scalar >::VectorXs > xs, boost::span< const typename math_types< Scalar >::VectorXs > us, boost::span< const typename math_types< Scalar >::VectorXs > vs, boost::span< const typename math_types< Scalar >::VectorXs > lbdas, const Scalar mueq, const std::optional< typename math_types< Scalar >::ConstVectorRef > &theta=std::nullopt, bool verbose=false) |
| template<typename Scalar> | |
| uint | lqrNumRows (const LqrProblemTpl< Scalar > &problem) |
| Compute the number of rows in the problem matrix. | |
| template<typename Scalar> | |
| void | lqrDenseSolutionToTraj (const LqrProblemTpl< Scalar > &problem, const typename math_types< Scalar >::ConstVectorRef solution, std::vector< typename math_types< Scalar >::VectorXs > &xs, std::vector< typename math_types< Scalar >::VectorXs > &us, std::vector< typename math_types< Scalar >::VectorXs > &vs, std::vector< typename math_types< Scalar >::VectorXs > &lbdas) |
| Convert dense RHS solution to its trajectory [x,u,v,lambda] solution. | |
| template<typename Scalar> | |
| auto | lqrInitializeSolution (const LqrProblemTpl< Scalar > &problem) |
| MatrixType::PlainObject aligator::gar::blockTridiagToDenseMatrix | ( | const std::vector< MatrixType, A > & | subdiagonal, |
| const std::vector< MatrixType, A > & | diagonal, | ||
| const std::vector< MatrixType, A > & | superdiagonal ) |
Definition at line 14 of file block-tridiagonal.hpp.
| bool aligator::gar::blockTridiagMatMul | ( | const std::vector< MatrixType, A > & | Asub, |
| const std::vector< MatrixType, A > & | Adiag, | ||
| const std::vector< MatrixType, A > & | Asuper, | ||
| const BlkMatrix< InputType, -1, 1 > & | b, | ||
| BlkMatrix< OutType, -1, 1 > & | c, | ||
| const Scalar | beta ) |
Evaluate c <- beta * c + A * b, where A is the block-tridiagonal matrix described by the first three inputs.
Definition at line 52 of file block-tridiagonal.hpp.
| bool aligator::gar::symmetricBlockTridiagSolve | ( | std::vector< MatrixType, A > & | subdiagonal, |
| std::vector< MatrixType, A > & | diagonal, | ||
| const std::vector< MatrixType, A > & | superdiagonal, | ||
| BlkMatrix< RhsType, -1, 1 > & | rhs, | ||
| std::vector< DecType, A2 > & | facs ) |
Solve a symmetric block-tridiagonal \(Ax=b\) problem by in-place factorization. The subdiagonal will be used to store factorization coefficients.
Definition at line 82 of file block-tridiagonal.hpp.
| bool aligator::gar::blockTridiagRefinementStep | ( | const std::vector< MatrixType, A > & | transposedUfacs, |
| const std::vector< MatrixType, A > & | superdiagonal, | ||
| const std::vector< DecType, A2 > & | diagonalFacs, | ||
| BlkMatrix< RhsType, -1, 1 > & | rhs ) |
Given the decomposed matrix data, just perform the backward-forward step of the algorithm.
| transposedUfacs | - transposed U factors in the decomposition |
| superdiagonal | - superdiagonal of the original matrix |
| diagonalFacs | - diagonal factor decompositions |
Definition at line 147 of file block-tridiagonal.hpp.
| bool aligator::gar::symmetricBlockTridiagSolveDownLooking | ( | std::vector< MatrixType, A > & | subdiagonal, |
| std::vector< MatrixType, A > & | diagonal, | ||
| std::vector< MatrixType, A > & | superdiagonal, | ||
| BlkMatrix< RhsType, -1, 1 > & | rhs, | ||
| std::vector< DecType, A2 > & | facs ) |
Solve a symmetric block-tridiagonal \(Ax=b\) problem by in-place factorization. The subdiagonal will be used to store factorization coefficients. This version starts by looking down from the top-left corner of the matrix.
Definition at line 188 of file block-tridiagonal.hpp.
|
nodiscard |
Definition at line 198 of file lqr-problem.hpp.
| std::ostream & aligator::gar::operator<< | ( | std::ostream & | oss, |
| const LqrKnotTpl< Scalar > & | self ) |
Definition at line 205 of file lqr-problem.hpp.
| aligator::gar::ParallelRiccatiSolver | ( | LqrProblemTpl< Scalar > & | , |
| const uint | ) -> ParallelRiccatiSolver< Scalar > |
| aligator::gar::ProximalRiccatiSolver | ( | const LqrProblemTpl< Scalar > & | ) | -> ProximalRiccatiSolver< Scalar > |
|
inline |
Create a boost::span object from a vector and two indices.
Definition at line 17 of file riccati-kernel.hpp.
|
inline |
Create a boost::span object from a vector and two indices.
Definition at line 24 of file riccati-kernel.hpp.
| void aligator::gar::lqrCreateSparseMatrix | ( | const LqrProblemTpl< Scalar > & | problem, |
| const Scalar | mueq, | ||
| Eigen::SparseMatrix< Scalar > & | mat, | ||
| Eigen::Matrix< Scalar, -1, 1 > & | rhs, | ||
| bool | update ) |
|
nodiscard |
| uint aligator::gar::lqrNumRows | ( | const LqrProblemTpl< Scalar > & | problem | ) |
| void aligator::gar::lqrDenseSolutionToTraj | ( | const LqrProblemTpl< Scalar > & | problem, |
| const typename math_types< Scalar >::ConstVectorRef | solution, | ||
| std::vector< typename math_types< Scalar >::VectorXs > & | xs, | ||
| std::vector< typename math_types< Scalar >::VectorXs > & | us, | ||
| std::vector< typename math_types< Scalar >::VectorXs > & | vs, | ||
| std::vector< typename math_types< Scalar >::VectorXs > & | lbdas ) |
|
nodiscard |