AMCL

Source code on Github.

AMCL implements the server for taking a static map and localizing the robot within it using an Adaptive Monte-Carlo Localizer.

Parameters

alpha1:

Type

Default

double

0.2

Description

Expected process noise in odometry’s rotation estimate from rotation.

alpha2:

Type

Default

double

0.2

Description

Expected process noise in odometry’s rotation estimate from translation.

alpha3:

Type

Default

double

0.2

Description

Expected process noise in odometry’s translation estimate from translation.

alpha4:

Type

Default

double

0.2

Description

Expected process noise in odometry’s translation estimate from rotation.

alpha5:

Type

Default

double

0.2

Description

For Omni models only: translation noise.

base_frame_id:

Type

Default

string

“base_footprint”

Description

Robot base frame.

beam_skip_distance:

Type

Default

double

0.5

Description

Ignore beams that most particles disagree with in Likelihood field model. Maximum distance to consider skipping for (m).

beam_skip_error_threshold:

Type

Default

double

0.9

Description

Percentage of beams after not matching map to force full update due to bad convergence.

beam_skip_threshold:

Type

Default

double

0.3

Description

Percentage of beams required to skip.

do_beamskip:

Type

Default

bool

False

Description

Whether to do beam skipping in Likelihood field model.

global_frame_id:

Type

Default

string

“map”

Description

The name of the coordinate frame published by the localization system.

lambda_short:

Type

Default

double

0.1

Description

Exponential decay parameter for z_short part of model.

laser_likelihood_max_dist:

Type

Default

double

2.0

Description

Maximum distance to do obstacle inflation on map, for use in likelihood_field model.

laser_max_range:

Type

Default

double

100.0

Description

Maximum scan range to be considered, -1.0 will cause the laser’s reported maximum range to be used.

laser_min_range:

Type

Default

double

-1.0

Description

Minimum scan range to be considered, -1.0 will cause the laser’s reported minimum range to be used.

laser_model_type:

Type

Default

string

“likelihood_field”

Description

Which model to use, either beam, likelihood_field, or likelihood_field_prob. Same as likelihood_field but incorporates the beamskip feature, if enabled.

set_initial_pose:

Type

Default

bool

False

Description

Causes AMCL to set initial pose from the initial_pose* parameters instead of waiting for the initial_pose message.

initial_pose:

Type

Default

Pose2D

{x: 0.0, y: 0.0, z: 0.0, yaw: 0.0}

Description

X, Y, Z, and yaw coordinates of initial pose (meters and radians) of robot base frame in global frame.

max_beams:

Type

Default

int

60

Description

How many evenly-spaced beams in each scan to be used when updating the filter.

max_particles:

Type

Default

int

2000

Description

Maximum allowed number of particles.

min_particles:

Type

Default

int

500

Description

Minimum allowed number of particles.

odom_frame_id:

Type

Default

string

“odom”

Description

Which frame to use for odometry.

pf_err:

Type

Default

double

0.05

Description

Particle Filter population error.

pf_z:

Type

Default

double

0.99

Description

Particle filter population density. 2.33 is the 99% percentile.

recovery_alpha_fast:

Type

Default

double

0.0

Description

Exponential decay rate for the fast average weight filter, used in deciding when to recover by adding random poses. A good value might be 0.1.

recovery_alpha_slow:

Type

Default

double

0.0

Description

Exponential decay rate for the slow average weight filter, used in deciding when to recover by adding random poses. A good value might be 0.001.

resample_interval:

Type

Default

int

1

Description

Number of filter updates required before resampling.

robot_model_type:

Type

Default

string

“nav2_amcl::DifferentialMotionModel”

Description

The fully-qualified type of the plugin class. Options are “nav2_amcl::DifferentialMotionModel” and “nav2_amcl::OmniMotionModel”. Users can also provide their own custom motion model plugin type.

Note for users of galactic and earlier

The models are selectable by string key (valid options: “differential”, “omnidirectional”) rather than plugins.

