gtsam_points
Loading...
Searching...
No Matches
bundle_adjustment_factor_lsq.hpp
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2021 Kenji Koide (k.koide@aist.go.jp)
3
4#pragma once
5
6#include <gtsam/linear/GaussianFactor.h>
7#include <gtsam_points/util/gtsam_migration.hpp>
8#include <gtsam_points/factors/bundle_adjustment_factor.hpp>
9
10namespace gtsam_points {
11
23public:
24 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
25 using shared_ptr = gtsam_points::shared_ptr<LsqBundleAdjustmentFactor>;
26
28 virtual ~LsqBundleAdjustmentFactor() override;
29
31 virtual void print(const std::string& s = "", const gtsam::KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter) const override;
32
33 virtual size_t dim() const override { return 6; }
34 virtual double error(const gtsam::Values& c) const override;
35 virtual gtsam::GaussianFactor::shared_ptr linearize(const gtsam::Values& c) const override;
36
37 virtual void add(const gtsam::Point3& pt, const gtsam::Key& key) override;
38 virtual int num_points() const override { return global_num_points; }
39
40private:
41 void update_global_distribution(const gtsam::Values& values) const;
42
43protected:
44 struct FrameDistribution;
45
46 std::unordered_map<gtsam::Key, std::shared_ptr<FrameDistribution>> frame_dists;
47
48 int global_num_points;
49 mutable Eigen::Vector3d global_mean;
50 mutable Eigen::Matrix3d global_cov;
51 mutable Eigen::Vector3d global_normal;
52};
53
54} // namespace gtsam_points
Base class of range-based bundle adjustment factors.
Definition bundle_adjustment_factor.hpp:15
Bundle adjustment factor based on EVM and EF optimal condition satisfaction.
Definition bundle_adjustment_factor_lsq.hpp:22
virtual int num_points() const override
Number of points assigned to the factor.
Definition bundle_adjustment_factor_lsq.hpp:38
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.