39#ifndef FCAROUGE_KALMAN_HPP
40#define FCAROUGE_KALMAN_HPP
157template <
typename State = double,
typename Output = double,
160class kalman final :
public internal::conditional_member_types<internal::kalman<
161 State, Output, Input, internal::repack_t<UpdateTypes>,
162 internal::repack_t<PredictionTypes>>> {
172 internal::kalman<State, Output, Input, internal::repack_t<UpdateTypes>,
188 using state = implementation::state;
212 using gain = implementation::gain;
630#include "internal/kalman.tpp"
The collection of Kalman algorithms.
constexpr auto q() const -> const process_uncertainty &
Returns the process noise covariance matrix Q.
implementation::innovation innovation
Type of the innovation column vector Y.
implementation::output output
Type of the observation column vector Z.
implementation::process_uncertainty process_uncertainty
Type of the process noise correlated variance matrix Q.
constexpr const auto & h() const
Returns the observation transition matrix H.
implementation::estimate_uncertainty estimate_uncertainty
Type of the estimated correlated variance matrix P.
constexpr auto f() const -> const state_transition &
Returns the state transition matrix F.
constexpr void transition(const auto &callable)
Sets the extended state transition function f(x).
implementation::output_uncertainty output_uncertainty
Type of the observation noise correlated variance matrix R.
constexpr auto p() const -> const estimate_uncertainty &
Returns the estimated covariance matrix P.
constexpr auto k() const -> const gain &
Returns the gain matrix K.
constexpr auto y() const -> const innovation &
Returns the innovation column vector Y.
implementation filter
Encapsulates the implementation details of the filter.
constexpr kalman(const kalman &other)=delete
Copy constructs a filter.
implementation::state state
Type of the state estimate column vector X.
implementation::state_transition state_transition
Type of the state transition matrix F.
constexpr void observation(const auto &callable)
Sets the extended state observation function h(x).
constexpr auto update() const
Returns the Nth update argument.
constexpr const auto & g() const
Returns the control transition matrix G.
constexpr auto s() const -> const innovation_uncertainty &
Returns the innovation uncertainty matrix S.
constexpr kalman(kalman &&other) noexcept=default
Move constructs a filter.
internal::kalman< State, Output, Input, internal::repack_t< UpdateTypes >, internal::repack_t< PredictionTypes > > implementation
Implementation details of the filter.
constexpr kalman()=default
Constructs a Kalman filter without configuration.
constexpr auto predict() const
Returns the Nth prediction argument.
constexpr ~kalman()=default
Destructs the Kalman filter.
constexpr auto operator=(const kalman &other) -> kalman &=delete
Copy assignment operator.
constexpr auto operator=(kalman &&other) noexcept -> kalman &=default
Move assignment operator.
constexpr const auto & u() const
Returns the last control column vector U.
implementation::innovation_uncertainty innovation_uncertainty
Type of the innovation uncertainty matrix S.
constexpr auto r() const -> const output_uncertainty &
Returns the observation noise covariance matrix R.
constexpr auto x() const -> const state &
Returns the state estimate column vector X.
implementation::gain gain
Type of the gain matrix K.
constexpr auto z() const -> const output &
Returns the last observation column vector Z.
Filter output model support concept.
repack< From >::type repack_t
Francois Carouge's projects namespace.
Eigen::Vector< Type, Row > column_vector
Compile-time sized Eigen3 column vector.
internal::empty_pack empty_pack
Tuple-like empty pack type.
The collection of utilities supporting the library.