ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
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
/jackal_velocity_controller/odom
, /navsat/fix
, and /imu/data
. ekf_localization_node
and the single instance of navsat_transform_node
. 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.
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:
CONCLUSION
navsat_transform_node
is listening to the odometry output of your map instance of ekf_localization_node
.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.