Problem with Robot_Localization for IMU and wheel encoder
I have a robot (diferential drive) that publish IMU (Gyro+Accel) data and odometry data. I process IMU with imu_tools and get reliable orientation. Now I want to fuse it with odometry using RL. Orientation from odometry is not reliable and so, position is not reliable. So I just use velocity from robot odometry.
I have a bag file with this data on test. Here is RL config file.
The problem is that RL start estimating velocity over Y axis and so Y position grows on the first loops of the filter. Something similar happend with X position. After some iteration Vx and Vy takes good values, but it is too late for position, it has a big error.
What config parameter should I have to tune?
EDIT: I will try to be more specific.
I run this commands on different terminals and on this order:
roscore
rostopic echo -n 10 /odometry/filtered
rostopic echo -n 10 /Chori/odom
roslaunch ekf_chori.launch
rosbag play chorirover_casa_10-2020.bag --clock
As soon as I run last command /odometry/filtered messages are printed. I'm focusing on the first 10 messages.
Mi robot publish 0 for X and Y velocity on the first 10 messages, but RL report another thing:
header:
seq: 0
stamp:
secs: 1601652111
nsecs: 418253183
frame_id: "odom"
child_frame_id: "base_link"
pose:
pose:
position:
x: 0.0
y: 0.0
z: 0.0
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 1.0
covariance: [100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5e-10, 2.5000000000000004e-07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5000000000000004e-07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5000000000000004e-07, -2.7755575615628914e-17, 0.0, 0.0, 0.0, 0.0, 0.25, -2.9103830456733704e-11]
twist:
twist:
linear:
x: -1.56883916614
y: 0.0
z: 0.0
angular:
x: 0.0
y: 3.26357598791e-10
z: -0.000565066860276
covariance: [0.09999999997671694, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5000000000000004e-07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5000000000000004e-07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.265607912379486e-07, -6.12487144335816e-12, 0.0, 0.0, 0.0, 0.0, 0.1174399919431861, 1.0604802810121328e-05]
---
header:
seq: 1
stamp:
secs: 1601652111
nsecs: 468253136
frame_id: "odom"
child_frame_id: "base_link"
pose:
pose:
position:
x: -0.0388840619851
y: 0.00379568427423
z: -0.000138389433891
orientation:
x: -1.2048123326e-08
y: -7.55400202725e-09
z: -0.70642843412
w: 0.70778447812
covariance: [100.00262577373665, 8.4190166470266e-10, -1.2638625873165072e-06, 1.0666420940083526e-09, -3.141669239112205e-05, -1.200407523745007e-13, -2.8636693710781813e-12, 100.00262577613756, -1.272332674170408e-07, 1.0735566605997028e-10, 1.8026422771507003e-06, -7.917677017868013e-13, -4.576135477496468e-14, 9.926843548557773e-11, 2.4993355432773175e-07, 4.1951029572820856e-14, -1.8339316273248427e-07, 2.861509431066864e-14, -1.9982334406341498e-18, 4.5746121310924785e-15, 4.90550745445278e-16, 2.499583471967169e-07, -8.45770189397269e-12, 1.3196671208271531e-18, 5.7547418436457165e-18, 1 ...
I update original question in order to give more details.