ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Hi Mike,

I believe I've solved your problem. The short answer is that I believe your navsat_transform_node configuration was listening to the wrong ekf_localization_node output. You want it to listen to whatever the output of your map instance of ekf_localization_node is.

WHAT I DID

  1. Rather than trying to debug your parameters, I decided to start from the ground up and let you use my settings.
  2. I filtered your bag file down to the just the topics I needed: /jackal_velocity_controller/odom, /navsat/fix, and /imu/data.
  3. I then threw together a launch file from scratch for both instances of ekf_localization_node and the single instance of navsat_transform_node.
  4. I uploaded the filtered bag file and launch file here so that you can verify my results. You'll have to change the absolute path to the bag file that I have in the launch file.

RESULTS

  • My launch file works fine for me. You still see some GPS drift at the start, but it doesn't run away as it did in your bag file. In this image, red is the output of the local (odom) instance of ekf_localization_node, and blue is the output of the global (map) instance. Note that whenever both topics are drawn at the same time, they are right on top of one another (this is harder to see when the robot is still, as rviz doesn't draw the changes to the odom-frame output). This means the transform from map->odom is correct.

    image description

  • I wanted to reproduce your issue based on my best guess as to the problem, so I changed the odometry input into navsat_transform_node to the output of the local (odom) instance of ekf_localization_node instead of the global (map) instance. I was able to successfully reproduce the issue:

    image description

CONCLUSION

  • Change your settings so that navsat_transform_node is listening to the odometry output of your map instance of ekf_localization_node.
  • One note: I'm not sure where your IMU reports zero heading, so I put in a yaw_offset value of 1.570796327 in navsat_transform_node. If your IMU reports data in ENU (with 0 facing east), then you can set that back to 0. I also added the magnetic declination for your location.