一种高精度地图的构建方法及装置
技术领域
本申请实施例涉及智能交通技术领域,尤其涉及一种高精度地图的构建方法及装置。
背景技术
随着城市车辆的越来越多,交通也变得越来越拥挤,为了容纳日益增涨的车流量,城市道路的设计越来越复杂。普通导航地图能够满足用户在行驶过程中的简单导航要求,但是高精度地图能够通过精细道路信息来提供预警或者实现自动驾驶等交通业务。
高精度地图对信息的丰富度和精度的要求比较高。高精度地图提供了更多的道路细节信息,它可以提供一条路上每条车道的地理坐标信息,同时精度可以达到厘米级。高精度地图可以记录丰富的道路标志信息比如人行横道、天桥、红绿灯等。在路口区域,高精度地图也会根据实际的道路场景,生成许多车道级别的虚拟车道线,为汽车在路口行驶提供精确平滑的导航信息。
但是,目前高精度地图的制图成本比较高。相比较导航地图数据每公里1KB大小,高精地图每公里100MB,数据规模差异是10万倍,因此高精度地图的数据量也比较大,可能达到TB级以上,从而影响高精度地图的加载和使用效率。
发明内容
本申请实施例提供一种高精度地图的构建方法及装置,用以提高高精度地图的使用效率。
本申请实施例提供的具体技术方案如下:
第一方面,提供一种高精度地图的构建方法,该方法的执行主体可以是车辆,也可以是云端服务器。该方法的具体步骤包括:首先确定关键点,所述关键点可以用于描述车道属性变化的关键位置的信息;然后根据所述关键点的位置和所述关键点的属性,确定关键点图层;并根据导航地图和所述关键点图层,确定高精度地图,其中,所述导航地图用于提供道路级的导航信息,所述高精度地图用于提供车道级的导航信息。这样,本申请提供的高精度地图相比现有的高精度地图,很大程度上缩小了地图的复杂度,并有助于减小高精度地图的数据量及制作成本,在保证精度的基础上,有助于提高地图加载速率和使用效率。
在一个可能的设计中,所述关键点的类型包括以下一种或多种:车道的起止点、车道变换点或右转专用道起止点。本申请的关键点并不限于这几类,以上仅为关键点的类型的举例。关键点的这几个类型能够表现一些关键的驾驶场景的关键位置,从而提高本申请提供的地图的精度。
在一个可能的设计中,所述车道变换点包括以下一种或多种:车道由少变多产生的分叉点、车道由多变少产生的汇合点、高速路的驶出车道的分叉口、高速路驶入车道的汇合点。本设计对车道变换点进行了一些举例。
在一个可能的设计中,若车载相机拍摄的图像中连续N帧图像发生车道宽度变化、且所述N大于第一设定阈值,则确定所述N帧图像中存在所述关键点;确定所述关键点的地理坐标。关键点的地理坐标即关键点的位置。
在一个可能的设计中,所述N帧图像中的初始帧图像中,发生车道宽度变化的车道宽度小于第二设定阈值;或者,所述N帧图像中的结束帧图像中,发生车道宽度变化的车道宽度小于第三设定阈值。例如,第二设定阈值和第三设定阈值相同,都为1米。这样可以对帧图像做一个筛选。
在一个可能的设计中,所述方法还包括:针对所述N帧图像中的任一帧图像,确定第一变化值和第二变化值;若所述第一变化值和所述第二变化值中的较大值大于第四设定阈值,则确定所述任一帧图像发生车道宽度变化;其中,所述第一变化值为:所述任一帧图像中第一像素处的第一车道宽度、和所述任一帧图像中第二像素处的第二车道宽度之间的差值绝对值;所述第二变化值为:所述任一帧图像中第一像素处的第一车道宽度、和所述任一帧图像的前一帧图像中的第一像素处的第三车道宽度之间的差值绝对值。也可以将第一变化值和第二变化值中的一个值与第四设定阈值比较,来确定所述任一帧图像发生车道宽度变化。第一变化值和第二变化值中的一个值与第四设定阈值比较,来确定所述任一帧图像发生车道宽度变化,能够重复检查的方式对N帧图像进行粗选。
在一个可能的设计中,所述关键点的属性包括以下一种或多种:关键点的标识ID、关键点映射到所述导航地图的网格mesh的ID、关键点映射到所述导航地图中的道路的ID、关键点所在车道的序号或关键点的类型。
在一个可能的设计中,根据所述高精度地图,确定与车辆当前行驶的道路具有映射关系的关键点;根据所述关键点和路径规划意图,进行行驶。车辆在行驶过程中按照本申请实施例设计的高精度地图进行导航,在道路中部能够按照传统导航地图图层进行行驶,与现有高精度地图相比,避免了复杂冗余的导航操作。对换道和路口场景提供的详细的导航方案,操作简单、可行性高,对定位要求低。可以提供车道级的导航精度,能够满足自动驾驶的要求。
在一个可能的设计中,所述关键点包括第一关键点;根据所述关键点和路径规划意图,进行行驶,通过以下方式实现:确定所述第一关键点到所述道路的投影点;根据所述车辆行驶中的位置到所述投影点的距离,按照所述导航地图提供的道路级的导航信息,沿道路线行驶。将车辆定位需求进行了分解,S方向上使用全局定位,T方向上使用相对定位,全局定位相对定位相互耦合,有助于降低对自动驾驶定位系统的要求。
在一个可能的设计中,所述关键点还包括第二关键点;根据所述关键点和路径规划意图,进行行驶,通过以下方式实现:当所述车辆行驶中的位置到达所述投影点时,根据所述路径规划意图,进行换道;根据所述车辆行驶中的位置到所述第二关键点的距离,进行行驶。将车辆定位需求进行了分解,S方向上使用全局定位,T方向上使用相对定位,全局定位相对定位相互耦合,有助于降低对自动驾驶定位系统的要求。
在一个可能的设计中,所述关键点还包括第三关键点;根据所述关键点和路径规划意图,进行行驶,通过以下方式实现:确定所述车辆行驶中的位置到达所述第二关键点时,根据所述路径规划意图和虚拟车道线,通过路口;其中所述虚拟车道线由所述第二关键点和第三关键点确定。
第二方面,提供一种高精度地图的应用方法,该方法的执行主体可以是车辆,该方法主要通过以下步骤实现:根据所述高精度地图,确定与车辆当前行驶的道路具有映射关系的关键点,其中,所述高精度地图包括导航地图和关键点图层,所述导航地图用于提供道路级的导航信息,所述关键点图层包括所述关键点的位置和所述关键点的属性;根据所述关键点和路径规划意图,进行行驶。这样,可以提高高精度地图的加载速率和使用效率,能够更好的实现高精度地图在自动驾驶中的应用。
在一个可能的设计中,所述关键点包括第一关键点;根据所述关键点和路径规划意图,进行行驶,通过以下方式实现:确定所述第一关键点到所述道路的投影点;根据所述车辆行驶中的位置到所述投影点的距离,按照所述导航地图提供的道路级的导航信息,沿道路线行驶。将车辆定位需求进行了分解,S方向上使用全局定位,T方向上使用相对定位,全局定位相对定位相互耦合,有助于降低对自动驾驶定位系统的要求。
在一个可能的设计中,所述关键点还包括第二关键点;根据所述关键点和路径规划意图,进行行驶,通过以下方式实现:当所述车辆行驶中的位置到达所述投影点时,根据所述路径规划意图,进行换道;根据所述车辆行驶中的位置到所述第二关键点的距离,进行行驶。将车辆定位需求进行了分解,S方向上使用全局定位,T方向上使用相对定位,全局定位相对定位相互耦合,有助于降低对自动驾驶定位系统的要求。
在一个可能的设计中,所述关键点还包括第三关键点;根据所述关键点和路径规划意图,进行行驶,通过以下方式实现:确定所述车辆行驶中的位置到达所述第二关键点时,根据所述路径规划意图和虚拟车道线,通过路口;其中所述虚拟车道线由所述第二关键点和第三关键点确定。
第三方面,提供一种高精度地图的构建装置,该装置具有实现上述第一方面和第一方面的任一种可能的设计的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
可选的,所述高精度地图的构建装置可以是芯片或者集成电路。
在一个可能的设计中,当所述功能的部分或全部通过软件实现时,所述高精度地图的构建装置包括:处理器,用于执行程序,当所述程序被执行时,所述高精度地图的构建装置可以实现如上述第一方面和第一方面的任一种可能的设计中所述的方法。可选的,还包括存储器,用于存储所述处理器执行的程序。
可选的,上述存储器可以是物理上独立的单元,也可以与处理器集成在一起。
在一个可能的设计中,当所述功能的部分或全部通过软件实现时,所述高精度地图的构建装置包括处理器。用于存储程序的存储器位于所述高精度地图的构建装置之外,处理器通过电路/电线与存储器连接,用于读取并执行所述存储器中存储的程序。
第四方面,提供一种高精度地图的应用装置,该装置具有实现上述第二方面和第二方面的任一种可能的设计的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。该高精度地图的应用装置也可以称为高精度地图的构建装置,具体实施例参见说明书对高精度地图的应用装置1500/1600的描述。
可选的,所述高精度地图的应用装置可以是芯片或者集成电路。
在一个可能的设计中,当所述功能的部分或全部通过软件实现时,所述高精度地图的应用装置包括:处理器,用于执行程序,当所述程序被执行时,所述高精度地图的应用装置可以实现如上述第二方面和第二方面的任一种可能的设计中所述的方法。可选的,还包括存储器,用于存储所述处理器执行的程序。
可选的,上述存储器可以是物理上独立的单元,也可以与处理器集成在一起。
在一个可能的设计中,当所述功能的部分或全部通过软件实现时,所述高精度地图的应用装置包括处理器。用于存储程序的存储器位于所述高精度地图的应用装置之外,处理器通过电路/电线与存储器连接,用于读取并执行所述存储器中存储的程序。
第五方面,提供了一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述各方面的方法的指令。
第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
附图说明
图1为本申请实施例中高精度地图的架构示意图;
图2a为现有技术中传统导航地图示意图;
图2b为本申请实施例中高精度地图的示意图;
图2c为现有技术中高精度地图的示意图;
图3为本申请实施例中高精度地图的构建方法流程示意图之一;
图4a为本申请实施例中直行的虚拟车道线的控制点示意图;
图4b为本申请实施例中转弯的虚拟车道线的控制点示意图;
图4c为本申请实施例中高精度地图的实现效果示意图;
图5为本申请实施例中车道变换点的位置确定方法示意图;
图6为本申请实施例中计算车道变换点的位置的示意图;
图7为本申请实施例中道路分区的示意图;
图8a为本申请实施例中道路中部车道变换点示意图;
图8b为本申请实施例中道路两端车道变换点示意图;
图8c为本申请实施例中路口车道变换点和虚拟车道线示意图;
图9a为本申请实施例中车道由多变少关键点示意图;
图9b为本申请实施例中车道由少变多关键点示意图;
图9c为本申请实施例中车道分叉点示意图;
图9d为本申请实施例中车道汇合点示意图;
图9e为本申请实施例中车道起始点示意图;
图9f为本申请实施例中车道终止点示意图;
图9g为本申请实施例中右转专用道起始点示意图;
图9h为本申请实施例中右转专用道终止点示意图;
图10为本申请实施例中高精度地图的构建方法流程示意图之二;
图11为本申请实施例中高精度地图的应用方法流程示意图;
图12为本申请实施例中高精度地图的应用示意图;
图13a为本申请实施例中a阶段高精度地图的应用示意图;
图13b为本申请实施例中b阶段高精度地图的应用示意图;
图13c为本申请实施例中c阶段高精度地图的应用示意图;
图14a为本申请实施例中a阶段高精度地图的应用方法流程示意图;
图14b为本申请实施例中b阶段高精度地图的应用方法流程示意图;
图14c为本申请实施例中c阶段高精度地图的应用方法流程示意图;
图15为本申请实施例中高精度地图的构建装置结构示意图之一;
图16为本申请实施例中高精度地图的构建装置结构示意图之二。
具体实施方式
下面将结合附图,对本申请实施例进行详细描述。
本申请实施例提供的高精度地图的构建及应用方法,可以用于智能交通系统中。智能交通系统中的车辆可以应用高精度地图实现交通业务。本申请实施例所述的交通业务可以是各种自动驾驶、辅助驾驶的业务,例如:路径规划、为人工驾驶提供行驶风险预警。以上交通业务仅是举例,本申请实施例提供的高精地图的构建及应用方法,为车辆与其他装置的通讯(vehicle to x,V2X)业务快速上线及持续更新提供了技术准备,V2X如车车通讯(vehicle to vehicle,V2V)、车路通讯(vehicle to installation,V2I)。
下面详细介绍一下本申请实施例提供的高精度地图的构建及应用方法。
如图1所示,本申请实施例设计的高精度地图是在传统的导航地图的基础上,增加关键点图层,构建一种成本较低且复杂度较低的高精度地图。为进一步提高地图的精度,还可以在导航地图上再添加虚拟车道线(virtual lane)图层。
如图2a所示,为传统的导航地图的示意图。导航地图为传统的导航地图,相对于高精度地图来说,传统的导航地图只能提供道路级的导航信息。导航地图可以为用户提供导航信息,满足开车路线的导航需求。例如,导航地图可以提供当前道路有几条车道、限速信息、转弯信息、路线规划等导航信息。
关键点是指用于描述道路关键信息的节点,或者是指用于描述车道属性变化的关键位置的信息。例如对于自动驾驶来说比较关键的场景中的信息。一般在路口或者变道的场景中存在关键点。关键点的类型可以但不限于包括以下任意一种或多种:车道的起止点、车道变换点或右转专用道起止点。其中,车道的起止点包括车道的起始点和车道的终止点。车道起止点包括一条道路上的若干条车道线的起始点与终止点。车道的起始点是车道的起始线上的点,车道的终止点是车道的停止线上的点。一般来说,实际应用中车道的起始线与逆向车道的停止线在一条直线上。车道变换点可以是有些道路快到路口时增设的转弯车道而产生的分叉点,也可以是通过路口进入一条新路车道减少一个而产生的汇合点,还可以是高速路/高架桥的驶出车道的分叉口,或高速路/高架桥的驶入车道的汇合点。综上,车道变换点可以但不限于包括以下任意一种或多种:车道由少变多产生的分叉点、车道由多变少产生的汇合点、高速路(和/或高架桥)的驶出车道的分叉口、高速路(和/或高架桥)驶入车道的汇合点。右转专用车道起止点包括右转专用道的车道线(或车道线的延长线)与连接的两条车道线的起始交点和终止交点。需要说明的是,关键点含义可引申为任何工况下的车道信息变化点,关键点类型的各个举例仅为示例性的,关键点的类型还可以包括其他类型,或者还可以为其他类型,本申请不作限定。
如图2b所示,为在传统的导航地图的基础上,添加关键点图层。关键点在图2b中用较大的实心圆点示意。可选的,为更进一步提高地图的精度,还可以在导航地图上再添加virtual lane图层。虚拟车道线用于指示路口区域内的行驶路线,是连接驶入、驶出路口车道的虚拟曲线,还可以认为是车辆在路口区域内行驶的参考轨迹线。关键点图层为车辆在行驶的关键场景提供了精确的指示。例如,在路口或车道变换的场景。典型的路口场景就是城市十字路口、丁字路口、五边型路口等。
本申请提供的高精度地图,相比图2c所示的现有的高精度地图来说,很大程度上缩小了地图的复杂度、数据量及制作成本,在保证精度的基础上,有助于提高加载和使用效率。
如图3所示,本申请提供的高精度地图的构建方法的具体步骤如下所述。本申请提供的高精度地图的构建方法的执行主体可以是车辆,也可以是云端的服务器。例如由车辆来采集关键点的位置和属性等信息,并发送到云端,由云端服务器来确定关键点并构建高精度地图。对高精度地图的更新方式也可以由车辆或云端的服务器来执行。
S301、确定关键点。
其中,关键点用于描述车道属性变化的关键位置的信息。
S302、根据关键点的位置和关键点的属性,确定关键点图层。
具体的,关键点的位置是指关键点在全球定位系统(global positioningsystem,GPS)坐标系中的点坐标值,是关键点的地理坐标。确定关键点的位置的方法有很多种。例如,可以用人工标注的方法对每个关键点的位置进行采集。可选的,对于右转专用道起止点和车道起止点可以用这种方式确定位置。本申请实施例中还可以采用一种双目视觉结合GPS的自动化采集关键点位置的方法,这种方法将在下文中详细介绍。
关键点的属性包括以下一种或多种:关键点(node)的标识ID、关键点映射到导航地图的网格mesh的ID、关键点映射到导航地图中的道路的ID、关键点所在车道的序号或关键点的类型。关键点的属性用于描述关键点图层与传统的导航地图之间的联系。关键点的属性(或者说关键点图层的属性)可以用表1来表示。
表1
如表1所示,关键点的标识(node_ID)用于指示关键点全局唯一的ID,用于区分不同的关键点。ID也可以记为id。node_ID是自动生成的标识。网格标识(mesh_ID)用于指示关键点映射到传统的导航地图的网格的ID,用于区分不同的网格,以及用于将关键点与导航地图的网格建立映射关系。mesh_ID来源于传统的导航地图中道路线的属性。其中,网格是传统导航地图中的一种属性,用于确定导航地图中的位置。道路标识(road_ID)用于指示关键点映射到传统的导航地图的道路的ID,用于区分不同的道路,以及用于将关键点与导航地图的道路建议映射关系。road_ID来源于传统的导航地图中道路线的属性。车道序号或车道线序号(lane_num)用于指示关键点所在的车道的序号,用于区分不同的车道线。例如,对于双向道路,包括正向和逆向车道。可以用序号[-n...-1]表示逆向第n个车道-逆向第1个车道,[0]表示中心车道线,序号[1...n]表示正向第1个车道-正向第n个车道。对于单向道路,可以用序号[0...n]表示正向第0个车道-正向第n个车道。关键点的类型包括关键点的类型1(node_type)和关键点的类型2(node_type_2)。关键点的类型1包括车道变换点、车道起止点和右转专用道起止点。不同的类型用不同的序号、索引号或ID来指示。例如,可以用0来表示车道变换点,用1来表示车道起止点,用2来指示右转专用道起止点。关键点的类型2是对关键点的类型1的进一步细化。可以用不同的序号、索引号或ID来进一步指示关键点的类型1。例如,用-1来表示车道变换点子类型为车道由多变少。用1来表示车道变换点子类型为车道由少变多。用-1来表示车道起止点子类型为车道起点。用1来表示车道起止点子类型为车道终止点。用-1来表示右转专用道起止点子类型为右转专用道起点,用1来表示右转专用道起止点子类型为右转专用道终止点。lane_num、node_type和node_type_2是在确定关键点的位置时获得的。
其中,关键点的各个属性的类型为int,int是将一个数值向下取整为最接近的整数的函数。
关键点属性取值的举例和关键点类型的举例可以参考下文中的表3和表4的描述。
S303、根据导航地图和关键点图层,确定高精度地图。
导航地图可以用于提供道路级的导航信息,高精度地图可以用于提供车道级的导航信息。
根据关键点的位置和关键点的属性,将关键点的ID打包,并结合关键点的自有属性,和关键点与导航地图图层的映射关系或者关联信息,生成关键点图层。
在传统的导航地图的图层上,增加关键点图层。叠加关键点图层后的地图利用关键点图层,能够为车辆提供比传统的导航地图精度更高的服务,但是比现有的高精度地图能够更精简,复杂度更低。为了更进一步提高叠加关键点图层的地图的精度,还可以再添加虚拟车道线图层。
路口区域一般未设置车道线,本申请实施例的高精度地图针对路口区域叠加虚拟车道线图层,虚拟车道线用于指示符合交通规则的车道变换。虚拟车道线的一端连接驶出车道的车道终止点,另一端连接驶入车道的车道起始点。车道终止点和车道起始点是关键点图层中的关键点。这样虚拟车道线图层与关键点图层建立联系。根据关键点图层的车道起止点生成虚拟车道线。可选的,为了使虚拟车道线更加平滑,在导航车辆行驶时更加平稳,可以使用三阶贝塞尔曲线来作为虚拟车道线。其中,三阶贝塞尔曲线在生成时需要一个控制点。虚拟车道线为路口区域指导车辆行驶的路线。如图4a所示,对于直行的虚拟车道线,选择两个关键点的连线的中点作为控制点,生成的贝塞尔曲线是直线。如图4b所示,对于拐弯的虚拟车道线,选择驶入和驶出两条车道的延长线的交点作为控制点,生成的贝塞尔曲线是在两条车道夹角内的润滑的曲线。当然,虚拟车道线还可以使用其他曲线类型,上述仅以三阶贝塞尔曲线为例进行说明。
将虚拟车道线的ID打包,并结合虚拟车道线的自有属性,和虚拟车道线与关键点的关联信息以及虚拟车道线与导航地图图层的映射关系,生成虚拟车道线图层。虚拟车道线的图层的属性如表2所示。
表2
如表2所示,虚拟车道线的ID为虚拟车道线全局唯一的ID,可以是自动生成的。s_node_id用于表示虚拟车道线相关联的关键点的ID,具体为车道起始点。p_node_id用于表示虚拟车道线相关联的关键点的ID,具体为车道终止点。
高精度地图可以以地图文件(shapefile)的形式进行存储,其中,Shapefile是一种空间数据开放格式,是描述空间数据的几何和属性特征,用于存储地理要素的文件。关键点图层的shapefile主要由上述得到的关键点图层的信息组成,包括几何信息和属性信息。其中,几何信息即关键点的空间坐标,即关键点的位置。属性信息即关键点图层的关键点属性的信息。虚拟车道线图层的shapefile主要由上述得到的虚拟车道线图层的信息组成,包括几何信息和属性信息。其中几何信息为虚拟车道线各个控制点的空间坐标,属性信息为表2所示的虚拟车道线的属性信息。
本申请实施例可以使用地理空间数据抽象库(geospatial data abstractionlibrary,GDAL)将各个图层的地理信息(包括位置)和属性信息生成shapefile。GDAL是一种开源栅格空间数据转换库,用于进行数据转换和处理。
最终生成的shapefile如图4c所示,示出了上海某桥处的高精度地图以及放大的A路和B路之间路口的局部地图。其中,底层为传统的导航地图,实心点为关键点图层,路口处的线为虚拟车道线图层。
下面介绍一下本申请实施例提供的一种双目视觉结合GPS的自动化采集关键点位置的方法,这种方法可以用于确定关键的点的位置。
车载相机以帧为单位获取图像,若车载相机拍摄的图像中连续N帧图像发生车道宽度变化、且N大于第一设定阈值,则确定这N帧图像中存在关键点,确定关键点的地理坐标。例如,N值可以取20。车道宽度发生变化表示车道即将消失或新增车道,也就是将会出现车道变换点,例如车道由多变少产生的汇合点、车道由少变多产生的分叉点、高速路的驶出车道的分叉口或高速路驶入车道的汇合点。设置第一设定阈值的目的在于避免误判,若N不大于第一设定阈值,则认为当前连续N帧图像发生车道宽度变化为误检。
该N帧图像中的初始帧图像中,发生车道宽度变化的车道宽度小于第二设定阈值,例如第二设定阈值为1米;或者,该N帧图像中的结束帧图像中,发生车道宽度变化的车道宽度小于第三设定阈值。第三设定阈值可以跟第二设定阈值相同或不同,例如第三设定阈值也设置为1米。例如,结合具体的应用场景,假设车道宽度发生变化的情况为车道即将消失,则该N帧图像中的结束帧图像中,发生车道宽度变化的车道宽度小于第三设定阈值。假设车道宽度发生变化的情况为新增车道,则该N帧图像中的初始帧图像中,发生车道宽度变化的车道宽度小于第二设定阈值。
其中,确定任一帧图像发生车道宽度变化可以采用以下方法。针对该N帧图像中的任一帧图像,确定第一变化值和第二变化值,若第一变化值和第二变化值中的较大值大于第四设定阈值,则确定该任一帧图像发生车道宽度变化;其中,第一变化值为:该任一帧图像中第一像素处的第一车道宽度、和任一帧图像中第二像素处的第二车道宽度之间的差值绝对值;该第二变化值为:该任一帧图像中第一像素处的第一车道宽度、和该任一帧图像的前一帧图像中的第一像素处的第三车道宽度之间的差值绝对值。
如图5所示,一种可能的实现方式中,双目视觉结合GPS的自动化采集关键点位置的方法的具体步骤如下所述。以下叙述中可以结合图6所示的示意图进行说明。
S501、初始化参数设置。
设图像帧数N=0,N表示连续发生车道宽度变化的帧数。
S502、读取双目图像。
车载相机拍摄图像,根据车载相机传感器接口,以帧为单位按序读取双目图像。
S503、识别车道线。
以左目相机作为主相机,对主相机拍摄的图像按照机器学习的方法进行分析,识别出图像中车辆所在车道的左右边线。如图6中的虚线所示,为车辆识别的车道的左右边线,即车道线。
S504、选取当前帧,计算当前帧图像中车道宽度变化的第一变化值|d1|。
第一变化值为:当前帧图像中第一像素处的第一车道宽度、和当前帧图像中第二像素处的第二车道宽度之间的差值绝对值。
如图6所示,当前帧图像中包括的三条车道Lane1、Lane2和Lane3。假设第一像素为700px,第二像素为600px。针对Lane1、Lane2和Lane3,分别计算图像纵坐标700px和600px处车道线上像素点的横向距离,例如用S00、S01、S10、S11、S20和S21表示。该距离为车体坐标系下像素点对应的实际地面点之间的距离。图像像素坐标到车体坐标系坐标的转换可由相机内参、外参计算而得,在此不作详述。d1=max{S00-S01,S10-S11,S20-S21},表示当前帧中宽度变化最大车道的变化值。以图6为例,|d1|=|S20-S21|。
S505、计算当前帧与前一帧相比的车道宽度变化的第二变化值|d2|。
第二变化值为:当前帧图像中第一像素处的第一车道宽度、和当前帧图像的前一帧图像中的第一像素处的第三车道宽度之间的差值绝对值。
仍以图6为例,针对Lane1、Lane2和Lane3,当前帧图像中第一像素处,车道线上像素点的横向距离为S00、S10和S20。针对Lane1、Lane2和Lane3,假设当前帧图像的前一帧图像中第一像素处,即纵坐标700px处,车道线上像素点的横向距离为S00’、S10’、S20’,那么,d2=max{S00’-S00,S10’-S10,S20’-S20},表示宽度变化最大车道前后帧相比的车道宽度变化的第二变化值。|d2|=|S20’-S20|。
S504和S505没有严格的先后顺序。
S506、根据第一变化值和第二变化值,判断是否当前帧是否发生车道宽度变化。
若|d1|,|d2|的最大值大于设定第四设定阈值e1,则确定当前帧图像发生车道宽度变化,即当前帧中可能包含车道变化点。
例如,第四设定阈值可以取2倍标准车道油漆线宽度,e1=2*0.15m=0.3m。
若确定当前帧发生车道宽度变化,令N=N+1,返回继续执行S402。读取下一帧图像按照相同方式进行处理。若|d1|,|d2|的最大值不大于设定第四设定阈值e1,则继续执行S507。
S507、判断N值是否大于第一设定阈值e2。
如果N大于第一设定阈值e2,则说明连续出现车道宽度变化的帧数大于第一设定阈值,那么确定连续的N帧图像中存在关键点,否则返回执行S501。
S508、对连续N帧图像中出现的所有可能的发生车道变化的车道进行过滤。
若车道是新增的车道,则N帧图像中的初始帧中车道的开始距离S20应小于第二设定阈值,例如小于1m,否则过滤掉。如图6中Lane1,Lane2,Lane3被过滤掉,不是新增车道。若车道是即将消失的车道,则N帧图像中最后帧的车道的最终距离应大于第三设定阈值,例如大于1m,否则过滤掉。如图6中,Lane1,Lane2被过滤掉,Lane3是即将消失车道。经过过滤,图6所示的例子将会得到唯一的一个被选择的车道Lane3。
获取被选择的车道相关联的信息,包括:车道编号、车道由少变多(新增车道)、车道由多变少(消失车道)等信息。将这些信息记录到关键点的lane_num、node_type、node_type_2属性中。
S509、基于发生车道宽度变化的车道,拟合左右车道多项式曲线。
以图6为例,将Lane3的左右车道线的像素坐标点转换为车体坐标系下像素点对应的实际地面点,基于这些点进行多项式曲线拟合,得到两个多项式曲线C0,C1。
S510、确定两个多项式曲线C0和C1的交点P,获取交点P的地理坐标。
交点P即为关键点,即车道多变少的车道变换点。从而获得关键点P的位置以及上述提到的关键点的lane_num、node_type、node_type_2等属性。
以上为本申请实施例提供的高精度地图的构建方法的具体过程。
基于上述提供的高精度地图的构建方法,下面结合具体的应用场景,对本申请实施例提供的高精度地图的构建方法中的细节做进一步详细说明。
为方便说明,如图7所示,本申请实施例对道路的区域进行划分。针对一般的道路交通环境,道路均可划分为A、B和C三个区域。其中A区域表示道路中部,B区域表示道路两端,C区域表示路口区域。道路两端是指接近于路口的区域,可以根据实际经验进行划分。
基于图7所示的道路区域的划分以及基于表1对各个关键点属性的定义,各个区域的关键点和虚拟车道线的属性等信息如表3所示。
表3
表3示出了关键点P1~P43的位置和属性举例。其中,关键点位置为关键点在世界坐标系下的坐标值,包括经纬度,即关键点的位置,可以采用上述提供的方法来确定关键的位置。例如,关键点P1的经度为121.623175,维度为31.247183。P1的node_id为99900001,mesh_id为10013213,road_id为10100012,lane_num为3,node_type为2,node_type_2为-1。从图8c还可以看出,每一条虚拟车道线与至少两个关键点具有映射关系。
如上文描述,关键点的类型包括车道变换点、车道起止点和右转专用道起止点。如表3所示,为各个类型的关键点的含义和示意图的表述如下。
表4
基于上述描述,当高精度地图包括导航地图图层、关键点图层和虚拟车道线图层时,图10示出了一种可选的实现方式中高精度地图的构建方法的流程示意图。
S1001、选取关键点。
S1002、计算关键点的位置。
S1003、生成关键点图层属性。
S1004、读取路口区域出入车道的关键点。
例如出入路口的车道起止点。
S1005、计算贝赛尔曲线控制点。
S1006、生成虚拟车道线图层属性。
S1007、基于关键点图层属性和虚拟车道线图层属性,生成地图文件(shapefile)。
综上,本申请实施例提供的高精度地图的构建方法介绍完毕。本申请实施例中,并非像现有高精度地图对每条道路上所有车道线都做描述,针对车辆驾驶中的例如路口、车道变换点等需要注意的场景,选择关键点,并确定关键点的位置和属性,将关键点嵌入到导航地图中,可以将地图用于框正自动驾驶在这些特殊场景的行为,并且用关键点代替完整车道线信息,这样可以有助于减少地图的数据量。进一步的,针对路口导航地图信息缺失的缺陷,本申请实施例根据符合交通规则的车辆行驶行为,生成一系列的虚拟车道线。通过本申请实施例的设计,可将高精度地图每公里数据量缩小至1/105以内。由于数据量缩小,制作成本也随之降低。
基于上文提供的高精度地图的构建方法,如图11所示,下面介绍一下高精度地图的应用方法。该方法的执行主体可以是车辆。
S1101、根据高精度地图,确定与车辆当前行驶的道路具有映射关系的关键点。
高精度地图包括导航地图和关键点图层,导航地图用于提供道路级的导航信息,关键点图层包括关键点的位置和关键点的属性。其余关于高精度地图的描述参见上文,在此不再赘述。
S1102、根据关键点和路径规划意图,进行行驶。
关键点可以包括一个或多个关键点,例如当有多个关键点时,可以用第一关键点、第二关键点等来表示。详细来说,车辆正常行驶在一条道路的中间阶段时,除了偶尔变道,大部分在一条车道上平稳行驶,在这个阶段,可以使用传统的导航地图进行导航。确定第一关键点到道路的投影点,根据车辆行驶中的位置到投影点的距离,按照导航地图提供的道路级的导航信息,沿道路线行驶。当车辆快行驶到路口时,可以根据关键点图层进行换道。具体的,当车辆行驶中的位置到达投影点时,根据路径规划意图,进行换道。然后根据关键点和虚拟车道线通过路口。具体的,根据车辆行驶中的位置到第二关键点的距离,进行行驶。确定车辆行驶中的位置到达第二关键点时,根据路径规划意图和虚拟车道线,通过路口。其中,虚拟车道线由第二关键点和第三关键点确定。
下面结合具体的应用场景对本申请提供的高精度地图的应用方法做进一步详细说明。
高精度地图可以应用于自动驾驶的场景中。如图12所示,为自动驾驶车辆利用高精度地图通过路口的过程示意图。
基于图7对道路区域的划分,道路均可划分为A、B和C三个区域。表3示出了三个区域中关键点的属性。对应的,车辆通过图12所示的道路可以分为三个阶段,a、b和c阶段。a阶段为车辆在A区域即道路中部正常行驶的阶段,b阶段为B区域即道路两端行驶的阶段,c阶段为车辆在C区域即路口区域行驶的阶段。车辆在a阶段可以在当前道路平稳向前行驶,车辆在b阶段可以在进入路口前根据规划的路线换到相应车道上,车辆在c阶段可以通过路口进入下一条道路。在下一条道路可以继续完成上述三个阶段中的至少一个,直到到达目的地。
下面对图12所示的应用高精度地图行驶的过程进行分解介绍,可按照a、b和c三个阶段进行介绍。
首先定义道路坐标系,沿着导航地图道路线向前为S轴,垂直于S轴指向左侧为T轴。
图13a示出了车辆在a阶段导航的示意图,结合图13a,参照图14a所示,车辆应用高精度地图的方法如下所述。
S1401a、车辆根据高精度地图查找当前行驶的道路是否有关联的车道变换关键点。
车辆按照高精度地图中的导航地图图层进行导航,在a阶段平稳行驶。车道变换关键点即类型为车道变换点的关键点。高精度地图的关键点图层属性中关键点的属性包括关键点关联的道路,车辆可以通过高精度地图查询到当前行驶的道路是否有关联的车道变换点。车辆当前的行驶位置如图13a中的V所示,车辆查询高精度地图,根据导航地图图层将当前的行驶位置匹配到导航地图图层的道路线L,道路线L也可以称为道路L,是属于导航地图图层的属性。根据高精度地图中道路L的road_id,确定与道路L相关联的车道变换点K5。即确定了车道变换点K5的位置和属性。车道变换点K5对应于上述第一关键点。车道变换点意味着车辆在a阶段行驶到b阶段行驶的切换。
S1402a、关键点到道路线L做投影,确定当前行驶位置到投影点的距离。
车辆需要关注行驶到b阶段的时机,即需要计算当前行驶位置到车道变换点的距离。车道变换点K5到道路线L做投影,得到投影点P。通过计算当前行驶位置到投影点P的距离来体现当前行驶位置到车道变换点K5的距离。
例如,在S轴和T轴的坐标系下,车道变换点K的坐标为x0和y0,已知导航地图图层道路线L的直线方程y=kx+b,计算投影点P坐标x1、y1的方法如下:
求点K5的投影P的坐标,即是求过点K(x0,y0)的直线l垂直于直线L的交点M。由于两条直线相互垂直,则有:k’k=-1,则过K点的直线l为:y-y1=-k’(x-x0)=-k-1(x-x0),两条直线的交点即点K5在直线L的投影坐标P(x1,y1)的计算公式为公式(1)。
沿着S方向计算当前车辆V的GPS位置距离投影点P的距离ds。
如果当前行驶的道路没有关联的车道变换关键点,则查询地图得到当前行驶的道路的所有终止关键点。终止关键点即类型为车道终止点的关键点。将这些终止关键点到道路线L做投影,取在S方向上车辆V的位置距离最小的投影点作为参考点,然后沿着S方向计算当前车辆V的GPS位置距离参考点的距离ds。
S1403a、在T方向上,计算当前车辆V距离车道左边路边沿L0的距离s0。
具体的,可以使用毫米波雷达计算当前车V距离车道左边路边沿L0的距离s0。
查询地图得到当前道路的车道总数,如图13a所示,当前行驶道路共2条车道,根据导航地图中记录的道路宽度s,计算得1/2<s0/s<1,从而推测当前车辆V在左侧第2条车道上。
S1404a、使用视觉识别车辆V当前所处的车道的左右车道线l3和l4,使用双目立体视觉测距的方法计算当前车辆V距离左侧车道线的距离dt。
在这一阶段,车辆沿着当前车道以及所测得的dt平稳行驶,或者根据自己所处车道信息向邻近车道进行变换,根据ds的大小判断是否即将进入b阶段。
当ds接近于0时,表示车辆V进入b阶段。
图13b示出了车辆V在b阶段导航的示意图,结合图13b,参照图14b所示,车辆应用高精度地图的方法如下所述。
S1401b、根据车辆路径规划意图,进行换道。
路径规划意图包括直行、左转和右转。通过查询地图,判断在b阶段有几条车道、进入b阶段时车辆V处于哪一条车道以及要进入到哪一条车道。结合视觉车道线识别,指导车辆进行换到相应的车道上。如图13b所示,查询地图得到b阶段共有3条车道,用车道1、车道2和车道3表示。其中车道1左转,车道2直行,车道3右转。当前车辆V(实线框所示)在a阶段尾段时刻(即t0时刻)处于b阶段的车道3。假设车辆路径规划意图为左转,利用视觉车道线识别输入的车道线l2和l3,引导车辆V跨越这两条车道线到达图13b中车道1上车辆V(虚线框所示)的位置,到达虚线框所示位置时位于t1时刻。
S1402b、t1时刻换道完成之后,查询地图得到车辆V(虚线框所示)所在车道左侧车道线l1对应的终止关键点K1,计算车辆行驶方向上车辆V的GPS位置距离该点的距离ds’。并使用视觉识别车辆当前所处的车道的左右车道线l1和l2,使用双目立体视觉测距的方法计算车辆V(虚线框)距离左侧车道线l1的距离dt’。
S1403b、车辆V根据ds和dt,在车道1行驶,直到行驶到车道停止线L,b阶段结束。
车道行驶线L包括4个关键点,为车道终止点,图13b中用K1、K2、K3和K4表示。
图13c示出了车辆V在c阶段导航的示意图,结合图13c,参照图14c所示,车辆应用高精度地图的方法如下所述。
S1401c、在离开b阶段进入c阶段的时刻,即t0时刻,根据车辆V(实线框)驶出b阶段前所处车道的左边车道线对应的终止关键点K1,以及车辆的路径规划意图,查询地图得到相应的虚拟车道线。例如,如图13c所示,车辆的路径规划意图为左转后的车道1,查询高精度地图,根据关键点图层和虚拟车道线图层,得到虚拟车道线l0。
S1402c、根据虚拟车道线l0的s_node_id、p_node_id属性得到起始关键点和终止关键点。
如图13c所示起始关键点为K1,终止关键点为K5。结合虚拟车道线l0的控制点的空间坐标,生成一条三阶贝塞尔曲线,并离散化起止点之间的贝塞尔曲线,得到一个离散的点集P={p1,p2,…,p9}。
S1403c、利用该点集P,结合车辆V的定位,逐次以点集P中的点为目标点,引导车辆V平稳通过路口,到达图13c所示的t1时刻车辆位置,进入下一条路,c阶段结束。
至此,本申请实施例提供的高精度地图的应用方法介绍完毕。车辆在行驶过程中按照本申请实施例设计的高精度地图进行导航,在道路中部能够按照传统导航地图图层进行行驶,与现有高精度地图相比,避免了复杂冗余的导航操作。对换道和路口场景提供的详细的导航方案,操作简单、可行性高,对定位要求低。可以提供车道级的导航精度,能够满足自动驾驶的要求。将车辆定位需求进行了分解,S方向上使用全局定位,T方向上使用相对定位,全局定位相对定位相互耦合,有助于降低对自动驾驶定位系统的要求。总之,本申请实施例提供的高精度地图相比现有的高精度地图,降低了制造成本和数据规模,相比传统导航地图,提高了精度,导航更加精准。
基于上述方法实施例的同一发明构思,如图15所示,本申请实施例还提供了一种高精度地图的构建装置1500,该高精度地图的构建装置1500用于执行上述方法实施例所描述的方法。该高精度地图的构建装置1500包括确定单元1501和生成单元1502。
确定单元1501,用于确定关键点。
关键点用于描述车道属性变化的关键位置的信息;
确定单元1501,还用于根据关键点的位置和关键点的属性,确定关键点图层。
构建单元1502,用于根据导航地图和关键点图层,确定高精度地图。
其中,导航地图用于提供道路级的导航信息,高精度地图用于提供车道级的导航信息。
确定单元1501还用于:若车载相机拍摄的图像中连续N帧图像发生车道宽度变化、且N大于第一设定阈值,则确定N帧图像中存在关键点;确定关键点的地理坐标。
确定单元1501还用于:针对N帧图像中的任一帧图像,确定第一变化值和第二变化值;若第一变化值和第二变化值中的较大值大于第四设定阈值,则确定任一帧图像发生车道宽度变化;其中,第一变化值为:任一帧图像中第一像素处的第一车道宽度、和任一帧图像中第二像素处的第二车道宽度之间的差值绝对值;第二变化值为:任一帧图像中第一像素处的第一车道宽度、和任一帧图像的前一帧图像中的第一像素处的第三车道宽度之间的差值绝对值。
该高精度地图的构建装置1500还包括行驶单元1503,用于:根据高精度地图,确定与车辆当前行驶的道路具有映射关系的关键点;根据关键点和路径规划意图,进行行驶。
关键点包括第一关键点;行驶单元1503用于:确定第一关键点到道路的投影点;
根据车辆行驶中的位置到投影点的距离,按照导航地图提供的道路级的导航信息,沿道路线行驶。
关键点还包括第二关键点;行驶单元1503用于:当车辆行驶中的位置到达投影点时,根据路径规划意图,进行换道;根据车辆行驶中的位置到第二关键点的距离,进行行驶。
关键点还包括第三关键点;行驶单元1503用于:确定车辆行驶中的位置到达第二关键点时,根据路径规划意图和虚拟车道线,通过路口;其中虚拟车道线由第二关键点和第三关键点确定。
该高精度地图的构建装置1500中包括的各个单元的划分仅为示例性的,还可以进行其他单元或模块的划分,单元的命名也为示例性的。各个单元还可以执行上述方法实施例中各种细节描述,重复之处在此不再赘述。
基于上述方法实施例的同一发明构思,如图16所示,本申请实施例还提供了一种高精度地图的构建装置1600,该高精度地图的构建装置1600用于执行上述方法实施例所描述的方法。该高精度地图的构建装置1600包括处理器1601和存储器1602。存储器1602用于存储一组代码,处理器1601用于调用存储器1602存储的代码,当代码被执行时,使得高精度地图的构建装置1600执行上述方法实施例描述的方法。
处理器1601可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。
处理器1601还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器1602可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1602也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器1602还可以包括上述种类的存储器的组合。
可选的,高精度地图的构建装置1600在具体实现时可以是芯片或者集成电路。
本申请实施例提供了一种计算机存储介质,存储有计算机程序,该计算机程序包括用于上述方法实施例提供的方法。
本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机上述方法实施例提供的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。