62 public Conditional<HybridFactor, HybridConditional> {
114 const std::shared_ptr<GaussianConditional>& continuousConditional);
123 const std::shared_ptr<DiscreteConditional>& discreteConditional);
132 const std::shared_ptr<HybridGaussianConditional>& hybridGaussianCond);
140 const std::string& s =
"Hybrid Conditional: ",
155 HybridGaussianConditional::shared_ptr
asHybrid()
const {
157 return std::static_pointer_cast<HybridGaussianConditional>(
inner_);
167 return std::static_pointer_cast<GaussianConditional>(
inner_);
175 template <
typename T = DiscreteConditional>
178 return std::static_pointer_cast<T>(
inner_);
185 double error(
const HybridValues& hybridValues)
const override;
198 double logProbability(
const HybridValues& values)
const override;
206 double negLogConstant()
const override;
209 double evaluate(
const HybridValues& values)
const override;
214 if (!measurements.
exists(key)) {
227 std::shared_ptr<Factor> restrict(
233#if GTSAM_ENABLE_BOOST_SERIALIZATION
235 friend class boost::serialization::access;
236 template <
class Archive>
237 void serialize(Archive& ar,
const unsigned int ) {
238 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseFactor);
239 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseConditional);
240 ar& BOOST_SERIALIZATION_NVP(inner_);
245 boost::serialization::void_cast_register<DiscreteConditional, Factor>(
247 }
else if (isContinuous()) {
248 boost::serialization::void_cast_register<GaussianConditional, Factor>(
251 boost::serialization::void_cast_register<HybridGaussianConditional,
253 static_cast<HybridGaussianConditional*
>(NULL),
254 static_cast<Factor*
>(NULL));
Linearized Hybrid factor graph that uses type erasure.
A hybrid conditional in the Conditional Linear Gaussian scheme.
Base class for conditional densities.
Conditional Gaussian Base class.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition Key.cpp:30
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition Key.h:91
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:143
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
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:43
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
Template to create a binary predicate.
Definition Testable.h:112
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:152
An algebraic decision tree fixes the range of a DecisionTree to double.
Definition AlgebraicDecisionTree.h:41
Discrete Conditional Density Derives from DecisionTreeFactor.
Definition DiscreteConditional.h:40
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition DiscreteKey.h:41
A map from keys to values.
Definition DiscreteValues.h:34
Hybrid Conditional Density.
Definition HybridConditional.h:62
Conditional< BaseFactor, This > BaseConditional
Typedef to our conditional base class.
Definition HybridConditional.h:69
std::shared_ptr< Factor > inner() const
Get the type-erased pointer to the inner type.
Definition HybridConditional.h:182
HybridGaussianConditional::shared_ptr asHybrid() const
Return HybridConditional as a HybridGaussianConditional.
Definition HybridConditional.h:155
HybridFactor BaseFactor
Typedef to our factor base class.
Definition HybridConditional.h:67
bool frontalsIn(const VectorValues &measurements) const
Check if VectorValues measurements contains all frontal keys.
Definition HybridConditional.h:212
HybridConditional(const KeyVector &continuousKeys, const DiscreteKeys &discreteKeys, size_t nFrontals)
Construct a new Hybrid Conditional object.
Definition HybridConditional.h:89
std::shared_ptr< Factor > inner_
Type-erased pointer to the inner type.
Definition HybridConditional.h:73
GaussianConditional::shared_ptr asGaussian() const
Return HybridConditional as a GaussianConditional.
Definition HybridConditional.h:165
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition HybridConditional.h:66
HybridConditional This
Typedef to this class.
Definition HybridConditional.h:65
T::shared_ptr asDiscrete() const
Return conditional as a DiscreteConditional or specified type T.
Definition HybridConditional.h:176
HybridConditional()=default
Default constructor needed for serialization.
Base class for truly hybrid probabilistic factors.
Definition HybridFactor.h:51
bool isDiscrete() const
True if this is a factor of discrete variables only.
Definition HybridFactor.h:119
bool isHybrid() const
True is this is a Discrete-Continuous factor.
Definition HybridFactor.h:125
HybridFactor()=default
Default constructor creates empty factor.
const KeyVector & continuousKeys() const
Return only the continuous keys for this factor.
Definition HybridFactor.h:134
bool isContinuous() const
True if this is a factor of continuous variables only.
Definition HybridFactor.h:122
const DiscreteKeys & discreteKeys() const
Return the discrete keys for this factor.
Definition HybridFactor.h:131
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:37
Conditional()
Definition Conditional.h:108
Frontals frontals() const
Definition Conditional.h:147
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition GaussianConditional.h:46
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:73
bool exists(Key j) const
Check whether a variable with key j exists.
Definition VectorValues.h:135
is the normalization constant.