CN103900573B - 一种基于s57标准电子海图的水下运载器多约束航路规划方法 - Google Patents

一种基于s57标准电子海图的水下运载器多约束航路规划方法 Download PDF

Info

Publication number
CN103900573B
CN103900573B CN201410117057.XA CN201410117057A CN103900573B CN 103900573 B CN103900573 B CN 103900573B CN 201410117057 A CN201410117057 A CN 201410117057A CN 103900573 B CN103900573 B CN 103900573B
Authority
CN
China
Prior art keywords
grid
depth
node
point
water
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201410117057.XA
Other languages
English (en)
Other versions
CN103900573A (zh
Inventor
刘厂
赵玉新
金娜
沈志峰
李刚
齐昭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Engineering University
Original Assignee
Harbin Engineering University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Engineering University filed Critical Harbin Engineering University
Priority to CN201410117057.XA priority Critical patent/CN103900573B/zh
Publication of CN103900573A publication Critical patent/CN103900573A/zh
Application granted granted Critical
Publication of CN103900573B publication Critical patent/CN103900573B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/20Instruments for performing navigational calculations

Landscapes

  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Automation & Control Theory (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Navigation (AREA)

Abstract

本发明属于水下运载器三维路径规划技术领域,具体涉及一种基于S57标准电子海图的水下运载器多约束航路规划方法。本发明包括:确定规划空间和要素提取空间;提取与转换要素;航行空间生成;利用A*算法进行航路搜索;输出规划结果:将步骤四获得的规划结果存入文件。相比于大多数路径规划算法利用简单立方体模拟规划环境,本发明通过提取S57标准电子海图的数据生成三维规划环境,确保了规划环境的真实性和复杂性,进而提高了规划方法的实用性。

Description

一种基于S57标准电子海图的水下运载器多约束航路规划方法
技术领域
本发明属于水下运载器三维路径规划技术领域,具体涉及一种基于S57标准电子海图的水下运载器多约束航路规划方法。
背景技术
电子海图是一种把需要向航海人员显示和解释的各类信息融成一体的数字海图,与简单的用颜色显示的纸海图相比,电子海图包括了更多的地理和文字信息。电子海图一般应用于一些专业的应用系统,其表示内容、数据格式和显示方式可以由用户或设计者自行定义。基于S57标准的电子海图符合《数字化海道测量数据传输标准》(S-57)标准,该标准是国际通用的,且是最具权威性的数据标准。由于基于S57标准的电子海图须按S-57标准进行特征物标编码、几何图形制作,具有标准的数据封装形式,因此保证了数据传输的正确性,有利于不同系统的兼容。电子海图包括安全航行需要的全部海图信息,也可以包含纸质海图上没有的而对安全航行认为是需要的补充信息。对于航路规划,电子海图不只提供了海域和陆地位置信息,还有警告区、倾废场、沉船等附加信息,而附加信息决定了路径规划的实用性。目前水下运载器航路规划大多把研究重点放在给定模拟环境的规划方法上,其规划环境过于简单,导致规划的航路实用性不足。基于S57标准电子海图的水下运载器三维航路规划通过S57标准电子海图提取规划空间信息,获得的空间更加复杂、更接近真实航行环境,因此规划出的路径具有较好的实用性。
发明内容
本发明的目的在于提供一种提高了规划方法实用性的基于S57标准电子海图的水下运载器多约束航路规划方法。
本发明的目的是这样实现的:
(1)确定规划空间和要素提取空间:
(1.1)确定规划空间:
确定规划路径的起点和终点,设为A(xa,ya,za)和G(xg,yg,zg),确定以AG为对角线的长方体ABCD-EFGH,即航行规划任务的理论最小空间,设为空间V0,长方体ABCD-EFGH的边长为d,平面ABCD和平面EFGH的中心分别为O和O',将ABCD面和EFGH面以O和O'为中心向外扩张成A'B'C'D'面和E'F'G'H'面,使扩张后平面边长d'=d+kd,k∈[0,1],设阈值dmin,当d<dmin时,令d'=dmin+kdmin航行最小深度hmin(hmin>0)和航行最大深度hmax(hmax>0),确定h=hmax-hmin,立方体A'B'C'D'-E'F'G'H'是一个以h为高,上下平面边长为d'的长方体;
(1.2)确定要素提取空间:
设最大水深为h',使要素提取空间为以h'为高,上下平面边长为dmin+k'dmin的长方体,其中k'∈[0,1]且k'>k;
(2)提取与转换要素:
要素信息包括水深的经度、纬度、深度信息;点要素包括沉船、陆地区、暗礁适淹礁、倾废场、障碍物,要素信息包括点要素数目,名称,位置点个数以及每个位置点的经度、纬度、深度信息;线要素为陆地区,要素信息包括线要素数目,名称,位置点个数以及每个位置点的经度、纬度、深度信息;面要素包括陆地区、障碍物、倾废场、警告区,要素信息包括面要素数目,名称,位置点个数以及每个位置点的经度、纬度、深度信息;
(3)航行空间生成:
(3.1)计算插值网格数
N grid = d 1 &times; d 2 , d 1 = abs ( x s - x d ) k 1 d 2 = abs ( y s - y d ) k 2 ,
其中xs,xd,ys,yd分别为规划空间的起点和终点的经度值、纬度值;
(3.2)读取水深要素文件,提取水深要素位置数据;
(3.3)通过插值获得网格水深:
对步骤(3.1)获得的Ngrid个网格按位置顺序进行插值;
(3.4)对插值数据进行修正:
(3.4.1)叠加点要素:
找到点要素所在的网格,将网格的水深更改为0;
(3.4.2)叠加线要素:
读取线要素中的位置点集p={p1,p2,...,pn},找到每一个位置点pi所在的网格,将网格的水深更改为0,找到相邻两个位置点pi与pi+1连线经过的网格,将网格的水深更改为0;
(3.4.3)叠加面要素:
读取面要素中的位置点集p={p1,p2,...,pn},连接点集的所有元素形成封闭图形U,以水深数据网格点为中心,以2dbuf为边长生成判断缓冲区S:
d buf = abs ( p d - p s ) 2 &times; div Num ,
其中pd和ps为规划空间的起点和终点在经度或纬度方向的位置数据,divNum为水深数据网格在经度或纬度方向的网格数,计算W=U∩S,如果W=U∩S≠θ则修改网格点的水深值为0;
(3.5)修补插值失败网格:
检测是否有插值失败且没有添加要素信息的区域,以检测到的网格点为中心,dbuf为半径的缓冲区搜索附近的水深值,如果缓冲区内没有水深则增加缓冲区半径使dbuf'=kdbuf,直到搜索到水深值,如果在缓冲区内搜索到多个水深值则通过求平均数对网格点进行赋值,搜索到的一组水深点为P={p1,p2,....pn},水深值Phi为第i个水深点的水深值;
(3.6)将步骤(3.5)得到的网格水深写入文件以供算法规划使用;
(4)利用A*算法进行航路搜索:
(4.1)对水下运载器三维路径规划空间建模
进一步划分规划空间,形成最初的栅格网格,经度网格数为n,纬度网格数为m,深度网格数为h,对栅格网格添加障碍物信息,即计算每个网格点是否在陆地或障碍物禁航区内,计算直接定位栅格点对应平面:
n _ X = floor ( ( X ( l , j ) - start _ X ) / a _ x ) + 1 n _ Y = floor ( ( Y ( l , j ) - start _ Y ) / a _ y ) + 1 n _ Z = floor ( ( Z ( l , j ) - start _ Z ) / a _ z ) + 1
其中,start_X,start_Y和start_Z是地形数据在X和Y方向上的最小值,a_x、a_y和a_z是等分网格的平均距离,通过floor函数查找节点落在地形网格的位置序号n_X、n_Y和n_Z,确定X、Y、Z方向的序号,对每个节点进行编码:
NodeNum=n×m×n_Z+n×n_Y+n_X
其中NodeNum为节点编码序号,n为X方向序号的最大值,m为Y方向序号的最大值,
计算出节点距离平面的距离,垂直于平面的向量栅格点为O:
d = AO &RightArrow; &CenterDot; h &RightArrow; | h &RightArrow; |
若d<D,则认为栅格点在禁航区内,其中D为安全距离,栅格网格形成后,对网格在X、Y、Z方向进行编码,确定节点的位置;
(4.2)初始化OPEN表和CLOSED表:
把遍历的节点放入一个表中保存,称为OPEN表,比较、选择后的节点放入另一个表中保存,为CLOSED表,表中的节点存有节点的信息,包括位置、启发值、父节点,子节点;
(4.3)扩展子节点:
(4.3.1)按照三维空间的方向关系扩展出26个节点;
(4.3.2)判断并削减超过航行深度范围的节点,检测扩展子节点是否达到空间纵向的边界,最小下潜深度对应规划空间Z方向编号为z0,最大下潜深度为zn,子节点位置中Z方向的编号为zi,当zi≤z0或者zi≥zn时,删除子节点;
(4.3.3)判断并削减转向角过大的节点,设当前扩展子节点为pi,pi的父节点为pi-1,pi-1的父节点为pi-2,最大转向角为θmax,计算三个节点构成的两条向量的夹角的余弦cosθ:
cos &theta; = p i - 2 p i - 1 &RightArrow; &CenterDot; p i - 1 p i &RightArrow; | p i - 2 p i - 1 &RightArrow; | &CenterDot; | p i - 1 p i &RightArrow; |
若cosθ<cosθmax,则转向角过大,删除该子节点;
(4.4)计算启发值:
启发值为f(s)=g(s)+h(s),g(s)为从起点到当前点的实际距离,h(s)为估计值,h(s)为当前点到终点的直线距离,从父节点到扩展子节点的单位步长根据两个点之间的方位关系应设为k,k为垂直方向单位步长的值:
g ( s ) = &Sigma; i = 1 m d i h ( s ) = ( x D - x m ) &times; ( y D - y m ) &times; ( z D - z m ) ,
其中di为每个节点距离其父节点的距离,即单位步长,m代表当前子节点,D代表终点,x、y、z分别为节点在X、Y、Z方向的序号;
(4.5)通过比较启发值对OPEN表按照从小到大的顺序进行排序,若新加入的节点在OPEN表和CLOSED表已经存在,则为旧节点,判断新加入OPEN表和CLOSED表中的节点的g(s)值是否小于旧节点,如果小于则更新g(s)值,同时更新父节点,如果节点还在CLOSED表中则更新节点的子节点链表;
(4.6)选出OPEN表中启发值最小的节点放入CLOSED表,若为终点则停止搜索,否则,返回步骤(4.3);
(5)输出规划结果:将步骤四获得的规划结果存入文件。
本发明的有益效果在于:
相比于大多数路径规划算法利用简单立方体模拟规划环境,本发明通过提取S57标准电子海图的数据生成三维规划环境,确保了规划环境的真实性和复杂性,进而提高了规划方法的实用性。本发明对A*算法进行改进,使算法可以根据实际约束条件进行三维的航路规划,并且满足计算的快速性。另外,本发明将改进的A*搜索算法应用于基于电子海图的路径规划中,具有重要的实际意义。
附图说明
图1为本发明航路规划总流程图。
图2为本发明中航行空间生成总流程图。
图3为本发明提出的改进三维A*算法流程图。
具体实施方式
下面结合附图对本发明做进一步描述:
本发明属于水下运载器三维路径规划技术领域,具体涉及一种基于S57标准电子海图的水下运载器多约束航路规划方法。具体包括:确定规划空间和要素提取空间、要素提取和数据转换、航行空间生成、A*算法航路规划以及规划结果输出五个基本步骤。相比于大多数路径规划方法利用简单立方体模拟规划环境,本发明通过提取S57标准电子海图的数据生成三维规划环境,确保了规划环境的真实性,进而提高了规划方法的实用性。同时,本发明对A*算法进行改进,使算法可以在考虑约束条件的情况下进行三维航路规划,并且能够满足计算的快速性。
步骤一:确定规划空间和要素提取空间。根据水下运载器的航行任务确定航行的起点和终点,进而确定路径规划空间和要素提取空间。
步骤二:要素提取和数据转换。在要素提取空间中提取航路规划需要的要素信息,如水深、陆地、障碍物等。提取的要素数据经转换后写入文件中,供算法读取使用。
步骤三:航行空间生成。基于步骤二提取的数据通过插值算法生成基本的水深网格数据,并叠加陆地、障碍物等要素信息,最后通过修正形成适合航路规划的空间数据。
步骤四:利用A*算法进行航路规划。利用改进的A*算法进行满足规划约束条件的三维航路规划。
步骤五:规划结果输出。将规划结果存入文件,以备使用。
本发明进一步详细说明如下
步骤一:确定规划空间和要素提取空间。
航路规划需要先确定航行环境,并根据规划任务确定一个满足规划要求的最小空间,这是实现快速有效的路径规划的第一步。另外,规划空间需要环境要素信息的填充,环境要素信息的丰富程度决定了规划结果的准确性,为了获得信息量足够丰富的要素信息,还需要确定要素提取空间。具体方法如下:
步骤1.1规划空间的确定
当确定航行任务后,就可以得到规划路径的起点和终点,分别设为A(xa,ya,za)和G(xg,yg,zg),则可以确定一个以AG为对角线的立方体ABCD-EFGH,该空间是航行规划任务的理论最小空间,设为空间V0。在实际应用时,由于环境的复杂性,规划路径往往要超出V0,即对于实际规划空间V,有因此要基于空间V0扩展出空间V。以正方体ABCD-EFGH为例,长方体方法类似,设正方体ABCD-EFGH的边长为d,平面ABCD和平面EFGH的中心分别为O和O',令ABCD面和EFGH面分别以O和O'为中心向外扩张成A'B'C'D'面和E'F'G'H'面,使扩张后平面边长d'=d+kd,k∈[0,1],为了保证规划空间足够大且尽量减少计算量,一般建议k取值为0.4。需要注意的是,如果起点和终点在某一维度跨度很小,会导致规划空间在该维长度过小,不符合实际情况,因此要给出dmin,当d<dmin时,令d'=dmin+kdmin。另一方面,路径规划中可能会遇到路径中段有障碍物导致路径中段的高度高于起点和终点的高度的情况,因此应有规划空间的高度h>d,设航行最小深度hmin(hmin>0)和航行最大深度hmax(hmax>0),则可以确定h=hmax-hmin。因此扩张后的立方体A'B'C'D'-E'F'G'H'是一个以h为高,上下平面边长为d'的立方体,由此确定了航路的规划空间,算法规划的路径不会超过该空间的范围。
步骤1.2要素提取空间的确定
确定规划空间后,考虑到规划空间中每一点的信息生成是基于附近环境要素的信息提取,为了保证规划空间边缘的准确性,要素提取的空间V'应该大于规划空间V,即有因此按照规划空间的扩展办法扩展立方体A'B'C'D'-E'F'G'H',设平面A'B'C'D'在海图上对应区域的最大水深为h',使新的立方体为一个以h'为高,上下平面边长为dmin+k'dmin的立方体,其中k'∈[0,1]且k'>k,为了保证空间生成的精度和计算速度并满足规划的需要,一般建议k'取0.8。
步骤二:要素提取与转换
算法进行正确有效的航路规划的前提是必须要获得尽可能多的环境要素信息,如水深、陆地、沉船、警告区等。S57标准将电子海图要素类型分为水深要素、点要素、线要素、面要素等四类要素。每一类要素中与路径规划相关的要素总结如下:
(1)水深要素。要素信息包括水深的经度、纬度、深度信息。
(2)点要素。点要素包括沉船、陆地区、暗礁适淹礁、倾废场、障碍物。要素信息包括点要素数目,名称,位置点个数以及每个位置点的经度、纬度、深度信息。
(3)线要素。线要素主要为陆地区。要素信息包括线要素数目,名称,位置点个数以及每个位置点的经度、纬度、深度信息。
(4)面要素。面要素包括陆地区、障碍物、倾废场、警告区等。要素信息包括面要素数目,名称,位置点个数以及每个位置点的经度、纬度、深度信息。
在确定要素提取空间后,通过判断要素是否与航行空间有交集,对海图信息进行要素的分类提取,并转换为数据文件,为进一步生成航行空间数据做准备。四种要素的文件格式设计如下:
(1)点要素文件内容如下:
第一行:点要素数目,如:50
第二行:第一个点要素名称经度纬度,如:灯塔123.523.4
第三行:第二个点要素名称经度纬度
……
第N+1行:第N个点要素名称经度纬度
(2)线要素文件
第一行:要素数目,如:50
第二行:第一个线要素名称位置点个数N,如:陆地区10
第三行:第一个线要素第一个位置点的经度纬度,如123.523.4
第四行:第一个线要素第二个位置点的经度纬度,如123.523.4
……
第N+3行:第二个线要素名称位置点个数
……
(3)面要素文件
第一行:要素数目,如:50
第二行:第一个面要素名称位置点个数N,如:障碍区100
第三行:第一个面要素第一个位置点的经度纬度,如123.523.4
第四行:第一个面要素第二个位置点的经度纬度,如123.523.4
……
第N+3行:第二个面要素名称位置点个数
……
(4)水深要素文件
第一行:水深要素数目,如:50
第二行:第一个水深要素名称经度纬度,如:灯塔123.523.4
第三行:第二个水深要素名称经度纬度
……
第N+1行:第N个水深要素名称经度纬度
步骤三:航行空间生成
通过步骤一和步骤二可以获得建模空间框架和空间内的要素信息数据,但是这些离散的数据点还不能构成航行空间,算法需要读入叠加有要素信息的均匀网格数据,因此需要对要素数据进行插值、叠加、修正处理,形成适合路径规划算法读取的数据形式。航行空间生成的总体思想是通过水深插值形成基本的环境数据网格,再通过添加要素信息完成障碍物的判断和添加,然后通过判断每一个插值点与危险要素的关系进行航行空间修补,最后形成叠加有要素信息的、逼近真实连续变化地形环境的数据网格。具体步骤如下:
步骤3.1计算插值网格数
插值网格的疏密决定了插值的效果,插值网格数过大,不仅不会提高插值效果还会浪费计算时间,而插值网格数过小则降低精度,达不到插值的效果。因此插值网格数的确定应考虑插值效果,而插值效果应与最小插值网格对应的实际经纬度宽度相关联,即一个插值网格对应k1宽度的经度值和k2宽度的纬度值,k1和k2的取值根据水深要素数据的丰富程度和实际规划需要决定,一般建议k1和k2取值在0.03°~0.1°之间。依此则可以计算出插值的网格数Ngrid=d1×d2,公式如下:
d 1 = abs ( x s - x d ) k 1 d 2 = abs ( y s - y d ) k 2
其中xs,xd,ys,yd分别为规划空间的起点和终点的经度值、纬度值。
步骤3.2读取水深要素文件,提取水深要素位置数据。
将水深要素从数据文件中读入内存中,供插值使用。存储水深数据的数据结构定义如下:
struct_Depth
{
double lon;//水深点经度
double lat;//水深点纬度
double depth;//水深值
}
步骤3.3通过插值获得网格水深
为了获得每个网格所在位置的水深数据,以步骤3.2提取的离散水深数据为基础,对步骤3.1获得的Ngrid个网格按位置顺序进行插值,从而获得插值后的水深数据阵列,插值算法采用基于自然邻点的插值法。
步骤3.4根据危险要素对插值数据进行修正
由于海洋中还存在很多障碍物,如沉船、禁航区等,步骤3.3生成的插值数据并不能完全反映真实的海洋环境,因此需要根据步骤二提取出的不利于航行的点、线、面要素信息对步骤3.3生成的水深数据网格进行修正。修正方法为将步骤二获得的陆地、障碍物等要素叠加到步骤3.3获得的网格水深中。具体方法如下:
(1)点要素的叠加
首先找到点要素所在的网格,然后将该网格的水深更改为0,表示该网格不可航。
(2)线要素的叠加
线要素的叠加分为两步完成:首先读取线要素中的位置点集p={p1,p2,...,pn},找到每一个位置点pi所在的网格,将该网格的水深更改为0,表示该网格不可航;然后找到相邻两个位置点pi与pi+1连线经过的网格,将该网格的水深更改为0,表示该网格不可航。
(3)面要素的叠加
读取面要素中的位置点集p={p1,p2,...,pn},连接该点集的所有元素形成一个封闭图形U,再以某个水深数据网格点为中心,以2dbuf为边长生成判断缓冲区S,dbuf的计算公式如下:
d buf = abs ( p d - p s ) 2 &times; div Num ,
其中pd和ps为规划空间的起点和终点在经度或纬度方向的位置数据,divNum为水深数据网格在经度或纬度方向的网格数。计算W=U∩S,如果W=U∩S≠θ则修改该网格点的水深值为0,表示该网格不可航。
步骤3.5对插值失败网格进行修补
在插值过程中,不可避免会存在因可参考海图水深数据较少而造成的插值失败现象。该问题的存在不利于进行路径规划,必须进行修补。具体方法为:检测是否有插值失败且没有添加要素信息的区域,如果检测到这样的网格点则以该点为中心,dbuf为半径的缓冲区搜索附近的水深值,如果缓冲区内没有水深则增加缓冲区半径使dbuf'=kdbuf,直到搜索到水深值,如果在缓冲区内搜索到多个水深值则通过求平均数的方法对该网格点进行赋值。设搜索到的一组水深点为P={p1,p2,....pn},该点水深值其中,Phi为第i个水深点的水深值。
步骤3.6将步骤3.5得到的网格水深写入文件以供算法规划使用。
步骤四:利用A*算法进行航路搜索
A*算法是一种启发式搜索算法,由于其对空间的探索机制非常适合于寻路,二维A*算法已广泛应用于路径规划问题。2000年,Robert J.Szczerba等提出了一种改进的A*算法,称为稀疏A*算法(SAS)。该算法根据约束条件有效削减搜索空间,实现算法快速有效的规划。A*算法的主要搜索原理为从起点出发,扩展子节点,通过比较各节点的启发值选择下一步要走的节点,直到找到终点则停止搜索。本发明以二维A*算法为基础,构建基于三维环境的栅格网格,以用户设定的约束条件削减需要遍历的子节点,构造算法启发值,实现快速有效的三维路径规划,具体步骤如下:
步骤4.1对水下运载器三维路径规划空间建模
由于通过步骤三已经得到规划空间,可根据实际需要进一步划分规划空间,形成最初的栅格网格,设经度网格数为n,纬度网格数为m,深度网格数为h,则A*算法的栅格网格为n×m×h的三维网格。接着对栅格网格添加障碍物信息,即计算每个网格点是否在陆地或障碍物等禁航区内。由于步骤三生成的环境数据也是一种网格数据,因此假设禁航区是由一定数量的单位多边形平面包裹而成的,可以先寻找栅格网格点对应的单位多边形平面,再计算栅格点到单位多边形平面的距离即可判断栅格点是否在障碍物内。由于规划空间数据中经度纬度都是由小到大顺次排列,因此可以通过计算直接定位栅格点对应平面,定位公式如下:
n _ X = floor ( ( X ( l , j ) - start _ X ) / a _ x ) + 1 n _ Y = floor ( ( Y ( l , j ) - start _ Y ) / a _ y ) + 1 n _ Z = floor ( ( Z ( l , j ) - start _ Z ) / a _ z ) + 1
其中,start_X,start_Y和start_Z是地形数据在X和Y方向上的最小值,a_x、a_y和a_z是等分网格的平均距离。通过floor函数查找节点落在地形网格的位置序号n_X、n_Y和n_Z,从而找到节点的坐标。这样的查找方法定位直接而快速,相对于比较法的定位方式该方法可以显著提高运算速度。确定了X、Y、Z方向的序号就可以对每个节点进行编码,编码公式如下:
NodeNum=n×m×n_Z+n×n_Y+n_X
其中NodeNum为节点编码序号,n为X方向序号的最大值,m为Y方向序号的最大值。
确定了栅格点对应的平面后,即可以计算出节点距离平面的距离。设有平面ABCD,有垂直于平面的向量栅格点设为O,则有计算公式如下:
d = AO &RightArrow; &CenterDot; h &RightArrow; | h &RightArrow; |
若d<D,则认为栅格点在禁航区内,其中D为安全距离。栅格网格形成后,对网格在X、Y、Z方向进行编码,用于确定节点的位置。
步骤4.2初始化OPEN表和CLOSED表
A*算法的原理是通过遍历周围节点进行比较、选择,从而达到寻优目的。因此A*算法中把遍历的节点放入一个表中保存,称为OPEN表,而把比较、选择后的节点放入另一个表中保存,成为CLOSED表。表中的节点存有节点的各项信息,包括位置、启发值、父节点,子节点,具体结构体形式如下:
struct NODE
{
int x;//x方向的位置序号
int y;//y方向的位置序号
int z;//z方向的位置序号
int h;//当前点到终点的估计值
int g;//起点到当前点的实际长度
int f;//启发值
int NodeNum;//节点编码序号
NODE*Parent;//父节点结构体指针
NODE*Child[26];//扩展子节点结构体指针数组
};
注意,初始化时,把第一节点即起始点放入OPEN表和CLOSED表中。
步骤4.3扩展子节点。
水下运载器实际航行中,由于本身性能的限制以及航行任务的需要,会受到多种条件的约束。为了保证规划出的航路实际可用,在航路规划过程中必须考虑水下运载器的约束。本专利考虑的约束条件为最大下潜深度、最小下潜深度和最大转向角。其中,最大下潜深度是指水下运载器可以承受的最大航行深度;最小下潜深度是指任务要求水下运载器必须达到的最小航行深度;对于水下运载器而言,频繁而大角度的转向不仅会增加航行时间而且容易使其失控而产生危险,因此应尽量减少大角度的转向角。最大转向角是指为了保证航行安全而要求水下运载器可以达到的最大的转向角度。
由于水下运载器航路规划是三维航路规划,每一步扩展的子节点有26个,若考虑航行深度和最大转向角则可以根据约束条件删减扩展的子节点,大大减少搜索空间,提高搜索速度且可以使规划的路径满足实际航行要求。
子节点具体扩展方法如下:
(1)按照三维空间的方向关系扩展出26个节点。
(2)判断并削减超过航行深度范围的节点。由于在步骤1规划空间建模时利用最大下潜水深和最小下潜水深确定航行空间深度,因此可以直接检测扩展子节点是否达到空间纵向的边界即可。设最小下潜深度对应规划空间Z方向编号为z0,最大下潜深度为zn,子节点位置中Z方向的编号为zi,当zi≤z0或者zi≥zn时,删除该子节点。
(3)判断并削减转向角过大的节点。设当前扩展子节点为pi,pi的父节点为pi-1,pi-1的父节点为pi-2,最大转向角为θmax,计算三个节点构成的两条向量的夹角的余弦cosθ。公式如下:
cos &theta; = p i - 2 p i - 1 &RightArrow; &CenterDot; p i - 1 p i &RightArrow; | p i - 2 p i - 1 &RightArrow; | &CenterDot; | p i - 1 p i &RightArrow; |
若cosθ<cosθmax,则说明转向角过大,删除该子节点。
步骤4.4计算启发值。
A*算法的启发值公式为f(s)=g(s)+h(s),g(s)为从起点到当前点的实际距离,h(s)为估计值,这里h(s)为当前点到终点的直线距离。相应的,从父节点到扩展子节点的单位步长根据两个点之间的方位关系应设为k,k为垂直方向单位步长的值,一般情况下取1。g(s)和h(s)的计算公式如下:
g ( s ) = &Sigma; i = 1 m d i h ( s ) = ( x D - x m ) &times; ( y D - y m ) &times; ( z D - z m ) ,
其中di为每个节点距离其父节点的距离,即单位步长,m代表当前子节点,D代表终点,x、y、z分别为节点在X、Y、Z方向的序号。
步骤4.5通过比较启发值对OPEN表按照从小到大的顺序进行排序。本专利采用的排序方法为快速排序法。若新加入的节点在OPEN表和CLOSED表已经存在,则称之为旧节点,判断新加入OPEN表和CLOSED表中的节点的g(s)值是否小于旧节点,如果小于则更新该点的g(s)值,同时更新该点的父节点。如果该节点还在CLOSED表中则还需要更新该节点的子节点链表。
步骤4.6选出OPEN表中启发值最小的节点(即第一个节点)放入CLOSED表,若该点为终点则停止搜索,否则,返回步骤4.3。
步骤五:输出规划结果。将步骤四获得的规划结果存入文件,以备使用。

Claims (1)

1.一种基于S57标准电子海图的水下运载器多约束航路规划方法,其特征在于:
(1)确定规划空间和要素提取空间:
(1.1)确定规划空间:
确定规划路径的起点和终点,设为A(xa,ya,za)和G(xg,yg,zg),确定以AG为对角线的长方体ABCD-EFGH,即航行规划任务的理论最小空间,设为空间V0,长方体ABCD-EFGH的边长为d,平面ABCD和平面EFGH的中心分别为O和O',将ABCD面和EFGH面以O和O'为中心向外扩张成A'B'C'D'面和E'F'G'H'面,使扩张后平面边长d'=d+kd,k∈[0,1],设阈值dmin,当d<dmin时,令d'=dmin+kdmin航行最小深度hmin,hmin>0,和航行最大深度hmax,hmax>0,确定h=hmax-hmin,立方体A'B'C'D'-E'F'G'H'是一个以h为高,上下平面边长为d'的长方体;
(1.2)确定要素提取空间:
设最大水深为h',使要素提取空间为以h'为高,上下平面边长为dmin+k'dmin的长方体,其中k'∈[0,1]且k'>k;
(2)提取与转换要素:
要素信息包括水深的经度、纬度、深度信息;点要素包括沉船、陆地区、暗礁适淹礁、倾废场、障碍物,要素信息包括点要素数目,名称,位置点个数以及每个位置点的经度、纬度、深度信息;线要素为陆地区,要素信息包括线要素数目,名称,位置点个数以及每个位置点的经度、纬度、深度信息;面要素包括陆地区、障碍物、倾废场、警告区,要素信息包括面要素数目,名称,位置点个数以及每个位置点的经度、纬度、深度信息;
(3)航行空间生成:
(3.1)计算插值网格数
N g r i d = d 1 &times; d 2 , d 1 = a b s ( x s - x d ) k 1 d 2 = a b s ( y s - y d ) k 2 ,
其中xs,xd,ys,yd分别为规划空间的起点和终点的经度值、纬度值,k1为起点和终点的经度值的宽度,k2为起点和终点的纬度值的宽度;
(3.2)读取水深要素文件,提取水深要素位置数据;
(3.3)通过插值获得网格水深:
对步骤(3.1)获得的Ngrid个网格按位置顺序进行插值;
(3.4)对插值数据进行修正:
(3.4.1)叠加点要素:
找到点要素所在的网格,将网格的水深更改为0;
(3.4.2)叠加线要素:
读取线要素中的位置点集p={p1,p2,...,pn},找到每一个位置点pi所在的网格,将网格的水深更改为0,找到相邻两个位置点pi与pi+1连线经过的网格,将网格的水深更改为0;
(3.4.3)叠加面要素:
读取面要素中的位置点集p={p1,p2,...,pn},连接点集的所有元素形成封闭图形U,以水深数据网格点为中心,以2dbuf为边长生成判断缓冲区S:
d b u f = a b s ( p d - p s ) 2 &times; d i v N u m ,
其中pd和ps为规划空间的起点和终点在经度或纬度方向的位置数据,divNum为水深数据网格在经度或纬度方向的网格数,计算W=U∩S,如果W=U∩S≠θ则修改网格点的水深值为0,θ为转向角;
(3.5)修补插值失败网格:
检测是否有插值失败且没有添加要素信息的区域,以检测到的网格点为中心,dbuf为半径的缓冲区搜索附近的水深值,如果缓冲区内没有水深则增加缓冲区半径使dbuf'=kdbuf,直到搜索到水深值,如果在缓冲区内搜索到多个水深值则通过求平均数对网格点进行赋值,搜索到的一组水深点为P={p1,p2,....pn},水深值Phi为第i个水深点的水深值;
(3.6)将步骤(3.5)得到的网格水深写入文件以供算法规划使用;
(4)利用A*算法进行航路搜索:
(4.1)对水下运载器三维路径规划空间建模
进一步划分规划空间,形成最初的栅格网格,经度网格数为n,纬度网格数为m,深度网格数为h,对栅格网格添加障碍物信息,即计算每个网格点是否在陆地或障碍物禁航区内,计算直接定位栅格点对应平面:
n _ X = f l o o r ( ( X ( l , j ) - s t a r t _ X ) / a _ x ) + 1 n _ Y = f l o o r ( ( Y ( l , j ) - s t a r t _ Y ) / a _ y ) + 1 n _ Z = f l o o r ( ( Z ( l , j ) - s t a r t _ Z ) / a _ z ) + 1
其中,start_X,start_Y和start_Z是地形数据在X和Y方向上的最小值,a_x、a_y和a_z是等分网格的平均距离,通过floor函数查找节点落在地形网格的位置序号n_X、n_Y和n_Z,确定X、Y、Z方向的序号,对每个节点进行编码:
NodeNum=n×m×n_Z+n×n_Y+n_X
其中NodeNum为节点编码序号,n为X方向序号的最大值,m为Y方向序号的最大值,
计算出节点距离平面的距离,垂直于平面的向量栅格点为O:
d = A O &RightArrow; &CenterDot; h &RightArrow; | h &RightArrow; |
若d<D,则认为栅格点在禁航区内,其中D为安全距离,栅格网格形成后,对网格在X、Y、Z方向进行编码,确定节点的位置;
(4.2)初始化OPEN表和CLOSED表:
把遍历的节点放入一个表中保存,称为OPEN表,比较、选择后的节点放入另一个表中保存,为CLOSED表,表中的节点存有节点的信息,包括位置、启发值、父节点,子节点;
(4.3)扩展子节点:
(4.3.1)按照三维空间的方向关系扩展出26个节点;
(4.3.2)判断并削减超过航行深度范围的节点,检测扩展子节点是否达到空间纵向的边界,最小下潜深度对应规划空间Z方向编号为z0,最大下潜深度为zn,子节点位置中Z方向的编号为zi,当zi≤z0或者zi≥zn时,删除子节点;
(4.3.3)判断并削减转向角过大的节点,设当前扩展子节点为pi,pi的父节点为pi-1,pi-1的父节点为pi-2,最大转向角为θmax,计算三个节点构成的两条向量的夹角的余弦cosθ:
若cosθ<cosθmax,则转向角过大,删除该子节点;
(4.4)计算启发值:
启发值为f(s)=g(s)+h(s),g(s)为从起点到当前点的实际距离,h(s)为估计值,h(s)为当前点到终点的直线距离,从父节点到扩展子节点的单位步长根据两个点之间的方位关系应设为k为垂直方向单位步长的值:
g ( s ) = &Sigma; i = 1 m d i h ( s ) = ( x D - x m ) &times; ( y D - y m ) &times; ( z D - z m ) ,
其中di为每个节点距离其父节点的距离,即单位步长,m代表当前子节点,D代表终点,x、y、z分别为节点在X、Y、Z方向的序号;
(4.5)通过比较启发值对OPEN表按照从小到大的顺序进行排序,若新加入的节点在OPEN表和CLOSED表已经存在,则为旧节点,判断新加入OPEN表和CLOSED表中的节点的g(s)值是否小于旧节点,如果小于则更新g(s)值,同时更新父节点,如果节点还在CLOSED表中则更新节点的子节点链表;
(4.6)选出OPEN表中启发值最小的节点放入CLOSED表,若为终点则停止搜索,否则,返回步骤(4.3);
(5)输出规划结果:将步骤(4)获得的规划结果存入文件。
CN201410117057.XA 2014-03-27 2014-03-27 一种基于s57标准电子海图的水下运载器多约束航路规划方法 Expired - Fee Related CN103900573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410117057.XA CN103900573B (zh) 2014-03-27 2014-03-27 一种基于s57标准电子海图的水下运载器多约束航路规划方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410117057.XA CN103900573B (zh) 2014-03-27 2014-03-27 一种基于s57标准电子海图的水下运载器多约束航路规划方法

Publications (2)

Publication Number Publication Date
CN103900573A CN103900573A (zh) 2014-07-02
CN103900573B true CN103900573B (zh) 2017-01-04

Family

ID=50992042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410117057.XA Expired - Fee Related CN103900573B (zh) 2014-03-27 2014-03-27 一种基于s57标准电子海图的水下运载器多约束航路规划方法

Country Status (1)

Country Link
CN (1) CN103900573B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106003104B (zh) * 2015-07-03 2018-05-11 中国运载火箭技术研究院 一种适用于多约束条件下视觉信息导引的机械臂规划方法
CN106020212B (zh) * 2016-05-12 2018-12-25 哈尔滨工程大学 一种uuv海底地形跟踪过程中的航行切换系统及切换方法
CN106403925B (zh) * 2016-08-31 2019-10-29 河南理工大学 面向室内与地下空间导航的空间网络构造及路径规划方法
CN106444835B (zh) * 2016-10-11 2019-11-26 哈尔滨工程大学 基于Lazy Theta星和粒子群混合算法的水下潜器三维路径规划方法
CN107228673B (zh) * 2017-05-19 2020-02-18 北京旋极伏羲大数据技术有限公司 航路规划方法及装置
CN107345815A (zh) * 2017-07-24 2017-11-14 东北大学 一种基于改进a*算法的家庭服务机器人路径规划方法
CN107727098A (zh) * 2017-09-26 2018-02-23 上海大学 一种依次巡查多个目标位置的无人水面艇路径规划方法
CN108507575A (zh) * 2018-03-20 2018-09-07 华南理工大学 一种基于rrt算法的无人船海面路径规划方法及系统
CN109470249B (zh) * 2018-11-07 2021-07-27 河海大学 一种水下航行器的最优路径规划与避障设计方法
CN110398249B (zh) * 2019-07-23 2020-10-30 金陵科技学院 一种结合环境特征的用于自动巡航的路径规划方法
CN111412918B (zh) * 2020-03-13 2022-01-07 天津大学 无人艇全局安全路径规划方法
CN114089762A (zh) * 2021-11-22 2022-02-25 江苏科技大学 一种基于强化学习的水空两栖无人航行器路径规划方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101806596A (zh) * 2010-02-05 2010-08-18 张立华 基于电子海图的最短距离航线自动生成方法
CN102175245A (zh) * 2011-01-28 2011-09-07 哈尔滨工程大学 一种基于海流历史统计信息的水下潜器路径规划方法
CN103196449A (zh) * 2013-03-28 2013-07-10 哈尔滨工程大学 基于潮流潮汐预报信息的船舶航路规划方法
CN103456041A (zh) * 2013-08-28 2013-12-18 中国人民解放军海军大连舰艇学院 一种基于s-57电子海图数据的三维地形和雷达地形生成方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101806596A (zh) * 2010-02-05 2010-08-18 张立华 基于电子海图的最短距离航线自动生成方法
CN102175245A (zh) * 2011-01-28 2011-09-07 哈尔滨工程大学 一种基于海流历史统计信息的水下潜器路径规划方法
CN103196449A (zh) * 2013-03-28 2013-07-10 哈尔滨工程大学 基于潮流潮汐预报信息的船舶航路规划方法
CN103456041A (zh) * 2013-08-28 2013-12-18 中国人民解放军海军大连舰艇学院 一种基于s-57电子海图数据的三维地形和雷达地形生成方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
一种基于海图水深的碍航区自动提取方法;张莉等;《海洋技术》;20100930;第29卷(第3期);第69-72页 *
国际标准电子海图系统关键技术研究;刘厂等;《中国航海》;20110630;第34卷(第2期);第24-29页 *
基于电子海图的航线规划方法研究;汤青慧;《中国博士学位论文全文数据库工程科技II辑》;20120215;全文 *

Also Published As

Publication number Publication date
CN103900573A (zh) 2014-07-02

Similar Documents

Publication Publication Date Title
CN103900573B (zh) 一种基于s57标准电子海图的水下运载器多约束航路规划方法
Danielson et al. Topobathymetric elevation model development using a new methodology: Coastal national elevation database
CN102446367B (zh) 基于多波束声纳海底测量数据构建三维地形矢量模型的方法
US9651698B2 (en) Multi-beam bathymetric chart construction method based on submarine digital depth model feature extraction
CN110398250A (zh) 一种无人艇全局路径规划方法
CN103456041A (zh) 一种基于s-57电子海图数据的三维地形和雷达地形生成方法
CN103065361B (zh) 三维海岛沙盘实现方法
AU2015300683B2 (en) Apparatus and methods for routing
Liu et al. LiDAR data reduction for efficient and high quality DEM generation
CN105067004A (zh) 一种基于地形的路径搜索方法
KR101214996B1 (ko) 해양지리 정보 구축 및 서비스 방법
CN108680168A (zh) 一种基于透明度和跃层数据的水下潜器隐蔽路径规划方法
CN111412918B (zh) 无人艇全局安全路径规划方法
Bychkov et al. 3-D modeling of Angara river bed
CN106652030A (zh) 三维数字航道图的生成与发布方法
CN106023128B (zh) 地形图数据和海图数据的融合方法及装置
CN103854302A (zh) 一种多约束条件下的auv航行环境空间构建方法
CA2933304C (en) A system and method for updating cartographic information
CN113776535A (zh) 一种基于栅格化电子海图的无人艇航路规划方法
Li et al. Digitalization of coastal management and decision making supported by multi-dimensional geospatial information and analysis
Fan et al. Research on shipborne aided navigation system based on enhanced traffic environment perception
Lewis et al. Virtual Planning and Testing of AUV Paths for Underwater Photogrammetry.
Huang et al. A rapid globe-wide shortest route planning algorithm based on two-layer oceanic shortcut network considering great circle distance
Yi et al. Route planning based on improved A* algorithm
Dakowicz et al. A unified spatial model for GIS

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170104

CF01 Termination of patent right due to non-payment of annual fee