robot_localization imu only not publishing odometry/filtered

asked 2020-02-03 02:51:38 -0600

martinaugusta96 gravatar image

So I'm using Dr Robot's Jaguar 4x4 robot on Ubuntu 16.04 and Ros Kinetic. I want to use the robot for autonomous navigation. I'm currently using robot_localization package of ROS for localization. But I've encountered into a problem. The robot only publishes IMU data so I'm using that ekf_localization_node using only imu to give odometry/filtered but it's not working. I have gps data and I want to use navsat_transform with the robot to work path planners. Both the gps and imu data are in REP-103 and REP-105 format.

I'm not getting any messages from either odometry/filtered and odometry/gps. Any help would be greatly appreciated for this. I have tried going through the documentation and couldn't find anything else. I want to just use my IMU and GPS for localization.

Here's my file ekf.yaml for the ekf parameters

frequency: 50
sensor_timeout: 0.1
two_d_mode: true
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
debug: false

map_frame: map
base_link_frame: base_link

imu0: /imu
imu0_config: [false, false, false,
              false,  false,  true,
              false, false, false,
              false,  false,  false]
imu0_nodelay: false
imu0_differential: false
imu0_relative: false
imu0_queue_size: 10
use_control: false

And here's my nav.yaml for navsat parameters:

frequency: 50
delay: 0
zero_altitude: 0
publish_filtered_gps: true
broadcast_utm_transform: true
imu0: /imu
odom0: /odometry/filtered
gps0: /gpu

Any help in it would be greatly appreciated.

edit retag flag offensive close merge delete



I would suggest to look at some example projects that use robot_localization like jackal for example. Also read the documentation of robot_localization.

if you configure an imu0 in your config it expects a sensor_msgs/Imu type topic as input. I doubt that imu0: /imu in your config points to the right topic, it would more likely be something like imu0: /imu/data . Same for the gps0, which expects sensor_msgs/NavSatFix and would usually be something like gps0: /imu/fix.

Also there is no apparent good reason to have these two sensor configs in separate files.

If you want more help add the output of rosnode list, rosnode info ekf_localization and rostopic list while everything is launched to the question. Also add rosnode info from the node that is publishing your imu data and gps.

Reamees gravatar image Reamees  ( 2020-02-03 05:37:08 -0600 )edit

Hey I wrote all of the messages from the robot as it didn't follow standard REP conventions. So it points to the right topic . I'm enclosing the output of rosnode and rostopic in a text file.


martinaugusta96 gravatar image martinaugusta96  ( 2020-02-10 01:35:50 -0600 )edit

It is better to update the question with the relevant info, not post a link to some text file that might or might not be there in the future.

As to why your setup is not working, According to the file you posted, your navsat_transform_node is not subscribed to your sensor topics. Which might be causing issues with the ekf.

Read this question and answer and read the documentation of robot_localization.

In general look at what your relevant nodes are subscribed to and check whether the data published on those topics is what you expect it to be.

Reamees gravatar image Reamees  ( 2020-02-19 08:32:37 -0600 )edit