ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

Problem with AMCL (particles freeze)

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

CDonosoK gravatar image

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

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:

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

For more details this is my repo: https://github.com/CDonosoK/robocop_d...

Thanks!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

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

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

Comments

@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 -0500 )edit

Question Tools

1 follower

Stats

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

Seen: 444 times

Last updated: Oct 22 '22