基于点云的无人机轨迹生成方法与流程

文档序号:16935142发布日期:2019-02-22 20:37阅读:680来源:国知局
基于点云的无人机轨迹生成方法与流程

本发明涉及一种基于点云的无人机轨迹生成方法,属于虚拟现实技术领域。



背景技术:

目前,无人飞行器,特别是小型无人机以其成本低、安全等特点,逐步在航拍、植保、农业、快递运输、微型自拍、观察野生动物、灾难救援、测绘、监控传染病、电力巡检、新闻报道、救灾、影视拍摄等方面得到广泛的应有。

同时,随着时代的发展,三维的物体或者场景模型的需求也越来越多。但现在以谷歌地图为代表的很多厂商建模时使用的多为2.5d的模型,而非3d的模型,大部分是一些卫星照片和高飞拍照。并且一些重要的建筑物是人工作业建模,不仅效率低下,而且精度不尽如人意。如果想要获得高精度非人工的三维模型,可以使用雷达,然而雷达的成本过于昂贵,很难推广到普通的商用或者民用。

无人机的迅速发展使得高效以及低成本的获取航拍图像成为了可能。而三维扫描技术的飞速发展,也使得三维点云模型的获取越来越容易,精度也在逐步提高。所以,基于点云模型的无人机三维场景重建技术应运而生。

基于点云的无人机三维场景重建技术不仅能解决三维场景重建中的成本问题,而且重建模型的精度亦能达到一定的要求。但是由于实际物体表面的形状复杂性、扫描设备的扫描方法的局限及一些视线的遮挡,阳光的反射等等原因,导致三维点云模型的损坏,造成三维点云模型的数据缺失。所以,无人机扫描重建出的三维点云模型中时常会出现孔洞,因此如何评价三维点云模型,找出漏洞并且基于此点云模型漏洞重新生成无人机飞行扫描轨迹,从而修补漏洞仍需进一步深入研究。

有鉴于此,特提出本专利申请。



技术实现要素:

本发明所述基于点云的无人机轨迹生成方法,其目的在于解决上述现有技术存在的问题而包含点云模型的评价与无人机路径轨迹的生成,针对输入的点云模型进行分析与评价以找出孔洞的区域。在生成无人机路径轨迹中,先把找出的孔洞区域进行区分与整理,结合场景信息来进行路径轨迹生成,最后由无人机沿着规划的路径飞行以将点云模型的孔洞区域逐一扫描修复。

为了实现上述发明目的,基于点云的无人机轨迹生成方法主要包括有以下实施步骤:

步骤(1)、点云模型输入阶段

使用无人机扫描场景生成点云模型,将点云模型输入系统,并对点云模型进行预处理;

步骤(2)、点云模型评价阶段

基于步骤(1)中获取的点云模型构建kd-树(kd-树,k-dimensional树的简称,是一种分割k维数据空间的数据结构,主要应用于多维空间关键数据的搜索),根据kd-树查找点的k邻点、以及计算法向量;

通过边界点判别方法,判别点是否为边界点以找到模型中的空洞部分;

步骤(3)、路径轨迹生成阶段

基于通过寻找最近点的孔洞集合区分算法,将每个孔洞区分开来;

使用球模型构建道路图;

在道路图上寻找相机视点最短路径,进行路径规划并优化;

步骤(4)、结果输出阶段

将步骤(3)中优化后的路径轨迹输入无人机,使用无人机沿规定的路径飞行并扫描,将点云模型的空洞区域进行扫描修复。

以上是本申请的基础方案,针对上述步骤(2)的进一步细化与优选设计是,对于三维点云模型中的每个点p,k个与点p欧氏距离最短的点即为该点p的k邻点;

设п为一个有序的序列、且满足以下公式(1),

||pπ(1)-p||>0,||pπ(i)-p||<||pπ(i+1)-p||,i∈[1,n-1](1)

点云数据点p的k邻点的集合表示为以下公式(2),

在点云模型中,集合npk近似地为一个空间球,该空间球的球心是数据点p,半径为k邻点中与点p欧氏距离的最大值,当且仅当i∈npk时,pi位于该空间球内。

在上述步骤(2)中,基于对整个点云模型进行kd-树划分,具有以下查找k邻点的流程:

首先,从kd-树的根节点处开始查找,按照目标数据点的空间坐标,向下查找,直到找到该数据点所在的叶子节点空间;

