28 #include <gtsam/nonlinear/PriorFactor.h> 38 class GaussianFactorGraph;
39 class SymbolicFactorGraph;
43 class ExpressionFactor;
61 typedef std::shared_ptr<This> shared_ptr;
70 template<
typename ITERATOR>
74 template<
class CONTAINER>
78 template<
class DERIVEDFACTOR>
87 const std::string& str =
"NonlinearFactorGraph: ",
88 const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const override;
91 void printErrors(
const Values& values,
const std::string& str =
"NonlinearFactorGraph: ",
93 const std::function<
bool(
const Factor* ,
double ,
size_t )>&
94 printCondition = [](
const Factor *,
double,
size_t) {
return true;})
const;
104 double error(
const Values& values)
const;
107 double probPrime(
const Values& values)
const;
112 std::shared_ptr<SymbolicFactorGraph> symbolic()
const;
130 std::shared_ptr<GaussianFactorGraph> linearize(
const Values& linearizationPoint)
const;
133 typedef std::function<void(const std::shared_ptr<HessianFactor>& hessianFactor)>
Dampen;
142 std::shared_ptr<HessianFactor> linearizeToHessianFactor(
143 const Values& values,
const Dampen& dampen =
nullptr)
const;
153 std::shared_ptr<HessianFactor> linearizeToHessianFactor(
159 const Dampen& dampen =
nullptr)
const;
164 const Dampen& dampen =
nullptr)
const;
189 this->emplace_shared<ExpressionFactor<T>>(R, z, h);
201 emplace_shared<PriorFactor<T>>(key, prior, model);
215 void addPrior(
Key key,
const T& prior,
const Matrix& covariance) {
216 emplace_shared<PriorFactor<T>>(key, prior, covariance);
227 void dot(std::ostream& os,
const Values& values,
239 const std::string& filename,
const Values& values,
250 std::shared_ptr<HessianFactor> linearizeToHessianFactor(
253 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 255 friend class boost::serialization::access;
256 template<
class ARCHIVE>
257 void serialize(ARCHIVE & ar,
const unsigned int ) {
258 ar & boost::serialization::make_nvp(
"NonlinearFactorGraph",
259 boost::serialization::base_object<Base>(*
this));
double dot(const V1 &a, const V2 &b)
Definition: Vector.h:195
void addPrior(Key key, const T &prior, const Matrix &covariance)
Definition: NonlinearFactorGraph.h:215
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
Definition: Testable.h:152
Definition: BayesTree.h:34
Definition: Expression.h:47
Definition: Ordering.h:37
void addPrior(Key key, const T &prior, const SharedNoiseModel &model=nullptr)
Definition: NonlinearFactorGraph.h:199
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
Definition: Testable.h:112
void addExpressionFactor(const SharedNoiseModel &R, const T &z, const Expression< T > &h)
Definition: NonlinearFactorGraph.h:187
GTSAM_EXPORT void print(const Matrix &A, const std::string &s, std::ostream &stream)
NonlinearFactorGraph(const FactorGraph< DERIVEDFACTOR > &graph)
Definition: NonlinearFactorGraph.h:79
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
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
Definition: NonlinearFactorGraph.h:55
Definition: chartTesting.h:28
Non-linear factor base classes.
NonlinearFactorGraph(const CONTAINER &factors)
Definition: NonlinearFactorGraph.h:75
NonlinearFactorGraph(ITERATOR firstFactor, ITERATOR lastFactor)
Definition: NonlinearFactorGraph.h:71
std::function< void(const std::shared_ptr< HessianFactor > &hessianFactor)> Dampen
typdef for dampen functions used below
Definition: NonlinearFactorGraph.h:133
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
noiseModel::Base::shared_ptr SharedNoiseModel
Definition: NoiseModel.h:741
NonlinearFactorGraph()
Definition: NonlinearFactorGraph.h:67