kd-tree在三维点云中的应用 Label: Research
kdtree在三维点云中的应用包括但不限于:
- 快速查找最近邻点
- 在点云中进行快速的区域搜索
- 用于三维点云的欧式聚类
kdtree的构建就是按照某种顺序将无序化的点云进行有序化排列,方便进行快捷高效的检索。
kdtree的构建算法如下:
- 对于一个由n维数据构成的数据集,首先寻找方差最大的那个维度,设这个维度是d,然后找出在维度d上所有数据项的中位数m,按m划分数据集,一分为二,记这两个数据子集为 Di,Dr。
- 对于每个子集,重复步骤1,直到子集中只有一个数据项为止。
最近看到一篇文章自旋转无人机的文章颇有受用,在此分享:A self-rotating, single-actuated UAV with extended sensor field of view for autonomous navigation | Science Robotics
这篇文章是关于无人机的视觉感知和环境探索。文章介绍了一种新型的无人机,名为PULSAR,它可以通过自旋来扩展传感器的视野,而不需要额外的能量消耗。PULSAR只需要一个电机就可以控制其三维位置,而且比基准四旋翼消耗的能量少了26.7%。PULSAR还配备了一种激光雷达传感器,可以在全景视野中执行自主导航并检测静态和动态障碍物。
除了测程法,自主飞行和动态避障的另一个基本要求是表示飞行环境中静态和动态障碍物的地图。作者开发了一张地图,称为增量k维森林(ikd-forest,见图1),它是增量k维树(ikd树)的集合,每个树都包含在一个体素中(立方边长为1 m)。ikd树首先根据规定的分辨率(0.1 m)仅保留最中心的点,从而对相应体素中的点进行降采样。然后,将保留的点组织成k维树结构,以实现高效的最近邻搜索。ikd树具有增量更新(插入和删除)和动态重新平衡的优点,这些优点都被ikd-forest继承。此外,与将所有点构建到大树中的 ikd 树相比,ikd 森林实现了更高的效率,因为每个体素中每个 ikd 树的树大小大大减少。
在ikd树的每个节点上,它保存点坐标。为了区分动态对象上的点和静态对象上的点,节点上还保存了两个额外的时间特征:命中点计数器和最后一个命中点时间戳。命中点计数器记录与节点上的点(即最中心的点)太近(即在分辨率 0.1 m 内)的点数,尽管这些非最中心的点已被缩减采样删除。最后一个命中点时间戳表示最后一个命中点到达节点的时间戳。