Hi all,
I do have a problem with my localization! I use gmapping to build a map and to determine the robots position. Apparently my map (base_frame: /map) and my costmap (base_frame: /odom) do not correlate. Unforeseeable jumps appear. As soon as new space is explored, the map is not really extended, but the robot is shifted to the opposite direction. After a while, the robots position is redetermined and the costmap is shifted back to its "real" position. This seems to be weird and mess up my map. Additionally my robots position is also not correct which is a problem for further processing!
as you see in the screenshot ... mapping works fine and also the costmap was right. Then the robot rotates and as soon as new space (beneath the robot) is explored, the costmap makes a jump to the top!! Instead of expanding the underlying map, the costmap is shifted and the robots position is wrongly determined!! The real Position is close to the "/map" tf (same offset as robot to "/odom" tf).
Here is my tf tree:
Accuracy of my odom data seem to bee right ...
Here is a link to a video showing the problem. Hopefully this helps to understand the problem which appears. It can be seen that no /odom /map problems appear as long as the robot moves to the front or backwards, but immediately when it starts to rotate, the mapping gets screwed up and "/map" and "/odom" differ.
https://www.dropbox.com/s/v4y6i7s5l0jhy7r/mapping.mpeg
Here is my gmapping.launch file:
<param name="xmin" value="-5.0"/>
<param name="ymin" value="-5.0"/>
<param name="xmax" value="5.0"/>
<param name="ymax" value="5.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"/>
</node>
FYI, I do not face processing problems due to high update rates. I just want the map to be updated continuously. CPU load is at 60% when running all nodes.
Has anyone experienced some similar problems?
BR Daniel
Originally posted by dneuhold on ROS Answers with karma: 205 on 2014-01-09
Post score: 1
Original comments
Comment by Ben_S on 2014-01-09:
Is your laser scanner mounted in a somewhat unusual position? (Like facing backwards, seen from positive x of your base_link) What are your transforms from base_link to laser? Would it be possible to post your launch file(s) and maybe a small bag recording?
Comment by dneuhold on 2014-01-10:
Thanks for your hint, but the laser scanner is mounted correctly. Which launch file do you mean ... if it is an tf issue, I did not change anything there.
The more I turn the robot the more "/map" and "/odom" differ.
Comment by Stefan Kohlbrecher on 2014-01-10:
Some difference between "map" and "odom" is expected (this is what SLAM approaches are supposed to correct). If there is a large discrepancy, this could mean that SLAM/localization is failing, or odometry is bad (or not well calibrated). Have you checked the accuracy of the odometry you´re getting?
Comment by dneuhold on 2014-01-10:
Thanks Stefan for you tip. Do you know another way how to get the accuracy of the odom data instead of having a look at the /odom topic (as I did in the picture above?).
I do also think that my SLAM/localization is failing ... but I do not have any approach how to mitigate this.
Comment by Stefan Kohlbrecher on 2014-01-10:
Have a look at this question and related answers: http://answers.ros.org/question/9480/is-there-a-good-way-to-verify-my-odometry-data-is-sensible/#808
Comment by dneuhold on 2014-01-12:
Well it seems that my accuracy is quite ok. But even if there is a larger discrepancy, how to reconfigure the gyro on an turtlebot with kobuki base?
So my suggestion is also that SLAM/ localization fails. Do you have any ideas how to configure it better?
Comment by Ben_S on 2014-01-14:
Thanks for the additional informations. Would it be possible to post a similar video while having the fixed frame set to /odom?