一种基于船舶VR模型的船舶内部路径规划方法与流程

文档序号:16933012发布日期:2019-02-22 20:26阅读:305来源:国知局
一种基于船舶VR模型的船舶内部路径规划方法与流程

本发明涉及导航技术,尤其涉及一种基于船舶vr模型的船舶内部路径规划方法。



背景技术:

大型船舶系统复杂、零部件数量庞大。基于造船专用cad软件设计的船舶三维模型,其三维模型量巨大,通过将其进行转化并应用于虚拟培训,对于船员快速熟悉其内部布局、系统设备构成以及相关设备的操作使用方法,具有重要意义。目前,采用导航网格、可视图、概率路图等方法构建的虚拟场景可通行区域,难以准确表达场景中垂直方向的空间约束以及虚拟人身体尺寸(高度和宽度)等要素,导致船舶三维虚拟场景中的路径计算与实际情况存在一定差距。如何根据虚拟舰员当前位置和目标位置,在vr系统中能自动生成一条无碰撞的最优路径,实现船舶内部智能导航,是一项重要的应用需求和核心关键技术。

本发明基于船舶vr模型,在水平方向上对场景空间进行网格划分,并利用直线/平面求交算法,自动构建由立方柱状的障碍体表达的导航图。障碍体顶端构成的集合即为船舶虚拟场景中的可通行区域。在此基础上,对经典的a*算法进行改进,实现了基于起始点(当前位置)和目标点之间的最优路径计算,所提出的方法与经典a*算法相比,生成的路径更加符合真实人体行走特点(如避免了经典a*算法贴近障碍体行走的情形),且更加光顺。



技术实现要素:

本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种船舶内部路径规划方法。

本发明解决其技术问题所采用的技术方案是:一种基于船舶vr模型的船舶内部路径规划方法,包括以下步骤:

1)根据船舶vr模型,生成可通行区域的导航图;

1.1)根据船舶vr模型,首先计算该模型的最小包围盒,设构成vr场景的三角形集合triset={ti,i=1,2,…,n},vr场景的最小包围盒minbox的长、宽、高,分别为l、w和h,网格单元尺寸为s;

所述最小包围盒底部所在平面为xoz面,以船长和船宽方向分别为x和z,在该平面上划分均匀的正方形网格,从而整个包围盒由小的立方柱组成;

1.2)计算三角形集合triset中每个三角形ti在xoz平面上的投影;

1.3)若ti在xoz平面上的投影为三角形,记为三角形转步骤1.4);若为一条线段,记为转步骤1.6);

1.4)计算投影三角形所在的网格单元

1.5)对于每个网格单元作如下处理:

1.5.1)过单元的四个顶点作垂直于水平面xoz的直线并计算四条直线与三角形ti的交点,取这些交点的最大和最小y坐标作为障碍体m的top和bottom;

1.5.2)将得到的障碍体m根据y值大小,顺序插入到该网格单元中的障碍体列表中,并转步骤1.8);

1.6)计算投影线段所在的网格单元

1.7)对于每个单元格作如下处理:

1.7.1)过单元的四条边,作垂直于水平面xoz的平面,并计算四个平面与线段的交点,取这些交点的最大和最小y坐标作为障碍体m的顶端和底部;

1.7.2)将得到的障碍体m根据y值大小,顺序插入到该网格单元中的障碍体列表中,并转步骤1.8);

1.8)对同一个网格单元中有重叠部分的障碍体进行合并,得到所有网格单元上的障碍体链表blocklist;

1.9)所有障碍体的顶端组成的集合即为根据船舶vr模型获得的可通行区域;

2)基于改进的a*算法的船舶内部智能导航;根据步骤1)生成的可通行区域的导航图,以及起始点和目标点,生成规划的路径;

2.1)确定可通行区域的导航图,以及起点和目标点;

2.2)以步骤2.1)的数据作为输入,使用改进的a*算法生成规划的路径;所述改进的a*算法具体如下:

2.2.1)把起始格添加到开启列表;

2.2.2)重复如下的工作:

a)寻找开启列表中f值最低的格子,称之为当前格;其中,f(n)=g(n)+h(n),其中g(n)为起始点到候选点的实际花费代价,h(n)为候选点到目标点的估计代价;

b)把当前格切换到关闭列表;

c)对关闭列表中当前格相邻的格中的每一个,作如下处理:

a、如果它不可通过或者已经在关闭列表中,忽略该格子,反之转入步骤b;

b、如果它不在开启列表中,把它添加进去,把当前格作为这一格的父节点;记录这一格的f、g和h值;

c、如果它已经在开启列表中,用g值为参考检查新的路径是否更好;如果是这样,就把这一格的父节点改成当前格,并且重新计算这一格的g和f值;改变之后需要重新对开启列表按f值排序;

d)当目标格添加进了关闭列表,这时最优路径被找到。或者没有找到目标格,开启列表已经空了。这时候,路径不存在。

2.2.3)保存路径:从目标格开始,沿着每一格的父节点移动直到回到起始格,得到路径并保存。

按上述方案,所述步骤1.8)中障碍体的合并方式如下:设m和n为同一个单元中上下两个相邻的障碍体,如果mymin-nymax<ε,则将m和n进行合并,生成新的障碍体p,p的底部和顶部坐标分别为nymin和mymax;其中,阈值ε设置为0.9*h,h为虚拟人身高。

按上述方案,所述步骤1.1)中网格大小设置为(s–d)/2,其中,s分别为场景中最小可通行区域的大小,d为虚拟人物采用圆柱体包络时人体的直径。

按上述方案,所述g(n)采用以下方式计算:为每个障碍体附加一个权值w,w为本障碍体与周围最近的不可通过障碍体的距离,将实际代价g(n)÷w作为新的g’(n),h(n)采用曼哈顿距离进行估计得到,即候选点到目标点的水面距离和垂直距离之和的10倍,从而得到:f’(n)=g’(n)+h(n)。

按上述方案,所述步骤2.2.3)中路径进行如下优化,得到优化后的路径:

设路径中障碍体顶端中心点的集合为pointset={p1,p2,p3,…,pn};执行以下步骤:

步骤1:令i=1;

步骤2:计算pipi+2与场景中障碍体的交点,记为interset;

步骤3:ifinterset≠null,则令i=i+2,转向步骤2;否则,转向步骤4;

步骤4:将pi+1删除,令pointset={p1,p2,…,pi,pi+2,…,pn},转步骤1;

步骤5:ifi=n-2,输出中心点集合pointset。

最终的中心点集合中只包含了从spoint到tpoint的路径上的所有关键点,路径的中间点将用直线插补的方式得到。

本发明产生的有益效果是:本发明方法生成的规划路径,具有以下优点:

1、减少锯齿。路径存在锯齿会在导航时频繁转向导致导航不连续而影响用户体验。

2、避免贴近障碍物行走。经典a*算法得到的路径离障碍过近,几乎都是贴着障碍行走,不符合常人行走习惯。

3、避免虚拟人物嵌入障碍体。经典a*算法没有考虑虚拟人的人体宽度,在第三人称漫游时可以看到人物嵌入障碍的情况而影响用户体验。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明实施例的vr场景模型示意图;

图2是本发明实施例的障碍体表示的场景示意图;

图3是本发明实施例的改进a*算法流程图;

图4是本发明实施例的起始点与目标点及经典a*算法计算的路径示意图;

图5是本发明实施例的改进a*算法计算的路径示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,一种基于导航图以及改进a*算法的船舶内部智能导航方法,具体如下:

(一)导航图生成算法

根据船舶vr模型,首先计算该模型的最小包围盒,即长、宽、高三个值。假设船长和船宽方向分别为x和z,包围盒底部所在平面为xoz面,在该平面上划分均匀的正方形网格,从而整个包围盒由小的立方柱组成。进一步,利用求交算法计算vr多边形与网格柱的相交区域,并用柱状障碍体表示,而没有相交的部分则为空,从而整个vr模型可以用障碍体表示。所有障碍体的顶端组成的集合即为虚拟场景的可通行区域。

