1.本发明属于汽车轨迹规划技术领域,特别是涉及一种无人车轨迹规划方法。
背景技术:2.在传感器性能、计算机性能、无人驾驶算法都在飞速提升的今天,自动驾驶拥有更加广阔的前景,与人类司机相比,自动驾驶车辆的稳定性更强、成本更低、可复制性更好,将成为人类重大的技术创新,然而决策算法面临场景复杂的难题,传统的基于规划方法难以覆盖所有场景,且规则参数的调节十分困难,常常面临更改规则后提升了部分场景的自动驾驶能力,但削弱了另一部分场景下自动驾驶能力的困境,而基于数据驱动的方法也面临数据质量低,决策结果不稳定,决策死板,泛化能力不足,决策造成危险等各种问题。
技术实现要素:3.本发明实施例的目的在于提供一种无人车轨迹规划方法,可以模拟不同风格驾驶员的驾驶规划策略,使无人驾驶更加贴合人的思维模式,在各类场景下的轨迹规划更加灵活,安全性更高。
4.为解决上述技术问题,本发明所采用的技术方案是,无人车轨迹规划方法,包括以下步骤:
5.训练超车决策模型、绕行决策模型和冲突点通过决策模型,并将其布设在车辆自动驾驶系统;
6.确定车辆的可行空间,使用超车决策模型和绕行决策模型对可行空间进行压缩得到凸空间;
7.在凸空间内进行车辆轨迹规划,并将车辆轨迹规划与各障碍物轨迹进行碰撞检测,根据冲突点通过决策模型确定车辆的位置约束,基于位置约束对车辆进行速度规划。
8.进一步的,所述超车决策模型、绕行决策模型和冲突点通过决策模型均为生成-对抗网络,所述生成-对抗网络的训练过程如下:
9.s1,采集车辆行驶过程中的感知信息、道路信息和车辆状态信息,提取其中的特征字段得到特征数据;
10.s2,根据若干秒后车辆的行驶位置反推车辆当前时刻做出的决策,将所述决策作为专家决策,对各特征数据进行标注;
11.s3,对标注后的特征数据进行切片和均衡化处理得到训练样本;
12.s4,搭建生成-对抗网络,对网络参数进行随机初始化,固定生成器,将训练样本中的特征数据输入生成器得到对应的学徒决策,将特征数据-专家决策和特征数据-学徒决策分别作为判别器的输入训练判别器;
13.待判别器收敛后,将生成器的输出与判别器的决策输入串联,将特征数据分别输入生成器和判别器,对生成器进行训练;
14.重复对判别器和生成器进行更新,使生成器产生的学徒决策与专家决策一致。
15.进一步的,所述压缩过程如下:
16.对于可行空间内的每个障碍物,判断自车相对于各障碍物是否具备超车条件,若不具备超车条件,则将自车的可行空间压缩为障碍物与自车最近的边界所在超平面的后方;若具备超车条件,则使用超车决策模型进行超车决策,若决策结果为不超车,则将自车的可行空间压缩为障碍物与自车最近的边界所在超平面的后方;
17.若决策结果为超车,则判断车辆是否满足左绕行条件和右绕行条件,若均不满足,则将自车的可行空间压缩为障碍物与自车最近的边界所在超平面的后方;若满足其一,则直接做出满足条件的绕行决策,并将自车的可行空间压缩为满足条件一侧;若两者均满足,则使用绕行决策模型进行绕行决策,决策结果为左绕行或右绕行,基于此对可行空间进行相应压缩。
18.进一步的,压缩时还会对超车决策和绕行决策进行滤波处理,具体如下:
19.定义初始值为0的计数器,在超车决策和绕行决策时,实时采集自车和障碍物的状态数据,将其输入超车决策模型和绕行决策模型,得到当前状态数据对应的决策结果,当该决策结果与前一组状态数据的决策结果相同时,计数器归零,反之计数器加一,执行前一组状态数据的决策结果,当两个决策结果相反且计数器数值大于3时,执行当前状态数据对应的决策结果。
20.进一步的,所述车辆轨迹规划过程如下:
21.提取道路信息,以道路中心线为基准建立frenet坐标系,将车辆、道路边界和凸空间边界投影到坐标系中,在凸空间内选取轨迹点构成状态量,各轨迹点在道路中心线上的投影之间的间距相同;
22.状态量x=[li,
…
,li,
…
,l0,li′
,
…
,li′
,
…
,l0′
,li″
,
…
,li″
,
…
,l0″
]
t
,其中i表示轨迹点的数目变量,i表示轨迹点总数,i=0,1,
…
,i,l0、li、li分别表示第1个、第i个、第i个轨迹点与道路中心线之间的偏移距离,l0′
、li′
、li′
分别表示第1个、第i个、第i个轨迹点处曲线的一阶导,li″
分别表示第1个、第i个、第i个轨迹点处曲线的二阶导,t表示矩阵的转置;
[0023]
建立二次优化,令目标函数最小化,得到各轨迹点相对道路中心线的偏移距离序列,组成自车的规划轨迹;
[0024]
其中目标函数的可行域为l≤ax≤u,a表示轨迹规划的约束矩阵,p表示轨迹规划的二次项系数,q表示轨迹规划的一次项系数,l表示轨迹规划的可行域下界,u表示轨迹规划的可行域上界。
[0025]
进一步的,所述速度规划过程如下:
[0026]
构建状态量y,y=[si,
…
,si,
…
,s0,si′
,
…
,si′
,
…
,s0′
,si″
,
…
,si″
,
…
,s0″
]
t
,其中i表示轨迹点的数目变量,i表示轨迹点总数,i=0,1,
…
,i,s0、si、si分别表示第1个、第i个、第i个轨迹点的位置,s0′
、si′
、si′
分别表示第1个、第i个、第i个轨迹点处车辆的速度,s0″
、si″
、si″
分别表示第1个、第i个、第i个轨迹点处自车的加速度,t表示矩阵的转置;
[0027]
对状态量y建立二次优化,令目标函数最小化,获得各时刻自车在凸空间内各位置处的速度、加速度;
[0028]
目标函数的可行域为l
′
≤a
′
y≤u
′
,a
′
表示速度规划的约束矩阵,p
′
表示速度规划的二次项系数,q
′
表示速度规划的一次项系数,l
′
表示速度规划的可行域下界、u
′
表示速度规划的可行域上界。
[0029]
本发明的有益效果是:本发明实施例将无人车控制中的决策问题拆解为二分类决策,使决策问题简单化,同时利用三个二分类决策进行层层递进,能够覆盖所有的场景,且决策模型参数调节简单;利用带有专家决策的特征数据对决策模型进行训练,选用的决策模型泛化能力强,能够做出与真人驾驶员接近的驾驶决策,基于此进行车辆可行空间压缩和轨迹、速度规划,整个过程灵活、可调节;本实施例还利用滤波处理决策结果,避免了决策不稳定导致的车辆可行空间变形,使轨迹规划更加平滑,安全性更高。
附图说明
[0030]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031]
图1是本发明实施例的实施流程图。
[0032]
图2是生成-对抗网络的训练流程图。
[0033]
图3是本实施例空间压缩和轨迹规划流程图。
具体实施方式
[0034]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035]
如图1所示,无人车轨迹规划方法,包括以下步骤:
[0036]
步骤s1,让有经验的专家驾驶员驾驶装有影子模式及数据落盘功能的车辆,如在嵌入式硬件部署基于c++等开发的自动驾驶程序,采集驾驶过程中的感知信息、道路信息、车辆状态信息并记录在盘,在驾驶结束后上传至云端数据库保存;所述感知信息包括利用摄像头等传感系统获取的障碍物信息,可用作获取自车与障碍物的距离等,所述车辆状态信息包括自车的速度、方向盘转角等数据,所述道路信息包括道路边界、道路中心线等信息。
[0037]
步骤s2,使用spark等数据处理引擎,抽取信息数据中的目标字段,如进行相应决策时车辆的速度、加速度信息、位置信息、道路信息和感知信息等,根据这些信息计算出相关特征,如当前车辆车速、车辆航向角、车辆加速度、车辆方向盘转角、障碍物速度、障碍物与车辆的横纵向距离、障碍物距离左边界距离、障碍物距离右边界距离、障碍物种类(货车、小型汽车、自行车)等。
[0038]
步骤s3,进行数据标注,具体地,对于每一帧数据,根据若干秒后车辆的位置反推得到当前时刻做出的决策,并将其作为专家决策记录,如8s后车辆位于障碍物前方,则可反推出此刻车辆做出了超车决策,若8s后车辆位于障碍物左侧,则认为此刻车辆做出左绕行
决策,若8s后车辆仍然跟随在障碍物后方,则认为此刻车辆做出跟车决策;若干秒后车辆先于障碍物车通过冲突点,则标注为车辆先通过冲突点。
[0039]
步骤s4,按照一定的时间间隔对数据进行切片,获得时间序列下车辆的特征数据和专家决策信息,并对数据进行均衡化处理,保证各专家决策均包含不少于5组数据,获得训练样本,所述训练样本包括特征数据和专家决策。
[0040]
如果同一场景存在大量数据,而部分场景的数据量太少,会导致数据不均衡,用其训练的模型过拟合、生成的决策失真、泛化能力不强,因此需进行去重处理除去同一场景中的多余数据,对于数据量少的场景要进行数据补充采集,并对没有体现在数据集中的场景数据进行补充采集,使数据来源丰富,训练的模型泛化能力强,生成的决策更加符合真实情况。
[0041]
步骤s5,训练超车决策模型、绕行决策模型和冲突点通过决策模型,这三个模型均采用生成-对抗网络,生成-对抗网络的泛化能力较强,即使遇到未曾见过的驾驶场景,也能做出与真人驾驶相似的决策结果。
[0042]
三个决策模型的结构和输入是相同的,其输入均为步骤2获取的特征数据,包括车辆当前车速、车辆航向角、车辆加速度、车辆方向盘转角、障碍物速度、障碍物与车辆的横纵向距离、障碍物距离左边界距离、障碍物距离右边界距离、道路宽度、障碍物种类(货车、小型汽车、自行车)等信息,由于在针对不同模型进行数据标注得到的标注信息不同,所以训练得到的各模型参数不同。
[0043]
如图2所示,训练生成-对抗网络时,首先对网络参数进行随机初始化,固定生成器,将特征数据作为生成器的输入,所述生成器为多层神经网络,包括输入层、中间层和输出层,输入层提取特征数据中包含的特征信息,中间层根据特征信息拟合得到其对应的决策信息,输出层用于计算各决策的概率,将概率较大的决策作为学徒决策输出。
[0044]
将特征数据-专家决策、学徒决策均输入判别器,输出一个评分,用于表示学徒决策与专家决策的接近程度,判别器的损失函数ld表示如下:
[0045][0046]
其中τe表示专家决策,τi表示生成器生成的学徒决策,表示将特征数据-专家决策输入判别器后所得到的标量值,表示将特征数据-学徒决策输入判别器后得到的标量值,w表示判别器的网络参数,s表示特征数据,即就是车辆的状态,在本实施例中包括车辆当前车速、车辆航向角、车辆加速度、车辆方向盘转角、障碍物速度、障碍物与车辆的横纵向距离、障碍物距离左边界距离、障碍物距离右边界距离、道路宽度、障碍物种类(货车、小型汽车、自行车)等环境信息,a表示动作,在本实施例中为左绕行/右绕行、超车/不超车、先通过冲突点/后通过冲突点,dw(s,a)表示在特征数据为s、网络参数为w时判别器做出动作a的损失量。
[0047]
令的损失尽可能小,的损失尽可能大,对判别器进行迭代训练,更新网络参数w,当判别器收敛后,将生成器的输出与判别器的决策输入连接,生成器与判别器的输入均为特征数据,对生成器的网络参数进行训练,使生成器的损失函数尽可能小,生成器的损失函数π
θ
表示网络参数θ的生成
器网络,π
θ
(a|s)表示在特征数据s下π
θ
做出动作a的概率,d(s,a)表示在特征数据为s判别器做出动作a的损失量,使用梯度下降更新网络参数θ,当生成器的损失函数趋于稳定或达到预定迭代次数时获得优化的生成器。
[0048]
最后再根据生成器对判别器进行更新,重复更新生成器和判别器,使生成器产生的学徒决策尽可能与专家决策一致。
[0049]
步骤s6,在车辆的自动驾驶系统,如嵌入式硬件部署的c++程序中,部署上述的特征计算函数和生成器,并将生成器产生的决策信息输送到下游规划模块中,下游规划模块中设有相应的判别器,以便进一步进行无人驾驶规划控制计算。
[0050]
步骤s7,确定车辆的可行空间,即车辆在未来可以行驶且不会与道路边界等障碍物发生碰撞的、包括时间和空间的三维空间,利用超车决策模型和绕行决策模型将可行空间压缩为凸空间,如图3所示,具体压缩过程如下:
[0051]
步骤s7-1,对于可行空间内的每个障碍物,判断相对障碍物车辆是否具备超车条件,若不具备超车条件,则执行跟车操作,将该障碍物与车辆最近的边界所在超平面作为凸空间边界,车辆的可行空间压缩为障碍物后方。
[0052]
若具备超车条件,则使用超车决策模型进行超车决策,若输出结果为不超车,则执行跟车操作,并将障碍物与车辆最近的边界所在超平面作为凸空间边界,车辆的可行空间压缩为障碍物后方,若输出结果为超车,则执行步骤s7-2。
[0053]
所述超车条件包括目标障碍物的相对速度较低,车辆在限定加速度下可以在较短时间内加速并超越目标障碍物,且后方没有危险障碍物,超车加速空间足够。
[0054]
步骤s7-2,判断车辆是否满足左绕行条件和右绕行条件,若车辆同时不满足左绕行条件和右绕行条件,则执行跟车操作,将车辆的可行空间压缩为障碍物后方。
[0055]
若车辆满足左绕行条件或右绕行条件,则直接做出满足条件的绕行决策,并将自车的可行空间压缩为满足条件一侧,即将障碍物的右侧空间或左侧空间从可行空间中去除,以障碍物左侧或右侧所在超平面为凸空间边界。
[0056]
若同时满足左绕行条件和右绕行条件,则使用绕行决策模型进行左绕行和右绕行决策,将障碍物左侧或右侧所在超平面作为凸空间边界。
[0057]
所述绕行条件包括横向绕行空间是否足够(即障碍物边界至同侧道路边界是否足够宽),车辆当前的朝向角是否满足绕行的曲率约束,障碍物是否有向旁侧移动的趋势(即绕行时会否与其发生碰撞),后车的速度及意图(即绕行时是否有与后车碰撞的危险)。
[0058]
使用超车决策模型和绕行决策模型进行行为决策时往往会存在决策不稳定的现象,决策不稳定会导致车辆行为诡异,甚至发生危险,为了避免决策不稳导致的车辆画龙等,本实施例在做出超车决策和绕行决策时会进行滤波处理。
[0059]
具体地,定义一个计数器,其初始值为0,车辆实时采集其行驶中的感知数据,将感知数据输入超车决策模型和绕行决策模型,得到当前感知数据对应的决策结果,将该决策结果与前一个感知数据的决策结果进行对比,若两者相同,则计数器归零,继续执行该决策结果;若两者相反时,继续执行前一个感知数据对应的决策结果,计数器加一,重复上述过程,当当前决策结果与前一个决策结果相反且计数器大于3时,执行当前决策结果,并将计数器归零,特别的,当其中一种决策不满足安全约束或者动力学约束时,直接采用另一种决策,并且计数器置零。
[0060]
上述步骤中利用生成-对抗网络进行决策,生成-对抗网络的泛化能力较强,能够生成与真人驾驶类似的决策,根据该决策模型对可行空间内自车遇到障碍物时的场景进行决策,将可行空间压缩为凸空间,使规划时的工作量减少,效率提高,同时还在决策过程中对决策结果进行滤波,保证空间压缩的准确性,避免因决策跳动导致的凸空间变形,有利于后期的轨迹规划。
[0061]
步骤s8,在上述凸空间中,使用样条曲线建立车辆的空间轨迹规划,具体过程如下:
[0062]
步骤s8-1,提取道路信息,包括道路中心线和道路边界信息,以道路中心线为基准构建frenet坐标系,将车辆、道路边界和凸空间边界都投影到坐标系中,在凸空间内选取轨迹点构成状态量x,各轨迹点在道路中心线的投影之间的间距相同。
[0063]
状态量x=[li,
…
,li,
…
,l0,li′
,
…
,li′
,
…
,l0′
,li″
,
…
,li″
,
…
,l0″
]
t
,其中i表示轨迹点的数目变量,i表示轨迹点总数,i=0,1,
…
,i,l0、li、li分别表示第1个、第i个、第i个轨迹点与道路中心线之间的偏移距离,l0′
、li′
、li′
分别表示第1个、第i个、第i个轨迹点处曲线的一阶导,li″
分别表示第1个、第i个、第i个轨迹点处曲线的二阶导,t表示矩阵的转置。
[0064]
步骤s8-2,建立二次优化,令目标函数最小化,据此得到各轨迹点距离道路中心线的偏移距离序列。
[0065]
目标函数的可行域为l≤ax≤u,可行域的计算过程如下:
[0066]
根据凸空间和道路边界信息确定li的约束条件,根据一阶导、二阶导的固有特性,确定li′
、li″
的约束条件,同时为了保证规划轨迹的曲率,使轨迹更为平滑,令进而得到如下约束条件:
[0067][0068]
其中l
i,left
表示第i个轨迹点投影到道路中心线上的点与凸空间左边界的间距,l
i,right
表示第i个轨迹点投影到道路中心线上的点与凸空间右边界的间距,δs表示各轨迹点在道路中心线上投影的点的间距。
[0069]
对约束条件进行联合求解得到轨迹规划的可行域下界l、可行域上界u及约束矩阵a,约束矩阵的表达式如下:
[0070][0071]
p表示轨迹规划的二次项系数,q表示轨迹规划的一次项系数,p、q可以根据当前的环境信息求得:
[0072][0073][0074]wlateroffset
表示轨迹点距离道路中心线偏移惩罚的系数,w
obstacldistance
表示轨迹点距离障碍物距离惩罚的系数,l_bound[0].first表示第1个轨迹点投影到道路中心线的点对应的道路左边界,l_bound[0]second表示第1个轨迹点投影到道路中心线的点对应的道路右边界,l_bound[i].first表示第i个轨迹点投影到道路中心线的点对应的道路左边界,l_bound[i]second)表示第i个轨迹点投影到道路中心线的点对应的道路右边界。
[0075]
步骤s9,将车辆轨迹与各障碍物的轨迹进行碰撞检测,若车辆轨迹与障碍物轨迹无交点,则跳过该障碍物,若有交点,则认为车辆与该障碍物存在冲突点,判断车辆是否有条件先行通过冲突点,若车辆不具备先行通过冲突点的条件,则安排车辆在障碍物之后通过冲突点;若自车具备先行通过冲突点的条件,则使用冲突点通过模型进行冲突点通过顺序的决策,当冲突点通过决策模型输出先通过时,自车先行通过冲突点,输出后通过时,自车在障碍物后通过冲突点。
[0076]
当自车先行通过冲突点时,将障碍物通过冲突点时刻,冲突点位置加最小安全距离作为自车位置的约束下界s
i,down
,当自车后通过冲突点时,将障碍物通过冲突点时刻,冲突点位置减去最小安全距离作为自车位置的约束上界s
i,up
。
[0077]
构建状态量y,y=[si,
…
,si,
…
,s0,si′
,
…
,si′
,
…
,s0′
,si″
,
…
,si″
,
…
,s0″
]
t
,其
中i表示轨迹点的数目变量,i表示轨迹点总数,i=0,1,
…
,i,s0、si、si分别表示第1个、第i个、第i个轨迹点的位置,s0′
、si′
、si′
分别表示第1个、第i个、第i个轨迹点处车辆的速度,s0″
、si″
、si″
分别表示第1个、第i个、第i个轨迹点处自车的加速度,t表示矩阵的转置。
[0078]
对状态量y建立二次优化,令目标函数最小化,获得各时刻自车在凸空间内各位置处的速度、加速度。
[0079]
目标函数的可行域为l
′
≤a
′
y≤u
′
,可行域的计算如下:
[0080]
首先根据自车通过冲突点的约束上界和约束下界,速度、加速度的导数限制、整车参数及设计要求限制,确定如下的约束条件:
[0081][0082]
其中jerk表示加速度限制,其值取决于对平顺性的要求及车辆自身的固有参数限制,δt表示采样的时间间隔。
[0083]
对上述约束条件进行联合求解得到速度规划的可行域下界l
′
、可行域上界u
′
及约束矩阵a
′
,约束矩阵的表达式如下:
[0084][0085]
其中p
′
表示二次项系数,q
′
表示一次项系数,其表达式如下:
[0086][0087][0088]
s_bound[0].first表示在第1个轨迹点处不与其他障碍物发生碰撞时车辆的位置约束下界,s_bound[0]second表示在第1个轨迹点处不与其他障碍物发生碰撞时车辆的位置约束下界,s_bound[i].first表示在第i个轨迹点处不与其他障碍物发生碰撞时车辆的位置约束下界,s_bound[i]second表示在第i个轨迹点处不与其他障碍物发生碰撞时车辆的位置约束下界。
[0089]
步骤s10,将规划的车辆轨迹及速度数据输入无人车控制系统,控制无人车进行自动驾驶。
[0090]
本实施例首先对车辆在凸空间内的轨迹进行规划,确定车辆在凸空间内相对道路参考线的偏离情况,通过二次优化保证轨迹规划的平滑性;进一步判断车辆与其他障碍物是否存在冲突点,根据车辆与障碍物通过冲突点的顺序建立车辆的位置约束,基于此对车辆的速度和加速度进行优化,整个轨迹规划过程准确、灵活,安全性高。
[0091]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0092]
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。