用于导航的方法、装置、计算设备和计算机可读介质与流程

文档序号:23768262发布日期:2021-01-29 21:38阅读:72来源:国知局
用于导航的方法、装置、计算设备和计算机可读介质与流程

[0001]
本发明涉及导航技术领域,具体来说,涉及用于在导航过程中返回与途经点有关的信息的方法、装置、计算设备和计算机可读介质。


背景技术:

[0002]
随着道路交通的发展,越来越多的用户需要利用导航系统来到达目的地。与此同时,随着网约车及顺风车的发展,导航系统的使用频率进一步增加。在导航系统的应用场景中,经过途经点是普遍存在的情形。正常情况下,在接近或经过途经点时,导航系统需要将相对于下一途经点或终点的剩余距离和剩余时间等相关信息返回给用户。如果导航系统没有将相关信息返回给用户,则将影响导航系统稳定性、可靠性和准确性。在拼车的场景中,如果没有及时返回相关信息,则可能造成损失。例如,导航系统在到达途经点时没能及时提醒乘客下车,或者拼车平台因没能及时得到已到达途经点的提醒而造成乘客计费错误情况。这将影响用户体验,并会导致用户投诉,进而给导航系统运营方的客服体系增加了额外的负担。
[0003]
因此,如何保证能够返回途经点的信息,成为本领域技术人员亟待解决的问题。


技术实现要素:

