【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

自动驾驶复杂环境下高精度定位技术

  • 2019-07-06
  • 本文字数:2621 字

    阅读完需:约 9 分钟

自动驾驶复杂环境下高精度定位技术

今天为大家分享下,自动驾驶在复杂环境下的高精度定位技术。



定位/导航负责实时提供载体的运动信息,包括载体的:位置、速度、姿态、加速度、角速度等信息。


自动驾驶对定位系统的基本要求


  1. 高精度:达到厘米级。

  2. 高可用性:保持它的稳定性,自动驾驶测试已经从封闭的场景转移到更开放的场景,这要求我们定位系统能处理更多更复杂的情况。

  3. 高可靠性:整个定位的输出是感知,规划与控制的输入,如果定位系统出现偏差将会导致很严重的后果。

  4. 自主完好性检测:因为我们系统的可靠性只能做到非常接近 100%,但是难以达到真正的 100%,这要求我们在没有办法提供准确的输出的时候,能及时的警告用户,采取措施,避免发生事故。对它的要求就是要保证较低的虚警率与漏警率。



为了满足自动驾驶对导航与定位的要求,采用的方法有:


  • 惯性导航 INS

  • 全球导航卫星系统 GNSS

  • 高精地图与线上激光 lidar 点云匹配定位

  • 里程计

  • 结合车辆运动特性的运动约束



接下来介绍下惯性测量单元 IMU ,目前自动驾驶常用的按照精度分为两类:


一种是基于光纤陀螺 FOG 的 IMU ,它的特点是精度高,但同时成本也高,一般应用于精度要求较高的地图采集车辆。


第二种是基于 MEMS 器件的 IMU ,它的特点是体积小,成本低,环境适应性强,缺点是误差大,如果把它应用在自动驾驶测试车辆中,需经过比较复杂的处理。



为了有 IMU 输出的原始数据得到导航定位输出,需要进行捷联惯性导航 ( SINS ) 解算,包括这样的几个模块:


  1. 陀螺输出角速度信息积分得到姿态

  2. 采用姿态信息对加速度计输出的比力做转换,由载体坐标系到导航坐标系

  3. 重力计算,有害加速度,地球自转角速度等补偿

  4. 加速度信息积分得到速度与位置


由于积分过程的存在,造成输出误差随着工作时间发生积累。



下面介绍下全球卫星定位导航,它是基于测定的绝对定位方案,误差不会随着工作时间以及载体运动发生变化。


目前全球卫星导航的一个显著的特点是由单频单系统向多频多系统转变,比如我们国家的北斗导航系统,俄罗斯的 Glonass ,欧盟的 Galileo 等。这幅图是北京某一天所能接收到的卫星信号的星空图,可见基本可以保证在任意时间我们都能收到 35 颗以上的卫星。多频多系统在极大的程度上提高了我们导航系统的可靠性与可用性。



另外一个显著的特点是精密定位,在民用领域的广泛应用,尤其是基于载波相位动态差分的 RTK 技术在智能驾考,无人机,精密农业等领域得的了普遍的应用。在自动驾驶领域他的优点是:


  • 厘米级定位精度

  • 双天线测向


精密定位在提高定位精度的同时,由于需要基站信息,这也增加了整个系统对于基站(基站服务提供商)和网络信号的依赖。



因为 GNSS 是基于卫星定位的导航,具有非常脆弱的特点:


我们在城市里经常会遇到城市峡谷,使我们没办法接收低仰角的卫星信号,极大的增加了我们定位的因子,增大了定位结果的不确定性。另外一个是信号干扰,车辆本身及加装设备等使车辆的电磁环境非常恶劣,如果处理不得当,会严重影响接收机的收星及观测值的质量。



接下来是基于高清度地图匹配定位,它是事先建立的高精度地图,配合我们线上的激光点云,可以做到绝对定位,厘米级高精度,它的一个显著的局限性是增加了我们对高精地图的依赖。



另外一个是轮式传感器 Wheel Sensor ,自动驾驶目前获得车轮的信息有两种方法:外接和内置。


外接,它的特点是分辨率和精度都非常高,缺点是结构复杂,可靠性难以保证,通常用于我们的地图采集车。


内置传感,它的特点是无需外接设备,缺点是精度低,误差比较大,如果用于测试车辆需要经过很多的处理才可以。


另外,IMU 的敏感轴,很难保证与车的运动方向是完全平行的,所以需要做一个精确的标定,除了轮速的输出,要得到有用的车速信息和里程信息,需要做一些推算,需要一些车轮的参数,而车轮的参数会随着我们的工况发生变化,所以我们需要对它做在线的估计。在这个过程中,我们的计算误差会随着运动的距离发生积累,且会受到路况的影响,比如轮胎打滑或者过减速带。



我们还可以结合车辆的运动特点做些约束。比如我们可以通过一些方法检测车辆是否处于静止,这样就可以假设在静止的时候速度等于 0,可以保证我们在极端的情况下,我们的定位结果不发生很大的误差。我们可以加入一些车辆横向或者纵向的约束条件加入到多传感器融合的系统中。



在获得传感器输出数据之后,我们整个多传感器融合定位,包括几个部分:


  1. 数据预处理,将惯性导航解算,GNSS 的质量控制,雷达数据的误差补偿,还有基于轮式传感器的计算,以及在线估计和补偿。

  2. 基于雷达数据和高精地图的匹配定位。

  3. 四个核心模块:

  4. ZUPT/ZIHR/NHC,车辆运动约束部分

  5. INS Alignment,惯性导航初始对准部分

  6. Integrated,组合部分

  7. FDI,故障检测与隔离部分

  8. 安全相关的模块,就是对于输出的完好性监测。



目前我们的导航定位优化方法,还是基于传统得卡尔曼滤波器,其优化的一个指标是使状态方差达到最小。在建立 Kalman Filter 模型的时候,首先要选择状态变量,目前我们还是基于导航参数误差+车载的传感器误差,作为状态估计。然后状态方程通过一步预测和量测更新,实现我们在时间域的递推。



下面简单介绍下故障诊断与隔离,传统的软件方法有很多,比如卡方检测等,另外是硬件上的冗余。如果我们可以配备多套 GNSS/IMU ,我们可以配合软件解析余度实现多个冗余,来提高可靠性。


典型场景



首先是一个非常典型的场景,视野非常开阔,这时我们可以利用,Gnss/Rtk ,Scan Math Pose 作为量测量校准 IMU/ Wheel sensor 误差,并作出补偿。



这个场景是我们的车辆运行在一个激光雷达纵向特征非常不明显的桥上,导致我们的高精定位在纵向上失效情况。解决办法是使用 GNSS, IMU,Wheel Sensor 信息,检测 scan match 纵向失效情况, 使其不影响定位系统输出。



上面这个场景是我们的激光雷达由于点云被遮挡,导致我们与高精地图匹配定位失败,这要求我们整个系统能不依赖于匹配定位,也能输出非常可靠的结果。



这俩个场景是对于卫星导航来说非常恶劣的场景,需要我们从传感器融合部分去处理,使其具有野值的剔除能力,以及对它参数的自适应调节能力。



这个场景更极端,是车辆穿越高架桥的下面,导致我们整个卫星定位导航失败,此时需要我们的系统能独立于卫星导航,也能可靠的工作,得到可靠的结果。


作者介绍


崔留争,Pony.ai 资深研发工程师。中国科学院大学工学博士,负责 Pony.ai 多源信息融合定位技术研发。曾就职于 DJI ,负责高精度定位技术,Gnss/Ins 组合导航等相关的研发工作。


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s/BH6scp_WnA3VLh1oNmJJWA


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-07-06 08:004947

评论

发布
暂无评论
发现更多内容

计算机操作系统基础(五)---Linux的进程管理

书旅

php 线程 多线程 操作系统 进程

SpringBatch系列之Remote-Chunking

稻草鸟人

大数据 Spring Boot SpringBatch 批量任务

ARTS 打卡 Week 05

teoking

MySQL系列 - SQL查询与修改执行过程

俊俊哥

MySQL 性能优化 关系型数据库 存储

来了!8M/S+速度,Pdown复活!

程序员生活志

嗨,兄弟,别担心,这年头谁还没有一点焦虑!

周果

程序员 管理 成长 个人感想

一二线城市知名 IT 互联网公司名单(新版)

程序员生活志

互联网 IT 大厂

实现简单的"纤程"

Near

深入理解Kubernetes的Service:回归本源的场景需求

韩超

Kubernetes 微服务 服务

架构师训练营第 4 周——学习总结

在野

极客大学架构师训练营

MySQL 实战 45 讲笔记(2)-查询优化

程序员老王

MySQL

奈学:数据湖和数据仓库的区别有哪些?

古月木易

数据仓库 数据湖

我写了一本操作系统词典送给你

cxuan

操作系统 计算机

动态规划算法重点在于找上一个的公式,Google Code Review,John 易筋 ARTS 打卡 Week 06

John(易筋)

ARTS 打卡计划

如何学 Java,我说点不太一样的学习方式

四猿外

学习 程序员 个人成长

架构师训练营第四周课后作业

竹森先生

极客时间 极客大学架构师训练营

如何成为一名合格的 C/C++ 开发者?

张小方

c++ Linux 编程语言 后端 架构设计

架构演化

满山李子

了不起的 TypeScript 入门教程 [1.2 w字]

阿宝哥

Java typescript 大前端 Web

创新管理体系标准ISO56002介绍

涛哥 数字产品和业务架构

数字化转型 创新

聊一聊程序员如何增加收入

张小方

程序员 互联网 面试 副业赚钱 薪资

大型互联网架构与集群技术

cxy

奈学:数据湖和数据仓库的区别有哪些?

奈学教育

数据仓库 数据湖

架构师训练营第 4 周作业

在野

极客大学架构师训练营

第四章总结

大型互联网应用系统使用技术方案和手段

如何进行高效学习

淡蓝色

深度思考 方法论 感悟 随笔杂谈

架构师训练营第四周学习总结

张明森

从0开始设计Flutter独立APP | 第二篇: 完整的国际化语言支持

渔子长

flutter 大前端

极客大学架构师训练营第四周学习总结

竹森先生

极客大学 极客大学架构师训练营

谈谈架构和微服务<一>

Gabriel

架构 微服务 领域驱动设计 软件设计

自动驾驶复杂环境下高精度定位技术_AI&大模型_DataFunTalk_InfoQ精选文章