63 typedef std::shared_ptr<This> shared_ptr;
72 template<
typename ITERATOR>
76 template<
class CONTAINER>
80 template<
class DERIVEDFACTOR>
89 const std::string& str =
"NonlinearFactorGraph: ",
93 void printErrors(
const Values& values,
const std::string& str =
"NonlinearFactorGraph: ",
97 [](
const Factor*, double, size_t) {
return true; }})
const;
100 bool equals(
const NonlinearFactorGraph& other,
double tol = 1e-9)
const;
107 virtual double error(
const Values& values)
const;
110 double probPrime(
const Values& values)
const;
115 std::shared_ptr<SymbolicFactorGraph> symbolic()
const;
120 Ordering orderingCOLAMD()
const;
130 Ordering orderingCOLAMDConstrained(
const FastMap<Key, int>& constraints)
const;
133 virtual std::shared_ptr<GaussianFactorGraph> linearize(
const Values& linearizationPoint)
const;
136 virtual std::shared_ptr<const NonlinearFactorGraph>
cloneShared()
const {
137 return std::make_shared<NonlinearFactorGraph>(*
this);
141 typedef std::function<void(
const std::shared_ptr<HessianFactor>& hessianFactor)>
Dampen;
151 const Values& values,
const Dampen& dampen =
nullptr)
const;
167 const Dampen& dampen =
nullptr)
const;
172 const Dampen& dampen =
nullptr)
const;
223 void addPrior(
Key key,
const T& prior,
const Matrix& covariance) {
235 void dot(std::ostream& os,
const Values& values,
247 const std::string& filename,
const Values& values,
258 std::shared_ptr<HessianFactor> linearizeToHessianFactor(
259 const Values& values,
const Scatter& scatter,
const Dampen& dampen =
nullptr)
const;
261#if GTSAM_ENABLE_BOOST_SERIALIZATION
263 friend class boost::serialization::access;
264 template<
class ARCHIVE>
265 void serialize(ARCHIVE & ar,
const unsigned int ) {
266 ar & boost::serialization::make_nvp(
"NonlinearFactorGraph",
267 boost::serialization::base_object<Base>(*
this));
Predicate used to filter factor-graph error output.
Graphviz formatter for NonlinearFactorGraph.
Base class for noise model factors with N variables.
Non-linear factor base classes.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition Key.cpp:30
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:143
std::function< bool(const Factor *, double, std::size_t)> FactorErrorPredicate
Predicate used to select factor errors for graph diagnostics.
Definition FactorErrorPredicate.h:27
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
noiseModel::Base::shared_ptr SharedNoiseModel
Aliases.
Definition NoiseModel.h:846
double dot(const V1 &a, const V2 &b)
Dot product.
Definition Vector.h:191
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:43
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:152
void dot(std::ostream &os, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
Output to graphviz format, stream version.
Definition FactorGraph-inst.h:141
FactorGraph()
Definition FactorGraph.h:103
IsDerived< DERIVEDFACTOR > emplace_shared(Args &&... args)
Definition FactorGraph.h:153
void saveGraph(const std::string &filename, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
output to file with graphviz format.
Definition FactorGraph-inst.h:177
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition GaussianFactorGraph.h:77
Scatter is an intermediate data structure used when building a HessianFactor incrementally,...
Definition Scatter.h:49
Factor that supports arbitrary expressions via AD.
Definition ExpressionFactor.h:46
Expression class that supports automatic differentiation.
Definition Expression.h:49
Formatting options and functions for saving a NonlinearFactorGraph instance in GraphViz format.
Definition GraphvizFormatting.h:32
Definition NonlinearFactorGraph.h:57
NonlinearFactorGraph()
Default constructor.
Definition NonlinearFactorGraph.h:69
void addPrior(Key key, const T &prior, const SharedNoiseModel &model=nullptr)
Convenience method which adds a PriorFactor to the factor graph.
Definition NonlinearFactorGraph.h:207
virtual std::shared_ptr< const NonlinearFactorGraph > cloneShared() const
Clone into a shared pointer while preserving derived graph behavior.
Definition NonlinearFactorGraph.h:136
NonlinearFactorGraph rekey(const std::map< Key, Key > &rekey_mapping) const
Rekey() performs a deep-copy of all of the factors, and changes keys according to a mapping.
Definition NonlinearFactorGraph.cpp:414
NonlinearFactorGraph clone() const
Clone() performs a deep-copy of the graph, including all of the factors.
Definition NonlinearFactorGraph.cpp:402
NonlinearFactorGraph(const CONTAINER &factors)
Construct from container of factors (shared_ptr or plain objects).
Definition NonlinearFactorGraph.h:77
std::function< void(const std::shared_ptr< HessianFactor > &hessianFactor)> Dampen
typdef for dampen functions used below
Definition NonlinearFactorGraph.h:141
Values updateCholesky(const Values &values, const Dampen &dampen=nullptr) const
Linearize and solve in one pass.
Definition NonlinearFactorGraph.cpp:383
void addExpressionFactor(const SharedNoiseModel &R, const T &z, const Expression< T > &h)
Directly add ExpressionFactor that implements |h(x)-z|^2_R.
Definition NonlinearFactorGraph.h:195
void addPrior(Key key, const T &prior, const Matrix &covariance)
Convenience method which adds a PriorFactor to the factor graph.
Definition NonlinearFactorGraph.h:223
NonlinearFactorGraph(ITERATOR firstFactor, ITERATOR lastFactor)
Construct from iterator over factors.
Definition NonlinearFactorGraph.h:73
NonlinearFactorGraph(const FactorGraph< DERIVEDFACTOR > &graph)
Implicit copy/downcast constructor to override explicit template container constructor.
Definition NonlinearFactorGraph.h:81
std::shared_ptr< HessianFactor > linearizeToHessianFactor(const Values &values, const Dampen &dampen=nullptr) const
Instead of producing a GaussianFactorGraph, pre-allocate and linearize directly into a HessianFactor.
Definition NonlinearFactorGraph.cpp:374
A non-templated config holding any types of Manifold-group elements.
Definition Values.h:65
Symbolic Factor Graph.
Definition SymbolicFactorGraph.h:64