diff --git a/gtsam/hybrid/HybridGaussianFactorGraph.h b/gtsam/hybrid/HybridGaussianFactorGraph.h index 0db4f734b..9724fccc5 100644 --- a/gtsam/hybrid/HybridGaussianFactorGraph.h +++ b/gtsam/hybrid/HybridGaussianFactorGraph.h @@ -27,6 +27,8 @@ #include #include +#include + namespace gtsam { // Forward declarations diff --git a/gtsam/hybrid/HybridGaussianISAM.cpp b/gtsam/hybrid/HybridGaussianISAM.cpp index 3f63cb089..086127f16 100644 --- a/gtsam/hybrid/HybridGaussianISAM.cpp +++ b/gtsam/hybrid/HybridGaussianISAM.cpp @@ -71,8 +71,8 @@ Ordering HybridGaussianISAM::GetOrdering( void HybridGaussianISAM::updateInternal( const HybridGaussianFactorGraph& newFactors, HybridBayesTree::Cliques* orphans, - const boost::optional& maxNrLeaves, - const boost::optional& ordering, + const std::optional& maxNrLeaves, + const std::optional& ordering, const HybridBayesTree::Eliminate& function) { // Remove the contaminated part of the Bayes tree BayesNetType bn; @@ -116,8 +116,8 @@ void HybridGaussianISAM::updateInternal( /* ************************************************************************* */ void HybridGaussianISAM::update(const HybridGaussianFactorGraph& newFactors, - const boost::optional& maxNrLeaves, - const boost::optional& ordering, + const std::optional& maxNrLeaves, + const std::optional& ordering, const HybridBayesTree::Eliminate& function) { Cliques orphans; this->updateInternal(newFactors, &orphans, maxNrLeaves, ordering, function); diff --git a/gtsam/hybrid/HybridGaussianISAM.h b/gtsam/hybrid/HybridGaussianISAM.h index 5e936c47b..b353b26a3 100644 --- a/gtsam/hybrid/HybridGaussianISAM.h +++ b/gtsam/hybrid/HybridGaussianISAM.h @@ -24,6 +24,8 @@ #include #include +#include + namespace gtsam { /** @@ -53,8 +55,8 @@ class GTSAM_EXPORT HybridGaussianISAM : public ISAM { void updateInternal( const HybridGaussianFactorGraph& newFactors, HybridBayesTree::Cliques* orphans, - const boost::optional& maxNrLeaves = boost::none, - const boost::optional& ordering = boost::none, + const std::optional& maxNrLeaves = {}, + const std::optional& ordering = {}, const HybridBayesTree::Eliminate& function = HybridBayesTree::EliminationTraitsType::DefaultEliminate); @@ -68,8 +70,8 @@ class GTSAM_EXPORT HybridGaussianISAM : public ISAM { * @param function Elimination function. */ void update(const HybridGaussianFactorGraph& newFactors, - const boost::optional& maxNrLeaves = boost::none, - const boost::optional& ordering = boost::none, + const std::optional& maxNrLeaves = {}, + const std::optional& ordering = {}, const HybridBayesTree::Eliminate& function = HybridBayesTree::EliminationTraitsType::DefaultEliminate); diff --git a/gtsam/hybrid/HybridNonlinearISAM.cpp b/gtsam/hybrid/HybridNonlinearISAM.cpp index b7a5a8eeb..9a6d25ade 100644 --- a/gtsam/hybrid/HybridNonlinearISAM.cpp +++ b/gtsam/hybrid/HybridNonlinearISAM.cpp @@ -34,8 +34,8 @@ void HybridNonlinearISAM::saveGraph(const string& s, /* ************************************************************************* */ void HybridNonlinearISAM::update(const HybridNonlinearFactorGraph& newFactors, const Values& initialValues, - const boost::optional& maxNrLeaves, - const boost::optional& ordering) { + const std::optional& maxNrLeaves, + const std::optional& ordering) { if (newFactors.size() > 0) { // Reorder and relinearize every reorderInterval updates if (reorderInterval_ > 0 && ++reorderCounter_ >= reorderInterval_) { @@ -70,7 +70,7 @@ void HybridNonlinearISAM::reorder_relinearize() { // Just recreate the whole BayesTree // TODO: allow for constrained ordering here // TODO: decouple relinearization and reordering to avoid - isam_.update(*factors_.linearize(newLinPoint), boost::none, boost::none, + isam_.update(*factors_.linearize(newLinPoint), {}, {}, eliminationFunction_); // Update linearization point diff --git a/gtsam/hybrid/HybridNonlinearISAM.h b/gtsam/hybrid/HybridNonlinearISAM.h index 53bacb0ff..3372593be 100644 --- a/gtsam/hybrid/HybridNonlinearISAM.h +++ b/gtsam/hybrid/HybridNonlinearISAM.h @@ -19,6 +19,7 @@ #include #include +#include namespace gtsam { /** @@ -119,8 +120,8 @@ class GTSAM_EXPORT HybridNonlinearISAM { /** Add new factors along with their initial linearization points */ void update(const HybridNonlinearFactorGraph& newFactors, const Values& initialValues, - const boost::optional& maxNrLeaves = boost::none, - const boost::optional& ordering = boost::none); + const std::optional& maxNrLeaves = {}, + const std::optional& ordering = {}); /** Relinearization and reordering of variables */ void reorder_relinearize(); diff --git a/gtsam/hybrid/HybridSmoother.cpp b/gtsam/hybrid/HybridSmoother.cpp index 35dd5f88b..7e8a5f4d6 100644 --- a/gtsam/hybrid/HybridSmoother.cpp +++ b/gtsam/hybrid/HybridSmoother.cpp @@ -26,7 +26,7 @@ namespace gtsam { /* ************************************************************************* */ void HybridSmoother::update(HybridGaussianFactorGraph graph, const Ordering &ordering, - boost::optional maxNrLeaves) { + std::optional maxNrLeaves) { // Add the necessary conditionals from the previous timestep(s). std::tie(graph, hybridBayesNet_) = addConditionals(graph, hybridBayesNet_, ordering); diff --git a/gtsam/hybrid/HybridSmoother.h b/gtsam/hybrid/HybridSmoother.h index 7e90f9425..00dfc4685 100644 --- a/gtsam/hybrid/HybridSmoother.h +++ b/gtsam/hybrid/HybridSmoother.h @@ -20,6 +20,8 @@ #include #include +#include + namespace gtsam { class HybridSmoother { @@ -48,7 +50,7 @@ class HybridSmoother { * if applicable */ void update(HybridGaussianFactorGraph graph, const Ordering& ordering, - boost::optional maxNrLeaves = boost::none); + std::optional maxNrLeaves = {}); /** * @brief Add conditionals from previous timestep as part of liquefication. diff --git a/gtsam/hybrid/tests/TinyHybridExample.h b/gtsam/hybrid/tests/TinyHybridExample.h index 0ef8955c4..39a1a1a9e 100644 --- a/gtsam/hybrid/tests/TinyHybridExample.h +++ b/gtsam/hybrid/tests/TinyHybridExample.h @@ -71,7 +71,7 @@ inline HybridBayesNet createHybridBayesNet(size_t num_measurements = 1, */ inline HybridGaussianFactorGraph createHybridGaussianFactorGraph( size_t num_measurements = 1, - boost::optional measurements = boost::none, + std::optional measurements = {}, bool manyModes = false) { auto bayesNet = createHybridBayesNet(num_measurements, manyModes); if (measurements) {