半自动化轻量级众包地图技术方案

前言

一家之言,仅作分享,如有不合理或需要改进的地方,欢迎各位讨论。方案简单却有效,仅是为了解决部分图商限制问题。
    在高速领航辅助功能量产发布后,自动驾驶越来越向高阶发展,在这个过程中,高精度地图的重要性也越来越大。但是传统的高精度地图测绘方案存在一些问题,例如耗费大量人力,更新周期长,成本高等。因此,众包地图成为了各大图商技术攻破的一个难点。
    众包地图的特点是依赖大量低精度传感器的实车路跑数据,进行车云数据传输,数据聚合等技术完成在高精度地图底图上的更新。当前图商的方案大多是在底图基础上进行更新,我把这种叫做“从1到n”;之前看到华为秦通博士团队的论文,似乎是直接利用众包数据生成一张新图,并不是在高精度地图底图上进行更新,我把这种叫做“从0到1”。
    高精度地图为自动驾驶服务,我的理解是可以分为路网拓扑图层,定位图层,引导线图层,关键POI图层,决策图层

  • 路网拓扑图层–主要是道路之间的拓扑关系,用于做全局路径规划;
  • 定位图层–主要是视觉激光传感器感知到的自然环境的标识物,例如地面标识,杆件,路沿石等,用于自动驾驶车辆在地图中通过实时感知信息与定位图层信息的地图匹配来定位。
  • 引导线图层–主要是提供给规划控制的实车参考线信息,以此进行局部路径规划。在实际项目中发现,当针对不同车型,卡车与乘用车时,同一十字路口的右转引导线,需要有不同的轨迹。因为路口是没有车道线的,所以难以通过视觉车道线循迹方案完成,此时需要地图提供引导线。
  • 关键POI图层–主要是提供一些关键功能场景所需的POI,例如红绿灯信息,泊车库位信息。在城区Robot-taxi项目中,地图提供的红绿灯先验位置信息对红绿灯检测提供很大的帮助;在“最后一公里”的AVP项目中,地图库位信息对库位融合和决策至关重要。
  • 决策图层–主要提供一些ADASIS信息,可以辅助决策。例如车道限速,车道属性等。

技术系统概要

    作者在多年前自研半自动化轻量众包地图,主要服务于“最后一公里”功能,数据存储格式是XML。场景是在室外空旷停车场,库位选择后进行路径规划,提供引导线与目标库位。
    路网拓扑图层的制作是首先采集实车GPS信息,可视化后人工确定路网结构与拓扑关系,制作出路网拓扑图层,有RoadInfo.xml和Topology.xml。
    因为场景是室外,GPS信号好,关键POI图层(此场景只有库位)的制作当初并没有用SLAM方案(在最近做AVP方案时,室内停车场必须用SLAM方案),方法即是将自车坐标系下的库位检测信息坐标转换至世界坐标系下,记录库位角点信息与编号,建立库位图层,ParkingInfo.xml。
    引导线图层是基于路网拓扑图层建立的。通过确定实车在路网拓扑图层的道路ID号(根据实车定位信息与RoadInfo.xml中的道路轨迹匹配确定),利用实车前后经过的道路ID确定不同路口的不同引导线Header,再记录GPS轨迹信息为引导线,GuideLine.xml。引导线图层建立中,会采集多条轨迹,进行轨迹聚类提取代表性轨迹作为最终轨迹,参考我的TRACLUS算法博客。
    定位图层是利用mobileye的视觉车道线为输入建立的,主要用于横向定位。同样是在自车坐标系下将车道线信息转换为世界坐标系,原点同样采用GPS值,Laneline.xml。
    决策图层的内容包含在RoadInfo.xml和GuideLine.xml中,包含了道路是否是dummy,即是否无车道线的路口,还有道路长度信息,限速。

各图层数据结构示例

RoadInfo.xml

<RoadInfo RoadID="1" IsDummyRoad="0" SpeedLimit="5">
    <Point Heading="3.8196122646331787" length="0" LON_CAR="121.1942202" LAT_CAR="31.285743600000004" ALT_CAR="13.043000221252441"/>
    .
    .
    .
</RoadInfo>

Topology.xml

<TopoInfo CurrentRoadID="1" NextRoadID="2" TurnInfo="3"/>
<TopoInfo CurrentRoadID="2" NextRoadID="3" TurnInfo="3"/>
<TopoInfo CurrentRoadID="2" NextRoadID="5" TurnInfo="1"/>

ParkingInfo.xml

<parkingspace lotid="1" floor="2" spaceid="3" linkedroadid="4">
    <dest lon="1.2129955991947382e-05" lat="3.9334041381697792e-05" height="0"/>
    <waypoint lon="1.2129955991947382e-05" lat="3.9334041381697792e-05" height="0"/>
    <center lon="4.5642903531553328e-09" lat="1.2207115583087287e-05" height="0"/>
    <shapepoint lon="1.2129955991947382e-05" lat="3.9334041381697792e-05" height="0"/>
    <shapepoint lon="1.2129965615510443e-05" lat="-1.4919805856009734e-05" height="0"/>
    <shapepoint lon="-1.2120827412234994e-05" lat="-1.4919810013759367e-05" height="0"/>
    <shapepoint lon="-1.212083703381021e-05" lat="3.9334036820420458e-05" height="0"/>
</parkingspace>

GuideLine.xml

<GuideLineInfo RoadID="4" NextRoadID="1">
    <Point Heading="4.8205351829528809" length="0" LON_CAR="121.19367960000001" LAT_CAR="31.285746600000003" ALT_CAR="13.180000305175781"/>
    .
    .
    .
</GuideLineInfo>

LaneLine.xml

<Melaneframe FrameID="1" Central_UTMX="41584559.672673739" Central_UTMY="3418187.1939069959" RADIUS="100">
    <Point UTM_X="41584563.022673644" UTM_Y="3418187.1439069952"/>
    .
    .
    .
</Melaneframe>

地图引擎功能

    有了各图层数据之后,地图引擎软件功能分为数据解析,数据封装调用,A*路径规划,地图匹配定位,引导线与库位输出等。都是一些基本算法,不做进一步探讨了。

路权停止线

    在城区项目中,自动驾驶通过红绿灯路口是其中一个功能场景,这其中地图要提供的就是车道级路权信息。这一点作者在之前城区项目中发现图商的路口地图数据打断规则问题会导致感知与地图信息并不能及时有效提供正确的决策信息。因此,作者建立一个新的图层,路权停止线图层。图层数据记录的是路口停止线处的车道级路权信息,包含车道两横向端点的坐标(等效障碍物信息),车道路权的转向信息(依据实际车道可转向信息)。
    在实际应用中,在全局路径规划后,可以得到在路口的转向信息intention_turninfo,进而结合数据中的转向信息turn_info直接过滤掉不符合期望转向的车道(例如路径规划信息在路口是左转,那么地图数据中记录的直行和右转车道直接关闭路权)。随后待定的车道是否有路权需结合实时感知红绿灯信息判断(如果红绿灯是左转灯亮,则待定的车道路权打开,即没有屏障障碍物;反之路权关闭,自车坐标系下存在屏障障碍物)。这样的改进是为了消除图商数据打断规则错误的问题,而且可以更有效进行红绿灯路口行停和变道决策

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值