高精度组合导航里的松耦合、紧耦合、深耦合

2023-05-16

高精度定位,是自动驾驶车辆一切丰满理想实现的前提。它用于判断自动驾驶功能是否处于可激活的设计运行条件内;它用于支撑自动驾驶车辆的全局路径规划;它用于辅助自动驾驶车辆的变道、避障策略。

不同的场景特点、不同的驾驶自动化级别、不同的精度要求、不同的传感器配置也催生了异常丰富的高精度定位方法,包括但不限于:

  • 通过GNSS获取定位卫星信号,辅以地面参考基准值站差分信号,实现高精度定位;

  • 通过INS测量载体自身的三轴加速度和三轴角速度,进行航迹推算,实现高精度定位;

  • 激光雷达实时扫描的点云与预存的高精度地图进行点云配准,实现高精度定位;

  • 比较相机拍摄到的同一物体在前后多帧图像的差异,运用视觉里程计方法,实现高精度的定位。

在多传感器融合的大方针指引下,融合定位也成为高精度定位的主流方案,以便提供更加精确、可靠、稳定的高精度定位方案。而对于自动驾驶车辆全局定位来说,功能最为强大的非融合GNSS、RTK、INS于一身的高精度组合导航莫属,空旷地带、短暂遮挡场景都是它施展才华的舞台。

1. GNSS、RTK和INS介绍

1.1. GNSS

全球卫星导航系统(Global Navigation Satellite System,GNSS),是一种能在地球表面或近地空间的任何地点,为用户提供全天候的三维坐标、速度以及时间信息的空基无线电导航定位系统。中国的北斗、美国的GPS、俄罗斯的GLONASS和欧洲的Galileo均属于GNSS。

GNSS主要由空间卫星、地面监控系统、用户接收机三部分组成。空间卫星按照一定的频率昼夜不停的通过高频载波信号广播自己的位置和发送时间戳。用户接收机收到卫星高频载波信号后,通过光速乘以载波传播的时间,便可以计算出与卫星的距离,用公式表达如下。

式中,(x1, y1, z1)为卫星坐标,已知量;(x, y, z)为接收机位置,未知量;c为光速,已知量;△t为卫星载波到达接收机所经历的时间,已知量。卫星和接收机使用各自的时钟计时,卫星上使用精度极高的原子钟,可以认为是无误差的时钟源。而接收机上一般为普通的石英钟,存在较大的且不可忽略的时钟误差 tl,因此在计算时需要其影响,未知量。

从以上公式可知,存在四个未知量,需要四个方程式才可以求解。因此还需要接收到另外卫星载波信号,才可计算出接收机的位置。这也是为什么,GNSS需要在可以接收到四颗及以上数量卫星信号的地方才能正常工作。

但由于内部和外部误差的存在,包括卫星高频载波穿透电离层和对流层产生的误差、卫星高速移动产生的多普勒效应引起的误差、轨道误差,卫星钟差、星历误差等,单纯GNSS的定位精度只能达到米级,无法满足自动驾驶对厘米级的定位需求。

而为了更好的消除误差,提高定位精度,GNSS通常会引入一些天基或地基的辅助手段。而现在比较常用的,是通过地基的无线通信网络,传送增强修正数据,提供辅助信息,加强和加快卫星导航信号的搜索跟踪性能和速度,缩短定位时间,提高定位精度。

1.2. RTK

实时动态差分(Real-Time Kinematic,RTK)技术便是地基增强系统的关键技术,一种具有实时处理两个测量站载波相位观测量的差分方法。RTK系统组成和通信链路示意图如下所示。

RTK系统组成及通信链路示意图

通过在地面建设参考基准站,并进行测绘,我们能够获知这个参考基准站的准确位置数据,并将这个位置数据写入参考基准站控制器内部。参考基准站内部接收机同时接收卫星载波信号来获取观测数据(伪距观测值,相位观测值),并将测绘数据和观测数据打包作为作为差分数据,通过无线通信网络广播给覆盖范围内的接收机。

接收机收到参考基准站差分数据后,结合自身观测数据,调用RTK结算算法,修正观测数据误差,从而获得厘米级的定位。对于一个参考基准站来讲,与其半径几十公里覆盖范围内的接收机产生的误差认为是相同的,因此RTK的网络建设也是一个超级基建工程。

