二维代价地图

在Github上的源代码

Costmap 2D 包实现了基于二维网格的环境表示的代价地图和一些传感器处理插件。它在规划器和控制器服务器中用于创建用于检测碰撞或更高代价区域的空间以进行协商。

二维代价地图 ROS 参数

always_send_full_costmap

类型

默认

布尔值

False

描述

是否在每次更新时发送完整的代价地图,而不是增量更新。

footprint_padding

类型

默认

双精度

0.01

描述

需要填充的占位符大小(以米为单位)。

轮廓

类型

默认

vector<double>

"[]"

描述

按照字符串传递的轮廓点的有序集合,必须是闭合集合。例如,以下定义了一个边长为0.2米的正方形底座 footprint: "[ [0.1, 0.1], [0.1, -0.1], [-0.1, -0.1], [-0.1, 0.1] ]"

global_frame

类型

默认

string

"地图"

描述

参考坐标系。

高度

类型

默认

int

5

描述

代价地图的高度(以米为单位)。

宽度

类型

默认

int

5

描述

代价地图的宽度(以米为单位)。

致命成本阈值

类型

默认

int

100

描述

被视为致命障碍物的占位栅格地图的最小代价。

map_topic

类型

默认

string

"地图"

描述

地图主题,来自地图服务器或SLAM。

观测源

类型

默认

string

""

描述

传感器源的字符串列表,如果在插件特定配置中没有指定,则使用此列表。例如:"static_layer stvl_layer"

原点x坐标

类型

默认

双精度

0.0

描述

与宽度(米)相关的代价地图的X原点。

原点y坐标

类型

默认

双精度

0.0

描述

与高度(米)相关的代价地图的Y原点。

发布频率

类型

默认

双精度

1.0

描述

发布代价地图到话题的频率。

分辨率

类型

默认

双精度

0.1

描述

代价地图的每个像素的分辨率,以米为单位。

机器人基准坐标系

类型

默认

string

"base_link"

描述

机器人基准坐标系。

机器人半径

类型

默认

双精度

0.1

描述

如果未提供足迹坐标,则使用的机器人半径。

滚动窗口

类型

默认

布尔值

False

描述

代价地图是否应与机器人基座标框一起滚动。

跟踪未知空间

类型

默认

布尔值

False

描述

如果为false,则将未知空间视为自由空间,否则视为未知空间。

transform_tolerance

类型

默认

双精度

0.3

描述

TF变换容差。

三值代价地图

类型

默认

布尔值

True

描述

如果占用栅格地图只应解释为三个值(自由、占用、未知),或者与其存储的值一起。

未知代价值

类型

默认

int

255

描述

如果跟踪未知空间,则未知空间的代价。

update_frequency

类型

默认

双精度

5.0

描述

代价地图更新频率。

use_maximum

类型

默认

布尔值

False

描述

在合并代价地图时是否使用最大代价或覆盖。

plugins

类型

默认

字符串向量

{"静态层", "障碍层", "膨胀层"}

描述

参数命名空间和名称的映射插件名称列表。

注意

此列表中定义的每个插件命名空间都需要有一个:code:`plugin`参数,用于定义要加载到该命名空间中的插件类型。

示例:

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"
过滤器

类型

默认

字符串向量

{}

描述

映射的成本地图过滤器名称列表,用于参数命名空间和名称。

注意

成本地图过滤器也可以作为普通成本地图图层一样作为可加载的插件。这种分离是为了避免插件和过滤器的干扰,并将这些过滤器放置在组合分层成本地图的顶部。与插件一样,此列表中定义的每个成本地图过滤器命名空间都需要有一个 plugin 参数来定义要在命名空间中加载的过滤器插件的类型。

示例:

local_costmap:
  ros__parameters:
    filters: ["keepout_filter", "speed_filter"]
    keepout_filter:
      plugin: "nav2_costmap_2d::KeepoutFilter"
    speed_filter:
      plugin: "nav2_costmap_2d::SpeedFilter"

默认插件

当未覆盖 plugins 参数时,将加载以下默认插件:

命名空间

插件

"static_layer"

"nav2_costmap_2d::StaticLayer"

"obstacle_layer"

"nav2_costmap_2d::ObstacleLayer"

"通胀层"

"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