Skip to content
alexbeh.me
Log in

Tuning logAMCL stack

2026-09-11-v1

In force on

AMCL Before Tuning

Parameters

58

across 1 nodes

Annotated

2

carry a trailing comment

Changes

4

against 2026-09-01-v1

File

6.4 KB

135 lines · e058e82f76fe

What changed

2026-09-01-v12026-09-11-v1

~4 changed

  • added— not in the earlier version
  • removed— gone, or commented out
  • changed— the value moved
  • annotated— same value, different comment

amcl

StatusParameterBeforeAfter
changedbase_frame_idbase_footprintbase_link
changedset_initial_posetruefalse
changedsigma_hit0.20.05# 0.2
changedtransform_tolerance1.00.5# 1.0

The file

Exactly as uploaded.

Download

parameters.yaml

135 lines · 6.4 KB · e058e82f76fe

amcl:
  ros__parameters:
    # Odometry motion model type.
    robot_model_type: hmc_amcl::DifferentialMotionModel
    # Expected process noise in odometry’s rotation estimate from rotation.
    alpha1: 0.05
    # Expected process noise in odometry’s rotation estimate from translation.
    alpha2: 0.05
    # Expected process noise in odometry’s translation estimate from translation.
    alpha3: 0.1
    # Expected process noise in odometry’s translation estimate from rotation.
    alpha4: 0.1
    # Expected process noise in odometry's strafe estimate from translation.
    alpha5: 0.1
    # The name of the coordinate frame published by the localization system.
    global_frame_id: map
    # The name of the coordinate frame published by the odometry system.
    odom_frame_id: odom
    # The name of the coordinate frame of the robot base.
    base_frame_id: base_link
    # The name of the topic where the map is published by the map server.
    map_topic: map_nav
    # The name of the topic where scans are being published.
    scan_topic: /scan
    # The name of the topic where an initial pose can be published.
    # The particle filter will be reset using the provided pose with covariance.
    initial_pose_topic: initialpose
    # Maximum number of particles that will be used.
    max_particles: 5000
    # Minimum number of particles that will be used.
    min_particles: 1000
    # Error allowed by KLD criteria.
    pf_err: 0.05
    # KLD criteria parameter.
    # Upper standard normal quantile for the probability that the error in the
    # estimated distribution is less than pf_err.
    pf_z: 0.99
    # Fast exponential filter constant, used to filter the average particles weights.
    # Random particles are added if the fast filter result drops below the slow filter result,
    # allowing the particle filter to recover from a bad approximation. Keep disabled for
    # stable tracking unless kidnapped-robot recovery is required.
    recovery_alpha_fast: 0.0
    # Slow exponential filter constant, used to filter the average particles weights.
    # Random particles are added if the fast filter result drops below the slow filter result,
    # allowing the particle filter to recover from a bad approximation. Keep disabled for
    # stable tracking unless kidnapped-robot recovery is required.
    recovery_alpha_slow: 0.0
    # Resample will happen after the amount of updates specified here happen.
    resample_interval: 1
    # Minimum angle difference from last resample for resampling to happen again.
    update_min_a: 0.05
    # Maximum angle difference from last resample for resampling to happen again.
    update_min_d: 0.05
    # Laser sensor model type.
    laser_model_type: likelihood_field
    # Maximum distance of an obstacle (if the distance is higher, this one will be used in the likelihood map).
    laser_likelihood_max_dist: 2.0
    # Maximum range of the laser.
    laser_max_range: 30.0
    # Maximum number of beams to use in the likelihood field sensor model.
    max_beams: 200
    # Weight used to combine the probability of hitting an obstacle.
    z_hit: 0.9
    # Weight used to combine the probability of random noise in perception.
    z_rand: 0.1
    # Weight used to combine the probability of getting short readings.
    z_short: 0.05
    # Weight used to combine the probability of getting max range readings.
    z_max: 0.05
    # Standard deviation of a gaussian centered around obstacles.
    sigma_hit: 0.05  #0.2
    # Whether to broadcast map to odom transform or not.
    tf_broadcast: true
    # Transform tolerance allowed.
    transform_tolerance: 0.5  #1.0

    # Execution policy used to apply the motion update and importance weight steps.
    # Valid options: "seq", "par".
    execution_policy: seq

    # Set this to true when you want to load only the first published map from map_server and ignore subsequent ones.
    first_map_only: false

    # Whether to set initial pose based on parameters.
    # When enabled, particles will be initialized with the specified pose coordinates and covariance.
    set_initial_pose: false
    # Maximum rate in Hz at which the latest pose is saved to saved_pose_filepath.
    # Set to 0.0 or a negative value to disable pose persistence.
    save_pose_rate: 0.5
    # Whether to initialize from the pose stored in saved_pose_filepath when set_initial_pose is false.
    initialize_at_saved_pose: true
    # File used to persist and restore the latest AMCL pose.
    saved_pose_filepath: /tmp/amcl_saved_pose
    # If false, AMCL will use the last known pose to initialize when a new map is received.
    always_reset_initial_pose: false

    # Use the latest laser scan to score global-localization candidates before seeding AMCL.
    global_localization_scan_matching: true
    # Maximum number of beams used only for scan-matched global localization.
    global_localization_max_beams: 200
    # Coarse XY spacing, in meters, for scan-matched global localization search.
    global_localization_coarse_xy_step: 0.5
    # Number of coarse yaw bins for scan-matched global localization search.
    global_localization_yaw_bins: 36
    # Number of scan-matched global localization hypotheses to seed into AMCL.
    global_localization_max_candidates: 8
    # XY radius, in meters, used to refine coarse global localization candidates.
    global_localization_refine_xy_radius: 0.25
    # XY step, in meters, used to refine coarse global localization candidates.
    global_localization_refine_xy_step: 0.1
    # Yaw step, in radians, used to refine coarse global localization candidates.
    global_localization_refine_yaw_step: 0.08726646259971647
    # Uniform XY noise radius, in meters, used when sampling around global candidates.
    global_localization_xy_noise: 0.2
    # Uniform yaw noise radius, in radians, used when sampling around global candidates.
    global_localization_yaw_noise: 0.17453292519943295

    # Initial pose x coordinate.
    initial_pose.x: 0.0
    # Initial pose y coordinate.
    initial_pose.y: -2.0
    # Initial pose yaw coordinate.
    initial_pose.yaw: 0.0
    # Initial pose xx covariance.
    initial_pose.covariance_x: 0.25
    # Initial pose yy covariance.
    initial_pose.covariance_y: 0.25
    # Initial pose yawyaw covariance.
    initial_pose.covariance_yaw: 0.0685
    # Initial pose xy covariance.
    initial_pose.covariance_xy: 0.0
    # Initial pose xyaw covariance.
    initial_pose.covariance_xyaw: 0.0
    # Initial pose yyaw covariance.
    initial_pose.covariance_yyaw: 0.0

4 lines are marked where a parameter arrived or moved in this version. Removals are not marked — the line they were on is not in this file.