Autoware目前使用的高精度地图以前是Vector Map Format(VMF),现在已经是lanelet格式。Lanelet2是一个C++库,用于处理在自动驾驶情况下的地图数据。 它兼容并扩展了之前的lanelets库, 能够利用高清地图数据,以有效应对复杂交通情况下车辆所面临的挑战。 灵活性和可扩展性是应对未来地图挑战的一些核心原则。
lanelet2代码链接
Lanelet2地图层次划分:
• 物理层(physical layer,可观测到的真实元素)
• 关联层(relational layer,与物理层相关联的车道,区域以及交通规则)
• 拓扑层(topological layer)
设计Lanelet2地图基于以下原则:
points由ID,3d坐标和属性组成,是唯一存储实际位置信息的元素,ID必须是唯一的。其他基本元素都是直接或者间接由points组成的。在Lanelet2中,Points本身并不是有意义的对象,Points仅与Lanelet2中的其他对象一起使用有意义。
线串是两个或者多个点通过线性插值生成的有序数组,用来描述地图元素的形状。线串可以是虚线,它可以通过高度离散化实现,来描述任何一维形式,并应用于地图上的任何可物理观察到的部分。与样条曲线相比,线串可以高效计算,并且可以用来描述尖角,最终转化为非线性微分方程的求解问题。
线串必须至少包含一个点才能有效,并且不能自相交。它们不能重复包含点(即,不允许p1-> p2-> p2-> p3)。线串必须始终具有type属性,以便可以确定其用途。
多边形与线串非常相似,但形成一个Area。隐式假定多边形的第一个点和最后一个点被连接以闭合形状。
多边形很少用于传输地图信息(交通标志除外)。相反,它们通常用作将有关区域的自定义信息添加到地图(例如,感兴趣区域)的一种手段。
Lanelets定义了发生定向运动时,地图车道的原子部分。原子表示沿当前lanelet行驶时,有效的交通规则不会改变,而且与其他Lanelet的拓扑关系也不会更改。
lanelet可以引用表示适用于该lanelet的交通规则的regulatory elements。多个lanelet可以引用同一regElem。必须始终始终可以直接从车道上确定车道的当前速度限制。可以通过引用SpeedLimit监管元素或标记小车的位置来完成。在这种情况下,假定道路类型的最大速度(例如,如果位置是德国城市,则为最大50公里/小时)。
Areas是地图上没有方向或者是无法移动的部分区域,比如路标,停车位,绿化带等。他们由一条或者多条linestring组成的闭合的区域。Area也有相关联的regulatory elements。
regElem是表达交通规则的通用方式,它们由适用的lanelet或Area引用。在应用的时候,regElem 会和一个或者多个Lanelets、Areas相关联。regElem是动态变化的,意味着它只是在某些条件下是有效的。
诸如限速,道路优先级规则、红绿灯等,交通规则有许多不同的类型,因此每个regElem的准确结构大都不一样。他们通常引用定义规则的元素(例如交通标志),并在必要时引用取消规则的元素(例如速度区末尾的标志)。
通常,regElem元素由通常表示规则类型的标签(即交通信号灯regElem)和有关对此规则具有特定作用的可观察事物的特定信息(例如交通信号灯本身和停车线)组成。 其他类型的regElem是通行权和交通标志regElem。
此模块包含所有的图元和以上描述的图层,并且还包括几何计算,比如计算中心线,距离和重叠区域等
根据不同的road user类型和国家,来解释相应的交通规则。
可以直接访问物理层元素。
根据交通规则,创建路由图,来确定精准的行驶路线。也可能通过组合相邻的Areas和lanelets来构建易通行区域。
用来给road user分配lanelets或者基于传感器的观测来确定可能的行驶方向。
提供全球地理坐标系到局部平面坐标系的准换
用于从各种地图格式(特别是OSM格式)读取和写入地图。
OSM—OpenStreetMap是lanelet2软件输出地图的标准格式。
首先,看一下OpenStreetMap的数据结构:
OpenStreetMap的元素(数据基元)主要包括三种:点(Nodes)、路(Ways)和关系(Relations),这三种原始构成了整个地图画面。其中,Nodes定义了空间中点的位置;Ways定义了线或区域;Relations(可选的)定义了元素间的关系。
node通过经纬度定义了一个地理坐标点。同时,还可以height=标示物体所海拔;通过layer= 和 level=,可以标示物体所在的地图层面与所在建筑物内的层数;通过place= and name=*来表示对象的名称。同时,way也是通过多个点(node)连接成线(面)来构成的。
通过2-2000个点(nodes)构成了way。way可表示如下3种图形事物(非闭合线、闭合线、区域)。对于超过2000 nodes的way,可以通过分割来处理。
Open polyline way(非闭合线):收尾不闭合的线段。通常可用于表示现实中的道路、河流、铁路等。
Closed polyline closed way(闭合线):收尾相连的线。例如可以表示现实中的环线地铁。
Area area(区域):闭合区域。通常使用landuse=* 来标示区域等。
一个Relation可由一系列nodes, ways 或者其他的relations来组成,相互的关系通过role来定义。一个元素可以在relation中被多次使用,而一个relation可以包含其他的relation。
标签不是地图基本元素,但是各元素都通过tag来记录数据信息。通过’key’ and a 'value’来对数据进行记录。例如,可以通过highway=residential来定义居住区道路;同时,可以使用附加的命名空间来添加附加信息,例如:maxspeed: winter=*就表示冬天的最高限速。
下面介绍一下osm的离线编辑器——JOSM。
JOSM 特色:最原汁原味的编辑器。最适合使用GPS轨迹绘图和在已有地图添加细节。有大量插件可以自动化常用操作
JOSM软件下载链接
地图显示:
左边的工具栏:
这几个节点(nodes)常用的操作,第一个为:选择已有节点;第二个是:添加新节点;第三个是:地图的操作。下面几个比较简单,试一下就会了。在这也看出了nodes在osm中的重要性。