DWA planner not considerate robot footprint

asked 2020-02-10 06:49:25 -0600

christian.blesing gravatar image

Hello everybody,

we want to use cartographer together with move base to do some frontier based semantic exploration. We use Ubuntu 18.04 and ros melodic. Cartographer is set up nicely and runs without any issues. As sensor input for move base we use two SICKS300 and odometry information calculated from the robot encoders. We have set up all the necessary tfs. With our setup, we are able to get plausible global and local costmaps. We choose the navfn as global and dwa as the local planner. As long as our robot does not have to avoid any obstacles, everything runs smoothly.

But if there are obstacles the dwa planner does not seem to take into account the footprint of the robot (see rviz screenshot).

image description

The blue line is the global path (navfn), the green one is the global dwa path and the red one is the dwa local path. We are confused and do not understand why the robot's footprint touches the inflation layer in such a way.

Here are our configuration files:


obstacle_range: 5.0
raytrace_range: 5.0
map_topic: "/ctv_10/map"
first_map_only: false
footprint: [[-1.03,0.46], [0.38,0.46], [0.38,-0.46], [-1.03,-0.46]]

  - {name: static_map,       type: "costmap_2d::StaticLayer"} 
  - {name: inflation,        type: "costmap_2d::InflationLayer"}
  - {name: obstacles,        type: "costmap_2d::VoxelLayer"}

  lethal_cost_threshold: 55
  subscribe_to_updates: true

  inflation_radius: 0.55
  cost_scaling_factor: 10.0

  observation_sources: scanFront scanBack 
  scanFront: {  data_type: LaserScan, 
                sensor_frame: ctv_10/laser_front_link, 
                clearing: true, 
                marking: true, 
                topic: /ctv_10/front_scan, 
                expected_update_rate: 10}

  scanBack: {   data_type: LaserScan, 
                sensor_frame: ctv_10/laser_back_link, 
                clearing: true, 
                marking: true, 
                topic: /ctv_10/back_scan, 
                expected_update_rate: 10}


global_frame: "ctv_10/map"
robot_base_frame: "ctv_10/base_link"
transform_tolerance: 20.0
update_frequency: 5.0 
publish_frequency: 5.0
rolling_window: false 
always_send_full_costmap: false
static_map: true
map_type: costmap
cost_scaling_factor: 10.0


global_frame: "ctv_10/map"
robot_base_frame: "ctv_10/base_link"
transform_tolerance: 10.0
update_frequency: 5.0
publish_frequency: 2.0
rolling_window: true
always_send_full_costmap: true
static_map: false
map_type: costmap
width: 5.0
height: 5.0
resolution: 0.05

dwa planner params

# robot configuration parameters
max_vel_trans: 0.5
min_vel_trans: 0.1
max_vel_x: 0.5 
min_vel_x: 0.1   
max_vel_y: 0.1 
min_vel_y: -0.1 
max_vel_theta: 1.0
min_vel_theta: 0.4
acc_lim_x: 0.8
acc_lim_y: 0.8
acc_lim_theta: 1.0
acc_lim_trans: 0.1 

# goal tolerance parameters
xy_goal_tolerance: 0.1
yaw_goal_tolerance: 0.07
latch_xy_goal_tolerance: false

# forward simulation parameters
sim_time: 4.0                        
sim_granularity: 0.025          
vx_samples: 3                        
vy_samples: 3                         
vth_samples: 20                       
#controller_frequency: 15.0

# trajectory scoring parameters
path_distance_bias: 32.0
goal_distance_bias: 24.0              
occdist_scale: 0.01                  
forward_point_distance: 0.325
stop_time_buffer: 0.2
scaling_speed: 0.25
max_scaling_factor: 0.2
publish_cost_grid: false

# oscillation prevention parameters
oscillation_reset_dist: 0.05

# global plan parameters
prune_plan: false
edit retag flag offensive close merge delete