|
MROB
|
#include <factor.hpp>


Public Member Functions | |
| EigenFactor (robustFactorType factor_type=QUADRATIC, uint_t potNumberNodes=5) | |
| virtual VectRefConst | get_state () const =0 |
| virtual void | add_point (const Mat31 &p, std::shared_ptr< Node > &node, mrob::matData_t &W)=0 |
| virtual MatRefConst | get_hessian (mrob::factor_id_t id=0) const =0 |
| virtual void | add_points_array (const MatX &P, std::shared_ptr< Node > &node, mrob::matData_t &W)=0 |
| virtual void | add_points_S_matrix (const Mat4 &S, std::shared_ptr< Node > &node, mrob::matData_t &W)=0 |
Public Member Functions inherited from mrob::Factor | |
| Factor (uint_t dim, uint_t allNodesDim, robustFactorType factor_type=QUADRATIC, uint_t potNumberNodes=5) | |
| virtual void | evaluate_residuals ()=0 |
| virtual void | evaluate_jacobians ()=0 |
| virtual void | evaluate_chi2 ()=0 |
| matData_t | get_chi2 () const |
| virtual void | print () const |
| virtual MatRefConst | get_obs () const =0 |
| virtual VectRefConst | get_residual () const =0 |
| virtual MatRefConst | get_information_matrix () const =0 |
| virtual MatRefConst | get_jacobian ([[maybe_unused]] mrob::factor_id_t id=0) const =0 |
| factor_id_t | get_id () const |
| void | set_id (factor_id_t id) |
| uint_t | get_dim_obs () const |
| void | set_dim_obs (uint_t dim) |
| uint_t | get_all_nodes_dim () const |
| void | set_all_nodes_dim (uint_t dim) |
| const std::vector< std::shared_ptr< Node > > * | get_neighbour_nodes (void) const |
| matData_t | evaluate_robust_weight (matData_t u, matData_t params=0.0) |
Additional Inherited Members | |
Public Types inherited from mrob::Factor | |
| enum | robustFactorType { QUADRATIC = 0, HUBER, CAUCHY, MCCLURE, RANSAC } |
Protected Attributes inherited from mrob::Factor | |
| factor_id_t | id_ |
| std::vector< std::shared_ptr< Node > > | neighbourNodes_ |
| uint_t | dim_ |
| uint_t | allNodesDim_ |
| matData_t | chi2_ |
| robustFactorType | robust_type_ |
| matData_t | robust_weight_ |
Abstract class EigenFactor. This is a factor with extra methods than Factor which requires a new base abstract class.
The Eigen factor connects different poses that have observed the same geometric entity. It is not required an explicit parametrization of the current state, which is a geometric entity estimated a priory on each iteration, e.g. a plane. The resultant topology is N nodes connecting to the eigen factor.
Hence, the new method get state, for instance a plane, but this state is outside the FGraph optimization, that is why we can consider this approach non-parametric
NOTE: due to its nature, multiple observation can be added to the same EF, meaning we need to create a constructor PLUS an additional method
In order to build the problem we would follow the interface specifications by FGraph but we need extra methods and variables to keep track of the neighbours. For instance, we need to get Jacobians and Hessian matrices
This class assumes that matrices S = sum p*p' are calculated before since they are directly inputs XXX should we store all points?
1.8.13