diff --git a/gtsam/gtsam.i b/gtsam/gtsam.i index c5bf6511c..d053c8422 100644 --- a/gtsam/gtsam.i +++ b/gtsam/gtsam.i @@ -10,11 +10,11 @@ namespace gtsam { -// Actually a FastList #include const KeyFormatter DefaultKeyFormatter; +// Actually a FastList class KeyList { KeyList(); KeyList(const gtsam::KeyList& other); @@ -1284,31 +1284,26 @@ class SymbolicBayesTree { gtsam::SymbolicBayesNet* jointBayesNet(size_t key1, size_t key2) const; }; -// class SymbolicBayesTreeClique { -// SymbolicBayesTreeClique(); -// SymbolicBayesTreeClique(CONDITIONAL* conditional); -// SymbolicBayesTreeClique(const pair& result) : Base(result) {} -// -// bool equals(const This& other, double tol) const; -// void print(string s = "", -// const gtsam::KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter) const; -// void printTree() const; // Default indent of "" -// void printTree(string indent) const; -// size_t numCachedSeparatorMarginals() const; -// -// CONDITIONAL* conditional() const; -// bool isRoot() const; -// size_t treeSize() const; -// const std::list& children() const { return children_; } -// derived_ptr parent() const { return parent_.lock(); } -// +class SymbolicBayesTreeClique { + SymbolicBayesTreeClique(); + // SymbolicBayesTreeClique(gtsam::sharedConditional* conditional); + + bool equals(const gtsam::SymbolicBayesTreeClique& other, double tol) const; + void print(string s = "", + const gtsam::KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter) const; + size_t numCachedSeparatorMarginals() const; + // gtsam::sharedConditional* conditional() const; + bool isRoot() const; + size_t treeSize() const; + gtsam::SymbolicBayesTreeClique* parent() const; + // // TODO: need wrapped versions graphs, BayesNet // BayesNet shortcut(derived_ptr root, Eliminate function) const; // FactorGraph marginal(derived_ptr root, Eliminate function) const; // FactorGraph joint(derived_ptr C2, derived_ptr root, Eliminate function) const; // -// void deleteCachedShortcuts(); -// }; + void deleteCachedShortcuts(); +}; #include class VariableIndex { @@ -1554,7 +1549,7 @@ class Sampler { #include class VectorValues { - //Constructors + //Constructors VectorValues(); VectorValues(const gtsam::VectorValues& other); @@ -2160,7 +2155,7 @@ virtual class NonlinearFactor { bool active(const gtsam::Values& c) const; gtsam::GaussianFactor* linearize(const gtsam::Values& c) const; gtsam::NonlinearFactor* clone() const; - // gtsam::NonlinearFactor* rekey(const gtsam::KeyVector& newKeys) const; //TODO: Conversion from KeyVector to std::vector does not happen + gtsam::NonlinearFactor* rekey(const gtsam::KeyVector& newKeys) const; }; #include @@ -2778,11 +2773,17 @@ virtual class GeneralSFMFactor2 : gtsam::NoiseModelFactor { }; #include + +/// Linearization mode: what factor to linearize to +enum LinearizationMode { HESSIAN, IMPLICIT_SCHUR, JACOBIAN_Q, JACOBIAN_SVD }; + +/// How to manage degeneracy +enum DegeneracyMode { IGNORE_DEGENERACY, ZERO_ON_DEGENERACY, HANDLE_INFINITY }; + class SmartProjectionParams { SmartProjectionParams(); - // TODO(frank): make these work: - // void setLinearizationMode(LinearizationMode linMode); - // void setDegeneracyMode(DegeneracyMode degMode); + void setLinearizationMode(gtsam::LinearizationMode linMode); + void setDegeneracyMode(gtsam::DegeneracyMode degMode); void setRankTolerance(double rankTol); void setEnableEPI(bool enableEPI); void setLandmarkDistanceThreshold(bool landmarkDistanceThreshold); diff --git a/python/gtsam/gtsam.tpl b/python/gtsam/gtsam.tpl index 0e0881ce9..b800f7c35 100644 --- a/python/gtsam/gtsam.tpl +++ b/python/gtsam/gtsam.tpl @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include "gtsam/config.h"