61 public Conditional<HybridFactor, HybridConditional> {
90 : BaseFactor(continuousKeys, discreteKeys),
BaseConditional(nFrontals) {}
113 const std::shared_ptr<GaussianConditional>& continuousConditional);
122 const std::shared_ptr<DiscreteConditional>& discreteConditional);
138 const std::string& s =
"Hybrid Conditional: ",
139 const KeyFormatter& formatter = DefaultKeyFormatter)
const override;
176 std::shared_ptr<Factor>
inner()
const {
return inner_; }
179 double error(
const HybridValues& values)
const override;
182 double logProbability(
const HybridValues& values)
const override;
189 double logNormalizationConstant()
const override;
192 double evaluate(
const HybridValues& values)
const override;
196 for (
Key key : frontals()) {
197 if (!measurements.
exists(key)) {
207 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 209 friend class boost::serialization::access;
210 template <
class Archive>
211 void serialize(Archive& ar,
const unsigned int ) {
212 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseFactor);
214 ar& BOOST_SERIALIZATION_NVP(inner_);
219 boost::serialization::void_cast_register<DiscreteConditional, Factor>(
221 }
else if (isContinuous()) {
222 boost::serialization::void_cast_register<GaussianConditional, Factor>(
225 boost::serialization::void_cast_register<GaussianMixture, Factor>(
Definition: HybridValues.h:38
A hybrid conditional in the Conditional Linear Gaussian scheme.
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianConditional.h:44
Base class for conditional densities.
Definition: HybridFactor.h:52
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
Definition: Testable.h:152
Conditional< BaseFactor, This > BaseConditional
Typedef to our conditional base class.
Definition: HybridConditional.h:68
HybridFactor BaseFactor
Typedef to our factor base class.
Definition: HybridConditional.h:66
Definition: VectorValues.h:74
DiscreteConditional::shared_ptr asDiscrete() const
Return conditional as a DiscreteConditional.
Definition: HybridConditional.h:171
std::shared_ptr< Factor > inner() const
Get the type-erased pointer to the inner type.
Definition: HybridConditional.h:176
bool exists(Key j) const
Definition: VectorValues.h:133
Definition: GaussianConditional.h:38
Definition: Testable.h:112
A conditional of gaussian mixtures indexed by discrete variables, as part of a Bayes Network...
Definition: GaussianMixture.h:53
bool frontalsIn(const VectorValues &measurements) const
Check if VectorValues measurements contains all frontal keys.
Definition: HybridConditional.h:195
GaussianConditional::shared_ptr asGaussian() const
Return HybridConditional as a GaussianConditional.
Definition: HybridConditional.h:162
GTSAM_EXPORT void print(const Matrix &A, const std::string &s, std::ostream &stream)
Definition: Conditional.h:61
Conditional Gaussian Base class.
HybridConditional(const KeyVector &continuousKeys, const DiscreteKeys &discreteKeys, size_t nFrontals)
Construct a new Hybrid Conditional object.
Definition: HybridConditional.h:88
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:35
Linearized Hybrid factor graph that uses type erasure.
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: HybridConditional.h:65
Definition: chartTesting.h:28
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:86
GaussianMixture::shared_ptr asMixture() const
Return HybridConditional as a GaussianMixture.
Definition: HybridConditional.h:153
HybridConditional This
Typedef to this class.
Definition: HybridConditional.h:64
Definition: HybridConditional.h:59
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: DiscreteConditional.h:43
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
std::shared_ptr< Factor > inner_
Type-erased pointer to the inner type.
Definition: HybridConditional.h:72
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition: DiscreteKey.h:41
Definition: DiscreteConditional.h:37