Smac状态格规划器
<name>
是为此类型选择的相应规划插件的标识符。
注意:由于最小控制集与生成时的地图分辨率相关联,状态格没有成本地图降采样器。最小转弯半径也不是状态格的参数,因为这在最小控制集预计算阶段已经确定。请查看Smac Planner包以生成适用于您的车辆的自定义控制集,或使用我们预先生成的示例之一。
如上图所示,您可以看到启用了反向扩展,这样机器人就能够倒车到靠近障碍物的狭小空间中。
参数
<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
- 描述
SE2节点将尝试按比例于该值和最小启发式频繁地完成分析扩展。负值将转换为无穷大。
<name>
.analytic_expansion_max_length类型
默认
双精度
3.0
- 描述
如果长度太长,则拒绝此扩展。这可以防止搜索在离目标很远的位置进行快捷方式计算(例如,不要在开放地图的中途倒车或穿过高代价区域)。这个值不应小于正在使用的最小转弯半径的4-5倍,否则规划时间将开始波动上升。
<name>
.reverse_penalty类型
默认
双精度
2.0
- 描述
如果在反向搜索中,对SE2节点应用启发式惩罚。仅在``allow_reverse_expansion = true``时使用。
<name>
.change_penalty类型
默认
双精度
0.05
- 描述
如果搜索中更改方向(例如从左到右),则要应用于SE2节点的启发式惩罚。
<name>
.non_straight_penalty类型
默认
双精度
1.05
- 描述
如果在非直线方向搜索,应用于SE2节点的启发式惩罚。
<name>
.cost_penalty类型
默认
双精度
2.0
- 描述
如果姿态的成本发生变化,要应用于SE2节点的启发式惩罚。允许状态格具有成本感知性。
<name>
.rotation_penalty类型
默认
双精度
5.0
- 描述
对于原地旋转而言,要应用的惩罚,如果最小控制集包含原地旋转。应始终将其设置为足够高的值,以便权衡原地旋转,除非对于避障来说绝对必要,否则计划中可能会出现频繁的不连续性,计划要求机器人原地旋转以便节省路径距离。
<name>
.retrospective_penalty类型
默认
双精度
0.015
- 描述
对SE2节点应用启发式惩罚。使状态网络在路径上更喜欢较晚的操作而不是较早的操作。这样可以节省搜索时间,因为较早(较短)的分支直到必要时才会被展开。必须 >= 0.0 并且 <= 1.0。必须为 0.0 才能完全符合要求。
<name>
.lattice_filepath类型
默认
string
""
- 描述
状态网络最小控制集图的文件路径,默认为一个16个bin、0.5m转弯半径的控制集,位于
test/
用于基本测试和评估(与Hybrid-A*默认的0.5m相对)。
<name>
.lookup_table_size类型
默认
双精度
20.0
- 描述
以米为单位的Dubin/Reeds-Sheep距离窗口的大小。用于缓存。
<name>
.cache_obstacle_heuristic类型
默认
布尔值
false
- 描述
在同一目标位置的后续重新规划之间缓存障碍地图动态规划距离扩展启发式。如果代价地图基本静态,可以显著加快重新规划的性能(40倍)。
<name>
.allow_reverse_expansion类型
默认
布尔值
false
- 描述
如果为真,则允许机器人使用基元在当前机器人方向的镜像相反方向(即反向)进行扩展。
<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/SmacPlannerLattice"
allow_unknown: true # Allow traveling in unknown space
tolerance: 0.25 # dist-to-goal heuristic cost (distance) for valid tolerance endpoints if exact goal cannot be found.
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
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
reverse_penalty: 2.0 # Penalty to apply if motion is reversing, must be => 1
change_penalty: 0.05 # Penalty to apply if motion is changing directions (L to R), must be >= 0
non_straight_penalty: 1.05 # 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.
rotation_penalty: 5.0 # Penalty to apply to in-place rotations, if minimum control set contains them
retrospective_penalty: 0.015
lattice_filepath: "" # The filepath to the state lattice graph
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.
allow_reverse_expansion: false # If true, allows the robot to use the primitives to expand in the mirrored opposite direction of the current robot's orientation (to reverse).
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