掌桥专利:专业的专利平台
掌桥专利
首页

车辆路径规划方法及装置、存储介质、终端、车辆

文献发布时间:2024-04-18 19:58:26


车辆路径规划方法及装置、存储介质、终端、车辆

技术领域

本申请涉及数据处理技术领域,尤其涉及一种车辆路径规划方法及装置、计算机可读存储介质、终端、车辆。

背景技术

车辆路径规划的主要功能是根据地图信息、定位信息以及车辆状态信息等,在一定区域内搜索到一条由当前位置到目标终点的无碰撞的、安全可行的路径。目前,在进行车辆路径规划的过程中,一般会根据道路环境信息的不同将路径规划的任务分为结构化道路上的路径规划和非结构化道路上的路径规划。结构化道路具有清晰的道路标志线,包括高速公路、城市主干道等;而非结构化道路没有道路标志线,往往指乡村街道、开放环境中的道路等。在非结构化规划中,通常因为没有车道信息,因此通常只需要根据周围障碍物情况规划出一条到达终点的安全、无碰撞且高效的路径。

现有的车辆路径规划方案中虽然会考虑障碍物碰撞情况,但是通常倾向于选择一条行驶距离最短的路径。这种逻辑会为了使行驶距离减少而导致最终路径非常靠近障碍物,并且当障碍物检测不足够精确时,车辆按照规划路径行驶时仍然存在较高的碰撞几率。

发明内容

本申请解决的技术问题是如何兼顾车辆路径的安全性以及路径规划的成功率。

有鉴于此,本申请实施例提供一种车辆路径规划方法,所述方法包括:确定路径规划的起始节点和目标节点;迭代地进行一次或多次节点搜索,其中,首次节点搜索时以所述起始节点作为搜索起点,每次搜索时确定当前节点列表以及所述当前节点列表中各个节点的代价,若代价最小的节点落入所述目标节点的预设范围内,则生成目标路径,若所述代价最小的节点并未落入所述目标节点的预设范围内,则将所述代价最小的节点作为搜索起点继续进行下一次节点搜索,直至所述代价最小的节点落入所述目标节点的预设范围内;其中,确定所述当前节点列表中各个节点的代价包括:步骤一:将参考膨胀系数作为当前膨胀系数;步骤二:采用所述当前膨胀系数对车辆尺寸进行膨胀,并基于膨胀后的车辆尺寸和节点处的车辆位姿进行碰撞检测,若所述碰撞检测的检测结果为发生碰撞,则执行步骤三,否则,计算所述节点的代价;步骤三:若所述当前膨胀系数大于最低阈值,则减小所述当前膨胀系数,并返回至所述步骤二,若所述当前膨胀系数小于或等于所述最低阈值,则删除所述节点。

可选的,减小所述当前膨胀系数包括:从膨胀系数集合中选取小于且最接近于所述当前膨胀系数的系数,作为所述当前膨胀系数。

可选的,所述膨胀系数集合包括多个系数,所述参考膨胀系数为所述多个系数中的最大值,且所述多个系数中的最小值大于或等于所述最低阈值。

可选的,所述节点搜索包括:根据本次节点搜索的搜索起点的方向状态信息和搜索方向限制信息,确定本次节点搜索的搜索方向,其中,所述方向状态信息用于表征所述搜索起点和所述搜索起点的父节点之间的位置关系,所述搜索方向限制信息用于描述相邻两次节点搜索所采用的搜索方向之间的关系;基于所确定的搜索方向进行所述本次节点搜索。

可选的,所述相邻两次节点搜索所采用的搜索方向之间的关系包括以下任意一项或多项:若前一次节点搜索的搜索方向为前向,则后一次节点搜索的搜索方向为前向;若前一次节点搜索的搜索方向为后向,则后一次节点搜索的搜索方向为前向或后向;若前一次节点搜索的搜索方向为后向,则后一次节点搜索的搜索方向为后向。

可选的,计算所述节点的代价包括:根据所述当前膨胀系数计算所述节点的碰撞代价;根据所述节点的碰撞代价和距离代价,确定所述节点的代价。

可选的,代价最小的节点落入所述目标节点的预设范围的判断方法包括:若所述代价最小的节点为所述目标节点,则所述代价最小的节点落入所述目标节点的预设范围;若所述代价最小的节点不为所述目标节点,且所述代价最小的节点和所述目标节点之间的距离小于或等于预设距离,则采用启发函数曲线算法确定连接所述代价最小的节点和所述目标节点的曲线;在所述曲线上的各个采样点处进行碰撞检测,若所述各个采样点处的碰撞检测的检测结果均为不发生碰撞,则确定代价最小的节点落入所述目标节点的预设范围。

