move_base doesn't recognize that it successfully reached the goal

asked 2021-09-27 17:22:46 -0600

AlexandrosNic gravatar image

updated 2021-09-29 06:34:50 -0600

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 ...
(more)
edit retag flag offensive close merge delete