想要快速掌握LuatOS GNSS定位調試?本文將以手把手的方式,帶領您一步步完成調試流程。無論您是初學者還是有一定經驗的開發者,這份實用操作指南都能幫助您有效提升調試效率,確保定位功能穩定可靠。
一、GPS 工作原理簡介
1.1 GPS 技術的發展歷程
全球定位系統(GPS)起初由美國國防部開發,用于提供精確的定位和導航信息。隨著時間推移,它從軍事應用擴展到商業和民間領域,實現了全天候、全球范圍內的精確地理位置服務。
1.2 GPS 系統組成
GPS 系統主要由三個部分構成:太空中的衛星群、地面控制站和接收器。衛星負責發送信號,地面控制站監測衛星運行狀態并進行數據修正,而接收器則用于接收信號并計算位置信息。
1.3 信號接收與定位計算
GPS 接收器通過與至少四顆衛星的信號進行交差定位,借助衛星軌道數據、時間戳和用戶位置等信息,使用三角測量法計算出接收器的精確位置、速度和時間。
二、不同地球坐標系的區別
WGS-84:是國際標準,GPS 坐標(Google Earth 使用、或者 GPS 模塊)
GCJ-02:中國坐標偏移標準,Google Map、高德、騰訊使用
BD-09:百度坐標偏移標準,Baidu Map 使用
具體解釋:
WGS-84 坐標系 即地球坐標系,國際上通用的坐標系。 設備一般包含 GPS 芯片或者北斗芯片獲取的經緯度為 WGS-84 地理坐標系。谷歌地圖采用的是 WGS-84 地理坐標系(中國范圍除外,谷歌中國地圖采用的是 GCJ-02 地理坐標系)。
GCJ-02 坐標系 即火星坐標系,WGS-84 坐標系經加密后的坐標系。 出于國家安全考慮,國內所有導航電子地圖必須使用國家測繪局制定的加密坐標系統,即將一個真實的經緯度坐標加密成一個不正確的經緯度坐標。
BD-09 坐標系 即百度坐標系,GCJ-02 坐標系經加密后的坐標系。搜狗坐標系、圖吧坐標系等,估計也是在 GCJ-02 基礎上加密而成的。
Air8000 使用國際標準WGS-84坐標系,所以開發者在國內常見地圖定位時,會發現與實際情況有幾十米的誤差。這并非模塊問題, 而是國內地圖采用了非標坐標系所致。 國內常見地圖如高德地圖使用GCJ-02坐標系, 百度地圖使用BD-09坐標系,故此開發者需要對模塊輸出的經緯度進行加偏處理,才能在國內的地圖上實現精確定位。
坐標系糾偏的話參考:http://www.openluat.com/GPS-Offset.html

三、GNSS 報文格式
Air8000 的 GNSS 輸出數據報文符合 NMEA-0183 標準格式。
NMEA(National Marine Electronics Association)是美國國家海洋電子協會制定的標準通信協議,旨在解決航海電子設備間的數據互通問題。其核心價值在于通過統一接口規范,實現不同廠商設備(如 GPS、雷達、聲吶)的兼容性,提升系統集成效率。
3.1 通用 NMEA 語句類型

3.2 NMEA 語句格式
NMEA 語句格式:
" $ ”為語句起始標志;
“ , "為域分隔符;
“ * ”為校驗和標識符,其后面的兩位數為校驗和,校驗和等于$和*之間所有字符的按位異或。
NMEA-0183 協議采用 ASCII 碼來傳遞 GPS 定位信息,我們稱之為幀。
幀格式形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF)
1、“$”:幀命令起始位
2、aaccc:地址域,前兩位為識別符(aa),后三位為語句名(ccc)
3、ddd…ddd:數據
4、“*”:校驗和前綴(也可以作為語句數據結束的標志)
5、hh:校驗和(check sum),$ 與*之間所有字符 ASCII 碼的校驗和(各字節做異或運算,得到校驗和后,再轉換 16 進制格式的 ASCII 字符)
6、(CR)(LF):幀結束,回車和換行符
核心語句和字段解析可參考下方擴展知識。
四、Air8000 無法定位情況分析
在使用模組的過程中總會有很多客戶遇到無法定位的情況,現在此總結下一般遇到無法定位的情況。
4.1 在室內做 GNSS 定位
為什么開發板不能在室內使用 gps 定位?
為什么手機可以定位,模塊無法定位呢?
這究竟是為什么呢?
很多開發者在測試 GPS 的時候,總是發覺無法定位,甚至無法搜星。經過技術支持的解答才明白,只有戒掉懶癌,去室外測試,才能有良好的效果。究其原因,還是 GPS 的原理所致。
以最簡單的幾何來說,兩點確定一條線,三個點確定一個面;那么逆推一下,就是三個點確定一個位置(基站定位的原理);四個點確定精確位置(含高程):

