EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Measurement.h File Reference

The update of a Gaussian by a measurement (decisions.md [templated-measurements], [weighted-branches], [covariance-update-forms], [innovation-statistics], [linearization-reference], [rb-point-mass]): update() of a state by a measurement that reads part of it, with one UpdateBranch per noise component, and update() given a block from outside the Gaussian. More...

#include <array>
#include <concepts>
#include <cstddef>
#include <expected>
#include <optional>
#include <span>
#include <tuple>
#include <type_traits>
#include <utility>
#include <variant>
#include <vector>
#include <Eigen/Cholesky>
#include <EmrysFilter/Core/Allocation.h>
#include <EmrysFilter/Core/Execution.h>
#include <EmrysFilter/Core/Macros.h>
#include <EmrysFilter/Core/Multiply.h>
#include <EmrysFilter/Core/Solve.h>
#include <EmrysFilter/Core/Weights.h>
#include <EmrysFilter/Distributions/Gaussian.h>
#include <EmrysFilter/Distributions/Mixture.h>
#include <EmrysFilter/Distributions/Product.h>
#include <EmrysFilter/Models/IteratedUpdate.h>
#include <EmrysFilter/Models/Likelihood.h>
#include <EmrysFilter/Models/MeasurementModel.h>
#include <EmrysFilter/Models/MeasurementReads.h>
#include <EmrysFilter/Models/MeasurementUpdate.h>
#include <EmrysFilter/Models/Transform.h>
#include <EmrysFilter/Spaces/Composite.h>
#include <EmrysFilter/Spaces/Coordinates.h>
#include <EmrysFilter/Spaces/Indexing.h>
#include <EmrysFilter/Spaces/Space.h>
#include <EmrysFilter/Spaces/Subspace.h>
#include <EmrysFilter/Spaces/TagPath.h>

Go to the source code of this file.

Classes

struct  Emrys::GivenBlock< Space, P, Value >
 A block of a state given from outside the Gaussian being updated, as given() makes it, for update(prior, measurement, given): the block named by the path P of a state in Space, given as Value. More...

Functions

template<UncertainInput Prior, Measurement M>
auto Emrys::update (Prior const &prior, M const &measurement)
template<UncertainInput Prior, Measurement M, typename Reference>
auto Emrys::update (Prior const &prior, M const &measurement, LinearizedAbout< Reference > const &about)
template<typename P, typename Space, typename Value>
GivenBlock< Space, P, Value > Emrys::given (Space const &space, Value const &value)
template<typename P, typename Space, typename Value>
void Emrys::given (Space const &space, Value const &&value)=delete
 given() of a temporary value is deleted: the mark refers to the value, which would be gone at the end of the full expression, so a mark kept in a variable would dangle.
template<UncertainInput Prior, Measurement M, typename Space, typename P, typename Value>
auto Emrys::update (Prior const &prior, M const &measurement, GivenBlock< Space, P, Value > const &pinned)

Detailed Description

The update of a Gaussian by a measurement (decisions.md [templated-measurements], [weighted-branches], [covariance-update-forms], [innovation-statistics], [linearization-reference], [rb-point-mass]): update() of a state by a measurement that reads part of it, with one UpdateBranch per noise component, and update() given a block from outside the Gaussian.

It includes what it builds on: MeasurementModel.h (the models and the observations observe() makes of them), MeasurementUpdate.h (what an update returns), MeasurementReads.h and IteratedUpdate.h (how an update reads a measurement and iterates), and Likelihood.h (the logLikelihoods() of sample-based filters). Read SwitchingModel.h, Reduction.h, and Consistency.h next.