目录

  • 1 学习情境1 智能网联汽车技术综述
    • 1.1 智能网联汽车的发展背景
      • 1.1.1 智能网联汽车定义
      • 1.1.2 智能网联汽车技术的组成
      • 1.1.3 智能网联汽车行业背景
    • 1.2 智能网联汽车的发展现状
      • 1.2.1 国外智能网联汽车的发展现状
      • 1.2.2 国内智能网联汽车的发展现状
  • 2 视觉传感器在智能网联汽车中的应用
    • 2.1 视觉传感器的种类和原理
      • 2.1.1 单目视觉传感器的原理和特点
      • 2.1.2 双目视觉传感器的原理和特点
      • 2.1.3 红外夜视视觉传感器的原理和特点
      • 2.1.4 多个视觉传感器的组合应用
    • 2.2 智能网联汽车领域图像处理方法
    • 2.3 视觉传感器在智能网联汽车中的实际应用
  • 3 雷达在智能网联汽车中的应用
    • 3.1 超声波雷达
      • 3.1.1 超声波雷达的结构与原理
      • 3.1.2 超声波雷达在智能网联汽车中的应用
    • 3.2 毫米波雷达
      • 3.2.1 毫米波雷达的结构与原理
      • 3.2.2 毫米波雷达在智能网联汽车中的应用
    • 3.3 激光雷达
      • 3.3.1 激光雷达的结构与原理
      • 3.3.2 激光雷达在智能网联汽车中的应用
  • 4 高精度定位与导航系统
    • 4.1 高精度地图
      • 4.1.1 高精度地图的基本概念
      • 4.1.2 高精度地图采集与生产
      • 4.1.3 其他形式的高精度地图
    • 4.2 高精度定位系统
      • 4.2.1 全球导航卫星系统
      • 4.2.2 惯性导航系统
    • 4.3 课程思政-坚韧不屈成就高精准北斗传奇
  • 5 智能网联汽车路径规划与决策控制
    • 5.1 智能网联汽车环境感知与路径
    • 5.2 智能网联汽车行为决策与车辆控制
  • 6 汽车总线及车载网络
    • 6.1 汽车总线
    • 6.2 车载以太网
    • 6.3 智能网联汽车线控技术
      • 6.3.1 汽车线控转向技术
      • 6.3.2 汽车线控制动技术
      • 6.3.3 汽车线控节气门技术
      • 6.3.4 智能网联汽车线控底盘参考文献
  • 7 智能网联汽车通信技术
    • 7.1 V2X
    • 7.2 移动网络通信技术
    • 7.3 物联网无线通信技术
  • 8 ADAS与智能网联汽车的应用
    • 8.1 ADAS系统及应用
    • 8.2 智能网联汽车的应用
  • 9 智能网联汽车操作系统与应用平台
    • 9.1 智能网联汽车的操作系统-Linux
    • 9.2 智能网联汽车的开发平台—ROS
    • 9.3 智能网联汽车的学习平台—Gazbo
智能网联汽车的开发平台—ROS

智能网联汽车的开发平台---ROS


9.2.1 ROS概述

现代智能网联汽车的自主驾驶系统整合了路径规划、避障、导航、交通信号监测等多个软件模块和计算、控制、传感器模块等多个硬件模块,如何有效调配软硬件资源是一个挑战。简单的嵌入式系统并不能满足无人驾驶系统的上述需求,因此需要一个成熟、稳定、高性能的操作系统去管理各个模块。

目前,机器人操作系统可以很好地解决上述问题。ROS Robot(机器人)+ Operating (操作)+ System(系统)的简称,即为机器人操作系统。目前流行的 ROS 版本有 ROS Kinetic KameROS Indigo IglooROS Hydro Medusa 等。

从严格意义上来讲,ROS并不是一个真正的操作系统,而是一款用于机器人或人工智能的应用软件开发平台。要保证一个复杂的系统稳定、高效地运行,每个模块都能发挥出最大的潜能,ROS提供了一个成熟有效的管理机制,使得系统中的每个软硬件模块都能有效地进行互动。ROS提供了大量的程序库和工具,使得开发人员能够更好地在机器人或人工智能领域中进行学习与研究。另外,ROS本身还具有许多功能,如硬件设备驱动、可视化工具、消息传递等。

ROS 的主要设计目标是为了尽可能地避免或减少“重复造车轮”的现象出现。共享大量可复用的程序及源代码,便于更多的相关领域人才参与到机器人和人工智能两大领域的学习和研究中。


目前,ROS 的应用领域除了无人驾驶和智能网联汽车领域外,还包括物流仓储领域、工业生产领域和交通管理领域等。

ROS 的特性,包括以下几点

1)点对点设计。ROS在处理进程之间的通信时,采用了耦合度相对较低的点对点设计。

2)分布式设计。ROS是一个分布式设计的框架,不仅可以实现ROS工程之间的集成和发布,还能够移植到其他机器人软件平台上使用。

3)支持多种语言。ROS可支持多种编程语言,如C++JavaPythonLispLuaRuby 等。

4)丰富的功能软件包。目前 ROS已经可以支持使用的第三方软件包数量达到数千个,从而大大提高了开发与测试的工作效率。

5)免费且开源性。ROS是一款免费且开源的操作系统。ROS中的所有源代码都是公开发布的,因此有利于人们对 ROS进一步的学习、研究与完善。


9.2.2 ROS在智能网联汽车中的应用

ROS的架构分为三个层次,分别是文件系统级、计算图级、开源社区级。

