2D SLAM combine pointcloud_to_laserscan and laser_scan_matcher and gmapping [closed]
hi,I am a newbie.I have used kinect to combine pointcloud_to_laserscan and laser_scan_matcher and gmapping package,aimed to build a map. I didn't provide any wheel odometry.But I found that the generated map is poor.I think this may concern with the parameters both for laser_scan_matcher and gmapping.Because the input scan data is fake and not the real laser scan data.Need I pay any specific attention? Could anyone give me some suggestion and direction to improve the performance? thanks in advance!
here is one of my launch file
<launch>
<!-- kinect and frame ids -->
<include file="$(find openni_camera)/launch/openni_node.launch"/>
<!-- openni_manager -->
<node pkg="nodelet" type="nodelet" name="openni_manager" output="screen" respawn="true" args="manager"/>
<!-- throttling -->
<node pkg="nodelet" type="nodelet" name="pointcloud_throttle" args="load pointcloud_to_laserscan/CloudThrottle openni_manager">
<param name="max_rate" value="2"/>
<remap from="cloud_in" to="/camera/depth/points"/>
<remap from="cloud_out" to="cloud_throttled"/>
</node>
<!-- fake laser -->
<node pkg="nodelet" type="nodelet" name="kinect_laser" args="load pointcloud_to_laserscan/CloudToScan openni_manager">
<param name="output_frame_id" value="/laser"/>
<remap from="cloud" to="cloud_throttled"/>
</node>
</launch>
another launch file:
<launch>
<node pkg="tf" type="static_transform_publisher" name="base_link_to_laser"
args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /laser 40" />
<node pkg="rviz" type="rviz" name="rviz"
args="-d $(find laser_scan_matcher)/demo/demo_gmapping.vcg"/>
<node pkg="laser_scan_matcher" type="laser_scan_matcher_node"
name="laser_scan_matcher_node" output="screen">
<param name="fixed_frame" value = "odom"/>
<param name="use_alpha_beta" value="true"/>
<param name="max_iterations" value="20"/>
</node>
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
<!--remap from="scan" to="base_scan"/-->
<!--param name="odom_frame" value="odom"/-->
<param name="map_update_interval" value="2.0"/>
<param name="maxUrange" value="6.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="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.25"/> <!-- param name="linearUpdate" value="0.5"/-->
<param name="angularUpdate" value="0.262"/> <!--param name="angularUpdate" value="0.436"/-->
<param name="temporalUpdate" value="-1.0"/>
<param name="resampleThreshold" value="0.5"/>
<param name="particles" value="300"/>
<param name="xmin" value="-50.0"/>
<param name="ymin" value="-50.0"/>
<param name="xmax" value="50.0"/>
<param name="ymax" value="50.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>
</launch>
edit 1
tf tree
/map->/odom->/base_link->/laser. I found that the /odom->/base_link publish rate was 1.953hz
wait, how is the scan data fake when you're actually using the Kinect? The default parameters work fine with gmapping. Upload a pic of the map if you can. If you want to build a proper map, it's important that you provide tf specific to your robot and provide odom values (for base_link -> odom).