EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::Columns< Placed > Class Template Reference

The matrix \( H \) of a linear measurement model by its columns: a matrix per block of the state read, each placed by tag path with on() or onEach() (decisions.md [linear-sensors]). More...

#include <EmrysFilter/Models/MeasurementModel.h>

Public Types

using Paths = TagPaths<typename internal::ColumnsOf<Placed>::Path...>
 The paths read, in order, as a TagPaths.
using FirstEachPath = typename internal::FirstEachPathOf<Placed...>::type
 The path of the first block read per repetition, or void.

Public Member Functions

 Columns (Placed... placed)
 The matrices placed.
std::tuple< Placed... > const & placed () const
Eigen::Index rows () const

Static Public Attributes

static constexpr bool Repeats = (internal::ColumnsOf<Placed>::Each || ...)
 whether the measurement repeats, with a block of the state read per repetition by onEach()
static constexpr int Rows = internal::agreedRows<internal::ColumnsOf<Placed>::Rows...>
 the rows of one repetition of the measurement, or Eigen::Dynamic

Detailed Description

template<typename... Placed>
class Emrys::Columns< Placed >

The matrix \( H \) of a linear measurement model by its columns: a matrix per block of the state read, each placed by tag path with on() or onEach() (decisions.md [linear-sensors]).

The measurement is \( z = \sum_k H_k x_k \boxplus v \) over the blocks read, in the order given, which is what the model reads. A matrix given as on<Path>(H) has a column per coordinate of the block. Given as onEach<Path>(H), it has a column per coordinate of one repetition of a repeated block, and the measurement repeats with the block: repetition \( i \) of the measurement reads repetition \( i \) of the block, so the block's columns of \( H \) are \( I \otimes H \), and an on<Path>() matrix is read into every repetition. Every matrix has the rows of one repetition of the measurement, or of the whole of it if nothing repeats.

// each landmark's position relative to the vehicle's, z_i = l_i - p
auto const relative = measurementModel(Columns{onEach<Landmarks>(Eigen::Matrix2d::Identity()),
on<Position>(-Eigen::Matrix2d::Identity())},
Columns(Placed... placed)
The matrices placed.
Definition MeasurementModel.h:428
auto on(Model const &model, Renames const &...)
Definition Placement.h:1067
AdditiveNoise< typename internal::HeldOf< std::unwrap_ref_decay_t< Parts > >::type... > additiveNoise(Parts &&... parts)
Definition Policies.h:523
auto onEach(Model const &model, Renames const &...)
Definition Placement.h:1138
auto measurementModel(F &&function, Policies &&... policies)
Definition MeasurementModel.h:913
Template Parameters
Placedthe matrices, as on() and onEach() return them, in the order read
See also
measurementModel()

Member Function Documentation

◆ placed()

template<typename... Placed>
std::tuple< Placed... > const & Emrys::Columns< Placed >::placed ( ) const
inlinenodiscard
Returns
the matrices, as placed by path

◆ rows()

template<typename... Placed>
Eigen::Index Emrys::Columns< Placed >::rows ( ) const
inlinenodiscard
Returns
the rows of one repetition of the measurement

The documentation for this class was generated from the following file: