0
$\begingroup$

Rosanswers logo

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


Originally posted by dreamcase on ROS Answers with karma: 91 on 2014-08-12

Post score: 1

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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:

<launch>
<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"/>
</node>
</launch>

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.


Originally posted by ahendrix with karma: 47576 on 2014-08-12

This answer was ACCEPTED on the original site

Post score: 3

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.