可选的,所述方法还包括:若确定所述目标路径生成失败,则减小所述最低阈值;基于减小后的最低阈值,重新迭代地进行一次或多次节点搜索。

本申请实施例还提供一种车辆路径规划装置,所述装置包括:初始化模块,用于确定路径规划的起始节点和目标节点;路径规划模块,用于迭代地进行一次或多次节点搜索,其中,首次节点搜索时以所述起始节点作为搜索起点,每次搜索时确定当前节点列表以及所述当前节点列表中各个节点的代价,若代价最小的节点落入所述目标节点的预设范围内,则生成目标路径,若所述代价最小的节点并未落入所述目标节点的预设范围内,则将所述代价最小的节点作为搜索起点继续进行下一次节点搜索,直至所述代价最小的节点落入所述目标节点的预设范围内;其中,所述路径规划模块包括:初始化子模块,用于执行步骤一,所述步骤一包括:将参考膨胀系数作为当前膨胀系数;检测子模块,用于执行步骤二,所述步骤二包括:采用所述当前膨胀系数对车辆尺寸进行膨胀,并基于膨胀后的车辆尺寸和节点处的车辆位姿进行碰撞检测,若所述碰撞检测的检测结果为发生碰撞,则执行步骤三,否则,计算所述节点的代价;判断子模块,用于执行步骤三,所述步骤三包括:若所述当前膨胀系数大于最低阈值,则减小所述当前膨胀系数,并返回至所述步骤二,若所述当前膨胀系数小于或等于所述最低阈值,则删除所述节点。。

本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述的车辆路径规划方法的步骤。

本申请实施例还提供一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述的车辆路径规划方法的步骤。

本申请实施例还提供一种车辆,所述车辆包括上述的终端。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

在本申请实施例的方案中,确定路径规划的起始节点和目标节点之后,迭代地进行一次或多次节点搜索,其中,首次节点搜索时以起始节点作为搜索起点,每次搜索时确定当前节点列表以及当前节点列表中各个节点的代价,若代价最小的节点落入目标节点的预设范围内,则生成目标路径,若代价最小的节点并未落入目标节点的预设范围内,则将代价最小的节点作为搜索起点继续进行下一次节点搜索,直至代价最小的节点落入目标节点的预设范围内。其中,当前节点列表中各个节点的代价采用下列步骤确定:步骤一:将参考膨胀系数作为当前膨胀系数;步骤二:采用当前膨胀系数对车辆尺寸进行膨胀,并基于膨胀后的车辆尺寸和节点处的车辆位姿进行碰撞检测,若碰撞检测的检测结果为发生碰撞,则执行步骤三,否则,计算节点的代价;步骤三:若当前膨胀系数大于最低阈值,则减小当前膨胀系数,并返回至步骤二,若当前膨胀系数小于或等于最低阈值,则删除节点。

上述方案中,对于搜索到的每个节点应用于多级碰撞策略,逐渐地减小用于对车辆尺寸进行膨胀的膨胀系数,以确定应用于该节点处的一个合理的膨胀系数,采用该膨胀系数对车辆尺寸进行膨胀后计算节点的代价,相较于设置一个固定的膨胀系数进行路径规划的方案而言,本申请实施例提供的方案能够兼顾车辆路径的安全性以及路径规划的成功率。

进一步,本申请实施例的方案中,根据本次节点搜索的搜索起点的方向状态信息和搜索方向限制信息,确定本次节点搜索的搜索方向。上述方案中,在节点搜索时设置了相邻两次节点搜索所采用的搜索方向之间的限制,有利于提高路径的合理性。

附图说明

图1是本申请实施例中一种车辆路径规划方法的流程示意图;

图2是图1中步骤S12的一种具体实施方式的流程示意图;

图3是本申请实施例中另一种车辆路径规划方法的流程示意图;

图4是本申请实施例中一种车辆路径规划装置的结构示意图。

具体实施方式

目前,在结构化道路的路径规划中通常会根据车道信息、路标信息和信号灯信息等规划出一条符合交通法规的前进路径。但是,当结构化规划因为车道中障碍物堵塞或其他特殊原因而无法生成结构化路径时,需要在有限时间内生成一条无碰撞的非结构化规划的脱困路径,这种非结构化规划路径仍需要受限于可行驶车道以及交通规则等,这种路径规划通常被称为半结构化规划。

在半结构化规划的场景中,由于需要考虑障碍物的情况,因此在路径规划算法中引入避障约束。然而,现有的车辆路径规划方案中虽然会考虑障碍物碰撞的情况,但是通常倾向于选择一条行驶距离最短的路径。这种逻辑会为了使行驶距离减少而导致最终路径非常靠近障碍物,若障碍物检测的精确度较低时,车辆按照规划路径行驶时仍然存在较高的碰撞几率。

