GPS 的海拔數據為何不準確?——詳解無人機導航中的位置坐標系

從 GPS 信息到飛行控制, 無人機上的位置數據處理與轉化
GPS 的輸出數據如何轉化為無人機控制需要的狀態信息?
本文作者:無人機中的城堡,原文標題『城堡里學無人機:如何處理GPS數據獲取無人機狀態信息?』
下圖是國內某知名「無人機相關企業」2014 年筆試的截圖,顯示了導航過程中的數據轉換的實用性。

在之前的文章中,我介紹了無人機系統自動導航過程中涉及的幾個重要坐標系,本文則會跟大家分析在實際的無人機系統中,GPS 的輸出數據如何轉化為無人機控制需要的狀態信息。
GPS輸出數據詳解

實際的 GPS 系統會以一定格式輸出很多數據,如時間,精度因子,衛星編號,信噪比等等,但對于無人機控制而言,最為重要,也是最常使用的還是「經度(Longitude),緯度(Latitude)以及高度(height)」三組數據。

直接通過 GPS 獲取的飛行器的位置坐標基于 WGS-84(World Geodetic System-1984)坐標系,簡稱 Geodetic 或 G 坐標系。

為什么需要單獨建立一個坐標系呢?這是由于地球表面地勢復雜,有山有海,高低不平。需要建立一個簡單而精確的近似數學模型,大家決定采用橢球體作為地球的近似。而 G 坐標系就描述了一個橢球體,給出該橢球體的基本參數:長半軸,短半軸,第一偏心率,第二偏心率,扁率,曲率半徑(米):

GPS輸出的高度不是海拔(Alt)么?這里怎么是 h 高度呢?GPS 硬件直接獲取的高度是相對于 G 坐標系中橢球表面的高度。而海拔是相對于公海平面的高度,與地球表面形狀和重力分布相關。相對于大地水準面的高度才是海拔,也就是下圖中的H參數。

M(大地水準偏差)作為GPS輸出高度h和當地海拔之間的偏差,一般在正負100m以內。

從 Geodetic 到 ECEF 坐標系的數據轉換
我們通過 G 坐標系下的三個參數:經度,維度,高度,可以獲得飛行器在橢球表面的位置坐標。但進行導航計算時,我們需要把數據換算到 NED 坐標系下。要完成從 G 系到 NED 的數據轉換還需要一個過渡過程:G 坐標系到 ECEF 坐標系下的數據轉換。



其中 N 是我們常說的曲率半徑(m)。通過上面的計算公式就可以實現從 G 坐標系到 ECEF 坐標的數據轉換。
從ECEF到NED坐標系的數據轉換
對于商用無人機,相比于它在橢球中的信息,我們更關心它在平面中的位置向量、速度向量。將 NED 坐標系看做導航中最重要的坐標系并不為過,NED 坐標系也經常被直接稱為導航坐標系(Navigation Coordinate)或者地面坐標系(Ground Coordinate)。

首先要獲取 NED 坐標系中的參考原點,一般也就是無人機 GPS 星數達到要求后的起始位置。這也是為什么無人機產品要在星數足夠之后才能起飛,試想一下如果起始位置沒有定準,就算在飛行過程中星數足夠,獲取的飛行位置信息也夠精確,最后也可能造成一鍵返航位置與起始位置偏差巨大。
下面給出參考原點的坐標信息以及從 ECEF 到 NED 的轉換計算:


從ECEF到NED坐標系的旋轉矩陣如下:

結合上面兩部分的計算方法,就成功地實現了 GPS 輸出的位置數據到 NED 坐標系下的轉換。換句話說,我們獲得了進行無人機控制器設計所必須的外環位置狀態信息。
但外環信息一共有六個,還有三個速度狀態呢?通過 GPS 可以獲得 ECEF 坐標系下的速度向量。與 G 系類似,相比于飛行器在 ECEF 這個三維坐標系的速度向量,我們更關心相對于 NED 坐標系的速度向量:


責任編輯:陳凱文