move_base doesn't recognize that it successfully reached the goal
Hi all,
I know that this is a multi-times repeated question but unfortunately I didn't find a solution to my problem. I tried both teb_local_planner and neo_local_planner for my differential drive, back-wheeled robot, but when it reaches the goal, even though it may outputs "Goal Reached", move_base doesn't recognize the goal as being reached successfully, and moves on to the recovery behaviors before aborting the mission. I tried with less xy_tolerance but in my opinion it should work with 0.1m tolerance. I get the feeling that the reason may be that I send the goals in the base_footprint frame instead of map, but it would make it complicated to send it in the map frame. Any suggestion-opinion is welcome. A similar problem identified here: https://answers.ros.org/question/2408...
PS: As a side-problem and since I already uploaded my files, I would be glad if anyone identifies why my neo_local_planner periodically accelerates and decelerates instead of doing a smooth move. I believe it has something to do with the frequencies.
costmap_common_params:
map_type: costmap
footprint: [[-0.2, 0.4], [0.8, 0.4], [0.8, -0.4], [-0.2, -0.4]]
# robot_radius: 0.4 # footprint of the robot or the radius of the robot if it is circular
inflation_radius: 0.4 # the robot will treat all paths that stay 0.55 meters or more away from obstacles as having equal obstacle cost
transform_tolerance: 1.0
# always_send_full_costmap: true
# subscribe_to_updates: true
obstacle_layer:
enabled: true
obstacle_range: 2.5 # the robot will only update its map with information about obstacles that are within 2.5 meters of the base
raytrace_range: 3.0 # the robot will attempt to clear out space in front of it up to 3.0 meters
inflation_radius: 0.1
track_unknown_space: true
combination_method: 1
observation_sources: laser_scan_sensor
laser_scan_sensor: {sensor_frame: base_scan, data_type: LaserScan, topic: scan, marking: true, clearing: true} #topic: scan_filtered
inflation_layer:
enabled: true
observation_persistence: 0.0
cost_scaling_factor: 10.0 # exponential rate at which the obstacle cost drops off (default: 10)
inflation_radius: 0.6 # max. distance from an obstacle at which costs are incurred for planning paths.
static_layer:
enabled: true
observation_persistence: 0.0
map_topic: "map"
global_costmap
global_costmap:
global_frame: spraybase/map #map
robot_base_frame: spraybase/base_footprint
update_frequency: 30 # Set this as high as the cpu resources allow
publish_frequency: 30 #2.5
# static_map: false
static_map: true
rolling_window: false
track_unknown_space: true
width: 1024
height: 1024
origin_x: -51.25
origin_y: -51.25
resolution: 0.05
plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
local_costmap
local_costmap:
global_frame: spraybase/odom # odom_combined
robot_base_frame: spraybase/base_footprint
update_frequency: 5. # 5.0
publish_frequency: 5. # 5.0
static_map: false
rolling_window: true
width: 4.0
height: 4.0
resolution: 0.03
# transform_tolerance: 1.0
plugins:
# - {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
teb_local_planner:
TebLocalPlannerROS:
odom_topic: odom
# Trajectory
teb_autosize: True
dt_ref: 0.3
dt_hysteresis: 0.1 #default: 0.01
max_samples: 50 #default: 3
global_plan_overwrite_orientation: True
allow_init_with_backwards_motion: True
max_global_plan_lookahead_dist: 0.5
global_plan_viapoint_sep: -1 #default: 0.01
global_plan_prune_distance: 1 #default: 0 ...