2D代价地图

Github 上的源代码 [校准@小鱼]

2D代价地图包为环境表示和许多传感器处理插件实现了基于2D网格的成本图。它被用在planner和控制器服务器中,用于创造检查碰撞的空间或成本更高的区域进行协商。 [待校准@2617]

2D代价地图的ROS参数 [待校准@2618]

always_send_full_costmap [待校准@2619]

类型

默认值

bool

False

描述

是否每次更新都发送完整的成本图,而不是更新。 [待校准@2620]

footprint_padding [待校准@2621]

类型

默认值

double

0.01 [待校准@2622]

描述

填充面积 (米)。 [待校准@2623]

footprint [待校准@2624]

类型

默认值

向量 <double> [待校准@2625]

“[]” [待校准@2626]

描述

作为string通过的有序足迹点集必须是封闭集。例如,以下定义方形基地边长0.2米 'footprint: “[ [0.1,0.1],[0.1-0.1],[0.1-0.1] [0.1,0.1] ]”。 [待校准@2627]

global_frame [校准@小鱼]

类型

默认值

string

"map"

描述

参考框架。 [待校准@2323]

height [待校准@2628]

类型

默认值

int

5 [待校准@2629]

描述

成本图高度 (米)。 [待校准@2630]

width [待校准@2631]

类型

默认值

int

5 [待校准@2629]

描述

成本图宽度 (米)。 [待校准@2632]

lethal_cost_threshold [待校准@2633]

类型

默认值

int

100 [待校准@2634]

描述

占用网格地图的最低成本被认为是致命的障碍。 [待校准@2635]

map_topic

类型

默认值

string

"map"

描述

地图主题 _ 服务器或SLAM。 [待校准@2636]

observation_sources [待校准@2637]

类型

默认值

string

“” [待校准@2379]

描述

作为string的传感器来源列表,如果在插件特定配置中没有指定,将使用。例如 "static_layer stvl_layer" [待校准@2638]

origin_x [待校准@2639]

类型

默认值

double

0.0

描述

X成本图相对于宽度 (m) 的原点。 [待校准@2640]

origin_y [待校准@2641]

类型

默认值

double

0.0

描述

相对于高度 (m) 的成本图的Y原点。 [待校准@2642]

publish_frequency [待校准@2643]

类型

默认值

double

1.0

描述

将costmap发布到主题的频率。 [待校准@2644]

resolution [待校准@2645]

类型

默认值

double

0.1

描述

成本图1像素的分辨率,以米为单位。 [待校准@2646]

robot_base_frame

类型

默认值

string

"base_link"

描述

机器人基座frame名称。 [校准@小鱼]

robot_radius [待校准@2647]

类型

默认值

double

0.1

描述

如果未提供足迹坐标,则使用机器人半径。 [待校准@2648]

rolling_window [待校准@2649]

类型

默认值

bool

False

描述

costmap是否应该与机器人底架一起滚动。 [待校准@2650]

track_unknown_space [待校准@2651]

类型

默认值

bool

False

描述

如果为false,则将未知空间视为自由空间,否则将视为未知空间。 [待校准@2652]

transform_tolerance

类型

默认值

double

0.3

描述

TF transform tolerance.

trinary_costmap [待校准@2653]

类型

默认值

bool

True

描述

如果占用网格映射应仅解释为3个值 (空闲、占用、未知) 或其存储值。 [待校准@2654]

unknown_cost_value [待校准@2655]

类型

默认值

int

255 [待校准@2656]

描述

如果跟踪它,未知空间的成本。 [待校准@2657]

update_frequency [待校准@2658]

类型

默认值

double

5.0 [待校准@2659]

描述

代价地图更新频率。 [待校准@2660]

use_maximum [待校准@2661]

类型

默认值

bool

False

描述

在组合costmap以使用最大成本还是覆盖时。 [待校准@2662]

plugins [待校准@2663]

类型

默认值

vector<string>

{ "static_layer" 、 "obstacle_layer" 、 "inflation_layer" } [待校准@2664]

描述

参数命名空间和名称的映射插件名称列表。 [待校准@2665]

Note [待校准@2581]

此列表中定义的每个插件命名空间都需要有一个: 代码: plugin 参数,用于定义要在命名空间中加载的插件的类型。 [待校准@2582]

示例: [校准@小鱼]

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 [待校准@2666]

类型

默认值

vector<string>

{} [待校准@2667]

描述

参数命名空间和名称的映射costmap筛选器名称列表。 [待校准@2668]

Note [待校准@2581]

代价地图过滤器也是可加载的插件,就像普通的成本地图层一样。进行这种分离是为了避免插件和过滤器干扰,并将这些过滤器放在组合的分层成本图的顶部。与插件一样,此列表中定义的每个costmap过滤器命名空间都需要有一个: code: plugin 参数,用于定义要在命名空间中加载的过滤器插件的类型。 [待校准@2669]

示例: [校准@小鱼]

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

默认插件 [待校准@2606]

当: code: plugins 参数未重写时,将加载以下默认插件: [待校准@2670]

命名空间

Plugin [校准@小鱼]

"static_layer"

"nav2_costmap_2d::StaticLayer"

"obstacle_layer"

"nav2_costmap_2d::ObstacleLayer"

"inflation_layer"

"nav2_costmap_2d::InflationLayer"

插件参数 [待校准@2677]

代价地图过滤器参数 [待校准@2678]

Example

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