MROB
Public Member Functions | List of all members
mrob::EigenFactor Class Referenceabstract

#include <factor.hpp>

Inheritance diagram for mrob::EigenFactor:
Inheritance graph
[legend]
Collaboration diagram for mrob::EigenFactor:
Collaboration graph
[legend]

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_
 

Detailed Description

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?


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