当前位置: 首页 > news >正文

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

#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不依赖事先建好的地图具有强大的优势,是未来发展的方向。

总结

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

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


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

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

相关文章:

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

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 卫星定位 RTK定位 IMU定位 GNSS定…...

【MySQL系列】PolarDB入门使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

第二节HarmonyOS DevEco Studio创建项目以及界面认识

一、创建项目 如果你是首次打开DevEco Studio,那么首先会进入欢迎页。 在欢迎页中单击Create Project,进入项目创建页面。 选择‘Application’,然后选择‘Empty Ability’,单击‘Next’进入工程配置页。 配置页中,详…...

网页设计--第5次课后作业

1、快速学习JavaScript的基本知识第11-14章 JavaScript入门 - 绿叶学习网 2、使用所学的知识完成以下练习。 1)点击 “点亮”按钮 点亮灯泡,点击“熄灭”按钮 熄灭灯泡 2)输入框鼠标聚焦后,展示小写;鼠标离焦后…...

Spring Cache框架,实现了基于注解的缓存功能。

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Spring Cache框架 简介Spring Cache 环境准备S…...

CSS-鼠标属性篇

属性名:cursor 功能:设置鼠标光标的样式 属性值: pointer:小手move:移动图标text:文字选择器crosshair:十字架wait:等待help:帮助 eg.html{ cursor: wait;}(此处使用css改…...

Fiddler弱网测试究竟该怎么做?

前言 使用Fiddler对手机App应用进行抓包,可以对App接口进行测试,也可以了解App传输中流量使用及请求响应情况,从而测试数据传输过程中流量使用的是否合理。 抓包过程: 1、Fiddler设置 1)启动Fiddler->Tools->…...

蓝桥杯-平方和(599)

【题目】平方和 【通过测试】代码 import java.util.Scanner; import java.util.ArrayList; import java.util.List; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此…...

从零构建属于自己的GPT系列1:预处理模块(逐行代码解读)、文本tokenizer化

1 训练数据 在本任务的训练数据中,我选择了金庸的15本小说,全部都是txt文件 数据打开后的样子 数据预处理需要做的事情就是使用huggingface的transformers包的tokenizer模块,将文本转化为token 最后生成的文件就是train_novel.pkl文件&a…...

STM32内存介绍

ROM是一种只读存储器,经历了从NOR Flash到NAND Flash再到现在的eMMC的发展。为了便于使用和大批量生产,ROM进一步分为了4种类型:PROM、EPROM、EEPROM和Flash。PROM只能被编程一次,EPROM可擦写可编程且可达1000次,EEPRO…...

Qt::Window 、Qt::Tool是 Qt 框架中的一个窗口标志(Window Flag),用于指定窗口的类型和行为

Qt::Window Qt::Window 是 Qt 框架中的一个窗口标志(Window Flag),用于指定窗口的类型和行为。 在 Qt 中,窗口标志用于控制窗口的外观、行为和交互方式。通过使用不同的窗口标志组合,可以定制窗口的特性,…...

东胜物流软件 SQL注入漏洞复现

0x01 产品简介 东胜物流软件是一款致力于为客户提供IT支撑的 SOP, 帮助客户大幅提高工作效率,降低各个环节潜在风险的物流软件。 0x02 漏洞概述 东胜物流软件 TCodeVoynoAdapter.aspx、/TruckMng/MsWlDriver/GetDataList、/MvcShipping/MsBaseInfo/Sav…...

第1章 爬虫基础

目录 1. HTTP 基本原理1.1 URI 和 URL1.2 HTTP 和 HTTPS1.3 请求1.3.1 请求方法1.3.2 请求的网址1.3.3 请求头1.3.4 请求体 1.4 响应1.4.1 响应状态码1.4.2 响应头1.4.3 响应体 2. Web 网页基础2.1 网页的组成2.1.1 HTML2.1.2 CSS2.1.3 JavaScript 2.2 网页的结构2.3 节点树及节…...

Python教程---序列--序列修改元素

下面和大家讲一下如何进行序列修改元素。 序列修改元素可以进行两个操作。如下: 方法1:通过下标元素来修改 方法2:通过del来删除元素 # 创建一个原始的列表 stus [张三,李四,王五,赵六,王麻子,小红]#通过下标来直接修改元素中的内容 stus[0] 张三123 stus[2] 哈哈#通过d…...

Linux 中的 ls 命令使用教程

目录 前言 如何运用 ls 命令 1、列出带有所有权的文件和目录 2、获取以人类可读的方式显示的信息 3、列出隐藏文件 4、递归列出文件 5、在使用 ls 时对文件和目录做区分 6、列出指定扩展名的文件 7、基于大小对输出内容排序 8、根据日期和时间排序文件 让我们来总结…...

Kubernetes基础入门:Kubernetes的有关概述

Kubernetes基础入门:Kubernetes的有关概述 一、摘要二、为什么需要 Kubernetes?三、Kubernetes 的功能架构 💖The Begin💖点点关注,收藏不迷路💖 一、摘要 随着云计算和容器技术的快速发展,现代…...

C# 无法将“int[]“类型隐式转换为“int?[]“,无法将“string[]“类型隐式转换为“string?[]“

在 C# 中,不能将 int[] 隐式转换为 int?[],因为它们是两种不同的类型。int[] 是一个整数数组,而 int?[] 是一个可空整数数组。要解决这个问题,你可以使用显式转换或创建一个新的可空整数数组。 两种解决方案供大家选择 // 示例…...

趣链科技,HyperChain

目录 趣链科技 HyperChain 产品介绍 CA认证即电子认证服务 趣链科技 趣链区块链平台Hyperchain-核心产品-趣链科技 趣链科技飞洛区块链服务开放平台...

吴恩达《机器学习》9-7-9-8:综合起来、自主驾驶

在神经网络的使用过程中,需要经历一系列步骤,从网络结构的选择到训练过程的实施。以下是使用神经网络时的主要步骤的小结: 一、网络结构的选择 输入层: 第一步是选择网络结构,即确定神经网络的层数以及每层的单元数。…...

HTTP/HTTPS

HTTP/HTTPS 简介 HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网( WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP 是一个基于 TCP/IP 通信协议来传递数据&a…...

2026.4.5

线段树&#xff0b;lazy标记#include<bits/stdc.h> using namespace std; #define int long long #define N 100004 int num[N],tree[4*N],n,q,ans; int len[4*N],lazy[4*N]; char op; int a1,a2,a3; void updata(int xx) {tree[xx]tree[xx*2]tree[xx*21];len[xx]len[xx*…...

Phi-4-mini-reasoning教育科技:智能错题本中归因分析与解法推荐引擎

Phi-4-mini-reasoning教育科技&#xff1a;智能错题本中归因分析与解法推荐引擎 1. 模型介绍与教育应用价值 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型&#xff0c;特别适合数学题、逻辑题等多步分析场景。在教育科技领域&#xff0c;它为解决传统错题本"…...

OpenCV多线程编程:从单线程到多线程的视频处理

一、最简单的摄像头显示程序让我们从最基础的版本开始&#xff1a;一个单线程程序&#xff0c;直接从摄像头读取并显示画面。基础版本代码#include <iostream> #include <opencv2/opencv.hpp> using namespace std;int main() {// 打开摄像头&#xff08;默认摄像头…...

零基础友好:在快马平台上手把手学openclaw机器人抓取入门

零基础友好&#xff1a;在快马平台上手把手学openclaw机器人抓取入门 最近想研究机器人抓取技术&#xff0c;发现openclaw这个库对新手特别友好。作为一个完全没接触过机器人编程的小白&#xff0c;我在InsCode(快马)平台上找到了快速入门的方法。这个平台最棒的地方是不用配置…...

umamusume-localify本地化工具与效能调优技术指南

umamusume-localify本地化工具与效能调优技术指南 【免费下载链接】umamusume-localify Localify "ウマ娘: Pretty Derby" DMM client 项目地址: https://gitcode.com/gh_mirrors/um/umamusume-localify 开源本地化工具如何解决跨语言界面障碍&#xff1f;游戏…...

OFA图像语义蕴含模型实战:基于Python的英文图文关系判断

OFA图像语义蕴含模型实战&#xff1a;基于Python的英文图文关系判断 用AI看懂图片和文字之间的关系&#xff0c;原来这么简单 你有没有遇到过这样的情况&#xff1a;看到一张图片和一段英文描述&#xff0c;想要快速判断它们是否匹配&#xff1f;比如电商平台需要自动审核商品图…...

怎样快速掌握Pine Script交易策略编程:5个高效上手的秘诀

怎样快速掌握Pine Script交易策略编程&#xff1a;5个高效上手的秘诀 【免费下载链接】awesome-pinescript A Comprehensive Collection of Everything Related to Tradingview Pine Script. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-pinescript 你是否曾…...

BepuPhysics2多线程架构解密:如何充分利用现代CPU实现并行物理仿真

BepuPhysics2多线程架构解密&#xff1a;如何充分利用现代CPU实现并行物理仿真 【免费下载链接】bepuphysics2 Pure C# 3D real time physics simulation library, now with a higher version number. 项目地址: https://gitcode.com/gh_mirrors/be/bepuphysics2 BepuPh…...

Windows用户福音:不用Mac也能搞定uniapp的iOS证书和Profile文件(附详细截图)

Windows平台下高效生成uniapp iOS证书与Profile文件的完整指南 对于许多使用uniapp进行跨平台开发的Windows用户而言&#xff0c;iOS证书和Profile文件的生成一直是个令人头疼的问题。传统方法要求开发者必须拥有Mac设备&#xff0c;这无疑增加了开发门槛和成本。但事实上&…...

macOS极简部署:OpenClaw与Qwen3-14B镜像云端联调指南

macOS极简部署&#xff1a;OpenClaw与Qwen3-14B镜像云端联调指南 1. 为什么选择云端联调 去年冬天&#xff0c;当我第一次尝试在本地MacBook Pro上部署OpenClaw时&#xff0c;整整两天时间都耗在了环境配置上。从Homebrew版本冲突到Node.js权限问题&#xff0c;再到CUDA驱动不…...