0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Sebastian带你学习定位

YB7m_Apollo_Dev 来源:未知 作者:李倩 2018-08-19 10:46 次阅读

上周我们发布了Apollo入门课堂第②讲—高精地图,收到了很多开发者的认同和赞赏,也看到越来越多的开发者对学习自动驾驶技术有了浓厚的兴趣。希望有更多开发者能够通过本门课程,学到更多的自动驾驶知识。

本周我们将介绍定位模块的知识,了解车辆如何以个位数厘米级别的精度进行自定位。

定位是让无人车知道自身确切位置的方法,这是一个美妙但是十分艰难的任务,同时也对无人驾驶车十分重要。定位不仅仅是找出自身的大概方位,而是要以10cm级别,将车感信息与高精地图信息进行比较来精确的位置寻找。

第三课,定位

Sebastian带你学习定位

1

定位的概述

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

大多数时候,我们使用GPS来进行定位,但是GPS对于无人车来说还不够精确。因此我们必须找到另一种方法来更准确地确定车辆在地图上的位置。最常用的方法是将汽车传感器所看到的内容与地图上所显示的内容进行比较。车辆传感器可以测量车辆与静态障碍物之间的距离。我们在车自身的坐标系中测量这些距离以及这些静态障碍物的方向。在车的坐标系中,汽车的前进方向始终向前,坐标系正方向始终与车头保持一致,但不一定与地图坐标系保持一致。当车辆传感器测量到地图上的物体,会将传感器的地标观测值,与地标在地图上的位置匹配,转换到地图自带坐标系,反之亦然,从而达到地图与车感数据的对比。

定位提供了许多可选择的方法,但每种都有自己的优劣。接下来将介绍主流的定位方法。

高精地图最重要特征之一是精度,手机上的导航地图只能达到米级精度,而高精地图可以使车辆能够达到厘米级的精度,这对确保无人车的安全性至关重要。

2

定位方法介绍

GNSS RTK

如果在野外迷路,假如你看到自己离一棵树 75 米远,你只知道自己位于一个以树为中心半径为75米的圆上。但是如果看到一个离自己 64 米远的房子,你就会知道自己位于两个圆的交点处,但仍不知道自己位于哪个交点上。假设你看到了第三个路标,如路灯。经过测量你发现自己离路灯55 米远,自己就知道了相对于这些地标的确切位置。

首先。假设现在有一个世界地图标注了这三个地标在世界上的确切位置,那么就可以知道自身的确切位置了,这就被称为三角测量。

GPS就是这样的工作原理,只是参照物并不是地标而是卫星。三颗卫星再加上一颗用来定位高度的卫星,4颗卫星就可以知道自身的确切位置了。GPS这类系统的通用名称为全球导航卫星系统或GNSS,GPS 是其中使用最广泛的GNSS 系统。

GPS分为三部分。第一部分是卫星,在任何特定时间大约有 30 颗 GPS 卫星在外层空间运行,它们各自距离地球表面约 2 万公里。第二部分由世界各地的控制站组成,控制站用于监视和控制卫星,其主要目的是让系统保持运行并验证 GPS 广播信号的精确度。第三部分是 GPS 接收器,GPS 接收器存在于手机、电脑、汽车、船只以及许多其他设备中。

GPS接收器实际上并不直接探测你与卫星之间的距离,它首先测量信号的飞行时间即TOF原理。通过将光速乘以这个飞行时间,来计算离卫星的距离。由于光速的值很大,即使是少量的时间误差也会在距离计算中造成巨大的误差。

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

但是仍存在高楼和其他障碍物可能阻挡 GPS 信号的问题,这使定位变得困难或根本无法定位。GPS 的更新频率很低,大约为 10 赫兹。由于无人驾驶车在快速移动,可能需要更频繁地更新位置。

惯性导航

假设一辆汽车正以恒定速度直线行驶,如果提供了汽车的初始位置、速度、行驶时长,那么汽车的位置即从初始位置开始,然后速度乘以时间。

假如给予一辆汽车的初始速度,并给予加速度和驾驶时间,就可以使用加速度、初始速度、初始位置来计算汽车在任何时间点的车速和位置。

加速度需要三轴加速度计的传感器来测量,有三种不同类型的三轴加速度计,它们采用不同的方法,但共同的目标是精确测量加速度。加速度计根据车辆的坐标系记录测量结果,还需要陀螺仪传感器将这些测量值转换为全局坐标系测量值。

三轴陀螺仪的三个外部平衡环一直在旋转,但三轴陀螺仪中的旋转轴始终固定在世界坐标系中。在坐标系中的位置是通过测量旋转轴和三个外部平衡环的相对位置来计算的。

加速度计和陀螺仪是惯性测量单元(IMU)的主要组件,IMU 可以以高频率更新,可达 1000 赫兹,所以 IMU 可以提供接近实时的位置信息。但缺点在于其运动误差随时间增加而增加,我们只能依靠惯性测量单元在很短的时间范围内进行定位。但是我们可以结合 GPS 和 IMU 来定位汽车,一方面 IMU 弥补了 GPS 更新频率较低的缺陷。另一方面 GPS 纠正了 IMU 的运动误差。但是即使将 GPS 和 IMU 系统相结合也不能完全解决定位问题,比如我们在山间行驶或城市峡谷中或在地下隧道中行驶,那么可能长时间没有 GPS 更新。

激光雷达定位

利用激光雷达,可以通过点云匹配来对汽车进行定位。该方法将来自激光雷达传感器的检测数据与预先存在的高精地图之间匹配,通过这种比较可获知汽车在高精度地图上的全球位置和行驶方向。匹配点云有多种方法,比如迭代最近点(ICP)就是一种方法。对于第一次扫描中的每个点,需要找到另一次扫描中最接近的匹配点。最终会收到许多匹配点对, 把每个点的距离误差相加,然后计算平均距离误差。假设我们对两次点云扫描进行匹配。我们的目标是通过点云旋转和平移来最大限度地降低这一平均距离误差,就可以在传感器扫描和地图之间找到匹配,将通过传感器扫描到的车辆位置转换为全球地图上的位置并计算出在地图上的精确位置。

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

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

视觉定位

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

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

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

视觉定位的优点在于图像数据很容易获得,缺点在于缺乏三维信息和对三维地图的依赖。

高精地图不仅可以减少计算需求,还可以通过提供有关驾驶环境的详细信息,来确保无人车的安全。保持这些地图的更新是一项重大任务,测试车队需要不断地对高精度地图进行验证和更新。此外,这些地图可能达到几厘米的精度,这是水准最高的制图精度。

Apollo定位

Apollo使用基于GPS、IMU、激光雷达的多传感器融合定位系统,这种方法利用了不同传感器的互补优势,也提高了稳定性和准确性。

Apollo定位模块依赖于IMU、GPS、激光雷达、雷达、高精地图,这些传感器同时支持 GNSS 定位和LiDAR 定位,GNSS 定位输出位置和速度信息,LiDAR 定位输出位置和行进方向信息。融合框架通过卡尔曼滤波将这些输出结合在一起。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gps
    gps
    +关注

    关注

    22

    文章

    2882

    浏览量

    166018
  • 无人驾驶
    +关注

    关注

    98

    文章

    4028

    浏览量

    120258
  • 自动驾驶
    +关注

    关注

    783

    文章

    13674

    浏览量

    166096

原文标题:Apollo自动驾驶入门课程第③讲 — 定位

