RTK与RTD基础原理
(文中的部分图片是摘自其他博主的文章,由于比较久,忘记原本链接了,侵删)
GPS定位原理
卫星自身有自己的星历与原子钟,因此卫星知道自身准确的空间坐标与时间。因为每个卫星都有原子钟,因此每颗卫星的时间基本上都是相同的,不过卫星发射信号的时间点有可能不同,但在发送的报文中,会包含时间戳信息。
对一个飞机还有一颗卫星来说,假设卫星的坐标为 X1,Y1,Z1,时间为T1。而飞机的空间坐标 X,Y,Z,以及时间 T 是未知量。
先抛开时间,单论空间的话,飞机与卫星的空间距离可以用空间勾股定理计算得出:

而卫星发射信号的速度是已知的,就是电磁波的速度(光速),3*10^8 m/s,那么从时间轴上,也可以计算出飞机与卫星的距离 = 3*10^8 * (T - T1),联立方程:

此一个方程中,含有四个未知量,可以容易联想到,如果要解出四个未知量,我们需要至少四个方程-----至少四个方程就代表,我们需要至少四颗卫星的信息,才能解算出来飞机的空间坐标与时间:

所以对无人机端,能够接收到四颗卫星的信息就可以解算出来自身坐标,以上为GPS定位的基本原理。但GPS定位方式的精度不是很高,不过GPS定位原理是RTK定位的基础。
伪距
伪距就是接收机到卫星之间的大概距离,之所以称之为伪距,是因为其不是真实距离,中间包含各种误差,正如上述中无人机到每个卫星的距离,就是伪距。是由卫星发射事件与接收机的接收时间计算得来。
卫星时钟与接收机时钟存在钟差,还有大气层等因素的影响,导致其并不是真实距离,伪距的误差来源也是GPS定位的误差来源。
卫星载波有两个频段L1与L2,通过两个频段来传输信号,计算伪距,可以克服一些误差来源。
GPS定位的误差来源
GPS定位的精度不高,误差来源主要为以下三个:
1)卫星端误差
2)传输过程误差
3)接收机误差
其中,卫星端误差表示由于卫星本身轨道误差与钟差造成的误差,以及卫星信号可能经过反射;
传输过程误差表示不同的大气层以及不同的纬度传输的差异,
接收机误差表示接收端(飞机)自身的环境干扰或遮挡造成的影响。
传输过程误差可以通过建模等方式消除大部分,接收机误差受环境的影响大,正常环境下,卫星端误差就是造成定位偏差大的主要原因,那么实现高精度定位主要就是解决卫星端误差。
RTD定位原理
RTD,全称为实时动态码相位差分技术,与RTK定位都是建立在GPS定位的基础上,原理上可以以下图为示例:

此图为一个基础版的 RTK 组网,根据 GPS 定位的原理,可以推出,上图中的移动站与基准站的坐标与时间都可以通过四颗卫星的信息来计算出来,只不过误差较大。
RTD采用的是伪距差分。此时:
1)把基准站建立在一个开阔地带,通过其他的方式确定基准站的准确坐标,记作A,即此基准站的准确坐标是已知的,之后基准站接收卫星信号,可以计算出每个卫星每时刻到基准站的真实距离,同时通过GPS的方式得出基站到每个卫星的伪距,再将伪距与真实距离做差,得到伪距改正值;(有些也会直接求出坐标,得到坐标改正值,本质是相同的)
2)之后基准站将此伪距改正值(坐标改正值)通过电台发送给移动站(无人机);
3)移动站接收到伪距改正值(坐标改正值)之后,同时也通过卫星定位来计算自身的坐标,此时计算出来的坐标同样也是带有误差的;
4)移动站将基准站发送过来的伪距改正值(坐标改正值)再补偿进自己通过卫星定位得到的坐标中,就可以消除一些卫星端误差,提升精度。
以上便是RTD定位的基本原理。
RTK定位原理
RTK,全称是载波相位差分技术。
如果要得到与卫星的距离,除了伪距测距,载波相位也是可以用来测距的。
卫星采用的可调制载波的频段有两个---L1与L2,L1频段的载波频率为1575.42MHz,波长约19cm,知道了载波频率,如果能够测量到传播路径上两点之间相位差,那么就可以计算出来两点的距离。
那么与RTD相比,RTK的实现步骤就为:
1)有基站的准确坐标,基站将自身的载波相位通过RTCM报文发送给移动端(无人机)
2)移动端(无人机)接收基站的坐标与载波相位
3)移动端(无人机)将载波相位与自身的载波相位做差,得到载波相位差,进而求解出与基站的距离,再根据基站的坐标与自身解算出来的坐标,求解出定位精度更高的位置坐标
实际应用
实际应用时,通常是RTD与RTK相结合的方式,一起使用伪距差分定位与载波差分定位。
伪距与载波相位结合
在实际的定位应用中,伪距精度不如载波相位高,但是伪距可以实现绝对定位,通常是两者结合进行综合定位,即RTD与RTK相结合实现准确定位。
伪距差分模式
伪距差分模式有两种,可以按照rtcm协议来区分,rtcm2协议版本使用的是伪距差分模式,rtcm3协议版本使用的是伪距双差模式。
rtcm2与rtcm3比较
rtcm2的伪距差分模式就是正常的,由基站计算出伪距改正量,然后将伪距差发送给移动端,但是是不发送基站坐标的。
而rtcm3的伪距双差模式,是基站将卫星原始伪距观测值以及基站坐标都发送出来,由移动端来对应相应的卫星自行解算伪距改正量。
之所以这样做,是基于不同的考量,rtcm2直接发送伪距改正量,不发送基站坐标,数据量少,在传输上有优势,而且不会暴漏基站坐标,保密性强。但缺点是容易造成星历误匹配的情况,即基站与移动端使用的是不同的星历,这样用伪距改正量会对精度造成影响。
而rtcm3发送基站坐标与原始伪距观测量,从而不存在星历误匹配的情况,但发送数据量大,需要有较好的通讯链路,且会发送基站坐标,保密性不如rtcm2。
结合飞控
结合无人机的话,就是基站通过电台发送伪距差分数据以及载波相位给到飞控,飞控有两个任务:一是将基站的rtcm数据转发给RTK板卡,另一个是从RTK板卡读取解析后的数据。一般来说,板卡会引出两个串口,串口1用来给飞控发送解析后的数据,串口2用来接收飞控发来的基站数据。
而飞机的板卡通过GPS定位,伪距差分量,以及载波相位差来综合计算给出准确定位。
拓展
电台传输距离有限,约为20km,在网络覆盖了之后,一般通过4G网络来传输基准站的差分信号。不过,当网络条件差的时候,差分信号传不过来,就会造成定位精度差。
所以在无网环境下,还是通过无线来传输差分信号。
CORS系统
CORS 名为“连续运行参考站”,在了解了RTK的原理之后,就会明白 RTK 是相当依赖基站的。
结合RTK的特点,CORS 系统就可以理解为:政府以及一些公司,为了能够顺畅使用RTK而建立的若干个,覆盖大部分地区的固定基站,不间断运行,提供差分信号的基站网络。
CORS系统通过4G发送信号,向用户收费服务,用户端需要有4G网卡,通过网络与基站相连。
许多厂商都建立了自己的cors系统。
相关文章:
RTK与RTD基础原理
(文中的部分图片是摘自其他博主的文章,由于比较久,忘记原本链接了,侵删) GPS定位原理 卫星自身有自己的星历与原子钟,因此卫星知道自身准确的空间坐标与时间。因为每个卫星都有原子钟,因此每颗卫星的时间基本上都是相…...
关于MCP SSE 服务器的工作原理
模型上下文协议(Model Context Protocol,简称MCP) 是一种全新的开放协议,专门用于标准化地为大语言模型(LLMs)提供应用场景和数据背景。 你可以把MCP想象成AI领域的“USB-C接口”,它能让不同的A…...
碳中和小程序:助力用户记录低碳行为,推动环保生活
碳中和小程序:助力用户记录低碳行为,推动环保生活 一、碳中和的全民化挑战与数字化机遇 中国承诺2030年前实现碳达峰,2060年前达成碳中和目标。在这一国家战略下,个人碳减排贡献率需从当前不足5%提升至25%。小程序开发技术正成为破解"公众参与度低"“行为量化难…...
Python读取显示Latex的公式文档,Python加载显示markdown文件。
平时用LLM大语言模型去解释文献里面的公式含义直接复制的格式word看不懂,基于这个web可以正常加载显示。 下面是读取的效果展示:下面程序保存为stl_read.py然后运行下面指令。 streamlit run stl_read.pyimport streamlit as st import base64 import …...
mapbox高阶,结合threejs(threebox)添加extrusion挤出几何体,并添加侧面窗户贴图和楼顶贴图
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️threebox extrusion挤出几何体二、🍀…...
mock的定义和使用场景
Python自动化中使用mock的示例 在Python自动化测试中,mock 用于模拟对象、函数或方法的行为,以便在隔离的环境中测试代码。以下是一个简单的示例: 假设你有一个 user.py 模块,其中包含一个 get_user_info 函数,用于从…...
Android Retrofit 请求执行模块执行原理深入源码分析(三)
一、引言 Retrofit 是 Square 公司开发的一款优秀的类型安全的 HTTP 客户端,在 Android 和 Java 开发中被广泛使用。它通过简洁的接口定义和强大的注解功能,使得开发者能够轻松地进行网络请求。请求执行模块是 Retrofit 的核心部分之一,负责…...
封装Axios拦截器实现用户无感刷新AccessToken实践指南
一、背景与需求场景 1.1 单点登录体系中的Token管理 在单点登录(SSO)体系下,用户登录后系统会颁发两种令牌: AccessToken:短期有效(2小时),用于接口鉴权 RefreshToken:…...
CSDN博客:Markdown编辑语法教程总结教程(下)
❤个人主页:折枝寄北的博客 Markdown编辑语法教程总结 前言1. LaTex数学公式2. 插入不同类别的图2.1 插入甘特图2.2 插入UML图2.3 插入Mermaid流程图2.4 插入Flowchart流程图2.5 插入classDiagram类图 3. CSDN快捷键4. 字体相关设置4.1 字体样式改变4.2 字体大小改变…...
【Python】06、流程控制语句
文章目录 1.条件判断语句1.1 if 语句2. input 函数3.if-else 语句4.if-elif-else 语句 2.循环语句2.1 while语句2.2 while语句练习:2.3 循环嵌套2.4 break和continue 通过流程控制语句,可以改变程序的执行顺序,也可以让指定程序反复执行多次。…...
《python》—— threading库(线程和多线程)
文章目录 threading简介threading基本概念常用类和方法线程同步线程池实例 threading简介 threading 是 Python 标准库中用于实现多线程编程的模块。多线程编程允许程序同时执行多个任务,提高程序的并发性能,尤其适用于 I/O 密集型任务,例如…...
【数据分享】2000-2024年全国逐年归一化植被指数(NDVI)栅格数据(年最大值)
NDVI,全名为Normalized Difference Vegetation Index,中文名称为归一化植被指数。这个指数可以用来定性和定量评价植被覆盖及其生长活力,我们也可以简单地将它理解为体现植被密度和健康状况的一个指标。 之前我们给大家分享了来源于MOD13A3数…...
【项目】负载均衡式在线OJ
负载均衡式在线OJ 目录 负载均衡式在线OJ 1.项目介绍: 2.comm 2.1 log.hpp 日志等级 开放式日志 时间戳工具 2.2 util.hpp TimeUtil类 PathUtil类 FileUtil类 StringUtil类 3.Compile_server 3.1compile_run.hpp RemoveTempFile CodeToDesc Start 3.…...
前端发布缓存导致白屏解决方案
解决发布H5后因为本地缓存白屏方案 一、 核心配置优化(前提是访问网站的请求能抵达服务器) 方案一:前端项目设置全局不缓存方案 运行逻辑:在H5服务器配置中增加Cache-Control: no-cache或max-age0响应头,禁用静态资…...
大模型开源的工具包有哪些特殊符号可以使用;SEP 是什么
大模型开源的工具包有哪些特殊符号可以使用 目录 大模型开源的工具包有哪些特殊符号可以使用自定义特殊token:special_tokens=True一、**对话轮次分隔符(必选)**二、**系统提示标记(提升指令理解)**三、**中文特色分隔符(贴合书写习惯)**四、**开源模型专属符号(按文档…...
混沌理论与混沌映射——算法改进初始化创新点之一
混沌理论与混沌映射 混沌理论研究混沌系统的动力学,其特征是非线性和对初始条件的极端敏感性。即使在这些条件下的微小变化也可能导致系统结果的显著变化。尽管看起来是随机的,混沌系统可以在不依赖随机性的情况下表现出不规则的行为,因为确…...
19874并查集
19874并查集 ⭐️难度:中等 🌟考点:并查集、数据结构 📖 📚 import java.util.*;public class Main {static int N 100010;static int[] a new int[N];static int[] p new int[N];static int n;static int m;st…...
macOS 安装配置 iTerm2 记录
都说 macOS 里替换终端最好的就是 iTerm2 ,这玩意儿还是开源的,所以就也根风学习一下,但全是英文的挺麻烦,所以这里记录一下自己的设置,以最简单的安装及设置为主,想要更酷炫、更好看的还请自己百度吧&…...
LLM最新的模型微调技术有哪些
LLM 最新的模型微调技术有哪些 目录 LLM 最新的模型微调技术有哪些1. QLoRA(Quantized Low-Rank Adaptation)2. P-Tuning v23. LoRA++(增强版 LoRA)4. AdaLoRA(Adaptive LoRA)5. BitFit(仅微调偏置)1. QLoRA(Quantized Low-Rank Adaptation) 原理:QLoRA 结合了低秩自…...
Jmeter下载安装配置及使用
1、下载 官网地址:Apache JMeter - Download Apache JMeter 2、配置环境变量 ①找到环境变量,两种方法 法一:我的电脑→右键菜单→属性→高级系统设置→环境变量 法二:直接搜索环境变量 ②新建两个系统变量 1.变量名&#x…...
简单易懂Modbus Tcp和Rtu的异同点
关键说明 无需修改业务逻辑:同一套读写代码可同时支持TCP和RTU,仅需调整底层通信接口。 工具兼容性:调试工具(如Modbus Poll)可同时解析两种协议,仅需切换传输模式。 系统集成优势:混合网络下可…...
try catch的使用
try catch的使用 在 Java 中,try-catch 语句用于异常处理。异常处理可以帮助我们在程序出现错误时,不会导致程序崩溃,而是采取一定的措施来处理错误。try-catch 语句是用于捕获并处理异常的机制。 基本语法 try {// 可能会抛出异常的代码块…...
【从零开始学习计算机科学】编译原理(一)编译过程概述
【从零开始学习计算机科学】编译原理(一)编译过程概述 绪论编译过程概述词法分析语法分析代码优化代码生成其他功能编译器的前端和后端绪论 什么叫编译程序?为什么我们需要编译程序?编译程序就是一个程序,将便于人编写、阅读、维护的高级计算机语言所写作的源代码程序,翻…...
PCL 点云AABB包围盒(二)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。(来源于百度)常用的求解包围盒的算法主要有AABB和OOB算法,其中AABB的算法思想…...
【算法day8】 Z 字形变换 -O(n)算法思路整理
Z 字形变换,算法思路整理 https://leetcode.cn/problems/zigzag-conversion/description/ 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下…...
L3-1 夺宝大赛
输入样例 1: 5 7 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 2 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 7 1 5 7 1 1 1 5 5 3 1 3 5 1 4输出样例 1: 7 6样例 1 说明: 七支队伍到达大本营的时间顺次为:7、不可能、5、3、3、5、6,…...
Matlab:矩阵运算篇——矩阵
目录 1.定义 实例——创建矩阵 实例——创建复数矩阵 2.矩阵的生成 实例——M文件矩阵 2.利用文本创建 实例——创建生活用品矩阵 3.创建特殊矩阵 实例——生成特殊矩阵 4.矩阵元素的运算 1.矩阵元素的修改 实例——新矩阵的生成 2.矩阵的变维 实例——矩阵维度修…...
泛微ecode的页面开发发送请求参数携带集合
1.在开发过程中我们难免遇见会存在需要将集合传递到后端的情况,那么这里就有一些如下的注意事项,如以下代码: // 新增action.boundasync addQuestion(formData) {var theList this.questionAnswerList;var questionAnswerListArray new Ar…...
【结构光相机的精度极限】
1. 光源波长((\lambda)) 光源波长是决定结构光相机精度极限的核心因素之一。根据光学衍射极限理论,光的波长越短,能够分辨的细节越小,精度越高。 理论依据: 根据瑞利判据(Rayleigh Criterion&…...
Javaweb后端全局异常处理器
类名随便定义 这是异常处理的方法exceptionhandler responsebody作用,方法的响应值返回给前端,如果返回的是集合对象,会把集合对象转为json,再给前端响应返回...
