|
EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
|
Propagating a distribution through a function (decisions.md [method-per-measurement], [prediction-inputs], [affine-coordinates], [returned-jacobians], [iterated-update], [sigma-point-sets], [linearization-reference], [transform-policies]): transform(), which takes a measurement model's policies or a measurement model itself, the withCross() mark on its arguments, and linearizedAbout() for a step linearized about a point or a distribution the caller gives. More...
#include <algorithm>#include <array>#include <cmath>#include <concepts>#include <cstddef>#include <expected>#include <limits>#include <optional>#include <tuple>#include <type_traits>#include <utility>#include <Eigen/Cholesky>#include <Eigen/Eigenvalues>#include <unsupported/Eigen/AutoDiff>#include <EmrysFilter/Core/Forwarding.h>#include <EmrysFilter/Core/Macros.h>#include <EmrysFilter/Core/Math.h>#include <EmrysFilter/Core/Multiply.h>#include <EmrysFilter/Core/Solve.h>#include <EmrysFilter/Distributions/Gaussian.h>#include <EmrysFilter/Distributions/SampleSet.h>#include <EmrysFilter/Distributions/Sampling.h>#include <EmrysFilter/Models/Batched.h>#include <EmrysFilter/Models/Condition.h>#include <EmrysFilter/Models/Linearization.h>#include <EmrysFilter/Models/MeasurementModel.h>#include <EmrysFilter/Models/Methods.h>#include <EmrysFilter/Models/ResolvedReads.h>#include <EmrysFilter/Models/TransformArgs.h>#include <EmrysFilter/Spaces/Coordinates.h>#include <EmrysFilter/Spaces/Indexing.h>#include <EmrysFilter/Spaces/Reset.h>#include <EmrysFilter/Spaces/Space.h>#include <EmrysFilter/Spaces/Subspace.h>#include <EmrysFilter/Spaces/TagPath.h>Go to the source code of this file.
Functions | |
| template<UncertainInput Input> | |
| CrossMarked< Input > | Emrys::withCross (Input const &input) |
| Marks the uncertain input, usually the state, whose cross-covariance with the output transform() also returns (see OutputWithCross). | |
| template<UncertainInput Input> | |
| void | Emrys::withCross (Input const &&input)=delete |
| withCross() of a temporary is deleted: the mark refers to its input, which would be gone at the end of the full expression, so a mark kept in a variable would dangle. | |
| template<UncertainInput Distribution> | |
| LinearizedAbout< Distribution const & > | Emrys::linearizedAbout (Distribution const &distribution) |
| template<UncertainInput Distribution> | |
| void | Emrys::linearizedAbout (Distribution const &&distribution)=delete |
| linearizedAbout() of a temporary distribution is deleted, as withCross()'s is: the mark refers to it, and it would be gone at the end of the full expression. | |
| template<typename Derived> | |
| LinearizedAbout< typename Derived::PlainObject > | Emrys::linearizedAbout (Eigen::MatrixBase< Derived > const &point) |
| template<typename Method, typename F, typename... Args> requires (!MeasurementModel<F> && !internal::isModel<F> && internal::crossCount<Args...> <= 1) | |
| auto | Emrys::transform (Method const &method, F const &f, Args const &... args) |
| template<typename Method, typename Model, typename... Inputs> requires ((MeasurementModel<Model> || internal::isModel<Model>) && internal::crossCount<Inputs...> <= 1) | |
| auto | Emrys::transform (Method const &method, Model const &model, Inputs const &... inputs) |
Propagating a distribution through a function (decisions.md [method-per-measurement], [prediction-inputs], [affine-coordinates], [returned-jacobians], [iterated-update], [sigma-point-sets], [linearization-reference], [transform-policies]): transform(), which takes a measurement model's policies or a measurement model itself, the withCross() mark on its arguments, and linearizedAbout() for a step linearized about a point or a distribution the caller gives.
The internal namespace holds each method's computation of the output's moments and linearization. It includes what it builds on: Linearization.h (what a transform returns), Condition.h (the Kalman update of a marked input), Methods.h (the methods as policies), and TransformArgs.h (the arguments and the joint input). Read ProcessModel.h and Measurement.h next.