现在 我们已经明白 为什么需要定位;
以及 几种定位的方法;
和 Apollo 的定位框架。
看别人锻炼不能使自己减重!
自己需要动手编程,实现一些想法。
Apollo 使用基于 GPS、IMU、激光雷达的多传感器 融合定位系统,
这种 融合方法 利用了不同传感器的互补优势;
Apollo 定位模块 依赖于 IMU、GPS、激光雷达、雷达、高精度地图。
这些传感器 同时支持 GNSS定位 和 激光雷达定位;
GNSS定位
输出位置、速度信息,
激光雷达定位
输出位置、前进方向信息
融合框架,通过卡尔曼滤波 将这些输出结合到一起
卡尔曼滤波建立在 两步 预测-量测周期之上,
Apollo的惯性导航解决方案 用于 卡尔曼滤波的预测步骤,
GNSS和激光雷达定位用于卡尔曼滤波的量测更新步骤;
Camera imagines are the easiest type data to collect.
相机图像 是 收集数据的最简单类型。
摄像头 便宜且种类多样,还使用简单。
那么可以使用 图像实现定位吗?
(通过图像实现精确定位是很困难的)
实际使用时,摄像头图像 常常结合 其他传感器的数据 以准确定位。
将 摄像头图像 和 地图、GPS数据结合 定位效果更好,
粒子滤波(Partical Filter)
我们 通过观察、概率、地图来确定我们最有可能的位置。
细节描述:
想象有 一辆行驶的车 感知到右侧有一棵树,
地图上显示了全部不同位置的树,我们如何知道看到的是哪棵树?(定位)
可以用概率的方法解决这个问题,
最有可能,感知到右侧有一棵树的点,最有可能是我们实际的位置;
(可以据此排除不可能看到 树的点)
我们继续观察世界,发现右侧又有一棵树,
观察地图上的其他点之后,
最有可能,感知到右侧有两棵树的点,最有可能是我们实际的位置;
继续这个过程。
实际使用时,树是比较少的,但车道线是常见的。
使用相机拍摄车道线,进行粒子滤波,进而确定车辆在道路中的位置。
两个位置的车道线;红色——相机拍到的车道线,蓝色——地图上的车道线;
视觉定位 的优点:图像很好获取;
缺点:缺乏三维信息,和对三维信息的依赖
点云匹配
利用激光雷达,我们可以 通过点云匹配来对汽车进行定位;
该方法 将来自激光雷达传感器的检测数据,与预先存在的高精度地图 进行连续匹配;
通过 这种方法,可以获知在高精度地图上的位置和行驶方向。
许多算法 可以用于匹配点云:
迭代最近点(ICP:Iterative Closest Point )是一种方法,
假设我们想对两次点云扫描进行匹配,
对于第一次扫描中的每个点,我们需要找到另一次扫描中 最接近的匹配点。
最终 我们会收集到许多匹配点对。
把每对点之间的距离误差相加, 然后计算平均值,
我们的目标是 通过点云旋转、平移,来尽可能降低 平均距离误差。
一旦达到了目标,就可以在传感器扫描和地图之间找到匹配。
我们 把传感器扫描到的位置 转换为 全球地图上的位置,并计算出在地图上的精确位置。
滤波算法 – 另一种激光雷达定位算法
滤波算法可以消除冗余信息,并在地图上找到最可能的车辆位置;
Apollo使用了 直方图滤波算法(或称为 误差平方和算法SSD Sum of Square Difference)
具体方法:
我们 将传感器扫描得到的点云 滑过地图上的每个位置,对于每个点 和地图上的对应点之间的误差或距离,然后平方求和。
求得结果越小,匹配越好。
卡尔曼滤波——另一种激光雷达定位方法
卡尔曼滤波是一种算法,根据 过去的状态 和新的传感器测量值结果 估计我们当前的状态。
使用了 一个 预测-更新 周期;
首先,根据过去的状态 对移动的距离和方向进行预测,的到新位置的预测值;
当然预测并不完美,所以我们根据 传感器的测量值 对预测值进行纠正(使用概率规则 将预测和测量进行结合)。
激光雷达定位的优势是——鲁棒性(Robust)
只要 有高精度地图,以及有效的传感器,我们总是能够定位。
难点在于:
构建高精度地图、并始终保持最新(可地图总是包含瞬时元素,汽车、行人)。
我们可以使用 加速度、初始速度、初始位置 计算车辆任意时刻的车速 和位置;
那么,我们怎么测量 加速度?
我们需要一个叫做 三轴加速度计的传感器,
(有三种不同类型的三轴加速度计,它们使用不同的方法,但目标都是测加速度)
加计,根据车辆坐标系记录测量结果,
我们需要知道 如何将测量值转换到 全局坐标系下,
这种转换需要 名为陀螺仪的传感器。
三轴陀螺仪的三个外部平衡环一直在旋转,但旋转轴(Spin Axis)始终固定在世界坐标系中;
测量旋转轴和三个外部平衡环的相对位置,可以得出车辆坐标系在世界坐标系的位置。陀螺和加计 是惯性测量单元 IMU (Inertial Measement Unit)的主要组件;
IMU 的一个重要特征是,它以高频率更新(可以达到1000赫兹);
所以,IMU 可以提供 接近实时的位置信息。
遗憾的是,IMU 的缺点在于 其运动误差随时间积累;
所以,我们智能利用IMU在短时间内定位。
我们可以结合 GPS 和 IMU 来定位:
一方面,IMU 弥补了GPS更新频率低的缺陷;
另一方面, GPS 纠正了 IMU 的运动误差;
可是,定位的问题,仍然没有完全解决,
如果我们行驶在 山间、在城市峡谷、最糟糕的 在地下隧道行驶,可能很长时间没有 GPS更新,这会让整个定位面临失败风险。
全球定位系统 GPS (Global Positioning System)
美国政府开发(develop by),在全球范围内运营(works around the world)的 卫星导航系统;
这类系统的通用名称为:全球导航卫星系统 GNSS(Global Navigation Satellite System)
起初,GPS用于军事导航;
现在,每个人可以使用GPS接收器,从GPS卫星收集信号并使用该系统;
GPS由三部分组成:
GPS接收器 并不是直接测量 卫星和我们之间的距离,
而是 测量信号飞行的时间(即,信号从卫星传播到GPS接收器所需的时间),
然后,乘以光速 计算出距离。
【注】:因为光速很大!微小的时间误差,都会造成很大的距离误差;
所以,每颗卫星都配备了 高精度的原子钟。
为了进一步减小误差,我们可以使用 RTK技术
实时运动定位(RTK Real-Time Kinematic)
RTK指 在地面上 建立几个基站,
每个基站精确已知自己的地面位置,
同时,每个基站也通过GPS测量自己的位置,
这两个位置 之间的偏差,就是GPS测量结果的误差,
然后,将这个误差传送给其他GPS接收器,以供其调整自己的位置计算结果。
通过RTK的帮助,GPS可以将自己的定位误差,限制在10厘米以内;
但GPS仍然受限于环境,且GPS的更新频率低(每秒更新10次,即更新频率10赫兹)
三角测量:–两个维度
二维平面上,得出相对这些地标 自己的确切位置。
如果 此时再有一张标注了这些地标的位置的地图,那么,就知道了自己在地图上的位置。
想象在地球表面,三个维度的定位(三维定位)
我们将使用到 卫星,它可以传送它与我们之间的距离,
那么,需要几颗卫星可以确定自己的位置呢?
假设有一张 全球高精度地图,
定位任务 就是 确定我的无人车 在这张高精度地图上的位置;(无人驾驶车 迷路了!!?)
GPS 的精度 在1-3米,对于 无人驾驶车 来说太不准确了。
(在有些情况下,如被高楼、山脉环绕,或处于峡谷,精度更差,10-50米)
因为 无法完全相信GPS,我们需要 找到一种方法
更准确地 确定车辆在地图上的位置。
最常用的做法是:
将 汽车传感器看到的内容 和 地图上显示的内容比较
车辆将 传感器识别的地标 与 高精度地图上存在的地标 做对比,
为了进行该对比,数据 需要在 车辆坐标系 和 地图坐标系之间转换;
然后,系统在地图上以10厘米的精度确定 车辆的位置。
具体实现:
传感器 可以测量车辆与静态障碍物之间的距离,(树木、电线杆、路标等);
这些距离 是在 车辆坐标系中的投影(或者 距离和方向),进而得到 地标的传感器观测坐标值;
在高精度地图上,也可以找到该地标的 坐标;
将 这两个坐标值 进行匹配,
估计出车辆在地图上的位置;
其他的定位方法,接下来会探讨几种定位的方法(它们各有优缺点):
最后, 我们会了解Apollo是如何解决 定位问题的。
五个过程组成:
数据收集;
数据处理;
对象检测;
手动验证;
地图发布
数据收集
调查车使用了多种传感器,包括GPS/IMU、激光雷达、摄像机、照相机;
Apollo 定义了一个框架,将这些传感器集成到 单个自主系统中,将这些数据融合,最终生成 高精度地图。
数据处理
是指 Apollo对 收集到的数据进行 整理、分类和清洗(cleans),以获得没有语义、注释的初始地图模板;
对象检测
使用 人工智能 来检测静态对象 并分类,
其中 包括:车道线、交通标志、甚至电线杆;
手动验证
可以确保 自动创建地图过程 可以正确进行 并且及时发现问题;
且 Apollo 软件 使手动验证团队可以 高效标记、编辑地图。
地图发布
高精度地图、上视图、和三维点云地图
在构建和更新 地图的过程中 Apollo采用了众包。
众包:Crowdsourcing,
a modern business term coined in 2006, is defined by Merriam-Webster as the process of obtaining needed services, ideas, or content by soliciting contributions from a large group of people, and especially from an online community。
众包 意味着 Apollo向公众 发布其数据采集工具;
任何人都可以参与 高精度地图的制作任务,可以通过 智能手机、智能设备、其他智能车 来实现。
Apollo 高精度地图 专门为 无人驾驶车设计,
Apollo 高精度地图 包括 道路定义、交叉路口、交通信号、车道规则以及其他用于汽车导航的元素;
保持地图更新 是一项重大的任务;
Apollo 拥有丰富的高精度地图数据,
Apollo 已经绘制了 每条中国高速公路的地图;
计划到2020年,涵盖中国所有国道以及其他等级的公路;
高精度地图的格式:
Apollo采用了 OpenDRIVE格式–一种行业制图标准
Application Programming Interface
规划软件(Planning Software) 也依赖于 高精度地图
可以帮助 缩小可选择的范围。
正如 人的眼睛和耳朵有距离的限制一样,
传感器 也是如此。
距离–长距离过后会受到限制
恶劣天气条件、或夜间–识别能力进一步受限;
遇到障碍物时,无法确定其后的情况;
因此,高精度地图有利于感知,
高精度地图 是Apollo无人驾驶车平台 的核心;
因为 许多其他无人驾驶车模块 都有赖于高精度地图。
有了高精度地图,我们(无人驾驶车辆)要做的就是在 地图上进行自定位
(即,我们在地图上的什么位置)
然后将找到的地标 与 已知的地标进行匹配
一旦无人驾驶车 高精度知道了它的位置,定位的任务就完成了。
整个 定位过程 依赖于地图,定位结果的精度也依赖于地图,这就是为什么需要 高精度的地图。
巨大区别之一:精度
传统地图:米级;
高精度地图:厘米级;
机器人环境中的 地理地图
无人驾驶车的优势:惊人的记忆能力,每一个车道、标记、每一个细节。
用途之一:定位(找出你在地球上的那个位置)
用途之二:预测规划(确定在何处拐弯)
等等
已经 了解Apollo架构 和 如何为无人驾驶车提供支持
下面 将学习各个关键组件
Apollo 云服务 是在云中运行的一套 应用程序,(在车辆本身之外)。
云:是一个术语,用来描述 通过互联网访问 服务器,(只要你有 互联网连接 以及 授权账户)。你可以 将电子数据 放入云,并且在任何地方访问。
Apollo的云服务,不仅仅 是存储数据,它提供了许多 应用程序。
(包括了可 加快构建和训练 无人车软件 的工具)
Apollo Cloud Services
此处,主要介绍 仿真 和 数据平台:
仿真环境平台
是Apollo 开放软件栈的重要工具,
它 允许每个人根据自己的需求,来构建 仿真环境;
它 还汇聚了大量的驾驶数据(开发人员可以用这些数据验证无人驾驶软件系统);
功能1:配置不同的驾驶场景;
功能2:上传和验证模块;
功能3:评估系统;
功能4:三维可视化实时路况;
无人驾驶数据来源
1.模拟场景(虚拟场景)创建新场景;
2.道路测试(记录场景)重放传感器记录场景;
用于 训练 像深度学习网络那样的机器学习模型的数据:
带有标签的注释数据——ApolloSpace数据集;
整体框架:
开放软件层(open software layer)分为三个子层:
实时操作系统(Real-Time Operating System)
可以确保在给定的时间内完成特定任务,
“实时”是指无人车的操作系统能够及时进行计算、分析以及执行相应的操作,(即,在汽车的传感器收集到外界数据的短时间内完成)。
实时性 是保证 系统稳定性和驾驶安全性的基本要求。
Apollo实时操作系统RTOS 是Ubuntu Linux操作系统 和Apollo内核 相互结合的成果。
运行时框架(Runtime Framework)
应用程序模块层(the layer of Application Modules)
如果我们想要打造一辆无人驾驶车,
首先要开发一款可以通过 电子控制的基础车辆,(不仅仅是通过实体方向盘、油门踏板、刹车踏板)。
这种类型的车辆具有特殊的名称:线控驾驶车辆。
传感器:
百度最初是一家中国的互联网搜索引擎公司,现在转变为一家人工智能公司,在全球各地设有办事处。
百度的宗旨是通过技术让复杂的世界变得简单。
The Apollo Vehicle System是百度最重要的开源贡献之一。
我们开放了无人驾驶功能,让全世界的工程师都可以在Apollo上打造自己的无人驾驶车。
Apollo提供世界领先的高精度地图服务、和开源无人驾驶模拟引擎。
与Closed Vehicle Systems相比,Apollo的发展速度更快,为参与者带来的收益更大。
我们的开源框架是学术界、行业研究人员和制造工程师共同努力的成果。
Apollo技术框架由四个层面组成:
参考车辆平台(Reference Vehicle Platform);
参考硬件平台(Reference Hardware Platform);
开源软件平台(Open Software Platform);
云服务平台(Clouds Service Platform);
在接下来的学习中,了解这些方面,并将其整合打造端到端无人驾驶车辆。
我们使用 计算机视觉 和 传感器融合,获取一幅关于我们的世界的画面,
使用定位确定我们在这个世界的精确位置,
然后使用路径规划来绘制一条通过这个世界到达目的地的路径,
然后通过控制转动方向盘、踏下油门、踩动制动器最终移动车辆沿着该轨迹行驶。
– Featuring Apollo
百度Apollo开源无人驾驶平台
The most important reason is safety. Why we need self-driving cars?
汽车工程师
分成了6个等级,0-5
0:驾驶员–唯一的决策者;
1:驾驶员辅助(Driver Assistance)–转向、加速支持;巡航控制
2:部分自动化(Partial Automation)–控制几项功能:自动巡航控制(Automatic Cruise Control),车道保持(Automatic Lane Keeping)
3:有条件自动化(Conditional Automation)–在必要的时候,需要驾驶员接手;
4:高度自动化(No Human Interference)–不希望驾驶员参与(可能没有方向盘),被限制在特定区域(Restricted in Geofence);
5:完全自动化(Full Automation)–在所有情况下,与人类一样好
2017年,百度发布了名为Apollo的开源无人驾驶项目,该项目帮助合作伙伴整合自有车辆和硬件系统 以构建完整的无人驾驶系统。
途胜未来?
?1.SLAM?
?2.路径规划?