EKF help needed.
Hi everyone. I am working to setup an EKF using the robot_localization package.
I use a single EKF setup which fuses data from GPS (using a navsat_transform node) , odometry, and IMU to localize and publish the map -> odom transform.
I do not use a second, local EKF as my robots odometry is used to publish the odometry -> baselink transform.
For the most part, my setup has been working out fine. The issue is that when GPS becomes unreliable and position jumps around, the whole localization falls apart. Navigation with Nav2 becomes impossible and the robot simply rolls in circles as its location jumps around the map.
From my understanding, the EKF is supposed to prevent this kind of situation from occurring since large covariance values from the poor GPS measurements (which typically are >50) should reduce the Kalman gain associated with that sensor, thereby reducing that sensors influence on the next update step. Therefore my robots position should not be so heavily influenced by these jumps as long as the other sources of data are being smooth and reliable.
The EKF fuses the X,Y positions from the robots odometry and GPS odometry given by the navsat_transform node. Ive provided my EKF parameter configuration for reference.
Am I failing to set my parameters correctly? Do I just have a fundamental misunderstanding of the EKF? Is my Nav2 setup potentially the issue?
Any advice helps. Thanks!