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

Revision history [back]

click to hide/show revision 1
initial version

I took a look at your bag and launch files. It is true that the navsat_transform node is not publishing any messages to /odometry/gps, even though it is getting input data. One possible cause is the error in your task tree that is being reported: the transform from imu0 to base_link is unknown. You should try adding a static transform publisher to provide the location of your imu relative to the centre of the robot.

I took a look at your bag and launch files. It is true that the navsat_transform node is not publishing any messages to /odometry/gps, even though it is getting input data. One possible cause is the error in your task tree that is being reported: the transform from imu0 to base_link is unknown. You should try adding have a static transform publisherstatic_transform_publisher for this in your launch file on line 10, but you have the frames around the wrong way, which means that it is saying that base_link to provide is a child of imu0. Swap the location of your imu relative to the centre of the robot.frames on this line.

I took a look at your bag and launch files. It is true that the navsat_transform node is not publishing any messages to /odometry/gps, even though it is getting input data. One possible cause is the error in your task tree that is being reported: the transform from imu0 to base_link is unknown. You have a static_transform_publisher for this in your launch file on line 10, but you have the frames around the wrong way, which means that it is saying that base_link is a child of imu0. Swap the frames on this line.

To fix the problem with nmea_navsat_driver prefixing its task frame with a slash, you need to use a version of the driver with the change specified in this pull request applied.

Until that change is applied you will need to patch the driver yourself, which requires adding a local copy of it to your workspace to override the version installed with ROS.

In your workspace's src directory, clone a copy of the driver's source:

git clone https://github.com/ros-drivers/nmea_navsat_driver.git

Here is the patch that will stop it adding the slash. Save that file as no_to_slashes.patch, go to <your workspace>/src/nmea_navsat_driver, and then run the following command (modifying the path to no_to_slashes.patch as necessary):

patch -p1 < no_to_slashes.patch

(The -p1 strips the first directory from the paths specified in the path file, in this case a/ and b/; without this the patch command won't be able to find the file to modify.)

Then you should be able to compile your workspace and when you use the nmea_navsat_driver it will use your local, patched copy.

Once that pull request goes through, you will not need your modified version of the driver any more. But until a release is made of the fixed version you will still need to keep a copy of the driver source (cloned from Github without modifications) in your workspace so that the fixed version overrides the broken version installed using apt.