apollo高精地图的数据元素分类以及阿波罗地图规范和opendrive规范的区别
飘哥
我的知乎 2019
连续创业者,跨界创新,技术控
apollo高精地图的数据元素分类以及阿波罗地图规范和opendrive规范的区别
6 人赞同了文章
为你朗读
6 分钟
在apollo高精地图里,数据元素进行了分类:
一是道路
需要强调的是道路分为两个层次,一种层次是道路级别,一种是lane级别。每个lane都有左边界右边界,道路也有道路边界,道路边界是强约束,在自动驾驶的时候,道路边界是永远都不能压的。车道线理论是不能压的,碰到紧急情况,你可以采用借道超车的策略。
二是路口
路口有路口边界,路口主要用于感知。路口时非常复杂的场景,无人车到了路口,感知模块可以通过路口边界做过滤,在路口之外的元素不需要care,感知有静态物体识别,被感知模块识别出来的物体不在地图路口边界之内,就可以忽略它。
路口元素中的虚拟车道上用来做路口行驶引导,
三是交通信号元素
需要大家重点关注红绿灯元素。红绿灯的使用方法是第一提供一个三维空间位置,第二是红绿灯跟车道之间的关联关系,意思是你在那个车道,看那个灯这样的关系。
真正线上策略实际非常复杂,我们要把图像坐标系转到车辆坐标系,从车辆坐标系再转道全局坐标系。整个过程存在一些误差,就会导致地图上的红绿灯的框和真实的框不能匹配的那么完美。这种中间需要非常复杂的策略。
四是逻辑关心元素
地图通过overlap来表述两个元素之间的关系,我们没有把这个关系嵌入到各个元素中去,而是通过一个额外的元素把这两个元素关联起来。
五是其他道路对象元素
路上类似人行横道,禁止停车区等这些元素类似路上的文字信息,这些信息感知可以用,pnc可以用。
下面是apollo车道模型:
他跟opendrive的规则是一样的。
里面也会把横向以lane进行分割,纵向切成section,apollo车道模型有非常多的属性,下面讲几个大家在使用中可能会产生困惑的地方。
Left sample:它是中心线到两个边界的距离。
Left road sample和right road sample:表述的是车道中心线到道路的物理的边界。物理边界,车道边界注意区别。
下面是路口描述:
路口分为真实路口和十字路口,这么分的原因是在实践过程中发现在做车道数变化的时候,如两车道边城三车道,需要感知模块感知周围有没有车,刚才提到junction的边界给感知提供了检测的约束,所以在车道线变化的地方,也被处理成了一个junction,这样就给感知提供了约束,这也是in road 和 cross road的由来。
下面是百度apollo的高精地图坐标系-utm:
百度apollo内部坐标系采用utm坐标系,utm坐标系吧全球分成60个zone,每个zone相当于zone衷心的一个局部坐标系,utm是一个非常复杂的系统。它能把全球坐标系描述的每个位置描述的非常精确。
下面是高精地图用到的坐标系-wgs84:
在百度apollo地图上用的另外一套84坐标系,学过gis的同学都应该知道84,84本身还是一套全球经纬度,这里要强调的是高度,84坐标系把整个地球想象成一个椭圆的球,上面会有一个椭圆面,地面高度是相对于椭球面是一个偏移,相对于椭球面高多少,高了就是正,低了就是负的,上图右侧绿线就是椭球面,高于绿线就是高了为正值,低于绿线就是低了为负值。
下面是opendrive的tracking的坐标系:
这个地图是基于st的,s是纵向,t是横向的,这个坐标系在地图里面,尤其是在overlap,用来表述一个元素和lane之间的位置关系,这个元素位于lane什么位置,相当于lane起点的偏移量是多少。
下面是apollo opendrive的规范:
在apollo opendrive里面把所有元素做了归类,类似我们有大的road,junction,然后把所有路上的地面标识都归属于objects,把所有的标牌归于signal,然后通过over lap把他们关联起来。
下面讲一下apollo opendrive规范和opendirve的区别:
apollo开源以来用户反映他们不知道apollo opendrive和标准opendrive的区别,也就是说不知道为什么百度这么改:
第一:标准opendrive是基于reference line加上偏移,通过方程来描述的形式。百度apollo opendrive里是一个个坐标点。
采用点方式的原因有二,一是点的好处是对下游计算非常友好。就不需要在通过在线去做点的采样。采用方程的好处是数据量非常小,如它通过三四个参数就可以描述非常长的线,但是对于点来讲,数据量会大一点。
二是避免特殊场景危险。在使用原始opendrive中发现了一些问题,尤其是这种基于偏移量的计算,导致道路在急转弯的地方,把基于reference line的方式还原成点的方式会存在道路出现毛刺的情况。出现毛刺对无人驾驶来说是非常危险的。一旦道路出现倒刺,导致无人车在行驶过程中猛打方向盘,然后直接冲到路边上去。所以百度apollo opendrive直接采用了点的方式。
第二:Apollo opendrive 扩展了一些opendrive没有的元素
如禁停区,人行道。
第三:道路元素关系的描述。还有前面提到的红绿灯怎么关联,中心线到边界的距离,这对于无人驾驶的决策是非常有用的。
Apollo地图中的voerlap
Overlap是用来描述两个元素的空间关系,例如一条lane和一个框在空间上有重叠,那么他们两个元素之间就有overlap,
空间上有重叠就会做成overlap,还有其他情况,就是路边停车位都不在lane上,lane在停车位边上,所有的车会通过lane进入停车位,我们也会把lane和停车位描述成overlap。
这么做下游的控制决策模块,拿到地图之后,知道车要进入停车位,从那个lane进去。
Apollo提供了一个hdmap的引擎,主要作用是从hdmap中提取元素给下游(控制决策模块)用,下面是引擎的结构图:
引擎通过id去检索元素,也可以通过空间位置,一个点或者半径,就会把点或者半径范围之内所有元素,如信号灯(红绿灯)提取出来。底层还是基于百度自己的opendrive来做的。
高精地图在政策方面的挑战:
在国内高精地图属于国家机密,不允许任何人都来做测绘,国内不是每一家公司都有资格来采集地图,要经过国家测绘部门的批准才能采集。
测绘方面的挑战:
第一国内地图数据加偏
对于测绘数据加密是国家的强制措施。你看到的百度地图,高精地图等所有的数据发板都要到国家对应部门把数据加密,加密对于数据做了一个非线性的偏移。这是不可逆的。
由于加密等原因导致如据观察偏转插件对地图偏转的随机抖动幅度最大可达1.7米,如果定位依赖于绝对定位,就会导致定位结果的跳变,严重影响无人驾驶汽车的安全性。
第二地图关注内容的变化
国家规定高程,曲率,坡度这些元素是不允许出现地图里,这些元素导航地图不关注,但是对于自动驾驶地图非常需要。
第三众包采集的问题
地图采集只要能由拥有合法资质地图采集公司,汽车手机记录轨迹,采集图像的行为某种程度上都是测绘行为。
最后介绍一下百度的地图成果,下图是百度地图的数据覆盖
百度地图已经覆盖了国内所有的高速公路,后面会覆盖所有的国道省道,
编辑于 2019-03-28
著作权归作者所有 · 申请转载
分享到
规范
无人驾驶车
百度地图
评论
添加评论...
推荐阅读
无人驾驶技术入门(二)| 不会写代码也能做无人驾驶工程师
陈光的文章 · 309 赞同
【Apollo】百度Apollo3.0软件架构细节(3)-算法坐标系
李科男的文章 · 18 赞同
百度无人驾驶入门课程,记录六
百度无人驾驶入门课程,记录六 无人驾驶工程师,一起塑造无人驾驶…
涛涛CV 的文章 · 12 赞同
浅析Apollo和Autoware的异同
本文通过对比百度Apollo自动驾驶系统和Autoware自动驾驶系统,帮助读者更加容易的理解这两套系统的不同。 I 百度Apollo自动驾驶系统、Autoware简介 Apollo自动驾驶开放平台是一个开放的、完…
冷漾的文章 · 16 赞同
高德地图VS百度地图,哪个更靠谱?
千机问问的文章 · 78 赞同
【Apollo】apollo3.5决策分享 --by 百度美研 Yifei Jiang老师
李科男的文章 · 48 赞同
高精度地图2019-2020年或可落地
Ares...的文章 · 12 赞同
何必纠结百度地图还是高德地图,给你一个更好的选择!
马小帅的文章 · 368 赞同
百度Apollo系统整体构架
18年1月百度将公布的Apollo 2.0,简单城市路况的自动驾驶。下图即…
刘宏山0...的文章 · 13 赞同
谷歌地图打不开?试试这个替代网站,街景功能很好用!
骆驼搜搜的文章 · 23 赞同