在上一讲《Coursera自动驾驶课程第2讲:The Requirements for Autonomy》中我们了解到了如何划分自动驾驶汽车等级、以及自动驾驶三大模块:感知、决策和执行

本讲我们将学习新的模块:自动驾驶汽车的硬件和软件架构

B站视频链接:https://www.bilibili.com/video/BV1WE411D74g?p=1


1.Sensors and Computing Hardware(理解)

1.1 Sensors


这里给出了传感器的定义:传感器是测量或检测环境某些属性或随时间变化的任何设备。传感器根据其记录的属性大致可以分为两类:如果是记录了周围环境特性,那么传感器是exteroceptive。 另一方面,如果传感器记录了自车属性,则它们是proprioceptive的。 下面我们来一起认识自动驾驶车辆常见的传感器。


1.2 Camera

相机或摄像头是自动驾驶中最常用的传感器。它是一种被动式集光传感器,能够捕获有关场景的丰富、详细的信息。实际上,也有些专家认为相机是真正实现自动驾驶所需的唯一传感器。但是仅凭视觉尚无法实现最先进的性能。在谈论相机时,我们通常倾向于谈论三个重要的比较指标:

  • 我们根据分辨率选择相机。分辨率是创建图像的像素数。因此,这是一种指定图像质量的方法。
  • 我们也可以根据视野选择摄像机。视野由照相机可见的水平和垂直角度范围定义,可以通过选择镜头和变焦来改变视野。
  • 另一个重要指标是动态范围摄像机的动态范围是图像中最暗和最亮色调之间的差异。高动态范围对于自动驾驶汽车至关重要,因为在驾驶过程中(尤其是在夜间)会遇到可变的照明条件。

相机和摄像头的选择需要考虑很多因素,需要在视野和分辨率之间进行这种。较宽的视野允许在环境中有较大的视野。但是从一个特定物体吸收光的像素更少。随着视野的增加,我们需要提高分辨率,以仍然能够以相同的质量感知我们可能会遇到的各种信息。还存在影响感知的照相机的其他属性,例如焦距,景深和帧频等。

上面是单目摄像头,自动驾驶中常见的还有双目摄像头,即具有重叠视场和对齐图像平面的两个摄像头的组合。 双目摄像头可以从同步图像对目标进行深度估计。一张图像中的像素值可以与另一张图像进行匹配,从而产生视差图。 然后,可以使用该视差来估计每个像素的深度。


1.3 LIDAR

激光雷达是自动驾驶车辆常见的3D传感器。LIDAR感应原理为将光束发射到环境中并测量反射的回波。 通过测量返回的光束飞行时间。 可以估计到反射物体的范围内的强度。 LIDAR通常包括带有多个堆叠光源的旋转元件。 并·输出三维点云图·,这对于评估场景几何非常有用。 由于它是具有自己的光源的有源传感器,因此LIDAR不受环境照明的影响。 因此,在恶劣或多变的照明条件下操作时,激光雷达不会像摄像机一样面临挑战。

现在来一起讨论激光雷达一些比较重要的性能指标:

  • 第一个是它包含的beams 数量,目前常见线数为大小为16、32、64和128线。
  • 第二点是·每秒可以收集的点数·。点收集越快,3D点云就越详细。
  • 第三个是转速。此速率越高,更新3D点云的速度就越快。
  • 第四个是视野,即可检测的角度范围。
  • 最后,还有一种高分辨率固态激光雷达

1.4 RADAR


毫米波雷达的使用寿命比LIDAR更长,可以可靠地检测环境中的大型物体。 通常会根据探测范围,视野以及位置和速度测量精度选择雷达。毫米波雷达常见有两种检测范围:一种具有较宽的视角范围但测量范围很近;另一种视野狭窄但测量范围更远


1.5 Ultrasoncis


超声波雷达是一种短距离测量传感器。 非常适合用于停车场景,在这种情况下,自车需要非常缓慢的接近其他车辆。另一个优势是它们的成本很低。 而且,就像雷达和激光雷达一样,它们不受光照和降水的影响。 通常可以根据其测量的范围,视野及其成本来进行选择。


