LaserScan not matching when moving with map using amcl
I want to do a localization only using a 2d Lidar (SICK NAV310). So, i'm using amcl package along with rf2o_laser_odometry or this repo. All going well except when i try to visualize it on Rviz it shows this problem when i'm moving the lidar. Here's my edited amcl_diff.launch file:
<launch> <node pkg="map_server" type="map_server" name="map_server" args="/home/hilmi/catkin/data/maps/lab_ica_1.yaml" /> <!-- <node pkg="tf" type="static_transform_publisher" name="map_to_odom_broadcaster" args="0 0 0 0 0 0 /map /odom 100" /> --> <node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 base_link laser 100" /> <!-- <node pkg="tf" type="static_transform_publisher" name="odom_base_link_broadcaster" args="0 0 0 0 0 0 /odom /base_link 100" /> --> <node pkg="rf2o_laser_odometry" type="rf2o_laser_odometry_node" name="rf2o_laser_odometry" output="screen"> <param name="laser_scan_topic" value="/sick_nav_3xx/scan" /> <param name="odom_topic" value="/odom_rf2o" /> <param name="publish_tf" value="true" /> <param name="base_frame_id" value="base_link" /> <param name="odom_frame_id" value="odom" /> <param name="init_pose_from_topic" value="" /> <param name="freq" value="8.0"/> <param name="verbose" value="true" /> <!-- <param name="fixed_frame" value = "map"/>/ --> <!-- <param name="publish_odom" value="true"/> --> </node> <node pkg="amcl" type="amcl" name="amcl" output="screen"> <!-- <param name="global_frame_id" value="map"/> <param name="fixed_frame" value="map"/> --> <param name="use_map_topic " value="true"/> <param name="odom_frame_id" value="odom" /> <param name="base_frame_id" value="base_link" /> <param name="frame_id" value="laser" /> <param name="tf_broadcast" value="true"/> <!-- Publish scans from best pose at a max of 10 Hz --> <param name="odom_model_type" value="diff-corrected"/> <param name="odom_alpha5" value="0.1"/> <param name="gui_publish_rate" value="10.0"/> <param name="laser_max_beams" value="30"/> <param name="min_particles" value="500"/> <param name="max_particles" value="5000"/> <param name="kld_err" value="0.05"/> <param name="kld_z" value="0.99"/> <param name="odom_alpha1" value="0.2"/> <param name="odom_alpha2" value="0.2"/> <!-- translation std dev, m --> <param name="odom_alpha3" value="0.8"/> <param name="odom_alpha4" value="0.2"/> <param name="laser_z_hit" value="0.5"/> <param name="laser_z_short" value="0.05"/> <param name="laser_z_max" value="0.05"/> <param name="laser_z_rand" value="0.5"/> <param name="laser_sigma_hit" value="0.2"/> <param name="laser_lambda_short" value="0.1"/> <param name="laser_model_type" value="likelihood_field"/> <!-- <param name="laser_model_type" value="beam"/> --> <param name="laser_likelihood_max_dist" value="2.0"/> <param name="update_min_d" value="0.2"/> <param name="update_min_a" value="0.5"/> <param name="odom_frame_id" value="odom"/> <param name="resample_interval" value="1"/> <param name="transform_tolerance" value="0.1"/> <param name="recovery_alpha_slow" value="0.0"/> <param name="recovery_alpha_fast" value="0.0"/> <remap from="scan" to="/sick_nav_3xx/scan" /> </node> </launch>
and here is my tf tree and tf node graph.