继续前文14.move_base介绍(2)配置了一个无需地图的move_base应用,本文将介绍下costmap
1. 概述
move_base
构造函数中会构造local_cost_map
和global_costmap
两个对象,同时构造他们时会根据参数添加相应的层
这些参数分别在
costmap_common_params_apollo.yaml
local_costmap_params_withoutmap.yaml
global_costmap_params_withoutmap.yaml
显然第一个为共用的
2. common
robot_radius
原型底盘即为半径
footprint
非原型,以旋转中心为原点,各个顶点按顺序(逆时针/顺时针都可以)的坐标
优先会查找
footprint
3. global_costmap
global_costmap:
global_frame: /odom
robot_base_frame: /base_link
update_frequency: 1.0
publish_frequency: 0.5
static_map: false
rolling_window: true
width: 12
height: 12
resolution: 0.05
transform_tolerance: 0.5
plugins:
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
global_frame
全局坐标系, 现在我们使用没有图的,这里使用/odom
robot_base_frame
机器人坐标系update_frequency
map更新的频率(说好的没有图的呢, 之前无图是没有传递加载实际的地图,还是要到心中有图的,这里指的costmap)publish_frequency
map发布的频率static_map
该参数一般总是与下一个相反的, 标识使用静态地图,我们没有使用,这里当然是false
rolling_window
true
标识地图跟随便机器人width
height
resolution
地图信息transform_tolerance
tf的超时时间plugins
图层
4. local_costmap
local_costmap:
global_frame: /odom
robot_base_frame: /base_link
update_frequency: 1.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 4
height: 4
resolution: 0.05
transform_tolerance: 0.5
plugins:
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
与global_costmap
基本一致