0. Planning 路径规划指南
autonomy/planning:全局路径规划,对齐 nav2 nav2_planner。输入起终点 + Costmap2D,输出 planning_msgs::Path。
本文 §0 |
其他文档 |
|---|---|
快速开始、配置、排错 |
0.1 文档地图
角色 |
阅读顺序 |
|---|---|
新手 |
|
集成 |
§0.2、§0.5、§0.8 → §6.6 选型 |
算法 |
§ |
文档 |
内容 |
|---|---|---|
0 |
本指南 |
上手、配置、排错 |
1 |
分层、GetPlan、插件加载 |
|
2 |
三插件对比与索引 |
|
3–5 |
NavFn · Dijkstra · Theta* |
算法专题 |
6 |
历史、分类、选型 |
0.2 快速开始
config/planner/planner.lua— 启用插件、设default_planner_idconfig/autonomy.lua—planning = AUTONOMY_PLANNER启动后
Autonomy构造PlannerServer
default_planner_id = "navfn_planner"
planner_plugins = { "navfn_planner", "dijkstra_planner", "theta_star_planner" }
auto server = std::make_shared<PlannerServer>(CreateOptions("config"));
auto path = server->GetPlan(start, goal, "navfn_planner", []{ return false; });
0.3 问题形式化
求 \(\tau:[0,1]\to\mathcal{C}_{\mathrm{free}}\),\(\tau(0)=q_s\),\(\tau(1)=q_g\),最小化路径长度与障碍代价:
离散栅格 \(C\) 上由各插件搜索;分类与约束见 §6.3。
0.4 代价地图
规划读 Costmap2D 快照;代价值为各插件公共输入。
值 |
含义 |
NavFn |
Theta* |
|---|---|---|---|
0 |
FREE |
通行 |
通行 |
1–252 |
梯度 |
\(F_{ij}=C_n+\kappa_F c_{ij}\) |
\(\tau(n)\propto c_n/252\) |
253 / 254 |
INSCRIBED / LETHAL |
阻塞 |
LOS 阻塞 |
255 |
UNKNOWN |
|
|
NavFn 参数推导 §3 NavFn §3.2;图层与膨胀 Map · Costmap2D、§1.2.1。
0.5 配置与 API
config/planner/planner.lua
字段 |
说明 |
默认建议 |
|---|---|---|
|
默认插件 |
|
|
启用列表 |
三插件 |
|
DP 简化,0=关 |
|
|
规划后平滑 |
|
|
全局地图子配置 |
见 Map 文档 |
PlannerServer
API |
用途 |
|---|---|
|
单次规划 |
|
路径仍可行? |
|
共享 costmap |
节点 planner_server。分层、插件加载、扩展见 §1。
0.6 路径后处理
由 §0.5 中 path_simplify_epsilon、auto_smooth_after_plan 控制;默认均关(简化可能使绕障路径坍缩)。流水线位置见 §1.3。
0.7 插件扩展
0.8 故障排查
现象 |
先查 |
|---|---|
|
连通性、 |
|
位姿、膨胀半径 |
|
|
|
|
穿墙 / 贴障 |
膨胀、 |
路径锯齿 |
|