Extended Kalman filter and unscented Kalman filter
Is your feature request related to a problem? Please describe.
The current estimators in Drake, such as the LuenbergerObserver, is somewhat limited in scope. It would be nice to have more general types of state estimators.
Describe the solution you'd like
I propose adding implementations of the widely-used extended Kalman filter (EKF) and unscented Kalman filter (UKF). I plan to submit a series of pull requests introducing various forms of these Gaussian state observers, with the following features:
- [ ] Discrete-time extended Kalman filter
- [ ] Continuous-time extended Kalman filter (Kalman–Bucy filter)
- [ ] Continuous-time EKF with discrete-time measurement updates (Hybrid Kalman filter)
- [ ] Iterated extended Kalman filter [Barfoot, 2024, §4.2.5]
- [ ] Discrete-time unscented Kalman filter
- [ ] Continuous-time unscented Kalman filter
- [ ] Continuous-time UKF with discrete-time measurement updates
- [ ] Iterated unscented Kalman filter [Barfoot, 2024, §4.2.10]
- [x] Supporting utilities for testing (e.g., stochastic linear systems)
Describe alternatives you've considered
I'm open to refining the APIs and implementation details as part of the code review process.
Additional context
Reiterating that I intend to send in the PR’s if Drake maintainers are happy to receive an implementation.
I would be interested in this feature (and reviewing it).