AMCL Tuning Suggestions?

asked 2019-06-07 07:51:53 -0500

PapaG gravatar image

updated 2019-06-07 09:00:47 -0500

Hi everyone,

I am trying to implement AMCL on a rosbag. The map used is generated from the same bag. I haven't used AMCL a lot and so I am unsure as to what parameters do what. It is appearing like my laser scan drifts with linear motion, I thought AMCl was suppose to compare the laser scan to the map and then make a probabilistic decision as to where it was? I have attached a video of what is occurring to try and tune this.

Thanks in advance for all assistance provided.

PS. the AMCL params loaded is empty cause I do not know what I should tune.

  • EDIT I have spent some time tuning it and have achieved this behaviour, I have read that my choice in making the odom_alpha values larger causes a higher computational load, I am still interested in suggestions to make the performance better.

laser_z_hit: 0.8
laser_z_rand: 0.2
odom_alpha1: 0.8
odom_alpha2: 0.4
odom_alpha3: 8
odom_alpha4: 0.6


<arg name="in_bag" default="single_loop/single_loop.bag"/>
<arg name="rate" default="1"/>
<arg name="start" default="0"/>
<arg name="map_file" default="single_loop/s11_single_loop.yaml"/>
<param name="/use_sim_time" value="true"/>

<!-- Static Transforms -->
<node pkg="tf" type="static_transform_publisher" name="imu_link_broadcaster" args="0.170 0.02 0.120 0 3.14159265359 3.14159265359 base_link imu 100" />
<node pkg="tf" type="static_transform_publisher" name="laser_link_broadcaster" args="0.187 0 0.346 3.14159265359 0 0 base_link laser 100"/>

<!-- Launch IMU-Odometry Estimation Filter -->
<rosparam command="load" file="$(find amcl_dev)/config/ekf_pose_filter_amcl.yaml" />
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_se_odom" clear_params="true">
    <!-- Remap Topics -->
    <remap from="odometry/filtered" to="/nightrider/odom_filtered"/>

<!-- Launch Map Server -->
<node name="map_server" pkg="map_server" type="map_server" args="/home/papag/undergrad/rosbags/maps/$(arg map_file)" />

<!-- Launch AMCL -->
<node pkg="amcl" type="amcl" name="amcl">
    <param name="use_map_topic" value="true"/>
    <!-- Force the EKF to provide the tf -->
    <param name="tf_broadcast" value="true"/>
    <rosparam command="load" file="$(find amcl_dev)/config/amcl_param.yaml" />

<node pkg="rosbag" type="play" name="rosbag_play" args="--clock /home/papag/undergrad/rosbags/$(arg in_bag)" />

<!-- RVIS -->
<node pkg="rviz" type="rviz" name="rviz" />

ekf param:

frequency: 10
sensor_timeout: 0.5
two_d_mode: true
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
debug: false
debug_out_file: /path/to/debug/file.txt
publish_tf: true
publish_acceleration: false

map_frame: map              # Defaults to "map" if unspecified
odom_frame: odom            # Defaults to "odom" if unspecified
base_link_frame: base_link  # Defaults to "base_link" if unspecified
world_frame: odom           # Defaults to the value of odom_frame if unspecified

odom0: /nightrider/odom
odom0_config: [false,  false,  false,
               false, false, false,
               true, false, false,
               false, false, true,
               false, false, false]

odom0_queue_size: 5
odom0_nodelay: false
odom0_differential: false
odom0_relative: false
odom0_pose_rejection_threshold: 5
odom0_twist_rejection_threshold: 1

imu0: /tx2/imu_enu
imu0_config ...
edit retag flag offensive close merge delete