A generic symbolic and numeric Schur-complement handler for builing reduced systems of equations.
#include <mrpt/srba/impl/schur.h>

Classes | |
| struct | TGradApSymbolicEntry |
| struct | THApSymbolicEntry |
| Info for each block in HAp. More... | |
| struct | TInfoPerHfBlock |
Public Member Functions | |
| SchurComplement (HESS_Ap &_HAp, HESS_f &_Hf, HESS_Apf &_HApf, double *_minus_grad_Ap, double *_minus_grad_f) | |
| Constructor: builds the symbolic representations Note: HApf must be in row-compressed form; HAp & Hf in column-compressed form. More... | |
| void | realize_HAp_changed () |
| Must be called after the numerical values of the Hessian HAp change, typically after an optimization update which led to re-evaluation of the Jacobians around a new linearization point. More... | |
| size_t | getNumFeatures () const |
| After calling numeric_build_reduced_system() one can get the stats on how many features are actually estimable. More... | |
| size_t | getNumFeaturesFullRank () const |
| void | numeric_build_reduced_system (const double lambda) |
| Replace the HAp matrix with its Schur reduced version. More... | |
| void | numeric_solve_for_features (double *in_deltas_Ap, double *out_deltas_feats) |
| bool | was_ith_feature_invertible (const size_t i) const |
Private Types | |
| typedef Eigen::Map< Eigen::Matrix< double, HESS_Ap::matrix_t::RowsAtCompileTime, 1 > > | vector_Ap_t |
| typedef Eigen::Map< Eigen::Matrix< double, HESS_f::matrix_t::RowsAtCompileTime, 1 > > | vector_f_t |
| typedef mrpt::aligned_containers< TInfoPerHfBlock >::vector_t | TInfoPerHfBlock_vector_t |
Private Attributes | |
| HESS_Ap | HAp_original |
| HESS_Ap & | HAp |
| HESS_f & | Hf |
| HESS_Apf & | HApf |
| double * | minus_grad_Ap |
| double * | minus_grad_f |
| const size_t | nUnknowns_Ap |
| const size_t | nUnknowns_f |
| size_t | nHf_invertible_blocks |
| for stats, the number of Hf diagonal blocks which are not rank-deficient. More... | |
| TInfoPerHfBlock_vector_t | m_Hf_blocks_info |
| std::deque< THApSymbolicEntry > | m_sym_HAp_reduce |
| All the required operations needed to update HAp into its reduced system. More... | |
| std::vector< TGradApSymbolicEntry > | m_sym_GradAp_reduce |
| All the required operations needed to update Gradient of Ap into its reduced system. More... | |
|
private |
|
private |
|
private |
|
inline |
Constructor: builds the symbolic representations Note: HApf must be in row-compressed form; HAp & Hf in column-compressed form.
| [in] | _minus_grad_f | Can be NULL if there're no observations of landmarks with unknown positions (may still be of LMs with known ones). |
|
inline |
After calling numeric_build_reduced_system() one can get the stats on how many features are actually estimable.
|
inline |
|
inline |
Replace the HAp matrix with its Schur reduced version.
The lambda value is used to sum it to the diagonal of Hf (features), but it's NOT added to the output HAp. This is intentional, so the caller can add different lamdba values as needed in different trials if an ill conditioned matrix is found.
|
inline |
|
inline |
Must be called after the numerical values of the Hessian HAp change, typically after an optimization update which led to re-evaluation of the Jacobians around a new linearization point.
This method latches the current value of HAp for reseting it again if we later need to recompute the reduced Schur system for different values of lambda.
|
inline |
|
private |
Definition at line 319 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_build_reduced_system(), mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::realize_HAp_changed(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::SchurComplement().
|
private |
Definition at line 318 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_build_reduced_system(), mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::realize_HAp_changed(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::SchurComplement().
|
private |
Definition at line 321 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_solve_for_features(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::SchurComplement().
|
private |
|
private |
Definition at line 346 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_build_reduced_system(), mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_solve_for_features(), mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::SchurComplement(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::was_ith_feature_invertible().
|
private |
All the required operations needed to update Gradient of Ap into its reduced system.
Definition at line 410 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_build_reduced_system(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::SchurComplement().
|
private |
All the required operations needed to update HAp into its reduced system.
Definition at line 383 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_build_reduced_system(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::SchurComplement().
|
private |
|
private |
Definition at line 323 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_build_reduced_system(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_solve_for_features().
|
private |
for stats, the number of Hf diagonal blocks which are not rank-deficient.
Definition at line 327 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::getNumFeaturesFullRank(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_build_reduced_system().
|
private |
Definition at line 325 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_build_reduced_system(), mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_solve_for_features(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::SchurComplement().
|
private |
Definition at line 326 of file schur.h.
Referenced by mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::getNumFeatures(), mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_build_reduced_system(), mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::numeric_solve_for_features(), and mrpt::srba::SchurComplement< typename hessian_traits_t::TSparseBlocksHessian_Ap, typename hessian_traits_t::TSparseBlocksHessian_f, typename hessian_traits_t::TSparseBlocksHessian_Apf >::SchurComplement().
| Page generated by Doxygen 1.8.9.1 for MRPT 1.3.0 SVN: at Sun Sep 13 03:55:12 UTC 2015 |