Bad results with Gmapping

asked 2018-10-02 09:01:51 -0500

lorenznew gravatar image

updated 2018-10-03 05:03:02 -0500

Hey everyone,

I've got some trouble with gmapping.

I'm Using a robot called "eddie" witch is quiet similar to the Turtlebot2e, a kinect is the only used Sensor in this case. I wrote some nodes to get the Navigation Stack running( such as an odometry_publisher...) For the SLAM i thought gmapping would be a good choice. I used the Parameters they use with the turtlebot, but i get really bad results.

At first i thought my odometry could be the poblem. But the Odometry is realy good, as you can see on this Map (made with sigma and lsigma = 0 -> gmapping just used odometry. the robot did 21m of distance to create that map, asswell as all in all a rotation of 47rad(7,5 revolutions)) image description

As soon as I change the sigma and lsigma back to a usefull value the resulst get as bad as this: (made with the turtlebot paramters) you can see the large jump in the top right corner. most of the time gmapping says something like: Scan Matching Failed, using odometry. Likelihood=-3889.53 lp:3.94415 2.44182 -0.742944

if it can match the scans, it often jumps as in this case: image description

I use a notebook with an i7 620M (1st generation). Things i've tried:

-Recording bag file and play it with 10% speed ( to be sure, the notebook has enough power for gmapping)

  • incresing particles and anglarUpdate

  • many many parameters changed, always worse than befor!

Has anyone an idea why that happens? Thank you all so much!

Turtlebo Parameter:

  <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
    <param name="base_frame" value="$(arg base_frame)"/>
    <param name="odom_frame" value="$(arg odom_frame)"/>
    <param name="map_update_interval" value="5.0"/>
    <param name="maxUrange" value="6.0"/>
    <param name="maxRange" value="8.0"/>
    <param name="sigma" value="0.05"/>
    <param name="kernelSize" value="1"/>
    <param name="lstep" value="0.05"/>
    <param name="astep" value="0.05"/>
    <param name="iterations" value="5"/>
    <param name="lsigma" value="0.075"/>
    <param name="ogain" value="3.0"/>
    <param name="lskip" value="0"/>
    <param name="minimumScore" value="200"/>
    <param name="srr" value="0.01"/>
    <param name="srt" value="0.02"/>
    <param name="str" value="0.01"/>
    <param name="stt" value="0.02"/>
    <param name="linearUpdate" value="0.5"/>
    <param name="angularUpdate" value="0.436"/>
    <param name="temporalUpdate" value="-1.0"/>
    <param name="resampleThreshold" value="0.5"/>
    <param name="particles" value="80"/>
  <!--
    <param name="xmin" value="-50.0"/>
    <param name="ymin" value="-50.0"/>
    <param name="xmax" value="50.0"/>
    <param name="ymax" value="50.0"/>
  make the starting size small for the benefit of the Android client's memory...
  -->
    <param name="xmin" value="-1.0"/>
    <param name="ymin" value="-1.0"/>
    <param name="xmax" value="1.0"/>
    <param name="ymax" value="1.0"/>

    <param name="delta" value="0.05"/>
    <param name="llsamplerange" value="0.01"/>
    <param name="llsamplestep" value="0.01"/>
    <param name="lasamplerange" value="0.005"/>
    <param name="lasamplestep" value="0.005"/>
    <remap from="scan" to="$(arg scan_topic ...
(more)
edit retag flag offensive close merge delete