global_planner fails to find a plan - It doesn't search certain regions on the map
Here is the situation in the above picture. The robot is between a sofa and a wall, and it is facing upwards. I am setting a goal in the bigger room (right part of the map), and global_planner
fails to produce a path. The visualization of global_planner's potential shows that it didn't even search in the big room.
What led to this behavior, i.e. graph search doesn't cover the region involving the goal? How do we correct it?
Some info: use_dijlstra
is set to true (default).
Thanks!
EDIT: My parameters:
move_base
# Choose planners
base_local_planner: "dwa_local_planner/DWAPlannerROS"
base_global_planner: "global_planner/GlobalPlanner"
# Using default recovery behaviors
# Timeouts and frequencies
controller_frequency: 10.0
controller_patience: 15.0
planner_frequency: 2.0 #global plan | 0.25 #2.0
planner_patience: 5.0
oscillation_timeout: 10.0
oscillation_distance: 0.2
# Other params
shutdown_costmaps: false
# global_planner params
GlobalPlanner:
default_tolerance: 0.2
cost_factor: 0.5489
neutral_cost: 66
lethal_cost: 253
costmap
global_frame: /map
robot_base_frame: /base_footprint
map_type: voxel
# Robot definition
# Even wider
# footprint: [[-0.495, 0.145], [-0.105, 0.366], [0.154, 0.374], [0.357, 0.154], [0.357, -0.154], [0.154, -0.374], [-0.105, -0.366], [-0.495, -0.145]]
# Wider
# footprint: [[-0.483, 0.121], [-0.092, 0.343], [0.132, 0.343], [0.349, 0.136], [0.349, -0.136], [0.132, -0.343], [-0.090, -0.343], [-0.483, -0.121]]
# Narrower
footprint: [[-0.42951, -0.10764], [-0.08274, -0.30298], [0.11447, -0.30298], [0.30577, -0.12000], [0.30577, 0.12000], [0.11447, 0.30298], [-0.08407, 0.30298], [-0.42951, 0.10764]]
map_layer:
map_topic: /map
nogo_layer:
map_topic: /map_nogo
inflation_layer:
inflation_radius: 1.75
cost_scaling_factor: 2.58
obstacle_layer:
max_obstacle_height: 2.0
obstacle_range: 2.5
raytrace_range: 3.0
origin_z: -0.2
z_resolution: 0.15
z_voxels: 12
unknown_threshold: 8
mark_threshold: 0
publish_voxel_map: true
observation_sources: laser xtion_obstacles xtion_clear xtion_back_obstacles xtion_back_clear
laser: {topic: /scan, data_type: LaserScan, sensor_frame: laser_link, marking: true, clearing: true, min_obstacle_height: 0.25, max_obstacle_height: 0.35}
xtion_obstacles: {topic: /xtion_qqvga/depth/points_clipped, data_type: PointCloud2, marking: true, clearing: false, min_obstacle_height: 0.1, max_obstacle_height: 0.9, observation_persistence: 0.0, obstacle_range: 2.0}
xtion_clear: {topic: /xtion_qqvga/depth/points_max, data_type: PointCloud2, marking: false, clearing: true, min_obstacle_height: -0.1, max_obstacle_height: 1.1, observation_persistence: 0.0, raytrace_range: 5.0}
xtion_back_obstacles: {topic: /xtion_back_qqvga/depth/points_clipped, data_type: PointCloud2, marking: true, clearing: false, min_obstacle_height: 0.1, max_obstacle_height: 0.9, observation_persistence: 0.0, obstacle_range: 2.0}
xtion_back_clear: {topic: /xtion_back_qqvga/depth/points_max, data_type: PointCloud2, marking: false, clearing: true, min_obstacle_height: -0.1, max_obstacle_height: 1.1, observation_persistence: 0.0, raytrace_range: 5.0}
local_costmap:
update_frequency: 5.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 4.0
height: 4.0
resolution: 0.02
plugins:
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
global_costmap:
update_frequency: 5.0
static_map: true
rolling_window: false
plugins:
- {name: map_layer, type: "costmap_2d::StaticLayer"}
- {name: nogo_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
Have you experimented with the global_planner's
allow_unknown
and the costmap's (obstacle layer)track_unknown_space
parameters?I haven't. It may reduce search space if I set
allow_unknown
to be false. Theoretically they shouldn't affect whether a path could be found right? I did some experiment withcost_factor
,neutral_cost
and they seem to have an effect on whether a path could be found. But still, not consistentIs the door to the big room wider than "2x circumscribed radius" ? (see http://wiki.ros.org/costmap_2d/hydro/... ) Related to this, have you tried reducing
inflation_radius
?1.75
looks very high to me. However, none of these would explain the funky shape of the potential around the door.Hi spmaniato. The reason I set inflation radius to a quite high value is because I want the cost decay curve to be smoother. That way when the robot plans a path in a corridor, the path should be along the middle of the corridor.