1.6 GNSS/IMU


上面介绍的传感器是用来检测车辆周围环境,现在让我们来认识一些检测自车状态的传感器。这里最常见的是全球导航卫星系统,简称GNSS,例如GPS惯性测量单元或IMU

  • GNSS接收器用于测量自我车辆的位置,速度,有时甚至还提供航向信息。精度在很大程度上取决于实际的定位方法。
  • IMU可以测量自转车辆的角速度,加速度,并且可以将组合的测量结果用于估算车辆的3D方向。前进方向对车辆的控制很重要。

最后,还有有车轮里程传感器。该传感器跟踪车轮的旋转速度,并使用这些速度来估算自车的速度和前进方向速度。

简单总结来说,当今用于自动驾驶感知的主要传感器包括摄像头,雷达,激光雷达,超声波雷达,GNSS,IMU和车轮里程计等。这些传感器具有不同的特性,包括分辨率,检测范围和视野。为自动驾驶汽车选择合适的传感器配置并非易事。下面是一张示意图,显示了每个传感器以及它们通常在汽车上的安装位置。


1.7 Computing Hardware

最后,让我们来认识一下当今自动驾驶汽车中最常用的计算硬件。

其中最关键的部分是自动驾驶大脑,这是汽车的主要决策单元。它接收所有传感器数据并输出驾驶车辆所需的命令。现在越来越多的大公司偏向于设计自己的大脑系统,以满足其传感器和算法的特定要求。但是,也存在一些可以开箱即用地处理自动驾驶负载的硬件。最常见的例子是Nvidia的Drive PX和Intel&Mobileye的EyeQ。

任何用于自动驾驶的计算大脑都需要串行和并行计算模块。特别是对图像和LIDAR处理进行分割,对象检测。在这里常用的GPU,FPGA和ASICs,它们是用于执行特定类型计算的专用硬件。例如:Drive PX包括多个GPU。 EyeQ具有FPGA来加速可并行化的计算任务,例如图像处理或神经网络推理。

最后,简要介绍一下传感器时间同步硬件。因为我们要根据道路场景的连贯性做出驾驶决策。GPS依靠极其精确的计时来起作用,因此,GPS可以在可用时充当适当的参考时钟。无论如何,传感器测量值必须加上时间戳记,并带有一致的时间,以使传感器融合功能正常发挥作用。


2.Hardware Configuration Design

2.1 Overview

上一个视频视频介绍了自动驾驶中常见的传感器。本视频将会介绍在不同驾驶场景中对传感器测量覆盖范围的需求,将分为两个场景来讨论:HighwayUrban

在讨论覆盖率之前,让我们先定义车辆减速度,假设一个激进的车辆减速度为5m/s25m/s^25m/s2,这大约是猛踩刹车并在紧急情况下尝试突然制动时遇到的减速度。而正常的车辆减速度一般为2m/s22m/s^22m/s2,这样在乘客感到舒适的同时车辆也会快速停住。对于恒定的减速度,可以根据如下公式计算制动距离ddd。
d=v22ad=\frac{v^2}{2a}d=2av2​
其中vvv是车速,aaa是其减速度。我们有时候还需要考虑制动系统的反应时间和路面摩擦系数等。

现在让我们谈谈覆盖率。我们要回答的问题是,我们应该在哪里安装传感器,以便为驾驶任务提供足够的输入?

实际上,我们希望我们的传感器捕获我们所想到的ODD或系统可以为其做出决策的ODD。

现在我们考虑两种场景,高速公路城市情况。对于高速公路,车流量很大,并且有很多车道需要监控,但是所有车辆的行驶方向都是相同的。 在高速公路上行驶的另一个特点是弯道越来越少,而且通常也需要考虑退出和合并; 另一方面,在城市情况下,将考虑适度的交通流量和中等速度的交通,车道数量较少,但交通流向四面八方,尤其是在交叉路口。


2.2 Highway

让我们先分析高速公路场景,大致可以分为三种情况:

  • 紧急制动 (Emergency Stop)
  • 定速 (Maintain Speed)
  • 变道(Lane Change)
1) Emergency Stop

我们先讨论第一种情况:紧急制动

在紧急制动情况下,如果前方道路发生拥堵,我们希望能够及时停车。假设高速公路速度为120km/h,我们需要能够感应到前方110米处。因此,大多数自动驾驶系统的目标是感应到车辆前方150至200米的范围。同样,为了避免横向碰撞或更改车道以避免撞到车道上的障碍物,我们需要至少能够感知我们相邻的车道,在北美,车道的宽度为3.7米。


2) Maintain Speed

下面讨论第二种情况:定速

为了在跟随车辆时保持速度,需要在自车道上感应前方车辆。它们的相对位置和速度对于保持安全的跟随距离都很重要。假如,以每小时120公里的速度行驶,相对位置和速度的测量需要达到165米的范围,而典型的系统为此使用100米

在横向上,我们需要知道相邻车道上任何地方发生的情况,以防其他车辆试图合并到我们的车道中,或者我们需要与其他车辆合并。跟踪相邻车道需要160至180度的视野,并且需要40至60米的范围才能找到车辆之间的空间。

3) Lane Change

最后,我们讨论第三种情况:变道

假设我们要进行图示的变道,在纵向上我们需要向前看,因此我们距离前方车辆要有一段安全距离,我们还需要向后看才能看到后方车辆在做什么,而从侧面看这比较复杂。我们可能需要超越相邻的车道。例如,如果车辆试图像我们一样同时操纵进入相邻车道怎么办?

总体而言,下图为高速公路驾驶场景的覆盖范围要求。不同的驾驶场景对传感器的覆盖范围要求不同,我们需要根据具体情况来选择符合实际需求的传感器。


2.3 Urban

下面来分析另一种场景:城市情况。正如之前讨论的那样,城市情况中高速公路上的车道较少,但行人的复杂性却增加了。这里有六种情况。显然,除了紧急制动定速变道,但同时也有一些其它情况发,例如超车在十字路口处向左和向右转弯以及通过诸如大转盘等。实际上,对于前三个场景,覆盖率分析与高速公路分析几乎相同,但是由于我们的移动速度并不快,因此我们不需要相同程度的感知范围。

1) Overtaking

现在我们来讨论超车情况。

纵向上,需要感知停放的汽车以及迎面而来的车辆。因此,我们既需要传感器,又需要较宽的短距离传感器来检测停放的汽车,还需要较窄的远程传感器来确定迎面而来的车辆是否正在接近。从侧面看,我们需要像在高速公路中那样观察相邻车道以外的车辆并入


2) Turning, crossing at intersections

接下来,我们来讨论十字路口情况。

对于十字交叉路口,我们需要对可能发生的所有类型的运动进行全方向感知,接近的车辆,附近的行人,转弯等等。


3) Passing roundabouts

最后,对于大转盘

由于车速较慢,我们需要横向安装一个大范围的短距离传感器,但由于圆周式的运动,我们也需要纵向一个大范围的短距离传感器。我们需要感知所有通过回旋处的传入流量,以做出正确的决策。

因此,我们最终得到了针对城市案例的总体覆盖图。让我们总结一下覆盖率分析。对于我们所做的所有操作,我们需要通常具有较短的视角范围的远程传感器和通常具有中至短距离感测的宽视角传感器。随着场景变得越来越复杂,我们看到了对短距离至约50米的完整360度传感器覆盖范围的需求,以及对纵向范围的更大要求。我们还可以添加更短距离的传感器(如声纳),在停车场景中非常有用。

总而言之,我们对传感器的选择应取决于我们要执行的操作的要求,并且应包括用于纵向危险的远程传感器和用于全向感知的宽视野传感器。配置的最终选择还取决于我们对工作条件,由于故障而造成的传感器冗余以及预算的要求。对于自动驾驶汽车需要哪些传感器没有唯一的答案。