save_pose_rate:

Type

Default

double

0.5

Description

Maximum rate (Hz) at which to store the last estimated pose and covariance to the parameter server, in the variables ~initial_pose_* and ~initial_cov_*. This saved pose will be used on subsequent runs to initialize the filter (-1.0 to disable).

sigma_hit:

Type

Default

double

0.2

Description

Standard deviation for Gaussian model used in z_hit part of the model.

tf_broadcast:

Type

Default

bool

True

Description

Set this to false to prevent amcl from publishing the transform between the global frame and the odometry frame.

transform_tolerance:

Type

Default

double

1.0

Description

Time with which to post-date the transform that is published, to indicate that this transform is valid into the future.

update_min_a:

Type

Default

double

0.2

Description

Rotational movement required before performing a filter update.

update_min_d:

Type

Default

double

0.25

Description

Translational movement required before performing a filter update.

z_hit:

Type

Default

double

0.5

Description

Mixture weight for z_hit part of model, sum of all used z weight must be 1. Beam uses all 4, likelihood model uses z_hit and z_rand..

z_max:

Type

Default

double

0.05

Description

Mixture weight for z_max part of model, sum of all used z weight must be 1. Beam uses all 4, likelihood model uses z_hit and z_rand.

z_rand:

Type

Default

double

0.5

Description

Mixture weight for z_rand part of model, sum of all used z weight must be 1. Beam uses all 4, likelihood model uses z_hit and z_rand..

z_short:

Type

Default

double

0.005

Description

Mixture weight for z_short part of model, sum of all used z weight must be 1. Beam uses all 4, likelihood model uses z_hit and z_rand.

always_reset_initial_pose:

Type

Default

bool

False

Description

Requires that AMCL is provided an initial pose either via topic or initial_pose* parameter (with parameter set_initial_pose: true) when reset. Otherwise, by default AMCL will use the last known pose to initialize.

scan_topic:

Type

Default

string

scan

Description

Laser scan topic to subscribe to.

map_topic:

Type

Default

string

map

Description

Map topic to subscribe to.

first_map_only:

Type

Default

bool

False

Description

Allows AMCL to accept maps more than once on the map_topic. This is especially useful when you’re using the LoadMap service in map_server. Prior to Humble, this is first_map_only_.

bond_heartbeat_period:

Type

Default

double

0.1

Description

The lifecycle node bond mechanism publishing period (on the /bond topic). Disabled if inferior or equal to 0.0.

Example

amcl:
  ros__parameters:
    alpha1: 0.2
    alpha2: 0.2
    alpha3: 0.2
    alpha4: 0.2
    alpha5: 0.2
    base_frame_id: "base_footprint"
    beam_skip_distance: 0.5
    beam_skip_error_threshold: 0.9
    beam_skip_threshold: 0.3
    do_beamskip: false
    global_frame_id: "map"
    lambda_short: 0.1
    laser_likelihood_max_dist: 2.0
    laser_max_range: 100.0
    laser_min_range: -1.0
    laser_model_type: "likelihood_field"
    max_beams: 60
    max_particles: 2000
    min_particles: 500
    odom_frame_id: "odom"
    pf_err: 0.05
    pf_z: 0.99
    recovery_alpha_fast: 0.0
    recovery_alpha_slow: 0.0
    resample_interval: 1
    robot_model_type: "nav2_amcl::DifferentialMotionModel"
    save_pose_rate: 0.5
    sigma_hit: 0.2
    tf_broadcast: true
    transform_tolerance: 1.0
    update_min_a: 0.2
    update_min_d: 0.25
    z_hit: 0.5
    z_max: 0.05
    z_rand: 0.5
    z_short: 0.05
    scan_topic: scan
    map_topic: map
    set_initial_pose: false
    always_reset_initial_pose: false
    first_map_only: false
    initial_pose:
      x: 0.0
      y: 0.0
      z: 0.0
      yaw: 0.0