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

dual laser source for navigation

asked 2014-08-12 01:56:58 -0500

dreamcase gravatar image

hi, All,

I am using an LMS100 for localization and one hokuyo URG laser for local path planing.

question is, how do I specify which one goes where? I am using Navigational Stack and in the costmap_common_params.yaml, following parameters are set

observation_sources: laser_scan_sensor point_cloud_sensor

laser_scan_sensor: {sensor_frame: base_laser, data_type: LaserScan, topic: scan, marking: true, clearing: true}

point_cloud_sensor: {sensor_frame: base_laser, data_type: PointCloud, topic: point_cloud, marking: true, clearing: true}

how do I specify which one is for AMCL which one is for local path plan?

regards Ray

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2014-08-12 02:10:36 -0500

ahendrix gravatar image

All of the yaml files for navigation refer to planning. In your case, all of the laser sources there should reference your Hokuyo.

To use a different laser with AMCL, simply write an amcl launch file which remaps the input laser topic to AMCL to use your laser. You'll probably want to replace default amcl_onmi.launch that comes with amcl with something like:

<node pkg="amcl" type="amcl" name="amcl">
  <remap from="scan" to="sick_laser"/> <!-- remap laser input to use your sick laser -->

  <!-- All of the original parameters from amcl_omni.launch -->
  <!-- Publish scans from best pose at a max of 10 Hz -->
  <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"/>
  <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"/>

Since you're using a much nicer laser than the default parameters expect, you should probably tune the parameters to AMCL to fit your needs.

When adjusting the parameters to AMCL, it's generally best to run AMCL by iteslf (without the rest of the navigation stack) and drive the robot around by hand to test the quality of your localization, before you try to navigate based on your localization.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2014-08-12 01:56:58 -0500

Seen: 227 times

Last updated: Aug 12 '14