文章出处:【微信号:Apollo_Developers,微信公众号:Apollo开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AVP300阀门定位器原理详解及设计

    本文将带你全面的了解AVP300阀门定位器,必备技能!
    的头像 发表于 12-22 07:19 1.3w次阅读
    AVP300阀门<b class='flag-5'>定位</b>器原理详解及设计

    一个“贪吃蛇”带你进入proteus的世界

    通过一个贪吃蛇程序的仿真,带你领略proteus的魅力,也让你掌握基本的proteus操作起初学习proteus,从网上找了很多资料,但感觉写的都不好,从实践中掌握是最好的方法,通过网上一些资料,然后我的一些改良,有了这个小教程,分享给初学者们
    发表于 11-10 20:34

    【连载】阿东带你学习Verilog和Qsys设计

    本帖最后由 100dongdong 于 2014-7-24 23:42 编辑 【目的】 阿东推出《【连载】阿东带你学习Verilog和Qsys设计》 连载,为了帮助初学者深入掌握FPGA
    发表于 12-28 20:42

    如何快速学习stm32--深圳嵌入式学习

    摇杆和LCD屏实现秒表功能.学习定时器的使用. 7.利用PWM控制LED的亮度变化.学习定时器的PWM功能. 8.上位机通过UART1控制LCD屏显示数字.学习UART的数据接收功能. 9.上位机通过
    发表于 06-15 15:44

    至芯科技昭哥带你学FPGA之FPGA_100天之旅_AD设计

    至芯科技昭哥带你学FPGA之FPGA_100天之旅_AD设计本文属于本人原创,和大家一起学习FPGA,交流FPGA,希望大家多多支持。来源:至芯科技昭哥带你学FPGA之FPGA_100天之旅
    发表于 10-25 18:26

    带你一起分析半桥LLC原理图

    【众筹活动】每天学习1小时 张飞带你两个月精通半桥LLC开关电源!(最后7天)
    发表于 01-15 14:25

    机器视觉如何去学习?龙哥全程带你学LabVIEW视觉设计

    仅需学习1小时,1~2个月就可以熟练掌握视觉设计、图像采集、运动控制以及自动化产品检测等实用技能。课程亮点:名师开课:10+年LabVIEW视觉讲师龙哥亲自授课+答疑全程解析:带你彻底弄明白视觉算子
    发表于 03-25 16:18

    学习定时/计数器的工作方式

      本系列共6篇文章,本文作为本系列的第三篇文章,介绍实验三:定时/计数器实验,本系列文章基于Dais-52PRO实验箱。一、实验目的:   学习定时/计数器的工作方式,掌握程序设计方法。二、实验
    发表于 07-19 07:24

    手把手带你学习STM32L系列单片机(HAL库)

    参考视频是小熊派的开发板: 【STM32单片机学习】白嫖单片机教程——手把手带你学习STM32L系列单片机(HAL库)首先要知道公式:定时器时间=1/(时钟频率/预分频/计数周期)然后了解定时器
    发表于 08-09 06:22

    学习算法选择机制及关联对性能的影响

    提出一种元学习定义,从偏差/方差分解角度对元学习学习算法的选取机制进行研究,得出了元级选用错误率低且偏差小的学习算法、基级学习算法按照错误
    发表于 05-11 20:25 11次下载

    你想要的机器学习课程笔记在这:主要讨论监督学习和无监督学习

    机器学习定义:A computer program is said to learn from experience E with respect to some class of tasks T
    发表于 12-03 17:12 537次阅读

    AWS推全新机器学习定制训练芯片Trainium

    在 2020 年度的 re:Invent 大会上,亚马逊云服务(AWS)推出了全新的机器学习定制训练芯片 Trainium 。通过对 TensorFlow、PyTorch 和 MXNet 提供支持
    的头像 发表于 12-02 11:18 1777次阅读

    allegro学习教程之如何添加机械定位

    Cadence/allegro16.6学习之如何添加机械定位
    发表于 05-10 09:42 20次下载

    带你一起学习Arduino——介绍入门

    带你一起学习Arduino——介绍入门首先跟各位同学介绍一下什么是arduino?和其他单片机的区别?为什么学习它?Arduino是什么?她是一个适合低年龄段学习逻辑思维,动手能力,电
    发表于 01-17 11:31 11次下载
    <b class='flag-5'>带你</b>一起<b class='flag-5'>学习</b>Arduino——介绍入门

    STM32第七章-脉冲宽度调制

    先说在开头啊,我们学习定时器总感觉它是很难的,这里我就不说他的编程难度,而是对于它的理解难度。学习定时器你就必须了解他的来龙去...
    发表于 02-07 11:59 0次下载
    STM32第七章-脉冲宽度调制