CN120141497A 一种直升机避障路径规划方法 (四川华控图形科技有限公司)_第1页
CN120141497A 一种直升机避障路径规划方法 (四川华控图形科技有限公司)_第2页
CN120141497A 一种直升机避障路径规划方法 (四川华控图形科技有限公司)_第3页
CN120141497A 一种直升机避障路径规划方法 (四川华控图形科技有限公司)_第4页
CN120141497A 一种直升机避障路径规划方法 (四川华控图形科技有限公司)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(19)国家知识产权局事务所(普通合伙)51422专利代理师赖将军本发明提供了一种直升机避障路径规划方向的总代价对三维空间中直升机的避障路径进S21.一种直升机避障路径规划方法,其特征在于,包S2、基于填充结果,获取满足约束条件的终点,并针对起点或终点为填充障碍点时,从起点或终点扩散取消填充障碍点;S3、基于扩散取消结果,采用双向A*算法同步扩展,对直升机避障路径进行搜索,并通过设计起点方向和终点方向的总代价中的实际代价和启发代价对三维空间中直升机的避S4、基于生成的相邻节点列表,利用绕墙法生成新的相邻节点,并将新的相邻节点列表中的最优相邻节点作为下一节点,并返回S3;S5、从相遇节点开始,分别沿着两个方向的父节点回溯,直至起点和终点,并合并两个方向的回溯路径,得到从起点到终点完整路径,完成对直升机避障路径的规划。2.根据权利要求1所述的直升机避障路径规划方法,其特征在于,所述S1具体为:对高程栅格地图进行预处理,将4800m以上区域标记为障碍点,采用水杯填充法进行填4800m以上区域指高程栅格地图中当前栅格高度大于4800m,标记其为障碍区域,直升机无法飞过;水杯填充法指通过填充凹形区域降低直升机避障路径规划中的搜索空间,包含水平填充和垂直填充,扫描策略指逐行横向遍历地图,检查通行点;水平填充时,若当前点左侧为障碍点,当前点上侧或下侧存在障碍点,以该点为起始点向右扩散,并将扩散点添加进扩散列表中,所有扩散点保持与起始点同方向的支撑点,若扩散中出现异侧支撑或无支撑,则判定为漏口并终止当前点填充;若扩散遇右侧为障碍点,则将扩散列表里的点标记为填充障碍点;垂直填充时,若当前点上侧为障碍点,当前点左侧或右侧存在障碍点,以该点为起始点向下扩散,并将扩散点添加进扩散列表中,所有扩散点保持与起始点同方向的支撑点,若扩散中出现异侧支撑或无支撑,则判定为漏口并终止当前点填充;若扩散遇下侧障碍点,则将扩散列表里的点标记为填充障碍点;持续遍历地图,直至扩散列表为空的遍历完一次时,完成填充。3.根据权利要求1所述的直升机避障路径规划方法,其特征在于,所述S2具体为:其中,终点不能为障碍点,即高度不超过4800m,同时终点的坡度不高于30度;S203、针对起点或终点为填充障碍点时,从起点或终点扩散取消填充障碍点。4.根据权利要求3所述的直升机避障路径规划方法,其特征在于,所述扩散查找满足条从终点向周围八个方向扩散,检查是否满足包括坡度和高度的约束条件,若不满足,则在八个邻居点的基础上继续扩散八个方向,直至查找到满足约束条件的新的终点;坡度的表达式如下:3其中,slpoe表示坡度,dz表示邻居点与中心点高度差的绝对值,ds表示邻居点与中心点水平距离的绝对值,heightneighbor表示邻居点的高度,heightcener表示中心点的高度,5.根据权利要求3所述的直升机避障路径规划方法,其特征在于,所述从起点或终点扩针对起点或终点为填充障碍点时,以起点或终点为中心向八个方向扩散,将扩散路径中所有标记为填充障碍的点恢复为可通行状态;若扩散过程中遇到障碍点或可通行点,则6.根据权利要求3所述的直升机避障路径规划方法,其特征在于,所述S3具体为:S301、基于扩散取消结果,初始化双向A*算法,分别创建从起点出发和从终点出发的开放列表Open_Listst、Open_Listena和关闭列表Closed_Listst、Closed_Listemd;S302、初始化起点方向和终点方向的总代价,并将起点和终点分别加入至开放列表Open_Lists,m和Open_Listea中,其中,起点方向和终点方向的总代价的表达式分别如下:f(E)=g(E)+h(E→S);h(S→E)=|xs-xg|+|ys-yE|+|zs其中,f(S)表示起点方向的总代价,f(E)表示终点方向的总示终点,g(S)表示起点的实际代价,起点为0,g(Nsa)表示当前节点Nsua的实际代价,c(Nsa₁,S)表示从当前节点Nsa到达起点节点S的移动代价,由于是起点方向,起点为第一个节点,并无从其他节点到达起点的情况,因此都为0,h(S→E)表示起点到达终点的启发式代价,g(E)表示终点的实际代价,终点为0,g(Nena)表示当前节点Na的实际代价,c(Nena,S)表示从当前节点Na到达起点节点E的移动代价,h(E→S)表示从终点到达起点的启发式代价,(xg,ys,zs)表示起点的位置坐标,(xE,YE,zE)表示终点的位置坐标;4f(Nsram)值最小的节点Nstu和开放列表Open_Listma中f(Nena)值最小的节点Nma;S306、将当前节点N从开放列表Open_List中移除,并将当前节点N添加至关闭列表Closed_List中,同时根据当前节点与目标节点的方向角度生成相邻节点列表将当前节点N从开放列表Open_List中移除,并将当前节点N添加至关闭列表示开放列表Open_Listea中f值最小的节点,arg表示取开放列表5针对方向角度为0°≤θ<45°时,其水平扩展方向为A1,三维扩展方向上的邻节点列表标为(0,0,0),其相邻节点列表Neighbor_List坐标如下:的位置,若方向角度为45°≤θ<90°时,其水平扩展方向为A2时,将相邻节点列表Neighbor_List中节点f的x方向和y方向换为A2,其中,相邻节点列表Neighbor_List中除节点f外的节点,需在节点f基础上进行更改,具体如下:8.根据权利要求6所述的直升机避障路径规划方法,其特征在于,所述S4具体为:S401、判断相邻节点列表Neighbor_List里面的节点是否符合条件,若是,则进入S402,否则,利用绕墙法生成新的相邻节点M,并进入S402;S402、判断相邻节点M是否已在当前方向的开放列表Open_List中,若是,则进入S404,S403、判断相邻节点M是否已在当前方向的关闭列表Closed_List中,若是,则进入6S406、设置相邻节点M的父节点为节点N、总代价f(M),将相邻节点M添加至开放列表7技术领域[0001]本发明属于航空路径规划技术领域,尤其涉及一种直升机避障路径规划方法。背景技术[0002]近年来,伴随自然灾害和各种突发事件的发生,导致对应急救援服务需求的急速增长。而直升机以其具有的救援速度快、救援效率高、救援专业性强等特点,在应急救援中得到广泛应用。[0003]但是在直升机应急救援的工程中,缺少高效的路径规划,容易造成直升机应急救援效率的不足,并且往往会忽略限制因素的影响,造成救援任务的失败甚至是直升机事故。[0004]目前常用的算法主要有Dijkstra算法、快速扩展随机树算法(Rapidly-exploringRandomTrees,RRT)、A*算法、蚁群算法等。在实际应用过程中,直升机路径规划问题面临着许多挑战和限制,首先飞行过程中需要考虑地形、气象条件、障碍物等因素,其次还需要考虑到飞行时间、能耗、飞行安全等因素。因此,提出一种有效的路径规划算法就显得尤为重要。[0005]A*算法是一种在图形的路径规划和图搜索中广泛应用的启发式搜索算法。它是一种综合了最佳优先搜索和Dijkstra算法的特性。A*算法通过估计从起点到目标的最短距离来引导搜索过程,同时考虑已经走过的路径代价和搜索代价。发明内容[0006]针对现有技术中的上述不足,本发明提供的一种直升机避障路径规划方法,本发明解决了复杂三维空间下直升机避障路径搜索算法效率低的问题。[0007]为了达到以上目的,本发明采用的技术方案为:一种直升机避障路径规划方法,包括以下步骤:[0009]S2、基于填充结果,获取满足约束条件的终点,并针对起点或终点为填充障碍点时,从起点或终点扩散取消填充障碍点;[0010]S3、基于扩散取消结果,采用双向A*算法同步扩展,对直升机避障路径进行搜索,并通过设计起点方向和终点方向的总代价中的实际代价和启发代价对三维空间中直升机[0011]S4、基于生成的相邻节点列表,利用绕墙法生成新的相邻节点,并将新的相邻节点列表中的最优相邻节点作为下一节点,并返回S3;[0012]S5、从相遇节点开始,分别沿着两个方向的父节点回溯,直至起点和终点,并合并两个方向的回溯路径,得到从起点到终点完整路径,完成对直升机避障路径的规划。[0013]本发明的有益效果是:本发明提供一种基于A*算法的改进直升机高效避障路径规划方法,主要包括对地图进行水杯填充法预处理,减少搜索空间;采取双向A*算法同步扩展,加快搜索效率;合理设计总代价中的实际代价和启发代价提升三维空间中路径规划的8效率;减少不必要节点动作来提升搜索效率;通过绕墙法避免陷入死循环,有效提高复杂环境中的实用性。[0015]对高程栅格地图进行预处理,将4800m以上区域标记为障碍点,采用水杯填充法进[0016]4800m以上区域指高程栅格地图中当前栅格高度大于4800m,标记其为障碍区域,直升机无法飞过;水杯填充法指通过填充凹形区域降低直升机避障路径规划中的搜索空[0017]水平填充时,若当前点左侧为障碍点,当前点上侧或下侧存在障碍点,以该点为起始点向右扩散,并将扩散点添加进扩散列表中,所有扩散点保持与起始点同方向的支撑点,若扩散中出现异侧支撑或无支撑,则判定为漏口并终止当前点填充;若扩散遇右侧为障碍点,则将扩散列表里的点标记为填充障碍点;[0018]垂直填充时,若当前点上侧为障碍点,当前点左侧或右侧存在障碍点,以该点为起始点向下扩散,并将扩散点添加进扩散列表中,所有扩散点保持与起始点同方向的支撑点,若扩散中出现异侧支撑或无支撑,则判定为漏口并终止当前点填充;若扩散遇下侧障碍点,则将扩散列表里的点标记为填充障碍点;[0019]持续遍历地图,直至扩散列表为空的遍历完一次时,完成填充。[0020]上述进一步方案的有益效果是:本发明提供了水杯填充法预处理方案,可以在三维空间内减少直升机的搜索空间,大大的提高搜索效率。S202,其中,终点不能为障碍点,即高度不超过4800m,同时终点的坡度不高于30度;[0024]S203、针对起点或终点为填充障碍点时,从起点或终点扩散取消填充障[0025]上述进一步方案的有益效果是:避免因水杯填充法预处理方案,将起点或终点填充为被填充障碍包围的情况,从而路径规划失败。[0027]从终点向周围八个方向扩散,检查是否满足包括坡度和高度的约束条件,若不满足,则在八个邻居点的基础上继续扩散八个方向,直至查找到满足约束条件的新的终点;[0028]坡度的表达式如下:9[0033]上述进一步方案的有益效果是:避免终点设置到4800m高度上,从而导致直升机无法到达终点,路径规划失败,而采用坡度计算,则是为了避免选点到坡度过陡,直升机无法安全稳定降落到该点。[0034]再进一步地,所述从起点或终点扩散取消填充障碍点,其具体为:[0035]针对起点或终点为填充障碍点时,以起点或终点为中心向八个方向扩散,将扩散路径中所有标记为填充障碍的点恢复为可通行状态;若扩散过程中遇到障碍点或可通行点,则当前点不进行扩散,直到无扩散点。[0036]再进一步地,所述S3具体为:[0037]S301、基于扩散取消结果,初始化双向A*算法,分别创建从起点出发和从终点出发[0038]S302、初始化起点方向和终点方向的总代价,并将起点和终点分别加入至开放列表Open_Listsm和Open_Listena中,其中,起点方向和终点方向的总代价的表达式分别如[0043]h(S→E)=|xs-xg|+|ys-yB|+|zs-zB|[0044]h(E→S)=|xg-xs|+|yE-ys|+|zB-zs|第一个节点,并无从其他节点到达起点的情况,因此都为0,h(S→E)表示起点到达终点的启发式代价,g(E)表示终点的实际代价,终点为0,g(Nen)表示当前节点Nem的实际代价,c(Nena,S)表示从当前节点Na到达起点节点E的移动代价,h(E→S)表示从终点到达起点的启发式代价,(xs,ys,Zs)表示起点的位置坐标,(xE,yE,zE)表示终点的位置坐标;[0046]S303、判断开放列表Open_Lists,m和Open_Listema是否存在空列表,若是,则不能规划出三维空间中直升机的避障路径,结束流程,否则,进入S304;Open_Listsu中f(Nstam)值最小的节点Nsa和开放列表Open_Listm中f(Nma)值最小的[0048]S305、判断从两个开放方方向的关闭列表Closed_List中,若是,则判断为表Closed_List中,同时根据当前节点与目标节点的方向角度生成相邻节点列表[0051]将当前节点N从开放列表Open_List中移除,并将当前节点N添加至关闭列表[0054]其中,N表示开放列表Open_List中的节点,f(N)表示开放列表Open_List中所a表示取开放列表Open_List中f值a示开放列表Open_Listea中f值最小的节点,表示取开放列表A7和A8:11点N坐标为(0,0,0),其相邻节点列表Neighbor_List坐标如下:G、H、I的位置,若方向角度为45°≤θ<90°时,其水平扩展方向为Neighbor_List中节点fe的x方向和y方向换为A2,其中,相邻节点列表Neighbor_List中除节点fe外的节点,需在节点f基础上进行更改,具体如下:[0061]上述进一步方案的有益效果是:在三维栅格空间的节点搜索设计中,每个节点具在正常飞行时应保持前进方向的运动,因此依据当前节点与目标节点的方向角度来确定水平拓展方向,这样直升机三维方向能够选择拓展的节点被限定于前进方向的9个栅格动作,这一优化策略大幅削减了不必要的搜索节点,显著提升了搜索效率。S402,否则,利用绕墙法生成新的相邻节点M,并进入S402;[0064]S402、判断相邻节点M是否已在当前方向的开放列表Open_List中,若是,则进入[0066]S404、判断8ne(M)是否小于g(M),若是,则经当前节点N到相邻节点M的实际代价最小,并更新相邻节点M的父节点为节点N,重新计算总代价f(M),并返回S303,否则,不示开放列表Open_List中记录曾经从除当前节点N外的节点到达相邻节点M的实际代价;[0067]S405、判断8nen(M)是否小于g(M),若是,则相邻节点M从关闭列表Closed_List[0068]S406、设置相邻节点M的父节点为节点N、总代价f(M),将相邻节点M添加至开放列[0069]上述进一步方案的有益效果是:检查相邻节点M是否在开放列表Open_List,若在关闭列表Closed_List,若是,则决定是否重新启用,若否,就在设置属性后加入开放列表Open_List,合理管理搜索空间,让搜索更有序。而其中对比8nen(M)和g(M),有助于找到全局更优路径,提升路径规划代价最小结果。[0070]再进一步地,所述总代价f(M)的表达式如下:[0073]上述进一步方案的有益效果是:总代价f(M)内包括实际代价8neun(M)与启发代价h(N→G),其中8new(M)确保算法不会偏离已探索的较优实际代价,而三维曼哈顿距离作为启发代价,指明趋近目标节点的方向,算法借二者综合考量,精准评估节点,从而找到更优路径。附图说明[0074]图1为本发明的方法流程图。[0075]图2为根据当前节点与目标节点角度确定的前进方向图。具体实施方式[0077]下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。单元格。现方法如下:直升机无法飞过;水杯填充法指通过填充凹形区域降低直升机避障路径规划中的搜索空点与起点的距离。[0097]S203、针对起点和终点为填充障碍点时,从起点或终点扩散取消填充障碍点,其具体为:[0098]针对起点或终点为填充障碍点时,以起点或终点为中心向八个方向扩散,将扩散路径中所有标记为填充障碍的点恢复为可通行状态;若扩散过程中遇到障碍点或可通行点,则当前点不进行扩散,直到无扩散点。[0099]S3、基于扩散取消结果,采用双向A*算法同步扩展,对直升机避障路径进行搜索,并通过设计起点方向和终点方向的总代价中的实际代价和启发代价对三维空间中直升机的避障路径进行规划,生成相邻节点列表,其中,当为双向搜索相遇时,进入S5,其实现方法如下:[0100]S301、基于扩散取消结果,初始化双向A*算法,分别创建从起点出发和从终点出发存储已扩展节点。[0102]S302、初始化起点方向和终点方向的总代价,并将起点和终点分别加入至开放列表Open_Listsam和Open_Listema中,其中,起点和终点的总代价的表达式分别如下:[0107]h(S→E)=|xs-xg|第一个节点,并无从其他节点到达起点的情况,因此都为0,h(S→E)表示起点到达终点的启发式代价,g(E)表示终点的实际代价,终点为0,g(Nema)表示当前节点Nema的实际代价,c(Nena,S)表示从当前节点Na到达起点节点E的移动代价,由于是终点方向,终点为第一个节点,并无从其他节点到达终点的情况,因此都为0,h(E→S)表示从终点到达起点的启发式代价,(xg,ys,zs)表示起点的位置坐标,(xg,yE,zE)表示终点的位置坐标;启发式代价均通过三维曼哈顿距离来计算,移动代价c(A,B)指从A点到B点的移动代价,实际代价[0111]S304、若两个方向的开放列表Open_List均非空,则分别选择开放列表节点Nena;表Closed_List中,同时根据当前节点与目标节点的方向角度生成相邻节点列表[0114]将当前节点N从开放列表Open_List中移除,并将当前节点N添加至关闭列表有节点的f值构成的集合,Nskur表示开放列表Open_Listsur中f值最小的节点,aa示开放列表Open_Listea中f值最小的节点,表示取开放列表A7和A8:[0120]针对方向角度为0°≤θ<45°时,其水平扩展方向为A1,三维扩展方向上的邻节点列表Neighbor_List分布于前方整个面的前左上节点A、前左节点B、前左下节点C、前上节点D、前节点E、前下节点F、前右上节点G、前右节点H和前右下节点九个点上,其中,若当前节点N坐标为(0,0,0),其相邻节点列表Neighbor_List坐标如下:[0122]其中,0表示方向角度,fa、fB、fc、fp、fE、f、fg、fa和f1分别表示当前节点NG、H、I的位置,若方向角度为45°≤θ<90°时,其水平扩展方向为A2时,将相邻节点列表Neighbor_List中节点fe的x方向和y方向换为A2,其中,相邻节点列表Neighbor_List中除节点f外的节点,需在节点f基础上进行更改,具体如下:[0124]本实施例中,考虑到直升机在正常飞行时应保持前进方向的运动,其中前进方向只分析水平方向,而其中前进的运行方向根据终点与起点的方向生成角度。[0125]本实施例中,如图2所示,方向图描述如下:其中当前节点指的是直升机的当前位置,而目标节点指的是要当前方向到达的目标节点,从起点出发时,目标节点指的是终点,从终点出发时,目标节点指的是起点,而前进方向仅指代水平方向,因此栅格方向是一个二维的方向,只有x和y坐标的变化,因此当前节点为N时,他一共有8个方向可以选择,需要根据方向角度来确定前进方向。[0126]本实施例中,如图3所示,节点搜索范围图描述为:当确定前进方向后,当前节点为这些则是相邻节点列表里的相邻节[0127]本实施例中,水杯填充法为现有技术,流程描述如下:[0128]1.初始化:初始化当前栅格点;[0129]2.主循环:[0130]a.逐行遍历地图栅格点;[0131]b.判断地图是否遍历完成?[0132]Y:地图遍历完成,判断扩散列表是否为空?[0133]Y:扩散列表为空,无需填充,结束;[0134]N:扩散列表不为空,仍需填充,初始化当前栅格点,从头开始;[0135]N:地图未遍历完成,向下进行,取下一个栅格点;[0136]c.判断当前点是否是可通行点?[0137]Y:是可通行点,向下进行,判断填充类型;[0138]N:不是可通行点,返回遍历地图;[0139]d.判断当前点左侧是否为障碍点?[0140]Y:是障碍点,水平填充触发;[0141]N:不是障碍点,下面判断当前点上侧是否为障碍点;[0142]e.判断当前点上侧是否为障碍点?[0143]Y:是障碍点,垂直填充触发;[0144]N:不是障碍点,返回遍历地图;[0145]3.扩散填充:[0146]a.沿触发方向逐点检测,水平填充方向为向右,垂直填充方向为向下;[0147]遇同侧支撑则持续扩散,并将扩散点添加至扩散列表;[0148]遇异侧支撑或无支撑则判定漏口,终止扩散,清空扩散列表;[0149]遇障碍点则将扩散列表里的扩散点标记为填充障碍;[0150]4.循环终止条件:完成全图遍历且扩散列表为空时结束。[0151]本实施例中,中心扩散法为现有技术,流程描述如下:[0152]1.初始化列表:初始化待检查点列表,已检查列表;[0153]2.主循环[0154]a.令待检查点为终点;[0155]b.将待检查点添加进待检查点列表;[0156]c.判断是否遍历完待检查点列表?[0157]Y:遍历完,没有满足约束条件的点,扩散结束;[0158]N:没有遍历完,正常往下进行;[0159]d.获取遍历的待检查点,并将其从待检查点列表中移除;[0160]e.判断待检查点是否存在于已检查点列表?[0161]Y:存在,则返回继续遍历;[0162]N:不存在,则正常向下进行;[0163]f.获取待检查点与其8个邻居点之间的角度,并将低于4800m的邻居点添加进待检查点列表;[0164]g.将邻居点添加进待检查列表,将待检查点添加进已检查列表;[0165]h.判断待检查点与邻居点的角度是否小于30度且高度小于4800m?[0166]Y:待检查点满足约束条件,则待检查点为新终点,结束;[0167]N:待检查点不满足约束条件,则返回继续遍历待检查点列表;[0168]3.循环终止条件:找到满足约束条件的待检查点或遍历完待检查点列表。[0169]本实施例中,取消水杯填充法为现有技术,流程描述如下:[0170]1.初始化列表:初始化待检查点列表,已检查列表[0171]2.主循环[0172]a.判断当前点是否为填充障碍点?[0173]Y:是填充障碍点,正常向下进行;[0174]N:不是填充障碍点,无需取消扩散的点,流程结束;[0175]b.令待检查点为当前点;[0176]c.将待检查点添加进待检查点列表,并取消待检查点的填充障碍标记;[0177]d.判断是否遍历完待检查点列表?[0178]Y:遍历完成,无需取消扩散的点,流程结束;[0179]N:没有遍历完,正常往下进行;[0180]e.获取遍历的待检查点,并将其从待检查点列表中移除;[0181]f.判断待检查点是否存在于已检查点列表?[0182]Y:存在,则返回继续遍历待检查点列表[0183]N:不存在,则正常向下进行;[0184]g.获取待检查点的8个邻居点;[0185]h.判断8个邻居点是否为填充障碍点?[0186]Y:是填充障碍点的邻居点,将该邻居点添加进待检查列表,并取消该邻居点的填充障碍标记;[0187]N:不是填充障碍点的邻居点,跳过处理,返回继续遍历待检查点列表;[0188]3.循环终止条件:遍历完待检查点列表。[0189]本实施例中,左手绕墙法为现有技术,流程描述如下:[0190]1.初始化:初始化节点通行列表,待绕墙列表,绕墙计数为0;[0192]a.判断相邻节点列表中是否存在非通行点?[0193]Y:存在的,将非通行点添加进待绕墙列表;[0194]N:不存在的,则无需绕墙,直接结束;[0195]b.判断是否遍历完相邻节点列表?[0196]Y:遍历完,获得待绕墙列表;[0197]N:未遍历完,返回继续判断相邻节点列表中是否存在非通行点;[0198]c.判断是否遍历完待绕墙列表?[0199]Y:遍历完,待绕墙列表中不存在需绕墙节点,结束;[0200]N:未遍历完,非通行点与当前点x、y坐标差值获取水平动作direction;[0201]d.右绕墙法,右绕墙动作directions序列:(1,0)→(1,-1)→(0,-1)→(-1,-1)[0202]e.按照右绕墙动作directions序列进行绕墙,这是一个循环,根据水平动作direction选择从哪里开始遍历,每绕过一次绕墙计数+1;[0203]f.判断绕墙计数是否大于8?[0204]Y.绕墙计数大于8,返回判断是否遍历完待绕墙列表;[0205]N:绕墙计数未大于8,获取绕墙后的位置,也就是从当前位置进行左绕墙动作directions序列中的下一个动作;[0206]g.判断绕墙后的位置是否存在可通行点?[0207]Y:存在可通行点,将可通行点添加进节点通行列表;[0208]N:返回绕墙循环;[0209]3.循环终止条件:相邻节点列表不存在非通行点,或遍历完待绕墙列表。[0210]S4、基于生成的相邻节点列表,利用绕墙法生成新的相邻节点,并将新的相邻节点列表中的最优相邻节点作为下一节点,并返回S3,其实现方法如下:[0211]S401、判断相邻节点列表Neighbor_List里面的节点是否符合条件,若是,则进入S402,否则,利用绕墙法生成新的相邻节点M,并进入S402;[0212]本实施例中,绕墙法是一种沿障碍物边缘绕行的避障策略,包含左手摸墙法和右手摸墙法。遇障时,左手法优先向左转,若左方的上、中、下三节点仍为障碍,则继续左转,直至不遇见障碍或转向次数超过8次;右手法反之,优先向右转,若右方三节点仍为障碍,则继续右转,直至满足相同终止条件。[0213]S402、判断相邻节点M是否已在当前方向的开放列表Open_List中,若是,则进入[0214]本实施例中,该S402是这是为了确保开放列表Open_List中始终保存到达个节点的最小代价路径,避免因早期记录的高代价路径而错过更优解。[0216]本实施例中,S403是为了发现更优路径时重新激活节点,确保全局最优解的可能性。[0217]S404、判断8new(M)是否小于g(M),若是,则经当前节点N到相邻节点M的实际代价最小,并更新相邻节点M的父节点为节点N,重新计算总代价f(M),这样到达相邻节点M当前节点N到达相邻节点M的实际代价,g(M)表示开放列表Open_List中记录曾经从除当前节点N外的节点到达相邻节点M的实际代价;[0218]S405、判断8nen(M)是否小于g(M),若是,则相邻节点M从关闭列表Closed_List[0219]S406、设置相邻节点M的父节点为节点N、总代价f(M),将相邻节点M添加至开放列[0220]S5、从相遇节点开始,分别沿着两个方向的父节点回溯,直至起点和终点,并合并两个方向的回溯路径,得到从起点到终点完整路径,完成对直升机避障路径的规划。[0223]2.主循环[0224]a.判断相邻节点列表中是否存在非通行点?[0225]Y:存在的,将非通行点添加进待绕墙列表;[0227]b.判断是否遍历完相邻节点列表?[0229]N:未遍历完,返回继续判

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论