[0004]
有鉴于此,本发明实施例提供了一种用于路径导航的方法、装置、计算设备和计算机可读介质,以保证能够返回途经点的信息,进而提高导航系统的稳定性、可靠性和准确性,还能够进一步提高用户体验。
[0005]
根据本发明实施例的第一方面,提供了一种用于路径导航的方法,所述方法包括:主引擎沿初始规划的导航路径进行导航,所述导航路径包括预先设定的起点、终点和至少一个途经点,响应于与目标途经点相关联的辅引擎回调请求,确定所述主引擎的状态,其中所述目标途经点是所述至少一个途经点中与用户的当前位置相关联的途经点;以及当确定需要对所述主引擎进行回调时,通过所述辅引擎针对所述目标途经点进行回调以返回与剩余途经点或所述终点相关的信息,所述剩余途经点是所述至少一个途经点中除已回调的途经点之外的途经点;根据与所述剩余途经点或所述终点相关的所述信息重新规划导航路线。
[0006]
根据本发明实施例的第二方面,提供了一种用于路径导航的装置,所述装置包括:主引擎,用于:沿初始规划的导航路径进行导航,所述导航路径包括预先设定的起点、终点和至少一个途经点;辅引擎,用于:响应于与目标途经点相关联的辅引擎回调请求,确定所述主引擎的状态,其中所述目标途经点是所述至少一个途经点中与用户的当前位置相关联的途经点;以及当确定需要对所述主引擎进行回调时,针对所述目标途经点进行回调以返回与剩余途经点或所述终点相关的信息,所述剩余途经点是所述至少一个途经点中除已回调的途经点之外的途经点;和控制器,用于:根据与所述剩余途经点或所述终点相关的所述信息重新规划导航路线。
[0007]
在一些实施例中,基于前述方案,所述控制器包括数组创建模块,所述数组创建模块用于:预先创建第一数组和第二数组,所述第一数组用于存放与所述导航路径中的全部途经点有关的信息,所述第二数组用于存放与所述导航路径中的剩余途经点有关的信息,所述第一数组以及第二数组均在每个途经点被回调时更新,其中,所述第一数组和所述第二数组用于确定所述主引擎的回调状况。
[0008]
在一些实施例中,基于前述方案,所述初始规划的导航路径表征为包含多个点串的点串序列,所述多个点串分别与所述导航路径中的多个位置坐标点对应,每个点串具有点串索引。
[0009]
在一些实施例中,基于前述方案,所述控制器还包括索引获取模块,所述索引获取模块用于根据所述当前位置从所述点串序列获得所述当前位置的点串索引;并且所述控制器包括回调请求触发模块,所述回调请求触发模块用于在所述当前位置的点串索引等于或大于所述目标途经点的点串索引时,触发所述辅引擎回调请求。
[0010]
在一些实施例中,基于前述方案,所述辅引擎具体用于:当所述第一数组中的剩余途经点的数量与所述第二数组中的剩余途经点的数量不同时,确定需要对所述主引擎进行回调。
[0011]
在一些实施例中,基于前述方案,所述辅引擎还包括索引补偿模块,所述索引补偿模块用于:在所述针对所述目标途经点进行回调之前,计算所述目标途经点在所述第一数组中的位置索引和所述目标途经点在所述第二数组中的位置索引的差值,所述位置索引指示与所述目标途径点有关的信息在相应数组中被存放的位置;以及将所述第二数组中的所述剩余途经点在所述第二数组中的所述位置索引加上所述差值。
[0012]
根据本发明实施例的第三方面,提供了一种计算设备,所述计算设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述发明实施例中所述的用于路径导航的方法。
[0013]
根据本发明实施例的第四方面,提供了一种计算机可读介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上述发明实施例中所述的用于路径导航的方法。
[0014]
在本发明的实施例所提供的技术方案中,通过利用主引擎和辅引擎机制,确保在主引擎未能实现回调时,也能通过辅引擎来针对目标途经点进行回调。因此,本发明的实施例所提供的技术方案保证了能够回调途经点的信息,从而避免了导航系统因没有得到回调的途经点信息而未能更新导航信息,因而偏离之前的导航路线或给出错误导航指令。因此本发明的实施例所提供的技术方案提高了导航系统的稳定性、可靠性和准确性,还能够进一步提高用户体验。
附图说明
[0015]
为了更清楚地说明本发明实施例中的技术方案,下面将结合附图对示例性实施例进行描述。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,在附图中:图1示出了路径导航系统的用户界面;图2示出了现有导航系统中回调并显示信息的一般流程;图3示出了根据本发明实施例的示例性导航系统;
图4示出了根据本发明实施例的示例性系统架构;图5示出了根据本发明实施例的路径中点串序列的示意图;图6示出了根据本发明实施例的用于路径导航的方法的示意流程图;图7更详细地示出了根据本发明实施例的用于路径导航的方法的示意流程图;图8示出了根据本发明实施例的在偏航之前和之后的路径中的途经点的位置索引的示意图;图9示出了根据本发明实施例的偏航补偿策略的流程图;图10示出了根据本发明实施例的用于路径导航的装置的示例性结构框图;图11示出了根据本发明实施例的计算设备的示意性框图。
[0016]
应当理解,对于本领域技术人员来说,还可以根据这些附图获得其他附图。
具体实施方式
[0017]
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例和实施例中的特征可以相互组合。
[0018]
所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其他的方法、组件、装置、步骤等。在其他情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
[0019]
附图中所示的框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0020]
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行,除非明确说明。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
[0021]
在详细介绍本发明的实施例之前,首先对一些相关的概念进行解释:途经点:导航期间在路途中预设的需要经过的点,例如在规划路径时用户预设的在导航路径中需要经过的点;软件开发工具包(sdk):一种开发工具集合,用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件,例如sdk可以包括应用程序接口,并且也可以包括能与嵌入式系统通讯的硬件;导航引擎:按预先规划的导航路径执行导航,在导航期间处理发生的导航事件并且在相应导航事件发生时进行回调并给出信息的功能模块,例如导航引擎可以是提供导航路线分析、拓扑分析、引导信息等的软件和/或硬件,并且导航引擎可以位于导航sdk内;偏航:用户不按照预先规划的导航路线行进的过程,例如在导航过程中用户选择了其他路径行进的过程;回调:在导航过程中导航引擎提供相关信息的过程,例如在接近或经过途经点时导航引擎提供与途经点有关的信息的过程。
[0022]
如前所述,导航系统的使用频率进一步增加。在导航系统的应用场景中,经过途经点是普遍存在的情形。在用户在导航系统的用户界面上输入起点、终点和途经点之后,规划好的导航路线将会被显示在地图上,然后导航系统根据该导航路线向用户提供导航服务。
[0023]
图1示出了路径导航系统的用户界面。如图1所示,在用户界面中,在路径上显示出代表途经点的“经”字图标110,应当理解该图标可以任意选择,例如也可以是“途”字图标或其他图形图标。界面下方箭头120代表用户的当前位置,箭头指向方向代表当前的移动方向,箭头周围显示“东西南北”的方向以便用户辨别方向。应当理解,可以使用任何适当的图标来表示上述内容。界面下方图标130显示当前位置名称,例如“北四环西路辅路”。界面下方栏目140会显示相对于途经点或终点的剩余距离和剩余时间。在界面顶部栏目150,显示将要执行的具体导航指令。在本示例中,途经点为北四环西路辅路上预设的某个位置。
[0024]
图2示出了现有导航系统中回调并显示信息的一般流程。下面结合图1所示的用户界面描述图2所示的流程。如图2所示,在步骤201中,导航系统中的导航引擎在接近或经过当前途经点的时候,会针对当前途经点进行回调,以提供相对于剩余途经点或终点的剩余距离或剩余时间等相关信息。之后在步骤202中,导航系统将处理该相关信息并且将处理后的相关信息(例如相对于下一途经点或终点的剩余距离或剩余时间)显示在用户界面上供用户浏览。在正常情况下当用户接近或经过如图1中的途经点110时,导航引擎将针对途经点110进行回调。执行回调之后,导航系统继续沿着预设导航路线朝下一途经点或终点执行导航,并且界面下方栏目140的信息被更新,不再显示相对于当前途经点110的距离和时间,而是显示相对于下一途经点的距离和时间或相对于终点的距离和时间,如图1中示出的“剩余32.9公里28分 预计12:06到达”。
[0025]
但是,如果在离开该途经点以后,导航引擎仍然没有回调相关信息,则可能导致导航系统在用户界面上向用户显示错误的导航信息。如图1所示,如果用户在离开当前途经点110以后,导航引擎仍然没有针对当前途经点110进行回调;那么,导航系统可能仍然朝当前途经点110执行导航,从而偏离之前的导航路线,使得导航系统在界面下方栏目140处显示的信息仍然是距当前途经点110(即北四环西路辅路上预设的某个位置)的距离和时间,并且导航系统在界面顶部栏目150处可能给出错误的导航指令。
[0026]
为了解决现有的路径导航技术无法确保针对途经点回调信息的缺陷,本发明通过引入主引擎和辅引擎机制而提供了一种新颖的导航系统和导航方法,以确保在导航期间正确回调相关信息。
[0027]
图3示出了根据本发明实施例的示例性导航系统300,可以在该系统中实施本文所述的各种方法。如图3所示,导航系统300包括控制器310、主引擎320、辅引擎330、定位模块340和用户界面350。在一个实施例中,控制器310用于控制各个部件之间的数据交互,并可以对交互的数据进行处理。在一个实施例中,主引擎320用于执行沿规划的导航路径的导航、在导航期间处理发生的导航事件并且在相应导航事件发生时进行回调并给出信息。在一个实施例中,辅引擎330是辅助主引擎进行回调的功能模块,辅引擎可以检查主引擎是否进行了回调,并在主引擎没有进行回调时进行回调。在一个实施例中,主引擎320或辅引擎310回调的信息将被发送给控制器310,控制器310可以将相关信息发送给用户界面350。定位模块340接收定位信号,并且向控制器310、主引擎320和辅引擎330提供位置信息。在一个实施例中,定位模块340可以经由控制器310将位置信息提供给主引擎320和辅引擎330。在
另一实施例中,定位模块340可以直接将位置信息提供给主引擎320和辅引擎330。在一个实施例中,定位模块340可以基于:全球定位系统(gps)、北斗卫星导航系统、伽利略卫星导航系统、俄罗斯全球导航卫星系统(glonass)等。在一个实施例中,用户界面350可以用于显示信息,并且还可以用于接收用户输入。在一个实施例中,用户界面350通过控制器310接收主引擎320或辅引擎330回调的相关信息。在一个实施例中,控制器310、主引擎320和辅引擎330可以被集成在导航sdk中。
[0028]
在一个应用场景中,当用户在导航系统的用户界面350上输入起点、终点和至少一个途经点之后,导航系统300的控制器310可以进行路径规划。规划好的导航路线随导航地图被显示在用户界面350上。开始导航后,运行主引擎320与辅引擎330。借助于定位模块340的信息,控制器310、主引擎320与辅引擎330可以得知当前位置。当接近或经过途经点时,主引擎320应当针对当前途经点进行回调,把相对于导航路线中剩余途经点或终点的距离和时间等相关信息回调给控制器310。辅引擎330检查主引擎是否针对当前途经点进行了回调。如果主引擎320没有进行回调,则辅引擎330执行针对当前途经点的回调,并且将剩余途经点或终点的相关信息回调给控制器310;如果主引擎320执行了针对当前途经点的回调,并且已经将剩余途经点或终点的相关信息回调给控制器310,则辅引擎330不执行针对当前途经点的回调,也不将剩余途经点或终点的相关信息回调给控制器310。在接到回调的相关信息后,控制器310可以对相关信息进行处理并将处理后的信息发送给用户界面350。导航系统300通过用户界面350将处理后的信息显示给用户,例如显示相对于下一途经点或终点的剩余距离和时间,并且导航系统300继续沿着预设导航路线朝下一途经点或终点执行导航。
[0029]
图4示出了根据本发明实施例的示例性系统架构400,可以在该架构中实现本文所述的示例性导航系统300。如图4所示,系统架构400包括服务器410、网络420、一个或多个终端设备430。
[0030]
服务器410存储和运行可以执行本文所描述的各种方法的指令,其可以是单个服务器或服务器集群。应理解,本文所提及的服务器典型地为具有大量存储器和处理器资源的服务器计算机,但是其他实施例也是可能的。
[0031]
网络420的示例包括局域网(lan)、广域网(wan)、个域网(pan)、和/或诸如因特网之类的通信网络的组合。服务器410以及一个或多个终端设备430的每一个可以包括能够通过网络420进行通信的至少一个通信接口(未示出)。这样的通信接口可以是以下项中的一个或多个:任何类型的网络接口(例如,网络接口卡(nic))、有线或无线(诸如ieee 802.11无线lan(wlan))无线接口、全球微波接入互操作(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、bluetooth

接口、近场通信(nfc)接口等。通信接口的另外的示例在本文其他地方描述。
[0032]
终端设备430可以包括任何类型的移动计算设备,例如移动计算机或移动计算设备(例如,microsoft
®ꢀ
surface
®
设备、个人数字助理(pda)、膝上型计算机、笔记本计算机、诸如apple ipad

的平板计算机、上网本等)、移动电话(例如,蜂窝电话、诸如microsoft windows
®
电话的智能手机、apple iphone、实现了google
®ꢀ
android

操作系统的电话、palm
®
设备,blackberry
®
设备等)、可穿戴式计算设备(例如智能手表、头戴式设备,包括智能眼镜,如google
®ꢀ
glass

,等)或其他类型的移动设备。在一些实施例中,
终端设备430也可以包括固定式计算设备。此外,在系统包括多个终端设备430的情况下,该多个终端设备430可以是相同或不同类型的计算设备。
[0033]
终端设备430可以包括显示屏431以及可以经由显示屏431与终端用户交互的终端应用432。终端设备430可以例如经由网络420与服务器410进行交互,例如向其发送数据或从其接收数据。终端应用432可以为本地应用程序、网页(web)应用程序或者作为轻量化应用的小程序(liteapp)。在终端应用432为需要安装的本地应用程序的情况下,可以将终端应用432安装在终端设备430中。在终端应用432为web应用程序的情况下,可以通过浏览器访问终端应用432。在终端应用432为小程序的情况下,可以通过搜索终端应用432的相关信息(如终端应用432的名称等)、扫描终端应用432的图形码(如条形码、二维码等)等方式来在终端设备430上直接打开终端应用432,而无需安装终端应用432。
[0034]
如图3所示的导航系统300中的定位模块340和用户界面350可以位于终端设备430中,其中导航系统300中的用户界面350可以是终端设备430的显示屏431。控制器310、主引擎320和辅引擎330(例如,可以是集成的导航sdk)可以位于终端设备430中或服务器410中。在控制器310、主引擎320和辅引擎330位于服务器410的场景中,终端设备430可以通过网络420将定位模块340返回的位置信息发送给位于服务器410中的控制器310、主引擎320和辅引擎330。在经过主引擎320或辅引擎330的回调之后,控制器310得到回调的相关信息并对其进行处理,服务器410可以通过网络420将控制器310处理后的相关信息发送给终端设备430,以在用户界面350上显示给用户。
[0035]
在上述的应用场景中,本发明实施例所提供的用于路径导航的方法和装置可以在终端设备430中或者在服务器410中实施。
[0036]
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0037]
下面,将结合图5描述本发明的一些示范性实施例。图5示出了根据本发明实施例的导航路径中点串序列的示意图,其中点串序列中的每一个点串对应于导航路径上的一个位置坐标点。当用户设定起点、终点和至少一个途经点之后,导航系统执行路径规划,并且当完成路径规划之后得到初始规划的导航路径,该初始规划的导航路径包括用户设定的起点、终点和途经点(途经点可以被视为特殊的位置坐标点)并且还包括在该导航路径上的一些其他位置坐标点,如图1所示的北四环西路辅路上的一些位置坐标点。导航系统可以基于初始规划的导航路径生成如图5所示的点串序列图。
[0038]
如图5所示,从起点到终点有10个点串,每个点串与初始规划的导航路径上的一个位置坐标点相对应,并且这些点串的点串索引从起点0开始一直到终点9。由于用户设定位置坐标点3和7为途经点,因此这两个途经点的点串索引即为3和7。在导航期间,因为用户沿导航路径不断行进,所以用户的当前位置不断变化,导航系统的控制器根据用户当前位置从如图5所示的点串序列得到当前位置的点串索引。例如当用户在起点时,当前位置的点串索引为0。当用户行进在与点串阵列中点串0和点串1相对应的位置坐标点之间时,当前位置的点串索引仍然为0;当用户离开与点串1相对应的位置时,当前位置的点串索引被更新为1。以此类推,用户每离开与点串序列中的一个点串相对应的位置时,当前位置的点串索引被更新;当用户到达终点时,当前位置的点串索引被更新为9。
[0039]
应当理解,图5中的点串序列仅仅是示意性的,导航系统可以根据所需的导航精确
度与系统复杂性要求设定相邻两个点串之间的位置间隔/距离,例如,在途经点附近可能要求更高的导航精确度,所以对应于途经点位置的点串和与其相邻的点串之间的位置间隔/距离可以被设置成比较小,比如大约100m的位置间隔/距离。此外,点串序列中各相邻点串间的位置间隔可以相同也可以不相同。另外,点串序列可以包含更多或更少的点串,并且点串序列中也可以存在更多或更少的途经点。
[0040]
图6示出了根据本发明实施例的用于路径导航的方法600的示意流程图。在开始导航之前,用户根据自己的需要,预先设定起点、终点和至少一个途经点。之后,在步骤610中,导航系统的控制器初始规划导航路径,导航路径包括预先设定的起点、终点和至少一个途经点。在步骤620中,导航系统通过主引擎沿初始规划的导航路径进行导航。在步骤630中,响应于与目标途经点相关联的辅引擎回调请求,确定主引擎的状态。在一个实施例中,目标途经点是所述至少一个途经点中与用户的当前位置相关联的途经点,例如导航系统的控制器将相对于当前位置而言的需要进行回调的第一个途经点设定为目标途经点。在一个实施例中,可以基于用户的当前位置和目标途经点的位置来触发辅引擎回调请求,例如当用户离开目标途经点时,触发辅引擎回调请求。在另一个实施例中,辅引擎回调请求也可以根据需要在其他位置、以任何适当的方式被触发。当确定需要对主引擎进行回调时,则在步骤640中,通过辅引擎针对目标途经点进行回调以返回与剩余途经点或终点相关的信息。在一个实施例中,剩余途经点是所述至少一个途经点中除已回调的途经点之外的途经点。当不存在剩余途经点时,回调的信息为与终点相关的信息。然后在步骤650中,控制器根据与剩余途经点或终点相关的信息重新规划导航路线。当确定不需要对主引擎进行回调时,则在步骤660中,辅引擎不针对目标途经点进行回调。
[0041]
图7更详细地示出了上述根据本发明实施例的用于路径导航的方法600的示意流程图700。应当理解,虽然对图7中的步骤进行了编号,但这并不意味着图7中的步骤必须按编号顺序执行。
[0042]
现结合图5所示的点串序列,对图7的示范性实施例进行详细说明。首先,用户根据自己的需要,预先设定起点、终点和至少一个途经点。在设定完成后,导航系统的控制器执行初始路径规划,并且基于初始规划的导航路径生成如图5所示的点串序列。控制器在路径规划后可以获得与点串序列相关联的信息,例如预设途经点的点串索引。
[0043]
在步骤710中,当导航系统的控制器执行初始路径规划时,控制器创建第一数组和第二数组。第一数组用于存放与初始规划的导航路径中的全部途经点(比如图5中的途经点3和7)有关的信息,并且第一数组不会因为用户偏航后导航系统重新规划导航路径而更新。因此,第一数组可以用作偏航情形时的参考基准。第二数组用于存放与导航路径中的剩余途经点有关的信息,其中剩余途经点是除已回调的途经点之外的途经点。在偏航情形下,导航系统重新规划路径时,第二数组中的信息会被更新,以得到与剩余途经点关联的最新信息。第一数组中的信息仅能够被辅引擎访问并删除,而主引擎和辅引擎均可以访问并删除第二数组中的信息。在初始路径规划后,第一数组和第二数组均包括如图5所示的途经点3和途经点7的信息。
[0044]
开始导航后,用户离开与点串0对应的位置,导航系统的控制器将相对于当前位置而言的需要进行回调的第一个途经点(即途经点3)设定为目标途经点。随着导航继续进行,导航系统的控制器可以基于如图5所示的点串阵列获得当前位置的点串索引,并且可以在
步骤720中基于当前位置的点串索引和目标途经点的点串索引来触发主引擎回调请求或辅引擎回调请求。在一个实施例中,在正常情况下,控制器比较当前位置的点串索引与目标途经点的点串索引,在二者相差为1时(例如,在用户行进到点串2和3对应的位置之间时,当前位置的点串索引为2),控制器可以触发与目标途经点3相关联的主引擎回调请求。响应于主引擎回调请求,在步骤730中主引擎删除第二数组中与目标途经点3相关联的信息,并在步骤740中针对目标途经点3进行回调,将与剩余途经点7相关联的信息回调给控制器,以更新第二数组中与剩余途径点7相关联的信息。然后,控制器可以根据与剩余途径点7相关联的信息重新规划导航路线。
[0045]
但是,在实际情况下,导航系统可能没有触发与目标途经点3相关联的主引擎回调请求,或者触发了与目标途经点3相关联的主引擎回调请求但主引擎没能及时进行针对该目标途经点的回调。例如,在当前位置的点串索引为2时,主引擎应当进行针对目标途经点3的回调。然而,由于定位系统信号弱(例如,用户位于山洞中)、定位系统不准确(例如,用户位于高架桥上导致定位不准,而没能触发主引擎回调请求)或系统延迟(例如,已经触发主引擎回调请求,但是因系统延迟等原因导致主引擎没有及时回调)等原因,主引擎没有删除第二数组中与目标途经点3有关的信息,并且主引擎也没有进行针对目标途经点3的回调。
[0046]
随着用户继续行进,在当前位置的点串索引等于或大于目标途经点的点串索引时,触发与目标途经点相关联的辅引擎回调请求。例如当用户离开目标途经点3时,当前位置的点串索引等于目标途经点3的点串索引,或者当用户离开点串4对应的位置时,当前位置的点串索引为4,大于目标途经点3的点串索引。导航系统的控制器比较当前位置的点串索引与目标途经点的点串索引,并且在当前位置的点串索引等于或大于目标途经点的点串索引时,在步骤720中触发与目标途经点3相关联的辅引擎回调请求。应当理解,因为沿导航路径行进的用户将离开目标途经点3,所以无论主引擎是否针对目标途经点3进行回调,都会触发与目标途经点3相关联的辅引擎回调请求。
[0047]
在一个实施例中,响应于与目标途经点3相关联的辅引擎回调请求,确定主引擎的状态,如图6中步骤630所示。具体来说,图6中的步骤确定主引擎的状态(步骤630)可以包括以下步骤:在步骤750中,通过辅引擎将第一数组中与目标途经点3有关的信息删除,第一数组中剩余途经点的数量为1(仅剩途经点7);在步骤760中,辅引擎比较第一数组中剩余途经点的数量与第二数组中剩余途经点的数量,以确定第一数组中剩余途经点的数量与第二数组中剩余途经点的数量是否相等。
[0048]
在主引擎没有针对目标途经点3进行回调的情况下,需要对主引擎进行回调。在该情况下,第一数组中剩余途经点的数量为1(仅剩途经点7),而由于主引擎没有针对目标途经点3进行回调,所以主引擎没有删除第二数组中与目标途经点3有关的信息,第二数组中剩余途经点的数量为2(剩下途经点3和途经点7),因此第一数组中剩余途经点的数量与第二数组中剩余途经点的数量不同。然后,在步骤770中辅引擎在第二数组中删除与目标途经点3有关的信息。在步骤780中,响应于辅引擎成功删除第二数组中与目标途经点3有关的信息,则如在图6中步骤640所描述的那样通过辅引擎来针对目标途经点3进行回调以返回与剩余途经点7相关的信息,并更新第二数组中与目标途经点7相关的信息。然后,控制器可以根据与剩余途径点7相关联的信息重新规划导航路线,如图6中步骤650所描述的那样。
[0049]
在主引擎已经针对目标途经点3进行回调的情况下,不需要对主引擎进行回调。在
该情况下,第一数组中剩余途经点的数量仍为1(仅剩途经点7),但是由于主引擎已经针对目标途经点3进行了回调,所以第二数组中与目标途经点3有关的信息已经被删除,所以第二数组中剩余途经点的数量也为1,因此第一数组中剩余途经点的数量与第二数组中剩余途经点的数量相同。因此,在步骤790中,辅引擎不针对目标途经点3进行回调,如在图6中步骤660所描述的那样。这是为了避免在主引擎已经进行了针对目标途经点的回调的情况下,辅引擎再次进行针对该目标途经点的回调,以节约计算和显示资源,并且可以避免导航系统针对同一途经点执行两次回调,从而造成显示给用户的数据不准确。
[0050]
还存在这样的情形,在用户行进到点串2和3对应的位置之间时,控制器触发了与目标途经点3相关联的主引擎回调请求,但是由于系统延迟等原因,主引擎可能在辅引擎已经进行了针对目标途经点3的回调之后才开始针对目标途经点3的回调。为了避免在辅引擎已经进行了针对目标途经点3的回调的情况下,主引擎再次进行针对目标途经点3的回调,方法700还可以包括以下步骤,响应于与目标途经点3相关联的延迟的主引擎回调请求,主引擎还可以确定辅引擎的回调状况。在一个实施例中,主引擎确定辅引擎的回调状况具体包括判断第二数组中是否包含与目标途经点有关的信息。如果第二数组中不包含与目标途经点3有关的信息,则确定辅引擎已经针对目标途经点3进行了回调并且已经返回与剩余途经点7相关的信息,主引擎不再针对目标途经点3进行回调。
[0051]
在一个实施例中,无论主引擎是否针对目标途经点3进行回调,在辅引擎响应于辅引擎回调请求删除第一数组中与目标途经点3有关的信息之后,辅引擎通知控制器将目标途经点3更新为下一途经点7。针对途经点7的回调的方法步骤与针对途经点3的回调的方法步骤类似,在此不再赘述。区别在于,由于途经点7是最后一个途经点,因此回调的信息是与终点9相关的信息。
[0052]
应当理解,上述实施例仅仅是说明性而非限制性的,本领域技术人员能够针对上述实施例进行调整,这仍落入本发明实施例的保护范围内。例如,可以根据需要调整主引擎和辅引擎的触发条件,可以根据需要调整步骤顺序等等。
[0053]
应当理解,在导航过程中,可能会出现偏航情况。在偏航以后,第二数组中的信息随着重新路径规划而更新,因而途经点在第二数组中的位置索引可能存在错误。位置索引指示与途经点相关的信息在相应数组中被存放的位置,例如与第一个途径点相关的信息被存放在第二数组中的位置0(第二数组中的第一个位置),则第一个途径点在第二数组中的位置索引为0。如前所述,控制器需要通过主引擎或辅引擎的实时回调来将途经点信息发送给导航系统的用户界面。举例来说,从起点到终点之间有3个途经点(0、1、2),那么在初始路径规划后,当用户在起点时,主引擎或辅引擎需要回调给控制器相对于这3个途经点的剩余时间和剩余距离等等的信息。在导航期间,每经过一个途经点,回调给控制器的信息就会删去关于此途经点的信息。但是如果在行驶过程中发生了偏航,此时就会重新规划路径,由于重新规划了路径,途经点在第二数组中的位置索引就会重新编号。图8示出了根据本发明实施例的在偏航之前和之后的路径中的途经点的位置索引的示意图。如图8所示,重新规划路径之前,主引擎和辅引擎认为从起点到终点存在3个途经点,与这3个途径点相关的信息分别依次被存放在第二数组中的前三个位置(即,位置0、位置1和位置2),则这3个途经点在第二数组中的位置索引即为0、1、2。当经过位置索引为0的途经点后偏航时,导航系统就会重新规划路径。此时主引擎和辅引擎就会认为从起点到终点只有2个途经点,与这2个途经点
相关的信息分别被存放在更新后的第二数组中的前两个位置(即,位置0和位置1),这2个途经点在第二数组中的位置索引变为0和1,分别对应的是初始路径规划时得到的第二数组中的位置索引1和2。此时如果通过控制器将第二数组中带有错误位置索引的信息返回给用户界面,那么用户界面就会得到不正确的途经点信息,导致显示给用户的信息错误。为了保证回调正确的途经点信息,可以使用偏航补偿策略。
[0054]
图9示出了根据本发明实施例的偏航补偿策略的流程图900。具体来说,需要借助于第一数组将途经点在第二数组中的位置索引进行补偿。如上所述,第一数组用于存放经过初始路径规划返回的与导航路径中的全部途经点有关的信息。第一数组不会因为用户偏航后导航系统重新规划导航路径而更新。因此,第一数组可以用作偏航情形时的参考基准。例如,参见图8示出的在偏航之前和之后的路径中的途经点的位置索引,假设用户在经过原始途经点0时偏航,在导航系统重新规划路径之后,第二数组中存放两个途经点,并且途经点在第二数组中的位置索引被重新编号为0和1(对应重新规划路径之前的位置索引1和2)。因为第一数组中的途经点信息是初始路径规划时创建的,途径点在第一数组中的位置索引不会因为偏航而重新编号,所以第一数组中剩余两个途经点在第一数组中的位置索引仍然是正确的,即1和2。因此,无论主引擎还是辅引擎在针对目标途经点进行回调之前,都需要在步骤910中计算目标途经点在第一数组中的位置索引和目标途经点在第二数组中的位置索引之间的差值。然后在步骤920中,将第二数组中的剩余途经点在第二数组中的位置索引加上所述差值。在本示例中,目标途经点在第二数组中的索引为0,而途经点的正确的位置索引应该是在目标途经点在第一数组中的位置索引1,二者的差值为1。因此在针对目标途经点进行回调之前,需要为第二数组中的剩余途经点的位置索引加上1,以确保回调的信息的正确性。
[0055]
应当理解,虽然本发明实施例涉及途经点的回调,但是也可以使用本发明实施例的技术方案针对导航路径中的起点或终点进行回调。例如,在顺风车和网约车场景下,起点和终点的回调也是至关重要的。平台和用户均需要准确的信息来判断是用户否已经离开起点而开始计费以及用户是否已经到达终点以停止计费。
[0056]
图10示出了根据本发明实施例的用于路径导航的装置1000的示例性结构框图。应当理解,下文中将提及的“第一数组”和“第二数组”等术语的定义与前文相同,因而在此不再赘述。如图10所示,在一个实施例中,装置1000包括主引擎1010,用于沿初始规划的导航路径进行导航,导航路径包括预先设定的起点、终点和至少一个途经点;辅引擎1020,用于:响应于与目标途经点相关联的辅引擎回调请求,确定主引擎的状态,以及当确定需要对主引擎进行回调时,针对目标途经点进行回调以返回与剩余途经点或所述终点相关的信息;和控制器1030,用于根据与所述剩余途经点或所述终点相关信息重新规划导航路线。
[0057]
在一个实施例中,控制器1030包括数组创建模块1031,数组创建模块1031用于:预先创建第一数组和第二数组。
[0058]
在一个实施例中,控制器1030还包括索引获取模块1032,索引获取模块1032用于根据当前位置从点串序列获得当前位置的点串索引。并且控制器1030还包括回调请求触发模块1033,回调请求触发模块1033用于在当前位置的点串索引等于或大于目标途经点的点串索引时,触发辅引擎回调请求。
[0059]
在一个实施例中,辅引擎1020还包括辅引擎删除模块1021,辅引擎删除模块1021
用于:在第一数组中删除与目标途经点有关的信息,以更新第一数组中的剩余途经点。
[0060]
在一个实施例中,辅引擎1020还包括比较模块1022,比较模块1022用于比较第一数组中的剩余途经点的数量与第二数组中的剩余途经点的数量。
[0061]
在一个实施例中,辅引擎删除模块1021还用于:当第一数组中的剩余途经点的数量与第二数组中的剩余途经点的数量不同时,确定需要对主引擎进行回调(例如,确定主引擎没有针对目标途经点进行回调),并且删除第二数组中的与目标途经点有关的信息。当第一数组中的剩余途经点的数量与第二数组中的剩余途经点的数量相同时,确定不需要对主引擎进行回调(例如,确定主引擎已经针对目标途经点进行回调并且已经返回与剩余途经点或终点相关的信息)。
[0062]
在一个实施例中,辅引擎1020还包括辅引擎回调模块1023,辅引擎回调模块1023用于:响应于第二数组中的与目标途经点有关的信息被辅引擎删除模块1021删除,针对目标途经点进行回调以返回与剩余途经点或终点相关的信息。
[0063]
在一个实施例中,主引擎1010还用于:响应于与导航路径中的目标途经点相关联的主引擎回调请求,确定辅引擎的状态,以及当确定辅引擎已经针对目标途经点进行回调时,主引擎不针对目标途经点进行回调并且不返回与剩余途经点或终点相关的信息。
[0064]
在一个实施例中,主引擎1010还包括:判断模块1011,判断模块1011用于:判断第二数组中是否包含与目标途经点有关的信息。主引擎删除模块1012,主引擎删除模块1012用于:如果第二数组中包含与目标途经点有关的信息,删除与目标途经点有关的信息,如果第二数组中不包含与目标途经点有关的信息,则确定辅引擎已经针对目标途经点进行回调并且已经返回与剩余途经点或终点相关的信息。
[0065]
在一个实施例中,主引擎1010还包括:主引擎回调模块1013,主引擎回调模块1013用于:响应于第二数组中的与目标途经点有关的信息被主引擎删除模块1012删除,针对目标途经点进行回调以返回与剩余途经点或终点相关的信息。
[0066]
在一个实施例中,主引擎1010和辅引擎1020还包括索引补偿模块,索引补偿模块用于:在针对目标途经点进行回调之前,计算目标途经点在第一数组中的位置索引和目标途经点在第二数组中的位置索引的差值;以及将第二数组中的剩余途经点在第二数组中的位置索引加上所述差值。
[0067]
在一个实施例中,辅引擎1020还用于:响应于与起点和终点中的一个相关联的辅引擎回调请求,通过辅引擎1020确定主引擎1010是否已经针对起点和终点中的所述一个进行回调;以及当确定主引擎1010没有针对起点和终点中的所述一个进行回调时,通过辅引擎1020来针对起点和终点中的所述一个进行回调。
[0068]
下面结合图5示出的点串序列,描述在主引擎没有针对途经点3进行回调,而辅引擎针对目标途经点3进行回调的场景中装置1000的各个模块之间的配合关系。由于在图7的描述中已经详细解释了具体细节,在此不再赘述具体细节,而是主要示出各个步骤的执行主体,以描述各个模块之间的配合关系。用户在预设起点、终点和至少一个途经点之后,导航路径被初始规划。在导航路径被初始规划时,控制器1030中的数组创建单元1031创建第一数组和第二数组。在导航期间,控制器1030的索引获取模块832根据当前位置从点串序列获得当前位置的点串索引。假设在当前位置的点串索引为2时,主引擎1010没有针对目标途经点3进行回调,在当前位置的点串索引为3或4时,控制器1030中的回调请求触发模块1033
触发与目标途经点3相关联的辅引擎回调请求。辅引擎1020响应于与目标途经点3相关联的辅引擎回调请求,确定主引擎1010的状态。具体而言,辅引擎删除模块1021删除第一数组中与目标途经点3相关联的信息。然后辅引擎1020中的比较模块1022比较第一数组中的剩余途经点的数量与第二数组中的剩余途经点的数量。此时因为第一数组中的剩余途经点的数量与第二数组中的剩余途经点的数量不同,辅引擎删除模块1021确定主引擎1010没有针对目标途经点进行回调,需要对主引擎1010进行回调,并且删除第二数组中的与目标途经点有关的信息。然后辅引擎回调模块1023响应于第二数组中的与目标途经点有关的信息被辅引擎删除模块1021删除,针对目标途经点进行回调以返回与剩余途经点7相关的信息。控制器1030根据与剩余途经点7相关的信息重新规划导航路线。假设主引擎1010在辅引擎已经进行了针对目标途经点3的回调之后才开始针对目标途经点3的回调。响应于延迟的主引擎回调请求,主引擎1010确定辅引擎1020的回调状况。具体来说,主引擎1010中的判断模块1011判断第二数组中是否包含与目标途经点3有关的信息。因为辅引擎1020已经针对目标途经点3进行了回调,所以第二数组中不包含与目标途经点3相关的信息。因此,主引擎删除模块1012确定辅引擎1020已经针对目标途经点3进行回调并且已经返回与剩余途经点7相关的信息。因此,主引擎回调模块1013将不会针对目标途经点3进行回调。因为主引擎成功进行回调而辅引擎不进行回调的实施例使用了相同的模块,区别仅仅在于判断结果的不同,所以在此不再赘述。
[0069]
上面关于图10描述的各个模块可以在硬件中或在结合软件和/或固件的硬件中实现。例如,这些模块可以被实现为计算机程序代码/指令,该计算机程序代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。可替换地,这些模块可以被实现为硬件逻辑/电路。例如,在实施例中,主引擎1010、辅引擎1020、控制器1030中的一个或多个可以一起在片上系统(soc)中实现。soc可以包括集成电路芯片(其包括处理器(例如,中央处理单元(cpu)、微控制器、微处理器、数字信号处理器(dsp)等)、存储器、一个或多个通信接口、和/或其他电路中的一个或多个部件),并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。本文描述的技术的特征是与载体无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
[0070]
虽然上面参考特定模块讨论了特定功能,但是应当注意,本文讨论的各个模块的功能可以分为多个模块,和/或多个模块的至少一些功能可以组合成单个模块。另外,本文讨论的特定模块执行动作包括该特定模块本身执行动作,或者替换地该特定模块调用或以其他方式访问执行该动作的另一个组件或模块(或结合该特定模块一起执行动作)。因此,执行动作的特定模块可以包括执行动作的特定模块本身和/或执行动作的该特定模块调用或以其他方式访问的另一模块。
[0071]
应当理解,尽管本发明提及了道路交通的应用场景,但是本发明实施例的应用场景不限于此。例如,本发明实施例可以用于水路导航领域和飞行器导航领域。此外,本发明实施例也不限于对交通工具的导航,也可以应用在步行导航中。应当理解,本发明实施例不限于用在客户端应用中,也可以用于内嵌在交通工具中的导航系统中或独立的导航系统中。
[0072]
图11示出了根据本发明实施例的计算设备1100的示意性框图。计算设备1100是用于执行根据本发明实施例的用于路径导航的方法的设备。
[0073]
计算设备1100可以是各种不同类型的设备,例如服务器计算机、与客户端(例如,客户端设备)相关联的设备、片上系统、和/或任何其他合适的计算设备或计算系统。
[0074]
计算设备1100可以包括能够诸如通过系统总线1114或其他适当的方式连接彼此通信的至少一个处理器1102、存储器1104、(一个或多个)通信接口1106、显示设备1108、其他输入/输出(i/o)设备1110以及一个或多个大容量存储装置1112。
[0075]
处理器1102可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器1102可以被实施成一个或多个微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。除了其他能力之外,处理器1102可以被配置成获取并且执行存储在存储器1104、大容量存储装置1112或者其他计算机可读介质中的计算机可读指令,诸如操作系统1116的程序代码、应用程序1118的程序代码、其他程序1120的程序代码等,以实现本发明实施例提供的用于路径导航的方法。
[0076]
存储器1104和大容量存储设备1112是用于存储指令的计算机存储介质的示例,所述指令由处理器1102执行来实施前面所描述的各种功能。举例来说,存储器1104一般可以包括易失性存储器和非易失性存储器二者(例如ram、rom等等)。此外,大容量存储设备1112一般可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如cd、dvd)、存储阵列、网络附属存储、存储区域网等等。存储器1104和大容量存储设备1112在本文中都可以被统称为存储器或计算机存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非瞬时性介质,所述计算机程序代码可以由处理器1102作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
[0077]
多个程序模块可以存储在大容量存储设备1112上。这些程序包括操作系统1116、一个或多个应用程序1118、其他程序1120和程序数据1122,并且它们可以被加载到存储器1104以供执行。这样的应用程序或程序模块的示例可以包括例如用于实现以下部件/功能的计算机程序逻辑(例如,计算机程序代码或指令):主引擎1010、辅引擎1020、控制器1030和/或本文描述的另外的模块。在一些实施例中,这些程序模块可以分布在不同的物理位置。
[0078]
虽然在图11中被图示成存储在计算设备1100的存储器1104中,但是模块1116、1118、1120和1122或者其部分可以使用可由计算设备900访问的任何形式的计算机可读介质来实施。如本文所使用的,“计算机可读介质”至少包括两种类型的计算机可读介质,也就是计算机存储介质和通信介质。
[0079]
计算机存储介质包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,所述信息诸如是计算机可读指令、数据结构、程序模块或者其他数据。计算机存储介质包括而不限于ram、rom、eeprom、闪存或其他存储器技术,cd-rom、数字通用盘(dvd)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算设备访问的任何其他非传送介质。
[0080]
与此相对,通信介质可以在诸如载波或其他传送机制之类的已调数据信号中具体实现计算机可读指令、数据结构、程序模块或其他数据。本文所定义的计算机存储介质不包括通信介质。
[0081]
计算设备1100还可以包括一个或更多通信接口1106,以用于诸如通过网络、直接连接等等与其他设备交换数据。通信接口1106可以促进在多种网络和协议类型内的通信,其中包括有线网络(例如lan、电缆等等)和无线网络(例如wlan、蜂窝、卫星等等)、因特网等等。通信接口1106还可以提供与诸如存储阵列、网络附属存储、存储区域网等等中的外部存储装置(未示出)的通信。
[0082]
在一些示例中,可以包括诸如监视器之类的显示设备1108,以用于显示信息和图像。其他i/o设备1110可以是接收来自用户的各种输入并且向用户提供各种输出的设备,并且可以包括触摸输入设备、手势输入设备、摄影机、键盘、遥控器、鼠标、打印机、音频输入/输出设备等等。
[0083]
将理解的是,尽管第一、第二、第三等术语在本文中可以用来描述各种设备、元件、或部件,但是这些设备、元件、或部件不应当由这些术语限制。这些术语仅用来将一个设备、元件、或部件与另一个设备、元件、或部件相区分。
[0084]
应理解,说明书通篇中提到的“一个实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
[0085]
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者装置所固有的要素。
[0086]
尽管已经结合一些实施例描述了本发明实施例,但是其不旨在被限于在本文中所阐述的特定形式。相反,本发明实施例的范围仅由所附权利要求来限制。附加地,尽管单独的特征可以被包括在不同的权利要求中,但是这些可以可能地被有利地组合,并且包括在不同权利要求中不暗示特征的组合不是可行的和/或有利的。特征在权利要求中的次序不暗示特征必须以其工作的任何特定次序。此外,在权利要求中,词“包括”不排除其他元件,并且不定冠词“一”或“一个”不排除多个。权利要求中的附图标记仅作为明确的示例被提供,不应该被解释为以任何方式限制权利要求的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1