然后,设定一个初始半径r1,开始回溯查找,对于与目标点的欧氏距离小于等于r的点,即在一个以目标点为球心,半径为r1的球内的所有数据点都添加到一个升序的序列q中;而该序列的长度只有k,每次添加新的数据点时,就使用插入排序的方法来进行维护;

对于回溯过程中,非叶子节点的切割超平面到目标点的距离大于r的,只查找其左子树;否则,左右子树都需查找;若最后q的数据点总数小于k,则增大半径r1,得到r2,再用r2替换r1;再重复上述过程。

最终,序列q为目标点的k邻点序列。

在上述步骤(2)中,采用协方差分析算法来计算目标点p的法向量,即寻找目标点p的k邻点,使用k邻点与目标点p构造一个协方差矩阵,计算该矩阵的特征向量以及特征值来分析获得目标点p的法向量。

具体地,对于点云模型中的一点p,求得其k邻点集合n(p),如以下公式(4)所示,n(p)={pi|pi∈p,‖pi-p‖≤r}(4)

其中,p为点云数据点集合,r为k邻点与点p最大的欧氏距离;

用k邻点集合n(p)构造协方差矩阵如以下公式(5)所示,

其中,o为k邻点集合的点的平均值,即如以下公式(6)所示,

o是k邻点集合的质心,由于是三维的坐标系,所以协方差矩阵e必定是一个3x3的对称矩阵;

使用雅各比迭代算法来计算协方差矩阵e的特征值λ0、λ1、λ2(λ0>λ1>λ2)以及特征向量v0、v1、v2;协方差矩阵e的法向量的近似值为最小的特征值λ2所对应特征向量v2。

在上述步骤(2)中,采用最大角度度量、半径圆盘度量、形状度量三种度量准则来判断目标点是否是孔洞边界点;

即先设置一个经实验确定的阈值,通过上述三种不同的度量准则各计算出一个概率;然后,将三个概率加权合并成一个概率值,再与预先设定的阈值对比;

达到阈值的点,即为孔洞的边界点;

具体如以下公式(7)所示,

p(p)=wxp1(p)+w2p2(p)+w3p3(p)(7)

其中,权值和为1。

最大角度度量准则,可计算得到一个边界点概率p1;

半径圆盘度量准则,可计算得到一个边界点概率p2;

形状度量准则,可计算得到边界点概率p3;

这三种度量准则各有各自的优劣。

对于一些较小的模型里的小孔洞检测,半圆盘度量准则比最大角度度量准则和形状度量准则更准确,更具有优势。

而对于孔洞轮廓的精确性来说,最大角度度量准则比其它两种度量准则更适合。虽然其它两种度量准则也能够正常检测出孔洞的轮廓,但有极大的可能性会出现非孔洞边界点被认为是孔洞边界点的情况,即冗余点。而最大角度度量准则没有这个问题,更加精确。

对于噪点多的点云模型,形状度量准则就展现其优越性,具有比其它两种度量准则更加好的效果。

为了使最终效果更加好,点云孔洞判断更精确,本申请采用了结合三种度量准则的加权度量准则,即把三种度量方式所得到的p1,p2,p3各自加权求和,得到一个概率,再用该概率与预设的阈值比较,来判断是否为孔洞边界点。

在上述步骤(3)中,孔洞集合区分算法包括以下实施步骤:

在边界点集合p中,随机选取一点作为起始点,求得该点最近点,将两点相连,将两点存为a点和b点,并将两点从集合p中删除,置于集合p1;

分别计算a点与b点距离各自的最近点的长度,得到la与lb;比较la与lb,取较短的一边为新的扩展点,将新扩展点从集合p中删除,置于集合p1;替换a点与b点的值;直到集合p为空;

根据得到的集合p1,计算边界线长度集合l,长度差集合m;

判断集合m中每个元素,若大于平均值m加阈值ψ,则把该线段对应的两点存入切割集合t中;

根据集合t,切割孔洞区域,得到封闭孔洞区域集合。

在上述的步骤(3)中,在构建道路图之前填充整个三维点云模型的空隙,其流程如下:

在点云模型坐标数据最大值与最小值之间,随机取点;

判断该点是否满足球心条件,即直接求得该点与已有填充球的球心距离l,若距离l小于半径,则认为该点在填充球内;

若该点满足球心条件,即该点既不属于点云模型也不包含在任何已有填充球中;则以该点为球心,半径为距离球心最近的点云数据点与球心的欧氏距离(小于一个设定的阈值);

