3. 环境建模与动态障碍表征
动态航迹规划的第一步不是“算路径”,而是把连续、复杂、不断变化的飞行环境,转换成规划器能够计算和推理的数据结构。同一片空域,用不同建模方式表达,会直接决定后续算法能处理什么、算得多快、以及能否安全避障。本节围绕栅格地图、路图、势场、高程图、概率占据地图五类静态/半静态表示,以及动态障碍物的时空描述方法展开,重点说明每种表示的适用场景、关键参数与实现要点。
一、栅格地图:最通用的离散占据表示
栅格地图把三维空域按分辨率 r 切成规则立方体单元,每个单元记录一个占据状态。最常用的是二值占据:0 表示自由,1 表示障碍。给定空域范围 [xmin,xmax]×[ymin,ymax]×[zmin,zmax],栅格尺寸为:
Nx = ceil((xmax - xmin) / r)
Ny = ceil((ymax - ymin) / r)
Nz = ceil((zmax - zmin) / r)
index(i,j,k) = i + j*Nx + k*Nx*Ny
分辨率是核心权衡:r 越小,障碍边界越精细,但内存与搜索节点数按 1/r³ 增长。例如 1 km×1 km×200 m 空域,r=10 m 时约 20 万格,r=5 m 时约 160 万格。工程上常对栅格做膨胀处理,把障碍按无人机安全半径 Rs 外扩 ceil(Rs/r) 格,使规划器可把无人机当作质点处理,代价是损失部分可通行空间。
二、路图:把连续空间压缩成图
路图不保留全部栅格,只保留“值得走”的骨架。常见三类:可视图(Visibility Graph)连接障碍顶点间的可视连线,适合多边形障碍的二维最短路径;Voronoi 图取到最近障碍等距的脊线,天然远离障碍,安全性好但路径偏长;概率路图(PRM)在自由空间随机采样 N 个点,对距离小于 dmax 且连线无碰撞的点对连边,适合高维或复杂三维空间。路图把搜索空间从数十万栅格降到数百至数千节点,A*、Dijkstra 可直接在其上运行。
三、势场与高程图
人工势场法把目标设为引力源、障碍设为斥力源,合力方向即期望航向。引力常取 Fatt = katt·(p - pgoal),斥力在障碍影响半径 ρ0 内按 Frep = krep·(1/ρ - 1/ρ0)·(1/ρ²) 增大。它计算极快、适合在线局部避障,但存在局部极小值陷阱,通常与全局规划器配合使用。
高程图(Elevation Map)是面向地形的 2.5D 表示:把水平面划成网格,每格只存一个高程值 h(i,j),常用于低空突防、地形跟随。它比三维栅格省内存,但无法表达桥洞、悬垂等真正的三维结构,遇到多层障碍需改用体素或分层高程图。
四、概率占据地图:处理不确定性
真实感知有噪声,同一格可能时有时无。概率占据地图用 P(occ)∈[0,1] 表示占据概率,并用对数几率 L = log(P/(1-P)) 做贝叶斯更新,避免连乘下溢:
L_new = L_old + L_meas - L_prior
L_meas = log(P(z|occ) / P(z|free))
传感器命中障碍时 L_meas>0,探测到自由时 L_meas<0。当 P(occ)>0.7 判为障碍,<0.3 判为自由,中间为未知区。未知区在规划中通常按“保守可通行”或“禁止进入”两种策略处理,取决于任务风险等级。
五、动态障碍物的时空描述
静态地图只回答“哪里不能走”,动态障碍还要回答“什么时候不能走”。常用两种描述:
- 时空栅格/时空体素:在
(x,y,z,t)四维空间标记占据,规划时把时间作为搜索维度,得到带时间戳的航迹。 - 运动学预测包络:对每个动态障碍给出位置
p(t)与不确定半径R(t),用膨胀球或扫掠体表示其未来占据区域。例如匀速直线运动障碍在t时刻的包络为以p0+v·t为心、R0+σ·t为半径的球,σ反映预测误差随时间增长。
工程上常把动态障碍按预测时域 Th 离散成若干时间片,每片生成一张占据栅格,规划器在时间维上做滚动窗口搜索。预测时域越长,保守性越强,可通行窗口越窄,因此需要与重规划周期匹配。
六、建模选择与参数建议
实际系统中很少只用一种表示。典型组合是:用概率占据地图融合激光/视觉/雷达,得到带不确定性的静态代价地图;用高程图叠加地形约束;用路图或栅格做全局搜索;用势场做局部避障;动态障碍则用预测包络在时间维上生成滚动窗口。选择时重点看三个量:空域规模、障碍密度、动态目标数量。空域大且障碍稀疏时优先路图;障碍密集且需精细边界时用栅格;感知噪声大时必须用概率占据;动态目标多且预测可靠时用时空体素,预测误差大时用膨胀包络更稳妥。