gtsam_points
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
gtsam_points::EVMBundleAdjustmentFactorBase Class Reference

Bundle adjustment factor based on Eigenvalue minimization One EVMFactor represents one feature (plane / edge) More...

#include <bundle_adjustment_factor_evm.hpp>

Inheritance diagram for gtsam_points::EVMBundleAdjustmentFactorBase:
Inheritance graph
[legend]
Collaboration diagram for gtsam_points::EVMBundleAdjustmentFactorBase:
Collaboration graph
[legend]

Public Types

using shared_ptr = gtsam_points::shared_ptr< EVMBundleAdjustmentFactorBase >
 
- Public Types inherited from gtsam_points::BundleAdjustmentFactorBase
using shared_ptr = gtsam_points::shared_ptr< BundleAdjustmentFactorBase >
 

Public Member Functions

virtual size_t dim () const override
 
virtual void print (const std::string &s="", const gtsam::KeyFormatter &keyFormatter=gtsam::DefaultKeyFormatter) const override
 Print the factor information.
 
virtual void add (const gtsam::Point3 &pt, const gtsam::Key &key) override
 Assign a point to the factor.
 
virtual int num_points () const override
 Number of points assigned to this factor.
 
virtual void set_scale (double scale) override
 Set a constant error scaling factor to boost the weight of the factor.
 

Protected Member Functions

template<int k>
double calc_eigenvalue (const std::vector< Eigen::Vector3d > &transed_points, Eigen::MatrixXd *H=nullptr, Eigen::MatrixXd *J=nullptr) const
 
Eigen::MatrixXd calc_pose_derivatives (const std::vector< Eigen::Vector3d > &transed_points) const
 
gtsam::GaussianFactor::shared_ptr compose_factor (const Eigen::MatrixXd &H, const Eigen::MatrixXd &J, double error) const
 

Protected Attributes

double error_scale
 
std::vector< gtsam::Key > keys
 
std::vector< gtsam::Point3 > points
 
std::unordered_map< gtsam::Key, int > key_index
 

Detailed Description

Bundle adjustment factor based on Eigenvalue minimization One EVMFactor represents one feature (plane / edge)

Note
The computation cost grows as the number of points increases Consider averaging points in a same scan in advance (see [Liu 2021])

Liu and Zhang, "BALM: Bundle Adjustment for Lidar Mapping", IEEE RA-L, 2021

Member Function Documentation

◆ add()

virtual void gtsam_points::EVMBundleAdjustmentFactorBase::add ( const gtsam::Point3 &  pt,
const gtsam::Key &  key 
)
overridevirtual

Assign a point to the factor.

Parameters
ptPoint to be added
keyKey of the pose corresponding to the point

Implements gtsam_points::BundleAdjustmentFactorBase.

◆ num_points()

virtual int gtsam_points::EVMBundleAdjustmentFactorBase::num_points ( ) const
inlineoverridevirtual

Number of points assigned to this factor.

Returns
Number of points

Implements gtsam_points::BundleAdjustmentFactorBase.

◆ print()

virtual void gtsam_points::EVMBundleAdjustmentFactorBase::print ( const std::string &  s = "",
const gtsam::KeyFormatter &  keyFormatter = gtsam::DefaultKeyFormatter 
) const
overridevirtual

Print the factor information.

Reimplemented in gtsam_points::PlaneEVMFactor, and gtsam_points::EdgeEVMFactor.

◆ set_scale()

virtual void gtsam_points::EVMBundleAdjustmentFactorBase::set_scale ( double  scale)
overridevirtual

Set a constant error scaling factor to boost the weight of the factor.

Parameters
scaleError scale

Reimplemented from gtsam_points::BundleAdjustmentFactorBase.


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