Smac混合A*规划器

由Smac Hybrid-A*生成的路径

<name> 是为此类型选择的相应规划插件的标识符。

参数

<name>.downsample_costmap

类型

默认

布尔值

False

描述

是否将代价地图降采样到另一个分辨率以进行搜索。

<name>.downsampling_factor

类型

默认

int

1

描述

代价地图降采样的乘数因子(例如,如果2 downsample_factor 的代价地图为5cm,则输出为10cm)。

<name>.允许未知区域

类型

默认

布尔值

True

描述

是否允许在未知空间中进行穿越/搜索。

<name>.容差

类型

默认

双精度

0.25

描述

如果无法找到精确的路径,则允许偏离所请求姿态的公差(由启发式的目标代价测量)可接受的程度。

<name>.max_iterations

类型

默认

int

1000000

描述

在超过最大搜索迭代次数之前进行搜索的最大次数,如果设为-1,则不限制计算时间。

<name>.max_on_approach_iterations

类型

默认

int

1000

描述

一旦访问的节点在目标容差范围内,最大迭代次数,继续尝试找到精确匹配之前,在容差范围内返回最佳路径解决方案。负值转换为无穷大。

<name>.max_planning_time

类型

默认

双精度

5.0

描述

规划的最长时间(以秒为单位)。

<name>.analytic_expansion_ratio

类型

默认

双精度

3.5

描述

规划器将尝试以与该值和最小启发式成正比的频率完成解析扩展。

<name>.analytic_expansion_max_length

类型

默认

双精度

3.0

描述

如果长度太长,则拒绝此扩展。这可以防止搜索在离目标很远的位置进行快捷方式计算(例如,不要在开放地图的中途倒车或穿过高代价区域)。这个值不应小于正在使用的最小转弯半径的4-5倍,否则规划时间将开始波动上升。

<name>.motion_model_for_search

类型

默认

string

"DUBIN"

描述

运动模型枚举字符串用于搜索。对于混合A*节点,默认值为"DUBIN"。SE2的选项为DUBIN或REEDS_SHEPP。

<name>.angle_quantization_bins

类型

默认

int

72

描述

用于SE2搜索的角度分段数。可以是任意偶数,但基准值为64或72(以5度递增)。

<name>.minimum_turning_radius

类型

默认

双精度

0.4

描述

车辆的最小转弯半径(以米为单位)。在平滑器中也用于计算最大曲率。

<name>.reverse_penalty

类型

默认

双精度

2.0

描述

如果在反向搜索中,对SE2节点应用启发式惩罚。仅在``REEDS_SHEPP``运动模型中使用。

<name>.change_penalty

类型

默认

双精度

0.0

描述

如果在搜索中改变方向(例如从左向右),对SE2节点应用启发式惩罚。在改变后默认禁用,以保证Hybrid-A*规划器的合理性。

<name>.non_straight_penalty

类型

默认

双精度

1.20

描述

如果在非直线方向搜索,应用于SE2节点的启发式惩罚。

<name>.cost_penalty

类型

默认

双精度

2.0

描述

启发式惩罚应用于姿态成本的SE2节点。允许混合A*算法具有成本感知能力。

<name>.retrospective_penalty

类型

默认

双精度

0.015

描述

启发式惩罚应用于SE2节点的惩罚。导致混合A*算法更喜欢路径上较晚的机动动作而不是较早的动作。节省搜索时间,因为较早(较短)的分支在必要时不会被扩展。必须 >= 0.0 并且 <= 1.0。必须为`0.0`以完全符合要求。

<name>.lookup_table_size

类型

默认

双精度

20.0

描述

以米为单位的Dubin/Reeds-Sheep距离窗口的大小。用于缓存。

<name>.viz_expansions

类型

默认

布尔值

false

描述

是否将扩展发布到``/expansions``主题上,以位姿数组的形式(方向无意义)。警告:计算和显示开销较大,仅用于调试,因为它会降低性能。

<name>.cache_obstacle_heuristic

类型

默认

布尔值

false

描述