不断重复上述过程,直到无法找到满足成为球心的点;

连续多次(连续的次数可根据实验结果确定)皆是不满足球心条件的点时,则认为三维点云模型的空隙已经被填满。

在上述步骤(3)中,使用球模型构建道路图,包括:

构造顶点集阶段,即把填充球与填充球之间的相交区域提取出来,得到顶点集v。即当两个填充球的球心间距小于两球的半径之和时,则计算两球的相交区域,顶点为相交区域的随机一点;

连边建图阶段,对于顶点集v中两个位于同一个填充球的顶点,不需要进行碰撞检测,直接相连,路径边的权值为两点的欧氏距离与不可见度信息(不可见度信息=10-可见度信息)的和,对于同一个球内可见度设为10;若相邻顶点所位于的填充球为孔洞区域填充球,则不能直接相连;需要先进行碰撞检测;碰撞检测使用光线投射(raycasting)算法,可以判断一条线与点云模型是否产生碰撞;基本思想是把点云模型细化成不同的面,计算线段与该平面的交点;若交点在面内,则认为产生了碰撞;对于本申请中线段经过的附近空间中的数据点,使用k邻点计算该点处的拟合平面,再计算线段与拟合平面的交点;

生成附加信息阶段,计算可见性信息作为该道路图中的附加信息;可见度计算方法,使用的是蒙特卡洛光线追踪算法;该算法的具体实施过程是,从某个填充球上面随机地选择一点向另外的球体上的发射一条射线,落点选择随机;并记录该射线在发射过程中是否与点云模型产生了碰撞;不断重复上述过程;

没有受到阻挡的射线在总发射的射线中的比例即为两个球体之间的可见度;可见度信息存为百分比的十倍。

在上述步骤(3)中,生成并优化无人机的路径轨迹需经过每一个孔洞区域,包括以下两部分:

1)、生成节点遍历顺序队列

使用贪心算法以生成一个涵盖了所有的孔洞区域的节点遍历顺序队列;

首先,随机选择一个孔洞区域a作为起始区域;本申请中,一般选择最靠右上角的区域作为起始区域;

然后,计算所有的孔洞区域与该孔洞区域的距离;选择距离最短的孔洞区域作为下一个起始区域,并将孔洞区域a加入到节点遍历顺序队列,从孔洞区域集合中删除a;

重复执行上述过程,直到孔洞区域集合为空。

2)、生成无人机的路径轨迹

使用dijkstra算法计算节点遍历顺序队列的相邻两点的最短路径,该最短路径即为这两个孔洞区域的路径;

对于不能找到最短路径到达的点,主要原因是填充球并没有完美填充所有的点云模型空隙;则找出在两个孔洞区域直线距离上的可见度信息较高的两个填充球;将这两个填充球任意选择两个点连接起来,要求满足不会发生碰撞的条件;边的权值为两点的欧氏距离与不可见度信息之和;再进行最短路计算;

具体的算法步骤是,首先,节点遍历队列队首元素出队;然后,计算该孔洞区域与新队首元素的最短路,添加到无人机路径轨迹中;直到队列中只剩下一个元素,停止算法。

无人机轨迹路径生成完成。

综上内容,本申请基于点云的无人机轨迹生成方法具有的优点是:

1、现有的寻找孔洞的方法虽然稳定,鲁棒性好,可并不适用于本申请所针对的点云模型。本申请针对的是封闭的点云模型,而针对的目标点云是非封闭性的,有明显的边界。基于类似的算法,加入了筛选模型边界点的阶段,从而大大提高了运行效率,降低了时间复杂度。

2、本申请采用通过寻找最近点的孔洞集合区分算法,能够将每个孔洞区域区分开来。在此基础上使用球模型构建道路图并在道路图上寻找相机视点最短路径,对路径进行优化,可直接降低构建无人机路径的耗时,减少构建出来的道路图中的冗余点,提高查找的效率。

附图说明

图1是本申请基于点云的无人机轨迹生成方法流程图;

图2是评价无人机轨迹的流程图;

图3是k邻点平面示意图;

图4是kd-树的平面切割示意图;

图5是kd-树的三维切割示意图;

图6是k邻点查找过程示意图。

具体实施方式

下面结合附图和实施示例对本发明作进一步详细地描述。

本申请中无人机轨迹生成的主要方式,是通过对先前已建立的点云模型进行点云评价,基于评价结果找到的空洞信息生成合理高效的无人机轨迹。

