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

Is my odometry good enough for AMCL?

asked 2021-10-27 04:19:49 -0500

rappy gravatar image

I am having problems with AMCL during navigating empty spaces where LiDAR can not sense much features or match with map. It jumps to a very different location after some time. I have tried changing recovery_alpha_fast and recovery_alpha_slow parameters to prevent resampling all over the map and also decreased the odom_alpha parameters to prevent the particles to spread. However, AMCL pose still jumps to a distant location and most of the time its very close to an obstacle. I have also came across with the troubleshooting guide on the ros wiki http://wiki.ros.org/navigation/Troubleshooting which recommends running some tests to check if odometry is good for AMCL before tuning it. Forward motion tests seems ok but rotation doesn't look perfectly aligned and I am not sure if it looks like as it should be since there is always an error in odometry. So if anyone can confirm that its good enough or not. Recording of the test is attached. https://www.youtube.com/watch?v=ZHEdBvxV0cY

<launch>   
<arg name="use_map_topic" default="false"/>   
<arg name="scan_topic" default="scan" />
<node pkg="amcl" type="amcl" name="amcl">
<param name="tf_broadcast" value = "true"/>
<param name="use_map_topic" value="$(arg use_map_topic)"/>
<param name="odom_model_type" value="diff-corrected"/>
<param name="laser_max_beams" value="180"/>
<param name="laser_min_range" value="0.1"/>
<param name="laser_max_range" value="6.0"/>
<param name="min_particles" value="500"/>
<param name="max_particles" value="2000"/>
<param name="kld_err" value="0.05"/>
<param name="kld_z" value="0.99"/>
<param name="odom_alpha1" value="0.005"/>
<param name="odom_alpha2" value="0.005"/>
<param name="odom_alpha3" value="0.01"/>
<param name="odom_alpha4" value="0.005"/>
<param name="laser_z_hit" value="0.25"/>
<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_model_type" value="likelihood_field_prob"/>
<param name="laser_likelihood_max_dist" value="2.0"/>
<param name="update_min_d" value="0.1"/>
<param name="update_min_a" value="0.314"/>
<param name="odom_frame_id" value="odom"/>
<param name="base_frame_id" value="base_footprint"/>
<param name="global_frame_id" value="map"/>
<param name="resample_interval" value="1"/>
<param name="transform_tolerance" value="1.0"/>
<param name="recovery_alpha_slow" value="0.0"/>
<param name="recovery_alpha_fast" value="0.0"/>
<param name="initial_pose_x" value="0.0" />
<param name="initial_pose_y" value="0.0" />
<param name="initial_pose_a" value="0.0" /> -->
<param name="receive_map_topic" value="true"/>
<param name="first_map_only" value="true"/>
<remap from="scan" to="$(arg scan_topic)"/>
<remap from ="odom" to="odometry/filtered"/>
</node>
</launch>
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2021-11-04 23:05:15 -0500

updated 2021-11-04 23:05:47 -0500

If there is no need to solve the kid-napped problem for your robot, and you found that sometimes the robot jump to a distant location, there are probably three parts of AMCL parameters that should be adjusted.

  1. recovery_alpha_slow, recovery_alpha_fast. You have already disabled these two params. There will be no random poses added to the particle cloud (pose array).
  2. kld_err, kld_z. These two parameters will affect the number of particles. If the estimated distribution from odometry is different from perception, it will add more particles.
  3. odom_alpha(s). Increasing these values will generate a larger coverage, but the distribution can cover the actual location of the robot and the number of particles will be quite stable. Small values generate a very small particle cloud but give bigger kld_error, which may cause a distant jump.

    So you may increase your odom_alpha(s) and should solve this problem.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2021-10-27 04:19:49 -0500

Seen: 363 times

Last updated: Nov 04 '21