双向路段的路由寻径方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机
技术领域
,特别是涉及一种双向路段的路由寻径方法、装置、计算机设备和存储介质。背景技术
随着计算机技术的发展,自动驾驶技术的发展和成熟,自动驾驶在不同业务场景的应用落地,使得自动驾驶汽车广受大众关注。由于各种特殊的道路状况层出不穷,自动驾驶技术中一个重要模块就是路由寻径,其主要任务就是在给定一系列位置点的情况下,通过算法计算找出一条最佳的路径,保证无人车可以通过这条路径到达所有给定的坐标点并且效率最高。
然而,目前的路段路由寻径方式中,通常假定所有的道路都是一个方向,因此在求最短路径和产生导航线的时候都是按照道路的方向往前方搜索下一节道路,当在道路状况复杂涉及双向路段的情况下,如何有效解决双向路段场景下的路径规划问题成为亟需解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够有效解决双向路段场景下的路径规划问题的双向路段的路由寻径方法、装置、计算机设备和存储介质。
一种双向路段的路由寻径方法,所述方法包括:
获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向;
根据所述当前节点位置和所述目标终点位置,在已建立的有向图中搜索所述当前节点位置相连的候选节点;所述已建立的有向图中包括双向路段,所述双向路段和它的下一个路段之间用两条有向边来连接;所述候选节点包括与当前节点形成双向路段的候选节点;
根据所述当前行驶方向从所述候选节点中确定目标搜索节点,并根据所述当前节点和所述目标搜索节点生成对应的导航路线;所述导航路线用于指示所述目标车辆按照导航路线的路径方向行驶。
在其中一个实施例中,所述获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向之前,所述方法还包括:
将地图上的道路进行分割,得到分割后的路段;
在所述地图中将所述路段转化为有向连接的节点,得到对应的有向图;其中,每个所述路段之间按照道路的方向建立有向边。
在其中一个实施例中,所述路段包括双向路段;所述双向路段是指允许来自相反方向的车流的路段;所述方法还包括:
获取所述地图中每个双向路段对应的两个方向;
根据所述两个方向,对所述双向路段建立对应的两条有向边,得到对应的有向图;其中,每个双向路段和它的下一个路段之间用两条有向边来连接;每个方向代表一个可行的路径方向,每个方向建立一条有向边,每条有向边代表一个方向的可行驶路段。
在其中一个实施例中,所述在已建立的有向图中搜索所述当前节点位置相连的候选节点包括:
获取当前对应的时刻;
根据所述时刻,在已建立的有向图中搜索与所述当前节点位置相连的候选节点,并将所述当前行驶方向与所述候选节点对应的方向进行比较;所述候选节点对应的方向为在所述时刻所述当前节点位置与所述候选节点之间形成的允许行驶的方向;
当所述当前行驶方向与所述候选节点对应的方向一致时,将所述候选节点作为目标搜索节点;
当所述当前行驶方向与所述候选节点对应的方向不一致时,则按照预设策略重新搜索与所述当前节点位置相连的候选节点。
在其中一个实施例中,所述根据所述当前行驶方向从所述候选节点中确定目标搜索节点包括:
根据预设算法,从所述候选节点中确定目标搜索节点。
在其中一个实施例中,所述在已建立的有向图中搜索所述当前节点位置相连的候选节点包括:
获取所述目标车辆的行进方向变量,所述行进方向变量用于记录目标车辆当前的行驶方向;
根据所述行进方向变量,在已建立的有向图中搜索同方向的与所述当前节点位置相连的候选节点。
一种双向路段的路由寻径装置,所述装置包括:
获取模块,用于获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向;
搜索模块,用于根据所述当前节点位置和所述目标终点位置,在已建立的有向图中搜索所述当前节点位置相连的候选节点;所述已建立的有向图中包括双向路段,所述双向路段和它的下一个路段之间用两条有向边来连接;所述候选节点包括与当前节点形成双向路段的候选节点;
生成模块,用于根据所述当前行驶方向从所述候选节点中确定目标搜索节点,并根据所述当前节点和所述目标搜索节点生成对应的导航路线;所述导航路线用于指示所述目标车辆按照导航路线的路径方向行驶。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向;
根据所述当前节点位置和所述目标终点位置,在已建立的有向图中搜索所述当前节点位置相连的候选节点;所述已建立的有向图中包括双向路段,所述双向路段和它的下一个路段之间用两条有向边来连接;所述候选节点包括与当前节点形成双向路段的候选节点;
根据所述当前行驶方向从所述候选节点中确定目标搜索节点,并根据所述当前节点和所述目标搜索节点生成对应的导航路线;所述导航路线用于指示所述目标车辆按照导航路线的路径方向行驶。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向;
根据所述当前节点位置和所述目标终点位置,在已建立的有向图中搜索所述当前节点位置相连的候选节点;所述已建立的有向图中包括双向路段,所述双向路段和它的下一个路段之间用两条有向边来连接;所述候选节点包括与当前节点形成双向路段的候选节点;
根据所述当前行驶方向从所述候选节点中确定目标搜索节点,并根据所述当前节点和所述目标搜索节点生成对应的导航路线;所述导航路线用于指示所述目标车辆按照导航路线的路径方向行驶。
上述双向路段的路由寻径方法、装置、计算机设备和存储介质,通过获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向,并根据当前节点位置和目标终点位置,在已建立的有向图中搜索当前节点位置相连的候选节点。已建立的有向图中包括双向路段,双向路段和它的下一个路段之间用两条有向边来连接,候选节点包括与当前节点形成双向路段的候选节点。根据当前行驶方向从候选节点中确定目标搜索节点,并根据当前节点和目标搜索节点生成对应的导航路线,导航路线用于指示目标车辆按照导航路线的路径方向行驶。由此使得,在路径规划过程中,通过对当前车辆行进方向的考量,能够根据实时路况动态的确定下一个节点的方向和位置,即使在涉及双向路段的情况下,即一条道路可能有两个方向的情况下,也能够快速有效的对双向路段进行路由寻径,生成对应的导航线,有效解决了双向路段场景下的路径规划问题。
附图说明
图1为一个实施例中双向路段的路由寻径方法的流程示意图;
图2为一个实施例中某车辆行驶时的导航界面示意图;
图3为一个实施例中在已建立的有向图中搜索当前节点位置相连的候选节点步骤的流程示意图;
图4为一个实施例中双向路段的路由寻径装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种双向路段的路由寻径方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
步骤102,获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向。
随着无人驾驶技术的发展和成熟,越来越多的厂商开始研发自己公司的自动驾驶汽车,使得自动驾驶汽车广受大众关注。自动驾驶技术中一个重要模块就是路由寻径,其主要任务就是在给定一系列位置点的情况下,通过算法计算找出一条最佳的路径,保证无人车可以通过这条路径到达所有给定的坐标点并且效率最高。在实际工程中,往往会使用特别定制的高清地图来真实模拟现实生活中的道路路况,再通过路由寻径算法对地图中各种数据进行建模优化从而做出最佳决策。因此,道路状况越复杂,路由寻径算法的难度就会越高。在实际业务中发现,在一些物流相关的场景中,各种特殊的道路状况层出不穷,有时候会出现一种复杂的路况就是双向路段,即一条路段可以允许来自相反方向的车流,这个场景比较复杂,目前的主流路由寻径一般对其不支持。本申请中以无人驾驶车辆的终端为例进行说明。可以理解的是,本申请中的路由寻径方法包括但不限于对双向路段进行路由寻径,还可以为包含其他路段的路由寻径。
具体的,终端可以是安装在无人驾驶车辆中的车载终端,在一个可能的实现方式中,终端可以直接获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向。在另一种可能的实现方式中,终端可以通过网络与服务器进行通信,从服务器获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向。其中,节点位置是指在已建立的有向图中的各个节点的位置坐标,当前节点位置是指当前时刻目标车辆在已建立的有向图中所在节点的位置坐标;目标终点位置是指设定的目标终点的位置坐标。当前行驶方向是指目标车辆当前时刻对应的行驶方向。例如,如图2所示,为某车辆行驶时的导航界面示意图。用户可以预先在设置界面中输入目标车辆A对应的目标终点位置(即目的地所在位置)为Z,则无人驾驶车辆的终端可以获取目标车辆A所在的当前节点位置C、目标终点位置Z和当前行驶方向y。
步骤104,根据当前节点位置和目标终点位置,在已建立的有向图中搜索当前节点位置相连的候选节点,已建立的有向图中包括双向路段,双向路段和它的下一个路段之间用两条有向边来连接,候选节点包括与当前节点形成双向路段的候选节点。
终端获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向之后,终端可以根据当前节点位置和目标终点位置,在已建立的有向图中搜索当前节点位置相连的至少一个下一节点(即候选节点),已建立的有向图中包括双向路段,双向路段和它的下一个路段之间用两条有向边来连接,至少一个下一节点包括与当前节点形成双向路段的下一节点。其中,候选节点是指与当前节点位置相连的节点,候选节点可以为至少一个节点,例如,终端可以根据当前节点位置和目标终点位置,在已建立的有向图中搜索到与当前节点位置相连的一个节点;终端根据当前节点位置和目标终点位置,可以在已建立的有向图中搜索到与当前节点位置相连的多个节点。
已建立的有向图是指根据假定的每个路段的方向,对所有路段建立对应有向边所形成的有向图,已建立的有向图用于使得终端可以在整个有向图中寻径。已建立的有向图中可以包括多种路段,例如单向路段和双向路段。双向路段是指假设每个路段都可能有两个方向,因此在建立有向图的时候会根据实际情况,对双向路段建立对应的两条有向边。单向路段是指假定每个路段只有一个方向,每个单向路段和它的下一个路段之间用一条有向边来连接。
具体的,终端获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向之后,终端可以根据当前节点位置和目标终点位置,在已建立的有向图中搜索与当前节点位置相连的至少一个候选节点,即终端可以根据当前节点位置和目标终点位置(目的地位置),在预先建立好的有向图中搜索对应的下一个节点位置,以使得当前节点与搜索到的下一个节点位置之间的路径为最优路径。可以理解的是,终端根据当前节点位置和目标终点位置(目的地位置)可以在有向图中搜索到多个下一节点,即车辆从当前节点行驶到下一节点的路径可能存在多条,则终端可以按照预设算法或预设规则,从多个节点中进一步筛选出一个最佳的下一节点,使得筛选出的最佳的下一节点位置与当前节点位置所形成的路径为最优路径。
步骤106,根据当前行驶方向从候选节点中确定目标搜索节点,并根据当前节点和目标搜索节点生成对应的导航路线,导航路线用于指示目标车辆按照导航路线的路径方向行驶。
终端根据当前节点位置和目标终点位置,在已建立的有向图中搜索当前节点位置相连的候选节点之后,终端可以根据当前行驶方向从候选节点中确定目标搜索节点,并根据当前节点和目标搜索节点生成对应的导航路线,导航路线用于指示目标车辆按照导航路线的路径方向行驶。其中,目标搜索节点是指从搜索到的至少一个候选节点中选取的最优路径对应的节点位置。导航路线是指在路径规划过程中,实时生成的导航线。
例如,如图2所示,终端根据当前节点位置C和目标终点位置Z,在已建立的有向图中搜索到与当前节点位置C相连的下一节点包括节点B、节点D以及节点E,则终端可以根据当前行驶方向y从节点B、节点D以及节点E中确定目标搜索节点为节点D,并根据当前节点C和目标搜索节点D生成对应的导航路线CD,导航路线CD用于指示目标车辆按照导航路线的路径方向(即CD方向)行驶。
传统的路段寻径方式中,通常假定所有的道路都是一个方向,因此在求最短路径(或最优路径)和产生导航线的时候都是按照道路的方向往前方搜索下一节道路,由于目前绝大部分使用的寻径算法默认道路都是单向的,若涉及双向路段的路况,即在道路状况复杂涉及双向路段的情况下会给搜索和延伸都会带来不小的挑战,因此如何有效解决双向路段场景下的路径规划问题成为亟需解决的问题。
而本实施例中,通过获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向,并根据当前节点位置和目标终点位置,在已建立的有向图中搜索当前节点位置相连的候选节点。已建立的有向图中包括双向路段,双向路段和它的下一个路段之间用两条有向边来连接,候选节点包括与当前节点形成双向路段的候选节点。根据当前行驶方向从候选节点中确定目标搜索节点,并根据当前节点和目标搜索节点生成对应的导航路线,导航路线用于指示目标车辆按照导航路线的路径方向行驶。由此使得,在路径规划过程中,通过对当前车辆行进方向的考量,能够根据实时路况动态的确定下一个节点的方向和位置,即使在涉及双向路段的情况下,即一条道路可能有两个方向的情况下,也能够快速有效的对双向路段进行路由寻径,生成对应的导航线,有效解决了双向路段场景下的路径规划问题。
在其中一个实施例中,获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向之前,该方法还包括将地图上的道路进行分割的步骤,具体包括:
将地图上的道路进行分割,得到分割后的路段。
在地图中将路段转化为有向连接的节点,得到对应的有向图;其中,每个路段之间按照道路的方向建立有向边。
终端获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向之前,可以预先将地图上的道路进行分割,得到分割后的路段,并在地图中将路段转化为有向连接的节点,得到对应的有向图;其中,每个路段之间按照道路的方向建立有向边。即终端可以先将地图上的道路切割成一段段的路段,然后将这些路段转化成一个有向连接图上的节点,每个路段之间会按照道路的方向来建立有向边,而寻求两点的最佳路径的问题就转化为了在有向图上面求两个节点间的最短距离。本实施中的有向图中包括双向路段,若是双向路段,则按照双向路段的两个方向建立对应的两条有向边,得到对应的有向图。相较于传统的路由寻径方式中,假定每个路段只有一个方向,然后对所有路段建立一个有向图,每个路段和它的下一个路段之间用一条有向边来连接,最后在整个图上面求径,即传统的寻径方式中默认每个路段只有一个方向,且建立有向图时每个路段之间也只能用一条有向边来连接,因此传统方式中只能解决一个边上面只有一个方向的情况(即每条道路只能允许一个方向),无法处理基于双向路段的业务场景下的路径规划问题。
而本实施例中,通过将地图上的道路进行分割,得到分割后的路段,并在地图中将路段转化为有向连接的节点,得到对应的有向图;其中,路段包括双向路段,若是双向路段,则按照双向路段的两个方向建立对应的两条有向边,得到对应的有向图,由此使得,可以有效的处理有双向通道的业务场景,避免了基于单向通道的路由算法在复杂场景下路径规划失败或错误所带来的不安全因素和潜在的经济损失,提升了整个自动驾驶路径规划的准确性和稳定性,同时也有效解决了双向路段场景下的路径规划问题。
在其中一个实施例中,路段包括双向路段,双向路段是指允许来自相反方向的车流,该方法还包括:
获取地图中每个双向路段对应的两个方向。
根据两个方向,对双向路段建立对应的两条有向边,得到对应的有向图;其中,每个双向路段和它的下一个路段之间用两条有向边来连接,每个方向代表一个可行的路径方向,每个方向建立一条有向边,每条有向边代表一个方向的可行驶路段。
终端获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向之前,可以预先将地图上的道路进行分割,得到分割后的路段,并在地图中将路段转化为有向连接的节点,得到对应的有向图;其中,每个路段之间按照道路的方向建立有向边。本实施例中的路段包括双向路段,双向路段是指允许来自相反方向的车流。具体的,终端可以获取地图中每个双向路段对应的两个方向,并根据两个方向,对双向路段建立对应的两条有向边,得到对应的有向图;其中,每个双向路段和它的下一个路段之间用两条有向边来连接,每个方向代表一个可行的路径方向,每个方向建立一条有向边,每条有向边代表一个方向的可行驶路段。相较于传统的路径规划方式中,导航线的生成是根据当前车辆所在的坐标位置去搜索所在的路段,然后按照道路的方向往前延伸,由于道路都是默认单向的,一旦允许双向路段的话给搜索和延伸都会带来不小的挑战。而本实施例中,假设每个路段都有可能有两个方向,因此在建立有向图的时候会根据实际情况,对双向路段建立对应的两条有向边。在寻径过程中,会根据上一步的方向来确定下一步的扩展方向,以保证整体的一条路径方向是一致的,即在路径规划过程中,实时生成的导航线也需要考虑到双向路段的情况,因此在对无人车定位的时候,以及从当前位置往前后延伸生成导航线路的时候,需要根据当前车辆的朝向(即行驶方向)传递一个方向,以保证整条导航线上的路段都具有一致的方向,可以有效解决一个边上面有两个方向的情况(即有的路段可以允许两个方向)。
在一个可选的实施例中,如图3所示,在已建立的有向图中搜索当前节点位置相连的候选节点的步骤,包括:
步骤302,获取当前对应的时刻。
步骤304,根据该时刻,在已建立的有向图中搜索与当前节点位置相连的候选节点,并将当前行驶方向与候选节点对应的方向进行比较,候选节点对应的方向为在该时刻当前节点位置与候选节点之间形成的允许行驶的方向。
步骤306,当当前行驶方向与候选节点对应的方向一致时,将候选节点作为目标搜索节点。
步骤308,当当前行驶方向与候选节点对应的方向不一致时,则按照预设策略重新搜索与当前节点位置相连的候选节点。
终端获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向之后,终端可以根据当前节点位置和目标终点位置,在已建立的有向图中搜索当前节点位置相连的至少一个候选节点。具体的,终端可以获取当前对应的时刻T,终端根据该时刻T,在已建立的有向图中搜索与当前节点位置相连的下一节点,并将当前行驶方向与下一节点对应的方向进行比较,下一节点对应的方向为在该时刻T时当前节点位置与下一节点之间形成的允许行驶的方向。当当前行驶方向与该下一节点对应的方向一致时,终端将该下一节点作为目标搜索节点。当当前行驶方向与该下一节点对应的方向不一致时,则终端可以按照预设策略重新搜索与当前节点位置相连的下一节点。其中,预设策略可以是用户自定义设置的搜索策略。
例如,以实际路况中的潮汐车道为例进行说明。潮汐车道是可变车道,城市内部根据早晚交通流量不同情况,对有条件的道路设置一个或多个车辆行驶方向规定随不同时段变化的车道。终端获取目标车辆A所在的当前节点位置B、目标终点位置Z和当前行驶方向y之后,终端可以根据当前节点位置B和目标终点位置Z,在已建立的有向图中搜索当前节点位置B相连的至少一个下一节点。具体的,终端可以获取当前对应的时刻T0,终端根据该时刻T0,在已建立的有向图中搜索与当前节点位置B相连的下一节点包括节点C1和节点C2,即节点C1和节点C2是与当前节点位置B相连的两个方向的候选节点,且节点C1和节点C2为相反的两个反向。进一步的,终端将当前行驶方向y与搜索到的下一节点(即节点C1和节点C2)对应的方向进行比较,当当前行驶方向y与下一节点C1对应的方向一致时,终端将该下一节点C1作为目标搜索节点;当当前行驶方向与该下一节点C2对应的方向不一致时,则终端可以按照预设策略重新搜索与当前节点位置B相连的候选节点。即下一节点C1对应的方向为在该时刻T0时当前节点位置B与节点C1之间形成的允许行驶的方向。由此使得,能够有效解决一个边上面有两个方向的情况(有的路段可以允许两个方向),即适用于一条道路可能有两个方向的情况,有效提升了整个自动驾驶的路径规划的准确性和稳定性。
在一个可选的实施例中,根据当前行驶方向从候选节点中确定目标搜索节点的步骤,包括:
根据预设算法,从候选节点中确定目标搜索节点。
终端根据当前节点位置和目标终点位置,在已建立的有向图中搜索当前节点位置相连的候选节点之后,终端可以根据当前行驶方向从至少一个候选节点中确定目标搜索节点。本实施例中以预设算法为改良优化后的A-Star算法为例进行说明,A-Star即A*搜寻算法俗称A星算法。A*算法是比较流行的启发式搜索算法之一,被广泛应用于路径优化领域,它的独特之处是检查最短路径中每个可能的节点时引入了全局信息,对当前节点距终点的距离做出估计,并作为评价该节点处于最短路线上的可能性的量度,应用于图最优路径搜索或查找。
具体的,终端可以根据改良后的A-Star算法,从候选节点中确定目标搜索节点,并生成实时的导航线。原A-Star算法是假定每个路段只有一个方向,然后对所有路段建立一个有向图,每个路段和它的下一个路段之间用一条有向边来连接,最后在整个图上面求径。本实施例中,经过改良后的A-Star算法,会假设每个路段都有可能有两个方向,因此在建立图的时候会根据实际情况,对双向路段建立两条有向边,并且在寻径过程中,会根据上一步的方向来确定下一步的扩展方向,以保证整体的一条路径方向是一致的。因为每个方向代表一个可行的路径方向,所以建模的时候需要每个方向建立一个有向连接,两个方向则需要两个有向连接,也就是两个有向边。每个有向边代表一个有方向的路,即车辆可以行驶的一段路径,即经过改良后的A-Star算法可应用于双向路段的寻径。此外,终端根据改良后的A-Star算法,从候选节点中确定目标搜索节点之后,即在路径规划过程中,实时生成的导航线也需要考虑到双向路段的情况,即需要考虑一个道路有两个方向,因此就需要额外考虑车辆的行驶方向,并通过车辆当前行驶的方向来确定下一步要去往的方向,即根据双向路段的实际路况(或实际通行方向),动态的生成对应的导航线。
可以理解的是,本申请中的预设算法包括但不限于A-Star算法,还可以为其他算法,只要能够实现对路段进行路由寻径,对其计算方式不做限定。
相较于传统的寻径方式,限定了一个道路只有一个方向,因此只需要考虑道路的方向,不考虑车辆的行驶方向,因为默认这两个方向是一致的,即默认道路方向与行驶方向一致,因此,传统的技术只能解决一个边上面只有一个方向的情况(每条道路只能允许一个方向)。而本实施例中,终端可以根据改良后的A-Star算法,从候选节点中确定目标搜索节点,即确定与当前车辆行驶方向一致的节点为目标搜索节点,可以有效解决一个边上面有两个方向的情况,同时在寻径过程中,加入了一个当前车辆的行进方向变量,记录了车辆当前的行驶方向,因此在往后面继续寻找下一节点路径时会优先考虑同方向的路径,相对于传统方式中的路由算法更具有准确性、稳定性,能够解决复杂的场景下的双向通道的路由寻径问题。
在一个可选的实施例中,在已建立的有向图中搜索当前节点位置相连的候选节点的步骤,包括:
获取目标车辆的行进方向变量,行进方向变量用于记录目标车辆当前的行驶方向。
根据行进方向变量,在已建立的有向图中搜索同方向的与当前节点位置相连的候选节点。
终端获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向之后,终端可以根据当前节点位置和目标终点位置,在已建立的有向图中搜索当前节点位置相连的至少一个下一节点(即候选节点)。具体的,终端可以获取目标车辆的行进方向变量,行进方向变量用于记录目标车辆当前的行驶方向。进一步的,终端可以根据行进方向变量,在已建立的有向图中搜索同方向的与当前节点位置相连的下一节点。在寻径过程中,加入了一个当前车辆的行进方向变量,记录了车辆当前的行驶方向,因此在往后面继续寻找的时候会优先考虑同方向的路径。即实时生成的导航线需要考虑到双向路段的情况,在终端对无人车定位的时候,以及从目标车辆的当前节点位置往前后延伸生成导航线路的时候,需要根据目标车辆当前时刻的朝向(行驶方向)传递一个方向,以保证整条导航线上的路段都具有一致的方向,即增加了对当前车辆的行进方向的考量可应用于双向路段的导航线生成算法中。由此使得,通过增加了对当前车辆的行进方向的考量,在解决特定的情况比如一条道路可能有两个方向的时候,可以有效提升整个自动驾驶的路径规划的准确性和稳定性。
在一个可选的实施例中,以基于双向通道的A-Star改良方案和基于双向通道的导航线生成方案为例进行说明。在场景中出现双向通道的情况下,终端可以获取目标车辆A所在的当前节点位置B、目标终点位置Z和当前行驶方向y之后,终端可以根据当前节点位置B和目标终点位置Z,在已建立的有向图中搜索当前节点位置B相连的至少一个下一节点。具体的,终端可以获取当前对应的时刻T0,终端根据该时刻T0,在已建立的有向图中搜索与当前节点位置B相连的下一节点包括节点C1和节点C2,即节点C1和节点C2是与当前节点位置B相连的两个方向的下一节点,且节点C1和节点C2为相反的两个反向。进一步的,终端将当前行驶方向y与搜索到的下一节点(即节点C1和节点C2)对应的方向进行比较,当当前行驶方向y与下一节点C1对应的方向一致时,终端将该下一节点C1作为目标搜索节点;当当前行驶方向与该下一节点C2对应的方向不一致时,则终端按照预设策略重新搜索与当前节点位置B相连的候选节点。即下一节点C1对应的方向为在该时刻T0时当前节点位置B与节点C1之间形成的允许行驶的方向。
进一步的,终端可以根据改良后的A-Star算法,从候选节点中确定目标搜索节点,并生成实时的导航线。即终端根据改良后的A-Star算法,根据当前行驶方向y从候选节点中确定目标搜索节点为C1,并根据当前节点B和目标搜索节点C1生成实时的导航路线BC1,导航路线BC1用于指示该目标车辆A按照导航路线的路径方向(即BC1方向)行驶。
理论上本实施例可以替代的方案是人工去做两条重叠的路段实现双向路段,但这个替代方案不但非常耗费人工,而且还是会有潜在的隐患,比如无人车错误判断所在的路段,将可能导致非常严重的安全问题。即需要人工对高清地图上的道路手动去标注,在一个狭小的空间,需要在两个方向上去标注出两个不同方向的路段,相互重叠,非常容易出错,并且耗费时间。由于自动驾驶车辆的寻径算法是高度依赖高请地图的,因此一旦某个标注出错,没有被识别,就会产生很大的安全隐患。
而本实施例中,在路径规划过程中,通过对当前车辆行进方向的考量,能够根据实时路况动态的确定下一个节点的方向和位置,即使在涉及双向路段的情况下,即一条道路可能有两个方向的情况下,也能够快速有效的对双向路段进行路由寻径,生成对应的导航线,有效解决了双向路段场景下的路径规划问题,避免了基于单向通道的路由算法在复杂场景下路径规划失败或错误所带来的不安全因素和潜在的经济损失,同时也提升了整个自动驾驶路径规划的准确性和稳定性。
应该理解的是,虽然图1-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种双向路段的路由寻径装置,包括:获取模块402、搜索模块404和生成模块406,其中:
获取模块402,用于获取目标车辆所在的当前节点位置、目标终点位置和当前行驶方向。
搜索模块404,用于根据当前节点位置和目标终点位置,在已建立的有向图中搜索当前节点位置相连的候选节点,已建立的有向图中包括双向路段,双向路段和它的下一个路段之间用两条有向边来连接,候选节点包括与当前节点形成双向路段的候选节点。
生成模块406,用于根据当前行驶方向从候选节点中确定目标搜索节点,并根据当前节点和目标搜索节点生成对应的导航路线,导航路线用于指示目标车辆按照导航路线的路径方向行驶。
在其中一个实施例中,该装置还包括:分割模块和转化模块。
分割模块用于将地图上的道路进行分割,得到分割后的路段。转化模块用于在地图中将路段转化为有向连接的节点,得到对应的有向图;其中,每个路段之间按照道路的方向建立有向边。
在其中一个实施例中,该装置还包括:建立模块。
获取模块还用于获取地图中每个双向路段对应的两个方向。建立模块用于根据两个方向,对双向路段建立对应的两条有向边,得到对应的有向图;其中,每个双向路段和它的下一个路段之间用两条有向边来连接,每个方向代表一个可行的路径方向,每个方向建立一条有向边,每条有向边代表一个方向的可行驶路段。
在其中一个实施例中,该装置还包括:比较模块。
获取模块还用于获取当前对应的时刻。比较模块用于根据该时刻,在已建立的有向图中搜索与当前节点位置相连的候选节点,并将当前行驶方向与候选节点对应的方向进行比较;候选节点对应的方向为在该时刻当前节点位置与候选节点之间形成的允许行驶的方向;当当前行驶方向与候选节点对应的方向一致时,将候选节点作为目标搜索节点;当当前行驶方向与下一节点对应的方向不一致时,则按照预设策略重新搜索与当前节点位置相连的候选节点。
在其中一个实施例中,该装置还包括:确定模块。
确定模块用于根据预设算法,从候选节点中确定目标搜索节点。
在其中一个实施例中,获取模块还用于获取目标车辆的行进方向变量,行进方向变量用于记录目标车辆当前的行驶方向。搜索模块还用于根据行进方向变量,在已建立的有向图中搜索同方向的与当前节点位置相连的候选节点。
关于双向路段的路由寻径装置的具体限定可以参见上文中对于双向路段的路由寻径方法的限定,在此不再赘述。上述双向路段的路由寻径装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种双向路段的路由寻径方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各个方法实施例的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:路线处理方法及装置