amcl tuning for diff-corrected robot
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