MROB
Public Member Functions | Protected Attributes | List of all members
mrob::Factor1Pose3d Class Reference

#include <factor1Pose3d.hpp>

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

Public Member Functions

 Factor1Pose3d (const Mat4 &observation, std::shared_ptr< Node > &n1, const Mat6 &obsInf, Factor::robustFactorType robust_type=Factor::robustFactorType::QUADRATIC)
 
 Factor1Pose3d (const SE3 &observation, std::shared_ptr< Node > &n1, const Mat6 &obsInf, Factor::robustFactorType robust_type=Factor::robustFactorType::QUADRATIC)
 
void evaluate_residuals () override
 
void evaluate_jacobians () override
 
void evaluate_chi2 () override
 
void print () const
 
MatRefConst get_obs () const
 
VectRefConst get_residual () const
 
MatRefConst get_information_matrix () const
 
MatRefConst get_jacobian ([[maybe_unused]] mrob::factor_id_t id=0) const
 
- 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)
 

Protected Attributes

Mat61 r_
 
SE3 Tobs_
 
SE3 Tr_
 
Mat6 W_
 
Mat6 J_
 
- 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_
 

Additional Inherited Members

- Public Types inherited from mrob::Factor
enum  robustFactorType {
  QUADRATIC = 0, HUBER, CAUCHY, MCCLURE,
  RANSAC
}
 

Detailed Description

The Factor1Poses3d is a vertex representing the distribution of a nodePose3d, pretty much like an anchoring factor.

The state is an observed RBT, coincident with the node state it is connected to.

In particular, the residual of this factor is: r = (x - obs) = Tx * Tobs^{-1}

Member Function Documentation

◆ evaluate_chi2()

void Factor1Pose3d::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 Factor1Pose3d::evaluate_jacobians ( )
overridevirtual

Evaluates Jacobians, this also creates a new linearization point. This function MOST likely needs to evaluate residuals first

Implements mrob::Factor.

◆ evaluate_residuals()

void Factor1Pose3d::evaluate_residuals ( )
overridevirtual

Returns the chi2 error and fills the residual vector

Implements mrob::Factor.

◆ get_jacobian()

MatRefConst mrob::Factor1Pose3d::get_jacobian ( [[maybe_unused] ] mrob::factor_id_t  id = 0) const
inlinevirtual

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::Factor1Pose3d::get_obs ( ) const
inlinevirtual

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::Factor1Pose3d::get_residual ( ) const
inlinevirtual

Residual will always be a block vector

Implements mrob::Factor.

◆ print()

void Factor1Pose3d::print ( ) 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: