我们如何收到卫星信号?(导航电文,载波与测距码)

2024-06-03 20:20

本文主要是介绍我们如何收到卫星信号?(导航电文,载波与测距码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

卫星信号

在介绍所有卫星信号之前,首先要明确一些概念:

所有的卫星信号,都是一段电磁波,用户接收的,也是一段电磁波。

但是我们认知中的电磁波,就是一段波,就像我们打出去的交一样,怎么通过这一段波来转换成有用的数据呢?

首先,卫星发射信号的是计算机,接收机也是计算机,卫星发出信号,我们接收信号,接收的都是一段二进制01码,然后把01码进行转换。因为卫星不可能直接发出一串文字,而计算机就算接收到了这串文字,也无法看懂,所以计算机之间的交互很默契地都采用二进制码来交互。

因此,我们接收信号,方法就是将电磁波转换为二进制序列。但是怎么转换?转换方法就多了,我们可以:

  • 电磁波高波峰表示1,低波峰表示0
  • 电磁波正波表示1,负波表示0,曼波out

具体的实现方案,我们就不需要深究,也不是我们需要管的事,我们只用知道:卫星发出和我们接收的信号都是电磁波,最终转换为的形式为二进制序列。

而因为电磁波可以转化成二进制码,我们可以重新用码的特性去定义卫星信号的一些特性:

  1. 码元:二进制序列中每一个二进制数称为一个码元
  2. 码元宽度:每个码元持续时间或其对应的距离成为码元宽度
  3. 码速率:码发生器每秒输出的码元个数 

卫星信号分为三种:载波,测距码与导航电文

测距码

测距码是用来测距的一串码序列,最终他的形式也是可以转换成01的。测距码最大的特性,也就是他定位的原理,便是他采用的是一段伪随机码。什么是伪随机?

就如同我们在编程语言中涉及到的获得伪随机数与设定种子一样:

伪随机数列是一个数组:


对每一个数组中的元素,都有一个固定的算法:

比如:第一空的算法为f(x)=x^2+5x

我们在给定种子为x=2的时候,第一个空的数据就是f(2)=14

同理,一直填满所有的空

而当我们想取随机数的时候,就按顺序依次从这个数组里取,

比如我们在玩掷硬币,假设为奇数是正面,偶数是反面

那么第一次掷硬币,我们取第一个元素,14,为反面

第二次掷硬币,我们取第二个元素,g(2)

过了很长时间,我们再掷第三次硬币,只要我们不重新设置种子,还是从上一次的位置开始往下取,即取第三个元素h(2)

也就是说,只要种子确定了,我们就能把这个序列给推算出来。但是,因为随机数组对于不同种子是完全不同的,所以我们可以近似认为他是随机的,也便是可以预测的随机:伪随机。而用这个特性,我们可以得到两个结论:

  1. 知道卫星产生随机序列的种子,我们可以在接收机端产生一段一模一样的序列
  2. 因为序列是随机产生的,对不同种子,序列完全不同,而且就算一个相同的序列,如果没有对齐(即第一个数组以a[0]为起点,第二个数组以a[2]为起点),所以序列的自相关性极强
    (自相关性是指,两个序列的重合程度)

导航电文

导航电文,导航电文是一串比较特殊的序列,他又叫做数据码,作用是传递一些与定位有关的数据和卫星状态。导航电文搭载的信息就比较格式化,

  • 导航电文的传输速率为为50b/s,也就是每秒传输50个二进制码
  • 一个完整的导航电文信息为1500b,为一个主帧,所以发送完一个主帧需要1500/50=30秒
  • 一个主帧分为5个子帧,每个子帧含1500/5=300b
  • 一个子帧有10个字,每个字30b

也就是,一个导航电文被分为了很多很多小块,系统地来分便是5个子帧,50个字,每个字代表着一个信息。我们知道,一个int类型为4子节32个bit,而一个字30个bit,也就是一个字刚好能表示一个数,这也是导航电文的分块——分成了一块又一块的数字。

但是,导航电文的数据非常多,用50个字没有办法全部表示完。怎么办?所以我们不得不用两串完整的导航电文去表示一个定位数据,也就是用100个字来表示,还不够就150个,200个。

而在实际实现的过程中,采用的是25串完整的导航电文,去表示一个导航数据,其中:

  • 对一串完整的导航电文,前三个子帧播发卫星的基本数据,如时间等。这些是不会变的,25串导航电文一直重复播发
  • 而后两个子帧,需要播发卫星的状态和定位数据,在25串导航电文里,轮流去表示这些数据。

也就是,前三个子帧是不会变的,一直重复播发,而后两个子帧则在25串电文,一共2*25=50个子帧中,将数据播发完整。

导航电文的更新频率是2个小时,也就是在两个小时之内一直会重复播发这25个主帧。

假设在12:00的时候更新,那么一直到14:00,导航电文会重复播发25个子帧,这25个子帧表示的状态都是12:00时刻时,卫星的运动状态和轨道参数。

载波

载波,翻译成人话,就是搭载信号的波,再通俗地说,就是信号波的交通工具。信号从外太空发射过来,会经历大气层,而在传输的过程中会有个特点:

  1. 如果波的频率过高,则电离层的延迟很严重,导致电离层误差过高
  2. 如果波的频率过低,则会被大气层严重吸收,导致信号的强度大大降低

所以采用适中频率的波——L波段无线电信号最合适。载波就是一个交通工具,如果直接用导航电文和测距码,那么要么频率过高要么频率过低,所以就要把导航电文和测距码与载波相调制,把导航电文和测距码调制到L波段上,减少误差。

载波一共有三个频率,

  1. 第一个频率负责搭载信号,
  2. 第二个频率用来采用差分的方法消除电离层延迟,
  3. 第三个频率来实现更多用以提升定位精度的功能 

卫星定位原理

测距码测量 

原理:测距码是一串伪随机码,只有码序列相同并且对齐,其相关系数才为1

所以,我们可以利用这一特性,在接收机上输入相同的种子,产生一段与卫星相同的伪随机序列

比如:

卫星发出的伪随机码是:abcdefghijk...
(卫星当然发出的是二进制码,但是这里为了更直观比对结果,举例就采用更直观的码序列)
那我们就用相同的种子,在接收机上也构建一段相同的码序列:abcdefghijk...

但是,当接收机接收到信号的时候,不可能是从起点abcd开始的,有可能出现下面的情况:

因为没有对齐,他们的相关系数是极低的。于是,我们就固定住接收到的卫星码,然后向后挪动接收机自己产生的码:

他们之间的差距由两个字母到了一个字母,但是还是没有对齐,相关系数还是很低,我们再挪动一下:

这个时候,计算相关系数,发现相关系数为1了,而且再读取计数器,发现挪动了两个码,所以计算机就知道了:

在一个码序列周期内,他们之间相差了两个码的距离

所以,就可以计算出,在一个码序列周期内,他们相差的时间为:

但是除此之外,他们还相差了很多个整周期T,这个整周期T因为码序列的长度是固定的,所以T一般来说也是固定的一个数,可以直接采用。

所以,信号的传输时间为:

然后再用最基础的L=V*t,就可以求出卫星到接收机之间的距离:

L=\Delta t*c 


载波测量

但是在高精度测量中,测距码的测量精度并不高。因为其精度求得的时间和码元的宽度强相关,如果码元过宽,对齐过于简单,那么最终的精度也会很低。但是,载波就像三角函数一样,是一段连续的波,我们可以采用这段连续的波,缩短他们的误差,来提高定位精度。

比如在途中,我们接收到的卫星信号是波峰的位置,我们就可以知道,卫星信号的相位是二分之Pi。但是,光知道这个二分之Pi,我们并无法进行定位,因为从卫星发出信号到接收机接收到信号,一定有以下几个部分:

用公式表示便是:

L=\Delta\varphi +(int)T ,前者为不满一整周期的相位,后者为整周期数,因为我们并不知道整周期数是多少,又叫他整周模糊度
但是,这个整周模糊度,我们怎么求出来?

我们在测距码定位的时候,就已经求出来了传播的时间,只不过,这个时间的精度不怎么高。
但是,就算再怎么不高,他也不可能相差一整个周期。所以,我们就采用这个测距码测量时得到的时间,逆推出整周模糊度的大小,然后就可以求出卫星到接收机的波长长度。

所以,可以认为,测距码测量的目的是确定整周的长度,而载波测量实际上是确定了不满一周的相位长度,提高了定位的精度。


导航电文测量

导航电文的测量,和前两个有着很大的不同。导航电文测量就不再用波进行测量,而是采用导航电文给出的数据进行解算。在导航电文的第二三子帧中,会给出GPS的轨道参数,而在卫星定位中,采用的卫星轨道描述方法为:开普勒轨道根数

在人工轨道理论中,用六个开普勒轨道根数来描述卫星椭圆轨道的形状,大小和在空间的指向,其包含以下六个参数:

  1.  升交点赤经
  2. 轨道倾角
  3. 长半径
  4. 偏心率
  5. 近地点角距
  6. 卫星过近地点的时刻

升交点赤经 

一般来说,卫星轨道和赤道会有两个交点,东边一个西边一个。卫星从赤道下也就是南半球,经过交点,进入赤道上北半球,这个交点叫做升交点,就像太阳升起;而另外一个叫做降交点,就像太阳落下。升交点的赤经,也就是天球下的经度,叫做升交点赤经。

轨道倾角 

在升交点处,轨道正方向(也就是卫星运动的方向)与赤道的正方向(赤经增加的方向) 的夹角。

长半径

轨道椭圆长轴的一半

偏心率

e=\frac{c}{a}=\frac{\sqrt{a^2-b^2}}{a}

近地点角距 

由地心(A),升交点(B),近地点(C)组成的角BAC就称为近地点角距 

而除了给出这几个参数以外,还会给出几个摄动参数。因为导航电文是2个小时更新一次,在两个小时之间,卫星已经运动出了一段距离。我们需要通过这些摄动参数,来模拟卫星的运动状态,从而求出卫星在任意时刻的位置,而非两个小时之前的位置。

具体的公式,可以看看具体代码实现的文章:

卫星位置解算icon-default.png?t=N7T8http://t.csdnimg.cn/iKBmL


最后,给自己叠个甲。因为自己才是导航工程大二的本科生,有些概念理解可能不到位,而又想用最容易理解的方式表达出来,所以可能正确性会稍微有些偏差。但是对初学者来说,应该不会存在太大的错误,如果可以帮到你,真的荣幸之极。还有,

这篇关于我们如何收到卫星信号?(导航电文,载波与测距码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

js+css二级导航

效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con

DDS信号的发生器(验证篇)——FPGA学习笔记8

前言:第一部分详细讲解DDS核心框图,还请读者深入阅读第一部分,以便理解DDS核心思想 三刷小梅哥视频总结! 小梅哥https://www.corecourse.com/lander 一、DDS简介         DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信

[FPGA][基础模块]跨时钟域传播脉冲信号

clk_a 周期为10ns clk_b 周期为34ns 代码: module pulse(input clk_a,input clk_b,input signal_a,output reg signal_b);reg [4:0] signal_a_widen_maker = 0;reg signal_a_widen;always @(posedge clk_a)if(signal_a)

将一维机械振动信号构造为训练集和测试集(Python)

从如下链接中下载轴承数据集。 https://www.sciencedirect.com/science/article/pii/S2352340918314124 import numpy as npimport scipy.io as sioimport matplotlib.pyplot as pltimport statistics as statsimport pandas

ArkTS开发系列之导航 (2.7动画)

上篇回顾: ArkTS开发系列之导航 (2.6 图形) 本篇内容:动画的学习使用 一、 知识储备 1. 布局更新动画 包含显式动画(animateTo)和属性动画(animation) 动画类型名称特点显式动画闭包内的变化都会触发动画执行, 可以做较复杂的动画属性动画属性变化时触发动画执行, 设置简单 说白了,显示动画就是靠闭包事件触发,属性动画是挂在组件身上的属性变化触发 显式动画

react实现导航守卫

React本身并没有像Vue那样的直接名为“导航守卫”的概念,但在React Router中,我们可以通过特定的方法和技术来模拟和实现类似的功能。以下是对React Router中模拟导航守卫的详解: 1. 导航守卫的概念 导航守卫:在路由切换之前执行的钩子函数,用于控制路由的跳转。在Vue Router中,这通常用于路由鉴权,即在路由跳转之前判断用户是否有权访问目标页面。React中的模拟:

为导航栏的li加上.selected样式

为导航栏的li加上.selected样式 HTML <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>myNav</title><link rel="stylesheet" type="text/css" href="main.css"></head><body><div class="nav-wr

我国目前常用的卫星影像星座有哪些(高分二号、高分七号、吉林一号、高景一号······)

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合+系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGIS+ENVI+Erdas+eCognition 中国目前的遥感卫星在数量、种类和应用领域上都取得了显著进展,覆盖了陆地、气象、海洋等多个工作领域,数量与质量均达到了世界先进水平。   下面我们要列出20个我们国内常用的

防止在 Qt 中触发信号

在 Qt 中工作时,有时我们需要暂时阻止某些信号的触发。以下是一个经典场景:我们有一个 QCheckBox 对象,当用户勾选或取消勾选时,需要调用一个函数,因此我们将这个函数连接到 stateChanged(int state) 信号。然而,在某些条件下,我们在代码中更改 QCheckBox 的状态,这会导致触发不需要的信号。那么如何在特定情况下防止信号触发呢? 使用 clicked 信号 如