HybridGaussianConditional inherits from HybridGaussianFactor
parent
08967d197f
commit
561bdcf9af
|
@ -28,13 +28,25 @@
|
|||
#include <gtsam/linear/GaussianFactorGraph.h>
|
||||
|
||||
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(
|
||||
const KeyVector &continuousFrontals, const KeyVector &continuousParents,
|
||||
const DiscreteKeys &discreteParents,
|
||||
const HybridGaussianConditional::Conditionals &conditionals)
|
||||
: BaseFactor(CollectKeys(continuousFrontals, continuousParents),
|
||||
discreteParents),
|
||||
discreteParents, GetFactorValuePairs(conditionals)),
|
||||
BaseConditional(continuousFrontals.size()),
|
||||
conditionals_(conditionals) {
|
||||
// Calculate logConstant_ as the maximum of the log constants of the
|
||||
|
|
|
@ -51,13 +51,13 @@ class HybridValues;
|
|||
* @ingroup hybrid
|
||||
*/
|
||||
class GTSAM_EXPORT HybridGaussianConditional
|
||||
: public HybridFactor,
|
||||
public Conditional<HybridFactor, HybridGaussianConditional> {
|
||||
: public HybridGaussianFactor,
|
||||
public Conditional<HybridGaussianFactor, HybridGaussianConditional> {
|
||||
public:
|
||||
using This = HybridGaussianConditional;
|
||||
using shared_ptr = std::shared_ptr<HybridGaussianConditional>;
|
||||
using BaseFactor = HybridFactor;
|
||||
using BaseConditional = Conditional<HybridFactor, HybridGaussianConditional>;
|
||||
using shared_ptr = std::shared_ptr<This>;
|
||||
using BaseFactor = HybridGaussianFactor;
|
||||
using BaseConditional = Conditional<BaseFactor, HybridGaussianConditional>;
|
||||
|
||||
/// typedef for Decision Tree of Gaussian Conditionals
|
||||
using Conditionals = DecisionTree<Key, GaussianConditional::shared_ptr>;
|
||||
|
|
Loading…
Reference in New Issue