Robot jumps after the initial estimate with gmapping
I have a gmapping SLAM method coupled with robot_localization to provide the map-odom, odom-base_footprint transformation respectively (ROS1).
When I power up the system, the generated map is quite accurate, however, after around 10s and without moving the robot, the robot suddenly jumps to another place, destroying the map.
Before:
After:
Does anyone know where this jump comes from?
Thank you in advance.
gmapping config file:
<launch>
<arg name="scan_topic" default="scan"/> <!--scan_filtered-->
<arg name="namespace" default="spraybase"/>
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
<param name="odom_frame" value="$(arg namespace)/odom"/>
<param name="base_frame" value="$(arg namespace)/base_footprint"/>
<param name="map_frame" value="$(arg namespace)/map"/>
<!-- Process 1 out of every this many scans (set it to a higher number to skip more scans) -->
<param name="throttle_scans" value="1"/>
<param name="map_update_interval" value="0.1"/> <!-- default: 5.0 -->
<!-- The maximum usable range of the laser. A beam is cropped to this value. -->
<param name="maxUrange" value="10.0"/>
<!-- The maximum range of the sensor. If regions with no obstacles within the range of the sensor should appear as free space in the map, set maxUrange < maximum range of the real sensor <= maxRange -->
<param name="maxRange" value="10.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="minimumScore" value="150.0"/>
<!-- Number of beams to skip in each scan. -->
<param name="lskip" value="0"/>
<param name="srr" value="0.01"/>
<param name="srt" value="0.02"/>
<param name="str" value="0.01"/>
<param name="stt" value="0.02"/>
<!-- Process a scan each time the robot translates this far -->
<param name="linearUpdate" value="0.1"/>
<!-- Process a scan each time the robot rotates this far -->
<param name="angularUpdate" value="0.05"/>
<param name="temporalUpdate" value="-1.0"/>
<param name="resampleThreshold" value="0.5"/>
<!-- Number of particles in the filter. default 30 -->
<param name="particles" value="20"/>
<!-- Initial map size -->
<param name="xmin" value="-10.0"/>
<param name="ymin" value="-10.0"/>
<param name="xmax" value="10.0"/>
<param name="ymax" value="10.0"/>
<!-- Processing parameters (resolution of the map) -->
<param name="delta" value="0.1"/>
<!-- <param name="minimumScore" value="500"/>
<param name="occ_thresh" value="0.5"/> -->
<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 namespace)/$(arg scan_topic)"/> -->
<!-- <param name="base_footprint_frame" value="base_footprint"/> -->
<!-- <remap from="odom ...
What computer are you running gmapping on? Do you have a network setup or are all the scripts run on single computer?
I am running them on an OnLogic i5 8th gen PC (https://www.onlogic.com/de-de/ml100g-...)
I run all the scripts on a single computer. I only use my laptop (i5, 8ram) to visualize rviz and access the OnLogic's terminal, by using the "ssh -X ..." command
What is your odometry source?
Indeed the mistake was hiding in the odometry source. Thanks for your guidance. I will post it as an answer ;)
Glad I could help :)