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

The policies a model is built from, and the marks on a step's arguments (decisions.md [model-policies], [tag-addressing]): reads(), writes(), affineIn(), additiveNoise(), continuousNoise(), logLikelihood(), and outputSpace(), each a call returning an object of its own type, which processModel() and measurementModel() take after the function in any order; the internal PolicySet, which finds each in an argument pack; the placing of additive noise in an output space; and sure(), which marks a known input of predict() or observe() by the tag of its space. More...

#include <array>
#include <cstddef>
#include <functional>
#include <optional>
#include <tuple>
#include <type_traits>
#include <utility>
#include <EmrysFilter/Core/Forwarding.h>
#include <EmrysFilter/Core/Macros.h>
#include <EmrysFilter/Core/Math.h>
#include <EmrysFilter/Distributions/Gaussian.h>
#include <EmrysFilter/Distributions/Mixture.h>
#include <EmrysFilter/Distributions/Product.h>
#include <EmrysFilter/Spaces/Composite.h>
#include <EmrysFilter/Spaces/Coordinates.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::Reads< Items >
 What a model reads, as reads() declares it: the items, each a path into the state or the tag of an input of the call, under a name (decisions.md [model-policies]). More...
struct  Emrys::Writes< Paths >
 What a model writes, as writes() declares it: the blocks its function's result fills (decisions.md [model-policies]). More...
struct  Emrys::AffineIn< Names >
 The input names a model's function is affine in, given the rest, as affineIn() declares them (decisions.md [model-policies], [affine-coordinates]): a sigma-point method factors those coordinates out and spreads its points over the others alone. More...
class  Emrys::AdditiveNoise< Parts >
 Noise added to a model's output, \( z = h(x) \boxplus v \), as additiveNoise() declares it (decisions.md [additive-noise], [model-policies]): the function is transformed once, and the noise only widens and shifts the result. More...
class  Emrys::ModeNoise< Axis, Part >
 Additive mixture noise whose components are the values of a mode axis, as additiveNoise(mixture).byMode<Axis>() declares it (decisions.md [imm]): the Markov outlier model, in which a sensor's outlier state is a mode of the target that persists as the mode chain says. More...
class  Emrys::ContinuousNoise< Parts >
 A process model's white-noise spectral density, as continuousNoise() declares it, placed by tag path on blocks of the output and discretized over the step by the model (decisions.md [continuous-time-noise], [model-policies]): \( Q_c \, \Delta t \) on each block's differences. More...
struct  Emrys::LogLikelihood< G >
 A measurement model's own \( \log p(z \mid x) \) at a state point, as logLikelihood() declares it, for the filters that weight points (decisions.md [likelihood-measurements], [model-policies]): a function g(in, x, z) of the model's input space instance, its input vector, and the observation. More...
struct  Emrys::Sample< G >
 A draw of the observation that a measurement model known by its likelihood alone makes of a state, as sample() declares it, for simulate() (decisions.md [likelihood-measurements], [model-policies]): a function g(in, x, rng) of the model's input space instance, its input vector, and the caller's generator, returning the observation. More...
struct  Emrys::OutputSpace< X >
 A model's output space given by its instance, or computed from the state's space, as outputSpace() declares it (decisions.md [measurement-space-functions], [model-policies]): for an output with a resizable block, whose size the type does not fix. More...
struct  Emrys::Sure< S, Vector >
 A sure input of predict() or observe(): a known value in the tagged space S, as sure() marks it (decisions.md [prediction-inputs], [tag-addressing]). More...
struct  Emrys::Consider< Paths >
 The blocks of the state that a Kalman update considers rather than estimates, as consider() names them (decisions.md [consider-states]): the Schmidt-Kalman update of Schmidt (1966). More...

Functions

template<typename... Items>
auto Emrys::reads (Items const &...)
template<PathValue... Paths>
auto Emrys::writes (Paths const &...)
template<PathValue... Names>
auto Emrys::affineIn (Names const &...)
template<typename... Parts>
AdditiveNoise< typename internal::HeldOf< std::unwrap_ref_decay_t< Parts > >::type... > Emrys::additiveNoise (Parts &&... parts)
template<typename... Parts>
ContinuousNoise< std::remove_cvref_t< Parts >... > Emrys::continuousNoise (Parts &&... parts)
template<typename G>
requires (!MatrixExpression<G> && !Space<std::remove_cvref_t<G>>)
LogLikelihood< std::remove_cvref_t< G > > Emrys::logLikelihood (G &&function)
template<typename G>
requires (!MatrixExpression<G> && !Space<std::remove_cvref_t<G>>)
Sample< std::remove_cvref_t< G > > Emrys::sample (G &&function)
template<typename X>
requires (!MatrixExpression<X>)
OutputSpace< std::remove_cvref_t< X > > Emrys::outputSpace (X &&x)
template<FixedSizeSpace S, MatrixExpression V>
requires Space<S>
auto Emrys::sure (V &&value)
template<Space S, MatrixExpression V>
auto Emrys::sure (S space, V &&value)
template<PathValue... Paths>
constexpr Consider< internal::PathOf< Paths >... > Emrys::consider (Paths const &...)

Detailed Description

The policies a model is built from, and the marks on a step's arguments (decisions.md [model-policies], [tag-addressing]): reads(), writes(), affineIn(), additiveNoise(), continuousNoise(), logLikelihood(), and outputSpace(), each a call returning an object of its own type, which processModel() and measurementModel() take after the function in any order; the internal PolicySet, which finds each in an argument pack; the placing of additive noise in an output space; and sure(), which marks a known input of predict() or observe() by the tag of its space.

Read MeasurementModel.h next.