3.Software Architecture(重点)

3.1 Overview

本视频我们将学习用于自动驾驶汽车的模块化软件体系结构。我们将讨论以下五个软件模块,

  • 环境感知
  • 环境地图
  • 运动规划
  • 车辆控制
  • 系统管理器。

虽然本视频不会提供具体的细节,但它也会帮助我们对实现自动驾驶汽车功能所需的所有软件组件有很好的了解。下面是自动驾驶汽车软件堆栈的高级软件架构。


3.2 Environment Perception

我们先来讨论第一个模块:环境感知

环境感知模块有两个主要作用,首先是确定自动驾驶汽车的当前位置,其次是对自动驾驶汽车周围障碍物进行分类和定位

定位模块会接收多个传感器信息,例如当前GPS位置,IMU和车轮里程计,然后将它们组合以输出准确的车辆位置。

动态目标检测模块使用摄像头、LIDAR、毫米波雷达来创建3D场景中动态目标的bounding box。 包含目标的位置,方向和大小信息。一旦检测到目标,下面通过跟踪模块进行目标跟踪。跟踪模块不仅提供目标的当前位置及其通过环境的历史轨迹。还会使用轨迹的历史记录与地图,以预测未来道路上的所有动态目标。这通常是由预测模块融合所有动态目标相关信息和当前环境进行预测所有动态目标的路径

静态目标检测模块还依靠高精度地图来识别场景中的重要静态目标。这些重要数据包括当前发现无人驾驶车辆的车道以及监管地点标牌和交通信号灯等元素。


3.3 Environmental Maps

下面我们来讨论环境地图模块。

这里我们简要讨论了三种类型的地图,即占用网格地图,定位地图详细的路线图

占用网格是车辆周围环境中所有静态对象的地图。占用网格图将环境表示为一组网格单元,并关联每个单元被占用的概率。这使我们能够处理测量数据中的不确定性,并随着时间的推移改进地图。

定位模块使用LIDAR或相机数据构建的定位图。在驾驶时将传感器数据与此地图进行比较,以确定汽车相对于定位地图的运动。然后将此运动与其他本体传感器信息组合在一起,以准确定位车辆。

详细的路线图提供了代表自动驾驶车辆当前正在行驶的驾驶环境的路段图。它以可用于运动规划的方式捕获标志和车道标记。


3.4 Motion Planning

接下来,我们来讨论运动规划模块。

自动驾驶汽车的运动规划是一项艰巨的任务,而且通常很难在单个过程中解决。取而代之的是,当今大多数自动驾驶汽车都使用一种分解方法,将问题分为以下三层。

  • 在最高层,任务规划者处理长期计划,定义整个驾驶任务,即从当前位置到最终目的地。为了找到完整的任务,任务规划者会确定连接起点和终点的最佳路段顺序,然后将其传递到下一层。
  • 行为规划者负责处理解决短期计划,建立一组在沿着任务路径行驶时要执行的安全动作。如决定何时加速、减速等。
  • 最后,本地规划者执行计划,负责定义要驱动的行驶路径和速度曲线。

3.5 Vehicle Controller

下面,我们来看看车辆控制模块。

如上图所示,典型的控制器将控制问题分为纵向控制横向控制横向控制器输出维持计划轨迹所需的转向角,而纵向控制器则调节油门,齿轮和制动系统以达到正确的速度


3.6 System Supervisor

最后,我们看看系统管理器模块。

系统管理器是持续监视自动驾驶汽车各个方面并在子系统发生故障时发出适当警告的模块。有两个部分,硬件管理和软件管理

  • 硬件监控器会持续监视所有硬件组件,以检查是否有任何故障,例如传感器损坏,测量值丢失或信息降级。硬件主管的另一项职责是持续分析硬件输出,查找与无人驾驶汽车所要执行的域不匹配的任何输出。例如,如果一个摄像头传感器被纸袋挡住。
  • 软件监控器负责验证软件堆栈,以确保所有元素均按正确的频率按预期运行,并提供完整的输出。

4.Environment Representation

4.1 Localization Map

我们将仔细研究为表示汽车周围环境而创建的地图。我将概述传统上用于自动驾驶的三种不同的地图类型,在上一个视频中已经对此进行了简要介绍。

我们将讨论的第一张地图是定位地图

当汽车在环境中移动时,此地图由连续的激光雷达点集或相机图像特征创建。然后,定位模块将此地图与GPS,IMU和车轮里程表结合使用,来准确估算车辆的精确位置。

下面我们来详细了解定位地图的作用。自动驾驶汽车收到新的LIDAR或摄像机数据后,会将其与定位地图进行比较,并通过将新数据与现有地图对齐来创建自车位置的测量值。然后将该测量值与其它传感器组合在一起,以估计自车的运动,并最终用于控制车辆。


4.2 Occupancy Grid

下面我们讨论网格地图

网格地图使用一组连续的LIDAR点集来构建环境地图,该地图表示所有静态或固定障碍物的位置。该地图可以用于规划自动驾驶汽车的安全,无碰撞路径。

网格地图是周围环境中静态物体的2D或3D离散地图。使用点云作为输入,再次创建此地图以识别自动驾驶汽车周围的所有静态物体。静态的对象包括树木,建筑物,路缘石和所有其他不可驱动的表面


4.3 Detailed Roadmap

下面我们来讨论第三种地图:Detailed Roadmap

详细的路线图是可以由自动驾驶汽车驾驶的整个道路网的地图。该地图包含有关道路车道的信息,以及可能影响其的任何交通法规要素。详细的路线图用于计划自动驾驶汽车采用的安全有效的路线。可以通过以下三种方式之一来创建详细的路线图。·完全在线,完全离线或离线·创建和在线更新。

  • 完全在线创建的地图在很大程度上取决于感知堆栈的静态对象比例,以准确标记和正确定位所有相关静态对象来创建地图。这包括所有车道边界在当前的驾驶环境中,任何管制元素(例如交通信号灯或交通标志),车道的任何管制属性,例如右转标记或人行横道。由于实时创建这种地图的复杂性,很少使用这种地图创建方法
  • 完全脱机创建的地图通常是通过多次收集给定道路的数据来完成的。带有高精度传感器的专业车辆会定期沿着道路行驶,以构建离线地图。收集完成后,即可使用静态对象感知以及人工标记的混合来标记信息。这种地图创建方法在生成非常详细和准确的地图时,无法响应或适应不断变化的环境。
  • 第三种方法是离线创建它们,然后使用新的相关信息在线更新它们。这种地图创建方法充分利用了这两种方法,可创建可在驾车时进行更新的高精度路线图。

