Ask Your Question

Gmapping and robot_localization

asked 2018-04-01 04:35:37 -0600

Stef_Boat gravatar image


We are using the robot_localization package to provide a state estimate by fusing IMU-data in 1 ekf_localization_node. We want to use gmapping for slam but we don't exactly know how to configure this in combination with the robot_localization package. In the presentation from Tom Moore on roscon, he told that the output data from gmapping can be fused with IMU-data in a second ekf_localization_node ( ) but this is the part that I don't get.

What I was thinking is that the output from the first ekf_localization_node (Odometry message) can be used as input for the gmapping package, so that there is only 1 ekf_localization_node. If it is possible to fuse IMU-data with data from gmapping, how is it exactly done?

Extra: We also have GPS available, is it recommended to fuse this with gmapping because it was more like an OR story(or navsad, or amcl or gmapping) told in the presentation?

Kind regards, Stef

edit retag flag offensive close merge delete


GPS could be used very efficiently to reduce the drift error of the IMU. It is usually recommended to use it as the IMU is good for short time reference due to drift. Follow this thread:

Akash Purandare gravatar image Akash Purandare  ( 2018-04-01 13:36:58 -0600 )edit

Thanks! And what about the gmapping package, how can it be used to fuse with IMU data (and GPS data)?

Stef_Boat gravatar image Stef_Boat  ( 2018-04-01 14:14:13 -0600 )edit

Do you want to save the map onto your map_saver package or is it just localization that you want using the Gmapping package? If you desperately need Gmapping, you need to probably write a node to convert the transform generated by GMapping to an odometry message and them give it as input of ekf.

Akash Purandare gravatar image Akash Purandare  ( 2018-04-03 04:06:40 -0600 )edit

However, if you do not want to do SLAM, you could look at AMCL, which also does localization, and gives you Pose, which can be converted to Odometry message and fed to the localization node. However, you will need to do two different localizations, which doesn't seem so good.

Akash Purandare gravatar image Akash Purandare  ( 2018-04-03 04:08:17 -0600 )edit

It is better to just let the both localizations be different, as they will do the job necessary. It isn't quite productive to fuse one localization with another.

Akash Purandare gravatar image Akash Purandare  ( 2018-04-03 04:09:12 -0600 )edit

Yes, I want to save the map to use it later for navigating in it (slam). It doen't have to be the gmapping package but this seems to me the most appropriate.

Stef_Boat gravatar image Stef_Boat  ( 2018-04-05 04:04:24 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2018-04-03 12:04:39 -0600

Gayan Brahmanage gravatar image

For Gmapping, you need to have odometry and laser messages. You can fuse any position sensor or information with Gmapping. But if you use a sensor/s, you have to calculate the position of the sensor/s using an odometry model. Then publish it as odometry. Make sure you have a correct tf tree.

edit flag offensive delete link more



How do we convert the data from Gmapping to an Odometry message?

Akash Purandare gravatar image Akash Purandare  ( 2018-04-03 13:23:08 -0600 )edit

Use Provided tf Transforms by Gmapping

Gayan Brahmanage gravatar image Gayan Brahmanage  ( 2018-04-04 11:49:24 -0600 )edit

So you have to write a tf listener to get the transform between odom and map frame and this node must publish an odometry message?

Stef_Boat gravatar image Stef_Boat  ( 2018-04-05 04:01:28 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2018-04-01 04:35:37 -0600

Seen: 678 times

Last updated: Apr 03 '18