robot_localization: Unsure of what global EKF instance is fusing [closed]

asked 2015-12-09 10:27:33 -0600

jll gravatar image

updated 2015-12-11 07:20:15 -0600

Hello,

I have been trying to obtain an orientation estimate from gyroscope data using the EKF nodes. I am using a launch file (attached below) with the structure - one local EKF node in the odom frame, fusing only continuous IMU data and outputting odom->baselink TF transform, and another global EKF node in the map frame, coupled to navsat_transform_node and fusing GPS with IMU data.

I have set the configs as such:

For the global EKF node, imu0_config is IMU and odom0_config is GPS odometry from navsat_transform_node:

  <rosparam param="imu0_config">[false, false, false,
                                 false,  false,  false,
                                 false, false, false,
                                 false,  false,  true,
                                 true,  true,  false]</rosparam>

  <rosparam param="odom0_config">[true, true, false,
                                 false,  false,  false,
                                 false, false, false,
                                 false,  false,  false,
                                 false,  false,  false]</rosparam>

For the local EKF node, (imu0_config refers to same IMU topic as global EKF node):

  <rosparam param="imu0_config">[false, false, false,
                                 false,  false,  false,
                                 false, false, false,
                                 false,  false,  true,
                                 true,  true,  false]</rosparam>

When I plot the local EKF's yaw output, I obtain this: https://drive.google.com/file/d/0B_Ld...

This is very much in line with what I expected and what I obtained just by integrating my gyroscope data in MATLAB. However, when I plot the global EKF's yaw output, I obtain this instead: https://drive.google.com/file/d/0B_Ld...

This does not resemble my expected output and the yaw seems to blow up even though I am moving in an approximately straight line. Both of these nodes are also fusing data from the same topic, '/imu/data'.

Would you happen to know why the result of the fusing is so different, especially since I am only fusing IMU yaw velocity to obtain yaw in both nodes (i.e. I think I am using the exact same sources of data, no more and no less, to obtain yaw in both nodes)? Or am I implicitly fusing other data in the global EKF node?

My launch file is included here: https://drive.google.com/file/d/0B_Ld...

My bagfile in case required: https://drive.google.com/file/d/0B_Ld...

Thanks!

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by Tom Moore
close date 2019-08-23 08:38:59.124993

Comments

This question is very old and slipped past me; did you ever find an answer to this?

Tom Moore gravatar image Tom Moore  ( 2017-07-20 04:14:23 -0600 )edit