我們如何收到衛星信號?(導航電文,載波與測距碼)

衛星信號

在介紹所有衛星信號之前,首先要明確一些概念:

所有的衛星信號,都是一段電磁波,用戶接收的,也是一段電磁波。

但是我們認知中的電磁波,就是一段波,就像我們打出去的交一樣,怎么通過這一段波來轉換成有用的數據呢?

首先,衛星發射信號的是計算機,接收機也是計算機,衛星發出信號,我們接收信號,接收的都是一段二進制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.pswp.cn/bicheng/22079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22079.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22079.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【UML用戶指南】-03-UML的14種圖

目錄 1、結構圖 1、類圖(class diagram) 2、對象圖(object diagram) 3、構件圖 (component diagram) 4、組合結構圖 5、包圖(package diagram) 6、部署圖(deploym…

Android輸入法IME(二)

2. IME初始化啟動流程 2.1. IME客戶端(IMM)初始化流程 涉及代碼文件路徑: frameworks/base/core/java/android/view/ViewRootImpl.java frameworks/base/core/java/android/view/WindowManagerGlobal.java frameworks/base/core/java/andro…

【kubernetes】k8s的面試寶典,等你來拿哦

目錄 一、pod的生命周期 二、創建 pod 的工作流程 三、ingres 有哪些組件并且描述出組件作用 ? 四、ingress 的工作原理 五、ingress 暴露服務的方式 六、pod 的組成 七、pod的本身性質(pod的種類與說明) 八、k8s命令 8.1在k8s中如何…

零基礎入門學習Python第二階04SQL詳解03

MySQL 新特性 JSON類型 很多開發者在使用關系型數據庫做數據持久化的時候,常常感到結構化的存儲缺乏靈活性,因為必須事先設計好所有的列以及對應的數據類型。在業務發展和變化的過程中,如果需要修改表結構,這絕對是比較麻煩和難…

AppStore搜索優化方法(ASO)

在競爭激烈的 App Store 中,如何讓你的應用脫穎而出,吸引更多用戶下載?其實從官方文檔描述中可以總結一些優化技巧,這是官方描述地址:搜索優化 – App Store – Apple Developer。通過官方描述我們可以總結到影響搜索結…

commander.js 入門指南:構建強大的命令行界面 (全網最全教程)

在Node.js的世界里,創建用戶友好的命令行界面(CLI)對于許多應用程序和工具來說至關重要。Commander.js 是一個廣受歡迎的 Node.js 包,它為開發者提供了一套簡潔而強大的 API,用于快速創建功能完備、用戶友好的命令行界…

如何用TCC方案輕松實現分布式事務一致性

本文作者:小米,一個熱愛技術分享的29歲程序員。如果你喜歡我的文章,歡迎關注我的微信公眾號“軟件求生”,獲取更多技術干貨! 哈嘍,大家好!我是小米,一個熱愛技術的活力小青年,今天要和大家分享的是一種在分布式系統中實現事務的一種經典方案——TCC(Try Confirm Canc…

【Ubuntu】超詳細安裝Ubuntu系統

鑒于有些小伙伴在安裝Ubuntu系統的時候遇到很多問題,因此打算編寫一篇記錄一下安裝Ubuntu系統的整個過程~互相學習! 一、制作U盤啟動 準備一個大于8G以上的U盤,這里我使用的是16G的U盤下載UltraISO工具 網站地址:UltraISO準備Ub…

C++ Primer 第五版 第15章 面向對象程序設計

面向對象程序設計基于三個基本概念:數據抽象、繼承和動態綁定。 繼承和動態綁定對編寫程序有兩方面的影響:一是我們可以更容易地定義與其他類相似但不完全相同的新類;二是在使用這些彼此相似的類編寫程序時,我們可以在一定程度上…

HTML靜態網頁成品作業(HTML+CSS)—— 金寶貝兒童教育機構介紹網頁(2個頁面)

🎉不定期分享源碼,關注不丟失哦 文章目錄 一、作品介紹二、作品演示三、代碼目錄四、網站代碼HTML部分代碼 五、源碼獲取 一、作品介紹 🏷?本套采用HTMLCSS,未使用Javacsript代碼,共有2個頁面。 二、作品演示 三、代…

Stable diffusion prompts 使用語法、參數講解、插件安裝教程

Stable diffusion prompts 使用語法、參數講解、插件安裝教程 本文基于 Stable diffusion WebUI 進行講解(安裝在 AutoDL 上,安裝在本地電腦上的也同樣適用本教程)。 初始界面: 文件目錄結構: 上圖紅框中的 4 個文件…

requests模塊編寫漏洞檢測工具

#嘗試使用python登錄pikachu爆破模塊 #發送post數據包,包含用戶名密碼,對接受到的響應進行判斷,如何為登錄成功 #爆破密碼 with open(passwor.txt,r) as f: passwordf.readlines() for i in password: data {username: admin, password: i, …

數據結構——算法和算法效率的度量

目錄 一、引言 二、算法 1 算法的基本概念 2 算法的復雜度 2.1 時間復雜度 2.1.1 概念 2.1.2 大O的漸進表示 3 算法的空間復雜度 3.1 概念 3.2 實例 4 實例分析 5 結論 一、引言 大家在寫代碼的時候有沒有發現寫同樣功能的代碼有多種不同的寫法,而不同的代…

51種企業應用架構模式詳解

01 什么是企業應用 我的職業生涯專注于企業應用,因此,這里所談及的模式也都是關于企業應用的。(企業應用還有一些其他的說法,如“信息系統”或更早期的“數據處理”。)那么,這里的“企業應用”具體指的是什…

[原型資源分享]經典產品餓了么UI模版部件庫

?部件庫預覽鏈接:https://f13gm0.axshare.com 支持版本: Axrure RP 8 文件大小: 3MB 文檔內容介紹 基本部件:表單樣式:12款、數據樣式:10款、服務樣式:6款、導航:5款、業務組件:7款、 模板…

python把簡體中文轉換為繁體中文

Python 可以使用第三方庫來將簡體中文(簡體中文)轉換為繁體中文(繁體中文)。一個常用的庫是 opencc-python-reimplemented,它是 Open Chinese Convert (OpenCC) 的 Python 實現,OpenCC 是一個開源的中文簡繁…

MySQL之查詢性能優化(三)

查詢性能優化 重構查詢的方式 在優化有問題的查詢時,目標應該是找到一個更優的方法獲得實際需要的記過——而不是一定總是需要從MySQL獲取一模一樣的結果集。有時候,可以將查詢轉換一種寫法讓其返回一樣的結果,但是性能更好。但也可以通過修…

Python魔法之旅-魔法方法(14)

目錄 一、概述 1、定義 2、作用 二、應用場景 1、構造和析構 2、操作符重載 3、字符串和表示 4、容器管理 5、可調用對象 6、上下文管理 7、屬性訪問和描述符 8、迭代器和生成器 9、數值類型 10、復制和序列化 11、自定義元類行為 12、自定義類行為 13、類型檢…

在Debian系統上賦予普通用戶ping 權限

在Debian系統上,普通用戶默認情況下沒有權限使用 ping 命令,因為它需要發送 ICMP 包,這通常需要 root 權限。為了允許普通用戶使用 ping,可以設置 ping 命令的 setuid 位。以下是具體的步驟: 查找 ping 命令的位置&am…

2024年度自貢市社會民生重大科技計劃項目申報要求、時間流程

一、申報要求 申報項目需符合以下申報要求和申報指南要求,申報資料需在“自貢市科技綜合業務服務平臺”中的“自貢市重點科技計劃項目管理系統”上傳。 (一)項目申報單位要求。 1.項目申報單位包括項目牽頭單位和項目合作單位。 2.多家單…