为了获得安全性更高的车辆路径,可以考虑在路径规划时对车辆尺寸进行膨胀,并基于膨胀后的车辆尺寸计算路径代价。然而,区别于非结构化规划场景中仅需要考虑障碍物的情况,半结构化规划除了障碍物约束,还需要受限于可行驶车道以及交通规则等约束,容易出现寻路失败的情况。因此,在半结构化规划场景中,如何在实现避障的前提下尽可能避免寻路失败的情况是本领域的技术难点之一。

有鉴于此,本申请实施例的方案中提供一种应用于车辆路径规划算法中的多级碰撞策略,对于搜索到的每个节点,逐渐地减小用于对车辆尺寸进行膨胀的膨胀系数,以确定应用于该节点处的一个合理的膨胀系数,采用该膨胀系数对车辆尺寸进行膨胀后计算节点的代价,相较于设置一个固定的膨胀系数进行路径规划的方案而言,本申请实施例提供的方案能够兼顾车辆路径的安全性以及路径规划的成功率。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

参照图1,图1是本申请实施例中一种车辆路径规划方法的流程示意图。图1示出的方法可以由应用于终端,所述终端可以是车载终端。具体的,可以由终端来执行,也可以由终端中具有数据处理功能的芯片执行,也可以由终端中包含有数据处理功能的芯片的芯片模组来执行。或者,在其他实施例中,图1示出的方法也可以由车载终端连接的云端服务器执行,例如,云端服务器可以执行本申请实施例提供的方案生成目标路径后,将目标路径发送给终端。下文主要以终端为执行主体为例进行描述。

图1示出的方法可以包括步骤S11至步骤S14。

步骤S11,确定路径规划的起始节点和目标节点。

在步骤S11中,可以先获取车辆所在区域的地图信息,然后对地图信息进行栅格化处理,从而得到栅格地图,进一步,可以在栅格地图中确定起始节点和目标节点。其中,起始节点可以是起点所在的栅格,目标节点可以是终点所在的栅格。

在一个非限制性的例子中,可以在终点所在的矩形区域内选取一个栅格作为目标节点。其中,矩形区域的中心位置可以是终点,矩形区域的尺寸可以是预先设置的。示例性的,可以根据条件选取最优的栅格作为目标节点。例如,目标节点可以是矩形区域内与下文中的搜索起点距离最近的点。具体的,在步骤S12的执行过程中,随着下文中所描述的搜索起点的更新,每当搜索起点更新,还可以根据搜索起点在矩形区域内确定与当前的搜索起点距离最近的节点作为目标节点。相较于直接将终点作为目标节点的方案,上述方案能够根据节点搜索的推进动态、灵活地在矩形区域内确定目标节点,有利于提高路径规划的效率和成功率。

本申请实施例的方案中,迭代地进行一次或多次的节点搜索。具体的,可以迭代地执行步骤S12和步骤S13。

步骤S12,进行节点搜索,确定当前节点列表和当前节点列表内各个节点的代价。

在首次执行步骤S12时,也即,在首次节点搜索时,将起始节点作为搜索起点进行搜索,在首次之后的每次节点搜索时,可以将当前节点列表中代价最小的节点作为搜索起点。为便于描述,下文中“当前节点列表中代价最小的节点”也被称之为“当前节点”。

本申请实施例的方案中,在路径规划的过程中,可以维护一个当前节点列表,该列表也可以称之为“开放列表”或“开启列表”,每次节点搜索得到的节点可以加入至当前节点列表中,然后对当前节点列表中的各个节点执行图2示出的步骤,最终获得本次节点搜索后得到的当前节点列表以及当前节点列表中各个节点的代价。

具体的,每次节点搜索时,可以在搜索范围内进行节点搜索。示例性的,搜索范围可以是以搜索起点为圆心,预先设置的搜索距离为半径的范围。

更具体地,在搜索范围内进行节点搜索可以是指沿着搜索范围内的车道进行采样,得到多个节点。其中,采样得到的多个节点可以是搜索起点可以到达(walkalbe)的节点。

作为一种可能的实现方式,可以在搜索范围内各个方向的车道上进行采样,以得到多个节点。

作为另一种可能的实现方式,在节点搜索时还可以考虑搜索方向的限制。

具体而言,可以获取预先设置的搜索方向限制信息。其中,搜索方向限制信息可以用于描述相邻两次节点搜索所采用的搜索方向之间的关系。

在每次节点搜索时,可以根据本次节点搜索的搜索起点(下文简称为本次搜索起点)的方向状态信息和搜索方向限制信息,确定本次节点搜索的搜索方向。其中,搜索起点的方向状态信息用于表征搜索起点和搜索起点的父节点之间的位置关系。其中,本次搜索起点的父节点可以是指上一次节点搜索的搜索起点。

示例性的,相邻两次节点搜索所采用的搜索方向之间的关系可以包括以下任意一项或多项:

(1)若前一次节点搜索的搜索方向为前向,则后一次节点搜索的搜索方向为前向;也即,若本次搜索起点是自上一次搜索起点进行前向搜索得到的,则本次节点搜索只能进行前向搜索,不能进行后向搜索。采用这种限制,能够保证最终获得的目标路径不会出现先前进再后退的情况,有利于避免长距离倒车的情况,有利于提高路径的合理性。

(2)若前一次节点搜索的搜索方向为后向,则后一次节点搜索的搜索方向为前向或后向;也即,若本次搜索起点是自上一次搜索起点进行后向搜索得到的,则本次节点搜索既可以前向搜索,也可以后向搜索。

(3)若前一次节点搜索的搜索方向为后向,则后一次节点搜索的搜索方向为后向,也即,若本次搜索起点是自上一次搜索起点进行后向搜索得到的,则本次节点搜索只能进行后向搜索,不能进行前向搜索。

需要说明的是,在不同的路径规划场景中,可以根据实际需求或实际环境设置搜索方向的限制。

在具体实施中,当前节点列表可以包括各个节点的节点信息,其中,节点信息可以包括位姿信息,还可以包括方向状态信息。其中,位姿信息是车辆位于节点处的位姿,节点的方向状态信息可以表征节点和搜索起点之间的位置关系,换言之,节点的方向状态信息可以表征节点是通过何种搜索方向搜索到的。

进一步地,可以根据所确定的搜索方向进行本次的节点搜索。

进一步地,本申请实施例的方案中,对于搜索到的各个节点可以执行图2示出的方案,由此可以获得本次节点搜索中的当前节点列表和当前节点列表中各个节点的代价。具体的,每次执行节点搜索时,可以在遍历当前节点列表中的各个节点,以确定当前节点列表中节点的代价。

关于步骤S12的具体内容可以参照下文的相关描述。

进一步地,确定当前节点列表中各个节点的代价之后,可以确定当前节点列表中代价最小的节点(也即,当前节点),然后可以执行步骤S13。

步骤S13,判断代价最小的节点是否落入目标节点的预设范围内。若步骤S13的判断结果为是,则执行步骤S14,若步骤S13的判断结果为否,则执行步骤S12。具体的,若步骤S13的判断结果为否,则可以将当前节点作为新的搜索起点,并返回至步骤S12进行下一次的节点搜索。

在一种可能的实现方式中,目标节点的预设范围可以是指目标节点。换言之,步骤S13也即判断代价最小的节点(也即,当前节点)是否为目标节点。如果当前节点为目标节点,则可以执行步骤S14。如果当前节点不是目标节点,则可以将当前节点作为新的搜索起点,并返回至步骤S12进行下一次的节点搜索。

作为另一种可能的实施方式,步骤S13中,可以先判断当前节点是否为目标节点,若当前节点不是目标节点,则可以判断当前节点和目标节点之间的距离是否小于或等于预设距离。其中,预设距离可以是预先设置的,例如,预设距离可以为5米。

进一步地,若当前节点为目标节点,则可以确定当前节点落入目标节点的预设范围内。若当前节点不是目标节点,且当前节点和目标节点之间的距离大于预设距离,则可以确定当前节点未落入目标节点的预设范围内,并将当前节点作为新的搜索起点,返回至步骤S12,继续进行节点搜索。

若当前节点不是目标节点且当前节点和目标节点之间的距离小于预设距离,则可以采用启发函数曲线算法确定连接当前节点和目标节点的曲线。其中,启发函数曲线可以是reeds-shepp曲线、Dubins曲线、贝塞尔曲线等,但并不限于此。

进一步地,可以在当前节点和目标节点之间的曲线上进行采样,并在每个采样点处进行碰撞检测,若各个采样点处的碰撞检测的检测结果均为不发生碰撞,则可以确定当前节点落入目标节点的预设范围内,并继续执行步骤S14。

需要说明的是,每个采样点处的碰撞检测的具体步骤可以参照下文关于图2的相关描述,在此不再赘述。

若曲线上的一个或多个采样点处的碰撞检测的检测结果为发生碰撞,则可以确定当前节点未落入目标节点的预设范围内,并将当前节点作为新的搜索起点,并返回至步骤S12进行下一次的节点搜索。