如图1所示,基于点云的无人机轨迹生成方法包括以下流程步骤:

步骤(1)、点云模型输入阶段

使用无人机扫描场景生成点云模型,将点云模型输入系统,并对点云模型进行预处理;

步骤(2)、点云模型评价阶段

基于步骤(1)中获取的点云模型构建kd-树,根据kd-树查找点的k邻点、以及计算法向量;

通过边界点判别方法,判别点是否为边界点以找到模型中的空洞部分;

步骤(3)、路径轨迹生成阶段

基于通过寻找最近点的孔洞集合区分算法,将每个孔洞区分开来;

使用球模型构建道路图;

在道路图上寻找相机视点最短路径,进行路径规划并优化;

步骤(4)、结果输出阶段

将步骤(3)中优化后的路径轨迹输入无人机,使用无人机沿规定的路径飞行并扫描,将点云模型的空洞区域进行扫描修复。

结合图2至图6,针对各步骤中做出的进一步补充与细化方案如下。

(1)构建kd-树查找k临近点

k邻点指的是对于三维点云模型的每个点p,把k个与点p欧氏距离最短的点称为该点p的k邻点。设п为一个有序的序列并且满足公式(1)

||pπ(1)-p||>0,||pπ(i)-p||<||pπ(i+1)-p||,i∈[1,n-1](1)

则点云数据点p的k邻点的集合可以表示为

所以,在点云模型中,集合npk相当于定义了一个空间球,球心是数据点p,半径为k邻点中与点p欧氏距离的最大值,当且仅当i∈npk时,pi位于该空间球内。k邻点的平面示意图如图3所示。

本发明采用的孔洞检测算法需要使用k邻点进行判断。计算模型中的某点的k邻点最简单直接的方法就是直接求出该点与其它模型中的点的距离,然后取距离最短的k个点作为k邻点。这种方法效率较低,时间复杂度为o(n2),其中n为模型数据点的总数。对于点云数据量为30万的目标点云显然是不适用的。为此,我们需要提高k邻点的获取效率。所以,本申请引入了kd-树这种空间数据结构来提高k邻点的获取效率。

kd-树是一种节点为点云空间点的空间二叉树。该空间树的每个非叶子节点都是一个节点空间以及切割该节点空间的超切割平面,这样一个节点空间就会被分成两个子空间作为其子节点。切割示意图如图4和图5所示。建树过程直到叶子结点所处的节点空间里的点云模型点在一定的阈值内。即点云模型里的所有的数据点都在kd-树的叶子节点的节点空间里。非叶子节点为虚构的点。

具体地,在本发明中,对于点云模型的kd-树使用的是一个递归建立的方法,包括以下建立过程:

步骤1:在读入点云模型数据的过程中,记录整个点云模型的三个坐标轴的最小值与最大值,即xmin、xmax、ymin、ymax、zmin、zmax。

步骤2:在计算出的三类最小值与最大值中,选择相差最多的作为切割空间的超平面方向,接着计算xmin、xmax、ymin、ymax、zmin、zmax的平均值,即该节点c的公式如式(3)

c=((xmax+xmin)/2,(ymax+ymin)/2,(zmax+zmin)/2)(3)

接着在c点处将节点空间切分成两部分。先计算数值小的部分作为左子树,再计算数值大的部分作为右子树。

步骤3:直到切分开某个部分达到k个点或者1个点,将其作为叶子节点。否则,计算该部分的三个坐标轴的最小值和最大值,替换xmin、xmax、ymin、ymax、zmin、zmax、返回步骤2。

通过上述方法对整个点云模型进行空间树的划分在后续查找k邻点的过程中能极大地提高效率。

在对整个点云进行kd-树划分之后,查找k邻点也变得简单高效起来。

首先,从kd-树的根节点处开始查找,按照目标数据点的空间坐标,向下查找,直到找到该数据点所在的叶子节点空间。接着,设定一个初始半径r1,开始回溯查找,对于与目标点的欧氏距离小于等于r的点,即在一个以目标点为球心,半径为r1的球内的所有数据点都添加到一个升序的序列q中,而该序列的长度只有k,每次添加新的数据点时,就使用插入排序的方法来进行维护。对于回溯过程中,非叶子节点的切割超平面到目标点的距离大于r的,只查找其左子树,否则,左右子树都需查找。若最后q的数据点总数小于k,则增大半径r1,得到r2,再用r2替换r1。再重复上述过程。最终,序列q为目标点的k邻点序列。查找过程如图6所示。

