Skip to content

Commit

Permalink
[filter] transition and observation runtime change support
Browse files Browse the repository at this point in the history
  • Loading branch information
FrancoisCarouge committed Oct 13, 2024
1 parent d45fb3a commit c25da29
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
10 changes: 10 additions & 0 deletions include/fcarouge/internal/kalman.tpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,16 @@ kalman<Filter>::s() const -> const innovation_uncertainty & {
return filter.s;
}

template <typename Filter>
inline constexpr void kalman<Filter>::transition(const auto &callable) {
filter.transition = callable;
}

template <typename Filter>
inline constexpr void kalman<Filter>::observation(const auto &callable) {
filter.observation = callable;
}

template <typename Filter>
inline constexpr void kalman<Filter>::update(const auto &...arguments) {
filter.update(arguments...);
Expand Down
28 changes: 28 additions & 0 deletions include/fcarouge/kalman.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,34 @@ class kalman final : public internal::conditional_member_types<Filter> {
inline constexpr auto s() const -> const innovation_uncertainty &;
//! @}

//! @brief Sets the extended state transition function f(x).
//!
//! @param callable The copied target Callable object (function object,
//! pointer to function, reference to function, pointer to member function, or
//! pointer to data member) that will be called to compute the next state X on
//! prediction steps of expression `state(const state &, const input &, const
//! PredictionTypes &...)`. The default function `f(x) = F * X` is suitable
//! for linear systems. For non-linear system, or extended filter, implement a
//! linearization of the transition function f and the state transition F
//! matrix is the Jacobian of the state transition function.
//!
//! @complexity Constant.
inline constexpr void transition(const auto &callable);

//! @brief Sets the extended state observation function h(x).
//!
//! @param callable The copied target Callable object (function object,
//! pointer to function, reference to function, pointer to member function, or
//! pointer to data member) that will be called to compute the observation Z
//! on update steps of expression `output(const state &, const UpdateTypes
//! &...arguments)`. The default function `h(x) = H * X` is suitable for
//! linear systems. For non-linear system, or extended filter, the client
//! implements a linearization of the observation function hand the state
//! observation H matrix is the Jacobian of the state observation function.
//!
//! @complexity Constant.
inline constexpr void observation(const auto &callable);

//! @name Public Filtering Member Functions
//! @{

Expand Down

0 comments on commit c25da29

Please sign in to comment.