需要说明的是,每次返回至步骤S12之前,可以将当前节点自当前节点列表中移出,并将当前节点记为当前节点列表中各个节点的父节点,以便后续的节点搜索和节点回溯。

步骤S14,生成目标路径。

在具体实施中,若在步骤S13中确定当前节点为目标节点,则步骤S14中可以自目标节点开始进行节点回溯,直至回溯到起始节点,从而得到目标路径。

若在步骤S13中确定当前节点和目标节点的曲线上各个采样点碰撞检测的检测结果均为未发生碰撞,则可以自当前节点开始进行节点回溯,直至回溯到起始节点,即可得到起始节点和当前节点之间的路径,然后根据起始节点和当前节点之间的路径以及当前节点和目标节点之间的曲线,得到目标路径。

需要说明的是,节点回溯的具体方法可以是现有的路径规划算法的方法,本实施例对此并不限制。

下面结合图2对本申请实施例中的多级碰撞策略进行具体描述。需要说明的是,本申请实施例的方案中,对于节点搜索到的每个节点均可以执行图2示出的方法。

参照图2,图2是图1中步骤S12的一种具体实施方式的流程示意图。下面结合图2对步骤S12进行具体的描述。图2示出的步骤S12可以包括如下步骤:

步骤S21,将参考膨胀系数作为当前膨胀系数;

作为一种可能的实现方式,可以预先设置有膨胀系数集合,其中,膨胀系数集合可以包括多个系数,参考膨胀系数为膨胀系数集合中的最大值。此外,膨胀系数集合中的最小值可以大于或等于下文的最低阈值。

作为另一种可能的实现方式,可以预先设置有参考膨胀系数,以及膨胀缩放参数,膨胀缩放参数可以用于减小当前膨胀系数。

步骤S22,采用当前膨胀系数对车辆尺寸进行膨胀,并基于膨胀后的车辆尺寸和节点处的车辆位姿进行碰撞检测。

其中,车辆尺寸可以包括车辆长度和车辆宽度。

作为一种可能的实现方式,可以将当前膨胀系数和车辆尺寸的乘积作为膨胀后的车辆尺寸。其中,当前膨胀系数大于1。

作为另一种可能的实现方式,可以将当前膨胀系数和车辆尺寸之和作为膨胀后的车辆尺寸。其中,当前膨胀系数大于0。

进一步地,可以基于膨胀后的车辆尺寸进行碰撞检测。

作为一种可能的实现方法,可以将根据膨胀后的车辆尺寸和节点处车辆的位姿信息,将车辆投影至栅格地图中,再判断每个栅格是否被障碍物占用,从而进行碰撞检测。

作为另一种可能的实现方法,可以采用圆模型碰撞检测算法,根据碰撞后的车辆尺寸进行碰撞检测。

具体而言,圆模型碰撞检测算法中,可以在膨胀后的车辆形体中选取多个点作为圆心并生成相应个数的圆覆盖车辆形,并在圆中生成不同大小的矩形尽量填充圆。由于栅格地图在车辆角度变化时不会随着车辆变化角度,所以在圆中生成的矩形方向与栅格地图方向保持一致。栅格地图以及圆中的矩形可以看做是含有1或者0的矩阵,根据前缀和矩阵的计算方法,计算圆内矩形对角的前缀和之差,则可以得到圆内矩阵的总和。如果总和为0则代表此矩形中没有被障碍物占据的点,说明圆内未发生碰撞碰撞,如果总和大于0,则说明圆内发生碰撞。采用圆模型碰撞算法可以大幅度提升碰撞检测速度,减少总体处理时间。

需要说明的是,碰撞检测的具体方法还可以是现有的各种适当的碰撞检测方法,本实施例对此并不限制。

若碰撞检测的检测结果为未发生碰撞,则可以继续执行步骤S23。若碰撞检测的检测结果为发生碰撞,则可以继续执行步骤S24。

步骤S23,计算节点的代价。

具体的,一方面,可以根据当前膨胀系数计算节点的碰撞代价,另一方面,计算节点的距离代价。然后根据节点的碰撞代价和距离代价,确定节点的代价。例如,可以将碰撞代价和距离代价之和作为节点的代价。

具体的,对于同一个节点而言,当前膨胀系数越大,节点的碰撞代价越小。相应的,当前碰撞系数越小,节点的碰撞代价越大。其中,距离代价的计算方式可以采用现有的距离代价的计算方法确定。

示例性的,F=G+H,其中,F表示节点的距离代价,G表示从起点移动至节点的移动代价,H表示从节点移动至终点的预计代价。例如,H可以为H1和H2之间的最大值,其中,H1为节点和终点之间的reeds-shepp曲线或Dubins曲线的长度值,H1代表了由该节点到终点的符合车辆运动学约束的路径长度,H2为通过A*算法计算的得到的节点到终点的路径长度。

关于节点的距离代价F的计算方法可以参照现有的路径规划算法中代价F的计算方法,本实施例对此并不限制。

在一个非限制性的例子中,可以采用式(1)至式(3)计算节点的代价:

final_cost=coeff×init_cost (1)

init_cost=step_d×kDistanceCost (2)

coeff=(α×kReverseingCost×kTurningCost×kChangeDirectionCost)+collision_level×kMaxCollisionLevelCost/(multi_level-β)

(3)

其中,final_cost表示节点的代价,init_cost表示初始代价,coeff表示惩罚项系数;其中,kDistanceCost表示单位距离代价,例如,kDistanceCost=1;step_d表示搜索步长,也即,本次节点搜索的距离;α和β表示设定的常数,例如,α=1,β=1;kReverseingCost表示车辆在节点处掉头时对倒车的惩罚项;kTurningCost表示车辆在节点处转弯的曲率大小的惩罚项;kChangeDirectionCost表示车辆在节点处换挡的惩罚项,例如,换挡可以是前进档换成后退档或者后退档换成前进挡;multi_level表示多级膨胀设置的总体层数;ollision_level是检测结果为不发生碰撞的膨胀系数的层级;kMaxCollisionLevelCost表示基准代价,例如,kMaxCollisionLevelCost=2,例如,multi_level=3。其中,多级膨胀设置的总体层数multi_level也可以理解为上文中膨胀系数集合中系数的数量,或者,也可以理解为节点最多执行碰撞检测的次数。此外,检测结果为不发生碰撞的膨胀系数的层级ollision_level也可以理解为对节点执行的碰撞检测的次数。

步骤S24,判断当前膨胀系数是否大于最低阈值。

其中,最低阈值可以是预先设置的。

若步骤S24的判断结果为是,则执行步骤S25,若步骤S24的判断结果为否,则执行步骤S25。也即,若当前膨胀系数已经减小至最低阈值,则不再继续减小,以保证路径的安全性。若当前膨胀系数尚未减小至最低阈值,则减小膨胀系数,并重新进行碰撞检测,以提高路径规划的成功率。

步骤S25,减小当前膨胀系数。

作为一种可能的实现方式,膨胀系数集合中的最小值大于或等于上述的最低阈值,步骤S24中可以从膨胀系数集合中选取小于且最接近于当前膨胀系数的系数,作为新的当前膨胀系数。

作为另一种可能的实现方式,可以将当前膨胀系数减去膨胀缩放参数得到的差值作为新的当前膨胀系数。其中,膨胀缩放参数大于0。

作为又一种可能的实现方式,还可以将当前膨胀系数和膨胀缩放参数的乘积作为新的当前膨胀系数。其中,膨胀缩放参数大于0且小于1。

需要说明的是,还可以采用其他各种适当的方法来减小当前膨胀系数,本实施例对此并不限制。

在步骤S25之后,可以返回至步骤S22。

步骤S26,删除节点。

需要说明的是,删除节点可以是指将该节点从当前节点列表中剔除,或者,也可以是指并不将该节点加入至当前节点列表。也即,采用最小的膨胀系数仍然无法通过该节点处的碰撞检测,则该节点被删除。

由上,通过对于节点搜索到的各个节点执行图2示出的方案,能够得到当前节点列表以及当前节点列表中各个节点的代价。

此外,如上文所述,在步骤S13中,还可以对当前节点和目标节点之间的曲线上的各个采样点执行碰撞检测。

具体的,对于每个采样点,可以执行步骤S21和步骤S22,若步骤S22中的检测结果为未发生碰撞,则可以对下一个采样点进行碰撞检测。若步骤S22中的检测结果为发生碰撞,则可以执行步骤S24,也即,可以判断当前膨胀系数是否大于最低阈值,若当前膨胀系数大于最低阈值,则可以执行步骤S25,并返回至步骤S22,也即,采用减小后的当前膨胀系数继续进行碰撞检测。若步骤S24中确定当前膨胀系数小于或等于最低阈值,则可以确定该采样点的碰撞检测的检测结果为发生碰撞。此时也可以无需再对下一个采样点进行碰撞检测。

也即,本申请实施例的方案中,对于当前节点和目标节点之间的曲线上的采样点也可以采用多级碰撞策略进行碰撞检测。

