精华内容
下载资源
问答
  • 高精地图开发和代码,另外还包含了自动驾驶学习资料 涵盖感知,规划和控制,ADAS,传感器;
  • 1)高精地图与自动驾驶 2)什么是高精地图 3)高精地图与导航地图 4)高精地图---无人驾驶的核心基础模块 5)高精地图与定位模块的关系 6)高精地图与感知模块的关系 7)高精地图与规划、预测、决策模块的关系...

    目录

    1)高精地图与自动驾驶

    2)什么是高精地图

    3)高精地图与导航地图

    4)高精地图---无人驾驶的核心基础模块

    5)高精地图与定位模块的关系

    6)高精地图与感知模块的关系

    7)高精地图与规划、预测、决策模块的关系

    8)高精地图与安全模块

    9)高精地图与仿真系统

    10)高精地图的作用---静态的Perception

    11)高精地图的作用---弥补系统性缺陷


    原创: 阿波君 Apollo开发者社区 前天

    在上周,阿波君为大家具体介绍了百度「Apollo硬件开发平台」

    本期,阿波君将与大家分享百度Apollo L4级别自动驾驶系统在高精地图方面的进展和相关的内容。

    话不多说,欢迎各位开发者一起进入进阶课程第6期。

    1)高精地图与自动驾驶

    美国国家交通安全管理局将自动驾驶分为五个等级。SAE(SAE International, Society of Automotive Engineers 国际自动机工程师学会)将自动驾驶分成六个等级,国内广泛接受SAE的六等级分类方法。

    在SAE的六等级分类方法中,L0级别是人类驾驶,L1到L3级别是辅助驾驶,L3以上是自动驾驶。

    在L1—L3辅助驾驶级别,常见的很多车型都已经配备其中的一些功能,比如偏离预警、碰撞预警和自适应巡航等。

    L3级别以上的自动驾驶研发是现在Apollo正在做的事情,百度内部本身分L3和L4。

    L3级别基本上已达到一定程度上的自动驾驶,它不需要车辆驾驶员来关注环境,只需要在紧急情况下接管;L4级别则可在限定区域下完全做到自动驾驶。

    L5级别可能是比较遥远的状态。现在有些厂商宣称L5级别自动驾驶可以做到完全没有人员操控,车辆能处理所有的情况。

    但这需要依赖于技术能够发展到非常好的阶段,到时候所有的道路情况车辆才能理解和处理。

    从分类等级里面可以看到,L3级别以下不需要高精地图,但在L3、L4级别,高精地图是标配。

    发展到L5阶段是否需要高精地图?到目前为止还不确定在目前的情况下,如果没有高精地图,L3、L4级别的自动驾驶很难实现。


    2)什么是高精地图

                                                                           高精地图的定义

    传统地图的技术不是不精确,而是尚未达到自动驾驶的需求。

    用于L3、L4级别自动驾驶的高精地图,对整个道路的描述更加准确、清晰和全面。高精地图除了传统地图的道路级别,还有道路之间的连接关系,专业术语叫Link。

    高精地图最主要的特征是需要描述车道、车道的边界线、道路上各种交通设施和人行横道

    即它把所有东西、所有人能看到的影响交通驾驶行为的特性全部表述出来。

    第二个特征是实时性实时性是非常关键的指标,因为自动驾驶完全依赖于车辆对于周围环境的处理,如果实时性达不到要求,可能在车辆行驶过程中会有各种各样的问题及危险。

    高精地图更类似于自动驾驶的专题组,但国内可能为了称谓方便还是称它为高精地图。高精地图并不是特指精度,它在描述上更加的全面,对实时性的要求更高。


    3)高精地图与导航地图

                                                                           导航地图与高精地图的差别

    左边是我们经常用到的一些电子导航地图,它的表述形式倾向“有向图”结构,把道路抽象成一条条的边,各边连通关系构成整体上的有向图。这类似百度地图、高德地图、谷歌地图的做法。

    导航地图只是给驾驶员提方向性的引导。识别标志标牌、入口复杂情况、行人等都是由驾驶员来完成,地图只是引导作用。导航地图是根据人的行为习惯来设计的。

    高精地图完全为机器设计的。因为对于道路的各种情况、人都能理解,但是对于车辆来说它完全不理解。

    右边的图是比较典型的复杂路口,包括人行横道、红绿灯、限速标牌、车道左转右转类型。

    我们可以看到图中的路口中间有虚拟的连接线。真实道路中不存在连接线。连接线是为了让车辆更好的去理解环境,并在高精地图上表示出来。通过这一步,在人类构建的交通设施环境下,自动驾驶车辆便能运行。


    4)高精地图---无人驾驶的核心基础模块

                                                                       自动驾驶领域对功能模块的划分

    高精地图可以作为自动驾驶的「大脑」。「大脑」里面最主要是地图、感知、定位、预测、规划、安全。综合处理成自动驾驶车辆能接受的外部信息,并统一运行在实时的操作系统上。

    ROS是业界普遍接受的实时操作系统,百度内部也在研发自己的操作系统。

    编者注:

    在2019CES的Apollo 3.5发布会上,Apollo正式发布首个自动驾驶高性能开源计算框架Cyber RT。

    Apollo Cyber RT系统是 Apollo 开源软件平台层的一部分,作为运行时计算框架,处于实时操作系统 (RTOS) 和应用模块之间。 

    Apollo Cyber RT作为基础平台,支持流畅高效的运行所有应用模块。

    车上配备的传感器类似于人的感知系统,用来感知外部环境;自动驾驶车辆会把感知的结果通过「大脑」处理后发送给控制系统。

    HMI人机交互接口前期主要用于内部调试,后期当自动驾驶车辆量产后,需要用户输入目的地等信息。

    因此,高精地图对于感知、定位、规划、决策、仿真和安全都是不可缺少的。

    下面让我们来逐一了解高精地图模块与其他模块之间的关系。


    5)高精地图与定位模块的关系

                                                        视觉与高精地图结合是比较典型的视觉定位方法

    现在主流的自动驾驶的定位方案有两种:一种是基于点云,另一种是基于Camera其本身都是一种对周围环境的感知。

    感知后是Feature提取,提取之后可以通过特征匹配最终得到精确结果。

    自动驾驶车辆在路口“看”到建筑物,然后通过激光雷达能搜到点云的信息,通过点云的特征提取,然后通过复杂的组合变换、视角变换,最终通过跟周围环境的比对能得到比较准确的定位坐标。

    目前主流Camera定位的视觉方案,会实时做Location Feature的提取。在HDMap里面也存储了对应的一些Location相关的特征。经过两个提取特征的比较后可以得到相对准确的定位位置信息

    Camera下有GNSS,雷达也有。有初值之后可以减少搜索的范围,在工程上可以搜到更好的结果。

                                                                                         路边特征/车道线对比

    左侧「路边的特征」图片是我们利用粒子滤波提取路边特征的演示。

    车辆在初始位置时,Camera可以观测到在它左边有一棵树。这棵树可能是高精地图的Feature,通过Feature我们知道车辆可能的位置。

    下一刻,Camera观测到它右边又有一棵树。通过这两个Feature的比对,再通过概率性叠加计算,几次迭代后就可以大概确定车辆所在道路的位置。

    道路上的Feature是非常多的,除了树以外,也可能是车道线。

    右侧「道路车道线」图片是基于车道线的匹配情况演示。通过Camera、Deep Learning和实时的检测模块,系统能够实时地检测到车道线。

    从右图可以看出左边的车道线匹配情况不太好,右边的车道线匹配比较好,这时候能大概的确定我们在右边车道线对应的相关位置。

    高精地图里面由定位提供的Feature有很多,例如电线杆、车道线、停止线和人行横道等都能提供很多的约束信息。


    6)高精地图与感知模块的关系

                                                            超距离感知、障碍物感知与红绿灯感知

    自动驾驶车辆搭载的传感器类型有很多。但64线激光雷达、Camera和Radar等传感器都有一定局限性。

    64线激光雷达号称有一百米的检测距离。但实践中超过60米之后,点云本身已非常稀疏,60米外检测的可信度会继续下降。

    自动驾驶车辆在行驶中如果遭遇洒水车,或者碰到雾霾天气,对激光雷达的检测可信度也会有很大影响。

    Camera的局限更大,在夜间、逆光的情况下很难达到非常好的视觉效果。

    Radar的穿透能力很强,但精度不高。

    所以基于这些传感器本身的局限性,高精地图能够提供非常大的帮助。

    开发者可以把高精地图看作是离线的传感器,在高精地图里,道路元素的位置都被标注好了。

    由于物体的遮挡影响,自动驾驶车辆在某些地方看不到左下侧/比较远的红绿灯。

    在高精地图里提前标注红绿灯的三维空间位置后,感知模块就可以提前做针对性的检测。

    这样做不仅可以减少感知模块的工作量,而且可以解决Deep Learning 的部分缺陷。识别可能会有些误差,但先验之后可提高识别率。 


    7)高精地图与规划、预测、决策模块的关系

                                                        高精地图可以帮助车辆做到先验信息/轨迹约束/预测选择

    规划、预测和决策也是自动驾驶里非常重要的模块。

    「规划模块」完成的工作主要有两个:第一是A点到B点的长距离规划第二个是短距离规划

    自动驾驶车辆在行驶过程中面临动态环境。其中包括道路交通的参与者,比如其他车辆和行人。我们要根据障碍物的实时位置及时地做局部规划。

    在Apollo源码里有Planning的模块,是用来专门研究规划的。

    有了以上两个层面的规划之后,还需要预测。「预测模块」的作用是把其他道路参与者的可能行驶的路径轨迹和行动预测出来。

    「决策模块」主要是根据规划和预测的结果决定自动驾驶车辆是跟车、超车还是在红绿灯灯前停下等决策。

    「控制模块」是把决策结果分解为一系列的控制行动,然后分发给控制模块执行。

     从以上分析可以看到,规划、预测、决策和控制的每个步骤都与高精地图有密切的关系。

    高精地图的规划是Lean级别的,传统导航只需知道点到点的信息。对于高精地图而言,规划需要知道从哪个Lean到哪个Lean,是一系列Lean的序列。

    规划的第二个层次是Planning。

    在轨迹约束中,经高精地图运算后,自动驾驶车辆避让时会清楚地知道目的地在哪/怎么选,并提供可行的解空间。

    预测的体系比较复杂,但底层仍依赖于高精地图。

    例如,自动驾驶车辆「看到」其他车辆在左转车道上,系统会预测此车辆很大概率上要左转;若是「看到」其他车辆在右转车道上,系统会预测此车辆很大概率上要右转;「看到」行人在人行横道上,这时候红绿灯是绿的,系统则预测行人要过马路。

    以上便是高精地图给规划、预测和决策模块提供先验的知识,高精地图能够让车辆决策更加准确。


    8)高精地图与安全模块

                                                          自动驾驶车辆联网后,遭受攻击无可避免

    自动驾驶的主要目标是能够取代人类司机,能够取代的前提是自动驾驶车辆必须足够的安全。

    安全的维度有很多。驾驶算法的稳定性和对场景的处理能力也属于安全范畴。

    今天我们着重讲安全模块与高精地图的关系。

    自动驾驶车辆有很多传感器,当自动驾驶车辆上路之后,会出现很多质疑的声音。

    联网的自动驾驶车辆可能被攻击。因为所有的东西一旦联网,就存在各种各样的隐患。

    自动驾驶车辆可能遭受4个维度的攻击:传感器、操作系统、控制系统和通信系统。

    传感器是自动驾驶车辆辆上通用的模块,相当于IMU惯性测量单元,它对于磁场是非常敏感,如果我们在车辆周围放一些强磁场,会影响它测量的准确度。

    轮速器也有风险。车轮变形和损坏都会影响测量精度。

    激光雷达依赖于激光反射。如果我们在周围环境上加载人工的反射物或假的红绿灯,就会让我们的车直接停下。假的GPS信号和激光也会对系统造成干扰。

    定位模块依赖于高精地图提供的信息来做运动学的约束;激光雷达依赖高精地图做一些三维点的扫描。

    Apollo提供的定位方案基于激光雷达反射值。反射值不准确就会对定位精度有影响,红绿灯对规划决策控制也有很大的影响。

    针对任何一种攻击,目前来说,还很难有全面有效的方法来防止问题发生。

    高精地图能在这里面起什么作用?

    高精地图能提供离线的标准信息。比如说,激光雷达在场景中扫描到物体,通过与高精地图中的信息进行对比匹配。如果结果不一致,我们可以大概率地认为此地有问题,这就是通过多传感器的融合来解决安全问题。

    9)高精地图与仿真系统

                                                             仿真系统是自动驾驶非常重要的模块

    自动驾驶车辆的成本很高。车辆的成本几十万,64线激光雷达的成本在8万美元。

    实际情况中,开发者很难把所有的策略迭代都放在车上去测试,所以需要非常强大的仿真系统。

    仿真的主要问题是「真实」,怎样做到「真实」?

    Apollo的仿真系统主要是基于高精地图/真实场景来构建。仿真场景回放后,和真实上路的实际情况相比,可以基本保证Gap不会很大。

    在实际测试的过程中,Apollo的测试人员也会录一些Bag,记录实测中遇到的一些问题,并放到仿真系统里去做测试。

    高精地图为仿真地图提供了最底层的基础结构,能让仿真系统更好的去模拟真实道路的场景。

    没有高精地图的高可靠性,L3/L4自动驾驶无法落地。


    10)高精地图的作用---静态的Perception

                                                                      高精地图可将人类经验赋予自动驾驶系统

    上图是几个非常典型的、难理解的场景。

    第一是在重庆的某地。路网非常复杂,我们目前的技术从算法层面无法理解如此复杂的交通场景。

    第二个是雪天。雪天是非常难解的场景,雪天时路上的车道线全部被盖住了,不管是基于视觉还是雷达都无法正常运行。

    2018年谷歌IO大会上提出了通过深度学习能够解决雪天的场景。在下雪过程中,激光雷达在扫描到雪花之后会误报出很多障碍物,通过深度学习能够把激光雷达上检测到的雪花障碍物过滤掉,最终得到跟没有下雪的场景一样,但是具体效果怎么样,并没有具体的数据披露。

    第三个是复杂的红绿灯,这种红绿灯即使人看到也不知该如何处理。

    高精地图是静态的Perception。机器理解不了,我们可以把人理解的经验赋予给驾驶系统,相当于把人的经验传授给它。

    11)高精地图的作用---弥补系统性缺陷

                                                                        高精地图可以弥补系统性缺陷

    自动驾驶需要非常复杂的计算系统,4G的传输速度并不能满足现阶段自动驾驶的海量数据传输需求。

    64线激光雷达、Camera和其他传感器,每时每刻都会产生巨量的数据,这些数据不能传回云端,就不能采用互联网的模式:通过云端计算把结果发送给终端。

    5G是否能达到数据传输的要求还需要再验证。目前从5G的宣传层面来看,能够达到数据实时传输的效果,但是5G的普及还需要时间。所以我们现在把大量的数据都放在终端。

    Apollo的自动驾驶车辆后面有非常大的计算单元。基于英特尔工控机,Apollo把所有的计算都放在车上,这会对计算速度和实时性有很大的影响。

    我们希望Apollo的各模块都能达到实时级的响应,但是自动驾驶车辆的计算量太大,想要达到实时级的响应,仍需其他模块的辅助。

    举个例子,高精地图告诉感知/控制模块,在你的双向通行的车道中有栅栏隔离,对向车道的车不可能过来,系统就可以放弃检测对向车道上的障碍物,有效地降低系统负担。

    传感器有局限,但高精地图给自动驾驶提供了超视觉、超过传感器边界的远距离感知。


    阿波君说:

    在学习过程中,开发者不仅可以在Apollo开发者社区小程序上对课程内容进行提问,还可以在开发者微信群中交流学习心得,共同学习自动驾驶技术。

    开发者社区还将在公众号上定期推送课程相关的技术干货,全程陪伴大家共同进步。祝Apollo开发者们顺利完成《Apollo自动驾驶进阶课程》的学习,在自动驾驶道路上越走越远!

    阿波君还欢迎大家在小程序内晒出学习笔记,也可以加入开发者交流社群与大家交流互动,有好礼相送!

    观看/阅读完该节课程后在开发者社群及小程序「社区问答」版块内上传你的课程笔记截图;手写笔记/电脑文档均可即可联社区小助手获取百度周边纪念品1份。赶快来撩吧~比心~

    展开全文
  • 高精地图与自动驾驶的关系——主讲人:刘阳 百度自动驾驶事业部 研发工程师 1.高精地图是为自动驾驶而生的,L3/L4级别的自动驾驶必备。 2.什么是高精地图? 3.高精地图与其他模块的关系 4.高精地图的作用

    1. 高精地图与自动驾驶的关系

    主讲人:刘阳 百度自动驾驶事业部 研发工程师

    1. 高精地图是为自动驾驶而生的,L3/L4级别的自动驾驶必备。
    2. 什么是高精地图?
      (1)高精地图不是狭义上精度高,而主要体现在一下两个特性上
      (2)更加准确全面清晰。表述所有能看到的影响交通驾驶行为的元素
      (3)具有实时性,实时反映当前道路情景
    3. 高精地图与其他模块的关系
      高精地图是无人驾驶的大脑,是核心基础模块。在定位、感知、规划、安全、预测、仿真等阶段都是不可缺少的。目前RTOS多数是ROS,百度也在研发自己的操作系统。高精地图接收图中左侧各自传感器的内容,并把感知结构经过自己的处理后传送给控制系统,也提供一些与用户交互的接口。
      高精地图
    • 高精地图与定位模块
      两种常用的定位方案:视觉定位/点云定位、基于camera定位。感知、特征提取、特征匹配、组合变换、视角变换
      (1)视觉定位/点云定位
      点云定位/视觉定位
      一种典型的视觉定位:通过粒子滤波可以观察到一些特征,并得到位置特征。在行驶中捕获其他特征,通过叠加计算和几次迭代得到它在道路上的位置。
      (2)基于camera
      基于camera
      通过camera得到一些实时位置特征,与百度高精地图中的预收集的位置元素进行匹配,从而确定位置信息。

    • 高精地图与感知模块
      单一传感器存在一些局限,比如距离、逆光、穿透性问题。高精地图中标注了所有道路上的特征,可以一定程度上预测前方特征,提高识别率,减少误识别,改善深度学习的一些缺陷。

    • 高精地图与规划、预测、决策模块
      (1)规划:已知始末位置的长距离规划、短距离动态规划–Apollo源码planning模块。
      长距离规划针对静态环境,相较于普通导航地图,高精地图得到的是一系列车道的序列。
      短距离动态规划需要高精地图提供可能轨迹、可能变换到的位置的相关信息等一个可行的解空间。
      (2)预测:预测其他道路参与者的可能轨迹与动作。
      高精地图提供一些经验,比如旁边车辆行驶在右转车道,通过高精地图提供的知识,做出车辆可能右转的预测。
      (3)决策:得到自身行为以及轨迹的决策

    • 高精地图与安全模块
      针对无人驾驶车可能面临的一些攻击,为提高安全性,高精地图提供了一个离线的标准,比如某一个传感器的感知结果与高精地图不匹配,那么就会引起注意,并通过多传感器感知融合得到一个确切的答案。

    • 高精地图与仿真系统
      仿真中可能出现一些碰撞的仿真,而又不可能损失大量的无人驾驶汽车去做现实中的强化学习。高精地图可以搭建与真实场景高度一致的仿真场景,协助自动驾驶的测试开发工作。

    1. 高精地图的作用
      (1)把人类对世界的感知理解赋予自动驾驶系统
      (2)扩展传感器检测边界,弥补系统性缺陷
      (3)把大量计算放到终端,达到实时级的响应
    展开全文
  • 百度apollo高精地图应用介绍,另外还包含了自动驾驶学习资料 涵盖感知,规划和控制,ADAS,传感器; 1. apollo 相关的技术教程和文档; 2. adas(高级辅助驾驶)算法设计(例如 AEB,ACC,LKA 等) 3. 自动驾驶鼻祖 ...
  • 自动驾驶高精度地图,另外还包含了自动驾驶学习资料 涵盖感知,规划和控制,ADAS,传感器;
  • 高精度地图应用,另外还包含了自动驾驶学习资料 涵盖感知,规划和控制,ADAS,传感器;
  • 自动驾驶高精度地图应用,另外还包含了自动驾驶学习资料 涵盖感知,规划和控制,ADAS,传感器;
  • 高精地图与自动驾驶(下) 二、高精地图与自动驾驶 谈到高精地图自动驾驶的作用,可以对比自动驾驶和人类驾驶的流程的相通性。 人驾驶的时候以眼睛为主,耳朵辅助观察测量环境;自动驾驶车用多种传感器包括摄像头...

    高精地图与自动驾驶(下)

    二、高精地图与自动驾驶

    谈到高精地图对自动驾驶的作用,可以对比自动驾驶和人类驾驶的流程的相通性。

    人驾驶的时候以眼睛为主,耳朵辅助观察测量环境;自动驾驶车用多种传感器包括摄像头、毫米波雷达、激光雷达等来构建驾驶环境。

    人可以通过观察环境或用观察的环境对比记忆完成自定位;自动驾驶汽车通过传感器感知到的环境和高精地图对比完成定位。

    人类完成驾驶决策主要依靠大脑思考和判断;自动驾驶车通过人工智能和规则完成决策,高精地图在其协助进行路径规划。

    最后在控制环节,人是通过小脑运动神经来操控车辆;自动驾驶汽车则需要自动化控制的系统来完成,在这一环节中高精地图的坡度、曲率、横坡等也发挥作用。
    在这里插入图片描述
    通过以上的分析,高精地图对于自动驾驶的作用也就非常清晰了。
    在这里插入图片描述
    最重要的当然是高精定位,然后是环境感知辅助(比如把道路上的红绿灯位置做进高精地图中),当然行车路径规划则牵涉到自动驾驶汽车的规划和决策。

    此外,在云服务方面,很多时候有一些超视距的路况需要通过云服务来告知自动驾驶汽车,这其实也是可以通过高精地图来发挥作用。

    1、高精定位方法

    具体到高精定位的方法上,其实是将自动驾驶汽车的环境感知结果与高精地图进行对比,得到车辆在高精地图中的精确位置和姿态。实现高精定位是自动驾驶汽车路径规划的前提条件。
    在这里插入图片描述
    一类是基于矢量Object的定位:
    在这里插入图片描述
    一类是基于各种传感器探测到的特征和预制的feature map(特征图)对比来定位。如道路指纹:
    在这里插入图片描述
    上图实例中可以看到右侧画面中的红线是用GNSS+IMU定出来的轨迹,与车辆行驶的绿色轨迹相比存在较大的误差。

    另一个实例是基于RTK级绝对定位:
    在这里插入图片描述
    较高的绝对定位精度除了可以提高地图匹配的搜索效率,在传感器被遮挡的时候也可能提供一定的备份功能。

    2、路径规划

    在驾驶决策规划方面,高精地图主要还是解决了自动驾驶汽车的路径规划问题。车辆获得自己在高精地图中的位置后,通过高精地图的车道级拓扑关系,可以计算出车道级导航路径,车道级导航路径则可以为后续自动驾驶汽车避障和后续车辆控制(加速、减速、方向盘控制)提供路径输入。
    在这里插入图片描述
    上图说明了导航路径规划和用于自动驾驶的车道级路径规划,以及车辆避障之间的关系。车道级路径规划的依据是高精地图,避障部分涉及大量的车辆动力参数,是车企专精的部分。

    另外,还与戴姆勒合作,利用千寻的绝对定位服务完成了施工区域、施工人员、车辆的道路安全预警应用DEMO,在基于高精地图的云服务方向做了探索。

    三、如何生产高精度地图

    1、采集

    数据采集需要依靠采集车,采集的设备有几个比较核心的部件,包括激光镭达、IMU(惯导系统)、GNSS、高精度轮速仪以及相机等。
    在这里插入图片描述
    国外一套成熟的移动激光测量设备,这个设备上有两个高频单线激光镭达、6个摄像头(工业相机)以及一个GNSS天线,还有IMU。

    激光镭达是有两个360度激光扫描仪交叉扫描,大大降低了漏扫的可能。

    2、生产流程

    第一步是户外作业(简称“外业”),也就是使用采集设备对外部环境、道路的数据进行采集。采集设备中IMU(惯导系统)的作用也是非常重要的,它可以告诉你设备当前的姿态。

    所有的部件都向IMU标定,当车辆向左晃的时候,所有设备向左晃;当车辆向右晃的时候,所有设备也向右晃。数据拿回来以后,通过IMU的解算,就能把每一个设备采到的东西很准确地对应到激光点云上去。
    在这里插入图片描述
    外业采回来的数据输出的结果包含高精轨迹、点云、图像。点云采回来以后,会首先做全自动的识别,这个过程采用了深度学习技术。经过全自动识别后,还会有人工的检查和交互式识别补充。

    识别工作和编辑工作做完以后,就会进入到质检环节。质检环节通过工具检查、人工检查后,最后还会有路测验证。
    在这里插入图片描述
    全自动的识别有重要的意义,因为高精地图主要的数据源是激光点云,体积非常大,处理难度大。自动识别让生产效率大幅度提升,否则高精地图的成本也非常高,而这个成本最终会转移到用户身上。自动识别是机器识别,表现更加稳定可靠。

    有意思的一点是,大家经常会提自动识别的识别率问题。实际上,对于地图生产厂商来讲,更重要的是识别的准确度和可靠度。
    在这里插入图片描述
    而车道线的识别其实也是类似,车道线的识别占整个地图生产量的70%

    左右,所以在生产高精地图的第一天就用上了交互式的车道线识别。

    使用深度神经网络,现在也迁移到点云识别上来。
    在这里插入图片描述
    大量高质量的训练数据对深度神经网络至关重要。对于深度神经网络的技术本身没有多大差距。

    如果你采集了大量的数据去训练神经网络,那么这个网络就会变得越来越聪明。高精地图和图像、点云叠加后即可生成非常好的神经网络训练数据,之后补充标定一些特殊的地物即可。
    在这里插入图片描述
    目前,基于通过摄像头传感器和深度神经网络训练出来的识别系统,车辆行进过程中可以对路边新增的标牌很好地识别(如上图),系统可以更新地图、重新绘制地图,下一步就是要对传感器采集到的数据进行融合。

    四、高精地图的挑战

    高精地图的发展本身也是有很多挑战的。

    1、高精地图到底长什么样?

    现阶段依然取决于车辆传感器,除非真的开发出了不依赖于传感器的高精地图,无论车辆用的什么传感器都能用。未来会有什么变化,现在还未可知。

    2、高精地图到底应该更新多快?
    在这里插入图片描述
    取决于车端的智能程度以及车的承受能力,根据自动驾驶方案的不同,很可能对更新频率的要求也不同。

    3、高精地图的绝对精度究竟应该多高?

    绝对精度是多少?是否一定要做到亚米级?

    4、高精地图的更新手段?
    在这里插入图片描述
    目前建立的导航地图的更新体系已经非常高效。

    有UGC、来自政府的数据、来自行业的数据、自身强大的众包队伍以及专业的采集队伍。现在的更新已经是组合的形式,并且大量使用云计算、大数据去做数据更新的体系。这套体系在自动驾驶阶段会变得更强,图商需要去加强建设这样的体系。

    在自动驾驶阶段,高精地图更新的终极方案应该是UGC。

    因为在车端装配着各种各样的传感器,也会越来越多地装配高精地图,通过建立驾驶模型,能知道在现场到底什么东西发生了变化,把这些变化传至云端做融合、校正。

    可以交由高精地图生产线进行补充采集和生产。经过不断循环这一过程,使高精地图新鲜度越来越高、使UGC得来的高精地图越来越精准。

    当然,这样的生态环境需要车厂、各级供应商、图商等自动驾驶相关技术的提供者不断共同研究测试,仅有图商自己测是远远不够的。

    5、测绘政策的挑战

    对于图商来说,高精地图的一个绕不开的挑战就是测绘政策。

    大家都知道,中国的地图是偏转后的地图,对地图本身的偏转,测试来看是没什么太大影响的。

    要使用偏转地图,在车端就需要有偏转插件,偏转插件在传统地图上会有随机抖动。根据有限的观察,抖动的幅度最大可达1.7米。如果厂商的定位较多依赖于绝对定位,那么插件的偏转可能导致车道匹配错误。正在密切配合国家地理信息局测试调整可适应自动驾驶需求的偏转插件。

    此外,从导航地图到高精地图,内容和形态已经发生了很大的变化。以往,对于导航地图进行审查时,关注的是边界、敏感岛屿以及敏感的POI等等。而到了自动驾驶地图上,这些内容都将消失,审图的重心也会转移。

    比如,在现行的法规中,道路的最大和最小曲率不能在地图中表达。而这些内容往往是自动驾驶汽车非常需要的。

    还有一个更远的问题,那就是“全民测绘”。现在的汽车、手机其实某种程度上都有测绘的行为,记录轨迹、拍摄照片等等,这些操作都是牵涉到测绘政策问题。所以需要业界同仁共同配合国家地理信息局为调整制订政策法规提出必要的技术和业务参考。

    五、实践

    从整体产业来讲,自动驾驶行业有空前的复杂性,需要更广泛密切的产业协作。作为图商,更多强调为产业赋能。
    在这里插入图片描述
    定位是以高精地图数据产品为基础,持续赋能自动驾驶企业,使车企顺利使用测试高精地图,最终配合车企共同实现自动驾驶高精地图云服务。
    在这里插入图片描述
    为了解决这样的问题,在高精地图上,除了提供矢量数据之外,还提供一些用于测试的应用(比如感知、定位以及车道级路径规划),通过这些应用,希望在云端构建完整的高精地图服务。

    高精地图技术复杂,充满着各种不确定性,带来全新的商业模式,又不可避免要导致法律法规变革。构建高精地图生态,依赖整个自动驾驶产业的广泛深入合作才能实现。

    展开全文
  • 本文介绍下AD自动驾驶技术的“神器”- 高精地图,也称开了挂的“地图传感器”。   一、有HD-Map之前的ADAS是如何实现车辆控制的? 在高精地图加持之前的ADAS系统,功能一般是由感知+数据处理+系统状态机+PID...

    本文介绍下AD自动驾驶技术的“神器”- 高精地图,也称开了挂的“地图传感器”。

     

    一、有HD-Map之前的ADAS是如何实现车辆控制的?

    在高精地图加持之前的ADAS系统,功能一般是由感知+数据处理+系统状态机+PID控制器(或LQR控制器)组成的。拿智能前视摄像头模块实现LKA功能为例,按照dataflow来梳理:

    1. 通过镜头和COMS图像传感器来获取单帧图片;
    2. 按照感兴趣区域(ROI,region-of-interest)裁剪图片;
    3. 图片经过灰度化、二值化,获得车道线的Lane_marklet(车道线标记小段,如图1);
    4. 通过霍夫变换,将marklet拟合成Lane_segments(车道线段,如图2);
    5. 将Lane_segments的位置从图片坐标系转换为世界坐标系;
    6. 对Lane_segments进行合并,合并不了的删除掉;
    7. 从整车CAN上抓取vehicle speed、yawrate等信号,用于计算三阶车道线模型,获得车道线的Lane_geometry。所谓的三阶车道线模型,即Lateral Offset = a0 + a1*x + a2*x2+ a3*x3 ; 其中,x - longitudinal range x X向参考距离;该距离x=V(车速) * Tpreview(sec) , T 代表0.5-1秒之间的一个标定值。a0 - 当前Y向位置; a1 - Y向速度; a2 - 曲率;a3 - 曲率变化率。
    8. 通过卡尔曼滤波器,跟踪并更新车道线的Lane_geometry(车道几何线,用于抽象车道线,如图3)的几何形状;
    9. 通过霍夫变换的信心值和车道线跟踪器的信心值,获得车道线的信心值;
    10. 将车道线信息和来自车辆CAN上的其他信息(车速、YawRate、steer angle等)传给LKA功能;
    11. LKA对各种输入信号进行数据处理,例如滤波、判断等;
    12. 计算可以直接被LKA状态机使用的判断信号,如TTLC(time to lane crossing)、Lane position、车轮外缘到车道线的距离、Lane change、Road status(路面曲率等)、方向盘转角的inhibit信号、油门踏板的inhibit信号、刹车踏板的inhibit信号等等;
    13. LKA主状态机进行LKA状态控制,状态包括:fault、off、standby、enabled、intervention left、intervention right、warning left、warning right等状态,如图6;
    14. 利用前馈PID控制器,通过引入主状态机的状态信号,以及横向速度、距离车道线横向距离、heading angle、横向加速度、路面曲率等参数,建立基于车辆运动状态和路面状态的前馈PID控制模型,计算转向扭矩。

    图1 Lane Marklet 车道线标记小段,黄色

     

    图2 Lane Segments 车道线段,红色

     

    图3 Lane Geometry 车道几何线,绿色

     

    图4 车道线检测算法框图

     

    图5 LKA功能架构

     

    图6 LKA主状态机

     

    通过上述描述,可以悉知,在ADAS功能中,根本没有planning模块,车辆控制完全没先验轨迹(如图7的绿色轨迹段)的存在,控制全靠计算车辆与两个车道线之间的动态关系,利用PID控制器直接生成控制扭矩,来控制车辆的状态。而AD领域的车辆控制,是有先验轨迹的存在的,所有的精华都在先验轨迹的生成,只要计算出先验轨迹,车辆的真正控制非常简单,例如按照先验轨迹分解出车辆的速度-转角控制量,然后速度再分解成加速度、减速度。加速度对应油门,减速度对应刹车,转角对应方向盘转角,车辆就可以按照先验轨迹作为pilot,最大程度的拟合先验轨迹行驶。这也就是所谓的ROS机器人技术路线(ROS,Robot Operating System 机器人操作系统)。这条“先验轨迹”,其实就是像工厂里的物料小车一样,只不过工厂的物料小车是按照路面上事先贴好的磁性轨迹行驶的(如图7),而智能驾驶车的先验轨迹是存在于planing算法模块中的。

    图7 “先验轨迹”trajectory

     

    图8 物料小车的磁性轨迹

     

    而利用PID控制器这种粗暴的控制方式有很大的缺点。第一,算法与功能落地(即在车上的匹配)之间,有个巨大的、技术逻辑上的“模糊地带”,这个地带没有明显的符合逻辑的方法可以帮助你顺利的将算法使用在目标车型上(例如无法通过准确的仿真来测试效果),只能靠工程实践(也就是大量测试、标定、试参数)来缝合这个模糊地带。这就是传说中的“标定”!为什么汽车行业有大量的标定工程师?例如,发动机标定工程师、安全气囊控制器算法标定工程师、ADAS feature标定工程师,就是因为功能在车辆上的“落地”应用,需要大量的功能标定工作,说白了就是各种试参数,例如凑PID参数,凑标定系数,有时候完全就是在硬标。第二,由于标定环节的存在,为了能够更加准确的评判标定的效果和功能的性能(performance),只能设置更加复杂、巨大的测试验证矩阵来cover住这种“稀里糊涂”的功能匹配方式。

     

    二、有了HD-Map之后的AD是如何进行车辆控制的?

    首先,先贴出目前主流的高精地图的数据格式,和包含的车道信息。

    typedef enum _GUIDETYPE
    {
        GUIDE_CAR_POS = 0, //车辆位置
        GUIDE_LINE,
        GUIDE_REGION,
        GUIDE_OBJS,
        GUIDE_MANEUVER,
    
        GUIDE_MAX = 0xFFFFFFFF
    } GUIDETYPE;
    
    typedef struct _DiffPosition
    {
        int8        x;                 //经纬度^8后相对于上一个点的差值,第一个点存储相对于指定位置的差值
        int8        y;
        int8        z;
        int16       slope;              //Value: [-9000,9000],Unit: 0.01 degree
        int16       superelev;          //如上
        int16       heading;            //Value: [0,36000],Unit: 0.01 degree, 北顺
        int16       curvature;          //Value: [-10000,10000],Unit: 0.0001/m
                                        //For example, 0.0123/m 表示为 Curvature =123
                                        //- for right turn; + for left turn;
                                        //Right or left is based on the link positive direction
    } DiffPosition;
    
    typedef struct _GuideLaneCenterline // 分段内的单条引导线,均为所属分段的车道中心线
    {
        uint32  laneType;               // 当前引导线所属车道属性
                                        // bitmap, from right to left
                                        // 1:Regular Lane
                                        // 3:Acceleration Lane
                                        // 4:Deceleration Lane
                                        // 3 and 4: Compound lane
                                        // 5:HOV Lane
                                        // 7:Slow lane
                                        // 8:Passing/Overtaking lane
                                        // 9: Hard shoulder lane (no geometry) 10:Truck parking lane
                                        // 11:Regulated access lane
                                        // 17: Soft shoulder lane(no geometry)
                                        // 18: Emergency parking strip(nogeometry)
                                        // 19:Bus lane
                                        // 20:Bicycle lane (no geometry) 21:Turn Lane
                                        // 22:Reversible lane
                                        // 23:Centre turn lane
                                        // 24:Truck escape ramp
    
        uint8 laneSeq;                  // lane sequence number of cur link,
                                        // starts from 1 with the left most non-transition lane,
                                        // and +1 each time from the left to right according to the travel direction
    
        uint8 laneArrowType;            // 当前引导线所属车道上箭头类型
                                        // 0  Not applicable 没有箭头
                                        // 1 Forward
                                        // 2 Right
                                        // 3 Right and forward
                                        // 4 Left
                                        // 5 Left and forward
    
        uint8 lMarkingType;             // 当前引导线左边marking类型
                                        // 0 Not investigated 10 Single Dashed
                                        // 12 Short Thick Dashed
                                        // 13 Double Dashed
                                        // 20 Single Solid
                                        // 21 Double Solid
                                        // 30 Left Solid/Right Dashed
                                        // 31 Left Dashed/Right Solid
                                        // 32 Turn variable lane marking
                                        // 33 Single thick solid
                                        // 99 Virtual Marking
        uint8 rMarkingType;             // 同上
    
        uint16 swidth;                  // cm,车道开始位置车道宽度
        uint16 ewidth;                  // cm,车道结束位置车道宽度,若当前车道宽度没有变化swidth,ewidth相等
                                        // note:: 车道开始和结束位置宽度并非线性渐变
    
        uint16 speedMax;                // 速度单位:0.01m/s
        uint16 speedMin;                // 速度单位:0.01m/s
    
        int64 x;                        //当前引导线起始点坐标(GAUSS 单位 cm)
        int64 y;
        int32 z;
        int16 posNum;                   //当前引导单元中的position点个数(每个点的坐标存储和前一个点的差值)(包含起始点,其xyz差值为0)
        DiffPosition[posNum];           //当前引导线单元的差值position点的信息(相对于前一个点的位置差值)
    } GuideLaneCenterline;
    
    typedef struct _GuidelinesSection   //当前的引导线分段,包含>=1条引导线,分段内各个引导线按照GuidelineUnit存储
    {
        int32 linkId;                   //
        int32 lenght;                   //当前路段长度,单位:cm
    
        uint8 isBridge;                 // 0 is not bridge
        uint8 isTunnel;                 // 0 is not tunnel
        uint8 TranType;                 // Transition road type
                                        // 0 means No transition zone
                                        // 1 Lane(s) opening/closing on one side- i.e. Exit, Entrance
                                        // 2 Lane(s) opening/closing in the middle– i.e. road split, road merge
                                        // 3 Only for Toll Booth area. Toll booth entrance and toll booth exit are both transition road.
                                        //   For this section of road, Lane number or Lane Width is not applicable
                                        // 4 Road width widening or narrowing or no change, but all lanes change simultaneously.
        uint16 roadForm;                // 0 Not attributed
                                        // 1 JCT(Motorway Junction)
                                        // 21 Entrance Ramp
                                        // 22 Exit Ramp
    
    
        int16 lineNum;                  //当前分段包含引导线总数,>=1,引导线按照从左到右顺序依次存储
        uint16 topoSuccessor[lineNum];  //当前分段中各个引导线和下一个分段的拓扑连接关系,现在认为连接处为自然平滑连接关系
     00000001
        uint16 topoPredecessor[lineNum];//当前分段中各个引导线和上一个分段的拓扑连接关系,其他同上
    
        GuideLaneCenterline[lineNum];   //当前分段的单条引导线存储数组,引导线Index从0开始递增至lineNum-1
    } GuidelinesSection;
    
    typedef struct _Guidelines                  // **引导线总结构体**
    {
        uint8 sectionNum;                               //当前输出引导线分段总数,各个分段按照脱出顺序从自车位置开始向前依次存储
        GuidelinesSection subSectionLines[sectionNum];  //分段引导线信息
    
    } Guidelines;
    
    // 随后点为相对于前一个点的GAUSS坐标差值 cm
    } RouteMarking;
    
    
    typedef struct _GuideSectionTopo    // 前后两条分段之间的拓扑链接关系
    {
        int16 inSegIdx;                 // 脱入分段在GuideRegion结构体中存储数组中的Index
        int16 outSegIdx;                // 脱出分段在GuideRegion结构体中存储数组中的Index
        int16 inSegLaneNum;             // 脱入分段上车道数
        int16 outSegLaneNum;            // 脱出分段上车道数
        uint16 successorLane[inSegLaneNum];  // 脱入分段各个lane对应脱出分段上的连接的lane在其数字中的index
        uint16 segType;                 // guide segment类型信息
                                        // 0: 表示当前自车车后沿路线上的分段
                                        // 1: 表示当前自车车前沿路线上的分段
                                        // 2: 表示当前自车前方第一个汇入点上其他非沿路线汇入分段
                                        // 3: 表示当前自车前方第一个分叉点上其他非沿路线脱出分段
    } GuideSectionTopo;
    
    typedef struct _GuideRegion
    {
        int16 sectionNum;                       //当前REGION中的分段个数
        int32 dsitance[sectionNum];             //各个分段起始位置到当前自车位置沿link线距离,单位cm
        RouteSection routeSection[sectionNum];  //存储分段信息
    
        int16 topoNum;                      // 前后两条分段之间的拓扑链接关系个数
        GuideSectionTopo topos[topoNum];    // 前后两条分段之间的拓扑链接关系内容
    } GuideRegion;
    
    typedef enum _ADManeuverType
    {
        ADMT_none = 0,
        ADMT_tollStation,               //收费站
        ADMT_serviceArea,               //服务区
        ADMT_notAllowOvertaking,        //禁止超车
        ADMT_allowOvertaking,           //允许超车
        ADMT_waypoints,                 //途经点
        ADMT_endpoints,                 //终点
        ADMT_enterRamp,                 //进入匝道
        ADMT_leaveRamp,                 //驶离匝道
        ADMT_rampImport,                //岔口交汇
        ADMT_overpass,                  //立交桥
        ADMT_accelerationLane,          //加速车道
        ADMT_decelerationLane,          //减速车道
        ADMT_enterMainRoad,             //进入主路
        ADMT_distanceAlongRoadTips,     //沿路行驶距离提示
        ADMT_urgencyParkingStrip,       //紧急停车带
        ADMT_tunnelEntrance,            //隧道入口
        ADMT_tunnelExport,              //隧道出口
        ADMT_leftNarrowed,              //左侧变窄
        ADMT_rightNarrowed,             //右侧变窄
        ADMT_bothSidesNarrowed,         //两侧变窄
        ADMT_narrowBridge,              //窄桥
        //todo 代码中出现JCT,但是在这里没有出现
    
        ADMT_ComplexIntersection        //复合路口
    } ADManeuverType;
    
    
    
    // 只包含lane id的link结构,用于表述maneuver上的lanetopo关系
    struct LanePath
    {
        uint32_t laneNum;
        LaneID*  pathResult;
    };
    
    typedef struct _ADManeuver
    {
        ManeuverType maneuverType;  //
        int distance;               // maneuver点到当前自车距离, cm
        Point64 pos;                // maneuver起始点绝对坐标
        int64 predecessorLinkId;    // maneuver托入link id
    
        int speed;                  // maneuver点之后的建议车速     0.01m/s
                                    // ManeuverType_enterRamp ManeuverType_tunnelEntrance ManeuverType_distanceAlongRoadTips 为当前特殊lane上的建议速度
                                    // ManeuverType_leaveRamp ManeuverType_tunnelExport 为当前maneuver点之后的建议车速
                                    // ManeuverType_accelerationLane ManeuverType_decelerationLane 为当前加减速车道终点处的最低目标车速
    
        int length;                 // maneuver为特殊路段时,特殊路段长度 cm,无效值-1, 以下类型有效
                                    // ManeuverType_accelerationLane  ManeuverType_decelerationLane
                                    // ManeuverType_urgencyParkingStrip ManeuverType_tunnelEntrance
                                    // ManeuverType_overpass // 天桥在当前行驶路段上的投影长度
    
        int overpassHeight;         // ManeuverType_overpass 天桥距离当前路线所属道路路面高度 cm 无效值 -1
    
        uint8 laneNumber;           // maneuver所在位置脱出todo:主路上车道总数
        uint8 laneSeqNum;           // maneuver所对应特殊车道在主路上的lane seqNum,对以下类型有效
                                    // ManeuverType_accelerationLane ManeuverType_decelerationLane
                                    // ManeuverType_enterMainRoad ManeuverType_urgencyParkingStrip
        uint16 suggestLanes;        // bitmap 当前自车位置建议车道
                                    // 遇到ManeuverType_distanceAlongRoadTips ManeuverType_narrowRoad ADMT_enterRamp
                                    // 等类型时候车辆便要开始为其做相应变道准备
    
        ADManeuverUnionAttribute unionAttribute;    //互斥属性存储在一个联合体中
    
        //todo todo todo
        uint8_t    lanePathNum;     // 从自车位置到maneuver所有LanePath number
        LanePath*  paths;           // 从自车到maneuver位置所有lane的topo 关系
    } ADManeuver;
    

    根据以上高精地图的结构体可以看出,拥有如此丰富的地图信息,要进行车辆控制,简直就像开了挂一样啊。假如车辆能够动态掌握自车前1公里和后0.5公里的高精地图信息的话(也有设置成前500米后200米的),完全可以站在“上帝视角”提前计算出预先需要行驶的轨迹,比如在车辆需要下高架桥的场景中,车辆自己会根据高精地图信息提前计算出一个先验轨迹,可能会是这样的:先按照本车道中心线行驶200米,然后向右换道;由于通过感知和预测,知道右侧有一辆车,在前方50m的位置正以较低速度行驶,所以换到右侧车道时,要在右侧车道行驶50m后,继续向右换道,换到驶离高架路的辅道上,然后在辅路上行驶600m,下高架路。

    当然,以上纯属是为了解释先验轨迹的概念,进行了夸张描述。事实上,一般受限于感知传感器的能力(前向毫米波雷达探测距离约170-220米,64线威力登激光雷达探测距离100米左右),一般先验轨迹的长度设置在200米左右就足够了,因为即便设置的更长,由于障碍物检测、跟踪无法超过200米的距离,因此将轨迹规划距离设置太长也没有太大意义。

    最后提一点,先验轨迹的规划,不仅只考虑车道信息,也要考虑摄像头、毫米波雷达、激光雷达等传感器感知到的车道线、交通标志、车辆、行人、骑自行车的人等等障碍物信息和道路信息。障碍物信息包括体积信息、位置信息、运动状态信息,和障碍物的轨迹预测信息。综合以上所有信息,才能规划出理想的、不会发生交通事故的 、不会违反道路法律法规的、安全的、舒适的先验轨迹!

     

    PS:所谓“先验轨迹”的说法,完全是自己杜撰出来的概念,其实真正搞自动驾驶的人从没这种说法,就是planning规划出来的trajectory。只不过我在对比了ADAS与AD的技术路线之后,感觉“先验轨迹”这个词更能说明两者之间的差异。本质上,在TJA和基于车道居中的LKA功能(Lane Centering)也有类似的轨迹概念,但是谈不上“先验”。更多的是基于YawRate拟合出的车辆历史行驶轨迹,或者直接用车道中间线作为默认的控制基准(但只是静态的,通过识别的左右车道线算出车道中间线,无法进行变道轨迹规划)。

    一般地,在高精地图中,将车道中间线作为默认的先验轨迹线,变道之后,新车道的中心线就会成为新的先验轨迹线。以车道中心线为基准,当遇到障碍物时,再在该基准上,进行新的路径规划计算,不论是道内跟车、道内躲避超车、换道超车行驶还是换道躲避等。

     

    三、车机(中控大屏)的导航是如何与智能驾驶的高精地图进行交互的?

    先介绍下导航地图与高精地图的区别。

    导航地图,英文缩写SD-Map,保存的是道路级别的信息,注意英文名road level info;导航地图的路径规划,叫做全局路径规划,注意英文名Routing(路由);

    高精地图,应为缩写HD-Map,保存的是车道级别的信息,注意英文名Lane level info;高精地图的路径规划,叫做局部路径规划,注意英文名Planning(规划);

    图9 导航地图与高精地图的Mapping关系

     

    如图8所示,实际上,无论是SD-Map还是HD-Map,都有一个相同的概念(或者叫参数),就是Road Segments(也有叫做Road Section)的,本文称作路段,路段的含义是:按照道路属性是否发生变化将连续的道路分割成路段。所谓道路属性发生了变化,例如车道线数量增加或减少了、右侧一个车道分叉了(比如下高架路的辅道,存在道路分离点),如图10所示。

    图10 路段的定义

     

    有了路段这个属性,且路段属性的唯一性。可以将SD-Map的路段与HD-Map的路段进行一对一的匹配。也就是说,当进行SD-Map的Routing规划时,将整个routing的路段编号和信息做成一个数组,发送给HD-Map,HD-Map根据编号来依次提取road segments中的lane info,用于planning规划,即先验轨迹的规划

    展开全文
  • 百度Apollo开发者社区课程学习(1)高精地图与自动驾驶的关系 自动驾驶分类 百度在做L3和L4 后者主要还是限定在规定区域内的自动驾驶 L5这种属于完全自主 目前来看 还有点遥远。 什么是高精地图 HD Map = high ...
  • 高精地图与自动驾驶(上) 前言 自动驾驶的实现主要有三个步骤:感知、决策规划、行车控制。这你走路上班/上学的逻辑是相似的:眼睛看到画面,告诉大脑,然后你就知道了自己在哪里,以及要往哪个方向走,并指挥你...
  • 参考文章 2020年高精地图市场发展现状前景分析:高精地图有望进入发展黄金期【组图】
  • 高精地图详解,高精地图与自动驾驶高精地图是如何打造的,高精地图开发的挑战,持续赋能自动驾驶,构建自动驾驶,的高精度地图数据生态
  • apollo高精度地图介绍,还包含自动驾驶学习资料 涵盖感知,规划和控制,ADAS,传感器; 1. apollo 相关的技术教程和文档; 2. adas(高级辅助驾驶)算法设计(例如 AEB,ACC,LKA 等) 3. 自动驾驶鼻祖 mobileye 的...
  • 自动驾驶级别的不断提升,自动驾驶系统需要面对处理的路况信息将越来越复杂,这不仅需要“感知、决策执行”这套核心技术体系愈发坚实强大,同时也需要其他技术体系的有力支撑,比如高精地图。 作为自动驾驶...
  • 高精地图自动驾驶的必由之路, 摘自知乎热评,极具参考价值。
  • 高精地图领航自动驾驶.pdf
  • 基于高精地图自动驾驶中法规分析应用集成解决方案.pdf
  • 高精地图自动驾驶产业链上的新蓝海.pdf
  • 自动驾驶的感知定位与高精地图解决方案-DeepMotion联合创始人-蔡锐 深度学习、SLAM、激光雷达、高精度地图
  • 5G时代的高精地图助力自动驾驶安全之路.pdf
  • 自动驾驶高精地图-概述分析

    千次阅读 2020-06-06 19:23:53
    自动驾驶系统的功能系统架构中,高精地图与定位功能紧密相关,感知模块交互,并最终支持规划和控制模块。 不同级别的自动驾驶对地图的精细程度要求不同。高精地图不仅存储Road和Lane等详细信息,而且还存储...
  • 百度apollo高精地图格式,另外还包含了自动驾驶学习资料 涵盖感知,规划和控制,ADAS,传感器; 1. apollo 相关的技术教程和文档; 2. adas(高级辅助驾驶)算法设计(例如 AEB,ACC,LKA 等) 3. 自动驾驶鼻祖 ...
  • 汽车自动驾驶系统主要可以分成三个部分:感知、决策和执行。人类驾驶员相似,核心的逻辑是先观察到道路上的具体状况,根据看到的拥挤程度、前进方向上有没有障碍物、观察到信号指示灯的状态等情况,通过大脑进行...
  • 点击上方“3D视觉工坊”,选择“星标”干货第一时间送达“高精地图自动驾驶来说有多重要?在自动驾驶上和一般的导航地图有什么区别?”1YiLu目前阶段而言非常重要,但现在也有不需...
  • 自动驾驶中按照不同的定位实现技术,高精度定位可以分为三类:1)基于信号的定位,典型代表就是GNSS定位,即全球卫星导航系统;2)航迹推算 -IMU(惯性测量单元),其根据上一时刻的位置和方位推断现在的位置和方位...
  • 自动驾驶软件结构 HD MAP介绍 坐标系/定位/感知/规划 定位主要用GPS-RTK, 差分GPS精度:分米 将汽车的有限性能应用到动态物体的识别当中去,是很有意义的,因为静态的物体信息可以通过HD map提前...
  • 从另外一个角度来说高精地图自动驾驶的重要性,目前做自动驾驶的企业办理导航电子地图甲级资质是一个趋势,而高精地图的采集,就需要导航电子地图甲级资质才可以进行。全国导航电子地图甲级目前一共只有29家企业,...
  • 无人驾驶高精地图自动驾驶的必由之路

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,047
精华内容 818
关键字:

高精地图与自动驾驶