HybridGaussianConditional inherits from HybridGaussianFactor
parent
08967d197f
commit
561bdcf9af
|
@ -28,13 +28,25 @@
|
||||||
#include <gtsam/linear/GaussianFactorGraph.h>
|
#include <gtsam/linear/GaussianFactorGraph.h>
|
||||||
|
|
||||||
namespace gtsam {
|
namespace gtsam {
|
||||||
|
HybridGaussianFactor::FactorValuePairs GetFactorValuePairs(
|
||||||
|
const HybridGaussianConditional::Conditionals &conditionals) {
|
||||||
|
auto func = [](const GaussianConditional::shared_ptr &conditional)
|
||||||
|
-> GaussianFactorValuePair {
|
||||||
|
double value = 0.0;
|
||||||
|
if (conditional) { // Check if conditional is pruned
|
||||||
|
value = conditional->logNormalizationConstant();
|
||||||
|
}
|
||||||
|
return {std::dynamic_pointer_cast<GaussianFactor>(conditional), value};
|
||||||
|
};
|
||||||
|
return HybridGaussianFactor::FactorValuePairs(conditionals, func);
|
||||||
|
}
|
||||||
|
|
||||||
HybridGaussianConditional::HybridGaussianConditional(
|
HybridGaussianConditional::HybridGaussianConditional(
|
||||||
const KeyVector &continuousFrontals, const KeyVector &continuousParents,
|
const KeyVector &continuousFrontals, const KeyVector &continuousParents,
|
||||||
const DiscreteKeys &discreteParents,
|
const DiscreteKeys &discreteParents,
|
||||||
const HybridGaussianConditional::Conditionals &conditionals)
|
const HybridGaussianConditional::Conditionals &conditionals)
|
||||||
: BaseFactor(CollectKeys(continuousFrontals, continuousParents),
|
: BaseFactor(CollectKeys(continuousFrontals, continuousParents),
|
||||||
discreteParents),
|
discreteParents, GetFactorValuePairs(conditionals)),
|
||||||
BaseConditional(continuousFrontals.size()),
|
BaseConditional(continuousFrontals.size()),
|
||||||
conditionals_(conditionals) {
|
conditionals_(conditionals) {
|
||||||
// Calculate logConstant_ as the maximum of the log constants of the
|
// Calculate logConstant_ as the maximum of the log constants of the
|
||||||
|
|
|
@ -51,13 +51,13 @@ class HybridValues;
|
||||||
* @ingroup hybrid
|
* @ingroup hybrid
|
||||||
*/
|
*/
|
||||||
class GTSAM_EXPORT HybridGaussianConditional
|
class GTSAM_EXPORT HybridGaussianConditional
|
||||||
: public HybridFactor,
|
: public HybridGaussianFactor,
|
||||||
public Conditional<HybridFactor, HybridGaussianConditional> {
|
public Conditional<HybridGaussianFactor, HybridGaussianConditional> {
|
||||||
public:
|
public:
|
||||||
using This = HybridGaussianConditional;
|
using This = HybridGaussianConditional;
|
||||||
using shared_ptr = std::shared_ptr<HybridGaussianConditional>;
|
using shared_ptr = std::shared_ptr<This>;
|
||||||
using BaseFactor = HybridFactor;
|
using BaseFactor = HybridGaussianFactor;
|
||||||
using BaseConditional = Conditional<HybridFactor, HybridGaussianConditional>;
|
using BaseConditional = Conditional<BaseFactor, HybridGaussianConditional>;
|
||||||
|
|
||||||
/// typedef for Decision Tree of Gaussian Conditionals
|
/// typedef for Decision Tree of Gaussian Conditionals
|
||||||
using Conditionals = DecisionTree<Key, GaussianConditional::shared_ptr>;
|
using Conditionals = DecisionTree<Key, GaussianConditional::shared_ptr>;
|
||||||
|
|
Loading…
Reference in New Issue