参照图3,图3是本申请实施例中另一种车辆路径规划方法的流程示意图。下面结合图3对本申请实施例提供的方案进行更具体地描述。

步骤S30,确定起始节点和目标节点。

步骤S31,确定膨胀系数集合。

在具体实施中,若在步骤S30之后执行步骤S31,则可以获取预先设置的膨胀系数集合。

若在步骤S49之后执行步骤S31,则可以减小预先设置的膨胀系数集合中的最小值,得到更新后的膨胀系数集合。

作为一种可能的实现方式,可以根据最低阈值和参考膨胀系数,确定膨胀系数集合。如下文所述,步骤S48中可以减小最低阈值,则在步骤S49之后执行步骤S31时,可以根据减小后的最低阈值,重新确定膨胀系数集合,并迭代地进行节点搜索。

步骤S32,节点搜索,更新当前节点列表。

具体的,迭代地执行步骤S32,其中,每次执行节点搜索可以根据搜索方向的限制进行节点搜索,并将搜索到的节点加入至当前节点列表中,以更新当前节点列表。更新当前节点列表之后,可以执行步骤S33。

步骤S33,判断是否超时。

具体的,可以预先设置有计时器以及设定时长,计时器可以在执行步骤S31时启动,或者,计时器可以在自起始节点开始节点搜索时启动。

若步骤S33的判断结果为否,则继续执行步骤S34,若步骤S33的判断结果为是,则执行步骤S46。也即,若节点搜索超时,则进行重搜索。重搜索可以是指重新将起始节点作为搜索起点进行节点搜索。

步骤S34,在当前节点列表中确定待探索的节点。

具体的,每次执行S34中,在当前节点列表中确定待探索的节点。然后对步骤S34中所确定的节点执行后续步骤。其中,待探索的节点可以是当前节点列表中未进行过碰撞检测以及代价计算的节点。

步骤S35,采用当前膨胀系数对车辆尺寸进行膨胀,并基于膨胀后的车辆尺寸进行碰撞检测。

若步骤S35中碰撞检测的检测结果为未发生碰撞,则可以执行步骤S36。若步骤S35中碰撞检测的检测结果为发生碰撞,则执行步骤S37。

步骤S36,计算节点的代价,并继续执行步骤S40。

步骤S37,判断当前膨胀系数是否为膨胀系数集合中的最小值。

若步骤S37的判断结果为是,则执行步骤S38,若步骤S37的判断结果为否,则执行步骤S39。

步骤S38,删除节点,并返回至步骤S40。

具体的,可以将步骤S34中确定的节点自当前节点列表中剔除。

步骤S39,减小当前膨胀系数,并返回至步骤S35。

步骤S40,判断是否为最后一个节点。

具体的,判断步骤S34中确定的待探索的节点是否为当前节点列表中最后一个节点。若步骤S40的判断结果为是,则执行步骤S41。若步骤S40的判断结果为否,则返回至步骤S34,也即,在当前节点列表中重新确定待探索的节点。换言之,若步骤S34中确定的节点并非是当前节点列表中最后一个节点,则可以继续遍历当前节点列表中的节点。

步骤S41,判断当前节点是否为目标节点。

具体的,在步骤S41中,可以先确定当前节点列表中代价最小的节点,记为当前节点,然后在判断当前节点是否为目标节点。

若步骤S41的判断结果为否,则执行步骤S42,若步骤S41的判断结果为是,则执行步骤S45。

步骤S42,判断当前节点和目标节点之间的距离是否大于预设距离。

若步骤S42的判断结果为是,则返回至步骤S32,也即,可以将当前节点作为搜索起点,进行新一次的节点搜索。若步骤S42的判断结果为否,则执行步骤S43。

步骤S43,确定当前节点和目标节点之间的曲线。

具体的,可以采用启发函数曲线算法确定连接当前节点和目标节点的曲线。

步骤S44,碰撞检测。

具体的,可以对当前节点和目标节点之间的曲线上的采样点碰撞检测。

若步骤S44中各个采样点处碰撞检测的检测结果均为未发生碰撞,则可以继续执行步骤S45。若步骤S44中任意一个采样点处碰撞检测的检测结果为发生碰撞,则可以返回至步骤S32。具体的,可以将当前节点作为搜索起点,进行新一次的节点搜索。

步骤S45,生成目标路径。

步骤S46,判断重搜索次数是否大于次数阈值。

其中,次数阈值可以是预先设置的。

若步骤S46的判断结果为是,则可以执行步骤S47。若步骤S46的判断结果为否,则可以继续执行步骤S48。

步骤S47,确定路径规划失败。

步骤S48,参数重设。

