amcl tuning for diff-corrected robot

asked 2020-12-14 02:50:57 -0600

siddharthcb gravatar image

updated 2020-12-16 03:43:51 -0600

hi all, I was trying to implement hector_slam for my diff-corrected robot. I am using realsense t265 for external odometry. so the problem is that laser scan goes out of frame in the map, this is only WHILE ROTATING the bot whereas during the translation movement everything works absolutely fine. i am enclosing the video for better understanding. I did play around with amcl parameters for days now but not luck. Is this error common considering my environment is bit complex?

i am also enclosing the parameters that i have used.

amcl

<launch>
<node pkg="amcl" type="amcl" name="amcl" output="screen">
  <!-- Publish scans from best pose at a max of 10 Hz -->
  <param name="odom_model_type" value="diff-corrected"/>
  <param name="odom_alpha5" value="0.003"/>
  <param name="transform_tolerance" value="0.4" />
  <param name="gui_publish_rate" value="10.0"/>
  <param name="laser_max_beams" value="50"/>
  <param name="min_particles" value="400"/>
  <param name="max_particles" value="4500"/>
  <param name="kld_err" value="0.05"/>
  <param name="save_pose_rate" value="0.5"/>
  <param name="kld_z" value="0.99"/>
  <param name="odom_alpha1" value="0.005"/>
  <param name="odom_alpha2" value="0.005"/>
  <!-- translation std dev, m -->
  <param name="odom_alpha3" value="0.005"/>
  <param name="odom_alpha4" value="0.005"/>
  <param name="laser_z_hit" value="0.8"/>
  <param name="laser_z_short" value="0.05"/>
  <param name="laser_z_max" value="0.05"/>
  <param name="laser_z_rand" value="0.2"/>
  <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="-1"/>
  <param name="update_min_a" value="-1"/>
  <param name="first_map_only" value="true"/>
  <param name="odom_frame_id" value="odom"/>
  <param name="resample_interval" value="1"/>
  <param name="transform_tolerance" value="0.4"/>
  <param name="recovery_alpha_slow" value="0.0"/>
  <param name="recovery_alpha_fast" value="0.0"/>
</node>
</launch>

Base_local_planner_params.yaml

TrajectoryPlannerROS:
 max_vel_x: 0.3
 min_vel_x: 0.05
 max_vel_theta: 0.5
 min_vel_theta: -0.5
 min_in_place_vel_theta: 0.2
 vx_samples: 3
 vtheta_samples: 20
 acc_lim_th: 3.2
 acc_lim_x: 2.5
 acc_lim_y: 0.0
 controller_frequency: 5 
 holonomic_robot: false
 sim_time: 1.0
 sim_granularity: 0.08
 meter_scoring: true
 dwa: false

costmap_common_params.yaml:

obstacle_range: 2.0
raytrace_range: 2.0

footprint: [[-0.3,-0.3],[-0.3,0.3],[0.3,0.3],[0.3,-0.3]]
footprint_padding: 0.05
#robot_radius: ir_of_robot
inflation_radius: 0.35

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

global_costmap_params.yaml:

global_costmap:
 global_frame: map
 robot_base_frame: base_link
 update_frequency: 1.0
 static_map: true
 transform_tolerance: 0.3

local_costmap_params.yaml

local_costmap:
 global_frame: map
 robot_base_frame: base_link
 update_frequency: 2.0
 publish_frequency: 2.0
 static_map: false
 rolling_window: true
 width: 5.0
 height: 5.0
 resolution: 0.05

i really appreciate if someone can share their knowledge. Thank you

edit retag flag offensive close merge delete