Fix pruning in iSAM

release/4.3a0
Frank Dellaert 2024-09-29 23:15:19 -07:00
parent 28f5ed0a6e
commit 38ed609614
2 changed files with 10 additions and 1 deletions

View File

@ -26,6 +26,10 @@
#include <gtsam/inference/BayesTreeCliqueBase-inst.h>
#include <gtsam/linear/GaussianJunctionTree.h>
#include <memory>
#include "gtsam/hybrid/HybridConditional.h"
namespace gtsam {
// Instantiate base class
@ -207,7 +211,9 @@ void HybridBayesTree::prune(const size_t maxNrLeaves) {
if (conditional->isHybrid()) {
auto hybridGaussianCond = conditional->asHybrid();
hybridGaussianCond->prune(parentData.prunedDiscreteProbs);
// Imperative
clique->conditional() = std::make_shared<HybridConditional>(
hybridGaussianCond->prune(parentData.prunedDiscreteProbs));
}
return parentData;
}

View File

@ -140,6 +140,9 @@ namespace gtsam {
/** Access the conditional */
const sharedConditional& conditional() const { return conditional_; }
/** Write access to the conditional */
sharedConditional& conditional() { return conditional_; }
/// Return true if this clique is the root of a Bayes tree.
inline bool isRoot() const { return parent_.expired(); }