Improve map created by Gmapping [closed]

asked 2019-04-12 12:34:10 -0600

tsdk00 gravatar image

Hi All,

I implemented Gmapping algorithm for a featureless tunnel/pipe environment. Since LiDar/camera are not that effective in these environments, stable odometry is the prime data that can be used in such situations. I read there are many parameters in gmapping.launch.xml file that can be tuned to get the desired results. I even tried to tune the number of particles and map_update_interval and it really changed a lot. But there are many other parameters like minimumScore, linearUpdate, srr, srt...etc which might affect the map as well. But I'm not sure how to tune these for my application since there can be many possibilities. Can someone help me in this regard?

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by tsdk00
close date 2019-04-26 05:18:51.687998



Hey @tsdk00, you need to increase the trust to odometry information for your case. To achieve this, the main parameter in gmapping is minimumscore parameter. It is equal to zero by default. You can try to increase it to 100 or more depending on your application. By doing these, you can eliminate scan-matching process of gmapping and heavily depend on odometry rather than laser data.

For more information, I strongly recommend you to read gmapping parameters section carefully. gmapping

samialperen gravatar image samialperen  ( 2019-04-23 06:35:07 -0600 )edit

@samialperen Thanx for your reply. Yeah, that's true. But is it possible to switch the weights like from odometry to the lidar when there is a T-junction or L-junction since it will be a feature for the lidar which can behave well in that case? Moreover, which parameter should actually be tuned for a loop closure in G-mapping since due to odometry error the loop closure result is not good.

tsdk00 gravatar image tsdk00  ( 2019-04-23 06:40:15 -0600 )edit

@tsdk00 For your first question, as far as I know there is no implemented way to change odometry and Laser scan weights online. However, if it is really necessary, you can write another node which uses some rosservices to achieve this. Basically, in your new node. you will decide which source you want to use, then you will call gmapping with corresponding parameter. These switches can be done using rosservices. For more information, please check the rosservices tutorial. Secondly, wall closure is a common issue seen in gmapping. To solve this, you can try to decrease linearUpdate and angularUpdate parameters. To get further information, please see this paper. If this solves your problem, don't forget to mark this comment as answer. Thanks!

samialperen gravatar image samialperen  ( 2019-04-24 04:56:29 -0600 )edit

Indeed!! Even Number of particles make a great difference along with minimumScore. So, it has to be tuned properly. Thanks alot.

tsdk00 gravatar image tsdk00  ( 2019-04-26 05:18:21 -0600 )edit