2D SLAM combine pointcloud_to_laserscan and laser_scan_matcher and gmapping [closed]

asked 2012-05-17 06:00:14 -0500

David B gravatar image

updated 2016-10-24 08:34:01 -0500

ngrennan gravatar image

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

  <!-- 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"/>

  <!-- 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"/>

another launch file:

<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 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"/>


edit 1

tf tree

/map->/odom->/base_link->/laser. I found that the /odom->/base_link publish rate was 1.953hz

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by tfoote
close date 2015-03-03 01:42:09.577696


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).

kshitij gravatar imagekshitij ( 2012-05-17 19:45:52 -0500 )edit