7#include <unordered_map>
8#include <gtsam/geometry/Point3.h>
9#include <gtsam/nonlinear/NonlinearFactor.h>
10#include <gtsam_points/util/gtsam_migration.hpp>
11#include <gtsam_points/factors/bundle_adjustment_factor.hpp>
13namespace gtsam_points {
28 using shared_ptr = gtsam_points::shared_ptr<EVMBundleAdjustmentFactorBase>;
32 virtual size_t dim()
const override {
return 6; }
35 virtual void print(
const std::string& s =
"",
const gtsam::KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter)
const override;
42 virtual void add(
const gtsam::Point3& pt,
const gtsam::Key& key)
override;
48 virtual int num_points()
const override {
return points.size(); }
58 double calc_eigenvalue(
const std::vector<Eigen::Vector3d>& transed_points, Eigen::MatrixXd* H =
nullptr, Eigen::MatrixXd* J =
nullptr)
const;
60 Eigen::MatrixXd calc_pose_derivatives(
const std::vector<Eigen::Vector3d>& transed_points)
const;
62 gtsam::GaussianFactor::shared_ptr compose_factor(
const Eigen::MatrixXd& H,
const Eigen::MatrixXd& J,
double error)
const;
66 std::vector<gtsam::Key> keys;
67 std::vector<gtsam::Point3> points;
68 std::unordered_map<gtsam::Key, int> key_index;
76 using shared_ptr = gtsam_points::shared_ptr<PlaneEVMFactor>;
82 virtual void print(
const std::string& s =
"",
const gtsam::KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter)
const override;
84 virtual double error(
const gtsam::Values& c)
const override;
85 virtual gtsam::GaussianFactor::shared_ptr linearize(
const gtsam::Values& c)
const override;
95 using shared_ptr = gtsam_points::shared_ptr<EdgeEVMFactor>;
101 virtual void print(
const std::string& s =
"",
const gtsam::KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter)
const override;
103 virtual double error(
const gtsam::Values& c)
const override;
104 virtual gtsam::GaussianFactor::shared_ptr linearize(
const gtsam::Values& c)
const override;
Base class of range-based bundle adjustment factors.
Definition bundle_adjustment_factor.hpp:15
Bundle adjustment factor based on Eigenvalue minimization One EVMFactor represents one feature (plane...
Definition bundle_adjustment_factor_evm.hpp:26
virtual int num_points() const override
Number of points assigned to this factor.
Definition bundle_adjustment_factor_evm.hpp:48
virtual void add(const gtsam::Point3 &pt, const gtsam::Key &key) override
Assign a point to the factor.
virtual void print(const std::string &s="", const gtsam::KeyFormatter &keyFormatter=gtsam::DefaultKeyFormatter) const override
Print the factor information.
virtual void set_scale(double scale) override
Set a constant error scaling factor to boost the weight of the factor.
Edge EVM factor that minimizes lambda_0 + lambda_1.
Definition bundle_adjustment_factor_evm.hpp:93
virtual void print(const std::string &s="", const gtsam::KeyFormatter &keyFormatter=gtsam::DefaultKeyFormatter) const override
Print the factor information.
Plane EVM factor that minimizes lambda_0.
Definition bundle_adjustment_factor_evm.hpp:74
virtual void print(const std::string &s="", const gtsam::KeyFormatter &keyFormatter=gtsam::DefaultKeyFormatter) const override
Print the factor information.