
How to define a Kalman filter with a delta time dependent process noise?
11 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Joost
el 28 de Abr. de 2022
Comentada: Joost
el 5 de Mayo de 2022
Hello,
I am using the trackingKF and trackingUKF functions from the Sensor Fusion and Tracking Toolbox to create kalman filters. I have been trying to figure out how to create a process noise function that is dependent delta time (dt), and give this process noise function to the trackingKF constructor function, or creating a KalmanFilter object without the TrackingKF. I have tried the first suggestions in set process noise 1D Constant Velocity - (mathworks.com), and from this I understood it in the following way:
If I use
sigmasq = 3;
EKF = trackingEKF(@constvel,@cvmeas,zeros(2,1),'HasAdditiveProcessNoise', false,'ProcessNoise',sigmasq);
to create my kalman filter for the IMM in the TOMHT, the process noise used by the EKF will be 3 * [0.25 * dt^4, 0.5 * dt^2; 0.5 * dt^2; dt].
Did I understand correctly? If so, where can I find the code where this is implemented? If not, how can I achieve this?
Thank you,
Joost
0 comentarios
Respuesta aceptada
Prashant Arora
el 2 de Mayo de 2022
Editada: Prashant Arora
el 2 de Mayo de 2022
Hi Joost,
The “constvel” and other built-in motion models take advantage of the non-additive EKF/UKF process noise model to describe the process noise and time step impact.
The constvel motion model is defined as:

When you use an EKF with non-additive process noise (HasAdditiveProcessNoise = false), the Jacobian of the state transition with respect to noise (which is simply
in this case) takes care of the time-varying nature.
These analytical Jacobians are defined using constveljac as a function of time step. However, even numerical Jacobian should include the time impact. Here,
represents the ProcessNoise matrix defined as an N-D square matrix.
Similarly, when using an UKF, the random vector is sampled from the
matrix and the propagation of random vector using the motion model (
) automatically considers the impact of time-step.
Hope this helps
Thanks,
Prashant
3 comentarios
Prashant Arora
el 4 de Mayo de 2022
Editada: Prashant Arora
el 4 de Mayo de 2022
Hi Joost,
I apologize for the confusion. You are right. I meant that the random vector (
) is sampled deterministically using sigma-point calculation as a function of α, β and κ.
You are right that the w in the motion model must be non-zero sometimes. I could not reproduce this behavior at my end. I do see non-zero w in the motion model passed by UKF. For every call to "predict" method of UKF, the non-zero w is sent to motion model after
calls, where
is the number of states in your motion model. This is because the UKF first propagates sigma points for the state (x) with 0 process noise. Then, it propagates sigma points for process noise with mean state. Can you please try putting a conditional breakpoint (any(abs(w) > 0)) and check if the breakpoint is hit? If it doesn't get hit, please share the MATLAB release you're using and I can investigate further.
That said, the code for sigma point calculations for non-additive process noise should be available in the following file:
"matlabshared.tracking.internal.UKFPredictorNonAdditive"
This file should be available at:
matlabroot\toolbox\shared\tracking\trackinglib\+matlabshared\+tracking\+internal\UKFPredictorNonAdditive.m
Hope this helps.
Prashant
Más respuestas (0)
Ver también
Categorías
Más información sobre Tracking and Sensor Fusion en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!