一种轨迹规划方法及装置
技术领域
本发明涉及自动驾驶领域,特别涉及一种轨迹规划方法及装置。
背景技术
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
自动驾驶是人工智能领域的一种主流应用,自动驾驶技术依靠计算机视觉、雷达、监控装置和全球定位系统等协同合作,让机动车辆可以在不需要人类主动操作下,实现自动驾驶。自动驾驶的车辆使用各种计算系统来帮助将乘客从一个位置运输到另一位置。一些自动驾驶车辆可能要求来自操作者(诸如,领航员、驾驶员、或者乘客)的一些初始输入或者连续输入。自动驾驶车辆准许操作者从手动模操作式切换到自东驾驶模式或者介于两者之间的模式。由于自动驾驶技术无需人类来驾驶机动车辆,所以理论上能够有效避免人类的驾驶失误,减少交通事故的发生,且能够提高公路的运输效率。因此,自动驾驶技术越来越受到重视。
在自动驾驶技术领域,自动驾驶汽车的轨迹规划能够实现自动驾驶汽车的路径选择和路径优化(所述路径,也称轨迹),以及进一步实现更优的速度策略。现有技术在进行轨迹规划的过程中,首先获取当前车道和相邻车道的车道线作为虚拟约束,然后在约束内进行轨迹规划,从而保证车辆不越线行驶。然而现有技术仅基于车道线的约束进行轨迹规划,其规划结果鲁棒性差,且无法适应复杂的路况及环境。
发明内容
本申请提供一种轨迹规划方法及装置,用于为自动驾驶车辆规划出鲁棒的轨迹。
第一方面,提供一种轨迹规划方法,应用于自动驾驶车辆,所述方法包括:
接收感知数据、定位数据和地图信息;
根据所述感知数据、所述定位数据以及所述地图信息,得到所述自动驾驶车辆的初步行驶轨迹,所述初步行驶轨迹包含N个路点,其中,所述N个路点中的每个路点包括所述路点的第一路点信息,所述第一路点信息包括:所述路点的坐标和所述路点的横向允许误差,所述横向允许误差表示所述路点在横向位移上允许产生的误差值,N为大于1的正整数;
根据交通路况信息、所述感知数据和所述初步行驶轨迹,预测所述自动驾驶车辆分别在所述N个路点中的n个路点上的可行驶速度,得到目标行驶轨迹;所述目标行驶轨迹包含所述n个路点,其中,所述n个路点中的每个路点还包括所述路点的第二路点信息,所述第二路点信息包括:所述自动驾驶车辆在所述路点上的可行驶速度;其中,n为小于或等于N的正整数。
可选的,所述交通路况信息包括:交通信号灯信息,道路限速信息,变道空挡信息,或障碍物信息。
在本申请实施例提供的上述轨迹规划方法中,目标行驶轨迹中包含的n个路点以及n个路点包含的可行驶速度,是根据初步行驶轨迹包含的N个路点得到的,也即,N个路点所包含的横向允许误差在纵向的速度规划过程中起到作用,使得轨迹规划过程中,纵向速度规划结合了横向位移规划的信息,由此使得最终规划出的目标行驶轨迹是横向位移和纵向速度的联合规划得到的,这种横纵向联合规划的设计使得规划出的目标行驶轨迹的安全精度更高,带给自动驾驶的舒适性更好。
在一种可能的实现方式中,所述根据所述感知数据、所述定位数据以及所述地图信息,得到所述自动驾驶车辆的初步行驶轨迹,包括:
根据所述定位数据以及所述地图信息获取参考轨迹,所述参考轨迹包含R1个参考路点以及宽度约束,所述R1个参考路点位于所述自动驾驶车辆当前所在车道的中心线上或所述中心线的偏移线上,所述宽度约束用于在避障规划过程中约束各个所述参考路点基于所述参考路点的当前位置在横向位移上的偏移量,所述偏移线为偏移所述中心线预设范围的线;
根据所述感知数据,所述R1个参考路点以及所述宽度约束,对所述参考轨迹进行所述避障规划,生成一条避障轨迹,所述避障轨迹包含R2个避障路点,所述R2个避障路点中的每个避障路点包含所述避障路点的坐标;
根据横向允许误差的生成规则,确定所述R2个避障路点中各个避障路点分别对应的横向允许误差,从而得到所述初步行驶轨迹,其中,所述初步行驶轨迹包含的N个路点为所述R2个避障路点。
在上述的避障过程中,避障路点或基于参考路点进行横向偏移(以车辆前进方向为纵向,与纵向垂直或近似垂直的方向为横向)得到的;或基于参考路点和宽度约束重新生成的,因此避障路点的个数和参考路点的个数可以相同,也可以不同,因此R1与R2的取值关系不做限定。
通过上述的避障处理,得到的避障轨迹可以避开车辆前进过程可能遇到的障碍物,得到基本的安全保障。
在一种可能的实现方式中,在所述生成一条避障轨迹之后,所述方法还包括:对所述避障轨迹进行轨迹平滑处理,生成平滑轨迹,所述平滑轨迹包含所述R3个平滑路点,所述R3个平滑路点中的每个平滑路点包含所述平滑路点的坐标;
对应的,所述根据横向允许误差的生成规则,确定所述R2个避障路点中各个避障路点分别对应的横向允许误差,从而得到所述初步行驶轨迹,包括:
根据横向允许误差的生成规则,确定所述R3个平滑路点中各个平滑路点分别对应的横向允许误差,从而得到所述初步行驶轨迹,其中,所述初步行驶轨迹包含的N个路点为所述R3个平滑路点。
在上述描述的平滑处理的过程中,因为平滑的过程可能对避障路点进行插值或者采样等处理,即在平滑过程中增加或减少避障路点,由此,平滑路点和避障路点的个数也是可以相同也可以不同,因此R2与R3的取值关系亦不做限定。
通过上述的平滑处理,得到的平滑轨迹不仅考虑了安全因素,而且也由于更加平滑而增加了自动驾驶的舒适度。
在一种可能的实现方式中,所述根据交通路况信息、所述感知数据和所述初步行驶轨迹,预测所述自动驾驶车辆分别在所述N个路点中的n个路点上的可行驶速度,包括:
根据所述感知数据,生成包含障碍物占据区域的ST图,所述ST图包含T(时间)轴和S(位移)轴,其中所述ST图包含相对位移随时间变化的规律,其中所述相对位移包括所述障碍物相对于所述自动驾驶车辆的位移;
根据预设算法和速度上限确定点ij在ST图中的位置;j从1依次取到n,生成一条避开所述障碍物占据区域的ST规划曲线,所述ST规划曲线包括从i1到in的n个点,所述n个点与所述n个路点一一对应,所述n个点在所述ST图中分别对应的S/T值,为所述自动驾驶车辆分别在所述n个路点上的可行驶速度;
其中,所述速度上限用于在生成所述ST规划曲线的过程中约束所述可行驶速度的取值范围,所述速度上限为根据所述交通路况信息和所述初步行驶轨迹得到的。
由于速度上限是根据横向位移规划的输出信息——初步行驶轨迹(包括路点的横向允许误差等信息)得到的,因此,纵向速度规划过程中考虑了横向位移规划的信息,得到横纵向规划的共同输出结果——目标行驶轨迹,为一条更鲁棒的轨迹。
在一种可能的实现方式中,所述根据预设算法和速度上限确定点ij在ST图中的位置之前,所述方法还包括:根据所述交通路况信息对所述n个路点中的每个路点进行速度规划,得到所述n个路点的第一速度约束;
根据所述n个路点中每个路点的横向允许误差,获取与所述n个路点的横向允许误差对应的n个路点的第二速度约束;
确定所述n个路点每个路点包含的多个速度约束中,值最小的一个速度约束为所述速度上限,其中,所述多个速度约束包括:所述第一速度约束和所述第二速度约束。
可以发现,速度上限的确定过程是综合了横向允许误差的考虑进去的,因此速度上限是横纵向联合规划的结果,该结果进一步对速度规划和速度允许误差起作用,最后得到一条横纵向联合规划的目标行驶轨迹。
其中,在反差表中进行查表,获取与各个初步路点一一对应的第二速度;
其中,根据所述n个路点中每个路点的横向允许误差,获取与所述n个路点的横向允许误差对应的n个路点的第二速度约束,可以是通过反差表实现,该反差表包括预设的横向允许误差和速度约束之间的对应关系。
在一种可能的实现方式中,所述根据预设算法和速度上限确定点ij在ST图中的位置之前,所述方法还包括::
根据所述n个路点中的每个路点以及与所述每个路点相邻的x个路点,计算所述每个路点的曲率,其中x为大于0的正整数;
根据所述每个路点的曲率以及所述每个路点的最大允许侧向加速度,获取所述每个路点的第三速度约束;
其中,所述多个速度约束还包括:所述第三速度约束。
在一种可能的实现方式中,所述根据交通路况信息、所述感知数据和所述初步行驶轨迹,预测所述自动驾驶车辆分别在所述N个路点中的n个路点上的可行驶速度之后,所述方法还包括:
根据所述ST图、所述ST规划曲线和所述速度上限,生成所述n个路点中每个路点的速度允许误差;
所述第二路点信息还包括:所述速度允许误差;其中,所述速度允许误差用于表示所述n个路点中每个路点在速度上允许产生的误差。
在一种可能的实现方式中,根据所述ST图、所述ST规划曲线和所述速度上限,生成所述n个路点中每个路点的速度允许误差,包括:
在所述ST图中,对点ij+1沿S轴分别向上和向下生成上检查点和下检查点,所述上检查点和下检查点由所述点ij+1的纵向位移允许误差确定;所述纵向位移允许误差为所述点ij+1在所述ST图中沿所述S轴正反方向允许产生的位移误差,所述点ij+1为点ij下一个时刻的点,所述点ij为所述n个点中除in外的任意一个点,所述一个时刻的时长为预设时长;
连接所述点ij和所述上检查点得到第一斜率连接所述点ij和所述下检查点得到第二斜率;所述第一斜率和所述第二斜率用于表示所述点ij对应的路点的速度允许误差。
第二方面,提供了一种轨迹规划装置,应用于自动驾驶车辆,包括接收模块,横向位移规划模块,纵向速度规划模块;所述接收模块、横向位移规划模块和纵向速度规划模块,用于实施如第一方面及第一方面的多个可能的实现方式中的任意一种对应的方法步骤。
第三方面,提供了一种轨迹规划装置,包括输入输出接口、处理器和存储器,其中所述处理器用于控制所述输入输出接口收发信息,所述存储器用于存储计算机程序,所述处理器用于从存储器中调用并运行该计算机程序,使得所述处理器执行第一方面或第一方面任意一种可能的实现方式中所述的方法。
可选地,该处理器可以是通用处理器,可以通过硬件来实现也可以通过软件来实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
第五方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
第六方面,提供了一种自动驾驶车辆,所述自动驾驶车辆包括规划器和控制器;所述规划器用于根据第一方面或第一方面任意一种可能的实现方式中所述的方法进行轨迹规划,所述控制器用于根据由第一方面或第一方面任意一种可能的实现方式得到的目标行驶轨迹进行车辆控制,输出控制变量,所述控制变量包括:油门控制量,刹车控制量和方向盘转角。
附图说明
下面将对附图作简单地介绍。
图1为本发明实施例提供的一种自动驾驶车辆的结构示意图;
图2为本发明实施例提供的一种计算机系统的结构示意图;
图3为本发明实施例提供的一种云侧指令自动驾驶汽车的应用示意图;
图4为本发明实施例提供的一种云侧指令自动驾驶汽车的应用示意图;
图5为本发明实施例提供的一种计算机程序产品示意图;
图6为本发明实施例提供的一种运动规划器的结构示意图;
图7为本发明实施例提供的自车在城市开放结构化道路上行驶示意图;
图8为本发明实施例提供的一种横向位移规划过程的示意图;
图9为本发明实施例提供的一种横向位移规划过程的示意图;
图10为本发明实施例提供的一种横向位移规划过程的示意图;
图11为本发明实施例提供的一种横向位移规划过程的示意图;
图12为本发明实施例提供的一种纵向速度规划过程的示意图;
图13为本发明实施例提供的一种纵向速度规划过程的示意图;
图14为本发明实施例提供的一种纵向速度规划过程的示意图;
图15为本发明实施例提供的一种纵向速度规划过程的示意图;
图16为本发明实施例提供的速度约束v_lim与道路长度s之间的对应关系v_lim(s)示意图;
图17为本发明实施例提供的一种纵向速度规划过程中ST曲线规划过程的示意图;
图18为本发明实施例提供的一种纵向速度规划过程中速度允许误差的生成过程示意图;
图19为本发明实施例提供的一种轨迹规划过程的示意图;
图20为本发明实施例提供的一种轨迹规划方法示意图;
图21为本发明实施例提供的一种轨迹规划装置结构示意图;
图22为本发明实施例提供的另一种轨迹规划装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的车辆100的功能框图。在一个实施例中,将车辆100配置为完全或部分地自动驾驶模式。例如,车辆100可以在处于自动驾驶模式中的同时控制自身,并且可通过人为操作来确定车辆及其周边环境的当前状态,确定周边环境中的至少一个其他车辆的可能行为,并确定该其他车辆执行可能行为的可能性相对应的置信水平,基于所确定的信息来控制车辆100。在车辆100处于自动驾驶模式中时,可以将车辆100置为在没有和人交互的情况下操作。
车辆100可包括各种子系统,例如行进系统102、传感器系统104、规划控制系统106、一个或多个外围设备108以及电源110、计算机系统101和用户接口116。可选地,车辆100可包括更多或更少的子系统,并且每个子系统可包括多个元件。另外,车辆100的每个子系统和元件可以通过有线或者无线互连。
行进系统102可包括为车辆100提供动力的组件。在一个实施例中,推进系统102可包括引擎118、能量源119、传动装置120和车轮121。其中,引擎118可以是内燃引擎、电动机、空气压缩引擎或其他类型的一种引擎或多种引擎的组合,这里多种引擎的组合,举例来说可以包括:汽油发动机和电动机组成的混动引擎,内燃引擎和空气压缩引擎组成的混动引擎。引擎118将能量源119转换成机械能量。
能量源119的示例包括汽油、柴油、其他基于石油的燃料、丙烷、其他基于压缩气体的燃料、乙醇、太阳能电池板、电池和其他电力来源。能量源119也可以为车辆100的其他系统提供能量。
传动装置120可以将来自引擎118的机械动力传送到车轮121。传动装置120可包括变速箱、差速器和驱动轴。在一个实施例中,传动装置120还可以包括其他器件,比如离合器。其中,驱动轴可包括可耦合到一个或多个车轮121的一个或多个轴。
传感器系统104可包括感测关于车辆100自身以及车辆100周边的环境的信息的若干个传感器。例如,传感器系统104可包括定位系统122(定位系统可以是GPS系统,也可以是北斗系统或者其他定位系统)、惯性测量单元(inertial measurement unit,IMU)124、雷达126、激光测距仪128、相机130、计算机视觉系统138以及传感器融合算法140。传感器系统104还可包括车辆100的内部系统的传感器(例如,车内空气质量监测器、燃油量表、机油温度表等)。来自这些传感器中的一个或多个传感器数据可用于检测待检测的对象及其相应特性(位置、形状、方向、速度等)。这种检测和识别是车辆100实现安全操作的关键功能。
全球定位系统122可用于估计车辆100的地理位置。IMU 124用于基于惯性加速度来感测车辆100的位置和朝向变化。在一个实施例中,IMU 124可以是加速度计和陀螺仪的组合。
雷达126可利用无线电信号来感测车辆100的周边环境中的物体。在一些实施例中,除了感测物体以外,雷达126还可用于感测物体的速度和/或行进方向。
激光测距仪128可利用激光来感测车辆100所处环境中的物体。在一些实施例中,激光测距仪128可包括一个或多个激光源、激光扫描器以及一个或多个检测器,以及其他系统组件。
相机130可用于捕捉车辆100的周边环境的多个图像。相机130可以是静态相机或视频相机。
计算机视觉系统138可以操作来处理和分析由相机130捕捉的图像以便识别车辆100周边环境中的物体和/或特征。所述物体和/或特征可包括交通信号、道路边界和障碍物。计算机视觉系统138可使用物体识别算法、运动中恢复结构(Structure from Motion,SFM)算法、视频跟踪和其他计算机视觉技术。在一些实施例中,计算机视觉系统138可以用于为环境绘制地图、跟踪物体、估计物体的速度等等。
规划控制系统106为控制车辆100及其组件的操作。规划控制系统106可包括各种元件,其中包括转向系统132、油门134、制动单元136、路线控制系统142以及障碍物避免系统144。
通过对转向系统132的操作可以调整车辆100的前进方向。例如在一个实施例中可以为方向盘系统。
油门134用于控制引擎118的操作速度并进而控制车辆100的速度。
制动单元136用于控制车辆100减速。制动单元136可使用摩擦力来减慢车轮121。在其他实施例中,制动单元136可将车轮121的动能转换为电流。制动单元136也可采取其他形式来减慢车轮121转速从而控制车辆100的速度。
路线规划系统142用于确定车辆100的行驶路线。在一些实施例中,路线规划系统142可结合来自传感器138、GPS 122和一个或多个预定地图的数据为车辆100规划出能避开环境中潜在障碍物的行驶路线。本申请实施例提供的轨迹规划方法,即可以由路线规划系统142执行,以为车辆100输出一条目标行驶轨迹,该目标行驶轨迹包含多个目标路点,其中,多个目标路点中的每个目标路点包含该路点的坐标,以及该路点的横向允许误差和速度允许误差,本文所述的横向允许误差包括横向允许误差的取值范围,在一些情况下可以理解为横向允许误差的取值范围的简称。这里的横向,是指与车辆行进方向垂直的方向或近似垂直方向;横向允许误差,其实质含义为横向位移允许误差,也即车辆100在车辆行进方向的垂直方向或近似垂直方向上,允许的位移误差的取值范围。后文对此不再赘述。
控制系统144用于根据路线规划系统输出的行驶路线/行驶轨迹生成油门刹车以及转向角的控制量,从而对转向系统132、油门134以及制动单元136进行控制。
当然,在一个实例中,规划控制系统106可以增加或替换地包括除了所示出和描述的那些以外的组件。或者也可以减少一部分上述示出的组件。
车辆100通过外围设备108与外部传感器、其他车辆、其他计算机系统或用户之间进行交互。外围设备108可包括无线通信系统146、车载电脑148、麦克风150和/或扬声器152。
在一些实施例中,外围设备108提供车辆100的用户与用户接口116交互的手段。例如,车载电脑148可向车辆100的用户提供信息。用户接口116还可操作车载电脑148来接收用户的输入。在一种实现方式中,车载电脑148可以通过触摸屏进行操作。在其他情况中,外围设备108可提供用于车辆100与位于车内的其它设备通信的手段。例如,麦克风150可从车辆100的用户接收音频(例如,语音命令或其他音频输入)。类似地,扬声器152可向车辆100的用户输出音频。
无线通信系统146可以直接地或者经由通信网络来与一个或多个设备无线通信。例如,无线通信系统146可使用3G蜂窝通信,例如CDMA、EVD0、GSM/GPRS,或者4G蜂窝通信,例如LTE。或者5G蜂窝通信。无线通信系统146可利用WiFi与无线局域网(wireless localarea network,WLAN)通信。在一些实施例中,无线通信系统146可利用红外链路、蓝牙或ZigBee与设备直接通信。其他无线协议,例如各种车辆通信系统,例如,无线通信系统146可包括一个或多个专用短程通信(dedicated short range communications,DSRC)设备,这些设备可包括车辆和/或路边台站之间的公共和/或私有数据通信。
电源110可向车辆100的各种组件提供电力。在一个实施例中,电源110可以为可再充电锂离子或铅酸电池。这种电池的一个或多个电池组可被配置为电源并为车辆100的各种组件提供电力。在一些实施例中,电源110和能量源119可一起实现,如全电动车中。
车辆100的部分或所有功能受计算机系统101控制。计算机系统101可包括至少一个处理器113,处理器113执行存储在例如存储器114这样的非暂态计算机可读介质中的指令115。计算机系统101还可以是采用分布式方式控制车辆100的个体组件或子系统的多个计算设备。
处理器113可以是任何常规的处理器,诸如商业可获得的CPU。替选地,该处理器可以是诸如ASIC或其它基于硬件的处理器的专用设备。尽管图1功能性地图示了处理器、存储器、以及计算机系统101的其它元件,但是本领域的普通技术人员应该理解该处理器、存储器实际上可以包括不位于相同物理外壳内的其他多个处理器、或存储器。例如,存储器可以是硬盘驱动器或位于不同于计算机系统101的外壳内的其它存储介质。因此,对处理器的引用将被理解为包括对可以并行或不并行操作的处理器或存储器的集合的引用。不同于使用单一的处理器来执行此处所描述的步骤,诸如转向组件和减速组件的一些组件每个都可以具有其自己的处理器,所述处理器只执行与特定于组件的功能相关的计算;或者行进系统、传感器系统、规划控制系统等子系统也可以有自己的处理器,用于实现对应子系统的相关任务的计算从而实现相应功能。
在此处所描述的各个方面中,处理器可以位于远离该车辆的地方并且与该车辆进行无线通信。在其它方面中,此处所描述的过程中的一些在布置于车辆内的处理器上执行,而其它则由远程处理器执行,包括采取执行单一操纵的必要步骤。
在一些实施例中,存储器114可包含指令115(例如,程序逻辑),指令115可被处理器113执行来执行车辆100的各种功能,包括以上描述的那些功能。存储器114也可包含额外的指令,包括向行进系统102、传感器系统104、规划控制系统106和外围设备108中的一个或多个发送数据、从其接收数据、与其交互和/或对其进行控制的指令。
除了指令115以外,存储器114还可存储其他相关数据,例如道路地图、路线信息,车辆的位置、方向、速度以及其它相关信息。这种信息可在车辆100处于自主、半自主和/或手动模式的操作期间被车辆100或具体被计算机系统101使用。
用户接口116,用于向车辆100的用户提供信息或从其接收信息。可选地,用户接口116可包括在外围设备108的集合内的一个或多个输入/输出设备,例如无线通信系统146、车载电脑148、麦克风150和扬声器152。
计算机系统101可基于从各种子系统(例如,行进系统102、传感器系统104和规划控制系统106)以及从用户接口116接收的输入来控制车辆100的功能。在一些实施例中,计算机系统101可操作以对车辆100及其子系统的许多方面提供控制。
可选地,上述这些组件中的一个或多个可与车辆100分开安装或关联。例如,存储器114可以部分或完全地与车辆100分开存在。上述组件可以按有线和/或无线方式来通信地耦合在一起。
可选地,上述组件只是一个示例,实际应用中,上述各个模块中的组件有可能根据实际需要增添或者删除,图1不应理解为对本发明实施例的限制。
在道路行进的自动驾驶汽车,如上面的车辆100,可以识别其周围环境内的物体以确定对车辆行驶轨迹的调整,其中包括对车辆速度的调整。所述物体可以是其它车辆、交通控制设备、或者其它类型的物体。在一些示例中,可以独立地考虑每个识别的物体,并且基于物体的各自的特性,诸如它的当前速度、加速度、与车辆的间距等,用来确定自动驾驶汽车的轨迹规划,包含所要调整的速度。
可选地,与自动驾驶车辆100相关联的计算设备(如图1的计算机系统101、计算机视觉系统138)可以基于所识别的物体的特性和周围环境的状态(例如,交通、雨、道路上的冰、等等)来预测所述识别的物体的行为。可选地,每一个所识别的物体都依赖于彼此的行为,因此还可以将所识别的所有物体全部一起考虑来预测单个识别的物体的行为。车辆100能够基于预测的所述识别的物体的行为来规划它的行驶轨迹(其中包括速度)。并基于该规划结果为自动驾驶汽车确定车辆将需要调整到什么状态(就速度调整而言,例如加速、减速或停止)。在这个过程中,也可以考虑其它因素来确定车辆100的行驶轨迹,诸如,车辆100在行驶的道路中的横向位置、道路的曲率、静态和动态物体的接近度等等。
基于规划结果,除了为自动驾驶汽车调整速度以外,计算设备还可以提供修改车辆100的转向角的指令,以使得自动驾驶汽车遵循给定的轨迹和/或维持与自动驾驶汽车附近的物体(例如,道路上的相邻车道中的轿车)的安全横向和纵向距离。
上述车辆100可以为轿车、卡车、摩托车、公共汽车、船、飞机、直升飞机、割草机、娱乐车、游乐场车辆、施工设备、电车、高尔夫球车、火车、和手推车等,本发明实施例不做特别的限定。
根据图2,计算机系统101可以包括处理器103、系统总线105、显示适配器(videoadapter)107、显示器109、总线桥111、输入输出总线(I/O BUS)113、I/O接口115、USB端口125、网络接口129、硬盘驱动器接口131、硬盘驱动器133、系统内存135。
其中,处理器103和系统总线105耦合;处理器103可以是一个或者多个处理器,其中每个处理器都可以包括一个或多个处理器核。显示适配器可以驱动显示器109,显示器109和系统总线105耦合。系统总线105通过总线桥111和输入输出总线(I/O BUS)113耦合。I/O接口115和I/O BUS113耦合。I/O接口115和多种I/O设备进行通信,其中多种I/O设备比如输入设备117(包括:键盘,鼠标,触摸屏等示例),媒体盘(media tray)121,(例如,CD-ROM,多媒体接口等),收发器123(可以发送和/或接受无线电通信信号),摄像头155(可以捕捉静态和动态数字视频图像)和USB端口125。其中,可选地,和I/O接口115相连接的接口可以是USB端口125。
其中,处理器103可以是任何传统处理器,包括精简指令集计算(“RISC”)处理器、复杂指令集计算(“CISC”)处理器或上述的组合。可选地,处理器可以是诸如专用集成电路(“ASIC”)的专用装置。可选地,处理器103可以是神经网络处理器或者是神经网络处理器和上述传统处理器的组合。
可选地,在本文所述的各种实施例中,计算机系统101可以位于远离自动驾驶车辆的地方,并且可与自动驾驶车辆100无线通信。在一些实现方式中,本文所述的一些过程还可以由设置于自动驾驶车辆内的处理器执行,其它由远程处理器执行,包括采取执行单个操纵所需的动作。
计算机系统101可以通过网络接口129和软件部署服务器149通信。网络接口129包括硬件网络接口,比如,网卡。网络127可以是外部网络,比如因特网,也可以是内部网络,比如以太网或者虚拟私人网络(VPN)。可选地,网络127还可以是无线网络,比如WiFi网络,蜂窝网络等。
硬盘驱动器接口131和系统总线105耦合。硬盘驱动器接口131和硬盘驱动器133相连接。系统内存135和系统总线105耦合。运行在系统内存135的数据可以包括计算机系统101的操作系统137和应用程序143。
操作系统OS 137包括Shell 139和内核(kernel)141。Shell 139是介于使用者和操作系统之间的一个接口。Shell 139是操作系统最外面的一层。Shell139可以用于管理使用者与操作系统之间的交互:等待使用者的输入,向操作系统解释使用者的输入,并且处理各种各样的操作系统的输出结果。
内核141由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。直接与硬件交互,操作系统内核通常运行进程,并提供进程间的通信,提供CPU时间片管理、中断、内存管理、IO管理等。
应用程序143包括控制汽车自动驾驶相关的程序,比如,管理自动驾驶汽车和路上障碍物交互的程序,控制自动驾驶汽车沿规划的轨迹(包括速度)行进的程序,控制自动驾驶汽车和路上其他自动驾驶汽车交互的程序。应用程序143也存在于软件部署服务器149的系统上。在一个实施例中,在需要执行应用程序143时,计算机系统101可以从软件部署服务器149下载应用程序143。
传感器153和计算机系统101关联。传感器153用于探测计算机系统101周围的环境。举例来说,传感器153可以探测动物,汽车,障碍物和人行横道等,进一步,传感器还可以探测上述动物,汽车,障碍物和人行横道等物体周围的环境,比如:动物周围的环境,例如,动物周围出现的其他对象,天气条件,周围环境的光亮度等。可选地,如果计算机系统101位于自动驾驶的汽车上,传感器可以是摄像头,红外线感应器,化学检测器,麦克风等。
计算机系统101还可以从其它计算机系统接收信息,或转移信息到其它计算机系统。或者,从车辆100的传感器系统104收集的传感器数据可以被转移到另一个计算机系统对此数据进行处理。如图3所示,来自计算机系统101的数据可以经由网络被传送到云侧的计算机320用于进一步的处理。网络以及中间节点可以包括各种配置和协议,包括因特网、万维网、内联网、虚拟专用网络、广域网、局域网、使用一个或多个公司的专有通信协议的专用网络、以太网、WiFi和HTTP、以及前述的各种组合。这种通信可以由能够传送数据到其它计算机和从其它计算机传送数据的任何设备,诸如调制解调器和无线接口。
在一个示例中,计算机320可以包括具有多个计算机的服务器,例如负载均衡服务器群,为了从计算机系统101接收、处理并传送数据的目的,其与网络的不同节点交换信息。该服务器可以被类似于计算机系统101配置,具有处理器321、存储器322、指令323、和数据324。
图4示出了根据示例实施例的自主驾驶车辆和云服务中心420通过网络进行交互的示例。云服务中心420可以经诸如无线通信网络的网络402,从环境400内的自动驾驶辆410、412接收信息(诸如车辆传感器收集数据或者其它信息),或者下发相关信息给自动驾驶车辆410、412。
云服务中心420可以根据其存储的或接收到的全局数据,实现对环境400内的任一自动驾驶车辆的数据下发,例如当自动驾驶车辆410需要做全局路径规划时,其可以向云服务中心420请求全局路况信息,云服务中心420可以基于自动驾驶车辆410的请求为其下发与其相关的全局路况信息。
网络402可以将地图信息提供给自动驾驶车辆410和412。在-些示例中云服务器420还可以在自动驾驶车辆之间转发相关信息和/或传感器数据。
在一些示例中,云服务中心420向自动驾驶车辆发送对于关于环境内可能的驾驶情况所建议的解决方案(如,告知前方障碍物,并告知如何绕开它)。例如,云服务中心可以辅助车辆确定当面对环境内的特定障碍时如何行进。云服务中心向自动驾驶车辆发送指示该车辆应当在给定场景中如何行进的响应。例如,云服务中心基于收集到的施工车辆或其周围其他车辆的传感器数据,可以确认该车道上有“车道封闭”标志,确定该车道由于施工而被封闭。相应地,云服务中心发送用于自动驾驶车辆通过障碍的建议操作模式(例如:指示车辆变道另一条道路上)。云服务中心观察其操作环境内的视频流并且已确认自动驾驶车辆能安全并成功地穿过障碍时,可将该自动驾驶车辆可以使用的操作步骤添加到驾驶信息地图中去。相应地,这一信息可以发送到该区域内可能遇到相同障碍的其它车辆,以便辅助其它车辆不仅识别出封闭的车道还知道如何通过。
在一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图5示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,所述示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品500是使用信号承载介质501来提供的。所述信号承载介质501可以包括一个或多个程序指令502,其当被一个或多个处理器运行时可以提供针对图6描述的功能或者部分功能,此外,图5中的程序指令502也描述示例指令。
在一些示例中,信号承载介质501可以包含计算机可读介质503,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等等。在一些实施方式中,信号承载介质501可以包含计算机可记录介质504,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。在一些实施方式中,信号承载介质501可以包含通信介质605,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质501可以由无线形式的通信介质505(例如,遵守IEEE 802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令502可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,诸如针对图1-图3描述的计算机系统可以被配置为,响应于通过计算机可读介质503、计算机可记录介质504、和/或通信介质505中的一个或多个传达到计算设,的程序指令502,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。下面介绍本申请实施例提供的一种轨迹规划方法及装置。
自动驾驶的规划控制模块包含三层结构:高层决策、路径规划(也称轨迹规划)和底层控制。这和有人驾驶技术类似,以向右换道为例,人类驾驶员需要决策的事情如下:1)考虑安全因素和交规因素,决定换道时机;2)为车辆规划出一条行驶轨迹;3)控制油门、刹车和方向盘,以使车辆沿预定轨迹行驶。这三步操作对应着自动驾驶的规划控制模块中的行为规划器(Behavior Planner),运动规划器(Motion Planner)和控制器(Control),其中,行为规划器负责下发高层决策,如变换车道或者保持车道等;运动规划器负责规划预测轨迹和速度,控制器负责操作油门刹车方向盘,让自车跟踪目标轨迹并达到目标速度。本申请提供的实施例主要关注运动规划器,本申请提供的轨迹规划方法由运动规划器执行。
在汽车自动驾驶领域,自动驾驶系统的规划控制模块负责承接整个环境的感知,输出控制指令,是整个系统的出口。然而,在面对复杂场景时,如何用一套规划方案覆盖更多的场景,以使得规划控制模块可以基于不同的场景,更优的规划出路径,实现更优的速度策略?在控制方面,如何平衡横向和纵向的控制精度,实现控制精度、响应速度、能量消耗以及舒适性的平衡?这都是运动规划器需要解决的问题。
以车辆过限宽门为例,当车辆快速通过限宽门的时候,虽然纵向不会发生碰撞,但是如果横向控制偏差较大时则存在横向碰撞的风险。因此,不能很好的平衡横向和纵向的控制精度的情况下,运动规划器规划出来的预测轨迹和速度不仅不符合驾驶逻辑,而且安全性较低。
该问题是L4-L5级自动驾驶必须面对的关键问题,因此解决该问题,实现横向和纵向规划控制的平衡,将使得自动驾驶车辆的智能程度大幅提升,使智能驾驶符合驾驶逻辑且提升安全性能。
如图6所示,下面介绍运动规划器610;本申请实施例提供的轨迹规划方法由所述运动规划器610实现,所述运动规划器610可以是图1中路线规划系统142的一部分,用于为车辆100规划出行驶轨迹,该行驶轨迹用于进一步输出给控制器620。
所述运动规划器610包括横向位移规划器601和纵向速度规划器602,所述横向位移规划器601和纵向速度规划器602可以是基于功能进行的逻辑划分,也可以是不同的功能模块或硬件结构。
系统600的输入为高精地图和自车状态信息,横向位移规划器601负责为纵向速度规划器602和控制器620输出带横向允许误差的初步行驶轨迹,纵向速度规划器602负责为控制器620输出目标速度,可选的,纵向速度规划器602还可以为控制器620输出带速度允许误差的目标速度,其中,目标速度表示自动驾驶车辆(即自车)的可行驶速度。控制器620则负责输出油门或刹车量以及方向盘的转角度数等。
以图7为例,自车700在城市开放结构化道路上行驶,周围存在移动物体,自车700处于相应车道。周围移动物体尺寸、速度、当前位姿的预测以及未来位姿均为已知。其中,自车700包含所述规划控制系统600。如图7所示,自车700直行通过一段结构化道路,路点和路宽均已知,车道内有限宽障碍物,车道外有即将入侵的障碍物(行人),弯道前方有停车牌,自车700以遵守交通规则且安全平稳快速通过该路段为任务。下面介绍的实施例一以图7的场景为例,且假设行为规划器为其下的发高层决策为保持车道。
实施例一
如图6所示的运动规划器610中,横向位移规划器601(Lateral Planner)以参考轨迹(Reference Path)为基准,在路宽的限制内经过避障规划,生成一条能避开车道内所有障碍物的轨迹,称为避障轨迹。可选的,对该避障轨迹可以进一步进行平滑处理,得到平滑轨迹,进而为该平滑轨迹生成横向允许误差得到初步行驶轨迹,该初步行驶轨迹中的每一个路点包含该路点的坐标以及至少一个横向允许误差。
该初步行驶轨迹进一步输入纵向速度规划器602,纵向速度规划器602根据该初步行驶轨迹中的路点坐标,路点包含的横向允许误差,以及交通路况信息,规划出各个路点上的速度上限,即自车在该路点上的最大允许速度。该过程具体可以包括以下三个分支,该三个分支如图所示包括:背景速度规划(Reference Speed Planner),曲率速度规划(CurveSpeed Planner),以及联合横向误差的速度规划。其中,曲率速度规划为可选步骤。
其中,背景速度规划包括:根据交通规则,如红绿灯、停牌、限速等规划出每个路点的第一速度约束;曲率速度规划包括:根据道路曲率和向心加速度限制规划出每个路点的第三速度约束;其中,联合横向误差的速度规划包括:根据初始行驶轨迹上的N个路点中的n个路点的横向允许误差,规划出n个路点中每个路点的第二速度约束。
将上述三个速度约束中值最小的速度约束作为速度上限输出给下一步,进行ST速度规划,得到所述n个路点中每个路点纵向的速度允许误差,从而得到目标行驶轨迹,该目标行驶轨迹包含所述n个路点,所述n个路点中的每个路点包含该路点坐标(全局坐标系下的坐标),以及该路点的横向允许误差,自车在该路点的可行驶速度以及速度允许误差,所述速度允许误差即允许产生的速度误差取值。
在本申请实施例一提供的上述方案的基础上,所述目标行驶轨迹可以用于进一步输出给控制器620,从而由控制器620根据这些输入做出油门或刹车量的控制,以及方向盘的转角控制等。
实施例二
该实施例将对实施例一进行进一步的展开介绍,本申请实施例继续假设行为规划器为其下发的高层决策为保持车道,此为实施例二介绍轨迹规划工作的基础。
如图8所示,首先介绍横向位移规划器601的工作。
由于自车的需求是保持车道,因此横向位移规划器601以参考轨迹的路点连成的虚线为车道中心线,每个路点的左右宽度约束可以为车道中心线距离车道边线的距离减去半个车宽,保证自车不会越过当前车道的两侧边线;
横向位移规划器601根据定位以及高精地图信息获取自车当前行驶车道的信息,以自车当前行驶车道的中心线或中心线预设范围内的偏移线形成的轨迹为参考轨迹,该参考轨迹包含多个参考路点以及宽度约束,所述多个参考路点位于所述自车当前行驶车道的中心线上或上述偏移线上,所述宽度约束用于约束避障规划中各个避障路点的横向偏移量。
接下来进行避障规划,在参考轨迹给出的宽度约束下,选择合适的算法(包括但不限于:基于搜索的算法,基于等距曲线的算法,基于关键点的算法或基于多项式的算法等)横向推移路点或生成新的路点,从而规划出一条允许自车避开车道内障碍物,且完全位于宽度约束内的避障轨迹。
值得说明的是,所述参考路点的个数和所述避障路点的个数可以相同也可以不同,当避障路点为横向推移参考路点产生的路点时,避障路点的个数和参考路点的个数可以相同;当避障路点为生成的新的路点时,避障路点的个数和参考路点的个数可以不相同,其中,当避障路点相较于参考路点为新生成的路点时,这些新生成的路点是基于参考路点以及参考路点的宽度约束产生的。
如图9所示,社会车辆和行人均为动态障碍物,均不在自车当前行驶的车道内,对自车横向规划没有影响,自车在当前行驶车道内需要避开限宽障碍物,因此,可见的偏移车道中心线的另一条虚线即为避开限宽障碍物的避障轨迹。该避障轨迹使得自车与障碍物保持预设距离,例如15CM。
接下来,本申请实施例可以将避障轨迹进行空间滤波使之变得平滑,也称轨迹平滑处理。该轨迹平滑处理是为了使规划的轨迹更符合人类驾驶习惯,在本申请实施例中可以作为一个可选的步骤对本申请规划出的道路进行增益处理。具体的,该轨迹平滑处理的步骤包括但不限于利用以下平滑滤波算法进行处理:B样条曲线,傅里叶滤波,贝塞尔曲线滤波,多项式滤波。
经过上述的平滑处理之后得到的轨迹,应当完全落于参考轨迹的宽度约束之内,当平滑后的轨迹中存在位于宽度约束之外的路点时,则需要将避障轨迹的路点局部或整体向车道中心迁移,并重新进行平滑。
下面以二次贝塞尔曲线滤波算法为例:
B(t)=(1-t)2P0+2(1-t)tP1+t2P2
其中P0和P2为选取的两个路点的(x,y)坐标;根据P0和P2两个已知点计算P1点,具体为:过P0的曲线切线和P2的曲线切线的交点为P1点,其坐标为(x,y),其中t为参数,取值范围【0,1】,贝塞尔曲线保证每一点无限次连续可导,从而满足光滑性要求。
如图10所示,以每隔三个路点为例进行说明,可以发现,每隔三个路点作为一段曲线使用上述的二次贝塞尔函数进行轨迹平滑。首先取避障轨迹的第1和第5个路点(仅为示例)并计算其切线斜率,将这两点作为P0、P2点,并计算出P1点位置,将位置代入上述二次贝塞尔曲线滤波算法的公式中,t在0-1之间按照预设步长(如0.1或0.2)取值,如预设步长为0.2,则依次取0、0.2、0.4、0.6、0.8、1,逐渐取完算出一连串B(t),从而构成一条平滑的轨迹。计算第二段平滑轨迹时取避让轨迹的第5、第9个路点作为P0、P2点并依次类推,计算出整条平滑的轨迹,如图11自车当前行驶道路中的实线所示。
值得说明的是,在平滑过程中可能对待平滑的避障轨迹进行路点的插值或采样处理,因此,平滑轨迹中包含的平滑路点的个数和避障轨迹中包含的避障路点的个数,可以相同也可以不同。
得到一条平滑的轨迹之后,接下来进行生成横向允许误差的步骤。
其中,横向允许误差的生成方法包括但不限于以下举例:
方法1:
在自车周围一定范围内如前50米后10米,左右各20米的区域内生成栅格地图,将障碍物投影到栅格地图中。障碍物所占据的区域标记为已占据,将占据区域以二分之一宽加预设安全长度进行膨胀,所谓膨胀即扩大占据区域,例如此处为:将占据区域周围预设长度辐射到的区域内的栅格进行填充(这里的预设长度可以为:二分之一车宽加上预设安全长度);例如原本障碍物占据为0,膨胀为1。
对于平滑处理后的轨迹所包含的每个路点,以预设间隔向垂直于平滑轨迹切线的方向,向左右生成一系列的检查点,将这些检查点投影到栅格地图中,从而找到平滑轨迹中的每个路点在栅格地图的未占据区域中距离该路点最远的左右侧检查点。其中,该点的左右侧检查点离该点的距离为单侧横向允许误差,它的值即为所述横向允许误差(其中,单侧包括左侧或者右侧,横向允许误差也包括左侧误差和右侧误差,本申请对左侧误差和右侧误差是否对等不做要求,通常情况下,左侧误差和右侧误差的取值并不要求对等)。
横向允许误差最大不超过预设值,例如50cm,则当车辆行驶区域中有障碍物时,保证车辆沿平滑后轨迹在最大允许误差边界行驶时与障碍物距离不小于15cm,其中15cm和50cm是横向允许误差单侧(如上所述的左侧或右侧)的取值范围[15,50]。
其中,检查点的生成可以由如下公式实现:
其中:
(xk,yk)和(xk+1,yx+1)分别为车道中心线上第k个路点和第k+1个路点的坐标,该坐标为在ENU下的坐标。其中,dm与生成候选检查点的步长相关,其值等于每个候选检查点距离与其对应的路点的距离。例如,当m等于2的时候,即第二个候选检查点距离与其对应的路点的距离。
如上,在确定检查点的时候,以其中一个路点为例,初始为该路点预置了一串候选检查点(即多个可能的检查点),然后再对这一串候选检查点中的各个点从内往外(沿该路点向外)逐次确定该点是否为栅格中的占据点,直到检查到该点为第一个占据点,则将该点的前一个点确定为最终的检查点,也即为横向误差允许达到的最远的一个点。
方法2:
将障碍物投影到栅格地图并进行膨胀后,可以使用距离变换算法得到平滑后每个路点到距离其最近的占据区域(栅格地图中的占据区域)的距离。该距离可作为横向允许误差,并将该误差限制到预设阈值内,例如[15cm、50cm]的取值区间内。
如图11所示,横向允许误差以穿过图中路点的箭头表示,穿过路点指向左侧的箭头为自车向左偏移的横向允许误差,同样,穿过路点指向右侧的箭头为自车向右偏移的横向允许误差。从图中可以发现,在距离限宽障碍物较远时,横向允许误差的值较大;而在距离限宽障碍物较近时,横向允许误差的值较小,从而保证自车安全通过限宽障碍物。
下面介绍纵向速度规划器602的工作。
首先需要说明的是,纵向速度规划器602继承了横向位移规划器601的输出(该输出包括N个路点,N个路点中的每个路点包含该路点的坐标和横向允许误差),纵向速度规划器602即将规划出一条包含n个路点的目标行驶轨迹,其中这n个路点是横向位移规划器601输出的初步行驶轨迹包含的N个路点中的n个路点,即,602从601输出的N个路点中继承了n个路点(包括这n个路点的坐标以及横向允许误差),并在602中对该n个路点进一步进行速度(或速度和速度允许误差)的规划,从而使得602输出的目标行驶轨迹包含的n个路点中每个路点除了包含从601继承的坐标信息和横向允许误差信息,还包含经602处理得到的速度(或速度和速度允许误差)信息。n的取值可以小于N,也可以等于N。
关于速度上限的获取,基于下面三种速度规划:
一、背景速度规划;
接收交通灯、停牌和限速信息,规划每个路点的速度约束(自车在所述n个路点中每个路点上的可行驶速度的上限),具体规则如下:
1、基于红绿灯的速度规则:如果前方有红灯,那么自车从当前位置到红绿灯停车线,每个路点对应的速度应该逐渐递减,最终降为0。
2、基于停牌的速度规则:如果前方有停牌指示,那么自车从当前位置到停牌停车线,每个路点对应的速度应该逐渐递减,最终降为0。
3、基于道路限速的速度规则,如果道路限速已知,那么每个路点对应的速度应等于限速。如果限速突然变化,那么每个路点对应的速度应按照指定变化率更新为新的限速。
需要说明的是,当自车的任务是保持车道,则其背景速度规划需要结合上述1-3种速度规则进行,最终该环节为每个路点规划的速度上限以上述1-3种速度中最小值为准。而当自车的任务是变换车道,则以实施例三提供的背景速度规划为准,具体请参见实施例三。
如图12所示,道路限速为25KM/h,且前方有停牌指示,则根据交通规则,自车应在停牌处停下。则如上所述的背景速度规划工作可以包括:沿着路点规划出逐渐减小到0的沿途速度约束。为保证自车乘坐人的舒适性,可以将规划的减速度限制在预设值之内,比如0.05g。
二、曲率速度规划;
根据每个路点(所述n个路点中的每个)和其相邻的若干路点,计算该路点的曲率,然后根据预设的侧向加速度,得到通过每个路点的速度约束。其中,该预设的侧向加速度是考虑到安全性和舒适性的经验标定值。
如图13所示,自车规划的轨迹近似“直线-圆弧-直线”,沿着每一个路点,取其和其相邻的两个路点,总共三个路点(数目仅为示例),根据以下公式(秦久朝-海伦公式)计算该点曲率半径r(即通过该三个点的三角形外接圆的半径):
其中(x
1,y
1),(x
2,y
2),(x
3,y
3)为这三点的x,y坐标。考虑到分母为0的情形,当S小于0.01时按0.01计算;然后以
计算该点的限速。其中,a=0.2g为允许的侧向加速度,计算结果如图13所示。
三、联合横向误差的速度规划;
如图6所示,横向位移规划器601生成的横向允许误差(横向位移允许产生的误差值,简称:横向允许误差),用于作为输入,生成速度允许误差。具体方法包括:
以其中任意一个路点为例,根据该路点的横向允许误差,在反查表中进行查表得到该路点对应的速度约束;或者,将该路点的横向允许误差代入函数得到该路点对应的速度约束。
如图14所示,可以发现,横向允许误差越小,对应的速度约束也越小。这是因为,速度越快的情况下,控制精度越低,而只有横向允许误差较大的情况下才能承受相对更低一点的控制精度。
因此,如图14所示,在该速度规则下,横向允许误差较大的路点被规划了较大的速度约束,而横向允许误差较小的路点(如过限宽障碍物路段上的路点)被规划了较小的速度约束。
上述三种速度规划,为每个路点给出了三个速度约束的建议值。以其中一个路点为例,上述三种速度规划分别为该路点给出了一个速度约束的建议值,因此该路点包含三个速度约束的建议值,取三个速度约束的建议值中最小的那一个作为该路点的速度上限,每个路点都做相同操作(取最小速度)后,则每个路点都包含该路点的速度上限,该速度上限用于进一步约束自车在该路点上的可行驶速度的取值范围。
在获得了各个路点的速度上限之后,接下来还需要基于这些速度上限为每个路点确定自车的可行驶速度(也称目标速度)和速度允许误差,所述速度允许误差即每个路点在其目标速度的基础上允许向上或向下波动的误差区间。其中,速度允许误差可以作为一项可选项,也即本申请实施例提供的方案可以仅确定自车在各个路点上的可行驶速度,而不确定速度允许误差。
确定自车的可行驶速度的方法可以包括:
根据感知数据,生成包含障碍物占据区域的ST图(如图17的A图所示),该ST图包含T(时间)轴和S(位移)轴,其中所述ST图包含相对位移随时间变化的规律,其中所述相对位移包括所述障碍物相对于所述自动驾驶车辆的位移;其中感知数据是由传感器采集到的数据,这些数据中包括自车环境中存在的障碍物信息等。
其中,所述障碍物可以包括自车以外的车辆,行人,自行车等对自车驾驶存在潜在或直接影响的障碍物。
根据预设算法和速度上限确定点ij在ST图中的位置;j从1依次取到n(如图17的B图至D图所示),生成一条避开所述障碍物占据区域的ST规划曲线,ST规划曲线包括从i1到in的n个点(如图17的D图所示),n个点与前述的n个路点一一对应,这n个点如图17的D图所示,每个点在ST图中对应一个S/T值(位移除以时间为速度),为自车在该点对应的路点上的可行驶速度。其中,ST图可以为考虑所有移动障碍物的预测轨迹(包括车道外的移动障碍物)生成的,图17中的A图仅以行人(障碍物包括行人)为例示出。
进一步,可选的,本申请实施例还可以为n个路点中的每个路点生成速度允许误差:
生成速度允许误差的方法与生成横向允许误差的方法类似,但生成横向允许误差的过程借助的是栅格地图,而生成速度允许误差需要借助的是ST图。其中,如上介绍所述,ST图包含两个坐标轴,分别为T(时间)轴和S(位移)轴,T轴以原点为当前时刻,S轴以原点为自车当前位置。任取一点(t,s),其取值在【0,1】之间,其含义为:如果该值大于0小于1,那么t时刻s位置有被侵占的风险。
下面结合附图做稍详细的展开:
生成可行驶速度和速度允许误差(纵向速度允许产生的误差值,简称速度允许误差)的方法具体可以如下所述:
首先,生成速度上限与道路长度s之间的对应关系v_lim(s)。其中速度上限也称也称速度约束v_lim,其中,该对应关系与自车以及自车当前的环境信息强相关。
以图15为例,自车从当前位置出发,途径限宽障碍物,最后在停牌指示下停车,其对应的速度约束v_lim与道路长度s之间的对应关系v_lim(s)由图16所示。结合图15看图16,自车从当前位置出发(即s轴的0点),自车在当前位置时的速度为20km/h,在自车即将进入限宽障碍物形成的通道之前,自车速度逐渐降低,由20km/h逐渐递减为11km/h,然后以11km/h匀速通过(图16中的线段中水平线段表示)限宽障碍物形成的通道,过通道后再在较短的距离和时间内将速度快速递减为0以使自车在停牌指示前停车(图16中的线段末端较陡的线段表示,且最后v轴的值为0)。
然后,考虑所有移动障碍物的预测轨迹(包括车道外的移动障碍物),生成ST图(如图17的A图)。
如图17所示,以行人为上述的移动障碍物举例。
其中,在图17的A图中,移动障碍物-行人即将横穿马路,考虑到其体积,且其将在某一段时间内侵入自车车道,且侵占长度近似为常数,因此其在如A图所示的ST图中的侵占区域近似为矩形。
考虑到其不确定性与自车的横向允许误差,将其侵占区域向外膨胀,如A图中的颜色渐变为灰色的区域。然后在速度上限的约束下,结合预设算法,规划初始时刻的自车速度(自车在路点的可行驶速度)。因为初始时刻对应的自车位置起始位置s=0,则规划的速度不能大于速度上限v_lim(0),见图17的B图。然后以下一时刻为新的起始时刻,其起始位置s=s1,则该时刻规划的速度不能大于速度约束v_lim(s1),如图17的C图所示。以此类推,最终得到完整的ST规划曲线,如图17的D图所示。其中,可以发现的是,由于图17的四个图均为ST图,即以时间为横轴,以位移为纵轴,因此图中曲线的切线斜率即表示自车从s为0的起始位置往前行驶过程中的速度,例如行驶位移为s1的过程耗时为t1,则Step1的斜率为s1/t1,也即step1的速度。
需要说明的是,图17的D图中n个点并不直接表示n个路点,但是与n个路点为一一对应的关系,该n个点中每个点在图中均对应一个S/T值,该值则为该点对应的路点的可行驶速度。
下面介绍速度允许误差的生成方法:
如图18所示,在不碰撞侵占区的前提下,生成ST规划曲线的纵向位移允许误差,然后再转换成速度允许误差。
在ST图中,如图18的A图所示,考虑了自车横向控制允许误差对已占据区域进行膨胀后,对于ST规划曲线中的每个点沿纵轴(也就是S轴方向)向上、向下以一定步长(如0.2m)生成检查点;
然后,如图18的B图所示,对ST规划曲线中的每个点进行如下处理:以第i+1点为例,找到第i+1点最远的位于ST地图中未占据区域的上下侧两个检查点,将第i+1点的上下侧两个检查点分别与ST规划曲线中的第i点进行连线,产生两条连线,该两条连线的斜率即为第i+1点的速度允许误差的上下限。其中,可选的,此处的速度允许误差的上限的斜率不能高于前面所述纵向速度规划器602给出的速度上限的斜率(图17的B图和C图中以虚线表示的即为该速度上限的斜率)。
最后,如图18的C图所示,以位移为横轴,以ST曲线上每个点对应的斜率(即可行驶速度)为纵轴,将图18的B图的结果转换为图18的C图所示的曲线,其中,在图18的C图中,每个速度点都有速度允许误差。当周围无占据区域影响时,第i+1点ST规划的速度允许误差应小于一定阈值,如5km/h。当有侵占区影响时,第i+1点的ST规划的速度允许误差应大于一定值,如0.5km/h。其中,第i+1点可以为当前路点。
通过上述的横向位移规划器601和纵向速度规划器602的相关处理,规划器最终输出一条目标行驶轨迹,该目标行驶轨迹上的n个路点中的每个路点均包含该路点的坐标、横向允许误差,自车在该路点的可行驶速度,以及该路点的速度允许误差;其中速度允许误差为可选信息。
在实施例三的基础上,上述目标行驶轨迹可以用于进一步输出给控制器,控制器将根据该目标行驶轨迹进行相关操作,从而输出油门或刹车的控制量以及方向盘转角。
实施例三
实施例一和实施例二对于运动规划器的工作介绍,均是以自车保持车道为任务出发的,下面介绍自车以变道为任务时运动规划器的工作,也即假设行为规划器为其下的发高层决策为变换车道。
当自车的需求是换道,不同于实施例一和实施例二的是,横向位移规划器601确定的参考轨迹的起始路点是当前车道的车道中心线的部分路点,而结束路点是待变至的目标车道的车道中心线的部分路点,两段路点之间以平滑的方式连接,每个路点的左右宽度约束可以按经验值进行取值,例如20cm。
如图19所示,自车行驶在当前道路,其任务是变道至目标道路,目标车道上有两辆车,一辆称为空当前车,另一辆称为空当后车,由该空当前车和空当后车构成一个空当,自车需要经由该空当汇入目标车道,目标汇入点可以是空当的中心位置。
另外,不同于实施例一和实施例二的是,纵向速度规划器602在做背景速度规划时,需要接收交通灯、停牌、限速信息和汇入目标车道的目标空当信息,从而规划每个路点的速度约束,也即:
和保持车道的任务不同的是,变换车道的背景下,在做背景速度规划的环节,除了需要考虑“基于红绿灯的速度规则”、“基于停牌的速度规则”和“基于道路限速的速度规则”这三种速度规则之外,还需要考虑“基于目标空当限速的速度规则”,具体的:
基于目标空当限速的速度规则,当自车需要换道时,根据目标空当的长度、自车距离目标空当待汇入点的纵向距离,以及目标空当的前后车速度,规划出从当前路点到待汇入点沿途的每个路点对应的速度,以使得自车始终汇入后处于前车和后车之间的某一点(该点能保证自车不与前车和后车产生碰撞即可)。其中,目标空当的长度表示目标空当中前车的车尾和后车的车头之间距离的长度;待汇入点可以是目标空当中前车和后车之间的中心点,或中心点前移或后移预设长度的点,其目的是为了确保自车汇入目标车道时,不与目标车道上的前车以及后车相撞。
需要说明的是,只有当自车的任务是变换车道时才需要考虑第4种速度规则(即基于目标空当限速的速度规则)。当自车的任务是换道,则其背景速度规划需要结合上述4种速度规则进行,最终该环节(背景速度规划环节)为每个路点规划的速度上限以上述1-4种速度中的最小值为准。
除了上述明确的区别,其它步骤为避免冗余,请一并参阅实施例三的相关步骤表述,不再赘述。
实施例四
如图20所示,本申请实施例提供一种轨迹规划方法,应用于自动驾驶车辆,所述方法包括:
S2010:接收感知数据、定位数据和地图信息;
S2030:根据所述感知数据、所述定位数据以及所述地图信息,得到所述自动驾驶车辆的初步行驶轨迹,所述初步行驶轨迹包含N个路点,其中,所述N个路点中的每个路点包括所述路点的第一路点信息,所述第一路点信息包括:所述路点的坐标和所述路点的横向允许误差,所述横向允许误差表示所述路点在横向位移上允许产生的误差值,N为大于1的正整数;
S2050:根据交通路况信息、所述感知数据和所述初步行驶轨迹,预测所述自动驾驶车辆分别在所述N个路点中的n个路点上的可行驶速度,得到目标行驶轨迹;所述目标行驶轨迹包含所述n个路点,其中,所述n个路点中的每个路点还包括所述路点的第二路点信息,所述第二路点信息包括:所述自动驾驶车辆在所述路点上的可行驶速度;其中,n为小于或等于N的正整数。
在实施例四的基础上,可选的,所述S2030具体包括:
根据所述定位数据以及所述地图信息获取参考轨迹,所述参考轨迹包含R1个参考路点以及宽度约束,所述R1个参考路点位于所述自动驾驶车辆当前所在车道的中心线上或所述中心线的偏移线上,所述宽度约束用于在避障规划过程中约束各个所述参考路点基于所述参考路点的当前位置在横向位移上的偏移量,所述偏移线为偏移所述中心线预设范围的线;
根据所述感知数据,所述R1个参考路点以及所述宽度约束,对所述参考轨迹进行所述避障规划,生成一条避障轨迹,所述避障轨迹包含R2个避障路点,所述R2个避障路点中的每个避障路点包含所述避障路点的坐标;
根据横向允许误差的生成规则,确定所述R2个避障路点中各个避障路点分别对应的横向允许误差,从而得到所述初步行驶轨迹,其中,所述初步行驶轨迹包含的N个路点为所述R2个避障路点。
可选的,在所述生成一条避障轨迹之后,所述S2030还包括:对所述避障轨迹进行轨迹平滑处理,生成平滑轨迹,所述平滑轨迹包含所述R3个平滑路点,所述R3个平滑路点中的每个平滑路点包含所述平滑路点的坐标;
对应的,所述根据横向允许误差的生成规则,确定所述R2个避障路点中各个避障路点分别对应的横向允许误差,从而得到所述初步行驶轨迹,包括:
根据横向允许误差的生成规则,确定所述R3个平滑路点中各个平滑路点分别对应的横向允许误差,从而得到所述初步行驶轨迹,其中,所述初步行驶轨迹包含的N个路点为所述R3个平滑路点。
可选的,所述S2050包括:
根据所述感知数据,生成包含障碍物占据区域的ST图,所述ST图包含T(时间)轴和S(位移)轴,其中所述ST图包含相对位移随时间变化的规律,其中所述相对位移包括所述障碍物相对于所述自动驾驶车辆的位移;
根据预设算法和速度上限确定点ij在ST图中的位置;j从1依次取到n,生成一条避开所述障碍物占据区域的ST规划曲线,所述ST规划曲线包括从i1到in的n个点,所述n个点与所述n个路点一一对应,所述n个点在所述ST图中分别对应的S/T值,为所述自动驾驶车辆分别在所述n个路点上的可行驶速度;
其中,所述速度上限用于在生成所述ST规划曲线的过程中约束所述可行驶速度的取值范围,所述速度上限为根据所述交通路况信息和所述初步行驶轨迹得到的。
可选的,在根据预设算法和速度上限确定点ij在ST图中的位置之前,所述S2050还包括:根据所述交通路况信息对所述n个路点中的每个路点进行速度规划,得到所述n个路点的第一速度约束;
根据所述n个路点中每个路点的横向允许误差,获取与所述n个路点的横向允许误差对应的n个路点的第二速度约束;
确定所述n个路点每个路点包含的多个速度约束中,值最小的一个速度约束为所述速度上限,其中,所述多个速度约束包括:所述第一速度约束和所述第二速度约束。
可选的,在根据预设算法和速度上限确定点ij在ST图中的位置之前,所述S2050还包括:
根据所述n个路点中的每个路点以及与所述每个路点相邻的x个路点,计算所述每个路点的曲率,其中x为大于0的正整数;
根据所述每个路点的曲率以及所述每个路点的最大允许侧向加速度,获取所述每个路点的第三速度约束;
其中,所述多个速度约束还包括:所述第三速度约束。
可选的,所述S2050还包括:
根据所述ST图、所述ST规划曲线和所述速度上限,生成所述n个路点中每个路点的速度允许误差;
所述第二路点信息还包括:所述速度允许误差;其中,所述速度允许误差用于表示所述n个路点中每个路点在速度上允许产生的误差。
可选的,所述S2050还包括:
在所述ST图中,对点ij+1沿S轴分别向上和向下生成上检查点和下检查点,所述上检查点和下检查点由所述点ij+1的纵向位移允许误差确定;所述纵向位移允许误差为所述点ij+1在所述ST图中沿所述S轴正反方向允许产生的位移误差,所述点ij+1为点ij下一个时刻的点,所述点ij为所述n个点中除in外的任意一个点,所述一个时刻的时长为预设时长;
连接所述点ij和所述上检查点得到第一斜率,连接所述点ij和所述下检查点得到第二斜率;所述第一斜率和所述第二斜率用于表示所述点ij对应的路点的速度允许误差。
实施例五
如图21所示,本申请实施例提供一种轨迹规划装置2100,应用于自动驾驶车辆,所述装置2100包括:
接收模块2110,用于接收感知数据、定位数据和地图信息;
横向位移规划模块2130,用于根据所述感知数据、所述定位数据以及所述地图信息,得到所述自动驾驶车辆的初步行驶轨迹,所述初步行驶轨迹包含N个路点,其中,所述N个路点中的每个路点包括所述路点的第一路点信息,所述第一路点信息包括:所述路点的坐标和所述路点的横向允许误差,所述横向允许误差表示所述路点在横向位移上允许产生的误差值,N为大于1的正整数;
纵向速度规划模块2150,用于根据交通路况信息、所述感知数据和所述初步行驶轨迹,预测所述自动驾驶车辆分别在所述N个路点中的n个路点上的可行驶速度,得到目标行驶轨迹;所述目标行驶轨迹包含所述n个路点,其中,所述n个路点中的每个路点还包括所述路点的第二路点信息,所述第二路点信息包括:所述自动驾驶车辆在所述路点上的可行驶速度;其中,n为小于或等于N的正整数。
可选的,所述横向位移规划模块2130具体用于:
根据所述定位数据以及所述地图信息获取参考轨迹,所述参考轨迹包含R1个参考路点以及宽度约束,所述R1个参考路点位于所述自动驾驶车辆当前所在车道的中心线上或所述中心线的偏移线上,所述宽度约束用于在避障规划过程中约束各个所述参考路点基于所述参考路点的当前位置在横向位移上的偏移量,所述偏移线为偏移所述中心线预设范围的线;
根据所述感知数据,所述R1个参考路点以及所述宽度约束,对所述参考轨迹进行所述避障规划,生成一条避障轨迹,所述避障轨迹包含R2个避障路点,所述R2个避障路点中的每个避障路点包含所述避障路点的坐标;
根据横向允许误差的生成规则,确定所述R2个避障路点中各个避障路点分别对应的横向允许误差,从而得到所述初步行驶轨迹,其中,所述初步行驶轨迹包含的N个路点为所述R2个避障路点。
可选的,在所述生成一条避障轨迹之后,所述横向位移规划模块2130进一步用于:
对所述避障轨迹进行轨迹平滑处理,生成平滑轨迹,所述平滑轨迹包含所述R3个平滑路点,所述R3个平滑路点中的每个平滑路点包含所述平滑路点的坐标;
对应的,所述根据横向允许误差的生成规则,确定所述R2个避障路点中各个避障路点分别对应的横向允许误差,从而得到所述初步行驶轨迹,包括:
根据横向允许误差的生成规则,确定所述R3个平滑路点中各个平滑路点分别对应的横向允许误差,从而得到所述初步行驶轨迹,其中,所述初步行驶轨迹包含的N个路点为所述R3个平滑路点。
可选的,所述纵向速度规划模块2150具体用于:
根据所述感知数据,生成包含障碍物占据区域的ST图,所述ST图包含T(时间)轴和S(位移)轴,其中所述ST图包含相对位移随时间变化的规律,其中所述相对位移包括所述障碍物相对于所述自动驾驶车辆的位移;
根据预设算法和速度上限确定点ij在ST图中的位置;j从1依次取到n,生成一条避开所述障碍物占据区域的ST规划曲线,所述ST规划曲线包括从i1到in的n个点,所述n个点与所述n个路点一一对应,所述n个点在所述ST图中分别对应的S/T值,为所述自动驾驶车辆分别在所述n个路点上的可行驶速度;
其中,所述速度上限用于在生成所述ST规划曲线的过程中约束所述可行驶速度的取值范围,所述速度上限为根据所述交通路况信息和所述初步行驶轨迹得到的。
可选的,在所述根据预设算法和速度上限确定点ij在ST图中的位置之前,所述纵向速度规划模块2150还用于:
根据所述交通路况信息对所述n个路点中的每个路点进行速度规划,得到所述n个路点的第一速度约束;
根据所述n个路点中每个路点的横向允许误差,获取与所述n个路点的横向允许误差对应的n个路点的第二速度约束;
确定所述n个路点每个路点包含的多个速度约束中,值最小的一个速度约束为所述速度上限,其中,所述多个速度约束包括:所述第一速度约束和所述第二速度约束。
可选的,所述纵向速度规划模块2150还用于:
根据所述n个路点中的每个路点以及与所述每个路点相邻的x个路点,计算所述每个路点的曲率,其中x为大于0的正整数;
根据所述每个路点的曲率以及所述每个路点的最大允许侧向加速度,获取所述每个路点的第三速度约束;
其中,所述多个速度约束还包括:所述第三速度约束。
可选的,所述纵向速度规划模块2150具体用于:
根据所述ST图、所述ST规划曲线和所述速度上限,生成所述n个路点中每个路点的速度允许误差;
所述第二路点信息还包括:所述速度允许误差;其中,所述速度允许误差用于表示所述n个路点中每个路点在速度上允许产生的误差。
可选的,所述纵向速度规划模块2150具体用于:
在所述ST图中,对点ij+1沿S轴分别向上和向下生成上检查点和下检查点,所述上检查点和下检查点由所述点ij+1的纵向位移允许误差确定;所述纵向位移允许误差为所述点ij+1在所述ST图中沿所述S轴正反方向允许产生的位移误差,所述点ij+1为点ij下一个时刻的点,所述点ij为所述n个点中除in外的任意一个点,所述一个时刻的时长为预设时长;
连接所述点ij和所述上检查点得到第一斜率,连接所述点ij和所述下检查点得到第二斜率;所述第一斜率和所述第二斜率用于表示所述点ij对应的路点的速度允许误差。
实施例六
如图22所示轨迹规划装置2200可以以图22中的结构来实现,该障碍物避让装置2200包括至少一个处理器2210,至少一个存储器2230以及至少一个通信接口2250。所述处理器2210、所述存储器2230和所述通信接口2250通过所述通信总线连接并完成相互间的通信。
处理器2210可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
通信接口2250,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
存储器2230可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器2230用于存储执行以上方案的应用程序代码,并由处理器2210来控制执行。所述处理器2210用于执行所述存储器2230中存储的应用程序代码。
存储器2230存储的代码可执行以上提供的一种轨迹规划方法,包括:接收感知数据、定位数据和地图信息;
根据所述感知数据、所述定位数据以及所述地图信息,得到所述自动驾驶车辆的初步行驶轨迹,所述初步行驶轨迹包含N个路点,其中,所述N个路点中的每个路点包括所述路点的第一路点信息,所述第一路点信息包括:所述路点的坐标和所述路点的横向允许误差,所述横向允许误差表示所述路点在横向位移上允许产生的误差值,N为大于1的正整数;
根据交通路况信息、所述感知数据和所述初步行驶轨迹,预测所述自动驾驶车辆分别在所述N个路点中的n个路点上的可行驶速度,得到目标行驶轨迹;所述目标行驶轨迹包含所述n个路点,其中,所述n个路点中的每个路点还包括所述路点的第二路点信息,所述第二路点信息包括:所述自动驾驶车辆在所述路点上的可行驶速度;其中,n为小于或等于N的正整数。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。