1. ROS文件系统级

文件系统级主要是指在完成ROS的安装后,在硬盘中所生成的一系列关于ROS的内部文件

bin文件夹下存放的是二进制文件。这类文件只有在相关应用软件中才能够正确显示出来,比如图像文件、音频文件、视频文件等。

etc文件夹下存放的是相关的配置文件。

include文件夹下存放的是c++头文件。

lib文件夹下存放的是静态库文件。

share文件夹下存放的是功能包相关的文件。

*.sh文件是Linux系统的命令脚本文件。

*.py文件是Python语言编写的脚本文件。

ROS把不同功能组件分别放在不同的文件夹中。运行期间会分别根据实际的需要再将它们重新组织在一起。

2. 计算图级

ROS操作系统提供了大量的程序库和工具,而且ROS本身还具有许多功能,如硬件设备驱动、可视化工具、消息传递等。计算图级是ROS为了处理各节点间的数据而建立的一种点对点的拓扑结构图。主要包括节点、节点管理器、主题、消息、服务、参数服务器和消息记录包,如9-2所示。


9-2 ROS计算图级的拓扑结构图

1.节点(Node

一个节点即为一个可执行文件,它通过 ROS与其他节点进行通信。在智能网联汽车中,我们可以把激光雷达、毫米波雷达、摄像头、GPS 等传感器设备都分别定义成为一个个单一的节点。在此举例说明,首先把智能网联汽车本身的制动系统定义为一个节点,然后再把激光雷达定义为另一个节点。当激光雷达探测到前方有障碍时,激光雷达所在的这个节点就会发出通知告诉制动系统。制动系统接收到通知后,可根据探测情况,开始进行下一步操作的判断(减速、制动还是继续正常行驶)。

2.节点管理器(Master

节点管理器的作用主要有四个方面∶为 ROS 节点提供命名和注册服务;方便 ROS 节点之间进行相互查找;有助于 ROS 节点之间建立相互的通信连接;提供参数服务器,带助ROS管理全局参数。

3.)主题(Topic

主题是节点之间进行通信的最基本方式。节点之间通信时,可以不需要进行直接的连接,而是以发布和订阅的形式通过话题进行消息的传输。一个节点可以发布多个主题,同样,一个主题也可以被多个节点订阅。例如,可分别把智能网联汽车中的摄像头、转向系统、加速系统、制动系统定义成四个节点。由摄像头节点发布一个检测路面是否出现行人的主题,频率为20Hz,这样就使摄像头节点成为一个主题的发布者。再令转向系统、加速系统、制动系统分别去订阅这个检测路面行人的主题,使其成为主题的订阅者。如果前方没有出现行人,则转向系统和加速踏板将继续正常工作;如果前方出现行人,则转向系统和加速踏板在停止工作的同时会开启制动系统。

4.)消息(Message

消息是节点之间进行通信传输的一种数据类型。消息类型包括了ROS 提供的标准类型和用户自定义的类型。定义消息类型必须包含消息的字段和消息的取值两个部分。例如,定义一个名为障碍物的消息类型,消息类型中包含三个字段分别是障碍物的长度、宽度、高度。

5.)服务(Service

服务建立通信的方式基于客户端-服务器的模式,一方面需要客户端发送服务请求到服务器;另一方面需要服务器接收到请求后,对客户端进行服务的响应。当节点之间需要进行直接通信时,只能采用服务的方式进行通信,而不能通过主题的方式进行。例如,智能网联汽车在行驶过程中想要提高车速,于是电子加速踏板节点向毫米波雷达节点发出服务请求,请求消息类型是方向为正前方,测量范围为200m。毫米波雷达节点接收到服务请求后,进行正前方200m 以内的探测后,将探测结果的响应给电子加速踏板节点,响应消息类型是无任何障碍物。

6.)消息记录包(Bag

消息记录包是一种文件格式,主要用于在 ROS 中对消息数据、主题数据、服务数据以及其他信息数据进行保存。通过记录包可实现情景再现功能,主要应用于智能网联汽车相关功能的测试。

常见几类传感器通过各自驱动的节点来提供感知信息,包括 image_raw 相机图像信息、激光雷达形成的 Scan 信息、Velodyne 激光雷达提供的点云信息以及 GPS 系统提供的定位信息等。通过订阅该信息的各自处理节点,形成了扫描图像、点云图像等进一步信息列表。


3. 开源社区级

ROS开源社区级的概念主要是ROS资源,其能够通过独立的网络社区分享软件和知识。这些资源包括:

发行版(Distribution):ROS发行版是可以独立安装、带有版本号的一系列综合功能包。ROS发行版像Linux发行版一样发挥类似的作用。这使得ROS软件安装更加容易,而且能够通过一个软件集合维持一致的版本。


软件库(Repository):ROS依赖于共享开源代码与软件库的网站或主机服务,在这里不同的机构能够发布和分享各自的机器人软件与程序。

ROS维基(ROS Wiki):ROS Wiki是用于记录有关ROS系统信息的主要论坛。任何人都可以注册账户、贡献自己的文件、提供更正或更新、编写教程以及其他行为。

Bug提交系统(Bug Ticket System):如果你发现问题或者想提出一个新功能,ROS提供这个资源去做这些。

邮件列表(Mailing list):ROS用户邮件列表是关于ROS的主要交流渠道,能够像论坛一样交流从ROS软件更新到ROS软件使用中的各种疑问或信息。

ROS问答(ROS Answer):用户可以使用这个资源去提问题。