gtsam_points
Loading...
Searching...
No Matches
linear_damping_factor.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/HessianFactor.h>
7#include <gtsam/nonlinear/LinearContainerFactor.h>
8#include <gtsam_points/util/gtsam_migration.hpp>
9
10namespace gtsam_points {
11
16class LinearDampingFactor : public gtsam::LinearContainerFactor {
17public:
18 using shared_ptr = gtsam_points::shared_ptr<LinearDampingFactor>;
19
20 LinearDampingFactor(gtsam::Key key, int dim, double mu)
21 : gtsam::LinearContainerFactor(gtsam::HessianFactor(key, mu * gtsam::Matrix::Identity(dim, dim), gtsam::Vector::Zero(dim), 0.0)) {}
22
23 LinearDampingFactor(gtsam::Key key, const gtsam::Vector& diag)
24 : gtsam::LinearContainerFactor(gtsam::HessianFactor(key, diag.asDiagonal(), gtsam::Vector::Zero(diag.size()), 0.0)) {}
25
27
28 virtual ~LinearDampingFactor() override {}
29
30private:
33 template <class ARCHIVE>
34 void serialize(ARCHIVE& ar, const unsigned int /*version*/) {
35 namespace bs = ::boost::serialization;
36 ar& boost::serialization::make_nvp("LinearContainerFactor", boost::serialization::base_object<gtsam::LinearContainerFactor>(*this));
37 }
38};
39
40} // namespace gtsam_points
This factor adds a constant diagonal matrix to the Hessian matrix. It causes a damping effect (like l...
Definition linear_damping_factor.hpp:16
friend class boost::serialization::access
Definition linear_damping_factor.hpp:32