概述
Apollo核心模块
- 1. 无人驾驶等级
- 2. 高精地图
- 2.1 导航地图与高精地图
- 2.2 地图与定位、感知与规划
- 2.3 Apollo 高精度地图
- 2.4 Apollo 高精度地图构建
- 3. 定位
- 3.1 GNSS RTK
- 3.2 惯性导航
- 3.3 LiDAR 定位
- 3.4 视觉定位
- 4. 感知
- 4.1 计算机视觉
- 4.2 LiDAR 图像
- 4.3 机器学习
- 4.4 神经网络
- 4.5 卷积神经网咯
- 4.6 检测和分类
- 4.7 跟踪
- 4.8 分隔
- 4.9 传感器数据的优缺点比较
- 4.9.1 雷达与激光雷达
- 4.10 传感器融合策略
- 5. 预测
- 5.1 预测方式
- 5.2 障碍物状态
- 6. 规划
- 7. 控制
在开始前,需要对无人驾驶技术架构有一个整体了解:
- 定位
该模块提供定位服务。默认情况下有以下两种方法:
1 . 结合 GPS 和 IMU 信息的 RTK(Real Time Kinematic) 实时运动方法
2 . 融合 GPS、IMU、激光雷达信息的多传感器融合方法。 - 感知
该模块用来检测和分类障碍物。 - 预测
预测模块从感知模块接收障碍物,其基本感知信息包括位置、方向、速度、加速度,并生成不同概率的预测轨迹。 - 路由
路由模块根据请求生成高级导航信息。路由模块依赖于路由拓扑文件,通常称为Apollo中的routing_map.*。路由地图可以通过命令来生成。输出为路由导航信息。 - 规划
- 控制
该模块基于规划和当前汽车状态,使用不同的控制算法来生成舒适的驾驶体验。
1. 无人驾驶等级
-L0:基本等级,驾驶员为系统的唯一决策者----驾驶员控制方向盘、油门、制动器和所有其他车辆控制装置。
-L1:驾驶员辅助(Driver Assistance),在该等级中,车辆为驾驶员提供转向或加速支持。例如,巡航控制。在该等级中,驾驶员必须保持充分参与,但可以放弃对自动驾驶系统的一些控制。
-L2:部分自动化(Partial Automation),在该等级中,车辆自动控制几项功能,如自动巡航控制和车道保持。但是驾驶员仍然必须执行自动驾驶系统没有处理的任何功能。
-L3:有条件的自动化(Conditional Automation),车辆自主驾驶,但驾驶员必须准备在必要的时候随时接管。
-L4:高度自动化(No Human Interference),在该等级中,车辆控制驾驶体验的所有方面,并且不期望驾驶员的介入。事实上,在该等级中,车辆可能根本没有方向盘或任何驾驶员控制装置。但是,在该等级中,车辆可能被限制在某些区域,通常这被称为“地理围栏”,车辆可以在特定的地理围栏内完全自主地运行,但是在地理围栏之外,车辆不能自主操作,或者根本无法操作。
-L5:完全自动化(Full Automation),在该等级中,车辆可以在人类可以驾驶的任何地方完全自主地运行。五级自动化在所有情况下应与人类驾驶员的水平一样高或比其更高
2. 高精地图
2.1 导航地图与高精地图
高精地图包含大量的驾驶辅助信息,最重要的信息是,道路网的精确三维表征。例如:交叉路口布局和路标位置。高精地图还包含很多语义信息,地图上可能会报告交通灯上不同颜色的含义,它也可能指示道路的速度限制,以及左转车道开始的位置。高精地图最重要的特征之一是精度,手机上的导航地图只能达到米级精度。假设你把车停在路边,如果车辆偏离一两米,则可能会阻塞交通或人行道,并有可能发生碰撞。高精地图使车辆能够达到厘米级的精度,这对确保无人驾驶的安全性至关重要。
2.2 地图与定位、感知与规划
高精地图是无人驾驶车平台的核心,这是因为许多其他无人驾驶车模块都有赖于高精度地图。
-
有了高精度地图,就可以在地图上进行自定位:
首先,车辆可能会寻找地标,可以使用从各类传感器收集的数据,如摄像机图像数据,以及激光雷达收集的三维点云数据来查找地标,车辆将其收集的数据,与其高精度地图上的已知地标进行比较。这一匹配过程需要预处理、坐标转换和数据融合的复杂过程。
预处理
消除了不准确或质量差的数据。
坐标转换
将来自不同视角(前视图,侧视图等)的数据转换为同一的坐标系。
数据融合
可以将来自各种车辆和传感器的数据合并。
整个定位过程取决于地图,正因为如此,车辆需要高精度地图,以便知道它处于什么位置。 -
高精地图也可以用来帮助感知:
摄像机、激光雷达和雷达探测物体的能力在超过一定距离后都会受到限制。在恶劣的天气条件下或在夜间,传感器识别障碍物的能力可能会进一步受到限制。另外,当汽车遇到障碍物时,传感器无法透过障碍物来确定障碍物后面的物体----在这种情况下,高精度地图有很大帮助,即使传感器尚未检测到交通信号灯,它也可以将交通信号灯的位置提供能软件栈的其余部分,这可以帮汽车做下一个决策。
另一个好处在于,地图可帮助传感器缩小检测范围。例如,高精度地图可能会告知我们,在特定位置寻找停车标志,传感器就可以集中在该位置检测停车标志,这被称为 ROI(region of interest)。ROI可以帮助我们提高检测精确度和速度,并节约计算资源。 -
高精地图用于规划
正如定位和感知软件依赖于高精度地图那样,规划软件也是如此。高精度地图可以帮助车辆找到合适的行车空间,它还可以帮助规划期确定不同路线选择(就是最容易被想到的导航功能),并帮助预测软件道路上其他车辆在将来的位置。例如,高精度地图可帮助车辆识别车道的确切中心线,这样车辆可以尽可能地靠近中心行驶。在具有低速行驶限制、人行横道或减速带的区域,高精度地图使车辆能够提前查看,并预先减速。更重要的是,如果前方有障碍物,车辆可能需要变道(这个功能有点困难吧,需要更新的东西有点多)。高精度地图可以帮助车辆缩小选择范围,以便选择最佳方案。
2.3 Apollo 高精度地图
Apollo 高精度地图专为无人驾驶车设计。Apollo 地图包含道路定义、交叉路口、交通信号、车道规则、以及用于汽车导航的其他元素。高精度地图可在许多方面为无人驾驶车提供帮助。例如,高精度地图通常会记录交通信号灯的精确位置和高度,从而大大降低了感知难度(感觉用来做测距也会比较精确?)。
高精度地图不仅可以减少计算需求,还可以通过提供有关驾驶环境的详细信息,来确保无人驾驶车辆的安全。保持这些地图的更新是一件重大任务,调查车队需要不断地对高精度地图进行验证和更新。此外,这些地图可能达到几厘米的精度,这是水准最高的制图精度。
2.4 Apollo 高精度地图构建
高精地图的构建由五个过程组成:数据采集
、数据处理
、对象检测
、手动验证
、地图发布
:
数据采集
是一项庞大的密集型任务,近 300 辆 Apollo 调查车辆负责收集用于制作地图的源数据。调查车辆不仅有助于地图构建,而且对于地图的维护和更新也非常重要。道路在不断变化,建筑变化也在发生,公共事业工作人员经常对道路进行拆除和重新铺设。然而,无人驾驶车需要其地图始终保持最新状态。大量的调查车辆可确保每次道路发生改变时,地图均会得到快速更新,调查车辆使用了多种传感器 如GPS、惯性测量单元、激光雷达和摄像机。Apollo 定义了一个硬件框架,将这些传感器集成到单个自主系统中。通过支持多种类的传感器,Apollo 可以收集各类数据,将这些数据融合,最终生成高精度地图。
数据处理
指的是 Apollo 如何对收集到的数据进行整理、分类和清理以获得没有任何语义信息或注释的初始地图模板。
对象检测
使用人工智能来检测静态对象,并对其进行分类,其中包括车道线、交通标志甚至是电线杆。
手动验证
可确保自动地图创建过程正确进行并即使发现问题。
3. 定位
定位的目的是确定你的车辆在高精地图上的位置。GPS 对于无人驾驶车来说并不够精确(1~3m的精度,高楼等情况下会更差)。最常用的方法是,将汽车传感器所看到的内容与地图上所显示的内容进行比较。车辆传感器可以测量车辆与静态障碍物之间的距离----如树木、电线杆、路标和墙壁等。我们在车辆自身的坐标系中测量这些距离,以及这些静态障碍物的方向。当汽车左转或右转时,坐标系与车一起旋转,以使车辆的前进方向在坐标系中继续向前。随着车辆转弯,车辆自身的坐标系必然与地图坐标系不一致。车辆的坐标和地图坐标系可能均取决于手机导航系统中的设置。在地图上也可能找到车辆传感器所检测到的地标,为估计车辆在地图上的位置,与这些地标在地图上的位置进行匹配。地图自带坐标系,无人驾驶软件必须将传感器的测量值从车辆坐标系转换为地图坐标系,反之亦然。执行这类转换是解决定位问题的关键步骤。
3.1 GNSS RTK
GPS 即全球定位系统,是一种由美国政府开发,并在全球范围内运营的卫星导航系统,这类系统的通用名称为全球导航卫星系统或 GNSS(Global Navigation Statellite System)。GPS 是使用最广泛的 GNSS 系统,起初 GPS 只是用于军事导航,但现在任何人都可以使用 GPS 接收器。
从 GPS 卫星收集信号并使用该系统分为三部分:
- 卫星:在任何特定时间 大约有 30 颗 GPS 卫星在外层空间运行,它们各自距离地球表面约 2 万公里。
- 世界各地的控制站:控制站用于监视和控制卫星,其主要目的是让系统保持运行,并验证 GPS 广播信号的精确度。
- GPS 接收器:GPS 接收器存在于手机、电脑、汽车、船只以及许多其他设备中。如果周围没有高楼等障碍物并且天气良好,那么无论你身在何处,GPS 接收器每次应至少检测到四颗 GPS 卫星(四颗才能进行定位,二维定位需要三颗,还有一颗用来确定海拔高度)。
GPS 接收器实际上并不直接探测你与卫星之间的距离,它首先测量信号的飞行时间(TOF:Time of flight,还有TOA,TDOA等等),通过将光速乘以这个飞行时间来计算离卫星的距离。由于光速的值很大,即使是少量的时间误差也会在距离计算中造成巨大的误差,因此,每颗卫星都配备了高精确度的原子钟。
为进一步减小误差,我们可以使用实时运动定位(RTK)。RTK 涉及在地面上建立几个基站,每个基站都知道自己精确的“地面实况”位置。但是,每个基站也通过 GPS 测量自己的位置,已知的“地面实况”位置与通过 GPS 测量的位置之间的偏差为 GPS 测量结果中的误差。然后 将这个误差传递给其他 GPS 接收器,以供其调整自身的位置计算。
- GPS 优缺点
- PROS:
在 RTK 的帮助下,GPS 可以将定位误差限制在 10 厘米以内 - CONS:
1.存在高楼和其他障碍物可能阻挡 GPS 信号的问题,这使定位变得困难 ,或根本无法定位。
2.GPS的更新频率很低,大约为 10 赫兹或每秒更新 10 次。由于无人驾驶车在快速移动,我们可能需要更频繁地更新位置。
- PROS:
3.2 惯性导航
我们可以使用加速度、初始速度和初始位置来计算汽车在任何时间点的车速和位置。
但是,这又引出了一个问题,该如何测量加速度?
我们需要一个名为三轴加速度计的传感器。有三种不同类型的三轴加速度计,它们采用不同的方法,但共同的目标是精确测量加速度。然而,加速度计本身不足以计算我们的位置和速度。加速度计根据车辆的坐标系记录测量结果。我们需要知道如何将这些测量值转换为全局坐标系----这种转换需要另一个名为陀螺仪的传感器。陀螺仪的三个外部平衡环一直在旋转,但三轴陀螺仪中,旋转轴始终固定在世界坐标系中。我们计算车辆在坐标系中的位置是通过测量旋转轴和三个外部平衡环的相对位置来计算的。加速度计和陀螺仪是 IMU 的主要组件。IMU的一个重要特征在于它以高频率更新,其频率可以达到 1000Hz,所以 IMU 可以提供接近实时的位置信息。
遗憾的是,惯性测量单元的缺点在于其运动误差随时间增加而增加(Dead Reckoning)。我们只能依靠惯性测量单元在很短的时间范围内进行定位。但是,我们可以结合 GPS 和 IMU 来定位汽车。一方面弥补了 GPS 更新频率较低的缺陷,另一方面 GPS 纠正了 IMU 的运动误差。但是即使将 GPS 和 IMU 系统相结合,也不能完全解决定位问题。如果我们在山间行驶或城市峡谷中或者最糟糕的是在地下隧道中行驶,那么我们可能会长时间没有 GPS 更新,这会让整个定位面临失败风险。
3.3 LiDAR 定位
利用激光雷达,我们可以通过点云匹配来对汽车进行定位,该方法将来自激光雷达传感器的检测数据与预先存在的高精度地图连续匹配。通过这种比较,可获知汽车在高精度地图上的全球位置和行驶方向。
有许多算法可用于匹配点云,迭代最近点(ICP)是一种方法。假设我们想对两次点云扫描进行匹配,对于第一次扫描中的每个点,我们需要找到另一次扫描中最接近的匹配点,最终,我们会收集到许多匹配点对,我们把每对点之间的距离误差相加,然后计算平均距离误差。我们的目标是通过点云旋转和平移来最大限度地降低这一平均距离误差。一旦我们最大限度地降低了点云之间的误差,我们就可以在传感器扫描和地图之间找到匹配。我们将通过传感器扫描到的车辆位置转换为全球地图上的位置,并计算出在地图上的精确位置。
滤波算法是另一种 LiDAR 定位方法,滤波算法可消除冗余信息,并在地图上找到最可能的车辆位置。Apollo 使用了直方图滤波算法,该方法有时也被称为误差平方和算法(SSD)。为了应用直方图滤波,我们将通过传感器扫描点云滑过地图上的每个位置。在每个位置,我们计算扫描的点与高精度地图上的对应点之间的误差或距离,然后对误差的平方求和,求得的和越小,扫描的结果与地图之间的匹配越好。
S
S
D
:
d
(
u
,
v
)
=
∑
(
x
,
y
)
(
f
(
x
,
y
)
−
t
(
x
−
u
,
y
−
v
)
)
2
SSD:d(u, v)=sum_{(x, y)}(f(x, y)-t(x-u, y-v))^{2}
SSD:d(u,v)=(x,y)∑(f(x,y)−t(x−u,y−v))2
该示例显示一些对齐较好的点,以红色表示;一些对齐较差的点,以蓝色表示;绿色表示中等对齐:
卡尔曼滤波是另一种 LiDAR 定位方法。卡尔曼滤波是一种算法,用于根据我们在过去的状态和新的传感器测量结果预测我们当前的状态。具体来说,卡尔曼滤波使用了预测更新周期(prediction update cycle):首先,我们根据之前的状态以及对移动距离和方向的估计,来估计或“预测”我们的新位置。当然,我们的运动估计并不完美,所以需要通过使用传感器测量我们的位置并加以纠正。一旦用传感器测量了我们的新位置,我们便可以使用概率规则将也不完美的传感器测量结果与我们现有的位置预测结合起来。我们会永远宗逊这个预测更新周期,只要我们需要对车辆进行定位。先预测我们的新位置,然后用传感器测量我们的位置。LiDAE 定位额主要优势在于稳健性,只要从高精地图开始,并存在有效的传感器,我们就始终能够进行定位。主要缺点在于难以构建高精度地图并使其保持更新。事实上,几乎不可能让地图完全保持最新,因为几乎每个地图均包含瞬态元素,汽车和行人,甚至停放的汽车,在我们下次驾车驶过时都会消失。
3.4 视觉定位
图像是要收集的最简单的数据类型,摄像头便宜且种类繁多,还易于使用。通过图像实现精确定位非常困难。实际上,摄像头图像通常与来自其他传感器的数据相结合,以准确定位车辆。但将摄像头数据与地图和 GPS 数据相结合比单独使用摄像头图像进行定位的效果好得多。假设一辆车正在路上行驶,它感知到右边有一棵树。但是地图显示道路右侧有几颗树全部位于不同的位置,我们如何知道车辆现在看到哪棵树?我们可以用概率来解决这个问题,想象一下,我们位于道路上许多不同点中的任意一点处,使用概率来确定哪个点最可能代表我们的实际位置。我们知道在右边看到一棵树,我们假设从一些点可以看到右边有一棵树,而从另一些点则看不到。当然,我们很可能位于可以看到右边有一棵树的地方,我们可以排除在地图上无法看到右边那棵树的点。我们可以在开车的同时继续观察周边世界,想象一下,我们开车前行,然后观察到右边的另一棵树,在观察地图上的其余点之后,我们发现仅在少数几个位置会发现车辆右侧有成排的两棵树,我们当然最可能处于这些位置之一,所以我们可以排除所有其他位置。我们继续该过程,通过观察结果、概率和地图来确定我们最可能的位置,该过程称为粒子滤波,因为我们使用粒子或点来估计最可能的位置。当然,树木在许多道路上比较稀少,但是车道线在许多道路上却很常见,可以使用相同的粒子滤波原理对车道线进行拍照,然后使用拍摄的图像来确定车辆在道路中的位置。可以将道路摄像头图像与地图进行比较,我们的摄像头图像与地图的某些部分匹配得很好,但与地图的其他部分匹配得没那么好。
视觉定位的优点在于,图像数据很容易获得;缺点在于,缺乏三维信息和对三维地图的依赖。
4. 感知
4.1 计算机视觉
作为人类,你和我可以自动识别图像中的物体,甚至可以腿短这些物体之间的关系。但是,对于计算机而言,图像只是红色、绿色和蓝色值的集合,如何将这些颜色值翻译为解读有意义的图像内容并不明显。
无人驾驶车有四个感知世界的核心任务:
- 检测:找出物体在环境中的位置
- 分类:明确对象是什么
- 跟踪:随时间的推移观察移动物体
- 语义分割:将图像中的每个像素与语义类别进行匹配,如道路、汽车或天空
我们可以将分类作为研究计算机视觉一般数据流程的例子。图像分类器是一种将图像作为输入,并输出标识该图像的标签或“类别”的算法。例如,交通标志分类器查看停车标志并识别它是停车标志、让路标识、限速标志还是其他类型的标识。分类器甚至可以识别行为----比如一个人实在走路还是在跑路。
分类器有很多种,但它们都包含一系列类似的步骤:
首先,计算机接收类似摄像头等成像设备的输入,这通常被捕获为图像或一系列图像,然后通过预处理发送每个图像。预处理对每个图像进行了标准化处理,常见的预处理步骤包括调整图像大小或旋转图像,或将图像从一个色彩空间转换为另一个色彩空间,例如从全彩到灰度。预处理可帮助我们的模型更快地处理和学习图像。接下来,提取特征,特征有助于计算机理解图像。例如:将汽车和自行车区分开来的一些特征,汽车通常具有更大的形状,并且它有四个轮子而不是两个。形状和车轮将是汽车的显著特征。最后,这些特征被输入到分类模型中,此步骤使用特征来选择图像类别。例如:分类器可以确定图像是否包含汽车、自行车、行人或者根本不包含这样的对象。为了完成这些任务,需要建立模型。模型是帮助计算机了解图像内容的工具,在计算机视觉中,无论经过训练的模型执行什么任务,它们通常在开始时将摄像头图像作为输入。
4.2 LiDAR 图像
感知扩展到传感器而不仅仅是摄像头,激光雷达传感器创建环境的点云表征提供了难以通过摄像头图像获得的信息,如距离和高度。激光雷达传感器使用光线,尤其是激光来测量与环境中反射该光线的物体之间的距离。激光雷达发射激光脉冲并测量物体,将每个激光脉冲反射回传感器所花费的时间,反射需要的时间越长,物体传感器越远。激光雷达正是通过这种方式来构建世界的视觉表征。你可以在下图可视化视图中看到激光雷达的输出,激光雷达通过发射光脉冲来检测汽车周围的环境。蓝色表示反射激光脉冲的物体,中间的黑色区域是无人驾驶车本身占据的空间。由于激光雷达测量激光束反射,它收集的数据形成一团点或“点云”。
点云中的每个点代表反射回传感器的激光束,这些点云可以告诉我们关于物体的许多信息,例如其形状和表面纹理。通过对点进行聚类和分析,这些数据提供了足够的对象检测、跟踪或分类信息。在这里你可以看到在点云上执行的检测和分类结果:红点为行人,绿点表示其他汽车。激光雷达数据提供了用于构建世界视觉表征的足够空间信息。计算机视觉技术不仅可以使用摄像头图像信息进行对象分类,还可以使用点云和其他类型的空间相关数据进行对象分类。
4.3 机器学习
机器学习是使用特殊算法来训练计算机从数据中学习的计算机科学领域。通常,这种学习结果存放在一种被称为“模型”的数据结构中。
有很多种模型,事实上,模型只是一种用于理解和预测世界的数据结构。机器学习涉及使用数据和相关的真值标记来进行模型训练。
- 例如,可能会显示车辆和行人的计算机图像,以及告诉计算机哪个是哪个的标签。我可以让计算机学习如何最好的区分两类图像,这类机器学习也成为
监督式学习
,因为模型利用了人类创造的真值标记。 - 你可以摄像一个类似的学习过程,但这次使用的是没有真值标记的车辆和行人图像。在这种方法中,我们会让计算机自行决定那些图像相似,哪些图像不同,这被称为
无监督学习
。我们在这不提供真值标记,而是通过分析输入的数据,在这种情况下为摄像头图像,计算机拼接自行学习找到区别。 - 另一种方法被称为
半监督式学习
,它将监督学习和无监督学习的特点结合在一起。该方法使用少量的标记数据和大量的未标记数据来训练模型。 强化学习
是另一种机器学习,强化学习涉及允许模型通过尝试许多不同的方法来解决问题,然后衡量哪种方法最为成功。计算机将尝试许多不同的解决方案,最终使其方法与环境相适应。例如在模拟器中,强化学习智能体可训练汽车进行右转,智能体将在初始位置发动车辆,然后进行实验性驾驶以多种不同的方向和速度。如果汽车实际完成了右转,智能体会提高奖励,即得分,这是针对导致成功结果的初始操作。起初,汽车可能无法找到执行转弯的方法,然而,就像人类那样,汽车最终会从一些成功的右转经验中学习,最终学会如何完成任务。
4.4 神经网络
人工神经网络用于无人驾驶车,受到构成人类神经系统的生物神经元启发,生物神经元通过相互连接,构成了神经元网络或神经网络。通过类似的方式,我们可以将人工神经元层连接起来,以创建用于机器学习的人工神经网络。人工神经网络是通过数据来学习复杂模式的工具,神经网络由大量的神经元组成,正如人体神经系统的神经元那样,人工神经元负责传递和处理信息,也可以对这些神经元进行训练。你可以将这些图像识别为车辆,无论它们是黑是白、或大或小,你甚至可能不知道自己如何知道它们是车辆。也许是某些特征触发了你的反应,如车轮、车灯和车窗。人工神经网络具有相似的运作方式,通过密集训练 计算机可以辨别汽车、行人、交通信号灯和电线杆。我们不总是很理解它们如何做出这样的辨别,但它们学习了用于执行任务的模型,只是我们可能很难直观地理解该数学模型。
当看到该图像时你的大脑如何工作?你的大脑可能会将图像分为几部分然后识别特征,如车轮、车窗和颜色。然后,大脑将使用这些特征对图像进行检测和分类。例如,在确定图像是否为汽车时,大脑可能不会认为颜色是关键特征,因为汽车有多种颜色,所以大脑会将更多权重放在其他特征上,并降低颜色的重要性。
同样地,神经网络也会从图像中提取许多特征,但这些特征可能是我们人类无法描述或甚至无法理解的特征,但我们最终并不需要理解----计算机将调整这些特征的权重,以完成神经网络的最终任务,这就是深层神经网络的思维方式。(端到端?)
4.5 卷积神经网咯
卷积神经网络 (CNN) 是一种人工神经网络,它对感知问题特别有效。CNN 接受多维输入,包括定义大多数传感器数据的二维和三维形状。如果使用标准神经网络对图像进行分类,则需要通过一种方法将图像连接到网络的第一层(一维)。标准做法是通过将图像矩阵重塑为一个矢量,并在一个大行中连接所有列,将图像“展开”为一维像素阵列。
然而,这种方法打破了图像中所嵌入的空间信息。如果图像中有车轮,则车轮中的所有像素将散布在整个像素阵列中,但我们知道这些像素以二维方式连接形成车轮。如果我们将其散布在一个维度上,神经网络很难从图像中提取车轮。CNN 通过维持输入像素之间的空间关系来解决这个问题。具体来说,CNN 通过将过滤器连续滑过图像来收集信息。每次收集信息时,只对整个图像的一小部分区域进行分析,这被称为“卷积”!!!!!(很重要的理解)
当我们在整个输入图像上对一个过滤器进行“卷积”时,我们将该信息与下一个卷积层相关联。
例如:
CNN 可以识别第一个卷积层中的基本边缘和颜色信息;
然后,通过在第一层上卷积新过滤器,CNN 可以使用边缘和颜色信息来归纳更复杂的结构,如车轮、车门和挡风玻璃;
而另一个卷积可使用车轮、车门和挡风玻璃识别整个车辆;
最后,神经网络可使用这一高阶信息对车辆进行分类。
人们通常不太清楚 CNN 如何解读图像,CNN 有时会侧重于图像中令人惊讶的部分,但这也是深度学习的神奇之处。CNN 根据其任务查找真正需要的特征,任务可能是图像检测、分类、分割或其他类型的目标。
很赞,建议整小节背诵。
4.6 检测和分类
我们使用什么算法来对障碍物进行检测和分类?
- 使用检测 CNN 来查找图像中的对象位置
- 在对图像中的对象进行定位后,我们可以将图像发送给另一个 CNN 进行分类,我们也可以使用单一 CNN 体系结构对对象进行检测和分类。一种通常的做法为,在单个网络体系结构的末端附加几个不同的“头”----一个头可能执行检测,另一个则可能执行分类。
4.7 跟踪
在检测完对象之后,我们需要追踪它们。如果我们对每个帧中的每个对象进行检测并用边界框对每个对象进行标识,那么跨帧追踪的好处有:
- 首先,跟踪在检测失败时是至关重要的。如果你在运行检测算法时,对象被其他对象遮挡一部分,则检测算法可能会失败,追踪可以解决遮挡问题。
- 另一个原因在于追踪可以保留身份(id)。障碍物检测的输出为包含对象的边界框,但是,对象没有与任何身份关联。单独使用对象检测时,计算机不知道一个帧中的哪些对象与下一帧中的哪些对象相对应。该任务对人类来说很简单,但对汽车来说很困难。
追踪的第一步为确认身份,通过查找特征相似度最高的对象,我们将在之前的帧中检测到的所有对象与在当前的帧中检测到的对象进行匹配。对象具有各种特征,有些特征可能基于颜色,而另一些特征可能基于形状。计算机视觉算法可以计算出复杂的图像特征,如局部二值模式和方向梯度直方图。当然,我们也需要考虑连续视频帧中两个障碍物之间的位置和速度。由于两个帧之间的对象位置和速度没有太大变化,该信息也可以帮助我们快速找到匹配对象。在确定身份后,我们可以使用对象的位置并结合预测算法,以估计在下一时间步的速度和位置。该预测可帮助我们识别下一帧中的相应对象。
4.8 分隔
语义分割涉及对图像的每个像素进行分类,它用于尽可能详细地了解环境并确定车辆的可行驶区域。语义分割依赖于一种特殊类型的 CNN,它被称为全卷积网络或 FCN。FCN 用卷积层来替代传统 CNN 体系结构末端的平坦层。现在,网络中的每一层都是卷积层,因此其名称为“全卷积网络”。FCN 提供了可在原始输入图像之上叠加的逐像素输出,我们必须考虑的一个复杂因素是大小,在典型的 CNN 中经过多次卷积之后,所产生的输出比原始输入图像小得多。然而,为了分割像素,输出尺寸必须与原始图像的尺寸相匹配。为了达到该目的,我们可以对中间输出进行上采样处理,知道最终输出的大小与原始输出图像的大小相匹配。网络的前半部分通常被称为编码器,因为这部分网络对输入图像的特征进行了提取和编码。网络的后半部分通常被称为解码器,因为它对这些特征进行了解码,并将其应用于输出。
4.9 传感器数据的优缺点比较
图中所显示了摄像头、激光雷达和雷达这三种传感器的优缺点:
摄像头非常适用于分类,在 Apollo 中摄像头主要用于交通信号灯分类以及车道线检测。激光雷达的优势在于障碍物检测,即使在夜间,在没有自然光的情况下,激光雷达仍能准确地检测障碍物。雷达在探测范围和应对恶劣天气方面占优势,通过融合这三种传感器的数据,可实现最佳聚合性能,这被称为“传感器融合”。
4.9.1 雷达与激光雷达
雷达已经在汽车上使用很多年,在各种系统中都需要雷达,如自适应巡航控制、盲点警告、碰撞浸膏和碰撞预防系统等。尽管雷达技术已经成熟,它仍在不断进步,作用不断提升。其他传感器测量速度的方法是计算两次读数之间的差距,而雷达则通过多普勒效应来直接测量速度。多普勒效应根据对象在远离还是接近你,测量出雷达的频率变化。就像消防车警报器一样,当车辆正在远离你和驶向你时,听起来声是不一样的。多普勒效应对传感器融合至关重要。因为它可以把速度作为独立的测量参数,从而提升了融合算法的收敛速度。雷达还可以生成环境的雷达地图,进而实现定位。因为雷达波在坚硬表面会回弹。因此,它可以直接测量对象距离,无需在视线范围内也可以。雷达可以看到其他车辆底部。并发现可能会被阻挡的建筑物和对象。在车上的所有传感器中,雷达是至不容易受雨雾影响的。而且视野宽阔,可达 150 度,距离可达200 多米。与激光雷达和摄像头相比,雷达分辨率较低,尤其是在垂直方向,分辨率非常有限。分辨率低意味着来自静态物体的反射可能产生问题。例如,街道上检修孔盖或汽水罐,可能产生很高的雷达反射率,但他们并不大。我们将其称为雷达杂波。因此,当前的车载雷达通常会忽视静态物体。
激光雷达是激光探测与测量的简称,而雷达则是无线电探测与测量的简称。雷达使用无线电波,而激光雷达则使用红激光束来确定传感器和附近对象的距离。目前的激光雷达大多使用 900 纳米光波长度的光源。但部分激光雷达使用的光波长度更长,在雨雾中性能更好。当前的激光雷达使用旋转座架发射激光,扫描周边环境。激光室脉冲式的,脉冲被对象反射,然后返回一个点云,来代表这些物体。激光雷达的空间分辨率远远高于雷达。因为激光束越聚焦,垂直方向的扫描层数量就越多,因此每层的激光雷达的密度也越高。目前,激光雷达还不能直接测量对象的速度,必须使用两次或多次扫描之间的位置差来确定。激光雷达受天气和传感器清洁程度影响也很大,因此需要保持清洁。它们块头也比其他传感器更大,因此也很难安装,除非你只想在车顶安装一个大的激光扫描器。
4.10 传感器融合策略
Apollo 使用激光雷达和雷达来检测障碍物,用于融合输出的主要算法为卡尔曼滤波。卡尔曼滤波有两个步骤:第一步为预测状态;第二步为更新测量结果。假设我们正在跟踪一名行人,这里的状态表示行人的位置和速度。从已经掌握的行人状态开始,我们使用这些信息来执行卡尔曼滤波的第一步,即预测行人在将来的状态。下一步为误差结果更新,我们使用新的传感器来更新我们所认为的行人状态。卡尔曼滤波算法是预测和更新步骤的无限循环。实际上有两种测量结果更新步骤:同步和异步。同步融合同时跟新来自不同传感器的测量结果,而异步融合则逐个更新所收到的传感器测量结果。传感器融合可提高感知性能,因为各传感器相辅相成。融合也可以减少跟踪误差,这样我们可以更确性,对道路上其他物体位置的预测。
5. 预测
无人车是在很多物体间穿梭行驶,其中许多物体本身就是一直在移动的。比如像其他汽车、自行车还有其他人。我们的无人车需要预测这些物体的行为,这样才能确保我们的无人车做出最佳决策。
5.1 预测方式
有两种不同的预测方式:
- 基于模型的预测
- 数据驱动预测
假设我们的无人查来到一个 T 型路口,并且看到一辆车从左面行驶而来。此时,我们还不清楚这辆车是要右转还是直行。用基于模型的方法,我们可以为此场景构建了两个候选的预测模型:一个模型描述了该车进行右转弯,在上图中用绿色轨迹表示;另一个模型描述了该车继续直行,在上图中用蓝色轨道表示。在此刻,我们认为任意一种模式发生的概率都是相同的。所以我们有两个候选模型,每个模型都有自己的轨迹。我们继续观察移动车的运动,看它与哪一条轨迹更加匹配。
如果我们看到车辆开始向左改变车道,我们会更加确定车辆最终会直行;另一方面,如果我们要看到车在右转弯车道保持直行,我们会更加倾向于预测对车辆右转。这就是基于模型预测方法的工作原理。
数据驱动预测使用机器学习算法,通过观察结果来训练模型,一旦机器学习模型训练好,我们就可以在现实世界中利用此模型去做出预测。数据驱动方法的优点是,训练数据越多,模型效果越好。
基于模型的方法的优点在于它的直观,并且它结合了我们现有物理知识以及交通法规还有人类行为多方面知识。
5.2 障碍物状态
为了预测物体的运动,我们也需要知道物体的状态:当我们行驶时,作为人类我们通过观察一个物体的朝向、位置、速度和加速度来预测它将会做什么。这同样是一辆无人驾驶汽车如何观察物体的状态,除了位置、速度、朝向和加速度之外,我们无人车还需考虑车道段内物体的位置。例如,预测模块会考虑从物体到车道线段边界的纵向和横向距离。预测模块还包含之前时间间隔的状态信息以便做出更准确的预测。
6. 规划
在规划中,Apollo 通过结合高精度地图、定位和预测来构建车辆轨迹。规划的第一步是路线导航,侧重于如何从地图上的 A 前往 B。在进行路线规划时,将地图数据作为输入,并输出可行驶路径。手机导航系统是路线规划的一个示例,在 Apollo 中,通过线路规划模块处理该任务,一旦我们构建了高水平的路线,我们就会放大至轨迹规划。通过轨迹规划,我们可以做出微妙的决策以避开障碍物,并为乘客创造平稳的乘车体验。
轨迹规划的目标是,生成免碰撞和舒适的可执行轨迹,该轨迹由一系列点定义,每个点都有一个关联速度和一个指示何时应抵达那个点的时间戳。
7. 控制
最后
以上就是妩媚水壶为你收集整理的Apollo核心模块1. 无人驾驶等级2. 高精地图3. 定位4. 感知4.6 检测和分类5. 预测6. 规划7. 控制的全部内容,希望文章能够帮你解决Apollo核心模块1. 无人驾驶等级2. 高精地图3. 定位4. 感知4.6 检测和分类5. 预测6. 规划7. 控制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复