初始无人驾驶—定位

课程简介:

了解车辆如何以个位数厘米级别的精度进行自定位

一、定位简介

定位是让无人驾驶车知道自身确切位置的方法,这对于无人驾驶车来说非常重要。假设你在驾驶一辆车辆时迷失了方向,你不知道自己在何处。而你现在手上拥有一张全球的高精度地图,定位的任务时确定你的车辆在这张高精度地图上的位置,在日常生活中国我们会使用诸如GPS来查找我们的位置,但是它们的精度太差了,一般都在1-3米之间,当遇到大山遮挡时,精度更会降低。所以我们无法完全信任GPS的定位,因此我们必须找到另一种方法来更加准确的确定车辆在地图上的位置,最常用的方法是通过感知周围环境信息与地图数据匹配,从而精确定位。

初始无人驾驶—定位_第1张图片
例如这样,车辆会以自身建立直角坐标系,x轴的方向始终都是朝向车头的前方,y轴同理。这样就能确保在测量车辆与建筑物或者障碍物的准确方位与距离,根据这两个数据和已经精确定位的建筑物或障碍物就可以快速计算出车辆所处的精确位置。

初始无人驾驶—定位_第2张图片

(以上就是对坐标的换算过程,通过地图坐标和车辆坐标的偏差与距离计算)

课程将探讨几种常见的无人驾驶车定位方法,例如GNSS RTK、惯性导航、LiDAR定位和视觉定位,接着将了解道Apollo框架是如何解决定位问题的,这是一个充满挑战的过程。

二、Sebastian介绍定位

优达学诚创始人,Sebastan教授在斯坦福担任教师时,发表过100多篇关于定位的论文,可见论文对于研究的重要性。机器人想知道自己身处何处,这不仅包括X、Y坐标位置,也包括航向等信息,所以拥有GPS并不能达到我们需要的精确定位。因为我们要细致到知道道路上的行人和障碍物,所以必须建立一个关于定位的全景图,他会涉及很多传感器的运用,比如惯性传感器,还有各种不同类型的外部传感器,包括摄像头、激光雷达等。接下来让我们深入了解定位。

三、GNSS RTK_a

初始无人驾驶—定位_第3张图片

当我们身处野外时,当你与一棵树距离在75m时,你的方位便定格在以它为圆心,半径为75m的圆边上。但是没有确切的方位角,也就是你相对于树的方向,所以你的坐标任然不能确定。
但是假如你又测量到你不远处有一间房与你像个64m,如下图所示:

初始无人驾驶—定位_第4张图片

那么我们就知道我们位于两个圆的交点上,但是两个圆的交点是有两个的,例如左和右两个,但你并不清楚。所以这时你只有再找出一个标识物出来,便能确定你的准确位置了。

这种测量方法叫三角测量法,适用于两个维度的地图。如果我们用于三维地图的话,聪明的科学家便想到了利用为我们传送信号的卫星测量的距离,显然一颗卫星不足以描绘出具体位置,只有多颗卫星共同作用,才会得出最后的结论。那么我们至少需要几颗那样的卫星呢?

GNSS PTK_b

相信大家都了解GPS是全球定位系统,由美国研制,中国也成功研制出属于自己的北斗卫星群。这种具有全球定位的系统通用名称为全球导航卫星系统或GNSS。现如今GPS是使用最为广泛的GNSS系统,起初只是用于军事导航,现如今我们普通百姓都能够使用GPS卫星,达到我们的导航目的。

GPS分为三部分:
第一部分是卫星,在特定的时间,大约有30颗GPS卫星在外层空间运行,它们距离地表大约两万公里。
第二部分便是地边控制站,分布世界各地。控制站用于监视和控制卫星,其主要目的是让系统保持运行,并验证GPS广播信号的精确度。
第三部分是GPS接收器,而这种接受器形态各异,存在于手机、电脑、汽车、船只以及其他的设备中,如果环境状况良好的话,接收器每次应至少检测到四颗GPS卫星。

当然GPS并不是直接计算接收器和卫星之间的距离,而是先测量信号飞行时间(从他收到信号并传输到你接收器的时间再乘以光速),因为是和光速相乘,所以极小的时间误差也会产生很大的距离误差。因此每颗卫星都配备有高精度的原子钟,未来进一步减少时间误差,我们可以使用定时运动定位(或者RTK)。

RTK:在地面建立许多位置精确的基站,通过不断和GPS纠正偏差,将误差的值传递给GPS接收器,以供其调整自身位置时计算。

初始无人驾驶—定位_第5张图片

在RTK的帮助下,GPS可以将误差缩小到10厘米以内,但是在高楼或者其他遮蔽物干扰时,仍然存在阻挡信号的问题,这使定位产生了很大的困难。

而且GPS也存在一个缺点,它的更新频率很低,大约是10赫兹或者一秒更新10次,如果把这种定位器用作无人车的定位系统,显然很难让一直保持运动的车精确定位。

五、惯性导航_a

先不谈惯性导肮的核心意义,光是提到惯性,我们就很容易想到物理知识中的物体惯性,想象一下车辆在道路上行驶时,车速很快时或者自身重量很大时,车很难迅速改变行驶方向,而是顺着现在的运动轨迹前进。