本方法使用一个数组来存放场景网格,数组大小为场景网格的行数×列数,数组的元素是网格中障碍体组成的双向有序链表。障碍体数据结构如下:

structblock{

floattop;

floatbottom;

block*up,*down;

};

其中:top为障碍体的顶部坐标,bottom为障碍体的底部坐标,up和down分别指向与该障碍体相邻的上下障碍体。

3d虚拟场景导航图生成算法(算法1)的大致流程如下。

算法1

算法输入:构成vr场景的三角形集合triset={ti,i=1,2,…,n},vr场景的最小包围盒minbox的长、宽、高,分别记为l、w和h,网格单元尺寸为s;

算法输出:以网格数组存放的障碍体链表集合

处理步骤:

步骤1:计算三角形集合triset中每个三角形ti在xoz平面上的投影。

步骤2:若ti在xoz平面上的投影为三角形,记为三角形转步骤3;若为一条线段,记为转步骤5。

步骤3:计算投影三角形所在的网格单元

步骤4:对于每个单元格作如下处理:

1)过单元的四个顶点作垂直于水平面xoz的直线并计算四条直线与三角形ti的交点,取这些交点的最大和最小y坐标作为障碍体m的top和bottom。

2)将得到的障碍体m根据y值大小,顺序插入到该网格单元中的障碍体列表中,并转步骤7。

步骤5:计算投影线段所在的网格单元

步骤6:对于每个单元格作如下处理:

1)过单元的四条边,作垂直于水平面xoz的平面,并计算四个平面与线段的交点,取这些交点的最大和最小y坐标作为障碍体m的顶端和底部。

2)将得到的障碍体m根据y值大小,顺序插入到该网格单元中的障碍体列表中,并转步骤7。

步骤7:对同一个网格单元中有重叠部分的障碍体进行合并,得到所有网格单元上的障碍体链表blocklist。

上述方法中,障碍体的合并方式如下。设m和n为同一个单元中上下两个相邻的障碍体。如果mymin-nymax<ε,则将m和n进行合并,生成新的障碍体p,p的底部和顶部坐标分别为nymin和mymax。根据船舶内部通道特点,在考虑虚拟人身高为h时,阈值ε可设置为0.9*h。在完成障碍体合并后,虚拟人可通过同一个网格单元上相邻的两个障碍体之间。

上述方法中,网格大小统一设置为(s–d)/2,其中s和d分别为场景中最小可通行区域的大小、虚拟人物人体的直径(采用圆柱体包络时)。

如图1,为一个三维场景模型,该模型分为上下两层结构,中间有2个楼梯连接。图2为该场景模型构成的障碍体表示。

(二)基于改进的a*算法的船舶内部智能导航

a*算法是对dijkstraalgorithm的一种扩展,是建立在关于特定问题的知识基础上的一种试探法。a*算法在进行路径规划时,需要确立一个如下形式的启发函数:f(n)=g(n)+h(n),其中g(n)为起始点spoint到候选点cpoint的实际花费代价,h(n)为候选点cpoint到目标点tpoint的估计代价。通过比较f(n)值来得到下一个路径节点。本发明提出了一种改进的a*算法来计算最短路径并对得到的路径进行优化,以便更符合常人的行走习惯。

改进的a*算法(算法2)流程图见图3,主要步骤如下。

算法2

算法输入:虚拟场景导航图(以网格数组存放的障碍体链表)

算法输出:障碍体表示的格点序列

处理步骤:

步骤1:把起始格添加到开启列表。

步骤2:重复如下的工作:

1)寻找开启列表中f值最低的格子,称之为当前格。

2)把它切换到关闭列表。

3)对相邻的格中的每一个,作如下处理:

a、如果它不可通过或者已经在关闭列表中,忽略该格子。反之如下。

b、如果它不在开启列表中,把它添加进去。把当前格作为这一格的父节点。记录这一格的f,g,和h值。

