2D SLAM combine pointcloud_to_laserscan and laser_scan_matcher and gmapping
hi,I am a newbie.I have used kinect to combine pointcloudtolaserscan and laserscanmatcher 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 laserscanmatcher 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->/baselink->/laser. I found that the /odom->/baselink publish rate was 1.953hz
Asked by David B on 2012-05-17 06:00:14 UTC
Comments
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).
Asked by kshitij on 2012-05-17 19:45:52 UTC