高中课程中出现很多关于,车辆保持某一恒定速度超前行驶,到某一时刻时,计算车辆相对于初始位置的距离。这种问题对于我们来说太简单了,为了证明我们这门课没这么easy,我提出相同的问题,但是我们不知道汽车的初始位置和速度,而是提供初始速度和加速度,当然了,我不可能问你汽车的位置了,我想知道汽车在某一时刻的速度,哈哈,是不是感觉很侮辱智商。其实我们需要的就是这种把问题简单化的方式来提高大家对无人驾驶的兴趣,而不是一出来就交给你一套复杂的公式。

六、惯性导航_b

接着上面的课程我们知道,想要获取汽车的此时的速度,只需要初始速度+时间×加速度即可。而且如果加入第一问题的初始位置,我们更能计算出汽车当前的位置,但是又有了一个新的问题,那就是我们该如何测量加速度呢?

当然是三轴加速计的传感器了(如果想深入了解传感器,可以点击学习)。现如今至少有三种不同类型的三轴加速度计,他们采用了不同的方法,但是共同的目标都是让测量的加速度值更精确一些。

然而,只用加速度计不足以计算我们的位置和速度,我们需要一种仪器将这些测量值转换为全局坐标系,这种巧妙的转换便利用了一种名为陀螺仪的传感器(该传感器外部三个轴时刻发生变化时,内部的旋转轴始终保持在固定的世界坐标系中。我们便可以通过测量旋转轴和三个外部平衡环的相对位置来计算坐标值,利用这两种设备(加速度计和陀螺仪)构成惯性测量单元(IMU)的主要组件,这种组件由于更新频率极高,可达到1000赫兹,所以很适合利用到无人车上来。

但是这种测量单元也有一个大缺点,它的运动误差会随着时间的增加而增加,所以我们只能在很短的时间范围内进行定位。转过来想一想,如果把GPS的运动误差小的优点来弥补IMU,用IMU的更新频率高来弥补GPS,两者相辅相成,是不是就达到了双赢的战果,何乐而不为呢?但是这种结合也不是完美的解决了我们的定位问题,假如我们行驶在大山深处或者地下隧道,那么就可能长时间没有GPS更新,这瑞让整个定位面临难题。

七、激光雷达定位

利用激光雷达,我们可以通过点云匹配来对汽车进行定位,该方法来自于激光雷达传感器的检测数据与预先存在的高精度地图连续匹配,通过这种对比,我们就可以获知汽车在高精度地图上的全球位置和行驶方向。

初始无人驾驶—定位_第6张图片

上图为点云匹配过程,左侧点云需要找到另一次扫描中最接近的匹配点,我们会将收集到的众多点共同匹配,把每对点的距离误差相加,然后计算平均误差。当然点云是可以旋转的,所以我们会不断调整点云的立体位置,来降低这个误差,从而计算出车辆在地图上的精确位置。这便是迭代最近法(ICP法)。
另一种算法时LiDAR定位方法,中文名为滤波算法。它可以消除冗余信息,在地图上找到最有可能的车辆位置。

Apollo便使用了其中的直方图的滤波方法,该方法也被称为误差平方和算法(或SSD),利用下列公式:

初始无人驾驶—定位_第7张图片

通过将扫描的点与高精度地图上的对应点之间计算误差或者距离,然后对误差求平方和,当该值越小时,则说明该点匹配性越高,越可能是相应的位置。

卡尔曼滤波是另一种LiDAR定位方法,它用于根据我们在过去的状态和新的传感器测量结果预测我们当前哦位置,它使用了预测周期。
首先,我们根据之前的状态以及对移动距离和方向的估计,来估计或“预测”我们的新位置。接着通过传感器测量的数据对我们的数据不断进行纠正,这时,我们可以使用概论规则,将现有的位置预测结合起来。这就使我们的测量结果具有稳健性,虽然很难保持高精度地图的高高效率,这很难实现也几乎不可能实现,因为高精度地图所涵盖的行人和车辆无时无刻不在改变。

八、视觉定位

谈到图像收集,我们日常中就会发生很多这种收集事件,所以它是一种收集起来很简单的数据类型,而且摄像头的种类极多,价格亲民,所以视觉采集数据的方式一直在使用。但视觉定位确实很困难,于是我们便利用相辅相成的概念,用视觉信息和其他传感器的数据结合使用,便能准确定位。

数据相结合比单独使用摄像头图像进行定位效果更好:

初始无人驾驶—定位_第8张图片

——假设一辆车正在路上行驶,它感知到右边有一棵树,但是地图显示右侧有很多树,所以机器人怎么知道它看到的树是地图上的哪一棵?我们就可以使用概论的方法,在地图上找寻右侧有树的点,再匹配与它最近的点,当作它所处的位置,并且还可以再开车的同时继续观察周边世界,从而排除其它位置,选择最有可能的位置,该过程称为粒子滤波。如果数木稀少,便可以和其它物体继续比较,例如车道线等。

于是:

优点 缺点
数据容易收集 很难利用三维地图

九、Apollo定位

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

在Apollo中,惯性导航解决方案用于卡尔曼滤波的预测步骤,GNSS和LiDAR定位用于卡尔曼滤波的测量结果更新步骤。

十、实例讲解

我们可以通过c++或者python构建定位解决方案,来挑战“被绑架的车辆”实战项目,以便学会以c++为基础构建粒子滤波器并对汽车进行定位。想了解这个项目,可以进入Apollo官网进行学习和锻炼,将更大程度的提高你的思维方式。

——下一课,我将对感知这一环节进行总结,欢迎大家继续学习。

你可能感兴趣的:(学习总结)