0
$\begingroup$

Rosanswers logo

Hello

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 (https://www.osrfoundation.org/tom-moore-working-with-the-robot-localization-package/) 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


Originally posted by Stef_Boat on ROS Answers with karma: 71 on 2018-04-01

Post score: 2


Original comments

Comment by Akash Purandare on 2018-04-01:
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: https://answers.ros.org/question/236588/imu-and-gps-fusion-without-odom-robot_localization/

Comment by Stef_Boat on 2018-04-01:
Thanks! And what about the gmapping package, how can it be used to fuse with IMU data (and GPS data)?

Comment by Akash Purandare on 2018-04-03:
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.

Comment by Akash Purandare on 2018-04-03:
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.

Comment by Akash Purandare on 2018-04-03:
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.

Comment by Stef_Boat on 2018-04-05:
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.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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.


Originally posted by Gayan Brahmanage with karma: 929 on 2018-04-03

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by Akash Purandare on 2018-04-03:
How do we convert the data from Gmapping to an Odometry message?

Comment by Gayan Brahmanage on 2018-04-04:
Use Provided tf Transforms by Gmapping

Comment by Stef_Boat on 2018-04-05:
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?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.