ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

Problem with AMCL (particles freeze)

asked 2022-10-20 17:51:37 -0600

CDonosoK gravatar image

updated 2022-10-22 07:46:39 -0600

miura gravatar image

Hi everyone

I am trying to use the AMCL algorithm to locate the robot, however when I display the amcl particles in RVIZ, they are fixed around the robot.

Do you know what it could be?

This is my AMCL.launch:

  <arg name="scan_topic"     default="scan"/>
  <arg name="initial_pose_x" default="-0.90"/>
  <arg name="initial_pose_y" default="2.9"/>
  <arg name="initial_pose_a" default="3.14"/>

  <!-- AMCL -->
  <node pkg="amcl" type="amcl" name="amcl">

    <param name="initial_pose_x" value="$(arg initial_pose_x)"/>
    <param name="initial_pose_y" value="$(arg initial_pose_y)"/>
    <param name="initial_pose_a" value="$(arg initial_pose_a)"/>

    <param name="min_particles"             value="500"/>
    <param name="max_particles"             value="3000"/>
    <param name="kld_err"                   value="0.02"/>
    <param name="update_min_d"              value="0.20"/>
    <param name="update_min_a"              value="0.20"/>
    <param name="resample_interval"         value="1"/>
    <param name="transform_tolerance"       value="0.5"/>
    <param name="recovery_alpha_slow"       value="0.00"/>
    <param name="recovery_alpha_fast"       value="0.00"/>

    <param name="gui_publish_rate"          value="50.0"/>

    <remap from="scan"                      to="$(arg scan_topic)"/>
    <param name="laser_max_range"           value="8"/>
    <param name="laser_min_range"           value="0.3"/>
    <param name="laser_max_beams"           value="180"/>
    <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_likelihood_max_dist" value="2.0"/>
    <param name="laser_model_type"          value="likelihood_field"/>

    <param name="odom_model_type"           value="diff"/>
    <param name="odom_alpha1"               value="0.1"/>
    <param name="odom_alpha2"               value="0.1"/>
    <param name="odom_alpha3"               value="0.1"/>
    <param name="odom_alpha4"               value="0.1"/>
    <param name="odom_frame_id"             value="odom"/>
    <param name="base_frame_id"             value="base_link"/>

For more details this is my repo:


edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2022-10-22 07:52:15 -0600

miura gravatar image

If self-positioning is correct, particles will converge around the robot. The self-position may be accurate.

If the issue is that the particles are not updating, it may be that the robot is not moving.

Also, if you move the robot and it is not updating, you may be missing inputs to AMCL, e.g., scan, tf, etc.

edit flag offensive delete link more


@CDonosoK to give the best results, AMCL wants "new" laser scans, so by default your robot has to move a minimum distance before the AMCL particle filter will do its next update cycle. The move distance is controlled by the update_min_d and update_min_a config parameters which are described on the AMCL wiki page.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2022-10-22 09:43:03 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2022-10-20 17:51:37 -0600

Seen: 39 times

Last updated: Oct 22 '22