导航定位系统的原理解析(一个小白写给另一个小白)

2023-05-16

导航定位系统的原理解析(写给小白)

    • 前言
    • ‘三星’定位基本原理(导航定位的原理)
    • 传输误差
    • 后记

前言

无人驾驶是这几年大火的一个研究方向,研究无人驾驶需要了解的知识非常多,但是导航定位技术一定是其中必不可少的一环。

本篇文章主要就GNSS系统如何实现定位进行一个简单的介绍,通过阅读本篇文章,你将了解:

l 卫星导航实现定位的原理;

l 辅助增强系统如何实现厘米级定位。

本篇文章的目标读者是对定位导航一无所知的小白玩家,大神请绕路。

‘三星’定位基本原理(导航定位的原理)

提到卫星导航系统,相信就算对此不了解的人也一定听说过,三颗卫星就能确定一个地面坐标的说法。那么这个说法是如何来的呢?

假设小明在户外活动时候迷了路,于是他打电话报警让警察接他回家,警察告诉他不用着急,会首先通过卫星定位他的手机信号确定他的位置坐标信息,所谓位置坐标信息就是小明此时的(X,Y,Z)的信息。
定位原理如图所示:
在这里插入图片描述
假设小明此时的位置坐标信息为(X,Y,Z),与小明进行信号通讯的三颗卫星编号分别为卫星1号,卫星2号和卫星3号。这三颗卫星坐标与小明手机发射的信号抵达三颗卫星的时间分别如上图所示,则显然有如下方程成立:

在这里插入图片描述
解这个三元三次方程组之后,很快就能知道小明的坐标信息。小明很开心,坐等救援队的到来,结果一天一夜过去了,救援队并没有人来,小明赶紧打电话问为什么还没到?救援队接电话的人气喘吁吁的说,不对啊老弟,按照给定的位置信号找不到你啊,你是不是乱跑了啊,小明说哪能呢,我一动没敢动啊。
在这里插入图片描述
那么到底是哪出了问题呢?小明仔细的研究这个方程组,最后发现,最有可能出问题的地方就是卫星接收到信号的时间。意思就是接收小明信号的三个卫星可能初始时间并不统一,这样造成的后果就是,卫星1以为自己接收到小明信号的时间是5s,实际上可能是5.2s,卫星2以为自己接收到小明信号的时间可能是5.1s,实际可能是4.9s,卫星3以为自己接收到小明信号的时间是5.4s,实际可能是5.5s。这种情况是由时钟误差造成,这里不展开,本文仅讲述如何在算法上消除这种误差,很简单,将上述方程的时间作调整,得到新的方程如下:
在这里插入图片描述
想法很性感,现实很骨感,因为小明很沮丧的发现,这些卫星并不知道自己的时间包含多少误差量,于是小明灵机一动,既然三颗卫星互相之间各种推诿,那就委托第三方来处理,于是小明又找到了第四颗卫星,以这一颗卫星作为标准卫星,假设该标准卫星的位置信息为
在这里插入图片描述
该方程组包含4个未知数,四个方程,因此可解。

传输误差

到了这里,小明就能很快得救了吗?如果真的这样想就大错特错了。因为信号在通过电离层、对流层等区域的时候,会很曲折,这时候又会产生新的传输误差。
在这里插入图片描述

你看,本来走直线的信号在经过大气层的时候开始拐弯了,当然了,具体怎么拐的弯我们并不知道,但是误差却产生了。怎么办呢?

小明突然想到在附近貌似有个信号塔,这个信号塔的位置是确定的,而小明通过手机定位这个信号塔,也能够确定自己和信号塔之间的距离。现在小明和信号塔同时给卫星发射信号进行定位,结果信号塔的定位结果和实际结果之间存在误差,**由于信号塔本身位置是确定的,因此卫星和信号塔之间的距离传输误差很容易被确定,然后信号塔就会告诉小明这个误差值,小明根据这个误差值就可以修正自己的位置,然后告诉救援队自己的真实位置了。**这种做法的好处是通过信号塔把所有从卫星到地面标的物之间的误差统一考虑了,但是这样做的前提是信号塔和小明的距离不能太远,这个信号塔其实就是RTK。
为什么RTK和标的物不能距离过远,这是由于当距离较远时,导航卫星收到的电离层和对流层的干扰情况会变的不同,此时无法有效修正误差。

后记

小明获救后,救援队为了防止再次出现类似事件,于是建立了许多参考基准站并组成了网络。当再有救援活动出现时,可以根据目标的初始位置迅速锁定目标周围的三个距离最近的基站,然后根据三个基站的传输数据定位出带救援人员的精确坐标。
总而言之,单纯通过GPS做定位误差会比较大,但是如果增加适当的辅助措施,则可以有效的减小这种误差。关于导航系统的误差来源,作者简单整理如下图所示:
在这里插入图片描述
以上就是关于导航的最基础的知识,作者目前在做一个关于无人工地的项目,里面涉及到大量的无人驾驶、多机协同控制等内容,当前作者在这些领域也是小白一个,随着项目的进行,作者会将搜集到的资料编制成文档与大家分享,如果有大神路过,还请多多指教。

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

导航定位系统的原理解析(一个小白写给另一个小白) 的相关文章

随机推荐

  • PHP中使用CURL之php curl详细解析和常见大坑

    这篇文章主要介绍了PHP中使用CURL之php curl详细解析和常见大坑 xff0c 现在分享给大家 xff0c 也给大家做个参考 一起跟随小编过来看看吧 七夕啦 xff0c 作为开发 xff0c 妹子没得撩就 撩 下服务器吧 xff0c
  • KMP字符串

    给定一个字符串 S xff0c 以及一个模式串 P xff0c 所有字符串中只包含大小写英文字母以及阿拉伯数字 模式串 P 在字符串 S 中多次作为子串出现 求出模式串P在字符串S中所有出现的位置的起始下标 输入格式 第一行输入整数 N x
  • 一个简单实用的分离器件锂电池充电电路

    下面推荐一个由分离器件搭建的锂电池充电电路 xff0c 如下图 简单说明一下各器件的功能及电路原理 xff1a 简单说明一下各器件的功能及电路原理 F 43 为充电器的正极 xff0c BT 43 为电池正极 xff0c CH与单片机的一个
  • Android自定义节点进度条NodeProgressBar

    NodeProgressBar 一 简介 Android日常开发中我们可能会遇到开发一个带节点的进度条的需求 xff0c 这个需求看似简单 xff0c 实际上可以挖掘出不少东西 做的好的话也可以做成相对通用的自定义组件 二 自定义属性 sp
  • Http工具类 HttpUtils

    import java io IOException import java nio charset Charset import java security KeyManagementException import java secur
  • 【STM32基础】第二篇、STM32串口的使用

    目录 第一部分 如何取出串口接收到的数据 xff1f 第二部分 如何将串口接收的数据与目标数据进行匹配 xff1f 第三部分 串口常用的发送数据的函数 1 发送一个字符 xff08 8位 xff09 2 发送一个16位数据 xff08 16
  • 使用FlyMCU往STM32中烧写程序

    0 软硬件环境 1 操作系统 xff1a Windows 2 软件 xff1a KeilFlyMcu 3 硬件 xff1a PCSTM32最小系统开发板USB转TTL CH340G 1 生成hex文件 编写好要烧写的程序后 xff0c 点击
  • LVI-SAM安装与测试

    1 介绍 就在昨天 xff0c LVI SAM开源了 xff0c 它是一个lidar visual inertial里程计和建图系统 xff0c 在系统级别结合了LIO SAM和Vins Mono的优势 作者之前还开源了LeGO LOAM和
  • 在Ubuntu 18.04上安装Apollo 6.0

    文章目录 1 前期准备1 1 安装Ubuntu1 2 安装NVIDIA GPU驱动1 3 安装Docker Engine1 4 安装NVIDIA Container Toolkit 2 下载Apollo源文件3 启动Docker容器4 进入
  • R2LIVE安装与测试

    文章目录 1 R2LIVE2 安装依赖2 1 Ubuntu和ROS2 2 Ceres Solver2 3 livox ros driver 3 编译R2LIVE4 运行示例 1 R2LIVE R2LIVE 是一个强大的 实时的 紧密耦合的多
  • 图像标注工具labelme在WIndows系统上的安装和使用

    1 前言 labelme可对图像进行标注 xff0c 包括多边形 xff0c 矩形 xff0c 线 xff0c 点和图像级标注 它是用Python编写的 xff0c 并使用Qt作为其图形界面 详细内容见 xff1a https github
  • Windows环境使用和编译CMake记录

    以下为两种使用方式 xff0c 第一种较为简单 xff0c 第二种需提前安装vs软件 1 二进制方式安装 下载win平台的安装包 xff0c 安装解压后将bin目录添加到环境变量即可 打开命令窗口 xff0c 查看当前版本 百度云下载链接
  • 激光雷达和相机的联合标定(Camera-LiDAR Calibration)之Autoware

    1 前言 单一传感器不可避免的存在局限性 xff0c 为了提高系统的稳健性 xff0c 多采取多传感器融合的方案 xff0c 融合又包含不同传感器的时间同步和空间同步 这里要讲的激光雷达和相机的联合标定就属于空间同步范畴 另外 xff0c
  • 如何使用Keras fit和fit_generator(动手教程)

    写在前面 被Adrian Rosebrock圈粉后 xff0c 就一直期待他的更新 xff0c 作者每周一更新 xff0c 考虑到时差问题 xff08 作者在美国 xff09 xff0c 一般北京时间周二才能看到 作者根据读者留言中的问题写
  • CMake 的常用命令

    目录 0 CMake常用的命令或函数 xff1a 1 定义项目 project 2 多个目录 add subdirectory 3 常用命令 add executable add library 4 常用命令 改变最终目标文件输出位置 5
  • Libcurl的编译_HTTP/HTTPS客户端源码示例

    HTTP HTTPS客户端源码示例 环境 zlib 1 2 8 openssl 1 0 1g curl 7 36 Author Kagula LastUpdateDate 2016 05 09 阅读前提 xff1a CMake工具的基本使用
  • CNN卷积神经网络原理详解(上)

    CNN卷积神经网络原理详解 xff08 上 xff09 前言卷积神经网络的生物背景我们要让计算机做什么 xff1f 卷积网络第一层全连接层训练 前言 卷积网络 xff08 convolutional network 也叫作卷积神经网络 xf
  • 啥也不会照样看懂交叉熵损失函数

    啥也不会照样看懂交叉熵损失函数 什么是损失函数损失函数的作用有哪些损失函数交叉熵 xff08 Cross Entroy 损失函数 什么是损失函数 损失函数 loss function 是用来估量模型的预测值与真实值的不一致程度 xff0c
  • 可变形卷积从概念到实现过程

    可变形卷积从概念到实现过程 什么是可变形卷积 xff1f 为什么要可变形卷积 xff1f 可变形卷积结构形式 xff1f 可变形卷积的学习过程 xff1f 可变形卷积如何实现 xff1f 上期回顾 卷积神经网络进阶用法 残差网络如何解决梯度
  • 导航定位系统的原理解析(一个小白写给另一个小白)

    导航定位系统的原理解析 xff08 写给小白 xff09 前言 三星 定位基本原理 xff08 导航定位的原理 xff09 传输误差后记 前言 无人驾驶是这几年大火的一个研究方向 xff0c 研究无人驾驶需要了解的知识非常多 xff0c 但