但融合了RTK技术的GNSS还是存在如下缺点:

  • 在完全遮蔽或严重遮蔽的场景(比如隧道、高层密集建筑、浓密树荫等),由于无法接收到卫星信号或可接收卫星信号数量较少,无法输出准确的定位数据;
  • 在无线通信网络无法覆盖或通信链路断连时,无法获得参考基准站的差分数据,导致无法输出准确的定位数据;
  • 在不增加额外硬件条件下,无法输出载体的姿态(航向、俯仰、横滚角)数据;
  • 在多金属的工作场景,由于严重的多径影响,会导致定位数据的假固定;
  • 定位数据输出频率较低(通常为10Hz左右),短期精度较低。

从以上缺点可以看出,GNSS+RTK在大部分场景下表现优秀,是全局定位当之无愧的主心骨。但在部分恶劣场景下存在短期的定位不准情况,因此自然而然的想增加一位成员,来弥补这方面的不足,INS便是在这样的背景下被引入。

1.3. INS

惯性导航系统(Inertial Navigation System,INS)是一种彻底自主的导航系统,它不需要从外部接收信号,只靠内部的硬件,并在在牛顿三大定律的“魔法”下,输出定位和姿态数据。

惯导测量单元(Inertial Measurement Unit,IMU)是INS系统里的主流硬件,主流产品中一般集成了一个三轴加速度计和陀螺仪,俗称六轴IMU。加速度计可以测量物体在其坐标系下的三轴加速度,陀螺仪可以测量物体在其坐标系下的三轴角速度,通过对加速度和角速度数据进行积分运算,可以解算出载体一个相对的定位和姿态数据。

与GNSS一样,IMU也是起源于军工。长期以来,受限于高昂的成本,一直仅为国防和航天所用。俄罗斯的导弹如何能准确击中乌克兰的军事目标而不误伤民用建筑,其中便有IMU的巨大苦劳。

随着价格更加亲民的微机电系统(Micro-Electro-Mechanical System,MEMS)加速度计和陀螺仪出现,普通民众才开始享受IMU的红利。手机屏幕的自动旋转功能、智能手环的计步功能、虚拟现实头盔、无人机,无不是IMU发光发热的地方。

IMU可以输出高频(200HZ左右)定位和姿态数据,具有优秀的短期定位精度,但是单独使用INS同样存在以下缺点:

  • 由于解算模块存在积分计算,因此存在累积误差,随着时间的延长,误差会越来越大。
  • 高频振动会降低INS中IMU硬件的可靠性和精度;
  • 高精度的IMU成本(光纤陀螺)依旧很高。

但是这些缺点又是上文GNSS+RTK可以完美解决的,于是农村俗语:“男女搭配,干活不累”也在此处很好的应验了。既然GNSS+RTK和INS各有所长,又都是定位界的狠角色,那就将两者组合在一起,共同实现全局高精度定位,这就是高精度组合导航名称的由来。

2. 高精度组合导航的组成

从硬件层面划分,高精度组合导航包括射频芯片、基带芯片、IMU模组、数据处理单元等硬件部分,详细组成如下图所示。

高精度组合导航硬件组成

从系统架构层面划分,高精度组合导航主要由GNSS模块、INS模块和数据处理模块三大得力干将组成。

GNSS模块又可细分为射频前端、信号捕获、信号跟踪、RTK解算四大模块。

  • 射频前端是最重要的硬件部分,主要用于频率搬移、信号放大、噪声抑制;

  • 信号捕获是指通过伪码对齐、载波对齐实现对信号的捕获;

  • 信号跟踪,通过动态调整策略,实现对捕获到的伪码和载波信号的稳定跟踪;

  • RTK解算结合伪距值和差分数据,输出RTK定位结果。

INS模块主要包括测量单元IMU和解算单元,IMU负责测量三轴加速度和三轴角速度数据,解算单元负责处理IMU输入数据及数据处理模块反馈的误差数据。

数据处理模块是组合导航的核心,是实现“天人合一”境界的关键。卡尔曼滤波是数据处理单元最常用的算法,通过建立运动方程和测量方程,不仅考虑当前所测得的数据,而且还充分利用过去测得的数据,以后者为基础推测当前应有的输出,而以前者为校正量修正,从而获得当前参量值的最佳估算。

3. 三种耦合方式介绍

可是在将两者组合的时候,问题又出现了。是选择在卫星信号跟踪阶段与INS惯性测量数据融合,还是在观测量生成阶段再与INS惯性测量数据融合,还是等到RTK解算完成进入滤波器后再与INS惯性测量数据进行融合。

不同的融合方式,将高精度组合导航分成了松耦合、紧耦合和深耦合三种形态。目前业界普遍认为从定位精度、定位稳定性、定位可靠性等方面,深耦合最好,紧耦合次之,松耦合次次之。下文我们逐一介绍三种耦合方式的系统原理。

3.1. 松耦合

单从名字来看,“松耦合”是最简单的一种组合方式。在松耦合结构中,GNSS模块和INS模块独立工作,GNSS模块低频输出RTK定位结果,INS模块高频输出惯性测量结果,两者都将数据送入数据处理模块中。

在没接收到RTK定位结果的时候,卡尔曼滤波器以INS模块测量结果为基础推测当前应有的定位数据。在接收到RTK定位结果的时候,卡尔曼滤波器通过比较RTK和INS模块计算结果的差值,建立误差模型,估计INS模块的累计误差,并将误差补偿反馈给INS模块,同时输出定位数据的最佳估计值。INS模块收到误差补偿后,修正累积误差,循环往复。松耦合系统原理下图所示。

松耦合系统原理

松耦合的优点是易于实现,性能比较稳定。缺点是当卫星数量少于一定数量时,GNSS模块的输出就会失效。在信号存在遮挡的场景中,松耦合的定位稳定性、可靠性都不如另外两种耦合方式。

3.2. 紧耦合

从名字来看,两者融合的程度加深。在紧耦合结构中,将GNSS模块输出的观测量(伪距、伪距率)与INS模块输出的惯性测量结果相减,并将差值输出给卡尔曼滤波器,用于估计INS模块测量累计误差。并将计算出来误差补偿反馈给INS模块,经过校正的INS模块惯性测量结果同步输入到数据处理模的卡尔曼滤波器中,结合RTK定位结果最终得到组合导航解。紧耦合系统原理如下图所示。

紧耦合系统原理

紧耦合在原始GNSS观测量端进行融合,因此当卫星数量少于一定数量时,RTK定位模块无法求得固定解,紧耦合的模式依然可以提供GNSS信号的更新。但紧耦合在结构上会比较复杂,复杂带来的好处就是在相同硬件配置下,紧耦合的鲁棒性会更上一层楼。

紧耦合的难点在于RTK算法需要高精度组合导航的厂家自研。若非RTK专业厂家很难把算法打磨到行业一流水平。毕竟卫星离我们3万公里,速度4千米/秒,通过载波相位双差,要使得行驶在各种场景下的载体保持实时厘米级精度且无论何时、何地都稳定运行还是有很大难度的。

3.3. 深耦合

深耦合在紧耦合的基础上,将INS模块的部分数据直接送到基带芯片里,将INS的惯性数据作为GNSS解算的一部分。通过INS准确的相对多普勒变化信息,辅助信号跟踪,提高恶劣环境下多普勒的估计准确度,从而提高载波相位、伪距等观测量的精度和连续性,减少观测量中断和跳变的问题,从而有效提高组合导航精度和可靠性。紧耦合系统原理如下图所示。

深耦合系统原理

从图中可以看到,深耦合直接在基带模拟端进行融。因此,除了具备紧耦合算法能力外,还需要具备GNSS基带芯片模拟端接收能力,因此只有自研基带芯片能力的公司才有做深耦合的能力。这也导致目前仅有少数公司掌握这深耦合的技术。

4. 三种耦合比较

在空旷、无遮挡环境,三种耦合方式都能稳定地接收到三四十颗卫星,实现厘米级的定位精度简直是小菜一碟,因此在这种环境下,三者没有多大差别。

在完全遮挡环境下(地库、隧道等),三种耦合方式也几乎没有差别,都是一颗卫星也搜不到,这个时候即使深耦合可以辅助信号跟踪,可射频前端没有输入信号,后端再强也无济于事。因此在这种完全遮挡环境下,只能靠INS的输出结果,累积误差大小完全取决于INS中IMU的精度及对接入车辆里程计数据的处理逻辑。

因此,三种耦合的区别主要体现在有部分遮挡的环境(比如高楼林立的城市、高大金属林立的港口等),卫星信号时有时无、时好时坏(搜星数量多时可达40多颗,少时不超过10颗)的情况下。此时极易出现频繁失锁、观测量跳变等引发定位异常的问题。而基于更前端融合的深耦合可以通过辅助信号跟踪来解决这个问题,紧耦合次之。某厂家某款产品实测发现,在部分遮挡环境下,深耦合定位精度是紧耦合定位精度的3倍,是松耦合定位精度的5倍。紧耦合绝对是定位Corner Case领域的“屠龙宝刀”。

然而,深耦合固然是好,但是系统复杂,成本高。而且也不是所有场景都需要深耦合。在高速行驶的工况下,卫星信号追踪存在实时性和精准性的问题,所以深耦合会很合适;在低速行驶的工况下,不存在卫星追踪的实时性和精准性问题,也就不需要INS的惯性测量数据进行辅助,松耦合反而会更加经济实惠。这一细节,也充分体现自动驾驶对场景理解能力的高要求。

归根结底,无论哪种耦合算法,对于高精度组成导航厂商来讲,是性能、品质、价格和售后的一个折中。对于最终消费者来讲,是实实在在的用户体验。一套高精度组合导航产品,上得了高速公路,下得了城市道路,那才是终极目标。三种耦合结构的主要性能对比如下表。

5. 三种耦合主要性能对比

6. 主流厂商现状

据佐思汽研统计,除了现有量产车型,2021年以来各主机厂又相继推出了10多款搭载高精度定位技术的车型。伴随着自动驾驶在各细分领域的落地加速,高精度组合导航厂商迎来了难得的发展契机。

目前做组合导航产品的厂商少说也有四五十家,但总结起来,这些厂商主要分为三类:

  • 非GNSS和IMU自研厂商,全外购做系统层面集成,以松耦合算法产品为主。
  • GNSS自研厂家,外购IMU,以紧耦合或深耦合算法产品为主。
  • IMU自研厂家,外购GNSS,以松耦合/紧耦合算法产品为主。世面上量产的高精度组合导航产品,九成都是松耦合算法产品,紧耦合算法产品可谓是凤毛麟角,深耦合算法产品真是可遇而不可求了。

吸取前车之鉴,作者就不指名道姓点评某家产品的优劣。只选择六家主流厂商的六款主流产品在高架桥底测试的一段结果,来让读者欣赏一下当前主流高精度组合导航产品的水平。六款产品里面包含一款深耦合算法产品,一款紧耦合算法产品,四款松耦合算法产品。高架桥底天线上方卫星信号大部分被遮挡,因此主要测试高精度组合导航产品的抗遮挡性能。

测试部分结果汇总如下表(2021年7月测试时,各家产品软硬件均为当时最新状态),表格中加粗数据为这一列中性能表现最好的。

7. 发展趋势

当前阶段,高精度组合导航多以一个单独控制器的形态存在,单纯的分享高精度定位数据给车上的其他兄弟模块使用。从架构优化的角度,部分主机厂也尝试将高精地图模块或4G/5G通讯模组或C-V2X模组集成到高精度组合导航中,以提供更加丰富的功能。

但在域架构/中央集中式架构的演进浪潮中,高精度组合导航势必将被集成到域控制器或中央计算单元中。而这一步实现的关键在于高精度组合导航是否具有芯片化的解决方案,这也将决定未来高精度组合厂商的何去何从。

上文我们介绍过,高精度组合导航硬件部分主要包括射频芯片、基带芯片、IMU模组和数据处理单元。想要实现芯片化,必须同时具备这四大模块的自主研发能力。

目前多数厂家的主流产品将一块卫导板卡(包括射频芯片、基带芯片和数据处理单元)和惯导模块(IMU和数据处理单元)集成在一块大的PCB板上,加上自己的RTK及松/紧/深耦合算法,来提供零件级解决方案。

已有部分厂商(诺瓦泰、天宝、北斗星通、北云等)推出板卡级别产品,通过在一块小的PCB上集成卫导模块、惯导模块和数据处理单元。上游自动驾驶厂商可灵活的进行集成、开发,从而实现集成度更高的板卡级的解决方案。

少部分厂家在积极布局集成卫导板卡和IMU模块的SOC解决方案,这意味着他们将具备所有模块的自研能力,也为最终的芯片化铺平道路。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高精度组合导航里的松耦合、紧耦合、深耦合 的相关文章

  • 基于linux下python的学习(文件操作、模块)

    一 文件操作 操作文件的函数 方法 在python中要操作文件需要记住的1个函数和3个方法 python中一切皆对象 open 打开文件 xff0c 并且返回文件操作对象 read 将文件内容读取到内存 write 将指定内容写入文件 cl
  • 制作Ubuntu 20.04.5 LTS (Focal Fossa)系统U盘的图文教程

    文章目录 前言 一 Ubuntu系统是什么 xff1f 二 下载ubuntu系统 1 打开对应的网站 三 开始制作系统U盘 1 格式化U盘 2 下载刻录软件UltraISO软件 3 用UltraISO软件加载ubuntu20 04 5的系统
  • android:onNewIntent

    本文编写目的 xff1a 供自己查阅 1 通过Intent启到一个Activity的时候 xff0c 就算已经存在一个相同的正在运行的Activity 系统也会创建一个新的Activity实例 为了不让Activity实例化多次 xff0c
  • fedora安装kde桌面

    yum install 64 KDE desktop
  • 怎么让图片在一个正方形div中不变形展示?且超出部分截取(隐藏),且截取图片的中间位置

    divContent width 200px height 200px border 1px solid red overflow hidden divContent img margin 0 padding 0 width 100 hei
  • [并行计算]Matlab并行计算工具箱(Parallel Computing Toolbox)官方文档教程中文版(1)

    Arranged By Zhonglihao 64 2018 请确认Matlab安装时点选了并行计算工具箱 第一章 xff1a parfor循环并行计算 parfor循环介绍 parfor循环是Matlab并行计算工具箱用于并行计算单循环的
  • xquartz Firefox Error: cannot open display: localhost:14.0

    应该是缺少localhost到127 0 0 1的映射 1 export DISPLAY 61 127 0 0 1 14 0 2 firefox OK
  • 百思不得姐之图片处理(保存与下载)

    一 功能图 二 讲解思路 1 回顾上一篇内容 2 创建加载图片类 同时创建xib 3 点击图片查看大图 4 点击查看大图 查看长图 5 model出展示图片的控制器 6 保存图片 7 封装根据网络状态展示不同的图片 三 回顾上一篇内容 1
  • CMake 学习

    目录 CMake学习网站 CMake安装 CMake编译程序 单个源文件的程序编译 在当前目录执行 cmake xff0c 执行结果 执行完成后的文件列表 使用GUN make来编译程序 得到可执行文件 hello 同目录下多源文件程序编译
  • dumpsys meminfo内存详解

    dumpsys meminfo使用方法帮助 adb shell dumpsys meminfo h meminfo dump options a d c s oom process a include all available infor
  • android恢复出厂设置,关机,重启以及系统升级和充电器连接广播

    恢复出厂设置 lt uses permission android name 61 34 android permission MASTER CLEAR 34 gt if Build VERSION SDK INT lt Build VER
  • Cmake系列(三) 在 CMakeLists.txt 引入第三方so库

    将 so 库和头文件拷贝到对应的目录 app src main jniLibs arm libxxx so 修改 CMakeLists txt 文件 第三方so库 这里和之前在第二步中介绍的创建一个新的原生库类似 xff0c 区别在于最后一
  • .net core MemoryCache(本机缓存)过期策略

    过期策略 1 1 永不过期 xff1a 永远不会过期 1 2 设置绝对过期时间点 xff1a 到期后就失效 1 3 设置过期滑动窗口 xff1a 只要在窗口期内访问 xff0c 它的过期时间就一直向后顺延一个窗口长度 1 4 滑动窗口 43
  • Windows asar工具安装使用与破解StarUml

    目录 安装nodejs 使用npm安装asar asar的压缩与解压 破解StarUml windows要破解StarUml xff0c 需要用到asar进行解压与打包 asar可以借助npm来安装 xff0c mac可以用homebrew
  • logcat中 读取垃圾回收消息

    目录 Dalvik 日志消息 ART 日志消息 有时 xff0c 发生垃圾回收事件时 xff0c 相应消息会输出到 Logcat 中 Dalvik 日志消息 在 Dalvik xff08 而不是 ART xff09 中 xff0c 每个 G
  • arm64-v8a、armeabi-v7a、armeabi、x86 abiFilters 详解

    abiFilters的作用 在app的gradle的defaultConfig里面加上如下 ndk abiFilters 34 armeabi v7a 34 指定要ndk需要兼容的架构 这样其他依赖包里mips x86 armeabi ar
  • Linux shell

    目录 shell 脚本 shell 概述 shell 分类 shell 语法 shell 脚本的定义与执行 自定义变量 环境变量 预设变量 脚本变量的特殊用法 条件测试语句 gt 文件 条件测试语句 gt 字符串 条件测试语句 gt 数字
  • Linux > mmap

    目录 mmap 概念 使用 函数声明 mmap 概念 mmap 将 一个文件或者其它对象 映射到 进程的地址空间 实现 磁盘地址 和进程 虚拟的虚拟地址 的一一对应关系 通过mmap 系统调用 xff0c 我们可以 实现共享内存或者普通文件
  • C++ > STL之算法

    目录 函数对象 谓词 一元谓词 二元谓词 内建函数对象 适配器 算法概述 常用遍历算法 for each 遍历算法 transform 算法 常用查找算法 find 算法 find if 算法 adjacent find 算法 binary
  • 性能优化 启动黑白屏优化

    启动黑白屏优化 前言 这是Google设计者为了让用户体会到点击图标后立马就有响应 xff0c 而让App创建的过程中先展示一个空白窗口 正是这个设计 xff0c 我们在点击App应用图标之后 xff0c 会看到一段时间的空白屏幕 xff0

随机推荐