NonlinearConstraint.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
19 #pragma once
20 
24 #if GTSAM_ENABLE_BOOST_SERIALIZATION
25 #include <boost/serialization/base_object.hpp>
26 #endif
27 
28 namespace gtsam {
29 
36 class GTSAM_EXPORT NonlinearConstraint : public NoiseModelFactor {
37  public:
39 
41  using Base::Base;
42 
44 
46  virtual ~NonlinearConstraint() {}
47 
49  virtual NoiseModelFactor::shared_ptr penaltyFactor(const double mu = 1.0) const {
50  return cloneWithNewNoiseModel(penaltyNoise(mu));
51  }
52 
54  virtual double violation(const Values& x) const { return sqrt(2 * error(x)); }
55 
57  virtual bool feasible(const Values& x, const double tolerance = 1e-5) const {
58  return violation(x) <= tolerance;
59  }
60 
61  const Vector sigmas() const { return noiseModel()->sigmas(); }
62 
63  // return the hessian of unwhitened error function in each dimension.
64  virtual std::vector<Matrix> unwhitenedHessian(const Values& x) const {
65  throw std::runtime_error("hessian not implemented");
66  }
67 
68  protected:
70  SharedDiagonal penaltyNoise(const double mu) const {
71  return noiseModel::Diagonal::Sigmas(noiseModel()->sigmas() / sqrt(mu));
72  }
73 
77  }
78 
79  private:
80 #if GTSAM_ENABLE_BOOST_SERIALIZATION
81 
82  friend class boost::serialization::access;
83  template <class ARCHIVE>
84  void serialize(ARCHIVE& ar, const unsigned int /*version*/) {
85  ar& boost::serialization::make_nvp("NonlinearConstraint",
86  boost::serialization::base_object<Base>(*this));
87  }
88 #endif
89 };
90 
91 } // namespace gtsam
gtsam::NonlinearConstraint::sigmas
const Vector sigmas() const
Definition: NonlinearConstraint.h:61
e
Array< double, 1, 3 > e(1./3., 0.5, 2.)
gtsam::NonlinearConstraint::Base
NoiseModelFactor Base
Definition: NonlinearConstraint.h:38
gtsam::noiseModel::Constrained::MixedSigmas
static shared_ptr MixedSigmas(const Vector &mu, const Vector &sigmas)
Definition: NoiseModel.cpp:368
test_constructor::sigmas
Vector1 sigmas
Definition: testHybridNonlinearFactor.cpp:52
mu
double mu
Definition: testBoundingConstraint.cpp:37
x
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Definition: gnuplot_common_settings.hh:12
gtsam::NonlinearConstraint::unwhitenedHessian
virtual std::vector< Matrix > unwhitenedHessian(const Values &x) const
Definition: NonlinearConstraint.h:64
gtsam::noiseModel::Diagonal::Sigmas
static shared_ptr Sigmas(const Vector &sigmas, bool smart=true)
Definition: NoiseModel.cpp:283
gtsam::NoiseModelFactor::shared_ptr
std::shared_ptr< This > shared_ptr
Definition: NonlinearFactor.h:210
gtsam::Vector
Eigen::VectorXd Vector
Definition: Vector.h:39
FactorGraph-inst.h
Factor Graph Base Class.
gtsam::NonlinearConstraint::penaltyFactor
virtual NoiseModelFactor::shared_ptr penaltyFactor(const double mu=1.0) const
Definition: NonlinearConstraint.h:49
gtsam::SharedDiagonal
noiseModel::Diagonal::shared_ptr SharedDiagonal
Definition: NoiseModel.h:764
gtsam::SharedNoiseModel
noiseModel::Base::shared_ptr SharedNoiseModel
Definition: NoiseModel.h:762
NonlinearFactor.h
Non-linear factor base classes.
gtsam::NonlinearConstraint::penaltyNoise
SharedDiagonal penaltyNoise(const double mu) const
Definition: NonlinearConstraint.h:70
gtsam
traits
Definition: SFMdata.h:40
error
static double error
Definition: testRot3.cpp:37
FactorGraph.h
Factor Graph Base Class.
gtsam::NoiseModelFactor
Definition: NonlinearFactor.h:198
gtsam::Values
Definition: Values.h:65
Base::Base
Base()=default
gtsam::NonlinearConstraint::constrainedNoise
static SharedNoiseModel constrainedNoise(const Vector &sigmas)
Definition: NonlinearConstraint.h:75
gtsam::NonlinearConstraint::violation
virtual double violation(const Values &x) const
Definition: NonlinearConstraint.h:54
gtsam::NonlinearConstraint::feasible
virtual bool feasible(const Values &x, const double tolerance=1e-5) const
Definition: NonlinearConstraint.h:57
gtsam::NonlinearConstraint
Definition: NonlinearConstraint.h:36
ceres::sqrt
Jet< T, N > sqrt(const Jet< T, N > &f)
Definition: jet.h:418
gtsam::NonlinearFactor::error
virtual double error(const Values &c) const
Definition: NonlinearFactor.cpp:27
gtsam::NonlinearConstraint::~NonlinearConstraint
virtual ~NonlinearConstraint()
Definition: NonlinearConstraint.h:46


gtsam
Author(s):
autogenerated on Wed Mar 19 2025 03:02:33