0%

Apollo基础课程之定位

学习百度Apollo无人驾驶课程之定位教程。

本周学习定位模块的知识,了解车辆如何以个位数厘米级别的精度进行自定位。
定位是让无人车自己知道自身确切的位置,定位对无人驾驶尤其重要,对于无人车来讲不仅仅要找出自身的大概位置,而是要以10厘米级别,将车感信息与高精地图信息相比对来精确地位置寻找。

定位的描述

在日常生活中,假设你有一张高精地图,定位的任务是确定你的车辆在这张高精地图上的位置。

大多数时候我们用GPS来定位,我们用手机导航,手机中的app用我们的位置信息也是用GPS来定位,比如常用的外卖app,这已经足够了。但是PS对于无人车来讲是远远不够远远不够精确的。因此我们需要找到别的方式来进行更加准确的定位,确定车辆在地图上的位置,最常用的方法是将汽车传感器所看到的内容与地图上所显示的内容相比较。车辆传感器可测量车辆与静态障碍物之间的距离。车子就在自身的坐标系中测量这些距离以及这些静态障碍物的方向。在这个坐标系中,汽车的前进方向始终与车头保持一致,但不一定与地图坐标系保持一致。当车辆传感器测量到地图上的物体,会将传感器的地标观测值,与地标在地图上的位置匹配,转换到地图自带坐标系,反之亦然,从而达到地图与车感数据的对比。
接下来介绍几种可选择的方法,每种都有自己的优劣,接下来介绍几种主流的定位方法

定位方法介绍

1,GNNS RTK

如果你在野外迷路,然后看到一棵离自己75米远的树,你现在只知道你自己在以这棵树为圆心半径是75米的一个圆上。但是如果你还知道你你离一个房子64米远,你就知道你在这以这栋房子为圆心半径为64米的圆与刚刚那个圆的交点,此时两个圆的交点有两个,我们还不能完全确定自己的位置。如果我们又看到了第三个路标,假设它是路灯,并且我们离它55米远,那我们就知道了自己相对于这些地标位置的确切值。

首先假设现在有一个世界地图标注了这三个地标在世界上的确切位置,那么就可以知道自己的确切位置了,这就称为三角测量
GPS就是这样的工作原理,只是参照物是卫星(同步卫星,和地球公转的角速度一样)。三颗卫星再加上一颗用来定位高度的卫星,4颗卫星就可以知道自身的确切位置了。GPS这类系统的名称为全球导航卫星系统或GNNS,GPS是其中使用最为广泛的GNNS系统。

