How to fix the EKF pose when the robot is definitely not moving?
I have a robot with
- cameras providing absolute poses and
- wheel encoders providing odometry (i.e. x, y and yaw velocities).
A robot_localization_ekf node fuses both measurements and yields good results.
However, I'm struggling with the following situation: The robot is standing still (the wheel encoders yield very certain zero velocities) and the cameras don't yield any poses (there are no visual markers in the current field of view). How can we prevent the EKF from predicting a filtered odometry with huge uncertainties, when we know the robot is not moving? I thought about
- pausing the entire EKF node or
- dynamically decreasing the process noise
until I either receive camera poses or non-zero velocities. But, I guess, both is impossible with the current version of robot_localization.
Sure, since there is no absolute information for a period of time, the EKF pose uncertainty grows unboundedly. But there should be a possibility to circumvent this behavior in certain situations. Although the absolute pose is unknown at the moment, it doesn't change for sure and it's uncertainty doesn't change as well.
Do you have any ideas how to handle this case?
(By the way, I know of other applications, e.g. with advanced driver assistance systems, where they adjust the process noise depending on the situation: driving straight, turning at an intersection, preventing a collision, ...)