详细的路线图是一个重要的组成部分,在大规模驾驶时,它们可以加速在车辆内创建语义环境模型,并在传感器被遮挡或受损时作为备份解决方案。由于需要详细的地图进行自动驾驶和虚拟驾驶。为测试驱动器。创建这样的地图是相当费力的。虽然一些相当大区域的详细地图已经存在,但它们通常以不同的格式存在,因此无法在公司和研究机构之间交换。来解决这个问题。我们提供了第一个公开可用的从OpenDRIVE格式到lanelet的转换——这两种表示都是最流行的地图格式。我们通过使用公开可用的地图来演示转换器的功能。
虽然许多自主系统开发人员的梦想是让车辆仅从车载传感器完全了解其环境,但很明显,在车辆1[2]运行期间,地图极大地改善和加速了环境语义地图的构建。此外,如果传感器故障或道路部分被堵塞,地图可以作为备用解决方案。出于这个原因,许多大公司和初创公司都在投资创建详细的自动驾驶地图。除了在车上使用地图,地图对虚拟试驾也至关重要,可以降低测试自动驾驶车辆或高级驾驶辅助系统的成本;看到如[3 - [5]。导航地图已经存在,并且在某些情况下是开源的,比如OpenStreetMap[6],但是为自动驾驶创建详细的地图是昂贵的,而降低地图创建的成本是一个持续研究的问题。虽然可以使用同步定位和映射(SLAM)自动创建地图,但这些地图还不如[7]手动创建的地图详细。降低成本的另一种方法是将现有的映射转换为所需的格式。在这项工作中,我们提出了第一个公开可访问的转换器从OpenDRIVE到lanelets。这两种表示都是最流行的地图格式,其中OpenDRIVE[8]在工业上使用得更多,lanelets[9]目前在学术界使用得更多。
我们首先描述OpenDRIVE的主要优势,然后介绍使用lanelets的好处。有一些工具支持OpenDRIVE,也有一些工具支持以OpenDRIVE格式创建地图,比如Trian3D Builder1。OpenDRIVE的主要优点之一是保证了不同模拟器之间的模型无缝交换。其他的工作,比如[10],扩展了OpenDRIVE格式,提供了更多的语义信息,并部分地自动化了有意义映射的创建。
Lanelets越来越受欢迎,因为它的定义比OpenDRIVE更轻,但功能强大,足以满足驾驶模拟器和自动驾驶的所有主要需求。例如,沿着Bertha Benz纪念路线的自动驾驶就使用了lanelets[111]。Lanelets用于驾驶模拟器和自动驾驶的许多方面,如可组合基准运动规划道路(CommonRoad) [12], lane-level匹配[13],深度学习[14],形式化的交通规则[15],基于集合预报的交通参与者[16],司机的意图分类(17日和决心的位置合规[18],等等。除了lanelets和OpenDRIVE外,其他的道路描述也被开发出来。RoadXML 19在概念上接近于OpenDRIVE,由拓扑、逻辑、物理和视觉层组成。还有一些更开放的道路网络格式,如LandXML[20]和OpenStreetMap[6],但它们主要是为地理目的而设计的,而不是为驾驶模拟器或自动驾驶而设计的。据我们所知,我们提出了第一个适用于自动驾驶的开放访问的地图转换器。我们的转换器可从commonroad下载。在。我们相信我们的转换器对许多学术团体和工业人士是有用的,因为地图通常只存在一种格式。
本文组织如下:在第二节中,我们提出了将OpenDRIVE描述的路网转换为lanelets描述的路网的原理。第三节给出了具体的实现方法,第四节给出了证明转换质量的数值例子,第五节给出了最后的结论。
本节简要介绍了从OPENDRIVE到LANELETS的地图转换。为此,我们简要介绍了这两种格式,并概述了它们之间的相关区别,然后详细描述了转换原则。
在OpenDRIVE中,道路是基于参考路径指定的。如图2所示,通过指定与参考路径的横向距离来创建单独的车道。参考路径通过连接clothoids(又名欧拉螺旋)或多项式来构建。请注意圆弧段和直线是clothoids的特殊情况。使用clothoids的优点是,沿着参考路径的曲率随路径长度线性变化,这就是为什么大多数道路都是由clothoids[21]构造的。图I示出参考路径示例,该参考路径表示从直线过渡到弯道。我们把要连接的元素称为部分引用路径。
图1所示:一个参考线的例子,描述了从直路到弯路的转变。
请注意,如图I所示,只有起始点 p o p_o po在地图上是绝对定位的,参考路径的每段都有一个以t和ds为轴的局部坐标系,如图I所示引用路径被划分为多个section,这些部分的选择独立于部分引用路径的开始和结束。每个section都有恒定数量的车道。但是在section中,宽度等属性是可以改变的(如图2所示)。这种类型能清楚地区分汽车可以或可能行驶的车道和人行道或停车位等其他区域。相对于参考路径的车道宽度的精确定义相当复杂,可以在OpenDRIVE格式规格中找到。
OpenDRIVE的车道之间没有gap;为了引入gap,必须创建一个特殊的非道路类型的附加车道。车道号为负数的车道与参考路径方向相同,车道号为正数的车道与参考路径方向相反,如图2所示。
部分引用路径可以没有后继路径、一个后继路径或多个后继路径,后者用于建模junction。在连接道路密集的路口,可采用单独的格式。多个junction可以分组成一个junction group。与路段内车道的连接被称为neighbors,并决定可以改变哪条车道。应该注意到,用OpenDRIVE描述现实世界道路的各种可能性是具有挑战性的。接下来,我们将引入lanelets,它不使用任何参考路径,并且具有更轻量级的表示。
Lanelets是原子的、相互连接的、可行驶的路段。lanelet是由它的left bound和right bound定义的。其中每个bound由一个point的数组表示(一个polyline),如图3所示。我们定义lanelet的start points和end points,作为左和右边界的行驶方向的第一和最后一个点。连接lanelets组成道路网的隐式定义:如果一个lanelet的左右起点与下一个lanelet的终点在驾驶方向上相同,则称为纵向相邻。如果lanelet2的左边界与lanelet1的右边界相同,则称lanelet2与lanelet1相邻。这类似地定义为右邻车道。出于实现的原因,可能会接受lanelets连接点的小偏差,而不是要求值相同。
纵向、左、右和空邻接构成一个可建模为有向图的道路网络。选择横向相邻的小lanelets使其公共bound长度相等是一个很好的实践,这样做不会丧失一般性。这种做法减少了多车道道路的横向邻接的数量。类似地,对于路叉,很好的做法是按照图3所示构造它们,以确保邻接保持整个lanelet。这是通过考虑可能的变道,只要存在一个车道交叉口,如图4(a)所示。因此,我们引入点q作为分叉车道对应车道边界的交点,如图4(a)所示。如果lanelet11和lanelet21外界的最终点与点q和lanelet21对应lanelet22继续如图4(a)所示的对应车道,所有的lanelets要么沿着其全长相邻,要么根本不相邻。得到的有向图如图所示。
4 (b)。
由于lanelets仅由其左右边界定义,因此转换的主要任务是计算OpenDRIVE道路车道边界的polyline,如图5所示。为每个section计算bounds(使用其本地坐标系统),以便sections和lanelets的长度是相同的。首先,我们计算沿参考路径(图5中的灰色圆圈)的点 s i s_i si,其部分路径由直线、圆弧、clothoids和polynomials组成。我们使用[22],[23,Eq.(3)]得到沿各部分路径的x, y坐标。对于每个点 s i s_i si 计算第 j j j 车道对应的内点 I i ( j ) I^{(j)}_i Ii(j) 和外点 O i ( j ) O^{(j)}_i Oi(j) 。这些点是通过沿车道宽度 w i ( j ) w^{(j)}_i wi(j) 横向移动 s i s_i si点得到的,其中 i i i为第 i i i个点 s i s_i si, j j j为第 j j j车道。一条车道的外点与下一条车道的内点相同。
显然,所得到的折线是OpenDRIVE 车道边界的近似。但是在OpenDRIVE中使用的clothoids没有解析解,因此任何驾驶模拟器或自动驾驶车辆都必须通过适合于有效计算的折线或类似表示来近似clothoids。此外,利用点 s i s_i si 之间的小距离,可以使近似误差任意减小。然而,对于直线,转换是精确的,并且只需要起始点和结束点。对于曲率为c的弧,当逼近误差小于 e m a x e_{max} emax 时,我们使用(I)中的公式来确定步长 d s m a x ds_{max} dsmax ,这是根据弧段的基本几何形状得出的。
请注意,我们使用的曲率c是最内的车道的最高曲率,而不是参考路径上的那个。对于clothoids,我们在开始或结束使用最大的曲率,因为他们的曲率线性变化,以便在开始或结束发现最大值。
路网描述的一个主要区别是车道的合并和分割。在OpenDRIVE中,车道由宽度逐渐减小至零合并或由宽度逐渐增大至分割。即使宽度为零,车道实际上消失了,同样的车道标识符在另一节中被重用,如图2中车道-2末端的图[2所示。在一个lanelet网络中,由于端点必须与另一个lanelet的起始点重合,从而实现图6(b)所示的分割和合并,因此一个实现一个lane合并或分割的lanelet会与邻近lane的lanelet发生重叠。
为了方便地进行合并和拆分的转换,我们提出了参数化车道的概念。如图7(a)所示,通过指定相对于参考路径的边界,消除了每个车道对其内部邻居的依赖。如图7(b)所示,参数化车道需要以下参数:
因此,参数化车道可以建模如图[6(b)所示的车道。参数化车道到lanelet的转换类似于常规车道。
在Alg1中给出了OpenDRIVE到lanelet转换器的总体实现。首先,我们通过所有的道路建模,并获得基于OpenDRIVE平面视图和额外的车道偏移量的参考路径。对于道路的每一段,我们通过调用Alg. 2在lineA中生成lanelets,后面将对此进行解释。在创建所有lanelets之后,我们创建一个有向图来表示它们之间的关系。由于lanelets的路网是隐式定义的,所以这个步骤是不必要的,但是对于其他算法来说,已经有了有向图是很方便的。在第6-9行,为predecessors,、successors,、左邻右邻建立了联系。
在一个路段中创建lanelets如alg2所示,我们首先将所有的车道转换为参数车道,然后在第二步将参数车道转换为lanelets。尽管这只在合并和分割时需要,但是由于参数化车道与其他车道没有依赖关系,使用唯一的pipeline可以简化我们的代码并使后续的代码更新更容易。
在第1行参考点的路径被分配到最inner的border,那里的step size(步长)根据(1)选择。下一个边界点上是通过将一个点的沿着车道宽度平移得到的,这部分代码是在Sec.II-C的第3行。由于下一个车道与内车道共享边界,下一个内边界等于当前的外边界(见第5行)。最后,在第7-12行,参数化车道被转换为lanelets。
来演示我们的转换器的性能。我们正在从www.opendrive中转换开放的例子。ora/下载,结果可以独立检查。所有转换都是在12gb内存的双核Intel 2.60 GHz处理器上完成的。所有计算时间显示在表1中。
首先,在图8中,我们呈现了一个原始的OpenDRIVE方案和转换的结果。我们可以清楚地看到创建的lanelets,它明确地显示了环形交叉口前的车道的分割。也可以看到,环形交叉处有两条车道,其中一个可以进行变道。箭头表示每条车道的行驶方向。进一步的转换结果如图9所示,为了识别转换后地图的细节,我们只给出了转换后道路的一小部分;但是,Table1中的计算用时是转换整个地图花费的时间。
图8A | 图8B |
---|---|
图9 | ||
---|---|---|
我们提供了第一个从OpenDRIVE到lanelets的开放可访问的转换器。OpenDRIVE在制造商和供应商中很受欢迎,而lanelets在学术界也越来越受欢迎,因为它们的格式更轻。OpenDRIVE和lanelets之间的主要区别在于,OpenDRIVE需要一个引用路径,并在横向上为它定义了通道。有些方面,比如行人岛,在OpenDRIVE中建模可能有点乏味。Lanelets。另一方面,是简单地定义由左折线和右折线。为了获得折线,我们对clothoid曲线进行采样,使其不超过最大误差。应该指出的是,clothoids不能用于直接计算,因为它们没有解析解,在任何情况下都必须转换为折线或类似的形式。我们的转换器可以在所有测试场景下完美地工作,可以从commonroad.in.tum.de.下载。即使对于较大的地图,计算时间也在几秒内。