自动驾驶学习笔记(十二)——定位技术

#Apollo开发者#

学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往:

 《自动驾驶新人之旅》免费课程—> 传送门

《Apollo Beta宣讲和线下沙龙》免费报名—>传送门

文章目录

前言

卫星定位

RTK定位

IMU定位

GNSS定位

先验地图定位

SLAM定位

MSF定位

Apollo定位

Tips

总结


前言

        见《自动驾驶学习笔记(七)——感知融合》

        见《自动驾驶学习笔记(八)——路线规划》

        见《自动驾驶学习笔记(九)——车辆控制》

        见《自动驾驶学习笔记(十)——Cyber通信》

        见《自动驾驶学习笔记(十一)——高精地图》

卫星定位

        基础定位系统由三个部分组成:空间部分(GPS卫星)、地面监控部分和用户部分。如下图所示:

        其基本工作原理是:至少测量出当前位置与4颗卫星的距离和对应时间,通过解方程即可求得当前位置在地球坐标系下的位置(x,y,z)。为什么是4颗呢?因为除了需要确定(x,y,z)三个位置参数,还需要一个卫星提供相对零点时间从而消除时间误差。

        全球四大导航系统包括:美国全球定位系统、欧盟“伽利略”系统、俄罗斯“格洛纳斯”系统、中国北斗卫星导航系统。

        定位模块除了需要告诉自动驾驶系统自动驾驶汽车当前的位置之外,实际还提供车辆当前的运动状态,比如车的航向,速度,加速度,角速度等状态信息。

RTK定位

        基础的卫星定位是存在误差的,误差既来自系统的内部,也来自外部。例如卫星信号穿透电离层和对流层时产生的误差,还有卫星高速移动产生的多普勒效应引起的误差,以及多径效应误差通道误差、卫星钟误差、星历误差、内部噪声误差等。这些误差,有些可以完全消除,有些无法消除或只能部分消除。它们影响了系统的准确性和可靠性。

        RTK(Real time kinematic,实时动态)载波相位差分技术,是卫星定位的扩展。它是实时处理两个测量站载波相位观测量的差分方法,将基准站采集的载波相位发给用户接收机,进行求差解算坐标。如下图所示:

        1、 基准站先观测和接收卫星数据。

        2、基准站通过旁边的无线电台(数据链 ),将观测数据实时发送给流动站(距离一般不超过20公里)。

        3 、流动站收到基准站数据的同时,也观测和接收了卫星数据。

        4、 流动站在基准站数据和自身数据的基础上根据相对定位原理,进行实时差分运算,从而解算出流动站的三维坐标及其精度,其定位精度可达1cm~2cm。

IMU定位

        惯性测量单元(Inertial measurement unit,简称IMU)是测量物体三轴姿态角(或角速率)以及加速度的装置。一般的,一个IMU内会装有三轴的陀螺仪和三个方向的加速度计,来测量物体在三维空间中的角速度和加速度,并以此解算出物体的姿态。为了提高可靠性,还可以为每个轴配备更多的传感器。一般而言IMU要安装在被测物体的重心上。

        IMU的核心参数指标有两个。陀螺仪角度偏差范围通常在0.1°/s - 0.001°/h。加速度计加速度偏差范围通常在100mg - 10ug。由距离计算公式s =½at²可以得出,100mg和10ug偏差的加速度计在60s之后的测量误差分别是3528m和0.35m,差距非常大。不同级别的IMU在精度和成本方面也相差甚远,如下图所示:

GNSS定位

        GNSS是GPS与IMU组合定位。

        GPS定位非常方便,但在高楼、隧道和停车场等场所会出现多径效应和信号衰减,导致测量精度下降。GPS的更新频率也比较低,一般为1s刷新一次。

        为了解决上述问题,IMU通常用来辅助GPS进行定位,IMU不需要接收信号,不受信号质量影响,而且更新频率快,工作频率通常可达100Hz以上,可以弥补短期GPS刷新频率不足的问题。但是IMU有累计误差,在一段时间后需要校准,所以目前无人车主要通过GPS和IMU融合定位。

先验地图定位

        先验地图定位是拿当前观测到的特征和事先建好的地图做匹配,如下图所示:

        其2大核心问题是:特征提取和特征匹配(Feature matching )和重定位( Relocation )。特征提取和特征匹配常用的算法有:ICP ( iterative closest point )、NDT ( Normal Distributions Transform )和基于优化的方法。重定位是指在环境中找到自己的初始坐标,例如在停车场中启动的时候。

SLAM定位

        先验地图的好处非常明显,通过事先建立好地图,然后在线做匹配从而得到目标当前的位置但环境会发生改变,如果周围的环境变化了,而地图没有更新,则会得到错误的定位信息。

        SLAM(Simultaneous localization and mapping)意为“同步定位与建图”,其工作原理如下图所示:

        SLAM根据类型划分为视觉SLAM和激光SLAM两种。视觉SLAM算法又包括ORB-SLAM、LSD-SLAM、VINS-Mono等。激光SLAM算法包括Cartographer和LOAM系列等。SLAM算法的精度已经足够,可以用于大规模分布式实时建图,但是鲁棒性有待加强。

MSF定位

        MSF(Multi-Sensor Fusion)多传感器融合定位,接收GPS、IMU和激光雷达点云等多传感器的数据,通过NDT输出的结果和组合导航输出的结果,通过卡尔曼滤波进行融合,最后输出高精度的定位结果。其工作原理如下图所示:

Apollo定位

        Apollo的定位模块包含三种定位方式:RTK定位、NDT定位和MSF定位,如下图所示:

Tips

        GPS + IMU组合导航还是目前主流的用法。在此基础上结合先验地图,可以实现复杂场景的定位。如果要实现较高的鲁棒性要求,可以增加MSF的算法。而SLAM不依赖事先建好的地图具有强大的优势,是未来发展的方向。

总结

        以上就是本人在学习自动驾驶时,对所学课程的一些梳理和总结。后续还会分享另更多自动驾驶相关知识,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成文本人持续分享的动力。

        另外,如果有同在小伙伴,也正在学习或打算学习自动驾驶时,可以和我一同抱团学习,交流技术。


        版权声明,原创文章,转载和引用请注明出处和链接,侵权必究!

        文中部分图片来源自网络,若有侵权,联系立删。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/173411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣日记11.27-【二叉树篇】二叉树的最大深度

力扣日记:【二叉树篇】二叉树的最大深度 日期:2023.11.27 参考:代码随想录、力扣 104. 二叉树的最大深度 题目描述 难度: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最…

分布式篇---第六篇

系列文章目录 文章目录 系列文章目录前言一、说说什么是漏桶算法二、说说什么是令牌桶算法三、数据库如何处理海量数据?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码…

第二证券:数据要素概念活跃,零点有数“20cm”涨停,皖通科技3连板

数据要素概念27日盘中强势拉升,到发稿,零点稀有“20cm”涨停,易华录涨超10%,兴正确通、德生科技、皖通科技、中远海科等亦涨停,三维六合涨近10%。值得注意的是,皖通科技已接连3个生意日涨停。 消息面上&am…

STM32Cube高效开发教程<基础篇>(九)----实时时钟

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。    本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。 一、 功能概述…

GPTs 初体验 - 1 分钟就能创建一个自己的 ChatGPT? | 京东云技术团队

就在 11.10 号早上,ChatGPT 已经偷摸的把GPTs功能,开放给所有尊贵的 Plus 用户了。 随着这波的功能开放,界面也是改了不少。点击左侧的 Explore 或者左下角的用户处,就可以直接进入新的 GPTs 功能: 这里可以看到我们…

[网络] 5. TCP 链接的建立与释放~汇总

大部分内容源于网络加之个人理解~巨人的肩膀有多大决定你可以看得多远~ 文章目录 1. 三次握手说一下三次握手的过程为什么是三次握手 2. 四次挥手说一下四次挥手的过程为什么需要四次挥手有可能出现三次挥手吗,什么时候会出现呢?为…

在 Banana Pi BPI-R2 PRO RK3568开源路由器上安装 OpenWrt 23 快照固件

这是在 BPI-R2 Pro(到内部 eMMC)上安装 OpenWrt 23 快照固件的快速指南。该固件已预装 LuCI 和一些软件包。这是 2023 年 9 月 2 日的屏幕截图。 LuCI 主页概述。Linux内核是6.1.50 网络接口概述。PPPoE 连接已启动并正在运行 速度测试和 CPU 使用情况…

springboot(ssm网络相册 在线相册管理系统Java(codeLW)

springboot(ssm网络相册 在线相册管理系统Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&#xff09…

MySQL-04-InnoDB存储引擎锁和加锁分析

Latch一般称为闩锁(轻量级锁),因为其要求锁定的时间必须非常短。在InnoDB存储引擎中,latch又分为mutex(互斥量)和rwlock(读写锁)。 Lock的对象是事务,用来锁定的是…

minio客户端基本操作

minio客户端基本操作 桶 创建桶 如果要创建新的桶 输入名称,点击创建即可,默认权限就行 删除桶 点击要删除的桶 点击删除 修改桶 如果哪天需要修改桶的权限或者其他信息,还是先点击这个桶进入详情 然后点击要修改的属性,选择…

Ubuntu 配置静态 IP

Ubuntu 18 开始可以使用netplan配置网络。配置文件位于/etc/netplan/xxx.yaml中,netplan默认是使用NetworkManager来配置网卡信息的。 修改配置文件: 1、打开文件编辑:sudo vi 01-network-manager-all.yaml原文件内容如下:netwo…

【沐风老师】3DMAX快速地板屋顶墙面铺设插件使用方法详解

3DMAX快速地板屋顶墙面铺设插件使用教程 3DMAX快速地板屋顶墙面铺设插件,一键生成各种地板、墙面纹理模型,是一款非常实用的室内设计和建筑建模插件。 【适用版本】 3dMax7或更新版本 【安装方法】 该插件无需安装,直接在建模过程中使用&a…

DevEco Studio中 关闭/开启 代码保存界面自动更新

例如 我们这里有这样一个案例 这里 我们直接将 字体的 50 改为 30 我们直接 Ctrl S 保存代码 效果立马就改了 很明显 这是个热更新的服务 但就例如 我们开发 java比较大的项目 我们不希望它自动更新 免得内存扛不住 我们可以看编辑器上面有一个像小插座一样的东西 目前是一…

MIT_线性代数笔记:第 07 讲 求解 Ax=0:主变量,特解

目录 前言计算零空间 Nullspace特解 Special solutions行最简阶梯矩阵 Reduced row echelon form (rref) 前言 我们定义了矩阵的列空间和零空间,那么如何求得这些子空间呢?本节课的内容即从定义转到算法。 计算零空间 Nullspace…

PNG格式的图像比JPG图像多一个Alpha通道

今天在进行深度学习训练的过程中,我使用 img cv.imread(img_path, cv.IMREAD_UNCHANGED) 来读取图片进行相关的模型训练工作,但是在运行的过程中总是会遇到如下错误: ValueError: operands could not be broadcast together with shapes …

python tkinter 使用(八)

python tkinter 使用(八) 本文主要讲下tkinter库中的其他的一些模块,如simpleDialog,scrollerText等. 1: simpleDialog simpledialog提供一些简单的对话框,用于获取用户输入. askinteger(title, prompt, **kw):askfloat(title, prompt, **kw):askstring(title, prompt, **k…

AttributeError: ‘_OpNamespace‘ ‘image‘ object has no attribute ‘read_file‘解决

问题再现 from torchvision.io.image import read_image img_path border-collie.jpg img read_image(img_path)报错如下: WARNING:root:no value was provided for target_layer, thus set to layer4. ------------------------------------------------------…

Java——继承2

一、instanceof运算符 instanceof是二元运算符,左边是对象,右边是类;当对象是右面类或子类所创建对象时,返回true;否则返回false。 使用instanceof运算符进行类型判断的实例代码 public class IIIIIInstanceof {pub…

使用阿里巴巴API获取商品详情的实践指南

摘要:本文将详细介绍如何使用阿里巴巴API获取商品详情数据,包括API的申请、认证、调用等步骤,并提供相关的代码示例。通过本文的实践指南,读者将能够轻松获取阿里巴巴平台上的商品信息,为业务开发提供有力支持。 一、引…

【XSLVGL2.0】如何在其它线程内更新UI

XSLVGL2.0 开发手册 【XSLVGL2.0】如何在其它线程内更新UI 1、概述2、UI资源锁锁死怎么办?1、概述 项目常常会在其它线程更新UI的状态,但如果直接更新UI会导致UI数据异常从而使得UI挂死。这时只需要使用UI资源锁即可保证UI数据不会异常了。 参考XSLVGL2.0 User Manual 页面…