GPS分为三部分:

  • 1,卫星,在任何特定时间大约有30颗GPS卫星在太空运行,它们距离地球的距离约为2万公里
  • 2,由各地的控制站组成,控制站用于监视和控制卫星,主要目的是让系统保持运行并验证GPS广播信号的精确度
  • 3,GSP接收器,这部分我们可能最熟悉,它位于手机、电脑、汽车、船只以及许多电子设备中
    GPS实际上并不直接测量你与卫星之间的距离,而时首先测量信号的飞行时间即TOF原理。通过将光速乘这个飞行时间,来计算距离卫星的距离。由于光的速度很大,所以即使是很小的时间误差也会在计算距离的时候造成巨大的误差。

    为了减小这个误差,每颗卫星都配置了原子钟。为进一步减小误差,使用实时运动定位(RTK)。RTK需要在地面上建几个基站,每个基站都知道自己精确的地面”实况位置”,但是每个基站同时也通过GSP测量自己的位置。已知的”地面实况”位置与通过GPS测量的位置之间的偏差,为GPS测量结果中的误差。然后将这个误差传递给其他GPS接收器以供其调整自身的位置计算。在RTK的帮助下,GPS可以将定位误差限制在10厘米以内。

    不过GSP有个缺点,就是高楼大厦和其他障碍物可能会阻挡GPS信号,这个问题在城市尤为明显,而无人车将来的商用化肯定是城市是主战场,这就使得定位会变得困难或极端情况下根本无法定位,这对于无人车来讲肯定是无法接受的。至于原因,你懂得。还有一个缺点,GPS更新频率很低,大概是10赫兹,由于无人车在快速移动可能需要更加频繁的更新位置信息。

    2, 惯性导航

    假设汽车以匀速行驶,如果提供了汽车的初始位置、速度、行驶时长,那么汽车的位置也随即从初始位置开始,然后速度乘以时间。

    假设给了初始速度,并给予加速度和驾驶时间,就可以使用加速度、初始速度、初始位置来计算汽车在任何时间点的车速和位置。
    加速度需要三轴加速度计的传感器来测量,有三种不同类型的三轴加速度计,它们采用不同的方法,但共同的目的都是精确测量加速度。加速度计根据车辆的坐标系记录测量结果,还需要陀螺仪传感器将这些测量值转换为全局坐标系测量值。
    三轴螺仪的三个外部平衡环一直在旋转,但三轴陀螺仪中的旋转轴始终固定在世界坐标系中,在坐标系中的位置是通过测量旋转轴和三个外部平衡环的相对位置来计算的。

    加速度计和陀螺仪是惯性测量单元(IMU)的主要组成组件,IMU可以以高频率更新,可达100赫兹,所以IMU可以提供接近实时的位置信息。但是缺点是在于IMU的误差随时间的增加而增加,我们只能依靠惯性测量单元(IMU)在短时间范围内进行定位。不过我们可以结合GPS和IMU来进行定位。IMU弥补了GPS更新频率低的不足;GPS纠正了IMU的运动误差。不过即使将GPS和IMU结合起来也不能完全解决定位的问题,比如在山里面的隧道或峡谷中行驶那么可能很长时间没有GPS信号,我们需要考虑的极端情况。

    3, 激光雷达定位

    重磅产品登场,目前比较贵。不过相信随着商业化的步伐推进,逐渐会降价到普通消费者能接受的地步。

激光雷达是利用点云匹配来对汽车进行定位。该方法是将来自激光雷达传感器的数据与预先存在的高精地图之间进行匹配(所以地图采集很重要,在后面会学习高精地图采集的相关知识,当然地图数据的更新也很重要)。通过这种方式来确定汽车在高精地图上的精确位置和行驶方向,匹配点云有很多方法,迭代最近点就是其中的一种。

1, 迭代最近点

对于第一次扫描的每个点,需要找到另一次扫描中最接近的匹配点,最终会找到许多匹配点对,把每个点的距离误差相加,然后计算平均距离误差。假设我们对两次点云扫描进行匹配。我们的目标是通过点云旋转和平移来最大限度地降低这一平均距离误差,就可以在传感器扫描和地图之间找到匹配,将通过传感器扫描到的车辆位置转换为全球地图上的位置并计算出在地图上的位置。

2, 滤波算法

滤波算法是另一种雷达定位算法。将扫描到的车辆位置转换为全球地图上的位置并计算出在地图上的精确位置,滤波算法是另一种雷达定位算法。它可以消除冗余信息并在地图上找到最可能的车辆位置。Apollo使用了直方图滤波算法,它有时也被称为误差平方和算法(SSD)。为了应用直方图滤波,将通过传感器扫描的点云数据滑过地图上的每个位置,在每个位置上计算扫描的点与高精地图上的对应点之间的误差或距离然后对误差的平方求和,求得的和越小说明扫描结果与地图之间的匹配越好。在事例中,蓝色表示较好,红色较差,绿色一般。

3,卡尔曼滤波

卡尔曼滤波是另一种雷达定位算法,卡尔曼滤波用于根据我们在过去的状态和新的传感器测量结果预测我们当前的状态。它使用了预测更新周期,我们根据之前的状态及对移动距离和方向的改变来估计我们的位置。当然运动估计并不完美,所以需要通过传感器测量我们的位置并加以纠正。一旦测量出了新的位置,我们就利用概率规则将不完美的测量结果与现有的位置匹配起来。一直遵循这个预测更新周期,只要我们需要对车辆进行定位,先预测我们的新位置,然后用传感器测量我们的位置。雷达定位的主要优势在于稳定性,只要从高精地图开始并存在有效的传感器,就始终能进行定位。主要缺点在于难以构建高精地图并使其保持最新,事实上几乎不可能让地图完全保持最新,因为几乎每个地图均包含瞬态元素,汽车、行人、停放车辆、垃圾等等。

1
学到一个新的概念:瞬态元素。看上下文也比较好理解,就是这些信息会随时变化,比如在某个位置的行人,会走开,也有可能会有新的人过来,这很正常,所以说不存在完全最新的高精地图。但是不变(或者变化周期稍长的信息)的元素可以确定,比如说道路的宽度,位置,路口。这些信息会变,但是变化周期较长,一旦变化也可以用地图采集车去进行重新采集数据并制作新的高精地图。

4, 视觉定位

图像是要收集的最简单的数据类型,摄像头便宜且种类繁多、易于使用。但是实际上通过图像实现精确定位却非常困难,实际上摄像头图像通常与其他传感器的数据相结合以准确定位车辆。比如与GPS 数据相结合来定位。比单独使用摄像头定位效果更好。假设一辆车正在路上行驶,感知到右边有树,但是地图显示道路右侧有几棵树有很多不同的点位置。如何知道车辆现在看到哪棵树?我们可以使用概率来确定哪个点最可能代表我们的实际位置。有些点是无法看到右边有树,可以先排除。

继续开车可以发现,有些点右边只有一棵树,也可以排除。

这个过程称为粒子滤波。当然树木在许多道路上比较稀少,但是车道线在许多道路上却很常见,可以使用相同的粒子滤波原理对车道线进行拍照,然后使用拍摄的图像来确定车辆在道路中的位置,可以将道路摄像头图像与地图进行比较。如图所示,蓝色代表地图上两个不同位置的车道线,红色代表车辆摄像头观察到的车道线,红线与右侧蓝线的匹配度要比与左侧蓝线的匹配度高得多,更有可能位于右侧图像位置上。

1
粒子滤波观察车道线


视觉定位的优点在于图像数据很容易获得,缺点在于缺乏三维信息和对三维地图的依赖。
高精地图不仅可以减少计算需求,还可以通过提供有关驾驶环境的详细信息,来确保无人车的安全。保持这些地图的更新是一项重大任务,测试车队需要不断地对高精度地图进行验证和更新。此外,这些地图可能达到几厘米的精度,这是水准最高的制图精度。

Apollo定位

接下来学习Apollo定位。
首先定义Apollo定位:Apollo使用基于GPS、IMU、激光雷达的多传感器融合定位系统,这种方法利用了不同传感器的互补优势,也提高了稳定性和准确性。
Apollo定位模块依赖于IMU、GPS、激光雷达、雷达高精地图,这些传感器同时支持GNSS定位和LiDAR定位,GNSS定位输出位置和速度信息,LiDAR定位输出位置和行进方向信息。融合框架通过卡尔曼滤波将这些输出结合在一起。以提高定位精度。

卡尔曼滤波建立在两步预测测量周期之上,在Apollo中,惯性导航解决方案用于卡尔曼滤波的预测步骤,GNSS 和 LiDAR 定位用于卡尔曼滤波的测量结果更新步骤。
附Apollo官方的自动驾驶发展路线图:现在是2019年3月,看样子有限制的自动驾驶很快就会到来,Robin在两会接受采访的时候说下半年会在长沙试水商业化运营。到时候应该会看到消息,我觉得那一天就将会是中国自动驾驶历史上值得纪念的一天,也会拉开中国汽车史上的新篇章。无人驾驶很可能是我们进入新智能时代的一个重要标志。