From adcbb65e5c33f3a9f803a6d0a89379bd5830450d Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Fri, 27 May 2022 16:07:52 -0400 Subject: [PATCH] HybridFactorGraph docs and minor updates --- gtsam/hybrid/HybridFactorGraph.cpp | 21 +++++++++++++-------- gtsam/hybrid/HybridFactorGraph.h | 22 +++++++++++++--------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/gtsam/hybrid/HybridFactorGraph.cpp b/gtsam/hybrid/HybridFactorGraph.cpp index 450636ab3..344b4220b 100644 --- a/gtsam/hybrid/HybridFactorGraph.cpp +++ b/gtsam/hybrid/HybridFactorGraph.cpp @@ -63,6 +63,7 @@ static std::string RESET = "\033[0m"; constexpr bool DEBUG = false; +/* ************************************************************************ */ static GaussianMixtureFactor::Sum &addGaussian( GaussianMixtureFactor::Sum &sum, const GaussianFactor::shared_ptr &factor) { using Y = GaussianFactorGraph; @@ -406,20 +407,24 @@ EliminateHybrid(const HybridFactorGraph &factors, const Ordering &frontalKeys) { } } +/* ************************************************************************ */ void HybridFactorGraph::add(JacobianFactor &&factor) { FactorGraph::add(boost::make_shared(std::move(factor))); } -void HybridFactorGraph::add(DecisionTreeFactor &&factor) { - FactorGraph::add(boost::make_shared(std::move(factor))); -} - -void HybridFactorGraph::add(DecisionTreeFactor::shared_ptr factor) { - FactorGraph::add(boost::make_shared(factor)); -} - +/* ************************************************************************ */ void HybridFactorGraph::add(JacobianFactor::shared_ptr factor) { FactorGraph::add(boost::make_shared(factor)); } +/* ************************************************************************ */ +void HybridFactorGraph::add(DecisionTreeFactor &&factor) { + FactorGraph::add(boost::make_shared(std::move(factor))); +} + +/* ************************************************************************ */ +void HybridFactorGraph::add(DecisionTreeFactor::shared_ptr factor) { + FactorGraph::add(boost::make_shared(factor)); +} + } // namespace gtsam diff --git a/gtsam/hybrid/HybridFactorGraph.h b/gtsam/hybrid/HybridFactorGraph.h index bfd6a8690..10670b6b7 100644 --- a/gtsam/hybrid/HybridFactorGraph.h +++ b/gtsam/hybrid/HybridFactorGraph.h @@ -81,30 +81,34 @@ class HybridFactorGraph : public FactorGraph, using Values = gtsam::Values; ///< backwards compatibility using Indices = KeyVector; ///> map from keys to values - public: + /// @name Constructors + /// @{ + HybridFactorGraph() = default; - // /** Construct from container of factors (shared_ptr or plain objects) */ - // template - // explicit HybridFactorGraph(const CONTAINER& factors) : Base(factors) {} - - /** Implicit copy/downcast constructor to override explicit template container + /** + * Implicit copy/downcast constructor to override explicit template container * constructor. In BayesTree this is used for: * `cachedSeparatorMarginal_.reset(*separatorMarginal)` * */ template HybridFactorGraph(const FactorGraph& graph) : Base(graph) {} + /// @} + using FactorGraph::add; - /// Add a factor directly using a shared_ptr. + /// Add a Jacobian factor to the factor graph. void add(JacobianFactor&& factor); + /// Add a Jacobian factor as a shared ptr. + void add(boost::shared_ptr factor); + + /// Add a DecisionTreeFactor to the factor graph. void add(DecisionTreeFactor&& factor); + /// Add a DecisionTreeFactor as a shared ptr. void add(boost::shared_ptr factor); - - void add(boost::shared_ptr factor); }; } // namespace gtsam