MROB
Public Member Functions | List of all members
mrob::PiFactorPlane Class Reference

#include <PiFactorPlane.hpp>

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

Public Member Functions

 PiFactorPlane (const Mat4 &Sobservation, std::shared_ptr< Node > &nodePose, std::shared_ptr< Node > &nodePlane, Factor::robustFactorType robust_type=Factor::robustFactorType::QUADRATIC)
 
virtual void evaluate_residuals () override
 
virtual void evaluate_jacobians () override
 
virtual void evaluate_chi2 () override
 
virtual void print () const
 
MatRefConst get_obs () const override
 
VectRefConst get_residual () const override
 
MatRefConst get_information_matrix () const override
 
MatRefConst get_jacobian ([[maybe_unused]] mrob::factor_id_t id=0) const override
 
- Public Member Functions inherited from mrob::Factor
 Factor (uint_t dim, uint_t allNodesDim, robustFactorType factor_type=QUADRATIC, uint_t potNumberNodes=5)
 
matData_t get_chi2 () const
 
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

Reimplementation of pi-factor from Zhou et al ICRA 2021 This factor is mostly based on the EF, using the squared root form of the S matrix and connects two nodes, the pose and the plane landmark

sum ||pi' T p_i||^2 = || (S)' T' pi||^2

the two nodes connected at T (pose) and pi (plane 4d) The observation is the sqrt(S), which in clude all points observed

Constructor & Destructor Documentation

◆ PiFactorPlane()

PiFactorPlane::PiFactorPlane ( const Mat4 &  Sobservation,
std::shared_ptr< Node > &  nodePose,
std::shared_ptr< Node > &  nodePlane,
Factor::robustFactorType  robust_type = Factor::robustFactorType::QUADRATIC 
)

Creates the Pi factor.

Member Function Documentation

◆ evaluate_chi2()

void PiFactorPlane::evaluate_chi2 ( )
overridevirtual

Evaluates chi2 of the current problem, with the given residuals. It may be required to evaluate_residuals() to obtain the new chi2 values This function MOST likely needs to evaluate residuals first, but evaluate_residuals does not necessarily requires to calculate chi2, that is why there are 2 functions.

Implements mrob::Factor.

◆ evaluate_jacobians()

void PiFactorPlane::evaluate_jacobians ( )
overridevirtual

Evaluates the Jacobians

Implements mrob::Factor.

◆ evaluate_residuals()

void PiFactorPlane::evaluate_residuals ( )
overridevirtual

Jacobians are not evaluated, just the residuals

Implements mrob::Factor.

◆ get_jacobian()

MatRefConst mrob::PiFactorPlane::get_jacobian ( [[maybe_unused] ] mrob::factor_id_t  id = 0) const
inlineoverridevirtual

get_jacobian returns a block matrices stacking all the Jacobians on the factor. The convention is that Jacobians corresponding to.

The input value is in case that Jacobian supports accessing a particular Jacobian of a node. For most factors (include 1-2 nodes) this option is not available Mostly only for EigenFactors whose number of connected nodes is unbounded

Implements mrob::Factor.

◆ get_obs()

MatRefConst mrob::PiFactorPlane::get_obs ( ) const
inlineoverridevirtual

Return a Ref to a dynamic matrix, while the child matrix should declare all these variables as fixed size matrices, and ref takes care of doing the conversion with minimal temporary artifacts Observation can be a 3d point, a 3d pose (transformation 4x4), etc.

Implements mrob::Factor.

◆ get_residual()

VectRefConst mrob::PiFactorPlane::get_residual ( ) const
inlineoverridevirtual

Residual will always be a block vector

Implements mrob::Factor.

◆ print()

void PiFactorPlane::print ( void  ) const
virtual

The print utility could be re-implemented on child classes if there are special needs

Reimplemented from mrob::Factor.


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