How can I define the additive process noise for optimal tuning?
3 views (last 30 days)
Show older comments
Hallo everyone,
I'm following this example(in link) in Matlab to make ego location. In extended Kalman Filter, if I use fucntion-helpTuneinsEKF of example, matlab always reminds me that the matrix is singular in the accuracy of the calculation. I try to redefine the initial value of additive process noise for optimal tuning, but I habe no idea how can I define these values like additive process noise for orientation and...
apnoise(stateinfo(filter, "Orientation")) = [0.02014531; 100; 7.0076611; 1.308652];
apnoise(stateinfo(filter, "AngularVelocity")) = [0.0007698; 100; 100];
thank you
Best regards
0 Comments
Answers (1)
Abhas
on 2 Oct 2024
I understand your concern as when dealing with EKFs, tuning the process noise covariance matrix is crucial for achieving accurate results. If MATLAB is indicating that a matrix is singular, it often means that the matrix is not invertible, which can occur if the process noise is not properly defined.
You may refer to the following MathWorks documentattion link to choose the initial process noise: https://www.mathworks.com/help/fusion/ug/tuning-kalman-filter-to-improve-state-estimation.html#:~:text=Choosing%20Process%20Noise
I hope this helps!
2 Comments
Abhas
on 7 Oct 2024
- Start with initial estimates based on prior knowledge. For example, if you have a rough idea of the noise characteristics in your system, you can use those as initial values. Often, the process noise covariance matrix is tuned empirically. This involves adjusting the values and observing the filter’s performance. If the filter is too slow to respond to changes, the process noise might be too low. If the filter is too noisy, the process noise might be too high.
- Use simulations to validate your chosen values. Simulate the system with known inputs and compare the filter’s output to the true state. Adjust the process noise values to minimize the estimation error. Based on your requirements you can customise it.
For the specific values you mentioned:
- Orientation: [0.02014531; 100; 7.0076611; 1.308652]
- AngularVelocity: [0.0007698; 100; 100]
These values likely represent the variances of the process noise for each state variable. The large values (e.g., 100) might indicate high uncertainty in those states, while smaller values indicate more confidence.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!