百度无人驾驶入门课程,记录一
无人驾驶工程师,一起塑造无人驾驶未来,从这里开始!
Google无人车之父及Udacity创始人Sebastian hrun、Udacity无人驾驶项目主管 David Silver、Apollo 平台研发负责人王京傲、Apollo平台资深架构师缪景皓、Apollo 产品负责人周达文、pollo 主任架构师曲宁、pollo 资深架构师张伟德、pollo 软件工程师许珂诚、pollo 软件工程师张亮亮、pollo 软件工程师罗琦。无人驾驶核心技术模块出发,讲解高精地图、定位、感知、预测、规划、控制等模块知识。在帮助零基础学员了解无人驾驶的基本原理与整体框架,初步掌握运用无人驾驶技术在各个模块中的主流算法,并熟练运用 Apollo 自动驾驶开放平台所使用的自动驾驶算法。该课程免费,学习时间约4周,难度初级,教学字幕:中英双语。
Udacity无人驾驶项目负责人David Silver 表示: “在全球无人驾驶技术人才奇缺的宏观现实下,如果你对无人驾驶汽车感兴趣,或者有志于从事无人驾驶开发的工作,现在就是最好的时机!”
课程记录
第一课:无人驾驶概览
了解无人驾驶车的关键部分与 Apollo 团队架构,开启无人驾驶入门的学习路径。
2、学习Apollo课程
3、你学到什么
讲解 Apollo 无人驾驶开源平台的主要部分包括高精度地图、定位、感知、预测、规划、控制
定位,汽车利用激光和雷达数据将这些传感器感知内容与高分辨率地图进行对比,使汽车能够以个位数厘米级精度进行定位;
感知,将了解无人驾驶车如何感知这个世界,深度学习感知工具如分类、检测和分割;
预测,用于预测其他车辆或行人可能如何移动,一种方法称为递归神经网络可对其他物体随时间的运动进行跟踪并使用该时间序列数据预测未来;
规划,如何将预测与路线相结合以生成车辆轨迹;
控制,如何使用转向、油门、制动来执行规划轨迹;
将了解无人驾驶车的基本工作原理。
4、什么是无人驾驶
交通的发展历史,一百万年前,双脚;大约四千年前,马车;一百年前,汽车;现在,无人驾驶车。
为什么我们需要无人驾驶车?最重要原因是安全,还有减少时间成本。
汽车工程师已建立并确定了6个等级的无人驾驶车:
级为基本等级,驾驶员是系统的唯一决策者
1级为驾驶员辅助,车辆为驾驶员提供转向或加速支持如巡航控制
2级为部分自动化,车辆自动控制几项功能如自动巡航控制和车道保持
3级为有条件的自动化,车辆自主驾驶
4级为高度自动化,车辆控制、驾驶方面不期望驾驶员的介入
5级为最高级别,完全自动化,应与人类驾驶员的水平一样高或比其更高
2017年 百度发布了名为 Apollo 的开源无人驾驶项目,该平台帮助合作伙伴整合自有车辆和硬件系统以构建完整的无人驾驶系统。
5、Sebastian欢迎辞
6、无人驾驶的运作方式
我认为无人驾驶车包括五个核心部件计算机视觉、传感器融合、定位、路径规划、控制,如图所示
计算机视觉就是我们通过摄像头图像弄清楚我们周围的世界是怎样的;
传感器融合是我们合并来自其他传感器的数据如激光和雷达;
路径规划来绘制路线,帮助我们到达我们想去的地方;
控制就是我们为了让汽车沿着我们在路径规划期间建立的轨道;
下图是Vivek 正在使用计算机视觉寻找颜色、边缘以及渐变色从而定义这条公路上的车道,利用深度神经网络或深度学习识别车辆或车道线;
使用传感器增加对这个世界的理解如雷达和激光器,获得摄像头很难测量到的测量值,获得信息如我们与其他汽车之间的距离、周围其他物体的移动速度。
下图是Carla 使用 El Camino Real 获取的激光扫描点云数据,对周围世界的一个360度扫描。
在环境中定位自己,准确度要精确到一位数厘米级别,要用复杂的数学算法以及高清晰度地图来定位车辆。
如下图正在做的是使用一个粒子滤波器,当他的蓝色车辆在模拟器中移动时,这个滤波器就会测量它与各种地标之间的距离,在哪里会看到地标,并将其与地图进行比较,找出在那个世界的准确位置。
路径规划,如下图,高速公路模拟器中建立一个路径规划器,用来预测道路上的其他车辆去向,最终建立一系列路径点。
车辆遇到其他交通工具时它必须弄清楚是否应该放缓速度并保持其状态或者向右移位还是向左移位。
控制就是我们如何转动方向盘、打开油门、并踩下制动器从而使汽车沿着我们在路径规划期间建立的轨道行驶。
如下图,跑道模拟器上面有一条黄线为理想轨迹,绿线是车辆根据方向盘、油门以及制动命令预测将遵循的轨迹
无人驾驶车的工作原理
我们使用计算机视觉和传感器融合,获取一幅关于我们在世界上的位置的丰富画面,使用定位确定我们在这个世界的精确位置,然后使用路径规划来绘制一条通过这个世界到达目的地的路径,通过控制转动方向盘、打开油门、然后踩制动器沿着该轨迹行驶并最终移动车辆
7、Apollo团队与架构
Apollo技术框架由四个层面组成,参考车辆平台、参考硬件平台、开源软件平台、云服务平台。
8、参考车辆与硬件平台
如果想要打造一辆无人驾驶车,
首先要开发一款可通过电子控制的基础车辆而不仅仅是通过实体方向盘、油门踏板和刹车踏板来控制。这种车辆具有特殊的名称:线控驾驶车辆。
Apollo无人驾驶车有几个不同的传感器,
控制器区域网络CAN是车辆的内部通信网络;
计算机系统通过 CAN 卡连接汽车内部网络发送加速、制动和转向信号;
全球定位系统GPS通过绕地卫星接收信号,帮助我们确定所处位置;
惯性测量装置IMU测量车辆的运动和位置;
激光雷达LiDAR 360 度扫描车辆周围,生成环境点云;
摄像头捕获图像数据,了解周围的环境;
雷达也用于检测障碍物,但是雷达分辨率低,难以分辨雷达检测到了哪种障碍物。
如下图说明如何将主要硬件组件安装到车辆上包括摄像头、雷达、激光雷达、GPS、IMU、IPC等。
9、开源软件栈
整体框架
开放式软件层分为三个子层实时操作系统、运行时框架、应用程序模块层。
实时操作系统RTOS,可确保在给定时间内完成特定任务,实时性能是确保系统稳定性和驾驶安全性的重要要求,Apollo RTOS 是 Ubuntu Linux 系统与 Apollo 内核相互结合的成果。
运行时框架是Apollo 的操作环境,ROS 定制版。ROS机器人操作系统,它实际上是一个在 Apollo RTOS 上运行的软件框架。ROS 根据功能将自治系统划分为多个模块,每个模块负责接收、处理和发布自己的消息,由于这些模块相互独立,只能通过运行时框架进行通信。
Apollo团队改进了共享内存的功能和性能、去中心化和数据兼容性。
如下图,共享内存降低了需要访问不同模块时的数据复制需求,共享内存支持“一次写入多次读取”模式。例如只收到一次点云,你可以同时运行障碍物检测、定位、 GUI 工具,可以加快通信速度。
如下图,去中心化解决了单点故障问题,现成 ROS 由许多节点组成,每个节点都有对应的功能,如果主节点发生故障,整个系统都会失效。
如下图,为了避免这个问题,Apollo 将所有节点放在一个公共域中,域中的每个节点都有关于域中其他节点的信息。通过这种去中心化方案,公共域取代了原来的 ROS 主节点,因此消除了单点故障风险。
数据兼容性,不同的 ROS 节点通过名为 ROS 消息的接口语言相互通信,ROS 消息需要使用通用接口语言,如果消息文件的格式与节点所期望的格式稍有不同,导致通信失败,可能会导致严重的兼容性问题。例如当一个接口升级时,数据不兼容通常会导致系统故障。
如下图,Apollo 团队使用另一种名为 protobuf 的接口语言来替代原生ROS消息,Protobuf 是一种结构化数据序列化方法,这对开发用于通过电线彼此通信或用于存储数据的程序非常有用,你可以将新字段添加到消息格式中而不会破坏后向兼容性。
应用程序模块
Apollo的软件平台具有各种模块包括 MAP 引擎、定位、感知、规划、控制、端到端驾驶以及人机接口HMI
10、云服务
Apollo云服务不仅仅是存储数据,它提供了许多应用程序,包括可加快构建和训练无人驾驶车软件过程的工具。
Apollo云服务包含高精度地图、仿真环境、数据平台、安全、空中软件升级、DuerOS 的智能语音系统
在这里重点介绍仿真和数据平台
仿真环境平台是 Apollo 开放软件栈的重要工具,该平台允许每个人出于自身需要来构建仿真环境
仿真环境使 Apollo 车辆不仅可以查看环境还可以了解道路情况和场景,
当前的自动评分系统,从几个指标对场景进行评估,包括:碰撞检测、交通灯识别、速度限制、障碍物检测、路线逻辑,最后三维可视化描述了实时路况。
数据对无人驾驶车来说很重要,无人驾驶数据可能来自模拟场景或道路测试。
仿真场景数据有两个不同的来源,记录场景和虚拟场景。可以使用记录场景来重放我们在实际道路测试中已经观察到的传感器数据,可以借助虚拟场景,使用虚拟编辑器创建新的驾驶场景,有助于快速检验与验证算法
如下图为了训练像深度学习网络那样的机器学习模型,需要带标签的注释数据包括交通信号灯数据、带边界框的障碍物数据、语义分割数据。
无人驾驶数据集 ApolloScape,涵盖了各种复杂路况,使用语义分割对图像进行逐像素标记。
领取专属 10元无门槛券
私享最新 技术干货