具体的,可以减小以下至少一项参数:最低阈值、膨胀系数集合中的最小值、采样步长、采样角度。其中,采样步长和采样角度可以是进行节点搜索时采用的参数。

进一步地,步骤S48之后,可以继续执行步骤S49。

步骤S49,重置搜索计时,并返回至步骤S31。

具体的,步骤S49中可以将计时器归零。

关于图3示出的车辆路径规划方法的更多内容可以参照上文关于图1和图2的相关描述,在此不再赘述。

由上,本申请实施例了一种应用于车辆路径规划算法中的多级膨胀策略,本申请实施例提供的多级膨胀策略可以适用于混合A*算法,还适用于其他基于采样的路径规划算法,本实施例对此并不进行限制。在各个搜索到的节点处应用多级碰撞策略,能够根据车辆在节点处与节点周围障碍物之间的距离增加节点的代价,使最终得到的目标路径在保证行驶距离在可接受范围内的同时,极大程度地增加了路径的安全性。

可以理解的是,在具体实施中,上述方法可以采用软件程序的方式实现,该软件程序运行于芯片或芯片模组内部集成的处理器中;或者,该方法可以采用硬件或者软硬结合的方式来实现,例如用专用的芯片或芯片模组来实现,或者,用专用的芯片或芯片模组结合软件程序来实现。

参照图4,图4是本申请实施例中一种车辆路径规划装置的结构示意图。如图4所示,图4示出的装置可以包括:

初始化模块41,用于确定路径规划的起始节点和目标节点;

路径规划模块42,用于迭代地进行一次或多次节点搜索,其中,首次节点搜索时以所述起始节点作为搜索起点,每次搜索时确定当前节点列表以及所述当前节点列表中各个节点的代价,若代价最小的节点落入所述目标节点的预设范围内,则生成目标路径,若代价最小的节点并未落入所述目标节点的预设范围内,则将代价最小的节点作为搜索起点继续进行下一次节点搜索,直至代价最小的节点落入所述目标节点的预设范围内;

其中,所述路径规划模块42包括:

初始化子模块421,用于执行步骤一,所述步骤一包括:将参考膨胀系数作为当前膨胀系数;

检测子模块422,用于执行步骤二,所述步骤二包括:采用所述当前膨胀系数对车辆尺寸进行膨胀,并基于膨胀后的车辆尺寸和节点处的车辆位姿进行碰撞检测,若所述碰撞检测的检测结果为发生碰撞,则执行步骤三,否则,计算所述节点的代价;

判断子模块423,用于执行步骤三,所述步骤三包括:若所述当前膨胀系数大于最低阈值,则减小所述当前膨胀系数,并返回至所述步骤二,若所述当前膨胀系数小于或等于所述最低阈值,则删除所述节点。

关于本申请实施例中的车辆路径规划装置的工作原理、工作方法和有益效果等更多内容,可以参照上文关于车辆路径规划方法的相关描述,在此不再赘述。

本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述的车辆路径规划方法的步骤。所述存储介质可以包括ROM、RAM、磁盘或光盘等。所述存储介质还可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器等。

本申请实施例还提供一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述的车辆路径规划方法的步骤。所述终端包括但不限于手机、计算机、平板电脑等终端设备。

本申请实施例还提供一种车辆,所述车辆可以包括上述的终端。

应理解,本申请实施例中,所述处理器可以为中央处理单元(centralprocessingunit,简称CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路(application specificintegrated circuit,简称ASIC)、现成可编程门阵列(field programmable gatearray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,简称ROM)、可编程只读存储器(programmable ROM,简称PROM)、可擦除可编程只读存储器(erasablePROM,简称EPROM)、电可擦除可编程只读存储器(electricallyEPROM,简称EEPROM)或闪存。易失性存储器可以是随机存取存储器(random accessmemory,简称RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,简称RAM)可用,例如静态随机存取存储器(static RAM,简称SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,简称SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,简称DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,简称ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,简称SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,简称DR RAM)

上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机程序可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和系统,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。

应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,表示前后关联对象是一种“或”的关系。

本申请实施例中出现的“多个”是指两个或两个以上。本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

相关技术
  • 车辆控制装置、车辆、车辆控制装置的处理方法以及存储介质
  • 车辆控制装置、车辆、车辆控制装置的处理方法以及存储介质
  • 一种物流车辆路径规划方法及装置、设备、存储介质
  • 车辆控制装置、车辆、车辆控制方法以及存储介质
  • 车辆IDS检测辅助方法、装置、终端及存储介质
  • 路径规划方法及装置、计算机可读存储介质、终端、车辆
  • 一种车辆路径规划方法、装置、终端设备及存储介质
技术分类

06120116494408