osm格式地图能修改路名吗_Lanelets: 一种高效的自动驾驶高精地图表达方式

本文介绍了Lanelets作为一种高效的自动驾驶高精地图表达方式,包括用于Routing的Lanelets Graph、交通规则表达、距离计算、开源地图加载库libLanelet,以及Lanelets地图的生成和编辑工具。
摘要由CSDN通过智能技术生成

bff0d6586320e549ac1b64b3ba3b0644.gif9ff62dfeb0f9d1cae58f10c116b39c14.png

来源 | 半杯茶的小酒杯

知圈 | 进“ISO26262社群”,请加微13636581676,备注ISO

LaneLets是自动驾驶领域高精度地图的一种高效表达方式,它以彼此相互连接的LaneLets来描述自动驾驶可行驶区域,不仅可以表达车道几何,也可以完整表述车道拓扑,同时可以集成交通规则和人的驾驶习惯。
007de2249095a379978d591cf4f4a21b.png LaneLets Map
如上图所示,每个Lanelet由left bound和right bound组成,left/right bound有一系列点序列组成,因此可以以任意精度逼近任意车道形状。

1. 用于Routing的Lanelets Graph

为了能够基于Lanelets进行路径规划,我们可以构建Lanelets邻接图结构。 当Lanelets A的左右边界的终点与Lanelets B的左右边界的起点相同时,我们就称Lanelets A和Lanelets B是相邻接的。 如下图所示,图(右)是对图(左)构建的Graph,同时将每个Lanelets的长度作为Graph Edge的权重。 基于该Graph,我们就可以采用Dijkstra算法,实现从任意起点到终点的路径规划。 当然读者也可以给Graph Edge赋予道路边界类型、权重因子等属性,从而实现其它类型的Routing规划算法。
6e0456eb4a6d3fa0293596d24f4523be.png

2. Lanelets中的交通规则

开放的公共道路上存在各种各样的交通控制要素,比如红绿灯、交通标牌等。 我们将这些交通规则按照一定的方式组织起来,并关联到对应的Lanelets上。 行驶在Lanelets上的车辆必须遵守该Lanelets关联的交通规则。 交通规则通常由两部分内容组成: 1、规则的名称和内容; 2、遵守这一规则的静态信息或者参数。 举个路口红绿灯的例子,它的规则为车辆必须在交通灯为红色的时候,必须停止在路口停止线前等待; 它的参数为停止线和关联交通灯的位置。 这里要特别提到是没有红绿灯的十字路口,它的通行规则必须以尽可能少的阻碍其它拥有通行权的交通参与者为准则。
1cac199a3f7b168fe7c009226b762ce6.png
交通规则表达
在实际数据中,交通规则通过"type=regulatory element"标识,再通过名称为maneuver的tag区分不同的交通规则。 merge and cross 当maneuver=merge时,该规则的参数是: merge发生的第一个Lanelets。 该规则期望车辆在进入merge的第一个Lanelets时,尽可能的与同向车道的车辆的运动速度趋同,并且保持安全距离。 当maneuver=cross时,该规则的参数是: 与当前Lanelets发生cross的Lanelets,以及为了避免碰撞发生主车的停止位置。 traffic light 当maneuver=traffic light,该规则的参数是: 路口的停止线和关联红绿灯的位置。 该规则期望当红绿灯为红色时,车辆停止在停止线之前。
fa5920c36d9fbb2a4267919cf2b46df1.png

3. Lanelets中高效的距离计算和测量

在使用Lanelets的过程中,计算车辆Pose到Lanelets边界的距离非常重要。 由于LaneLets的左右边界是由折线组成的,因此我们可以先看看单个Segment的距离如何计算。 假设单个Segment的定义如下: 其中, 是Segment的起点, 是Segment的终点, 是起点的切向量, 是终点的切向量。 我们可以通过 对Segment进行插值。

658fa6b652d237977416b06ebcf78bb4.png

点X =  到Segment G的距离定义如下: 并且 满足如下约束:
7ceb8bd198cb6dc6d99752b630e0e244.png
不失一般性,我们假设,将这些信息代入公式(1),可以得到: 也就是说,只要知道了车辆的Pose(位置和朝向),我们就能迅速计算出车辆到边界的距离。 除此之外,通过计算 就可以得到任意一点的梯度信息。
4383595fd15c014e4cc293bf28d35a45.png

4. 开源的Lanelets地图加载库-libLanelet

libLanelet使用Boost C++代码库实现,它提供了读取、加载和查询XML文件的功能; 使用RTree检索查询空间要素的功能; 使用诸如Dijkstra进行Routing路线规划的功能; 随着地图范围的不断扩张,Lanelets的数量会快速膨胀,为了提升数据检索的速度,libLanelets使用RTree对Lanelets进行检索,可以做到在O(logn)时间内实现对任意Object的查询。 Github代码路径: https://github.com/phbender/liblanelet

5. Lanelets高精度地图生成

Top-View Map生成
我们利用立体图像技术,将车辆周围的3D点投影到地面上,再利用轨迹将这些3D投影点聚合起来,形成全局的鸟瞰图。 然后利用这些鸟瞰图,使用OSM Editor人工标注高精度地图。
5833752bc6e1371646a0ac17a8779d18.png Virtual topview: Single image, reconstructed top view, superposed top view with annotated lanelets
Lanelets存储格式及编辑工具
Lanelets Map采用OSM格式存储: 即文件格式采用XML格式; 包含三个基础结构,nodes、ways和relations; 坐标系采用WGS-84坐标系。
4c5af82d69a96df8d7223442f8d201a8.png Java OSM editor

6. Lanelets在实际驾驶中的应用

自动车辆利用Lanelets地图实现状态转换状态机(State Machine)不同状态之间的转换。 如下图所示,当自动驾驶车辆行驶到绑定了交通规则的Lanelets时,并且距离交通规则参数的距离小于一定阈值时,事件S被触发,提醒车辆在停止线前停下来。 当自动驾驶车辆距离交通规则参数的距离大于一定距离时,事件A被触发,车辆进入路口驾驶模式。 当离开路口时,事件F被触发,整个系统被重置到空闲状态。 8cf1a60d2a24aca64b953536346acd45.png 882e060b4adb712e0796a3641c579b2a.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值