32 typename ExtendedKalmanFilter<VALUE>::T ExtendedKalmanFilter<VALUE>::solve_(
34 const Values& linearizationPoint,
Key lastKey,
40 const Ordering lastKeyAsOrdering{lastKey};
42 linearFactorGraph.marginalMultifrontalBayesNet(lastKeyAsOrdering)->front();
46 const T& current = linearizationPoint.at<T>(lastKey);
53 assert(marginal->nrFrontals() == 1);
54 assert(marginal->nrParents() == 0);
55 *newPrior = std::make_shared<JacobianFactor>(
56 marginal->keys().front(),
57 marginal->getA(marginal->begin()),
58 marginal->getb() - marginal->getA(marginal->begin()) * result[lastKey],
59 marginal->get_model());
65 template <
class VALUE>
66 ExtendedKalmanFilter<VALUE>::ExtendedKalmanFilter(
67 Key key_initial, T x_initial, noiseModel::Gaussian::shared_ptr P_initial)
73 size_t n = traits<T>::GetDimension(x_initial);
74 priorFactor_ = JacobianFactor::shared_ptr(
76 noiseModel::Unit::Create(n)));
83 const auto keys = motionFactor.
keys();
89 linearFactorGraph.
push_back(priorFactor_);
93 linearizationPoint.
insert(keys[0], x_);
94 linearizationPoint.
insert(keys[1], x_);
99 x_ = solve_(linearFactorGraph, linearizationPoint, keys[1], &priorFactor_);
105 template<
class VALUE>
108 const auto keys = measurementFactor.
keys();
114 linearFactorGraph.
push_back(priorFactor_);
117 Values linearizationPoint;
118 linearizationPoint.
insert(keys[0], x_);
123 x_ = solve_(linearFactorGraph, linearizationPoint, keys[0], &priorFactor_);
Chordal Bayes Net, the result of eliminating a factor graph.
Linear Factor Graph where all factors are Gaussians.
Class to perform generic Kalman Filtering using nonlinear factor graphs.
Non-linear factor base classes.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
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
IsDerived< DERIVEDFACTOR > push_back(std::shared_ptr< DERIVEDFACTOR > factor)
Add a factor directly using a shared_ptr.
Definition FactorGraph.h:147
const KeyVector & keys() const
Access the factor's involved variable keys.
Definition Factor.h:143
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition GaussianConditional.h:46
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition GaussianFactorGraph.h:77
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition JacobianFactor.h:97
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:73
T update(const NoiseModelFactor &measurementFactor)
Calculate posterior density P(x_) ~ L(z|x) P(x) The likelihood L(z|x) should be given as a unary fact...
Definition ExtendedKalmanFilter-inl.h:106
T predict(const NoiseModelFactor &motionFactor)
Calculate predictive density The motion model should be given as a factor with key1 for and key2 fo...
Definition ExtendedKalmanFilter-inl.h:81
A nonlinear sum-of-squares factor with a zero-mean noise model implementing the density Templated on...
Definition NonlinearFactor.h:208
std::shared_ptr< GaussianFactor > linearize(const Values &x) const override
Linearize a non-linearFactorN to get a GaussianFactor, Hence .
Definition NonlinearFactor.cpp:160
A non-templated config holding any types of Manifold-group elements.
Definition Values.h:65
void insert(Key j, const Value &val)
Add a variable with the given j, throws KeyAlreadyExists<J> if j is already present.
Definition Values.cpp:170
In Gaussian factors, the error function returns either the negative log-likelihood,...