发明内容
本说明书提供一种轨迹规划方法、装置、存储介质及电子设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种轨迹规划方法,包括:
确定在目标时刻时,目标设备的预参考轨迹点,以及各指定障碍物的预测轨迹点;
针对每个指定障碍物,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界,其中,所述约束界将目标设备和指定障碍物所在的空间划分为不相交的两部分,该指定障碍物被对应的约束界划分至与目标设备不同的部分;
确定出由至少部分指定障碍物对应的约束界所围成的包含目标设备的空间,并将该空间作为目标时刻对应的约束集;
在该目标时刻的约束集的约束下,调整目标设备的预参考轨迹,并将调整后的预参考轨迹作为参考轨迹。
可选地,确定各指定障碍物的预测轨迹点之前,所述方法还包括:
确定各障碍物的预测轨迹点;
根据目标设备的预参考轨迹点,从障碍物中选择出满足第一距离条件的障碍物作为指定障碍物,其中,满足第一距离条件的障碍物为预测轨迹点与目标设备的预参考轨迹点之间的距离小于预设的第一距离的障碍物。
可选地,针对每个指定障碍物,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界之前,所述方法还包括:
根据目标设备的预参考轨迹点,确定出以目标设备的预参考轨迹点为中心,由各初始约束界所围成的包含目标设备的空间,作为初始约束集;
确定出由至少部分指定障碍物对应的约束界所围成的包含目标设备的空间,并将该空间作为目标时刻对应的约束集,具体包括:
确定出由初始约束界以及各指定障碍物对应的约束界中的至少部分约束界所围成的包含目标设备的空间,并将该空间作为目标时刻对应的约束集。
可选地,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界,具体包括:
根据该指定障碍物的速度以及目标设备的速度,确定出该指定障碍物与目标设备之间的相对速度;
判断在该指定障碍物与目标设备之间的相对速度的作用下,该指定障碍物与目标设备之间的距离是否具有缩小的趋势;
若是,确定以垂直该指定障碍物速度方向的向量为法向量的超平面,作为该指定障碍物对应的候选超平面;若否,确定以垂直目标设备速度方向的向量为法向量的超平面,作为该指定障碍物对应的候选超平面;
从该指定障碍物对应的各候选超平面中选择该指定障碍物对应的约束界。
可选地,从该指定障碍物对应的各候选超平面中选择该指定障碍物对应的约束界,具体包括:
针对该指定障碍物对应的每个候选超平面,根据目标设备的预参考轨迹点,确定出该候选超平面与目标设备的预参考轨迹点之间的距离;
从该指定障碍物对应的各候选超平面中选择与所述目标设备的预参考轨迹点之间的距离最远的候选超平面,作为该指定障碍物对应的约束界。
可选地,确定在目标时刻各指定障碍物的预测轨迹点之后,所述方法还包括:
确定禁忌表,并将禁忌表初始化为空集;
针对每个指定障碍物,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界,具体包括:
针对每个指定障碍物,将该指定障碍物作为目标障碍物,判断该目标障碍物是否在禁忌表中;
若是,重新选择作为目标障碍物的指定障碍物,直到禁忌表中包括所有指定障碍物;
若否,根据目标障碍物的速度,以及目标设备的速度,为目标障碍物确定出对应的约束界,并将各与目标设备不位于同一空间的指定障碍物加入禁忌表,并重新选择作为目标障碍物的指定障碍物。
可选地,针对每个指定障碍物,将该指定障碍物作为目标障碍物,具体包括:
根据目标设备的参考轨迹点,以及各指定障碍物的预测轨迹点,确定出各指定障碍物与目标设备之间的距离;
以各指定障碍物与目标设备之间的距离由小到大对各指定障碍物排序,并按照顺序依次从指定障碍物中选取目标障碍物。
可选地,确定在目标时刻时,目标设备的参考轨迹点,以及各指定障碍物的预测轨迹点,具体包括:
针对每一未来时刻,将该未来时刻作为目标时刻,并确定在目标时刻时,目标设备的参考轨迹点,以及各指定障碍物的预测轨迹点;
在该目标时刻的约束集的约束下,调整目标设备的预参考轨迹,具体包括:
针对每个未来时刻,在该未来时刻对应的约束集的约束下,调整目标设备在该未来时刻的预参考轨迹点,并将调整后的预参考轨迹点作为目标设备在该未来时刻的参考轨迹点;
根据目标设备在各未来时刻的参考轨迹点,确定目标设备的参考轨迹。
本说明书提供了一种轨迹规划装置,包括:
轨迹确定模块,用于确定在目标时刻时,目标设备的预参考轨迹点,以及各指定障碍物的预测轨迹点;
约束界确定模块,用于针对每个指定障碍物,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界,其中,所述约束界将目标设备和指定障碍物所在的空间划分为不相交的两部分,该指定障碍物被对应的约束界划分至与目标设备不同的部分;
约束集确定模块,用于确定出由至少部分指定障碍物对应的约束界所围成的包含目标设备的空间,并将该空间作为目标时刻对应的约束集;
轨迹调整模块,用于在该目标时刻的约束集的约束下,调整目标设备的预参考轨迹,并将调整后的预参考轨迹作为参考轨迹。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述轨迹规划方法。
本说明书提供了一种无人设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述轨迹规划方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的轨迹规划方法中,根据无人设备和指定障碍物的速度确定出包含目标设备的空间的约束集,使得在优化预参考轨迹时能够在约束集的约束下,以约束集中的空间为优化的求解空间进行求解,从而保证其求解空间为凸空间,能够求解出较为理想的参考轨迹点。
具体实施方式
在现有技术中,当面临需要通过优化来解决的问题时,通常会采用对目标函数进行逼近的方式求解出需要优化的变量。举个例子,在对相机进行标定时,相机的参数为需要优化的变量,而其目标函数则是真实空间之中的三维坐标通过参数映射至成像平面上所计算得到的二维坐标,与其实际上该三维坐标对应的二维坐标之间的差异。可以看出,在朝向着目标函数最优的方向(在对相机标定时,目标函数的最优方向即为计算得到的二维坐标与实际测量得到的二维坐标之间距离最小)调整变量的这个过程,即为优化过程,而提前为需要优化的变量确定出的定义域,即为变量的约束范围。
当基于某一初值对变量进行优化时,若目标函数和约束函数都是凸函数,则可以称该优化问题为凸优化问题。相比于非凸优化问题,由于凸优化问题不易陷入局部最优,更能得到理想的优化结果。
在本说明书实施例所面临的问题中,已经预先为目标设备确定出了预参考轨迹,此时需要对预参考轨迹进行调整,此时,预参考轨迹即为本说明书中所要优化的变量,而目标设备可以运动的空间,即为本说明书中的约束范围。
更进一步的,当目标设备的约束范围为凸集时,本说明书中对于预参考轨迹的优化过程即为凸优化过程,本领域技术人员可知,凸集所包含的任意两点之间的直线段均在凸集内部。
基于对上述问题的认识,本说明书提供一种轨迹规划方法,根据无人设备和指定障碍物的速度确定出包含无人设备的空间的约束集,使得在优化预参考轨迹时,以作为凸集的约束集为优化的约束范围进行求解。
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中一种轨迹规划方法的流程示意图,具体包括以下步骤:
S100:确定在目标时刻时,目标设备的预参考轨迹点,以及各指定障碍物的预测轨迹点。
本说明书中所述目标设备为无人设备,而通过本说明书所提供的轨迹规划方法所规划出的参考轨迹用于对目标设备进行控制,以指导目标设备以参考轨迹运动。在本说明书实施例中,本说明书所提供的轨迹规划方法可由目标设备自身执行,例如无人驾驶设备或无人机,也可以由能够与目标设备进行信息传输,并对目标设备进行控制的服务器或其他电子设备执行,本说明书对此不不作限制。为方便描述,本说明书以目标设备为执行主体,示例性地对本说明书提供的轨迹规划方法进行说明。
本说明书实施例中目标设备可以包括在平面上运动的无人设备,以及在三维空间内运动的无人设备,其中,无人设备在平面上运动并不意味着无人设备的运动空间是二维的,而是指无人设备以自身固有的运动方式运动时,其仅能完成以某一平面为基础的运动,例如汽车只能在道路所在的平面上运动。
简洁起见,本说明书以下部分以目标设备为仅在道路所在的平面上运动的无人驾驶设备(以下简称无人车)为例,对本说明书提供的轨迹规划方法进行说明,并在三维空间内运动的无人设备(以下以无人机为例)需要以其他方式执行相对应的步骤时进行解释。
需要说明的是,当本说明书中所述的目标设备为无人车时,所述无人车可包括自动驾驶的车辆以及具有辅助驾驶功能的车辆。无人车可以是应用于配送领域的配送车。而当本说明书中所述的目标设备为无人机时,无人机可以为配送领域的配送无人机,尤其可以应用于外卖配送。
可以将无人车感知范围内的各障碍物作为本说明书中所述的指定障碍物,但通常来说,在对无人车进行轨迹规划时,通常所考虑的障碍物为无人车所处的位置周围的障碍物,例如距离无人车20米的障碍物,本说明书一实施例中,可以将根据目标设备的预参考轨迹点,从无人车所感知到的各障碍物中选择出满足第一距离条件的障碍物,其中,满足第一距离条件的障碍物为预测轨迹点与目标设备的参考轨迹点之间的距离小于预设的第一距离的障碍物作为本说明书中所述的指定障碍物,当然,可以将任何距离视作上述第一距离。而由于无人车的行驶倾向已知,也可以仅考虑无人车行驶倾向方向的障碍物(例如无人车前方的障碍物),还可以将无人车所处环境中的障碍物视作本说明书实施例中的指定障碍物,例如与无人车在同一道路上的各障碍物。可以看出,指定障碍物的选择具有多种现有方法,本说明书对此不作限定。
而类似的,当目标设备为无人机时,所考虑的也可以是无人机所处位置周围的障碍物,但由于无人机通常以固定的高度航行,因此当目标设备为无人机时,还可以并不考虑所处高度与无人机所在高度大于预设的高度距离阈值的障碍物。
可以通过安装在无人车上的传感器采集无人车周围各指定障碍物的行驶数据,其中,所述行驶数据可以包括指定障碍物自身的固有属性(诸如形状、体积等),以及在历史上一段时间内运动的坐标、时间、速度等信息,本说明书对此不作限制。而在执行本说明书所述的轨迹规划方法时,需要先根据所采集到的各指定障碍物的行驶数据,对各指定障碍物的运动进行预测,得到所预测出的各指定障碍物在目标时刻的轨迹点,即预测轨迹点。此外,还需要根据无人车自身的行驶目的,为无人车确定出在目标时刻的预参考轨迹点。
在本说明书实施例中,为指定障碍物预测的预测轨迹点可以不仅包含指定障碍物在目标时刻的位置,还可以包含指定障碍物在目标时刻的运动状态,例如,速度以及速度方向,同理,为无人车确定出的在目标时刻的预参考轨迹点也可以包含无人车在目标时刻的运动状态,而对于运动状态中包含何种数据本说明书不作限制。
需要说明的是,在本说明书实施例中,目标时刻为相比于当前时刻的未来时刻。在本说明书一实施例中,可以为无人车确定出在未来的第一预设时长内各未来时刻的预参考轨迹点,并为各指定障碍物预测出在未来的第二预设时长内各未来时刻的预测轨迹点,其中,第一预设时长与第二预设时长可以相同也可以不同,本说明书以下部分以第一预设时长和第二预设时长相同为例进行说明,也即,为指定障碍物所预测出的预测轨迹点也为指定障碍物在未来的第一预设时长内各未来时刻的预测轨迹点。在本说明书一实施例中,每两个相邻的未来时刻之间的间隔时长可以相同。
此时,其中任一未来时刻均可以作为本说明书中所述的目标时刻。
本领域技术人员可以理解的,所述预参考轨迹点所构成的预参考轨迹并不直接地指导无人车行驶,而是作为参考轨迹点的优化基础,也就是说,而对预参考轨迹点进行优化之后获得的参考轨迹点所构成的参考轨迹即为指导无人车行驶的轨迹。
S102:针对每个指定障碍物,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界,其中,所述约束界将目标设备和指定障碍物所在的空间划分为不相交的两部分,该指定障碍物被对应的约束界划分至与目标设备相同的部分。
可以理解的,指定障碍物和无人车的运动趋势可以通过其自身的速度反映出来,因此,本说明书实施例中,可以针对每个指定障碍物,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界,以使无人车在约束界的约束下所优化出的参考轨迹点能够避免与该指定障碍物之间的碰撞。
当目标设备为无人车时,可以认为无人车运动在道路这一二维平面上,因此,可以将道路这一二维平面的空间视作对无人车的预参考轨迹点进行优化的求解空间,以下,本说明书实施例以对无人车的预参考轨迹点进行优化的求解空间为二维平面空间为例,对本说明书所提供的约束界确定方式进行说明,并在当以三维空间为运动空间的无人设备需要以其他方式执行相对应的步骤时进行解释。
第一种,可以根据无人车与指定障碍物之间的相对速度方向,确定出与该相对速度方向的斜率相同的直线作为指定障碍物对应的约束界,如图2A所示,目标设备和指定障碍物A在目标时刻的运动速度分别为v1和v2,其相对运动速度则为v3,此时,可以根据v3的方向确定出斜率与v3相同的直线约束界A,需要说明的是,约束界A可以将目标设备和指定障碍物所在的二维平面空间分隔为分别包括位于预参考轨迹点的目标设备和位于预测轨迹点的指定障碍物的两个不相交的二维空间。
第二种,可以仅根据指定障碍物的速度确定出于指定障碍物速度的斜率相同的直线,作为指定障碍物对应的约束界,具体的,如图2B所示,可以确定出与指定障碍物A的速度方向v2相同的约束界B作为指定障碍物A对应的约束界。
第三种,还可以根据无人车与指定障碍物之间的相对速度方向判断在该指定障碍物与目标设备之间的相对速度的作用下,该指定障碍物与目标设备之间的距离是否具有缩小的趋势,若是,确定以垂直该指定障碍物速度方向的向量为法向量的超平面,作为该指定障碍物对应的候选超平面,若否,确定以垂直目标设备速度方向的向量为法向量的超平面,作为该指定障碍物对应的候选超平面,并从该指定障碍物对应的各候选超平面中选择该指定障碍物对应的约束界。
可以选择上述任一方式确定出指定障碍物对应的约束界,仅示例性的,本说明书以下部分以其中第三种方式为例进行说明。
需要说明的是,在上述任一约束界的确定方式中,被所确定出的对应的约束界划分至某一二维空间的目标设备和指定障碍物其整体全部位于所在轨迹点所位于的二维空间内,而不会出现某一目标设备或指定障碍物被分隔至两不相交的二维空间。
显然,当约束界作为直线的斜率已知时,可以确定出无数条满足上述条件的直线,可以选择出其中任一条直线作为指定障碍物对应的约束界,本说明书对此不作限制。
需要说明的是,本说明书实施例中根据任一方式所确定出的指定障碍物对应的约束界,该约束界将目标设备和指定障碍物所在的空间划分为不相交的两部分,并且指定障碍物被对应的约束界划分至与目标设备不同的部分,更进一步的,对于指定障碍物或目标设备来说,其所包含的各点均被划分为同一部分,而不是被约束界所切割开。
因此,当采用上述方式确定约束界时,可能会无法确定出满足上述条件的约束界,以通过上述第三种方式确定约束界为例,当指定障碍物对应的候选超平面满足上述条件时,则将该候选超平面作为该指定障碍物的目标超平面,并从该指定障碍物对应的各目标超平面中选择出该指定障碍物对应的约束界。而当指定障碍物对应的各候选超平面均不满足上述条件时,可以并不从各候选超平面中选择出该指定障碍物对应的约束界,而是根据该指定障碍物与目标设备之间相对速度的方向确定该指定障碍物对应的约束界,具体的,可以确定垂直该指定障碍物与目标设备之间相对速度的方向的向量为法向量的超平面,作为该指定障碍物的约束界,还可以根据该指定障碍物的边界确定该指定障碍物对应的约束界,例如确定出包含距离目标设备最近的指定障碍物的边界点作为该指定障碍物的约束界。可以看出,约束界的确定方式多种多样,可以选用任一现有方式确定约束界,本说明书以下不再赘述。
显然,在为各指定障碍物确定约束界时,若约束界的斜率已知,可以确定出无数条满足上述条件的直线作为指定障碍物的约束界,但在优化问题中,通常希望能在较大的解集空间内求解,反映在上述二维平面中,即为在斜率确定的情况下以约束界所包围得到的约束集更多为目标确定约束界,此时,可以针对该指定障碍物对应的每个候选超平面,根据目标设备的预参考轨迹点,确定出该候选超平面与目标设备的预参考轨迹点之间的距离,并从该指定障碍物对应的各候选超平面中选择与所述目标设备的预参考轨迹点之间的距离最远的候选超平面,作为该指定障碍物对应的约束界。具体的,在图3中,为指定障碍物D所确定出的约束界D的斜率与目标设备的运动方向的斜率相同,在此情形下,可以平移约束界D至图中位置,此时约束界D即为与所述目标设备的预参考轨迹点之间距离最远的候选超平面。
此外,当目标设备为无人机时,其所确定出的作为约束界的平面,约束界的法向量与上述作为无人车约束界斜率的速度方向相垂直,并且指向无人机。
S104:确定出由至少部分指定障碍物对应的约束界所围成的包含目标设备的空间,将该空间作为目标时刻对应的约束集。
在本说明书实施例中,可以通过上述方式为各指定障碍物确定出对应的约束界,从而获得由各约束界所围成的包含目标设备的空间,作为目标时刻对应的约束集。
图3示出了一种根据约束界确定约束集的方式,根据如上述第三种确定约束界的方式,分别为指定障碍物A~指定障碍物E确定出了对应于每个指定障碍物的约束界A~约束界E,此时,可以获得由约束界A、约束界B、约束界D以及约束界E所为围成的约束集,作为目标时刻对应的约束集。
可以看出,其中由指定障碍物所确定出的约束界C并不参与对约束集的包围,对于目标设备来说,相比于指定障碍物B,指定障碍物C所在的预测轨迹点位于较为外侧的位置,因此,由约束界A、约束界B、约束界D以及约束界E所为围成的约束集为由约束界A、约束界C、约束界D以及约束界E所为围成的约束集的子集。
为了避免对于不参与包围约束集的约束界的求解,所导致的计算资源的浪费,示例性的,本说明书提供以下方式,通过构建包含指定障碍物的禁忌表为各指定障碍物确定对应的约束界,具体的:
确定禁忌表,并将禁忌表初始化为空集,针对每个指定障碍物,将该指定障碍物作为目标障碍物,判断该目标障碍物是否在禁忌表中,若是,重新选择作为目标障碍物的指定障碍物,若否,根据目标障碍物的速度,以及目标设备的速度,为目标障碍物确定出对应的约束界,并将各与目标设备不位于同一空间的指定障碍物加入禁忌表。
可以看出,当为在先作为目标障碍物的指定障碍物所确定出的约束界将在后作为目标障碍物的指定障碍物分隔至与目标设备不同的不相交空间时,在后作为目标障碍物的指定障碍物就会被加入禁忌表,从而避免其作为目标障碍物被确定对应的约束界。
仍然以图3为例,当指定障碍物B相比于指定障碍物C先被确定为目标障碍物时,根据指定障碍物B所确定出的约束界B则会将指定障碍物C划分至与目标设备不同的不相交空间中,此时,指定障碍物C则会被加入禁忌表,接着,当指定障碍物C被作为目标障碍物时,由于指定障碍物C位于禁忌表中,则会重新确定目标障碍物,从而避免为指定障碍物C确定约束界C导致的计算资源的浪费。
更进一步的,上述方式只有当距离目标设备更近的指定障碍物相比于距离目标设备更远的指定障碍物更先被作为目标障碍物时,才能实现上述效果,基于此,本说明书实施例还提供一种根据与目标设备之间的距离从各指定障碍物中依次确定目标障碍物的方式,具体的,根据目标设备的参考轨迹点,以及各指定障碍物的预测轨迹点,确定出各指定障碍物与目标设备之间的距离;以各指定障碍物与目标设备之间的距离由小到大对各指定障碍物排序,并按照顺序依次从指定障碍物中选取目标障碍物。可以看出,此时,图3所示的实施例中指定障碍物B则必然会先于指定障碍物C被选择为目标障碍物,从而避免为指定障碍物C确定约束界C导致的计算资源的浪费。
S106:在该目标时刻的约束集的约束下,调整目标设备的参考轨迹,并将调整后的参考轨迹作为目标参考轨迹。
具体的,可以针对每一作为目标时刻的未来时刻,可以在通过上述方式为该未来时刻确定出对应的约束集的约束下调整目标设备在该未来时刻的预参考轨迹点,并将调整后的预参考轨迹作为目标设备在该未来时刻的参考轨迹点,由各未来时刻的参考轨迹点所构成的参考轨迹。
具体的,可以采用任一现有的优化算法在对应的约束集的约束下优化目标设备的预参考轨迹点,例如梯度下降算法等,当然,在对预参考轨迹点进行优化时,其优化目标中除了包含对指定障碍物的避让,还可以包含有其他优化目标,例如,在感应到红灯时减速等,本说明书对此不做限制。
需要说明的是,在本说明书一实施例中,针对每个未来时刻,当在该未来时刻对应的约束集的约束下,确定出了无人车在该未来时刻的参考轨迹点之后,还可以根据所确定出的无人车在该未来时刻的参考轨迹点重新为下一未来时刻确定预参考轨迹点,并通过以上所述方式为下一未来时刻的无人车确定参考轨迹点。
基于上述如图1所示的方法,本说明书实施例根据无人设备和指定障碍物的速度确定出包含目标设备的空间的约束集,使得在优化预参考轨迹时能够在约束集的约束下,以约束集中的空间为优化的求解空间进行求解,从而保证其求解空间为凸空间,能够求解出较为理想的参考轨迹点。
此外,当目标设备为无人车时,通常会首先将无人车在各目标时刻的约束集限制在道路所在的位置,从而避免为无人车求解出的参考轨迹点位于道路之外。在此基础之上,若道路本身所在的面积所构成的二维空间为非凸空间,则需要将无人车和各指定障碍物的坐标转换为其在道路坐标系中的坐标,从而将该求解空间转化为凸空间。其中,可以采用任一现有的方式对无人车和各指定障碍物的坐标进行转换,本说明书对此不作限制。
在为无人车确定约束集时,可能会由于无人车周围的指定障碍物数量较少,或指定障碍物过于集中等原因,导致为无人车确定出的约束集范围较大,举例而言,极端情况下根据无人车的探测结果,无人车周围不存在障碍物,此时无人车的约束集为整个二维平面,再例如,如图4所示,根据各指定障碍物对应的约束界所确定出的约束集也不存在边界。此时,在该过大的约束集的约束下难以求解出无人机的参考轨迹点。
本说明书实施例中,可以在确定各指定障碍物对应的约束界之前,预先为无人车确定出以目标设备的预参考轨迹点为中心,由各初始约束界所围成的包含目标设备的空间,作为初始约束集,并在确定出各指定障碍物对应的约束界之后,根据各初始约束界和各约束界中的至少部分确定出目标时刻对应的约束界。也就是说,针对一个目标时刻,无人车在该目标时刻的约束界范围最大为初始约束界。
示例性的,如图5A所示,图5A中预先为无人车确定出了由初始约束界A~初始约束界D所包围的初始约束集,当无人车周围不存在指定障碍物时,无人车在该目标时刻的约束集即为该初始约束集。更进一步的,如图5B所示,当无人车周围存在指定障碍物A和指定障碍物B时,可以通过上述方式为指定障碍物A和指定障碍物B分别确定出对应的约束界A和约束界B,可以看出,在该目标时刻,可以为无人车确定出有初始约束界A、初始约束界B、初始约束界D以及约束界A和约束界B所包围得到的如图5B示出的约束集。
以上仅为本说明书示例性提供的对约束界进行调整的方式,可以采用其他任意方式调整与无人车自身的面积存在重合的约束界,本说明书对此不作限制。
此外,可以根据无人车以及指定障碍物自身的体积确定各指定障碍物的约束集,在本说明书实施例中,还可以预先对各指定障碍物进行膨胀处理,并根据各指定障碍物膨胀后的膨胀体积通过上述任一方式确定出对应的约束界。以下,本说明书示例性提供一种对指定障碍物的体积进行膨胀的方法:
针对每个未来时刻,针对每个指定障碍物,根据该指定障碍物的预测轨迹,以及目标设备的预参考轨迹,确定该指定障碍物的膨胀系数,其中,所述该指定障碍物与目标设备同时处于同一位置的概率越大,所确定出的该指定障碍物的膨胀系数越大,并根据该指定障碍物的膨胀系数,以及该指定障碍物的原始体积,确定出该指定障碍物膨胀后的膨胀体积。
具体的,在实际应用中,无人车周围的各指定障碍物与无人车本身的距离有远有近,可以理解的,在每一未来时刻,与无人车距离较近的指定障碍物,其与无人车之间碰撞的可能性也就较大。对于与无人车之间存在着较大的碰撞可能性的指定障碍物,在本说明书实施例中,可以以更大的膨胀系数为指定障碍物膨胀出更大的体积,以使在以避让指定障碍物为目标规划轨迹时,为无人车与膨胀后体积较大的指定障碍物之间预留出更大的空间,从而在更大程度上避免碰撞的发生。
而另一方面,对于与无人车之间的碰撞可能性较小的指定障碍物,则可以较小的膨胀系数对指定障碍物进行膨胀,并得到膨胀后较小体积的指定障碍物,当然,每个指定障碍物在膨胀后的膨胀体积均大于膨胀前的原始体积,此时,就避免了因避让指定障碍物而导致无人车在规划轨迹时的可行区域较小。
具体的,可以预先确定出描述该指定障碍物在该未来时刻位置的概率分布的目标预测轨迹点,并直接地根据指定障碍物的目标预测轨迹与无人车的预参考轨迹之间的交点数量确定无人车与指定障碍物同时处于同一位置的概率,还可以针对每个未来时刻,针对该未来时刻的每个指定障碍物,从而,可以根据该指定障碍物在该未来时刻的目标预测轨迹点以及无人车在该未来时刻的预参考轨迹点确定在该未来时刻该指定障碍物与发生碰撞的概率,从而确定出该指定障碍物在该未来时刻的膨胀系数,可以看出,针对每个指定障碍物,该指定障碍物在每个未来时刻的膨胀系数都是根据该指定障碍物在该未来时刻与无人车发生碰撞的概率来确定的,也就是说,该指定障碍物在若干个未来时刻的膨胀系数可以并不相同,而该指定障碍物与目标设备碰撞的概率越大时,该指定障碍物在该未来时刻所确定出的膨胀系数也就越大,该指定障碍物在该未来时刻膨胀后的膨胀体积也就越大。
除此之外,本说明书实施例中,当有较大的把握认为,在某一未来时刻无人车与某一指定障碍物不会发生碰撞时,则可以将该指定障碍物作为该未来时刻的安全障碍物,在后续为无人车规划这一未来时刻的参考轨迹点时即不对该安全障碍物进行考虑,当然,也无需对安全障碍物进行膨胀。可以通过任一方式确定从指定障碍物中确定出安全障碍物,本说明书对此不作限制。
通常来说,当目标设备为无人车时,可以认为无人车运动在道路这一二维平面上,因此,可以仅根据无人车与指定障碍物在二维平面上的投影形状来确定无人车与指定障碍物是否处于同一位置,具体的,在每一未来时刻,当无人车投影形状上的任一点与指定障碍物投影形状上的任一点重合时,可以认为无人车与指定障碍物同时处于同一位置。
同理,也可以在对指定障碍物进行膨胀时,仅膨胀指定障碍物的形状,而无需在高度方向上对指定障碍物进行膨胀,在此情形下,可以将膨胀前指定障碍物的形状作为指定障碍物的原始形状,并将膨胀后指定障碍物的形状作为指定障碍物的膨胀形状。示例性的,图6示出了一种通过该膨胀方式对指定障碍物的形状进行膨胀的方法,具体的,可以为指定障碍物建立笛卡尔坐标系,并根据指定障碍物的膨胀系数确定出指定障碍物在x轴方向上的膨胀距离x′和在y轴方向上的膨胀距离y′,接着,在如实线示出的指定障碍物的原始形状的x方向上分别向x轴的正向和负向膨胀x′,为指定障碍物在y方向上分别向y轴的正向和负向膨胀y′,并获得膨胀后虚线示出的指定障碍物的膨胀形状。
如上所述,根据为指定障碍物预设的膨胀方向,可以采用任一现有的算法确定出指定障碍物在每一膨胀方向上的膨胀距离,并以所确定出的膨胀距离在对应的膨胀方向上对指定障碍物的原始形状进行膨胀,其中,在每个膨胀方向上,根据膨胀系数所确定出在该膨胀方向上的膨胀距离都与膨胀系数正相关。需要说明的是,以上仅示例性地以仅对指定障碍物在二维平面上的形状进行膨胀为例进行说明,在本说明书中,膨胀方向可以包括目标设备运动的三维空间中的任一方向,本说明书对此不做限制。
本说明书以上部分示例性地以目标设备为无人车为例对本说明书所提供的轨迹规划方法进行了说明,而当目标设备为其他无人设备时,例如无人机,也可以根据本说明书所提供的轨迹规划方法确定出所规划的参考轨迹,而仅需要以本说明书中所解释的步骤进行替换。
以上为本说明书的一个或多个实施例提供的轨迹规划方法,基于同样的思路,本说明书还提供了相应的轨迹规划装置,如图7所示。
图7为本说明书提供的一种轨迹规划装置示意图,该装置包括:轨迹确定模块、约束界确定模块、约束集确定模块以及轨迹调整模块,其中:
轨迹确定模块700,用于确定在目标时刻时,目标设备的预参考轨迹点,以及各指定障碍物的预测轨迹点;
约束界确定模块702,用于针对每个指定障碍物,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界,其中,所述约束界将目标设备和指定障碍物所在的空间划分为不相交的两部分,该指定障碍物被对应的约束界划分至与目标设备不同的部分;
约束集确定模块704,用于确定出由至少部分指定障碍物对应的约束界所围成的包含目标设备的空间,并将该空间作为目标时刻对应的约束集;
轨迹调整模块706,用于在该目标时刻的约束集的约束下,调整目标设备的预参考轨迹,并将调整后的预参考轨迹作为参考轨迹。
可选地,所述轨迹确定模块700具体用于,确定各障碍物的预测轨迹点;根据目标设备的预参考轨迹点,从障碍物中选择出满足第一距离条件的障碍物作为指定障碍物,其中,满足第一距离条件的障碍物为预测轨迹点与目标设备的预参考轨迹点之间的距离小于预设的第一距离的障碍物。
可选地,针对每个指定障碍物,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界之前,所述约束界确定模块702具体用于,根据目标设备的预参考轨迹点,确定出以目标设备的预参考轨迹点为中心,由各初始约束界所围成的包含目标设备的空间,作为初始约束集,所述约束集确定模块704具体用于,确定出由初始约束界以及各指定障碍物对应的约束界中的至少部分约束界所围成的包含目标设备的空间,并将该空间作为目标时刻对应的约束集。
可选地,所述约束界确定模块702具体用于,根据该指定障碍物的速度以及目标设备的速度,确定出该指定障碍物与目标设备之间的相对速度;判断在该指定障碍物与目标设备之间的相对速度的作用下,该指定障碍物与目标设备之间的距离是否具有缩小的趋势;若是,确定以垂直该指定障碍物速度方向的向量为法向量的超平面,作为该指定障碍物对应的候选超平面;若否,确定以垂直目标设备速度方向的向量为法向量的超平面,作为该指定障碍物对应的候选超平面;从该指定障碍物对应的各候选超平面中选择该指定障碍物对应的约束界。
可选地,所述约束界确定模块702具体用于,针对该指定障碍物对应的每个候选超平面,根据目标设备的预参考轨迹点,确定出该候选超平面与目标设备的预参考轨迹点之间的距离;从该指定障碍物对应的各候选超平面中选择与所述目标设备的预参考轨迹点之间的距离最远的候选超平面,作为该指定障碍物对应的约束界。
可选地,确定在目标时刻各指定障碍物的预测轨迹点之后,所述约束界确定模块702具体用于,确定禁忌表,并将禁忌表初始化为空集;针对每个指定障碍物,根据该指定障碍物的速度,以及目标设备的速度,为该指定障碍物确定出对应的约束界,具体包括:针对每个指定障碍物,将该指定障碍物作为目标障碍物,判断该目标障碍物是否在禁忌表中;若是,重新选择作为目标障碍物的指定障碍物,直到禁忌表中包括所有指定障碍物;若否,根据目标障碍物的速度,以及目标设备的速度,为目标障碍物确定出对应的约束界,并将各与目标设备不位于同一空间的指定障碍物加入禁忌表,并重新选择作为目标障碍物的指定障碍物。
可选地,所述约束界确定模块702具体用于,根据目标设备的参考轨迹点,以及各指定障碍物的预测轨迹点,确定出各指定障碍物与目标设备之间的距离;以各指定障碍物与目标设备之间的距离由小到大对各指定障碍物排序,并按照顺序依次从指定障碍物中选取目标障碍物。
可选地,所述轨迹调整模块706具体用于,针对每一未来时刻,将该未来时刻作为目标时刻,并确定在目标时刻时,目标设备的参考轨迹点,以及各指定障碍物的预测轨迹点;针对每个未来时刻,在该未来时刻对应的约束集的约束下,调整目标设备在该未来时刻的预参考轨迹点,并将调整后的预参考轨迹点作为目标设备在该未来时刻的参考轨迹点;根据目标设备在各未来时刻的参考轨迹点,确定目标设备的参考轨迹。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的轨迹规划方法。
本说明书还提供了图8所示的无人设备的结构示意图。如图8所示,在硬件层面,该无人设备包括处理器、内部总线、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1提供的轨迹规划方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。