在同一目标位置的后续重新规划之间缓存障碍地图动态规划距离扩展启发式。如果代价地图基本静态,可以显著加快重新规划的性能(40倍)。

<name>.smooth_path

类型

默认

布尔值

true

描述

如果为true,则对搜索路径进行简单且快速的平滑后处理。

<name>.smoother.max_iterations

类型

默认

int

1000

描述

平滑器用于平滑路径的最大迭代次数,以限制潜在的计算量。

<name>.smoother.w_smooth

类型

默认

双精度

0.3

描述

平滑器应用于平滑数据点的权重。

<name>.smoother.w_data

类型

默认

双精度

0.2

描述

平滑器应用于保留原始数据信息的权重。

<name>.smoother.tolerance

类型

默认

双精度

1e-10

描述

平滑会话终止的参数容差变化量。

<name>.smoother.do_refinement

类型

默认

布尔值

true

描述

执行额外的细化平滑运行。基本上,这会递归调用平滑器,使用上一次平滑周期的输出进一步平滑路径以获取宏观趋势。这通常改善了质量,尤其是在混合A*规划器中,因为由于非常小的基元长度,它可能产生额外的"摆动",但可能会使路径稍微靠近某些障碍物。

<name>.smoother.refinement_num

类型

默认

int

2

描述

递归尝试平滑的次数,必须 >= 1

示例

planner_server:
  ros__parameters:
    planner_plugins: ["GridBased"]
    use_sim_time: True

    GridBased:
      plugin: "nav2_smac_planner/SmacPlannerHybrid"
      downsample_costmap: false           # whether or not to downsample the map
      downsampling_factor: 1              # multiplier for the resolution of the costmap layer (e.g. 2 on a 5cm costmap would be 10cm)
      tolerance: 0.25                     # dist-to-goal heuristic cost (distance) for valid tolerance endpoints if exact goal cannot be found.
      allow_unknown: true                 # allow traveling in unknown space
      max_iterations: 1000000             # maximum total iterations to search for before failing (in case unreachable), set to -1 to disable
      max_on_approach_iterations: 1000    # Maximum number of iterations after within tolerances to continue to try to find exact solution
      max_planning_time: 5.0              # max time in s for planner to plan, smooth
      motion_model_for_search: "DUBIN"    # Hybrid-A* Dubin, Redds-Shepp
      angle_quantization_bins: 72         # Number of angle bins for search
      analytic_expansion_ratio: 3.5       # The ratio to attempt analytic expansions during search for final approach.
      analytic_expansion_max_length: 3.0  # For Hybrid/Lattice nodes: The maximum length of the analytic expansion to be considered valid to prevent unsafe shortcutting
      minimum_turning_radius: 0.40        # minimum turning radius in m of path / vehicle
      reverse_penalty: 2.0                # Penalty to apply if motion is reversing, must be => 1
      change_penalty: 0.0                 # Penalty to apply if motion is changing directions (L to R), must be >= 0
      non_straight_penalty: 1.2           # Penalty to apply if motion is non-straight, must be => 1
      cost_penalty: 2.0                   # Penalty to apply to higher cost areas when adding into the obstacle map dynamic programming distance expansion heuristic. This drives the robot more towards the center of passages. A value between 1.3 - 3.5 is reasonable.
      retrospective_penalty: 0.015
      lookup_table_size: 20.0             # Size of the dubin/reeds-sheep distance window to cache, in meters.
      cache_obstacle_heuristic: false     # Cache the obstacle map dynamic programming distance expansion heuristic between subsiquent replannings of the same goal location. Dramatically speeds up replanning performance (40x) if costmap is largely static.
      viz_expansions: false               # For Hybrid nodes: Whether to publish expansions on the /expansions topic as an array of poses (the orientation has no meaning). WARNING: heavy to compute and to display, for debug only as it degrades the performance.
      smooth_path: True                   # If true, does a simple and quick smoothing post-processing to the path

      smoother:
        max_iterations: 1000
        w_smooth: 0.3
        w_data: 0.2
        tolerance: 1.0e-10
        do_refinement: true
        refinement_num: 2