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

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

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

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. 四个核心模块:

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

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

  • Integrated,组合部分

  • FDI,故障检测与隔离部分

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

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

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

典型场景:

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

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

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

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

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

zz自动驾驶复杂环境下高精度定位技术的更多相关文章

  1. .Net环境下的缓存技术介绍 (转)

    .Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 ...

  2. .Net环境下的缓存技术介绍

    .Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 1.1 ...

  3. zz自动驾驶中轨迹规划的探索和挑战

    大家好,今天我们主要介绍一下轨迹规划的探索和挑战,我主要从四个方面介绍: 轨迹规划的概念 决策 横向规划 纵向规划 轨迹规划的概念: 轨迹规划的核心就是要解决车辆该怎么走的问题.比如我们知道了附近有行 ...

  4. zz自动驾驶多传感器感知的探索1

    Pony.ai 在多传感器感知上积累了很多的经验,尤其是今年年初在卡车上开始了新的尝试.我们有不同的传感器配置,以及不同的场景,对多传感器融合的一些新的挑战,有了更深刻的认识,今天把这些经验,总结一下 ...

  5. zz自动驾驶多传感器感知的探索

    案例教学,把“问题”讲清楚了,赞 Pony.ai 在多传感器感知上积累了很多的经验,尤其是今年年初在卡车上开始了新的尝试.我们有不同的传感器配置,以及不同的场景,对多传感器融合的一些新的挑战,有了更深 ...

  6. C#.Net环境下的缓存技术

    转载:https://www.cnblogs.com/lvjy-net/p/8297679.html 一.缓存技术本节将介绍以下技术: 使用Asp.Net缓存: 使用Remoting Singleto ...

  7. .net环境下的缓存技术-转载!

    摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 1.1   缓存能解决的问题 · 性 ...

  8. zz“老司机”成长之路:自动驾驶车辆调试实践

    随着自动驾驶技术的发展,一辆新车从被改装到上路需要经过的调试流程也有了许多提升.今天,我希望结合自己之前的调车经验来跟大家分享一下我们是如何将系统的各个模块逐步上车.调试.集成,进而将一辆“新手”车培 ...

  9. 自动驾驶传感器比较:激光雷达(LiDAR) vs. 雷达(RADAR)

    自动驾驶传感器比较:激光雷达(LiDAR) vs. 雷达(RADAR) 据麦姆斯咨询报道,2032年全球范围内自动驾驶汽车的产量将高达2310万辆,未来该市场的复合年增长率(CAGR)高达58%.届时 ...

随机推荐

  1. 给那些迷茫的人学习JAVA的一些建议?

    前语:我用了3年的时间,一步一步走到了现在,半途也有了解过其他的技能,也想过要转其他的言语,可是最终仍是坚持下来走Java这条路,希望我的经历能够帮忙到后来的人,要是觉得对你有帮忙的话,能够注重一下和 ...

  2. 大话设计模式Python实现-职责链模式

    职责链模式(Chain Of Responsibility):使多个对象都有机会处理请求,从而避免发送者和接收者的耦合关系.将对象连成链并沿着这条链传递请求直到被处理 下面是一个设计模式的demo: ...

  3. 【Linux命令】安装命令(yum,rpm)

    安装软件有三种方式,第一种是源码安装(源码安装需要手动安装软件,安装的目录,还需要进行编译之后才能安装),步骤比较繁琐.第二种是RPM安装,rpm安装有点像windows系统的面板,会建立统一的数据库 ...

  4. 用Scriban进行模版解析

    前言 有些时候,我们需要根据模版去展示一些内容,通常会借助模版引擎来处理. 举个简单的例子,发短信. 短信肯定是有模版的,不同的场景对应不同的模版. 注册的, [xxx]恭喜您成功注册yyy平台,您的 ...

  5. Redis for OPS 07:Redis 补充说明

    写在前面的话 redis 的各种架构搭建暂时就到这里,本文主要用于补充说明 Redis 的一些概念以及配置文件的相关信息. 常用词汇 缓存穿透: 类似热点数据存储 Redis 一样,对于非热点数据存储 ...

  6. Redis for OPS 01:关于 Redis 基础说明与安装部署

    写在前面的话 本章节开始在主要介绍在运维工作中绕不开的一个话题,数据缓存 NoSQL 服务 Redis,搭建很简单,使用很简单,运行也稳定的一批,一般小公司几乎很少出现以为量的问题导致他 down 掉 ...

  7. WPF属性绑定实现双向变化

    WPF依赖项属性可以实现属性的绑定,成功绑定之后只要修改后台绑定的属性,即可UI同步自动更新绑定的值,无需手动刷新界面:同样,前台的值变化后,通过获取绑定的属性值也可获取UI变化后的值,实现双向变化的 ...

  8. ASP.NET中WebService的创建和部署以及通过反射动态调用WebService

    一.在ASP.NET中创建WebService 首先我们先创建一个ASP.NET Web 应用程序,此处我们以VS2017为例 点击新创建的项目,右键添加新建项,选择Web服务,输入名称后点击添加 这 ...

  9. python数据挖掘之数据探索第一篇

    目录 数据质量分析   当我们得到数据后,接下来就是要考虑样本数据集的数据和质量是否满足建模的要求?是否出现不想要的数据?能不能直接看出一些规律或趋势?每个因素之间的关系是什么?   通过检验数据集的 ...

  10. Linux下载——下载文件的命令

    Linux下载——获取网络文件的命令 摘抄:本文主要学习了在Linux系统中如何下载文件的命令. wget命令 wget命令是一个用来下载文件的命令,可以在后台运行,在用户退出之后仍能继续下载,支持代 ...