LaserScan not matching when moving with map using amcl

asked 2023-03-10 03:20:01 -0500

hilmi_ica gravatar image

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.

edit retag flag offensive close merge delete