如此使用kd-树来查找k邻点,可以使得查找k邻点的时间复杂度从o(n2)降低到o(nlogn),大大提高算法执行效率。

而k邻点的作用在于,通过k邻点可以运用最大角度度量、半圆盘度量、形状度量三种度量准则来判断是否是孔洞边界点。而使用这三种度量准则需要以k邻点来构造被测试点的切平面。所以,我们需要计算出点云数据点在k邻点拟合平面的法向量。

本申请采用了协方差分析算法来计算目标点p的法向量。该算法首先寻找目标点p的k邻点,接着使用k邻点与目标点p构造一个协方差矩阵,最后,计算该矩阵的特征向量以及特征值来分析获得目标点p的法向量。具体地,对于点云模型中的一点p,求得其k邻点集合n(p),如式(4)所示。

n(p)={pi|pi∈p,‖pi-p‖≤r}(4)

其中,p为点云数据点集合,r为k邻点与点p最大的欧氏距离

用k邻点集合n(p)构造协方差矩阵如式(5)所示

其中,o为k邻点集合的点的平均值,即如式(6)所示

显然,o是k邻点集合的质心,由于是三维的坐标系,所以协方差矩阵e必定是一个3x3的对称矩阵。使用雅各比迭代算法来计算协方差矩阵e的特征值λ0、λ1、λ2(λ0>λ1>λ2)以及特征向量v0、v1、v2。可以得知,协方差矩阵e的法向量的近似值为最小的特征值λ2所对应特征向量v2。

(2)判别边界点

本申请通过运用三种度量准则来判断目标点是否是孔洞边界点。具体地,先设置一个阈值,阈值经实验确定。通过三种不同的度量准则各计算出一个概率,然后将三个概率加权合并成一个概率值,再与预先设定的阈值做对比。对于未达到阈值的点,我们认为该点不是孔洞的边界点,否则则认为该点为孔洞边界点。

使用的三种度量准则分别为:最大角度度量准则、半径圆盘度量准则、形状度量准则。最大角度测量标准基本方法为可以为判断点云点p的k邻点集合n(p)里的点投影到点p的拟合平面,若投影点集围绕着点p较为均匀的分布,则认为该点p为内部点,若投影点集的分布明显偏向点p的某一侧,则认为点p为边界点,此准则可得到一个边界点概率p1。半径圆盘度量准则方式为判断k邻点在点p的拟合平面的投影点集,是否与p点同胚于一个半圆盘或圆盘。若同胚于一个圆盘,则认为k邻点在点p周围分布均匀,点p为内部点。反之,同胚于一个半圆盘,则认为点p为孔洞边界点,根据此准则也可得到一个边界点概率p2。状度量准则采用了分析k邻点在空间中的三个主要的方向上的变化量来判断点p是否为边界点,根据此准则可得到边界点概率p3。

以上三种度量准则各有各自的优劣,对于一些较小的模型里的小孔洞检测,半圆盘度量准则比最大角度度量准则和形状度量准则更准确,更具有优势。而对于孔洞轮廓的精确性来说,最大角度度量准则比其它两种度量准则更适合。虽然其它两种度量准则也能够正常检测出孔洞的轮廓,但有极大的可能性会出现非孔洞边界点被认为是孔洞边界点的情况,即冗余点。而最大角度度量准则没有这个问题,更加精确。对于噪点多的点云模型,形状度量准则就展现其优越性,具有比其它两种度量准则更加好的效果。而为了使最终效果更加好,点云孔洞判断更精确。本发明采用了一种结合三种度量准则的加权度量准则,即把三种度量方式所得到的p1,p2,p3各自加权求和,得到一个概率,再用该概率与预设的阈值比较,来判断是否为孔洞边界点。具体公式如式(7)所示

p(p)=w1p1(p)+w2p2(p)+w3p3(p)(7)

其中,权值和为1,具体数值由实验确定。

(3)无人机轨迹生成

首先需要区分孔洞区域,点云的孔洞区域是整个无人机路径的关键点,为了后续的工作更加高效,有目的性,区分孔洞区域具有相当重要的意义。孔洞集合区分算法如下:

步骤1,边界点集p中随机选取一点作为起始点,求得该点最近点,将两点相连,将两点存为a点和b点,并将两点从集合p中删除,置于集合p1。

