ChristopherRabotin / gokalman

A Kalman Filter library in go. Includes several examples in statistical orbit determination.
MIT License
22 stars 3 forks source link

Unsented Kalman Filter #28

Open ChristopherRabotin opened 7 years ago

blahmonkey commented 7 years ago

Hi Christopher,

Any update on how this is coming along? Looking to use the UKF In a project, and there isnt an implementation in GoLang, so the only alternative is to use pykalman and go with (slow) python.

Thanks for your work!

ChristopherRabotin commented 7 years ago

Hi! Thanks for your interest, glad it may help. I hope to have an implementation of the UKF in about three weeks. However, I'll be coding it up specifically for statistical orbit determination, as per Tapley, Schutz and Born 2004. I'm pretty sure that their algorithm is identical to that of normal UKF, but just giving you a heads up.

Also, if you have datasets on which I could test the implementation on, I would love that! I use these KF for orbit determination which is more of an art form than a science.

On Mon, Mar 27, 2017, 12:04 blahmonkey notifications@github.com wrote:

Hi Christopher,

Any update on how this is coming along? Looking to use the UKF In a project, and there isnt an implementation in GoLang, so the only alternative is to use pykalman and go with (slow) python.

Thanks for your work!

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/ChristopherRabotin/gokalman/issues/28#issuecomment-289424274, or mute the thread https://github.com/notifications/unsubscribe-auth/AEma6ImO3ItjYzTsFscJgk1t2o2hAq8xks5rp5qfgaJpZM4LnlVa .

blahmonkey commented 7 years ago

Hi,

We're planning to use it for aircraft tracking via multilateration, its the ideal way to smoothen the tracks. I need to look up the Tapley paper to see if there is anything that might render it unusable.

We will be building up data in 6 weeks or so, would that be too late for you? Also, would this kind of data work for you?

Thanks for your positive response!

Edit: oops, I guess its the Orbital Determination book. Very interesting (since there is much in common with multilateration methods). Will take a look :)

ChristopherRabotin commented 7 years ago

Wow, interesting stuff!

I will have datasets of my own too which I'll use to validate the data, but the more the better to find discrepancies. So yes, 6 week's time would work.

Also note that my current tests on the EKF are done in my other project, smd, because that's where the orbital dynamics are modeled. So it looks like from the coverage that the EKF (in hybrid.go) isn't full tested, but it does have full coverage.

On Mon, Mar 27, 2017, 13:59 blahmonkey notifications@github.com wrote:

Hi,

We're planning to use it for aircraft tracking via multilateration, its the ideal way to smoothen the tracks. I need to look up the Tapley paper to see if there is anything that might render it unusable.

We will be building up data in 6 weeks or so, would that be too late for you? Also, would this kind of data work for you?

Thanks for your positive response!

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/ChristopherRabotin/gokalman/issues/28#issuecomment-289560484, or mute the thread https://github.com/notifications/unsubscribe-auth/AEma6FDJqTbMZmepYIjrmMV1_2AE4fPfks5rqA7MgaJpZM4LnlVa .

blahmonkey commented 7 years ago

Great, do update this thread once you have code to test.

Re EKF - thanks for clearing that up. Once we have some data, maybe we can do some testing with EKF as well.

ChristopherRabotin commented 7 years ago

I might only have this filter by the third or fourth week of April. I have a higher priority on implementing a square root information filter right now (which will be done this week, since I have a deadline for this in a week).

blahmonkey commented 7 years ago

Ok, thanks for letting me know! Should not affect our plans, and gives us time to get more data to test with.

ChristopherRabotin commented 7 years ago

@blahmonkey , just to keep you updated, I will be implementing a Scaled Square Root Unscented KF instead of a simple UKF. The main reason is that the UKF may quickly suffer from numerical issues leading the covariance to no longer be positive semi-definite. Moreover, the scaling allows for tuning the filter based on an initial guess of the distribution of the estimates, but can be turned off by setting the scaling to 1. In terms of performance, the square root version does not necessarily significantly require more computation power to work since the measurement update can be done using a Cholesky update. Actually, combining the Cholesky update and scaling, the performance should be on par with an EKF.

I was trying to find a publicly available document equivalent of the algorithm on which I'll be doing my implementation from. The UKF is not in Tapley, Schultz, Born. The reference I have is a presentation by Dr. Moriba Jah on that algorithm for Mars aerobraking at JPL.

blahmonkey commented 7 years ago

@ChristopherRabotin Thank you for the update! I've seen a paper on the Square Root UKF, I guess that is just this SSRUKF with scaling set to 1. Need to try it out and see how it works with our data

We've collected some data, just slowing down a bit to focus on other things, should be back to this track pretty soon. Good luck with your implementation, and keep me posted!

ChristopherRabotin commented 7 years ago

As a heads up, I'm not sure I'll get around to code up this UKF just yet. I initially wanted it for a project I have to give in on Tuesday, but I might skip this implementation.

blahmonkey commented 7 years ago

Ah, thats a pity. Sadly, our project is also delayed (its a commercial one) and we are also in a bit of uncertainty about it right now.