如何打造一辆无人驾驶汽车百度Apollo

2023/2/13 来源:不详

白癜风忌嘴吗 http://pf.39.net/bdfyy/bdfhl/190329/7007742.html

参考车辆与硬件平台

如果我们想要打造一辆无人驾驶车,首先要开发一款可通过电子控制的基础车辆,而不仅仅是通过实体方向盘、油门踏板和刹车踏板来控制。这种类型的车辆具有特殊的名称:线控驾驶车辆。

这款车有几个不同的传感器,传感器参数由参考硬件规格定义:

控制器区域网络(CAN):是车辆的内部通信网络,计算机系统通过CAN卡链接汽车内部网络,发送加速、制动和转向信号。

全球定位系统(GPS):通过绕地卫星接受信号。这些信号可帮助我们确定所处位置。

惯性测量装置(IMU):测量车辆的运动和位置,是通过跟踪位置、速度、加速度和其他因素。

激光雷达(LiDAR):由一组脉冲激光器组成,Apollo使用的激光雷达可度扫描车辆周围,这些激光束的反射,形成了软件可用于了解环境的点云。

摄像头:捕获图像数据,我们可以使用计算机视觉来提取这些图像的内容并了解周围的环境。例如,因为摄像头可以感知颜色,我们用它们来检测和了解交通灯。

雷达:也用于检测障碍物,雷达分辨率低,难以分辨雷达检测到了哪种障碍物,但雷达的优势在于经济实惠,适用于各种天气和照明条件。雷达特别擅长测量其他车辆的速度。

上图简要说明了如何将主要硬件组件安装到车辆上,包括摄像头、雷达、激光雷达、GPS-IMU和IPC。这是你运行Apollo的必备硬件!

开源软件架构

开放式软件层分为三个子层:实时操作系统、运行时框架和应用程序模块层。

实时操作系统(RTOS):可确保在给定时间内完成特定任务,“实时”是指无人驾驶车的操作系统,能够及时进行计算,分析并执行相应的操作,以下操作需在汽车传感器收集到外界数据后的短时间内完成。实时性能是确保系统稳定性和驾驶安全性的重要要求。

ApolloRTOS:是UbuntuLinux操作系统与Apollo内核相互结合的成果。Ubuntu是业内顶级Linux发行版之一,也是最流行的云操作系统。然而,原始Ubuntu系统并非实时操作系统,通过加入Apollo设计的内核,我们可以使其成为一个RTOS。

运行时框架:是Apollo的操作环境。它是ROS的定制版,即机器人操作系统。尽管ROS代表机器人操作系统,但它实际上是一个在ApolloRTOS上运行的软件框架。ROS在机器人行业有着悠久的历史,目前有3,多个基础库支持应用程序的快速开发。

ROS根据功能将自治系统划分为多个模块,每个模块负责接收、处理和发布自己的消息。由于这些模块相互独立,只能通过运行时框架进行通信,因此调整任何单一模块都很容易。ROS是应用最广泛的机器人框架,因此它所包含的模块涉及许多最新的研究突破。所有这些功能使ROS成为理想的Apollo开发与集成框架。

为使ROS适应无人驾驶车,Apollo团队改进了共享内存的功能和性能、去中心化和数据兼容性。共享内存降低了需要访问不同模块时的数据复制需求,对于一对多传输方案,共享内存支持“一次写入,多次读取”模式。

去中心化解决了单点故障问题。现成的ROS由许多节点组成,每个节点都有对应的功能,但是所有这些节点都需要由单个ROS主节点来控制,如果主节点发生故障,整个系统都会失效。

为避免这个问题,Apollo将所有节点放在一个公共域中,域中的每个节点都有关于域中其他节点的信息。通过去中心化方案,公共域取代了原来的ROS主节点,因此消除了单点故障风险。

对于无人驾驶车来说,由于项目本身的规模很大,数据兼容性至关重要。不同的ROS节点通过名为ROS消息的接口语言相互通信,ROS消息需要使用通用接口语言,使每个节点都可以解读来自其他节点的消息数据。如果消息文件的格式与节点所期望的格式稍有不同,通信会失败,这可能会导致严重的兼容性问题。此外,必须一次又一次地转换之前所记录的测试数据以适应新的消息格式。

为了解决这个问题,Apollo团队使用另一种名为protobuf的接口语言来替代原生ROS消息。

Protobuf是一种结构化数据序列化方法,这对开发用于通过电线彼此通信或用于存储数据的程序非常有用。用户可以将新字段添加到消息格式中,而不会破坏后向兼容性,新的二进制文件可以在解析过程中接受旧的消息格式。向ROS添加protobuf格式有助于Apollo的长期发展。

应用程序模块:Apollo的软件平台具有各种模块,这些模块包括MAP引擎、定位、感知、规划、控制、端到端驾驶以及人机接口(或HMI)。每个模块都有自己的算法库,模块之间的关系非常复杂,我们将在整个课程中对这些模块及其关联方式进行研究。

云服务

Apollo云服务是在云中运行的一套应用程序,在车辆本身之外,云是描述通过互联网访问服务器的术语,只要你有互联网连接和授权账户,你就可以将你的电子数据放入云中并从任何地方访问。

Apollo云服务不仅仅是存储数据,它还提供了许多应用程序,其中包括可加快构建和训练无人驾驶车软件过程的工具。Apollo云服务包含高精度地图、仿真环境、数据平台、安全、空中升级软件,以及被称为DuerOS的智能语音系统。这里将重点介绍仿真环境和数据平台。

仿真环境平台:是Apollo开放软件栈的重要工具,该平台允许每个人出于自身需要来构建仿真环境,还聚合了大量驾驶数据,使开发人员能够检验和验证无人驾驶软件系统。

仿真环境使Apollo车辆不仅可以查看环境,还可以了解道路情况和场景。仿真环境平台具有许多功能,允许开发人员配置不同的驾驶场景,比如障碍物、路线和交通灯状态。执行模式为开发人员提供了一个在多个场景中运转的完整设置。

执行模式中,开发人员可以在Apollo环境中上传和验证模块。当前的自动评分系统,从几个指标对场景进行评估,其中包括:碰撞检测、交通灯识别、速度限制、障碍物检测和路线逻辑。最后,三维可视化描述了实时路况,在显示无人驾驶车状态的同时,使模块输出可视化。

数据平台:数据对无人驾驶车来说很重要,无人驾驶数据可能来自模拟场景或道路测试,Apollo为这些类别提供了各种各样的数据。仿真场景数据有两个不同的来源:记录场景和虚拟场景。

记录场景:重放我们在实际道路测试中已经观察到的传感器数据。虚拟场景:使用虚拟编辑器创建新的驾驶场景,这有助于快速检验和验证算法。

为了训练像深度学习网络那样的机器学习模型,我们需要带标签的注释数据,其中包括交通信号灯数据,带边界框的障碍物数据以及语义分割数据。

此外,Apollo已向公众发布了ApolloScape数据集,ApolloScape涵盖了各种复杂路况,ApolloScape在单个图像中列入并注释了多达辆车或80名行人,同时开放数据集使用。

语义分割对图像进行逐像素标记,这使得ApolloScape成为世界上最为复杂又最精准的无人驾驶数据集。Apollo云服务也提供了信息安全,DuerOS和无线更新等其他模块内容。

如需详细了解各个模块,可直接访问Apollo官方网站,

网址:

转载请注明:
http://www.3g-city.net/gjycs/3486.html
  • 上一篇文章:

  • 下一篇文章:
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有2014-2024 冀ICP备19027023号-6
    今天是: