演讲文稿:
开场
我叫浊世一壶酒,大家都知道最近这几年自动驾驶比较火,自动驾驶对地图精度的要求比较高,普通地图提供不了那么多的信息,这就涉及到跟自动驾驶相关的一个领域高精地图。那么高精地图是如何制作出来的呢,它的制作有没有什么规则。有没有行业标准。这就引出了我们今天介绍的重点OPenDRIVE。
- OpenDRIVE是什么?
- Coordinate systems(坐标系)
- Roads(道路)
- Lanes(车道)
- Junctions(交叉口)
OpenDRIVE是什么?
OpenDRIVE的全称是ASAM OpenDRIVE
ASAM(德国自动化及测量系统标准协会):是一家非政府的汽车领域标准化制定机构,1998年由数位行业专家为标准化ECU(电控单元)开发与测试中的数据交互而创立,致力于实现开发流程中各环节的数据信息自由交换。截至2019年,共有来自亚洲、欧洲、北美洲的295家整车厂、供应商及科研机构加入成为会员。ASAM推出的标准涉及多个汽车标准领域,包括仿真、车联网、测量与校准、诊断、自动化测试、软件开发、ECU网络和数据管理与分析等。
这里不得不提PEGASUS项目,2016年,德国联邦经济与能源部(BMWi)启动PEGASUS项目,旨在开发一套自动驾驶功能测试程序,以促进自动驾驶技术的快速落地。PEGASUS项目内容包括定义自动驾驶车辆在仿真、测试场地以及实际环境中的测试与实验标准流程;开发一个持续的和灵活的工具链以维护自动驾驶开发与验证;在开发早期的阶段集成测试;创建跨整车厂的方法来维护高度自动驾驶功能等。 PEGASUS项目于2019年5月结项,其中一项重要研究成果就是Open-CRG、OpenDRIVE、OpenSCENARIO驾驶场景仿真格式标准。该标准已于2018年正式从戴姆勒和VIRES转交ASAM进行下一步标准维护与开发。以此为契机,ASAM于2018年新开创一类标准——仿真,用于制定和协调自动驾驶领域的相关仿真标准。
这就是ASAM OpenDRIVE名字的由来
OpenDRIVE格式使用文件拓展名为xodr的可扩展标记语言(XML)作为描述路网的基础。存储在OpenDRIVE文件中的数据描述了道路的几何形状以及可影响路网逻辑的相关特征(features),例如车道和标志。OpenDRIVE中描述的路网可以是人工生成或来自于真实世界的。OpenDRIVE的主要目的是提供可用于仿真的路网描述,并使这些路网描述之间可以进行交换
总的来说,ASAM OpenDRIVE为路网的静态描述定义了一种存储格式。通过与ASAM OpenCRG结合使用,可以将非常详细的路面描述添加至路网当中。OpenDRIVE和ASAM OpenCRG仅包含静态内容,若要添加动态内容,则需要使用ASAM OpenSCENARIO。三个标准的结合则提供包含静态和动态内容、由场景驱动的对交通模拟的描述。
Coordinate systems(坐标系)
这里介绍OpenDRIVE用到的三种坐标系惯性坐标系、参考性坐标系和局部坐标系
- 惯性坐标系 根据ISO 8855惯性坐标系是右手坐标系,其轴的指向方向如下 x轴 ⇒ 右方 y轴 ⇒ 上方 z轴 ⇒ 指向绘图平面外
- 参考性坐标系 参考线坐标系同样也是右手坐标系,应用于道路参考线。 s 坐标沿参考线,以m为单位,由道路参考线的起点开始测量,在xy平面中计算(也就是说,这里不考虑道路的高程剖面) t 侧面,在惯性x/y平面里正向向左 h 在右手坐标系中垂直于st平面
- 局部坐标系 局部u/v/z轴坐标系 对局部坐标系的查找与定位将相对于参考线坐标系来进行,具体方法为对原点、原点的航向角/偏航角、横摆角/翻滚角和俯仰角的旋转角度及它们之间的关系进行详细说明。 根据ISO 8855局部坐标系是右手坐标系,其轴的指向方向如下。以下内容适用于非旋转坐标系: u 向前匹配 s v 向左匹配 t z 向上匹配 h
这三种坐标系相互作用能为OPenDRIVE的重要组成部分,大家学习OpenDRIVE一定要弄懂这三个坐标系
Roads(道路)
大家知道地图都是有一条条道路连接起来的。路网在OpenDRIVE中用<road>元素来表示.
下面是Roads的一些特点
每条道路都沿一条道路参考线延伸
- 一条道路必须(shall)拥有至少一条宽度大于0的车道。
- 每条道路由一个或多个 <road> 元素描述。一个 <road> 元素可以(may)覆盖一条长路、交叉口之间较短的路,或甚至多条道路。
- 只有在道路的属性不能在先前 <road> 元素中得到描述或需要一个交叉口的情况下,才应(should)开始一个新的 <road> 元素。
Lanes(车道)
我们了解了道路,当然说起道路就不得不提道路里面的元素车道。
- 在OpenDRIVE中,所有道路都包含了车道。每条道路必须(shall)拥有至少一条宽度大于0的车道,并且每条道路的车道数量不受限制。
- 需要使用中心车道对OpenDRIVE中的车道进行定义和描述。中心车道没有宽度,并被用作车道编号的参考,自身的车道编号为0。对其他车道的编号以中心车道为出发点:车道编号向右呈降序,也就是朝负t方向;向左呈升序,也就是朝正t方向。 下面是车道的一些特点: <lanes> 车道 <laneSection> 车道组 属性 s:起始位置的s坐标 singleSide:ture false 车道段元素仅对一侧有效(左、中或右),这将取决于子元素 <left> 左车道<center> 中心车道 <right> 右车道 车道分组规则 带有正ID的车道在中心车道的左侧,而带有负ID的车道则在中心车道的右侧。 每个车道段必须(shall)包含至少一个<right>或<left>元素。 必须(shall)给每个s坐标定义一个<center>元素。 每个车道段都可(may)包含一个<center>元素。 为了能够更好地确认方向,车道应(should)按照降序ID按从左到右的顺序排列。
Junctions(交叉口)
道路不可能是一条道走到底,肯定有道路交叉的地方,在OpenDRIVE中交叉口是用Junctions来表示的。
- 交叉口指的是三条或更多道路相聚的地方,与其相关的道路被分为两种类型(如图74所示):含有驶向交叉口车道的道路称为来路。
- 联接道路:呈现了穿过交叉口的路径
- 交叉口组是通过 <junctionGroup> 元素来描述的。所属交叉口组的交叉口由 <junctionReference> 元素来详细说明。
总结
自动驾驶离不开高精地图,高精地图现在大家可以用OpenRRIVE格式做出符合自己要求的车道信息,OpenDRIVE包含 Coordinate systems(坐标系)、Roads(道路)、 Lanes(车道)、Junctions(交叉口)这些主要元素,了解这些,可以让大家对OPenDRIVE有个初步的认识。
当然OpenDRIVE的东西肯定远远不止我讲的这些,对自动驾驶和高精地图感兴趣的同学,可以下去研究一下自己感兴趣的先关内容,我今天将的这些东西,希望能起到抛砖引玉的作用,希望对这方面感兴趣的同学有所帮助,谢谢大家