c、如果它已经在开启列表中,用g值为参考检查新的路径是否更好。更低的g值意味着更好的路径。如果是这样,就把这一格的父节点改成当前格,并且重新计算这一格的g和f值。如果开启列表按f值排序,改变之后需要重新对开启列表排序。

4)停止,当把目标格添加进了关闭列表,这时最优路径被找到。或者没有找到目标格,开启列表已经空了。这时候,路径不存在。

步骤3:保存路径。从目标格开始,沿着每一格的父节点移动直到回到起始格。

步骤4:对上述得到的路径进行如下方式(算法3)优化处理。

说明:算法2在计算实际代价g(n)时,本方法为每个障碍体附加一个权值w,w为本障碍体与周围最近不可通过障碍体的距离,将实际代价g(n)÷w作为新的g’(n)。h(n)的采用曼哈顿距离进行估计得到,即候选点到目标点的水面距离和垂直距离之和的10倍。从而得到:f’(n)=g’(n)+h(n)。

算法3

设路径中障碍体顶端中心点的集合为pointset={p1,p2,p3,…,pn}。

算法输入:路径中各障碍体顶端中心点的集合pointset

算法输出:更新后的中心点集合pointset。

处理步骤:

步骤1:令i=1;

步骤2:计算pipi+2与场景中障碍体的交点,记为interset;

步骤3:ifinterset≠null,则令i=i+2,转向步骤2;否则,转向步骤4;

步骤4:将pi+1删除,令pointset={p1,p2,…,pi,pi+2,…,pn},转步骤1;

步骤5:ifi=n-2,输出中心点集合pointset。

最终的中心点集合中只包含了从spoint到tpoint的路径上的所有关键点,路径的中间点将用直线插补的方式得到,这样可以有效的减少路径锯齿。图4(a)和图(b)分别为两组输入值,其中a点为起始点,b点为目标点。采用经典a*算法和本发明中的改进a*算法得到路径分别为图5(a)和图5(b)所示。

一个具体实施例:

基于上述方法,结合postengeering(简称pe)虚拟现实平台提供的应用编程接口,在大型船舶交互式虚拟培训系统中实现了智能导航功能,并在cpu为intelcorei53.2g、内存为8g的机器上对该功能进行测试,具体实施包括场景模型编辑以及功能演示两部分。

步骤1:场景模型准备。某产品采用sener公司的foran软件进行三维建模,将其中一个总段的三维模型导出为wrl格式。进一步,利用pe软件将其转换为.vob格式的vr场景文件,该文件包含231707个三角形面片。

步骤2:导航图计算。计算上述.vob格式场景模型包围盒以及导航图。该场景导航图被划分为627750个网格,其中包含1281916个障碍体。

步骤3:选择目标点。启动大型船舶交互式虚拟现实系统浏览界面,在弹出界面中选择目标点位置,目标点通常为船舶某层甲板上的某个舱室。

步骤4:路径计算及漫游。目标点选择后,点击确定后,自动计算最优路径,同时可以以第一或第三人称行走到目标位置。

基于上述场景,寻路距离为40.5米时,本发明提出的方法耗时78毫秒,寻路距离11.37米时耗时16毫秒。可见本导航方法满足虚拟现实中实时交互的性能要求。

本发明具有如下特点。

(1)与现有的导航网格、可视图、概率路图等方法相比,所提出的导航图充分考虑了场景水平及垂直方向的空间障碍信息、虚拟人尺寸以及生理特性等要素,能对船舶内部三维虚拟场景中的可通行区域进行精确建模。

(2)该导航图由虚拟场景模型直接计算得到,可预先进行计算和保存,以用于后续路径计算,无需用户对场景中的可行走区域、通道、楼梯等进行事先标记。

(3)所提出的改进a*算法与经典a*算法相比,得到的路径更加光顺,有效减少了锯齿形状,其次是更加符合人类行走习惯,避免贴近障碍体行走以及嵌入障碍体内的情形发生。改进后的a*算法建立在导航图基础上,能较好解决船舶内部复杂三维环境下的虚拟人路径规划问题。

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

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