|
EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
|
Files | |
| Batched.h | |
| Batched functions (decisions.md [batched-functions]): batched(), the mark that a function takes every point at once, as the columns of a matrix, and writes one output; the marks of the Jacobians it writes, jacobians::perColumn() and jacobians::shared(); and BatchedOutput, the output the library provides, sized once for the batch and for the blocks whose Jacobians it uses. | |
| Condition.h | |
| The Kalman conditioning of a marked input on an observation of a transform's output (decisions.md [covariance-update-forms], [innovation-cholesky], [linearization-forms]): condition() with the updates::Standard, updates::Symmetric, and updates::Joseph covariance forms and the CovarianceUpdate concept, its result Conditioned, and statisticalLinearization() of a result in its marked input. | |
| Consistency.h | |
| Consistency checks (decisions.md [composed-features]): NisMonitor, a windowed chi-squared test on the normalized innovation squared of a filter's updates, and nees() with NeesMonitor, the same test on the normalized estimation error squared against a true state, which a simulation knows (see simulate()). | |
| CramerRao.h | |
| PosteriorCramerRaoBound: the Fisher information of the state along true trajectories, whose inverse bounds the mean squared error of any filter run on them (decisions.md [cramer-rao-bound]). | |
| Emission.h | |
| The measurement of a discrete state: the EmissionModel concept, which fills one log-likelihood per value; update() of a CategoricalParams by one, returning its CategoricalUpdate; the emission models EmissionTable, DensityEmission, PoissonEmission, and ExponentialEmission; and ArrivalInterval, the exact observation of a Markov-modulated Poisson process over a ContinuousTimeMarkovChain's interval, with its predict() (decisions.md [emissions]). | |
| FormSteps.h | |
| The prediction and update steps of the square-root and information forms of the Gaussian (decisions.md [gaussian-forms]): internal::predictInPlace() and internal::updateInPlace() overloaded on SqrtGaussianParams, InfoGaussianParams, and SqrtInfoGaussianParams, which KalmanRecursion calls as it calls the covariance form's. | |
| IteratedUpdate.h | |
| The iterated measurement update, all internal (decisions.md [iterated-update], [sigma-point-sets]): the read blocks moved to an iterate and respread as the prior spreads them, the iteration's scale and its test, the step to the prior's chart, and iteratedUpdate(), which Measurement.h's update() calls for an Iterated method. | |
| Likelihood.h | |
| The likelihoods that sample-based filters weight by (decisions.md [likelihood-measurements], [execution-policies]): logLikelihoods() of a measurement at the columns of a matrix of states, under an execution policy, and logLikelihood() at one. | |
| Linearization.h | |
| What a transform returns and what a measurement update reads from it (decisions.md [linearization-forms], [innovation-statistics], [innovation-cholesky]): the UncertainInput concept of a transform's uncertain arguments, the linearization forms JacobianForm and RootForm, OutputWithCross, the output's Gaussian with its linearization in the input marked by withCross(), and Innovation, an observation's residual and its covariance, from which the NIS and the log-likelihood follow. | |
| Measurement.h | |
| 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. | |
| MeasurementModel.h | |
| Measurement models and their observations (decisions.md [model-policies], [sensors], [linear-sensors], [measurement-space-functions], [templated-measurements], [method-per-measurement]): the MeasurementFunction that measurementModel() builds from a function, a matrix, or Columns and its policies, or from a likelihood alone; CountFrom, a measurement space that repeats with a block of the state; the MeasurementModel concept; Observed, what observe() makes of a model, a method, an observation, and the call's inputs, and the Measurement concept a filter's update() takes. | |
| MeasurementReads.h | |
| How an update reads a measurement, all internal (decisions.md [model-policies], [measurement-space-functions], [additive-noise], [method-per-measurement]): ResolvedMeasurement, an observation resolved against a state space, which builds on ResolvedReads.h's resolution of the model's reads() against the state and the call's arguments, builds the output space, places the additive noise, calls the function with its input gathered once per evaluation, and splits a returned Jacobian by input; the predicted measurement's moments; and the covariance the uncertain inputs carry through the function. | |
| MeasurementUpdate.h | |
| What an update returns (decisions.md [weighted-branches], [innovation-statistics]): an UpdateBranch per noise component in a MeasurementUpdate, and FilterUpdate and ReusableFilterUpdate, what a filter's update returns without the posteriors, with the internal rebinding of an update to an allocator. | |
| Methods.h | |
| The transform methods, as policies made by their factories (decisions.md [policy-factories], [method-per-measurement], [affine-coordinates], [returned-jacobians], [iterated-update], [sigma-point-sets], [user-extension-points]): methods::linearized(), unscented(), fourthMomentUnscented(), cubature(), sphericalSimplex(), gaussHermite(), spread(), and iterated(); the UnscentedRule and PointSet concepts a rule or a point set of the user's own meets; the TransformMethod concept observe() requires of its method; and withJacobian() for a function that knows its Jacobian. | |
| Placement.h | |
| Models placed in a larger state and measurement models side by side (decisions.md [model-placement], [model-policies]): on<Path>(model), which places a process or a measurement model on the block that a path names, prefixing every path into the state it reads and writes; onEach<Path>(model), which places one copy of a process model on every repetition of a repeated block; and compose() of measurement models, whose output is their outputs side by side. | |
| Policies.h | |
| 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. | |
| ProcessModel.h | |
| Process models as functions with reads and writes (decisions.md [model-policies], [continuous-time-noise], [prediction-inputs], [time-steps]): the ProcessFunction that processModel() builds from a function and its policies; the built-in models RandomWalk, the Kinematic chains ConstantVelocity and ConstantAcceleration, OrnsteinUhlenbeck, and Constant, each the same object; compose(), which puts process models side by side; the ProcessModel concept; predict(), which moves a Gaussian through one by any transform method with the discretized process noise added, and predictJoint(), which also keeps the Gaussian it started from and its cross-covariance with the prediction, a PredictedJoint, which is what a smoother records [smoothing]; propagate(), the noise-free step; and FixedStepModel, a model over one step with the work that depends only on the step done once. | |
| Reduction.h | |
| Reducing an update's branches (decisions.md [weighted-branches], [reduction-policies], [composed-features]): the Collapse, Select, and Keep policies, the Gate that rejects branches by a chi-squared test before another policy, the ReductionPolicy and MixtureReductionPolicy concepts a filter's update() requires of its policy, which a policy of the user's own meets [user-extension-points], and filterUpdate(), which turns an update into the FilterUpdate a filter returns. | |
| ResolvedReads.h | |
| How a model's reads() meet a state and a call, all internal (decisions.md [model-policies], [tag-addressing]): ReadBlocks, the blocks of the state a model reads; and ResolvedReads, a model's reads() resolved against a state space and the call's arguments, which sorts the items into blocks of the state and inputs of the call, builds the model's input space from both, and gathers the function's input vector once per evaluation. | |
| Simulation.h | |
| simulate(): a draw of a process model's next true state, the ground truth that a simulation runs a filter against and that nees() and NeesMonitor test its estimates by, and a draw of a measurement model's observation of a true state, which observe() turns into the measurement the filter takes, and a draw of a Markov chain's next value, the true mode of a switching or hidden Markov model (decisions.md [printing-and-simulation]). | |
| SwitchingModel.h | |
| SwitchingModel (decisions.md [switching-models], [imm]): a Markov chain on a discrete mode space and the process model each mode follows, one per mode, one per value of a mode axis through switchingModel(), or one shared, and over a fixed step when every model is a FixedStepModel [fixed-step-models]. | |
| Transform.h | |
| 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. | |
| TransformArgs.h | |
| The arguments of transform() and the joint input they form (decisions.md [prediction-inputs], [affine-coordinates], [linearization-reference]): the types of the withCross() and linearizedAbout() marks, CrossMarked and LinearizedAbout, and, in the internal namespace, how each argument reaches the function, as uncertain or known, and the Transform that concatenates the uncertain ones into one input, with its covariance and root. | |