What to prepare to run amcl node correctly?

asked 2015-06-15 08:54:30 -0600

sam gravatar image

updated 2015-06-16 01:16:23 -0600

I use ubuntu 12.04 64bits with ROS hydro.

If I want to run amcl node, what should I prepare?

I try to list to do list that I know. 1. Run gazebo with PR2 and construct an environment.

  1. Build a map by gmapping node.

  2. Save map to pgm file and yaml file.

  3. load pgm and yaml file by map_server.

  4. run amcl launch

<launch>
<node pkg="amcl" type="amcl" name="amcl">
  <remap from="scan" to="base_scan" />

  <param name="use_map_topic" value="true"/>

  <!-- Publish scans from best pose at a max of 10 Hz -->
  <param name="base_frame_id" value="base_footprint"/>
  <param name="odom_model_type" value="omni"/>
  <param name="odom_alpha5" value="0.1"/>
  <param name="transform_tolerance" value="0.2" />
  <param name="gui_publish_rate" value="10.0"/>
  <param name="laser_max_beams" value="30"/>
  <param name="min_particles" value="500"/>
  <param name="max_particles" value="5000"/>
  <param name="kld_err" value="0.05"/>
  <param name="kld_z" value="0.99"/>
  <param name="odom_alpha1" value="0.2"/>
  <param name="odom_alpha2" value="0.2"/>
  <!-- translation std dev, m -->
  <param name="odom_alpha3" value="0.8"/>
  <param name="odom_alpha4" value="0.2"/>
  <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_lambda_short" value="0.1"/>
  <param name="laser_model_type" value="likelihood_field"/>
  <!-- <param name="laser_model_type" value="beam"/> -->
  <param name="laser_likelihood_max_dist" value="2.0"/>
  <param name="update_min_d" value="0.2"/>
  <param name="update_min_a" value="0.5"/>
  <param name="odom_frame_id" value="odom_combined"/>
  <param name="resample_interval" value="1"/>
  <param name="transform_tolerance" value="0.1"/>
  <param name="recovery_alpha_slow" value="0.0"/>
  <param name="recovery_alpha_fast" value="0.0"/>
</node>
</launch>
  1. Teleop PR2

  2. Receive amcl_pose topic to get accurate robot pose.

Is there anything am I missing?

I also have several questions:

a. Should I write a node to publish odom topic?

b. How to identify the robot pose that amcl output is precise or not? What is the normal settings that could be used in gazebo and real scene?

c. When should I set initial pose ? What is the correct way to set initial pose? How to know the correct initial pose? By try and error?

Thank you very much~~

edit retag flag offensive close merge delete