Costmap 2D
Source code on Github.
Costmap 2D 包实现了基于 2D 网格的代价地图,用于环境表示和多个传感器处理插件(AI 输出、深度传感器障碍物缓冲、语义信息等)。 它用于规划器和控制器服务器,用于创建检查碰撞或更高成本区域的空间以进行协商。
Costmap2D ROS参数
- always_send_full_costmap:
Type
Default
bool
False
- Description
是否每次更新时都发送完整的成本图,而不是更新。
- footprint_padding:
Type
Default
double
0.01
- Description
相当于垫块占地面积 (m)。
- footprint:
Type
Default
vector<double>
“[]”
- Description
以字符串形式传入的有序足迹点集,必须是封闭集。例如,以下定义了一个边长为 0.2 米的正方形底座 footprint: “[ [0.1, 0.1], [0.1, -0.1], [-0.1, -0.1], [-0.1, 0.1] ]”。请注意,这也可以使用 costmap 的
~/footprint
主题随时间进行调整,该主题将根据机器人状态的变化(例如连接的操纵器的移动、拾起托盘或其他调整机器人形状的操作)随时间更新多边形。如果设置了此参数,isPathValid
将进行完整的碰撞检查。
- global_frame:
Type
Default
string
“map”
- Description
參考框架。
- height:
Type
Default
int
5
- Description
代价地图的高度(米)。
- width:
Type
Default
int
5
- Description
代价地图的宽度(m)。
- lethal_cost_threshold:
Type
Default
int
100
- Description
占用网格图的最低成本被视为致命障碍。
- map_topic:
Type
Default
string
“map”
- Description
来自 map_server 或 SLAM 的地图主题。
- map_vis_z:
Type
Default
double
0.0
- Description
地图高度,可以避免 rviz 可视化在 -0.008 处闪烁
- observation_sources:
Type
Default
string
“”
- Description
以字符串形式列出传感器源,如果插件特定配置中未指定,则使用。例如“static_layer stvl_layer”
- origin_x:
Type
Default
double
0.0
- Description
相对于宽度(m)的成本地图的X原点。
- origin_y:
Type
Default
double
0.0
- Description
相对于高度(米)的成本地图的 Y 原点。
- publish_frequency:
Type
Default
double
1.0
- Description
将成本图发布到主题的频率。
- resolution:
Type
Default
double
0.1
- Description
代价地图1像素的分辨率,以米为单位。
- robot_base_frame:
Type
Default
string
“base_link”
- Description
机器人底座框架。
- robot_radius:
Type
Default
double
0.1
- Description
如果未提供足迹坐标,则使用机器人半径。如果设置了此参数,“isPathValid”将进行圆形碰撞检查。
- rolling_window:
Type
Default
bool
False
- Description
代价地图是否应该随机器人基座框架滚动。
- track_unknown_space:
Type
Default
bool
False
- Description
如果为假,则将未知空间视为自由空间,否则视为未知空间。
- transform_tolerance:
Type
Default
double
0.3
- Description
TF 变换容差。
- initial_transform_timeout:
Type
Default
double
60.0
- Description
等待从机器人基座坐标系到全局坐标系的转换可用的时间。如果超过此时间,配置阶段将中止。
- trinary_costmap:
Type
Default
bool
True
- Description
如果占用网格图应解释为仅 3 个值(空闲、占用、未知)或其存储的值。
- unknown_cost_value:
Type
Default
int
255
- Description
如果跟踪未知空间则需要花费成本。
- update_frequency:
Type
Default
double
5.0
- Description
成本地图更新频率。
- use_maximum:
Type
Default
bool
False
- Description
组合代价地图时是否使用最大代价或者覆盖。
- plugins:
Type
Default
vector<string>
{“static_layer”, “obstacle_layer”, “inflation_layer”}
- Description
参数命名空间和名称的映射插件名称列表。
- Note
此列表中定义的每个插件命名空间都需要有一个:code:plugin 参数来定义要在命名空间中加载的插件类型。
Example:
local_costmap: ros__parameters: plugins: ["obstacle_layer", "voxel_layer", "inflation_layer"] obstacle_layer: plugin: "nav2_costmap_2d::ObstacleLayer" voxel_layer: plugin: "nav2_costmap_2d::VoxelLayer" inflation_layer: plugin: "nav2_costmap_2d::InflationLayer"
- filters:
Type
Default
vector<string>
{}
- Description
参数命名空间和名称的映射代价地图过滤器名称列表。
- Note
成本地图过滤器也是可加载的插件,就像普通的成本地图层一样。这种分离是为了避免插件和过滤器的干扰,并将这些过滤器放在组合分层成本地图的顶部。与插件一样,此列表中定义的每个成本地图过滤器命名空间都需要有一个:code:plugin 参数,定义要在命名空间中加载的过滤器插件的类型。
Example:
local_costmap: ros__parameters: filters: ["keepout_filter", "speed_filter"] keepout_filter: plugin: "nav2_costmap_2d::KeepoutFilter" speed_filter: plugin: "nav2_costmap_2d::SpeedFilter"
Default Plugins
当未覆盖:code:plugins 参数时,将加载以下默认插件:
Namespace
Plugin
“static_layer”
“nav2_costmap_2d::StaticLayer”
“obstacle_layer”
“nav2_costmap_2d::ObstacleLayer”
“inflation_layer”
“nav2_costmap_2d::InflationLayer”
插件参数
代价地图过滤器参数
例子
global_costmap:
global_costmap:
ros__parameters:
footprint_padding: 0.03
update_frequency: 1.0
publish_frequency: 1.0
global_frame: map
robot_base_frame: base_link
use_sim_time: True
robot_radius: 0.22 # radius set and used, so no footprint points
resolution: 0.05
plugins: ["static_layer", "obstacle_layer", "voxel_layer", "inflation_layer"]
obstacle_layer:
plugin: "nav2_costmap_2d::ObstacleLayer"
enabled: True
observation_sources: scan
footprint_clearing_enabled: true
max_obstacle_height: 2.0
combination_method: 1
scan:
topic: /scan
obstacle_max_range: 2.5
obstacle_min_range: 0.0
raytrace_max_range: 3.0
raytrace_min_range: 0.0
max_obstacle_height: 2.0
min_obstacle_height: 0.0
clearing: True
marking: True
data_type: "LaserScan"
inf_is_valid: false
voxel_layer:
plugin: "nav2_costmap_2d::VoxelLayer"
enabled: True
footprint_clearing_enabled: true
max_obstacle_height: 2.0
publish_voxel_map: True
origin_z: 0.0
z_resolution: 0.05
z_voxels: 16
max_obstacle_height: 2.0
unknown_threshold: 15
mark_threshold: 0
observation_sources: pointcloud
combination_method: 1
pointcloud: # no frame set, uses frame from message
topic: /intel_realsense_r200_depth/points
max_obstacle_height: 2.0
min_obstacle_height: 0.0
obstacle_max_range: 2.5
obstacle_min_range: 0.0
raytrace_max_range: 3.0
raytrace_min_range: 0.0
clearing: True
marking: True
data_type: "PointCloud2"
static_layer:
plugin: "nav2_costmap_2d::StaticLayer"
map_subscribe_transient_local: True
enabled: true
subscribe_to_updates: true
transform_tolerance: 0.1
inflation_layer:
plugin: "nav2_costmap_2d::InflationLayer"
enabled: true
inflation_radius: 0.55
cost_scaling_factor: 1.0
inflate_unknown: false
inflate_around_unknown: true
always_send_full_costmap: True
local_costmap:
local_costmap:
ros__parameters:
update_frequency: 5.0
publish_frequency: 2.0
global_frame: odom
robot_base_frame: base_link
use_sim_time: True
rolling_window: true
width: 3
height: 3
resolution: 0.05