步骤2,分别计算a点与b点距离各自的最近点的长度得la与lb,比较la与lb,取较短的一边为新的扩展点,将新扩展点从集合p中删除,置于集合p1。替换a点与b点的值。直到集合p为空。

步骤3,根据得到的集合p1,计算边界线长度集合l,长度差集合m

步骤4,判断集合m中每个元素,若大于平均值m加阈值ψ,则把该线段对应的两点存入切割集合t中。

步骤5根据集合t,切割孔洞区域,得到封闭孔洞区域集合。

由于本申请需要无人机重新扫描的孔洞区域,所以需要保证整个孔洞区域都能遍历到。即对于每个孔洞区域都需要使用一个球体去填充,且要保证球体覆盖整个孔洞区域。具体地,以孔洞区域的中心为球心,半径为孔洞边界点与中心点的欧氏距离的最大值。无人机的相机视点认为是在填充球的球面之上。

接下来需要填充整个三维点云模型的空隙,具体填充方法为:在该点云模型的坐标数据最大值与最小值之间,随机取点。若该点满足球心条件:并不是点云模型的数据点并且该点并不在任何填充球中。判断方法是直接求该点与已有的填充球的球心的距离l,若距离l小于半径,则认为该点在填充球内。则以该点为球心,半径为距离球心最近的点云数据点与球心的欧氏距离(小于一个设定的阈值)。不断重复上述过程,直到无法找到满足成为球心的点。连续x次皆是不满足球心条件的点时,则认为三维点云模型的空隙已经被填满。

下一步是生成道路图,需要先构造顶点集。首先,把填充球与填充球之间的相交区域提取出来,得到顶点集v。具体的,对于两个填充球的球心距小于两球的半径之和,则计算两球的相交区域,顶点为相交区域的随机一点。

接着需要连边建图,对于顶点集v中两个位于同一个填充球的顶点,不需要进行碰撞检测,直接相连,路径边的权值为两点的欧氏距离与不可见度信息(10-可见度信息)的和。对于同一个球内可见度设为10。若相邻顶点位于的填充球为孔洞区域填充球,则不能直接相连,需要先进行碰撞检测。碰撞检测使用光线投射(raycasting)算法,可以判断一条线与点云模型是否产生碰撞。基本思想是把点云模型细化成不同的面,计算线段与该平面的交点,若交点在面内,则认为产生了碰撞。对于本发明中线段经过的附近空间中的数据点,使用k邻点计算该点处的拟合平面,再计算线段与拟合平面的交点。

随后,需要计算可见性信息作为该道路图中的附加信息。具体的可见度计算方法使用的是一种蒙特卡洛光线追踪算法。该算法的具体实施过程是从某个填充球上面随机地选择一点向另外的球体上的发射一条射线,落点选择随机。并记录该射线在发射过程中是否与点云模型产生了碰撞,不断重复上述过程。没有受到阻挡的射线在总发射的射线中的比例即为两个球体之间的可见度。可见度信息存为百分比的十倍。

最后,生成无人机的运动轨迹,无人机的路径轨迹需要经过每一个孔洞区域。所以,这部分工作分为两大部分:

1.生成一个涵盖了所有的孔洞区域的节点遍历顺序队列;

2.根据节点顺序表生成无人机的路径轨迹。

使用贪心算法来生成节点遍历顺序队列。首先,随机选择一个孔洞区域a作为起始区域,本申请中一般选择最靠右上角的区域作为起始区域。然后,计算所有的孔洞区域与该孔洞区域的距离,选择距离最短的孔洞区域作为下一个起始区域,并将孔洞区域a加入到节点遍历顺序队列,从孔洞区域集合中删除a。重复执行上述过程,直到孔洞区域集合为空。

使用dijkstra算法计算节点遍历顺序队列的相邻的两点的最短路径。该最短路径即为这两个孔洞区域的路径。对于不能找到最短路径到达的点,可能的原因是填充球并没有完美填充所有的点云模型空隙。则找出在两个孔洞区域直线距离上的可见度信息较高的两个填充球。将这两个填充球任意选择两个点连接起来,要求满足不会发生碰撞的条件。边的权值为两点的欧氏距离与不可见度信息之和。再进行最短路计算。具体的算法步骤,首先,节点遍历队列队首元素出队。然后,计算该孔洞区域与新队首元素的最短路,添加到无人机路径轨迹中。直到队列中只剩下一个元素,停止算法。至此,无人机轨迹路径生成完成。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1