FAPP: Fast and Adaptive Perception and Planning for UAVs in Dynamic Cluttered Environments
FAPP (Fast and Adaptive Perception and Planning) 采用几何聚类结合运动估计的点云分割方法,无需依赖 GPU 即可区分快速动态与静态目标。

1. 动态环境感知
1.1 坐标系变换与增量 KD 树
- 将点云从传感器局部坐标系 $B$ 变换到全局坐标系 $W$。
- 建立增量 KD 树(I-KD Tree)来维护最近 $F$ 帧的点集合 $\xi$。点集合通过增删操作动态更新:
- $\xi \subseteq { W P_j }_{j \in [k-F, k-1]}$
- I-KD Tree 使 $\xi$ 保持合适大小并在 3D 空间上较均匀分布,较好地表示最近几帧扫描得到的障碍物空间分布信息。
为什么要让点在 $\xi$ 中'均匀分布'?
- 如果历史点云过密(如静止墙被重复扫描),KD 树查询距离几乎为 0,会掩盖其他动态物体;
- 如果过稀,则动态检测不稳定。
为什么用 KD Tree?
- KD Tree 是空间索引结构,用于快速做最近邻搜索。查询时给定一点 $p$,快速找到 $\xi$ 中离 $p$ 最近的点。
- I-KD Tree 是增量式 KD 树,新帧到来时不重新建树,而是增量更新,保留历史点云的结构信息,用于判断点是否新出现或物体是否移动。
为什么要保存多帧(而不是只上一帧)?
- 保存多帧让'静态结构'在时间上积累密度,而'动态物体'因移动形成稀疏或拖尾现象。
KD Tree 中的内容注意不是 $\xi$?
- $\xi$ 中包含多个时间戳的点云(混在一起),而非分开存储。
- 若这几帧点云合在一起形成稠密点簇,KD Tree 查询的最近距离 $d_n \approx 0$,说明'它在过去多帧都出现过 → 静态'。
1.2 区分动态/静态点云
对当前帧点云 $W P_k$ 使用 DBSCAN 聚类,得到 $m$ 个簇 $C_k = {C_1, \dots, C_m}$。对每个簇,根据阈值 $h_1, h_2$ 判定三类状态:
- Case 1(持续移动物体):$T_1 > h_1$ 且 $T_2 < h_2$。
- 真正移动的物体,当前点到历史点云的最近距离较大(大 $T_1$),且投影相对一致,$d_n$ 分布较均匀(小 $T_2$)。
- Case 2(静态物体):$T_1 < h_1$。
- 曾在历史帧中出现且未移动,点到历史点云的最近距离应在传感器测量误差范围内(小 $T_1$)。
- Case 3(未知物体):$T_1 > h_1$ 且 $T_2 > h_2$。
- 包括之前被移动物体遮挡的静态物体,或新进入视野的物体。点到历史点的距离不均匀(有些近有些远),$T_2$ 较大。
参数选择:
- $\varepsilon$(邻域半径)与
min_samples决定聚类颗粒度。


