gtsam 4.1.1
gtsam
InequalityFactorGraph.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
22#include <gtsam/inference/FactorGraph-inst.h>
25
26namespace gtsam {
27
32class InequalityFactorGraph: public FactorGraph<LinearInequality> {
33private:
35
36public:
37 typedef boost::shared_ptr<InequalityFactorGraph> shared_ptr;
38
40 void print(
41 const std::string& str = "",
42 const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override {
43 Base::print(str, keyFormatter);
44 }
45
47 bool equals(const InequalityFactorGraph& other, double tol = 1e-9) const {
48 return Base::equals(other, tol);
49 }
50
52 template <class... Args> void add(Args &&... args) {
53 emplace_shared<LinearInequality>(std::forward<Args>(args)...);
54 }
55
59 double error(const VectorValues& x) const {
60 for (const sharedFactor& factor : *this) {
61 if (factor)
62 if (factor->error(x) > 1e-7)
63 return std::numeric_limits<double>::infinity();
64 }
65 return 0.0;
66 }
67};
68
70template<>
71struct traits<InequalityFactorGraph> : public Testable<InequalityFactorGraph> {
72};
73
74} // \ namespace gtsam
75
Factor Graph Base Class.
Factor Graph Values.
LinearInequality derived from Base with constrained noise model.
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:35
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
A helper that implements the traits interface for GTSAM types.
Definition: Testable.h:151
A factor graph is a bipartite graph with factor nodes connected to variable nodes.
Definition: FactorGraph.h:93
virtual void print(const std::string &s="FactorGraph", const KeyFormatter &formatter=DefaultKeyFormatter) const
print out graph
Definition: FactorGraph-inst.h:36
bool equals(const This &fg, double tol=1e-9) const
Check equality.
Definition: FactorGraph-inst.h:49
boost::shared_ptr< LinearInequality > sharedFactor
Shared pointer to a factor.
Definition: FactorGraph.h:97
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:74
Collection of all Linear Inequality constraints Ax-b <= 0 of a Programming problem as a Factor Graph.
Definition: InequalityFactorGraph.h:32
void add(Args &&... args)
Add a linear inequality, forwards arguments to LinearInequality.
Definition: InequalityFactorGraph.h:52
double error(const VectorValues &x) const
Compute error of a guess.
Definition: InequalityFactorGraph.h:59
bool equals(const InequalityFactorGraph &other, double tol=1e-9) const
equals
Definition: InequalityFactorGraph.h:47
void print(const std::string &str="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const override
print
Definition: InequalityFactorGraph.h:40