看了下前面的开发笔记,简直是东一榔头西一棒子,毫无重点……不知道在开发个啥
下面是阅读这篇Apollo 高精地图解析文章学习整理的内容
Apollo高精地图数据格式采用(XML)文件格式的数据组织方式,是基于国际通用的OpenDrive规范,在其基础上,将车道边界形状的表述方式从曲线方程和偏移改为绝对坐标序列;新增了禁停区、人行横道、减速带等元素;新增了路口(junction)与路口内元素的关联关系(incoming Road通过Connecting Roads与out-going道路相连),增加了车道中心线到真实道路边界的距离、停止线与红绿灯的关联关系;
我从docker拉取的镜像中拿到base_map.xml,它是最完整的,包含了所有道路和车道几何形状和标识的地图。
xml格式的文件是被用来传输数据,是为了可以在不兼容的系统之间传输数据而设计的,大家用纯文本格式读取彼此的数据就行。
第一行是XML声明,版本1.0和编码UTF-8
第二行是描述文档的根元素,就是说本文档是OpenDRIVE
里面分为三个部分
有属性id和junction,也就是道路编号和这条道路对应的路口
下面分为四个部分
没有属性,下面有子元素
两个子元素数目不一定,属性都有elementType="road",elementId,contactPoint="start"or"end"
看起来predecessor都是start,successor都是end
没有属性,下面有子元素
crosswalk的
stopline的
没有属性,下面有子元素
stopSign的
trafficLight的
trafficLight和前面的crosswalk很像,
没有属性,内容很多
下面第一层
再下一层
有两个子
center-lane-border-geometry-pointSet-point这样的层次,最后
lane-border-geometry这三个子元素都有属性
下面有一个
再下层是
下面有几个部分,
所有出现outline的地方:crosswalk,trafficLight,junction
Apollo提供了解析xml格式地图的程序:opendrive_adapter.cc
在Apollo内部的数据地图的格式为proto,各定义在modules/map/proto路径下的.proto文件下
Apollo提供了一些函数获取元素,并且提供高精地图元素获取的方法实现类:apollo::hdmap::HDMapImpl