導航衛星不斷地向地球發射導航電文(衛星的速度、角速度、空間相對位置等信息)
GPS 芯片收到不同衛星的數據后,進行解算,就能得到當前接收器在地球的絕對位置了。根據三點定位的原理,同時使用 3 顆衛星,可以實現 2D FIX(不含高程);只有同時使用 4 顆或以上的衛星,才能實現 3D FIX(含高程)。
不過凡事都有例外,如果開發者在飄窗進行測試,會搜到衛星,甚至超過 4 顆,但是仍然無法定位。這是為什么呢?這是因為 GPS 天線的“可視角”有限,而這片星域的衛星角度相距太近,間隔太小,無法精確解算,故此無法實現定位。
GPS 衛星運行在距地 36000KM 的軌道上,信號強度相當弱(GPS 衛星的功率有多大?)。GPS 的民用 C/A 碼從衛星發出來的時候信號只有 27W 左右,達到地球的時候在-158.5dBW 以上。用對數形式表示可能不直觀,換算成十進制等于將近 0.0000000000000001W,相當小。所以,只有室外開闊的、無遮擋、晴好的地方,才能搜到更多的衛星,SNR 值更高(陰天都會有影響哦),GPS 芯片才能更快、更好的實現定位。
而室內是沒有 GPS 信號的,所以不論開發者如何調整代碼、修正天線,都無法實現 GPS 定位。
不過,有的開發者肯定要反駁我:為什么我的手機在室內就能定位,而且特別準呢?
這個問題的答案很簡單,手機使用的是多重定位,如果要單純的測試手機的 GPS 定位,需要這樣做:首先“三清”,僅打開 GPS,然后拔卡,飛行模式,再用專業軟件如 GPS Test+ 試一試,你就明白啦~~
這種情況下,室內,手機也是無法定位的。

所以說,手機在室內之所以可以定位,實際上是它不僅使用了 GPS,還使用了很多其他的輔助定位技術,如 LBS(基站定位)、Wi-Fi(wifi 定位)、BLE(藍牙)等
至此,開發者應該可以明白為什么手機可以定位,而開發板無法定位了。
PS:如果有手機同樣的預算,開發板也能做到同樣的“室內定位”效果
4.2 天線使用問題
1. 有源/無源天線混淆
有部分開發者經常遇到,自己去了戶外,按理說應該在 35S 左右就能定位成功了啊,怎么自己一兩分鐘都沒幾顆星,等了 10 多 20 分鐘依舊還是定位不成功,同步對比手機,發現差距不止一點點,此時應該先檢查 GNSS 天線設計問題,看看自己是不是將有源天線插給了無源天線預留的底座,或者無源天線插給了有源天線預留的底座。
注意:Air8000 核心板的 GPS 天線是無源天線。

2. 天線設計問題
更多遇到的,不是戶外定位不到,而是戶外定位速度極其的慢的問題,常見于無源天線(因為無源天線對結構、PCB、走線要求都比較高),如果自己設計沒有注意下面幾點,是很有可能定位不到/定位極其的慢的。
3. GPS 天線選型建議
在終端結構空間容許,能夠統一保證 GPS 天線面朝上的安裝使用狀態;并且周邊沒有大的金屬物件遮擋的情況下,建議使用 GPS 陶瓷天線,在空間容許的情況下盡量選擇大尺寸的陶瓷天線。
在不能保證終端使用狀態,且空間受限:比如手機,帶定位功能的胸牌;建議使用 FPC 天線
在明確終端安裝環境惡劣,并且對 GPS 性能有較高要求的;建議使用 GPS 有源天線
在不能保證安裝使用狀態,但是空間不受限制,也可以選擇類似于 GSM 的外置棒狀天線。
4. 對天線廠家的要求
1、VSWR:GPS 天線電壓駐波比一般要求調到 1.5 左右.
2、Efficiency:效率一般要求在 40% 左右
3、Average Gain:平均增益要求在-0.5dB
4、OTA:一般天線廠大多不具備 GPS 天線 OTA 測試環境,天線調試好后可以以實際測試數據做標準來衡量;一般我們 GPS 實測時要求是:可用于定位衛星顆數大于 6 顆以上,最強的信號在 45 dB/Hz 左右,要有 3 顆衛星信號大于 40 dB/Hz。
4.3 星系切換問題
有很多遇到過,模組默認固件,只打開 GNSS 電源,35S 左右就能定位到了,但是切換成單北斗,就需要 2 分鐘多甚至更長時間才能定位成功。
首先明確一點,大多數模組,均使用的單頻(L1)GNSS 芯片,所以內部能搜到的北斗衛星,只有 B1C 或者 B1I,這兩個頻段的北斗衛星,由于北斗衛星為高軌衛星,在同一片區域內,衛星數可能不會很多,實測在筆者附近的廣場上,單頻(L1)GNSS 芯片,只能搜到這幾顆北斗衛星。

所以,在明確自己是真正需要單北斗/單 GPS 或者其他星系前,盡量不要將模塊切換為單星系狀態,如果對單北斗需求非常明確,建議選擇真正的單北斗芯片,杜絕后患,因為很多單北斗應用是需要進實驗室過多項認證的,使用多星系 GNSS 芯片,有極大概率過不去單北斗的認證。
4.4 外部干擾源問題
此種情況不能說常見,但是確實客觀存在,之前有部分就遇到了,在他們公司附近一直定位不到,但是放在自己小區前面廣場上就能定位成功,查看地圖得知,公司附近,有"中國軍工"單位,不只是 GNSS 定位不到,偶爾自己的手機 5G/4G 信號也沒有,此種情況定位不到的原因不言而喻了。
不過還有少量遇到的干擾源還是比較明顯,例如只針對 GPS 頻段發射的干擾源,此時切換為單北斗模式,即使是單頻模組,在部分情況下,還是能夠正常定位成功的。
以上四點是最為常見的四種無法定位的情況,如果你使用的 GNSS 模組排除了這四點,依舊無法定位,歡迎你來找我們,我們將會竭力為您排查您所遇到的問題。
五、Air8000 的 GNSS 測試環境
有部分需要測試 Air8000 內部 GNSS 的穩定性,但因為 Air8000 UART2(也就是 GPS 對應的串口)RX 不能直接和外部通訊,只能通過 cat.1 主控給它發指令控制,所以使用我們提供的測試工具,不能直接測試 100 次或者 1000 次冷熱啟動,需要使用 LUA 腳本控制模塊對接 PC 端測試工具,如果只是想看看,CN 值、當前位置,那可以直接接 uart2 的 TX 出來對接 PC 端工具
5.1 軟件環境
1. 燒錄工具Luatools;
2. 內核固件文件(底層 core 固件文件):LuatOS-SoC_V2005_Air8000;此頁面有新版本固件的話選用最新版本固件。
3. LuatOS 需要的腳本和資源文件:https://gitee.com/openLuat/LuatOS/tree/master/module/Air8000/demo/GPS
4. lib 腳本文件:使用 Luatools 燒錄時,勾選 添加默認 lib 選項,使用默認 lib 腳本文件;
準備好軟件環境之后,接下來查看如何燒錄項目文件到 Air8000 開發板中,將本篇文章中演示使用的項目文件燒錄到 Air8000 開發板中。
5. GNSS PC 端測試工具:-iNavTool-V4020
5.2 硬件環境
Air8000 核心板、GPS 天線、TTL 轉 USB 工具
將設備組裝好并連接 USB 數據線,將 TTL 轉 USB 連接到 Air8000 的核心板的 uart2 上面。

需要注意的是需要將 TTL 轉 USB 的 RX 與核心板的 UART2 RX 連接,TX 與和核心板的 UART2 TX 相連接(這是因為 gps 芯片串口與 cat 1 芯片的串口是交叉相連的,所以 TTL 轉 USB 的串口只需和 cat 1 的串口 RX 接 RX,TX 接 TX,連接好后如下圖所示:

5.3 測試現象
下載好的 GNSS PC 端測試工具為一個壓縮包,需要解壓后打開如圖所示 EXE 文件。

打開測試工具后可以看見如下界面:

選擇左上角的"打開串口"后,選擇對應的端口號以及波特率即可,Air8000 的 gps 對應的波特率為 115200,其他的不用管,默認即可。打開端口后,等待片刻,即可看見模塊定位成功輸出的位置信息以及其他信息,左上角為 NMEA 原始數據,下面的均為從 NMEA 數據中解析出的各種信息(注:此處地圖視圖需要電腦鏈接網絡才可找到對應經緯度的坐標),如果沒有輸出經緯度,則證明 GNSS 未打開,需要檢查腳本 GPS 電源是否打開,如果長時間沒有定位成功,可以參考上一章“Air8000 無法定位情況分析”進行排查。
如果連接成功,則可以看到下面的現象:

此工具更多操作可見GNSS 調試工具使用方法詳細介紹:https://docs.openluat.com/air8000/luatos/app/gnss/gnss_test/
六、NMEA 擴展知識
下面是常用的 NMEA 報文語句格式解析:

今天的內容就分享到這里了~
審核編輯 黃宇
-
定位
+關注
關注
5文章
1554瀏覽量
36563 -
GNSS
+關注
關注
9文章
955瀏覽量
50774 -
LuatOS
+關注
關注
0文章
134瀏覽量
2588
發布評論請先 登錄
【迅為RK3568開發板NPU實戰】別再閑置你的NPU!手把手教你玩轉RKNN-Toolkit2 的使用
【RK3568 NPU實戰】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附完整流程與效果
手把手教學:零基礎玩轉GNSS調試工具iNavTool!
RT-Thread Nano硬核移植指南:手把手實現VGLite圖形驅動適配 | 技術集結
遠程日志errDump調試功能實戰教程:案例驅動的故障排查!
手把手教你如何調優Linux網絡參數
正點原子Linux系列全新視頻教程來啦!手把手教你MP257開發板,讓您輕松入門!
KiCad直播活動(三):在 Windows上編譯KiCad 手把手教您編譯/構建 KiCad 源碼
《零基礎開發AI Agent——手把手教你用扣子做智能體》
《手把手教你做星閃無人機》即將開播,鎖定15日晚七點!

手把手教您完成LuatOS GNSS定位調試:實用操作指南
評論