make None the default HybridCategory
parent
97eb6bc8b9
commit
4302ee33c9
|
|
@ -54,20 +54,28 @@ HybridFactor::HybridFactor(const KeyVector &keys)
|
||||||
category_(HybridCategory::Continuous),
|
category_(HybridCategory::Continuous),
|
||||||
continuousKeys_(keys) {}
|
continuousKeys_(keys) {}
|
||||||
|
|
||||||
|
/* ************************************************************************ */
|
||||||
|
HybridCategory GetCategory(const KeyVector &continuousKeys,
|
||||||
|
const DiscreteKeys &discreteKeys) {
|
||||||
|
if ((continuousKeys.size() == 0) && (discreteKeys.size() != 0)) {
|
||||||
|
return HybridCategory::Discrete;
|
||||||
|
} else if ((continuousKeys.size() != 0) && (discreteKeys.size() == 0)) {
|
||||||
|
return HybridCategory::Continuous;
|
||||||
|
} else if ((continuousKeys.size() != 0) && (discreteKeys.size() != 0)) {
|
||||||
|
return HybridCategory::Hybrid;
|
||||||
|
} else {
|
||||||
|
// Case where we have no keys. Should never happen.
|
||||||
|
return HybridCategory::None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* ************************************************************************ */
|
/* ************************************************************************ */
|
||||||
HybridFactor::HybridFactor(const KeyVector &continuousKeys,
|
HybridFactor::HybridFactor(const KeyVector &continuousKeys,
|
||||||
const DiscreteKeys &discreteKeys)
|
const DiscreteKeys &discreteKeys)
|
||||||
: Base(CollectKeys(continuousKeys, discreteKeys)),
|
: Base(CollectKeys(continuousKeys, discreteKeys)),
|
||||||
|
category_(GetCategory(continuousKeys, discreteKeys)),
|
||||||
discreteKeys_(discreteKeys),
|
discreteKeys_(discreteKeys),
|
||||||
continuousKeys_(continuousKeys) {
|
continuousKeys_(continuousKeys) {}
|
||||||
if ((continuousKeys.size() == 0) && (discreteKeys.size() != 0)) {
|
|
||||||
category_ = HybridCategory::Discrete;
|
|
||||||
} else if ((continuousKeys.size() != 0) && (discreteKeys.size() == 0)) {
|
|
||||||
category_ = HybridCategory::Continuous;
|
|
||||||
} else {
|
|
||||||
category_ = HybridCategory::Hybrid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ************************************************************************ */
|
/* ************************************************************************ */
|
||||||
HybridFactor::HybridFactor(const DiscreteKeys &discreteKeys)
|
HybridFactor::HybridFactor(const DiscreteKeys &discreteKeys)
|
||||||
|
|
@ -98,6 +106,9 @@ void HybridFactor::print(const std::string &s,
|
||||||
case HybridCategory::Hybrid:
|
case HybridCategory::Hybrid:
|
||||||
std::cout << "Hybrid ";
|
std::cout << "Hybrid ";
|
||||||
break;
|
break;
|
||||||
|
case HybridCategory::None:
|
||||||
|
std::cout << "None ";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "[";
|
std::cout << "[";
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ DiscreteKeys CollectDiscreteKeys(const DiscreteKeys &key1,
|
||||||
const DiscreteKeys &key2);
|
const DiscreteKeys &key2);
|
||||||
|
|
||||||
/// Enum to help with categorizing hybrid factors.
|
/// Enum to help with categorizing hybrid factors.
|
||||||
enum class HybridCategory { Discrete, Continuous, Hybrid };
|
enum class HybridCategory { None, Discrete, Continuous, Hybrid };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for *truly* hybrid probabilistic factors
|
* Base class for *truly* hybrid probabilistic factors
|
||||||
|
|
@ -57,7 +57,7 @@ enum class HybridCategory { Discrete, Continuous, Hybrid };
|
||||||
class GTSAM_EXPORT HybridFactor : public Factor {
|
class GTSAM_EXPORT HybridFactor : public Factor {
|
||||||
private:
|
private:
|
||||||
/// Record what category of HybridFactor this is.
|
/// Record what category of HybridFactor this is.
|
||||||
HybridCategory category_;
|
HybridCategory category_ = HybridCategory::None;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Set of DiscreteKeys for this factor.
|
// Set of DiscreteKeys for this factor.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue