robot_localization
When I used the robot_localization package to fuse data from odometry data and a single IMU, the package really works, and the output(odom/filter) close to the really path.
However, when i control the robot platform spin around many times, the error between package output and real path increases. And the error is hard to be reduced through adjust parameters, like adjust process noise covariance. So, if i want to increase the accuracy of the output(close to the real path), the only way i can do is to add other sensor? As you did in the paper "A Generalized Extended Kalman Filter Implementation for the Robot Operating System", the accuracy of output increased a lot when you add GPS sensor.
The second question.We did a test to compare the outcome odom/filter and odom/imu. The odom/imu is the value when we let odometry calculate its position(x,y) by using the angle data from IMU. When build the platform driver, we change the method of odometry calculate the its position. Odometry calculate its position(x,y) through the angle which measured by wheel encode. But, we let odometry calculate its position(x,y) by using the angle data from IMU. Hence, we can get a new odometry value(odom/imu), by send imu angle data to the odometry, in order to let it reduce the angle error of wgeek encoder.
The EKF has two steps. One is predict through the dynamic system equations, and the other is correct via the measurements. So, the robot_localization will get better state estimate than the predict value of the state and measurements(IMU data) of the state. Hence, the package output odom/filter will be better than odom/imu, but it almost the same. Why odom/filter are not more accuracy than odom/imu?
may I ask which IMU are you using?