6#include <gtsam/linear/GaussianFactor.h>
7#include <gtsam/nonlinear/NonlinearFactor.h>
10#include <gtsam/inference/Key.h>
11#include <gtsam/geometry/Pose3.h>
12#include <gtsam_points/util/gtsam_migration.hpp>
14namespace gtsam_points {
21 GTSAM_MAKE_ALIGNED_OPERATOR_NEW
22 using shared_ptr = gtsam_points::shared_ptr<IntegratedMatchingCostFactor>;
40 virtual size_t dim()
const override {
return 6; }
43 virtual void print(
const std::string& s =
"",
const gtsam::KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter)
const override;
47 virtual double error(
const gtsam::Values& values)
const override;
48 virtual gtsam::GaussianFactor::shared_ptr linearize(
const gtsam::Values& values)
const override;
50 const Eigen::Isometry3d& get_fixed_target_pose()
const {
return fixed_target_pose; }
53 Eigen::Isometry3d calc_delta(
const gtsam::Values& values)
const;
78 const Eigen::Isometry3d& delta,
79 Eigen::Matrix<double, 6, 6>* H_target =
nullptr,
80 Eigen::Matrix<double, 6, 6>* H_source =
nullptr,
81 Eigen::Matrix<double, 6, 6>* H_target_source =
nullptr,
82 Eigen::Matrix<double, 6, 1>* b_target =
nullptr,
83 Eigen::Matrix<double, 6, 1>* b_source =
nullptr)
const = 0;
87 Eigen::Isometry3d fixed_target_pose;
Abstraction of LSQ-based scan matching constraints between point clouds.
Definition integrated_matching_cost_factor.hpp:19
virtual size_t memory_usage() const
Calculate the memory usage of this factor.
IntegratedMatchingCostFactor(const gtsam::Pose3 &fixed_target_pose, gtsam::Key source_key)
Create a unary matching cost factor between a fixed target pose and an active source pose.
virtual void update_correspondences(const Eigen::Isometry3d &delta) const =0
Update point correspondences.
virtual double error(const gtsam::Values &values) const override
virtual void print(const std::string &s="", const gtsam::KeyFormatter &keyFormatter=gtsam::DefaultKeyFormatter) const override
Print the factor information.
virtual double evaluate(const Eigen::Isometry3d &delta, Eigen::Matrix< double, 6, 6 > *H_target=nullptr, Eigen::Matrix< double, 6, 6 > *H_source=nullptr, Eigen::Matrix< double, 6, 6 > *H_target_source=nullptr, Eigen::Matrix< double, 6, 1 > *b_target=nullptr, Eigen::Matrix< double, 6, 1 > *b_source=nullptr) const =0
Evaluate the matching cost.
IntegratedMatchingCostFactor(gtsam::Key target_key, gtsam::Key source_key)
Create a binary matching cost factor between target and source poses.