Differential robot model on robot_localization to enhance IMU heading with GPS
Hi!
According to the robot_localization docs it is my understanding that the EKF uses an omnidirectional motion model.
I'm running robot_localization on a custom differential robot with the setup described in the docs for using gps data and it works really well, however I'm having a hard time getting a robust and reliable north referenced heading from commercial grade IMUs: usually the angle they yield can have an error of up to ~20 degrees even if they are fully calibrated, probably because all the magnetic noise the motors and other power electronics elements can produce.
I'm aware this is not robot_localization's fault, however I was thinking that RTK GPS data could be used to remove these static (or very low frequency) offsets that the magnetometer has knowing that a differential robot is being used, since a restriction could be added to tell RL that the robot's linear speed can only point towards the direction it is heading to. This assumption is not present in an omnidirectional motion model, where the robot's linear speed and heading are completely independent (think for instance of a drone).
Do you think that may be a good idea? Or would you recommend creating a custom kalman filter to fuse IMU heading with GPS data knowing that the robot is differential and then feeding this "fused imu" to robot_localization?
Have someone tried to enhance IMU heading with GPS data? If so, I would love to hear your experiences.