amcl---Inaccurate positioning
when I use amcl package, the location is inaccurate.
why?
I guess:
the pose from odom-topic has high noise.
Parameter setting is problematic.
amcl Parameter:
<launch>
<arg name="scan_topic" default="scan"/>
<arg name="initial_pose_x" default="0.0"/>
<arg name="initial_pose_y" default="0.0"/>
<arg name="initial_pose_a" default="0.0"/>
<node pkg="amcl" type="amcl" name="amcl">
<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="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="gui_publish_rate" value="50.0"/>
<remap from="scan" to="$(arg scan_topic)"/>
<param name="laser_max_range" value="14"/>
<param name="laser_max_beams" value="30"/>
<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.2"/>
<param name="odom_alpha2" value="0.2"/>
<param name="odom_alpha3" value="0.2"/>
<param name="odom_alpha4" value="0.2"/>
<param name="odom_frame_id" value="odom"/>
<param name="base_frame_id" value="base_footprint"/>
</node>
</launch>
topic:
Asked by wings0728 on 2018-05-11 04:59:45 UTC
Answers
Three comments after seeing your param settings:
1) As suggested in amcl wiki , set the odom_model_type to:
<param name="odom_model_type" value="diff-corrected"/>
we changed from "diff" to "diff-corrected" and experienced a significant improvement
2) You may also use more beams of the scan, it could improve the localization, obviously paying computational cost.
3) likelihood_field laser model only uses laser_z_hit and laser_z_rand. Setting both to 0.5, means you are weighting somehow equally randomness and map... I think you could trust a little more on your map.
best
andreu
Asked by Andreu on 2018-05-11 15:51:06 UTC
Comments
thank for your answer. I want to know ,what means about 'laser_z_hit' and 'laser_z_rand'?
Asked by wings0728 on 2018-05-13 04:47:14 UTC
"hit" refers to the situation when a laser beam hits an obstacle. "rand" means the uniform distribution which is used to model the situation in which there might exist some unexplained measurements.
Asked by chung on 2018-05-13 17:50:26 UTC
If you expect a lot of unmodelled obstacles in your environment (meaning obstacles not in the map like people), then you should increase "rand" contribution. Otherwise, if your environment is very static and all obstacles are represented in the map, the you can almost remove the "rand" part.
Asked by Andreu on 2018-05-14 02:02:24 UTC
where you guys have read this kind of information? i cant find it in ros wiki or google
Asked by june2473 on 2019-09-26 07:17:01 UTC
AMCL is the product of several research work mainly carried out by Fox, Thrun, Burgard et al. early in the 2000's. A detailed explanation of the amcl algorithm (and others) can be found at the book: - Thrun, S., Burgard, W., Fox, D. Probabilistic Robotics. The MIT press. 2006.
Asked by Andreu on 2019-09-26 12:36:42 UTC
Comments