Apollo2.5开发笔记(4)高精地图细节

看了下前面的开发笔记,简直是东一榔头西一棒子,毫无重点……不知道在开发个啥

下面是阅读这篇Apollo 高精地图解析文章学习整理的内容

Apollo高精地图数据格式采用(XML)文件格式的数据组织方式,是基于国际通用的OpenDrive规范,在其基础上,将车道边界形状的表述方式从曲线方程和偏移改为绝对坐标序列;新增了禁停区、人行横道、减速带等元素;新增了路口(junction)与路口内元素的关联关系(incoming Road通过Connecting Roads与out-going道路相连),增加了车道中心线到真实道路边界的距离停止线与红绿灯的关联关系

我从docker拉取的镜像中拿到base_map.xml,它是最完整的,包含了所有道路和车道几何形状和标识的地图。

xml格式的文件是被用来传输数据,是为了可以在不兼容的系统之间传输数据而设计的,大家用纯文本格式读取彼此的数据就行。

第一行是XML声明,版本1.0和编码UTF-8

第二行是描述文档的根元素,就是说本文档是OpenDRIVE

里面分为三个部分<header><road><junction>,其中road和junction有很多

 

<road>

有属性id和junction,也就是道路编号和这条道路对应的路口

下面分为四个部分<link><objects><signals><lanes>

<link>

没有属性,下面有子元素<predecessor>和<successor>,额,前任和继任?

两个子元素数目不一定,属性都有elementType="road",elementId,contactPoint="start"or"end"

看起来predecessor都是start,successor都是end

<objects> 

没有属性,下面有子元素<object>,也可能没有

<object>属性有id和type,种类有:crosswalk,stopline,暂时只看到这俩

crosswalk的<object>的子是没有属性的<outline>,孙是<cornerGlobal>属性x,y,z

stopline的<object>的子是没有属性的<geometry>,孙是没有属性的<pointSet>,里面有三个重孙<point>属性x,y,z

<signals>

没有属性,下面有子元素<signal>,也可能没有

<sigal>属性有id和type,type种类有stopSign,trafficLight,如果是trafficLight的话,还会有属性layoutType="mix3Vertical"

 

stopSign的<signal>比较简单,子<stopline>,孙<objecReference>属性id,这是两种signal都有的部分

 

trafficLight的<signal>就比较复杂了,有<outline><stopline>和三个id分别为0,1,2的三个<subSignal>

trafficLight和前面的crosswalk很像,<outline>下是<cornerGlobal>属性x,y,z

<stopline>和stopSign的<signal>一样

<subSignal>有id和type="circle"两个属性,下面一个<centerPoint>属性x,y,z

 

<lanes>

没有属性,内容很多

下面第一层<laneSection>属性singleSide="true"or"false"

再下一层<boundaries><center><right>

<boundaries>

有两个子<boundary>分别是属性type="leftBoundary"or"rightBoundary",子是没有属性的<geometry>,孙是没有属性的<pointSet>,里面有三个重孙<point>属性x,y,z(这和前面的objects-object(stopline)一样)

<center>

center-lane-border-geometry-pointSet-point这样的层次,最后<point>属性依然x,y,z

lane-border-geometry这三个子元素都有属性

<right>

下面有一个<lane>

再下层是<centerLine><border><link><speed><sampleAssociates><objectOverlapGroup><junctionOverLapGroup><LaneOverlapGroup>


<junction>

下面有几个部分,<outline><connection><objectOverlapGroup>,其中前两个是一定有的,第三个不一定

<outline>下是<cornerGlobal>属性x,y,z

所有出现outline的地方:crosswalk,trafficLight,junction

 

地图解析 

Apollo提供了解析xml格式地图的程序:opendrive_adapter.cc

在Apollo内部的数据地图的格式为proto,各定义在modules/map/proto路径下的.proto文件下

Apollo提供了一些函数获取元素,并且提供高精地图元素获取的方法实现类:apollo::hdmap::HDMapImpl

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值