总结:在本模块中,我们学习了:

  • 如何在自动驾驶汽车中选择合适的传感和计算硬件,以及如何根据驾驶需求设计特定的传感器[。
  • 如何分解用于自动驾驶的软件系统。
  • 代表环境的三种主要地图类型。

Coursera自动驾驶课程第3讲:Self-Driving Hardware and Software Architectures相关推荐

  1. Coursera自动驾驶课程第4讲:Safety Assurance for Autonomous Vehicles

    在上一讲<Coursera自动驾驶课程第3讲:Self-Driving Hardware and Software Architectures>中我们了解了自动驾驶汽车常用的传感器和硬件组 ...

  2. Coursera自动驾驶课程第16讲:LIDAR Sensing

    在第15讲<Coursera自动驾驶课程第15讲:GNSS and INS Sensing for Pose Estimation> 我们学习了自动驾驶定位中常用的两种传感器:IMU(惯性 ...

  3. Coursera自动驾驶课程第18讲:The Planning Problem

    在第17讲<Coursera自动驾驶课程第17讲:An Autonomous Vehicle State Estimator> 我们学习了如何使用多传感器融合进行自车定位,以及传感器的内外 ...

  4. Coursera自动驾驶课程第17讲:An Autonomous Vehicle State Estimator

    在第16讲<Coursera自动驾驶课程第16讲:LIDAR Sensing>我们学习了自动驾驶目前常用的3D 传感器,激光雷达,了解了激光雷达的工作原理,掌握了对点云数据的操作以及如何使 ...

  5. Coursera自动驾驶课程第15讲:GNSS and INS Sensing for Pose Estimation

    在上一讲<Coursera自动驾驶课程第14讲:Linear and Nonlinear Kalman Filters> 我们学习了卡尔曼滤波相关知识,包括:线性卡尔曼滤波(KF).扩展卡 ...

  6. Coursera自动驾驶课程第14讲:Linear and Nonlinear Kalman Filters

    在上一讲<Coursera自动驾驶课程第13讲:Least Squares>我们学习了最小二乘法相关知识. 本讲我们将学习20世纪最著名的一个算法:卡尔曼滤波.具体包括线性卡尔曼滤波(KF ...

  7. Coursera自动驾驶课程第13讲:Least Squares

    在上一讲<Coursera自动驾驶课程第12讲:Semantic Segmentation>我们学习了深度学习的另一个重要应用:语义分割.至此,本课程的视觉感知模块就介绍完了. 从本讲开始 ...

  8. Coursera自动驾驶课程第12讲:Semantic Segmentation

    在上一讲<Coursera自动驾驶课程第11讲:2D Object Detection>我们学习了深度学习的一个重要应用:目标检测. 本讲我们将学习深度学习的另一个重要应用:语义分割.这是 ...

  9. Coursera自动驾驶课程第11讲:2D Object Detection

    在上一讲<Coursera自动驾驶课程第10讲:Feedforward Neural Networks>中我们学习了神经网络的基础知识,包括损失函数,梯度下降,正则化,卷积网络等. 本讲我 ...

最新文章

  1. NoSQL和SQL的那些事
  2. web移动端全屏滚动页面的适配问题
  3. 为什么开发人员从Java转到Go
  4. 2019.08.04 新建随笔
  5. 对AI领域的会议的评点
  6. linux服务器静态ip,Ubuntu Linux系统下设置静态IP的方法
  7. 【代码笔记】iOS-实现网络图片的异步加载和缓存
  8. Oracle数据库配置方案,oracle数据库各项参数参考配置方案
  9. SQLite数据操作
  10. libreoffice 开发文档_LibreOffice中文 | linux软件
  11. c4dr20怎么安装oc渲染器怎么安装_C4D R20 Octane渲染器
  12. 如何批量将 webp 格式的图片转换为 jpg 格式
  13. 【06】上海各个区的经纬度
  14. 2020哔哩哔哩大数据面试题整理
  15. 海尔微型计算机云悦t3G276ia,没了海尔云悦miniA 迷你主机界尽失半壁江山
  16. 「学习笔记」黑马面面布局开发
  17. 2021-08-10
  18. 博图软件备份程序监控数据
  19. PMP每日⑤题(七)
  20. 压缩PDF文件的一个绝妙做法

热门文章

  1. java 内部thread_Java代码质量改进之:使用ThreadLocal维护线程内部变量
  2. oracle dblink 验证,Oracle DBLINK 简单使用
  3. 富士通台式电脑_电脑bios怎么进入-电脑bios进入方法介绍
  4. mfc cimage加载显示图片_在微信小程序里实现图片预加载组件
  5. ssh密钥代理转发(ssh agent forwarding)
  6. Asterisk NAT
  7. VxWorks下几种定时延时方法的小结
  8. steam程序员php玩的游戏,Steam:又一款烧脑的编程游戏上线,宅男回家了也要开心加班!...
  9. 考公专业科目计算机,2017国考中国证监会专业科目考试大纲(计算机类)
  10. mysql查看事件任务内容_MySql事件计划任务