自动驾驶定位导航技术概述丨曼孚科技

2023-10-08 13:50

本文主要是介绍自动驾驶定位导航技术概述丨曼孚科技,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
作为自动驾驶决策模块的重要组成部分,高精度定位导航技术是自动驾驶汽车安全行驶不可或缺的核心技术之一,在车辆横向/纵向精确定位、障碍物检测与碰撞避让、智能车速控制、路径规划及行为决策等方面发挥着重要的作用。

相较于有人驾驶驾驶员可以凭借双眼与记忆获取周围的可行驶区域、道路边界、车道线、障碍物、交通规则等详细信息,目前自动驾驶汽车的环境感知传感器与算法还无法达到与人类驾驶员同样的感知性能,因此自动驾驶汽车就需要高精定位、高精地图、联合感知等定位导航技术的支持。
在这里插入图片描述
目前常用的定位技术包括轨迹推算(DR)、惯性导航技术(INS)、卫星导航定位技术、路标定位技术、地图匹配定位技术(MM)以及视觉定位技术等。

然而,这些定位导航技术在单独应用时均存在一些无法避免的问题。

自动驾驶车辆对定位系统性能的要求与车辆的行驶速度密切相关。相关标准法规规定,乘用车行驶最高车速不得超过120km/h,客车最高设计车速不应大于100km/h。

基于目前的自动驾驶汽车整体技术水平和车辆限速要求,自动驾驶乘用车的最高车速不宜超过90km/h,自动驾驶客车的最高车速不宜超过70km/h。

一般情况下,有人驾驶车辆距离道路一侧路牙的安全行驶距离约为25cm,而自动驾驶汽车必须在行驶25cm的时间内更新一次定位信息且定位精度要小于等于25cm,否则就有可能导致车辆超出道路边界发生事故。

按照最高车速90km/h计算,车辆行驶25cm用的时间是0.01s,根据公式f=1/t,则定位信息更新频率为100Hz。因此定位信息更新频率需要大于等于100Hz,定位精度需要小于等于25cm才能保证车辆行驶安全。

目前,常用的定位导航系统均无法满足上述指标。比如惯性导航定位技术存在定位误差随时间累积、长时间内不能保证足够的导航精度的问题;卫星定位导航技术存在多路径、卫星信号遮挡和更新频率低等问题等。

正因为单一一种定位技术均存在一定程度上无法克服的弱点,所以研究组合导航就成为时下的热点。组合导航系统在成本以及性能上面更具优势。

本文将详细介绍自动驾驶定位所用到的主流导航技术。

一、全球卫星导航系统

全球卫星导航系统也叫全球导航卫星系统,是能在地球表面或近地空间的任何地点为用户提供全天候的三维坐标和速度以及时间信息的空基无线电导航定位系统。其包括一个或多个卫星星座及其支持特定工作所需的增强系统。

目前国际上主要有4种主流的全球定位导航系统,分别为美国的全球定位系统(GPS)、俄罗斯的格洛纳斯卫星导航系统(GLONASS)、欧盟的伽利略卫星导航系统(GALILEO)和中国的北斗卫星导航系统(BDS)。
在这里插入图片描述
其中应用最广泛的是全球定位系统(GPS)。GPS可以向全球用户提供连续、实时、高精度的三维位置、三维速度和时间信息,并能够进行全球、全天候和实时的导航,且其定位误差与时间无关,具有较高的定位和测速精度。

除了GPS以外,北斗卫星导航系统也是近年应用十分广泛且发展迅猛的一种全球卫星定位导航系统。

北斗由空间段、地面段和用户段三部分组成,可在全球范围内全天候、全天时为各类用户提供高精度、高可靠定位、导航、授时服务,并且具备短报文通信能力,已具备区域导航、定位和授时能力,定位精度为分米、厘米级别,测速精度0.2米/秒,授时精度10纳秒。

我们以GPS为例,简单分析其在自动驾驶定位导航中的作用。

在分析其作用之前,我们先来看一下GPS的组成与定位原理。

简单来说,GPS是由空间定位系统、地面监控网和用户接收系统三部分组成。其定位原理是利用到达时间测距来确定用户的位置。

首先测量信号从卫星发出至到达用户所经历的时间段,时间段乘以信号的速度便得到从卫星到接收机的距离,而卫星的位置是已知的,于是通过测量与3个以上的卫星距离便可以得到接收机的三维位置。

再具体到车辆定位上,GPS通常使用差分技术进行车辆的定位。

其工作原理是:在用户GPS接收机附近设置一个已知精确坐标的差分基准站。基准站的GPS接收机连续接收GPS卫星信号,将测得的位置与该固定位置的真实位置的差值作为公共误差校正量,然后通过无线数据传输或电台数据传输将该校正量传送给移动站的接收机。移动站的接收机用该校正量对本地位置进行校正,最后得到厘米级的定位精度。

不过,GPS定位也存在一定的误差。

GPS定位有3个假设前提。首先是接收机必须准确测量卫星信号的传输时间,此外卫星信号必须以已知的恒定速度传输,最后GPS接收机接收的卫星信号必须沿直线传输。若实际应用中出现任何不满足上述假设的因素都将导致测距误差,从而影响定位精度。

二、航迹推算(DR)

航迹推算是利用载体上某一时刻的位置,根据航向与速度信息,推算得到当前时刻的位置,即根据实测的无人驾驶汽车行驶距离和航向计算其位置和行驶轨迹。它一般不受外界环境影响,但由于其本身误差是随时间累计的,故单独工作时不能长时间保持高精度。

从原理上来看,航迹推算是对速度或加速度信号进行积分,可以基于车辆模型,也可以不基于车辆模型。

目前,实现航迹推算可以基于以下几种形式:

Ξ1. 惯性传感器

通过惯性传感器可以测量得到速度、加速度等信息,理论上这些值都可以通过积分得到位置、速度及航向。使用基于惯性传感器的航迹推算与地图匹配相结合可以修正传感器的一些误差并得到较为精确的定位。

Ξ 2. 地图匹配

地图匹配可以通过将估计值与道路最近点进行正交匹配来实现。利用贝叶斯滤波可以实现较好的地图辅助式定位。

Ξ 3. 动态滤波

一般情况下,用于定位的非线性滤波包含以下主要步骤:

时间更新:当下一个测量到达时,利用运动模型来预测车辆位置;

测量更新:利用当前测量和传感器模型来更新当前位置信息。

三、GPS/DR位置数据融合

GPS具有全球、全天候、高精度、实时定位等优点,但是其动态性能和抗干扰能力较差。

DR(航迹推算)系统一般采用低成本的陀螺仪和车辆里程表构成,通过对车辆航向角变化量和车辆位置变化量的测量,递推出车辆的位置变化,不受外界环境的干扰影响。

但由于DR系统自身不能提供车辆的初始位置坐标和初始航向角,定位误差随时间的累计会发散,从而导致定位精度下降。

通过将GPS和DR相结合,可有效规避两者弱点,不仅可以提高系统精度,还可以增强系统的抗干扰能力与跟踪能力。

一方面可以利用GPS系统提供的绝对位置辅助DR系统的初始化,并可以定期地对DR系统定位以及系统参数的校正。另一方面,在GPS无法定位时,车载定位导航系统又可以自动地切换到DR导航方式,直至GPS恢复正常接收后,系统再回到GPS与DR的组合导航。实现导航输出信息可视化,可以有效解决司机定向难的问题。

根据系统利用GPS信息方式的不同,基于Kalman滤波器的GPS/DR组合可分为松耦合组合定位和紧耦合组合定位两种。

松耦合模式的优点是组合结构简单,系统开发者不需要处理GPS原始的观测信息。同时两个系统能够独立工作,使得定位系统有一定余度。然而,由于GPS输出的位置与速度误差具有时间相关性,这也会给采用Kalman滤波器带来一定的难度。

紧耦合模式的优点是用伪距、伪距率作为观测量。其观测误差可以建模扩充为状态进行估计与矫正,因而可提高组合精度。不过,大的计算量和复杂的软、硬件设计阻碍了其广泛应用。

四、并行建图与定位

在未知环境中,自动驾驶汽车无法根据已知地图不断进行校正,实现精确定位,只能通过自身携带的传感器来获取环境信息,并经过信号处理抽取有效信息,以构建环境地图。这就需要同时定位与地图创建技术的支持。

SLAM,也被称为并行建图与定位,指的是自动驾驶汽车在位置环境中,从未知位置出发,在运动过程中通过环境信息,进行车体位置与航向的确定,同时创建环境地图并对地图进行实时更新,或在已知环境中,通过环境信息对车体位置和航向进行确定。

SLAM一般包含两个步骤:预测和测量。为了准确表示导航系统,SLAM需要在状态之间以及状态和测量之间进行学习。SLAM最常用的学习方法称为Kalman滤波。

基于Kalman滤波的SLAM方法利用包含自动驾驶汽车位姿向量和环境特征向量的增广向量表示空间环境,将自动驾驶汽车运动与环境特征的关系描述为两个非线性模型,即自动驾驶汽车运动模型与观测模型。

自动驾驶汽车控制信号输入到系统运动模型中,实现自动驾驶汽车的运动。Kalman滤波算法根据系统模型实现自动驾驶汽车位姿的预测,同时自动驾驶汽车根据系统观测模型获得对环境特征的观测。

预测特征和观测特征之间要进行数据关联匹配的处理,选择最佳匹配特征,用于对自动驾驶汽车位姿的更新,而候选匹配特征被认为是对环境观测获得的新特征,用于对地图的增广。

SLAM为车辆的位姿估计提供了新思路,在保证定位精度的同时,还提高了定位信息的输出频率,可以获取较为完整的环境重建结果。

参考资料:

[1]《自动驾驶汽车高精定位导航技术路线分析》——赵佳,刘清波

[2]《IEEE SIGNAL PROCESSING》——MAGAZINE, March 2017

[3]《无人驾驶汽车概论》——陈慧岩,熊光明等

这篇关于自动驾驶定位导航技术概述丨曼孚科技的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/165726

相关文章

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable