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:
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:
is the process noise random vector. For constvel, can be inferred as the “unknown acceleration” of the target assuming piecewise constant model. The and matrices are function of the time step, T. Shown below are their 1-D versions.
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.
I created my own motion model for a UKF, that takes 3 parameters: (state, w, dt) . I initialized the UKF with this motion model, and set the UKF to non-additive process noise. This seems to work.
I am not sure what you meant with the random vector, I though the UKF uses Sigma Points computed with a non-random formula (dependent on some UKF parameters).
I understand that with non-addative process noise, the UKF takes Q into consideration (with mean zero) in the sampling process.
This means that in the motion model, w sometimes is zero, but also sometimes should be non-zero, depending on the sigma point. However, if I put a breakpoint in the motion model, it is always zero. Moreover, I cannot find the code where these sigma points are sampled in the TrackingUKF.m file. Could you perhaps tell me where I can find this logic, where the UKF samples the sigma points from the state (mean and covariance matrix) and the process noise matrix?
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:
You are right, it makes 1 + 2N sigma points with w a zero vector, and then 2 points for each dimension of w, one with a positive value and one with a negative value.Thank you so much for getting to the bottom of this, and explaining non-additive noise to me.
Da Änderungen an der Seite vorgenommen wurden, kann diese Aktion nicht abgeschlossen werden. Laden Sie die Seite neu, um sie im aktualisierten Zustand anzuzeigen.
Translated by
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.