-
Notifications
You must be signed in to change notification settings - Fork 139
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Redesign base particle filter class. #160
Comments
So are you thinking that |
Yes, I think that's a basic description of what a particle state is.
Not sure this part is best. More efficient I think would be adapting the sensor and transition models to understand how to deal with a It might be as simple as telling models to expect a list of state_vectors and to return their operation on each member of that list. If we set |
In any case |
We have incorporated some extra information into each particle. Our multi model version of the StoneSoup particle filter requires an additional attribute in the Particle class called dynamic_model. This is an integer representing the transition model used to generate the current state within the particle. Additionally, we have implemented a Rao-Blackwellised algorithm for tracking and classification. Particles here possess a vector of probabilities requiring that the particle class have another attribute called rao_probabilities. The vector of probabilities represents the probability of each model producing the current state within the particle. There is the possibility that along with this, we many need to record the model number that generated that particle state too. An additional application which is currently being worked on outside of Stone Soup, is the fixed-lag SMC algorithm. The aim is to incorporate this algorithm into Stone Soup in the future. Each particle stores a path of states over time, together with a path of model numbers that represent the models used to generate the states. The period of time stored in the particle is variable. There is still only one weight associated with the particle, but the weight represents the probability of the entire path of states over time. In Matlab or Python we would store the path in each particle as a matrix. |
A bit belatedly, I'm convening a 'Particle Conference'. If you (or you think others) should participate, please assign yourself (or assign those others*) to this issue. I assume this will take the form of some sort of video conference/web teaming effort. As there's inevitably some divergence in what each of our systems and networks can cope with, could you please let me have any preferences and restrictions regarding which tools to use. Also, if anyone has any bright ideas, please do pipe up. I, for one, would like some sort of joint whiteboard facility, but don't have any experience of such. Once that's done I'll send round some prospective times/dates and then whatever meeting invites are appropriate. *if it turns out you can't do the assignment, just let me know and I can grab them. |
Despite appearances, I've not entirely neglected this topic. Thoughts:
|
I've been looking at creating a |
Decision needs to be made regarding the particle filter construction
Currently:
Particle
types contain a state_vector and weight (and parent). These are wrapped in aParticleState
which is just a list. Particle predictors and updaters work by operating the (transition, measurement) functions on these state_vectors. This won’t work with transition/measurement functions that takeState
, rather thanStateVector
types.This might be changed in either of two ways. Probably the easiest is to adjust
Particle
so as to take aState
rather thanStateVector
. The problem with that is going to be a large amount of redundant logic. If theState
contains stuff external to the state_vector (metadata, transformation functions, etc) that will be replicated needlessly for each particle in theParticleState
Better would be to construct a
ParticleState
which is more than a list. Instead it’s an analogue of a base state which it “particlizes”, preserving the metadata and functions and merely replicating the state vector N times. It would carry functions which calculate weighted mean and covariance of particles.Would affect/address #130 and #26.
The text was updated successfully, but these errors were encountered: