Skip to content

Generalized sigma-points#247

Merged
rlabbe merged 8 commits into
rlabbe:masterfrom
FelipeGiro:master
Jun 3, 2022
Merged

Generalized sigma-points#247
rlabbe merged 8 commits into
rlabbe:masterfrom
FelipeGiro:master

Conversation

@FelipeGiro
Copy link
Copy Markdown

Implemented Generalized sigma-points

Source:

  • A Generalized Unscented Transformation for Probability Distributions
    Donald Ebeigbe, Tyrus Berry, Michael M. Norton, Andrew J. Whalen, Dan Simon, Timothy Sauer, and Steven J. Schiff
    arXiv:2104.01958v1 [stat.ME] 5 Apr 2021
    https://arxiv.org/pdf/2104.01958.pdf

This is a part of my research. I am investigating continuous representation for structural reliability, that usually is a exponential distribution. So, this method partially solve my problem, because it estimates quite accurately the first 4 statistical moments of most distributions. Perhaps it is interesting to have it in filterpy.

Soon, I will test it for UKF and push it into tests, but for some rapid tests I did here, it work pretty well.

Where were basically two modifications:

  1. In sigma_points.py, added a class GeneralizedSigmaPoints.
  2. In test/test_ukf.py, added three tests for this method: test_generalized_sigma_points_weights_1D, test_generalized_sigma_points_2D, and test_generalized_sigma_points_2D_positively_constrained. These tests are reproductions of papers examples.

Note that is necessary for this method the use of the first 4 moments. So far, you have to add x and P twice, first in the class initialization and then in sigma_points function. It has a warning when the values are different. Perhaps it is better to exclude the inputs in sigma_points function.

This library helped me a lot to understand Kalman Filters, so I would like to contribute somehow.

@rlabbe rlabbe merged commit c6ac9e2 into rlabbe:master Jun 3, 2022
@rlabbe
Copy link
Copy Markdown
Owner

rlabbe commented Jun 29, 2022

I reverted this pull request. I am getting unit test errors when running py.test.

If you want to fix these and resubmit that is fine. I do ask that the py.test routines follow PEP conventions - two blank lines after functions, spaces after commas, etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants