線電生成GPS基帶信號(hào)的仿真工具詳解)
GPS-SDR-SIM這個(gè)名字在GNSS接收機(jī)研發(fā)、軟件無(wú)線電愛(ài)好者和實(shí)驗(yàn)室測(cè)試圈里出現(xiàn)的頻率相當(dāng)高。一句話概括它一個(gè)純命令行的GPS基帶信號(hào)生成器能把星歷文件、接收機(jī)位置、運(yùn)動(dòng)軌跡這些“數(shù)據(jù)”翻譯成可以被軟件無(wú)線電設(shè)備發(fā)射出去的GPS L1 C/A基帶IQ信號(hào)。配合HackRF這類SDR硬件你可以在室內(nèi)復(fù)現(xiàn)一套“看得見的衛(wèi)星環(huán)境”讓普通GPS接收機(jī)像在開闊天空下一樣完成捕獲、跟蹤和定位。這套工具對(duì)兩撥人極其有價(jià)值一是做GNSS接收機(jī)算法或者硬件驗(yàn)證的工程師不想架天線、不想等真實(shí)衛(wèi)星幾何分布變化需要在固定場(chǎng)景下反復(fù)回放同一段“衛(wèi)星信號(hào)”二是學(xué)生和無(wú)線電發(fā)燒友想理解GPS信號(hào)到底長(zhǎng)什么樣、C/A碼如何調(diào)制、導(dǎo)航電文如何組織用一套廉價(jià)SDR就能直觀看到結(jié)果。它不負(fù)責(zé)幫你解決定位問(wèn)題反而專門幫你“憑空制造”定位場(chǎng)景——這正是它作為測(cè)試工具的核心價(jià)值。1. 它到底是什么解決了什么問(wèn)題1.1 從工具名理解它做的事GPS-SDR-SIM看名字很好懂GPS SDR SIM分別對(duì)應(yīng)全球定位系統(tǒng)、軟件無(wú)線電、仿真。工具的實(shí)際作用是把GPS的“星歷數(shù)據(jù)”和“接收機(jī)位置”結(jié)合計(jì)算出每一個(gè)可見衛(wèi)星在當(dāng)前時(shí)刻應(yīng)有的偽距、多普勒頻移再按照GPS L1 C/A信號(hào)的格式生成一個(gè)二進(jìn)制IQ基帶文件。這個(gè)文件可以被SDR發(fā)射出去也可以直接在仿真鏈路里輸入給軟件接收機(jī)。為什么需要這類工具因?yàn)镚PS接收機(jī)的研發(fā)調(diào)試?yán)镎鎸?shí)場(chǎng)景是個(gè)很難伺候的變量。室外測(cè)試依賴天氣、衛(wèi)星分布、多徑反射甚至太陽(yáng)活動(dòng)同一個(gè)位置同一天不同時(shí)間的衛(wèi)星排布還不一樣復(fù)現(xiàn)問(wèn)題非常困難。GPS-SDR-SIM把這個(gè)問(wèn)題變成“文件重放”同一份星歷、同一個(gè)坐標(biāo)、同一個(gè)運(yùn)動(dòng)軌跡在任何時(shí)候都能生成一模一樣的射頻環(huán)境測(cè)試結(jié)果可重復(fù)問(wèn)題可定位。這就是它在研發(fā)流程中不可替代的原因。1.2 GPS L1 C/A信號(hào)的最小原理要理解GPS-SDR-SIM的產(chǎn)物得先知道GPS L1 C/A信號(hào)的基本成分。這個(gè)信號(hào)的中心頻率是1575.42 MHz上面疊加了三個(gè)層次。第一層是C/A碼也就是粗捕獲碼。每個(gè)衛(wèi)星有自己獨(dú)立的偽隨機(jī)序列碼長(zhǎng)1023個(gè)碼片碼率1.023 MHz也就是每1毫秒完整重復(fù)一次。這個(gè)碼的用途有兩個(gè)一是讓接收機(jī)能區(qū)分不同衛(wèi)星二是讓接收機(jī)通過(guò)自相關(guān)算出衛(wèi)星信號(hào)的傳播時(shí)延。第二層是導(dǎo)航電文速率50 bps。電文里包含星歷參數(shù)、時(shí)鐘修正參數(shù)、電離層參數(shù)等。接收機(jī)必須解出導(dǎo)航電文才能準(zhǔn)確算出衛(wèi)星的位置和時(shí)鐘偏差最終完成定位。第三層是射頻載波把前兩層用BPSK方式調(diào)制到1575.42 MHz上。GPS-SDR-SIM做的事情相當(dāng)于把這三層全部用軟件算出來(lái)最后輸出一個(gè)復(fù)基帶信號(hào)也就是I路和Q路樣本。發(fā)射端再把這個(gè)基帶信號(hào)上變頻到L1頻點(diǎn)就成了一臺(tái)可編程的GPS衛(wèi)星模擬器。1.3 這個(gè)工具擅長(zhǎng)什么、不擅長(zhǎng)什么擅長(zhǎng)的事情很明確生成靜態(tài)場(chǎng)景、動(dòng)態(tài)軌跡的GPS L1 C/A信號(hào)支持RINEX格式的廣播星歷輸出便于分析和回放的IQ文件生成速度快一個(gè)300秒、2.6 MHz采樣率的場(chǎng)景幾秒鐘就能算完。不擅長(zhǎng)的事情也要說(shuō)清楚。它只生成GPS L1 C/A信號(hào)不支持北斗、GLONASS、Galileo。它也不是一臺(tái)完整的信道模擬器沒(méi)有模擬電離層延遲、對(duì)流層延遲、多徑效應(yīng)和接收機(jī)熱噪聲的能力。如果要做高精度的多模多星座測(cè)試或需要注入信道誤差那要找專業(yè)的GNSS信號(hào)模擬器。GPS-SDR-SIM的價(jià)值恰恰在于“夠用、簡(jiǎn)單、開源”對(duì)于大部分接收機(jī)功能驗(yàn)證和教學(xué)演示已經(jīng)非常足夠了。2. 環(huán)境準(zhǔn)備、編譯與星歷文件2.1 Linux環(huán)境下的編譯GPS-SDR-SIM的源碼托管在GitHub上項(xiàng)目名叫g(shù)ps-sdr-sim。整個(gè)代碼只有一個(gè)核心C文件依賴很輕編譯過(guò)程極其簡(jiǎn)單。我通常在Ubuntu/Debian這類Linux發(fā)行版上操作先裝好構(gòu)建工具sudo apt update sudo apt install build-essential git然后拉取源碼并編譯git clone https://github.com/osqzss/gps-sdr-sim.git cd gps-sdr-sim make編譯完成后目錄下會(huì)出現(xiàn)一個(gè)可執(zhí)行文件gps-sdr-sim。如果你用的是Windows也可以用Cygwin或MSYS2環(huán)境或者直接在WSL里操作。這個(gè)工具的依賴極少本質(zhì)上就是標(biāo)準(zhǔn)C庫(kù)的調(diào)用所以跨平臺(tái)編譯非常順暢。提示如果在make時(shí)遇到時(shí)鐘相關(guān)函數(shù)報(bào)錯(cuò)多半是編譯器的默認(rèn)標(biāo)準(zhǔn)版本太舊。在Makefile或者編譯命令里加上 -stdc99 即可解決這也是這個(gè)老牌開源項(xiàng)目最常遇到的小坑。2.2 RINEX星歷從哪里來(lái)、怎么選GPS-SDR-SIM必須依賴星歷文件才能工作。它支持RINEX 2.x和3.x格式的GPS導(dǎo)航電文文件也就是以.n或.XXn結(jié)尾的文件。這類文件可以從國(guó)際GPS服務(wù)組織IGS的各個(gè)數(shù)據(jù)分發(fā)中心獲取比如CDDIS、BKG等機(jī)構(gòu)都會(huì)提供當(dāng)天最新的廣播星歷。實(shí)驗(yàn)前下載星歷有個(gè)細(xì)節(jié)要特別注意一定要下載“包含GPS衛(wèi)星的導(dǎo)航電文”而不是觀測(cè)文件。常見的文件名有兩種一種是以brdc開頭的BRDC廣播星歷另一種是精密度較高的精密星歷SP3。GPS-SDR-SIM目前主要解析BRDC格式因?yàn)樗鼉?nèi)部模擬的是廣播星歷的軌道計(jì)算邏輯直接給普通接收機(jī)使用也最自然。發(fā)布時(shí)間也很講究。GPS星歷有有效期超過(guò)4小時(shí)未更新的廣播星歷軌道誤差會(huì)逐漸變大如果用了過(guò)期的星歷文件生成出來(lái)的信號(hào)雖然能解調(diào)但接收機(jī)算出來(lái)的位置可能出現(xiàn)幾十米甚至更大的偏差。所以我做測(cè)試時(shí)都習(xí)慣先確認(rèn)電腦系統(tǒng)時(shí)間大約是當(dāng)天然后去下載當(dāng)天的brdc文件。這個(gè)“時(shí)間一致性”非常關(guān)鍵后面我會(huì)再詳細(xì)展開。2.3 第一次運(yùn)行最小驗(yàn)證拿到星歷文件后可以先跑一個(gè)最短的驗(yàn)證命令確認(rèn)工具鏈沒(méi)問(wèn)題。下面這行命令生成了120秒、2.6 MHz采樣率、位置在上海某一點(diǎn)緯度31.2304經(jīng)度121.4737高度10米的GPS基帶信號(hào)./gps-sdr-sim -e brdc0370.18n -l 31.2304,121.4737,10 -d 120 -s 2600000執(zhí)行完成后當(dāng)前目錄會(huì)生成一個(gè)gpssim.bin文件。這個(gè)文件就是I/Q基帶數(shù)據(jù)。用ls -lh看一下大小120秒的數(shù)據(jù)大約有624 MB。這個(gè)體積會(huì)讓很多第一次接觸的人嚇一跳后面我會(huì)說(shuō)明為什么這么大。看到文件生成了說(shuō)明工具本身沒(méi)問(wèn)題接下來(lái)才是真正決定信號(hào)質(zhì)量的各種參數(shù)。3. 實(shí)戰(zhàn)生成靜態(tài)與動(dòng)態(tài)GPS信號(hào)3.1 靜態(tài)場(chǎng)景的參數(shù)選擇與命令拆解靜態(tài)場(chǎng)景是最常見的使用方式適合測(cè)試接收機(jī)在固定位置的捕獲與定位能力。完整的命令長(zhǎng)這樣./gps-sdr-sim -e brdc0370.18n \ -l 31.2304,121.4737,10 \ -d 300 \ -s 2600000 \ -o shanghai_test.bin逐個(gè)參數(shù)說(shuō)明。e參數(shù)指定RINEX導(dǎo)航文件這是必選項(xiàng)。l參數(shù)是緯度和經(jīng)度以及海拔高度注意順序是“緯度,經(jīng)度,高度”高度單位是米。我經(jīng)常看到有人把經(jīng)緯度搞反生成之后接收機(jī)定位到完全錯(cuò)誤的區(qū)域這個(gè)順序真要記牢。d參數(shù)是仿真時(shí)長(zhǎng)單位秒。不是越長(zhǎng)越好因?yàn)槲募w積會(huì)線性增長(zhǎng)。如果你只是驗(yàn)證捕獲和定位60到300秒就足夠了如果要跑長(zhǎng)時(shí)間連續(xù)定位穩(wěn)定性測(cè)試再考慮500秒以上同時(shí)準(zhǔn)備好足夠的磁盤空間。s參數(shù)是采樣率單位Hz。這里有個(gè)關(guān)鍵經(jīng)驗(yàn)GPS C/A碼的碼率是1.023 MHz理論上采樣率高于2.046 MHz就能滿足奈奎斯特采樣定理。但實(shí)際使用中大家往往用2.4 MHz、2.6 MHz甚至更高。我在項(xiàng)目里最常用的是2.6 MHz因?yàn)樗谛阅芎图嫒菪灾g比較平衡很多SDR硬件對(duì)這個(gè)采樣率也友好。o參數(shù)是輸出文件名如果不指定就默認(rèn)叫g(shù)pssim.bin。建議每次實(shí)驗(yàn)都單獨(dú)命名避免后面混淆不同的測(cè)試場(chǎng)景。3.2 動(dòng)態(tài)場(chǎng)景NMEA軌跡的準(zhǔn)備動(dòng)態(tài)場(chǎng)景適合模擬車載、步行、無(wú)人機(jī)飛行等運(yùn)動(dòng)過(guò)程。這時(shí)候不是用l參數(shù)指定固定坐標(biāo)而是通過(guò)x參數(shù)傳入一個(gè)NMEA格式的軌跡文件./gps-sdr-sim -e brdc0370.18n -x track.nmea -d 600 -s 2600000NMEA軌跡文件里GPS-SDR-SIM主要讀取GPRMC語(yǔ)句。GPRMC語(yǔ)句本身包含了經(jīng)緯度、地面速度、航向角和UTC時(shí)間足夠工具推算出每個(gè)時(shí)刻接收機(jī)的位置與運(yùn)動(dòng)速度。如果你手頭沒(méi)有現(xiàn)成的NMEA軌跡可以自己寫一個(gè)簡(jiǎn)單的。GPRMC語(yǔ)句的基本格式如下$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50這條語(yǔ)句的意思是UTC時(shí)間02點(diǎn)48分13秒640毫秒狀態(tài)A有效定位北緯31度58.4608分東經(jīng)118度48.3737分地速10.05節(jié)航向324.27度。GPS-SDR-SIM會(huì)按時(shí)戳插值計(jì)算每時(shí)每刻的接收機(jī)位置。軌跡文件里的時(shí)間戳越密集運(yùn)動(dòng)模擬越平滑如果相鄰兩個(gè)點(diǎn)間隔太遠(yuǎn)生成出來(lái)的運(yùn)動(dòng)軌跡會(huì)出現(xiàn)臺(tái)階效應(yīng)。另外一個(gè)容易忽略的點(diǎn)動(dòng)態(tài)仿真的時(shí)長(zhǎng)不完全由d參數(shù)決定工具會(huì)按軌跡文件的起止時(shí)間來(lái)計(jì)算。d參數(shù)更像是一個(gè)兜底限制。所以我一般把軌跡的時(shí)間范圍先算清楚避免生成一大堆無(wú)用數(shù)據(jù)。3.3 生成結(jié)果的I/Q格式與文件體積計(jì)算gpssim.bin這個(gè)文件保存的是交織的I路和Q路樣本。默認(rèn)每個(gè)樣本用8位有符號(hào)整數(shù)表示也就是1字節(jié)I 1字節(jié)Q總共2字節(jié)一個(gè)復(fù)數(shù)樣本。文件大小可以用這個(gè)公式估算文件大小字節(jié) 采樣率 × 2 × 持續(xù)時(shí)間以2.6 MHz采樣率、300秒為例2,600,000 × 2 × 300 1,560,000,000 字節(jié)約 1.45 GiB這就是為什么說(shuō)數(shù)據(jù)體積很大。如果你的硬盤空間有限可以通過(guò)降低采樣率來(lái)縮小文件比如降到2.4 MHz或者縮短仿真時(shí)長(zhǎng)。要注意的是一些接收機(jī)軟件和SDR發(fā)射工具對(duì)采樣率有最低要求2.4 MHz通常還能正常工作低于2 MHz就捉襟見肘了。8位量化看起來(lái)精度不高但對(duì)于GPS信號(hào)來(lái)說(shuō)完全夠用。真實(shí)場(chǎng)景中接收機(jī)射頻前端的ADC通常也就用2到4位量化因?yàn)镚PS信號(hào)本身是碼分多址擴(kuò)頻信號(hào)捕獲過(guò)程憑借的是相關(guān)累加增益不是瞬時(shí)幅度的精細(xì)表達(dá)。8位量化的動(dòng)態(tài)范圍已經(jīng)非常富余甚至可以容納一部分帶外干擾。3.4 采樣率、量化位數(shù)與信號(hào)質(zhì)量的權(quán)衡既然采樣率和量化位數(shù)直接決定文件大小那是不是越小越好不是。采樣率太低會(huì)犧牲信號(hào)的時(shí)域分辨率接收機(jī)在搜索碼相位時(shí)精度下降捕獲靈敏度也會(huì)受影響。采樣率太高文件體積和發(fā)射設(shè)備的壓力增大但實(shí)際收益很小。我做過(guò)多次對(duì)比2.4 MHz與5.2 MHz采樣率對(duì)普通GPS接收機(jī)的定位結(jié)果幾乎沒(méi)有可感知的差異但文件大小差了一倍還多。量化位數(shù)同理。GPS-SDR-SIM也支持16位IQ輸出但這主要是為了適配某些專業(yè)儀器的數(shù)據(jù)格式普通SDR發(fā)射場(chǎng)景用8位就足夠了。如果你準(zhǔn)備把生成的IQ文件拿到MATLAB或Python里做算法分析8位數(shù)據(jù)也完全夠用沒(méi)必要浪費(fèi)磁盤。4. 用HackRF把基帶信號(hào)發(fā)射出去4.1 一段命令讓文件變成射頻信號(hào)生成的gpssim.bin還是個(gè)基帶文件要讓真正的GPS接收機(jī)收到信號(hào)需要把它經(jīng)SDR設(shè)備上變頻后發(fā)射到L1頻點(diǎn)。我用得最多的發(fā)射設(shè)備是HackRF One原因是它覆蓋頻率范圍廣、發(fā)射帶寬足夠、價(jià)格在SDR里也比較適中。發(fā)射命令非常簡(jiǎn)潔hackrf_transfer -t shanghai_test.bin \ -f 1575420000 \ -s 2600000 \ -a 1 \ -x 20解釋一下各參數(shù)。t參數(shù)指定我們要發(fā)送的文件。f參數(shù)是中心頻率這里必須設(shè)成1575.42 MHz也就是GPS L1頻點(diǎn)。s參數(shù)是采樣率必須和生成文件時(shí)的采樣率完全一致否則頻譜位置會(huì)錯(cuò)亂。a參數(shù)是HackRF的板載天線端口選擇1代表使用TX/RX端口0代表使用天線端口發(fā)射時(shí)一定記得選1。x參數(shù)是增益單位是dB我通常從20開始再根據(jù)實(shí)際接收效果調(diào)整。這個(gè)場(chǎng)景里HackRF就相當(dāng)于一個(gè)簡(jiǎn)單的射頻前端把軟件算出來(lái)的基帶信號(hào)完整搬運(yùn)到了1575.42 MHz。由于整個(gè)鏈路是線性的接收端看到的信號(hào)結(jié)構(gòu)不會(huì)因?yàn)榘l(fā)射環(huán)節(jié)而改變。4.2 發(fā)射功率、衰減與室內(nèi)測(cè)試環(huán)境GPS信號(hào)的真實(shí)功率極其微弱到達(dá)地面時(shí)大約只有-130 dBm甚至更低相當(dāng)于一個(gè)極安靜環(huán)境中的低聲耳語(yǔ)。但實(shí)驗(yàn)室內(nèi)發(fā)射時(shí)我們不一定要把功率壓到這么低因?yàn)榻邮諜C(jī)的噪聲系數(shù)、天線的位置損耗、墻面的多徑反射都會(huì)吃掉信號(hào)。實(shí)際測(cè)試時(shí)我建議這樣操作先把HackRF的發(fā)射功率設(shè)得很低x參數(shù)從0開始然后逐步增加直到接收機(jī)能穩(wěn)定捕獲衛(wèi)星。這樣做有幾個(gè)好處一是減小信號(hào)對(duì)周圍設(shè)備的無(wú)意義輻射二是避免接收機(jī)前端飽和。GPS接收機(jī)前端通常帶有自動(dòng)增益控制如果輸入信號(hào)太強(qiáng)反而可能導(dǎo)致動(dòng)態(tài)范圍壓縮、捕獲失敗。另外一個(gè)重要經(jīng)驗(yàn)是天線隔離。發(fā)射天線和接收天線之間的距離不要太遠(yuǎn)一般幾十厘米到一兩米足夠也不需要太近特別不要貼在一起避免接收機(jī)前端飽和。如果條件允許最好用一個(gè)小型射頻暗箱或者屏蔽盒把發(fā)射和接收天線放在里面這樣能顯著降低室內(nèi)多徑反射對(duì)測(cè)試結(jié)果的干擾。4.3 從HackRF擴(kuò)展到LimeSDR等其他SDR如果你手里不是HackRF而是LimeSDR、bladeRF或者USRP也可以沿用同樣的思路。關(guān)鍵在于兩點(diǎn)第一SDR發(fā)射設(shè)備必須能工作在1575.42 MHz頻點(diǎn)并且采樣率能匹配生成文件的設(shè)置第二發(fā)射時(shí)要選擇正確的I/Q文件格式。LimeSDR有配套的limesdr_send工具可以把標(biāo)準(zhǔn)I/Q文件流式發(fā)送到射頻口。bladeRF自帶bladeRF-cli也支持從文件讀取樣本并發(fā)射。USRP用戶則可以用UHD自帶的tx_samples_from_file工具。這些工具的共同點(diǎn)是入?yún)⑽募家蠼豢椀腎/Q數(shù)據(jù)且位數(shù)要和射頻前端配置一致。如果你需要在不同SDR設(shè)備之間做橫向?qū)Ρ冉ㄗh把GPS-SDR-SIM的輸出文件保留好。同一份文件換不同SDR發(fā)射接收端定位結(jié)果幾乎相同如果發(fā)現(xiàn)某個(gè)設(shè)備定位效果特別差問(wèn)題出在射頻前端性能或者天線匹配上而不是GPS-SDR-SIM生成的數(shù)據(jù)。5. 搭建一套完整的接收驗(yàn)證鏈路5.1 接收端典型連接與天線布局一套完整的GPS-SDR-SIM測(cè)試鏈路其實(shí)非常簡(jiǎn)單電腦運(yùn)行GPS-SDR-SIM生成并發(fā)射SDR發(fā)射天線通過(guò)饋線接到一個(gè)可調(diào)衰減器再接到接收天線上接收天線連到被測(cè)GPS接收機(jī)。如果接收機(jī)帶屏幕定位結(jié)果直接可見如果是模塊就通過(guò)串口讀取NMEA語(yǔ)句。天線布局上我的經(jīng)驗(yàn)是發(fā)射和接收天線盡量保持同極化。GPS信號(hào)是右旋圓極化消費(fèi)級(jí)GPS天線大多數(shù)也是RHCP。如果你手上只有普通的鞭狀天線或者偶極子天線也能測(cè)試但極化失配會(huì)帶來(lái)幾dB的損耗需要適當(dāng)提高發(fā)射增益作為補(bǔ)償。室內(nèi)環(huán)境最大的干擾源是人體和金屬物體。人站在天線附近走動(dòng)會(huì)讓接收信號(hào)強(qiáng)度上下波動(dòng)這在測(cè)試中會(huì)表現(xiàn)為定位結(jié)果的噪聲變大。測(cè)試時(shí)盡量固定人員位置或者干脆人離遠(yuǎn)一點(diǎn)用軟件自動(dòng)記錄數(shù)據(jù)。5.2 用u-center和手機(jī)觀察定位結(jié)果u-blox的u-center軟件是我做GPS接收機(jī)測(cè)試時(shí)最常用的工具。把u-blox接收模塊通過(guò)USB接到電腦打開u-center選擇對(duì)應(yīng)串口就能看到接收機(jī)跟蹤到的衛(wèi)星列表、每顆衛(wèi)星的載噪比C/N0、定位坐標(biāo)和定位狀態(tài)。第一次連上時(shí)接收機(jī)通常處于冷啟動(dòng)狀態(tài)。因?yàn)镚PS-SDR-SIM仿真的是真實(shí)GPS星座接收機(jī)需要重新搜索和捕獲這個(gè)過(guò)程可能持續(xù)30秒到幾分鐘不等??吹絊Vs數(shù)量從0逐步變成4、6、8以上而且C/N0值穩(wěn)定在40 dBHz左右就說(shuō)明捕獲成功了。如果你想更直觀地驗(yàn)證“信號(hào)真的是GPS”可以用一部支持GPS測(cè)試模式或能看到衛(wèi)星分布的手機(jī)。不過(guò)手機(jī)系統(tǒng)對(duì)GPS信號(hào)源的使用策略比較復(fù)雜有些手機(jī)會(huì)優(yōu)先使用北斗或GLONASS不一定馬上鎖定L1 C/A。所以我一般先用u-center確認(rèn)鏈路沒(méi)問(wèn)題再用手機(jī)做演示。5.3 時(shí)間、星歷一致性等隱蔽的坑GPS-SDR-SIM仿真過(guò)程中有個(gè)特別隱蔽的問(wèn)題系統(tǒng)時(shí)間。接收機(jī)在定位時(shí)必須同時(shí)解算衛(wèi)星位置和接收機(jī)鐘差而衛(wèi)星位置是從星歷和當(dāng)前時(shí)間推算的。如果你生成文件時(shí)電腦系統(tǒng)時(shí)間離星歷的有效時(shí)間相差太遠(yuǎn)接收機(jī)即便捕獲了衛(wèi)星也無(wú)法算出合理位置或者定位誤差巨大。舉個(gè)例子你下載了一個(gè)2020年的星歷文件但電腦時(shí)間停留在2025年。工具會(huì)按照2025年的時(shí)間去推算衛(wèi)星位置可星歷早就過(guò)期了算出來(lái)的衛(wèi)星位置完全錯(cuò)誤接收機(jī)自然就不可能定位成功。解決辦法很簡(jiǎn)單生成信號(hào)前先date看一下系統(tǒng)時(shí)間下載當(dāng)前時(shí)刻有效的brdc文件。如果你確實(shí)想復(fù)現(xiàn)某個(gè)歷史場(chǎng)景那就要把接收機(jī)的“當(dāng)前時(shí)間”概念也一起“穿越”回去這在實(shí)際操作中幾乎做不到所以多數(shù)人只會(huì)做“當(dāng)前時(shí)間”的仿真。另一個(gè)隱蔽的坑是接收機(jī)的星歷老化。接收機(jī)一旦成功定位過(guò)一次會(huì)保存當(dāng)前星歷。如果你切換到另一個(gè)完全不同的仿真場(chǎng)景位置變了、時(shí)間變了接收機(jī)還拿舊星歷去算就可能出現(xiàn)長(zhǎng)時(shí)間無(wú)法定位。這時(shí)最簡(jiǎn)單的方法是對(duì)接收機(jī)做冷啟動(dòng)清掉歷史星歷讓它重新從頭捕獲。6. 常見問(wèn)題與排查經(jīng)驗(yàn)6.1 速查表問(wèn)題、原因、解決路徑我把實(shí)際操作中遇到的高頻問(wèn)題整理成一個(gè)速查表方便你排障時(shí)對(duì)照?,F(xiàn)象最可能原因解決路徑提示星歷文件解析失敗文件不是RINEX導(dǎo)航格式或文件路徑不對(duì)確認(rèn)以.n或.XXn結(jié)尾用head命令看文件內(nèi)容是否為RINEX頭生成的文件只有幾MB就結(jié)束星歷文件里可見衛(wèi)星數(shù)太少下載當(dāng)天BRDC文件確認(rèn)其中GPS衛(wèi)星數(shù)量大于0接收機(jī)完全收不到衛(wèi)星發(fā)射頻率不對(duì)或采樣率與基帶文件不匹配檢查HackRF的f是否等于1575.42 MHzs是否等于生成時(shí)的采樣率捕獲到衛(wèi)星但C/N0很低天線極化不匹配或發(fā)射增益過(guò)低提高x參數(shù)調(diào)整天線方向減少天線間距定位坐標(biāo)明顯錯(cuò)誤經(jīng)緯度參數(shù)反了檢查l參數(shù)的順序是“緯度,經(jīng)度,高度”接收機(jī)長(zhǎng)時(shí)間無(wú)法定位系統(tǒng)時(shí)間與星歷有效期不一致下載當(dāng)前日期的brdc文件對(duì)接收機(jī)執(zhí)行冷啟動(dòng)接收機(jī)定位誤差非常大星歷文件過(guò)于陳舊換用當(dāng)天新星歷重新生成信號(hào)HackRF發(fā)射過(guò)程中卡頓磁盤讀取速度跟不上采樣率把文件放到SSD上或降低發(fā)射采樣率6.2 三條最重要的排障經(jīng)驗(yàn)第一個(gè)經(jīng)驗(yàn)是“小步快跑”。不管最終要生成多長(zhǎng)的信號(hào)第一次測(cè)試務(wù)必先生成10到20秒的小文件先確認(rèn)接收機(jī)能夠捕獲定位再放大時(shí)長(zhǎng)。否則你辛辛苦苦生成了2 GB文件結(jié)果發(fā)現(xiàn)頻率參數(shù)錯(cuò)了還得重新來(lái)過(guò)浪費(fèi)時(shí)間也浪費(fèi)硬盤。第二個(gè)經(jīng)驗(yàn)是“先軟件后硬件”。判斷問(wèn)題出在生成端還是發(fā)射端有一個(gè)很有效的手段把GPS-SDR-SIM生成的文件直接用軟件接收機(jī)解析比如用GNSS-SDR或者其他開源軟件接收機(jī)。如果軟件接收機(jī)可以定位說(shuō)明基帶文件沒(méi)毛病問(wèn)題在SDR發(fā)射鏈路如果軟件接收機(jī)也定位不了那就要回頭檢查星歷和參數(shù)設(shè)置。這個(gè)分流方式幾乎能定位90%以上的問(wèn)題。第三個(gè)經(jīng)驗(yàn)是“發(fā)射前看一眼頻譜”。用SDR接收機(jī)在L1頻段做一次頻譜掃描確認(rèn)在1575.42 MHz附近有一個(gè)寬約2 MHz的凸起信號(hào)。這個(gè)信號(hào)特征和真實(shí)GPS信號(hào)非常像只是強(qiáng)度高很多。如果頻譜上什么都看不到說(shuō)明發(fā)射鏈路有問(wèn)題也不要再浪費(fèi)時(shí)間等接收機(jī)捕獲了。7. 必須說(shuō)清的使用邊界與合規(guī)提醒GPS-SDR-SIM是一個(gè)測(cè)試和研發(fā)工具這一點(diǎn)無(wú)論怎么強(qiáng)調(diào)都不為過(guò)。它的設(shè)計(jì)目的是為GNSS接收機(jī)開發(fā)、算法驗(yàn)證、教學(xué)演示提供一個(gè)可重復(fù)、可控的信號(hào)源。我在前面介紹的所有操作都是在實(shí)驗(yàn)室或受控測(cè)試環(huán)境下進(jìn)行的。不要在公共環(huán)境中用這個(gè)工具隨意發(fā)射GPS頻段信號(hào)更不要用來(lái)干擾他人的定位設(shè)備。GPS L1頻段是受保護(hù)的無(wú)線電導(dǎo)航頻率任何有意干擾都可能影響航空、航海、交通等關(guān)鍵基礎(chǔ)設(shè)施的安全運(yùn)行。在正式使用前請(qǐng)確認(rèn)你所在地區(qū)關(guān)于射頻發(fā)射的法律法規(guī)確保測(cè)試活動(dòng)發(fā)生在合法的測(cè)試頻段、有授權(quán)的實(shí)驗(yàn)環(huán)境或屏蔽良好的實(shí)驗(yàn)室里。做一個(gè)負(fù)責(zé)任的工程師意味著我們既要會(huì)用工具也要知道工具應(yīng)該在什么場(chǎng)景下使用。GPS-SDR-SIM是理解GPS信號(hào)機(jī)制和研究接收機(jī)行為的絕佳幫手但前提是“面向測(cè)試、面向研究、面向教育”。守住這個(gè)邊界這套工具才能發(fā)揮它應(yīng)有的價(jià)值。我在實(shí)際項(xiàng)目里最常用的流程其實(shí)非常簡(jiǎn)單當(dāng)天早上先下載brdc星歷確認(rèn)系統(tǒng)時(shí)間然后設(shè)計(jì)一個(gè)60秒的靜態(tài)場(chǎng)景和小段動(dòng)態(tài)軌跡生成文件后先在軟件接收機(jī)里跑一遍驗(yàn)證再交給SDR硬件做射頻測(cè)試。這個(gè)習(xí)慣幫我避開了很多無(wú)謂的故障也讓整個(gè)測(cè)試鏈路保持在可控、可復(fù)現(xiàn)的狀態(tài)。如果你剛開始接觸這個(gè)工具建議也照著這個(gè)思路走一遍等把“生成-驗(yàn)證-發(fā)射-接收”整條鏈路摸透了再按自己的需求擴(kuò)展場(chǎng)景。