GPS從入門到放棄(十) --- 定位方程解算和定位精度

GPS從入門到放棄(十) — 定位方程解算和定位精度

上一篇僞距與載波相位中我們介紹了僞距的計算方法,也得到了包含 (x, y, z, δt)(x,\ y,\ z,\ \delta_t) 四個未知數的GPS定位基本方程:
(xxs)2+(yys)2+(zzs)2+cδt=ρ+cδt,scIcTcϵ \sqrt{(x-x_{s})^2 + (y-y_{s})^2 + (z-z_{s})^2} + c\cdot\delta_t = \rho + c\cdot\delta_{t,s} - cI - cT -c\epsilon
那麼根據這個方程我們怎麼來定位呢?

這個方程中的 IITT 分別是大氣電離層導致的延時和大氣對流層導致的延時,這些延時的計算方法放到後面再講,目前我們先把它當作已知量。δt,s\delta_{t,s} 爲衛星鐘差,在導航電文中有參數修正,以後再講。於是這個方程中只涉及到四個未知數和一個誤差。我們先考慮簡單的情況,即暫時不管誤差 ϵ\epsilon ,在分析定位精度的時候再來考慮它。

根據我們第一篇GPS基礎原理講過GPS的基本原理,只需已知四顆衛星的測量值,即可組成一個四元方程組,然後解出來這四個未知數。要注意的是這個方程組是一個非線性方程組,因此在實際解算過程中,常用牛頓迭代法來進行。

牛頓迭代法

牛頓迭代法是一個常用的解非線性方程組的方法,它將非線性方程組在一個估計解的附近進行線性化,然後求解線性化後的方程組,接着再更新解的估計值。如此反覆迭代,直到解的精度滿足要求爲止。

根據牛頓迭代法,將四元方程組在第k次迭代的估計解 [xk  yk  zk  δt,k]T[x_k \ \ y_k \ \ z_k\ \ \delta_{t,k}]^T 處線性化後方程組爲:
G[ΔxΔyΔzcΔδt]=b \boldsymbol{G} \left[ \begin{array}{c} \Delta x\\ \Delta y\\ \Delta z\\ c\cdot\Delta \delta_{t} \end{array} \right] = \boldsymbol{b}
其中
G=[xkxs,1(xkxs,1)2+(ykys,1)2+(zkzs,1)2ykys,1(xkxs,1)2+(ykys,1)2+(zkzs,1)2zkzs,1(xkxs,1)2+(ykys,1)2+(zkzs,1)21xkxs,2(xkxs,2)2+(ykys,2)2+(zkzs,2)2ykys,2(xkxs,2)2+(ykys,2)2+(zkzs,2)2zkzs,2(xkxs,2)2+(ykys,2)2+(zkzs,2)21xkxs,3(xkxs,3)2+(ykys,3)2+(zkzs,3)2ykys,3(xkxs,3)2+(ykys,3)2+(zkzs,3)2zkzs,3(xkxs,3)2+(ykys,3)2+(zkzs,3)21xkxs,4(xkxs,4)2+(ykys,4)2+(zkzs,4)2ykys,4(xkxs,4)2+(ykys,4)2+(zkzs,4)2zkzs,4(xkxs,4)2+(ykys,4)2+(zkzs,4)21] \boldsymbol{G} = \left[ \begin{array}{cccc} \frac{x_k-x_{s,1}}{\sqrt{(x_k-x_{s,1})^2 + (y_k-y_{s,1})^2 + (z_k-z_{s,1})^2}} & \frac{y_k-y_{s,1}}{\sqrt{(x_k-x_{s,1})^2 + (y_k-y_{s,1})^2 + (z_k-z_{s,1})^2}} & \frac{z_k-z_{s,1}}{\sqrt{(x_k-x_{s,1})^2 + (y_k-y_{s,1})^2 + (z_k-z_{s,1})^2}} & 1\\ \frac{x_k-x_{s,2}}{\sqrt{(x_k-x_{s,2})^2 + (y_k-y_{s,2})^2 + (z_k-z_{s,2})^2}} & \frac{y_k-y_{s,2}}{\sqrt{(x_k-x_{s,2})^2 + (y_k-y_{s,2})^2 + (z_k-z_{s,2})^2}} & \frac{z_k-z_{s,2}}{\sqrt{(x_k-x_{s,2})^2 + (y_k-y_{s,2})^2 + (z_k-z_{s,2})^2}} & 1\\ \frac{x_k-x_{s,3}}{\sqrt{(x_k-x_{s,3})^2 + (y_k-y_{s,3})^2 + (z_k-z_{s,3})^2}} & \frac{y_k-y_{s,3}}{\sqrt{(x_k-x_{s,3})^2 + (y_k-y_{s,3})^2 + (z_k-z_{s,3})^2}} & \frac{z_k-z_{s,3}}{\sqrt{(x_k-x_{s,3})^2 + (y_k-y_{s,3})^2 + (z_k-z_{s,3})^2}} & 1\\ \frac{x_k-x_{s,4}}{\sqrt{(x_k-x_{s,4})^2 + (y_k-y_{s,4})^2 + (z_k-z_{s,4})^2}} & \frac{y_k-y_{s,4}}{\sqrt{(x_k-x_{s,4})^2 + (y_k-y_{s,4})^2 + (z_k-z_{s,4})^2}} & \frac{z_k-z_{s,4}}{\sqrt{(x_k-x_{s,4})^2 + (y_k-y_{s,4})^2 + (z_k-z_{s,4})^2}} & 1 \end{array} \right]
b=[ρ1+cδt,s,1cI1cT1(xkxs,1)2+(ykys,1)2+(zkzs,1)2cδt,kρ2+cδt,s,2cI2cT2(xkxs,2)2+(ykys,2)2+(zkzs,2)2cδt,kρ3+cδt,s,3cI3cT3(xkxs,3)2+(ykys,3)2+(zkzs,3)2cδt,kρ4+cδt,s,4cI4cT4(xkxs,4)2+(ykys,4)2+(zkzs,4)2cδt,k] \boldsymbol{b} = \left[ \begin{array}{cccc} \rho_1 + c\cdot\delta_{t,s,1} - cI_1 - cT_1 -\sqrt{(x_k-x_{s,1})^2 + (y_k-y_{s,1})^2 + (z_k-z_{s,1})^2} - c\cdot\delta_{t,k} \\ \rho_2 + c\cdot\delta_{t,s,2} - cI_2 - cT_2 -\sqrt{(x_k-x_{s,2})^2 + (y_k-y_{s,2})^2 + (z_k-z_{s,2})^2} - c\cdot\delta_{t,k} \\ \rho_3 + c\cdot\delta_{t,s,3} - cI_3 - cT_3 -\sqrt{(x_k-x_{s,3})^2 + (y_k-y_{s,3})^2 + (z_k-z_{s,3})^2} - c\cdot\delta_{t,k} \\ \rho_4 + c\cdot\delta_{t,s,4} - cI_4 - cT_4 -\sqrt{(x_k-x_{s,4})^2 + (y_k-y_{s,4})^2 + (z_k-z_{s,4})^2} - c\cdot\delta_{t,k} \end{array} \right]
我們將 G\boldsymbol{G} 稱爲雅可比矩陣。
設第k次迭代時接收機到衛星 ss 的單位觀測矢量爲 es,k=[es,k,x, es,k,y, es,k,z]T\boldsymbol{e}_{s,k}=[e_{s,k,x},\ e_{s,k,y},\ e_{s,k,z}]^T,則 G\boldsymbol{G} 可以寫爲:
G=[e1,k,xe1,k,ye1,k,z1e2,k,xe2,k,ye2,k,z1e3,k,xe3,k,ye3,k,z1e4,k,xe4,k,ye4,k,z1]=[e1,k1e2,k1e3,k1e4,k1] \boldsymbol{G} = \left[ \begin{array}{cccc} -e_{1,k,x} & -e_{1,k,y} & -e_{1,k,z} & 1\\ -e_{2,k,x} & -e_{2,k,y} & -e_{2,k,z} & 1\\ -e_{3,k,x} & -e_{3,k,y} & -e_{3,k,z} & 1\\ -e_{4,k,x} & -e_{4,k,y} & -e_{4,k,z} & 1 \end{array} \right] = \left[ \begin{array}{cc} -\boldsymbol{e}_{1,k} & 1\\ -\boldsymbol{e}_{2,k} & 1\\ -\boldsymbol{e}_{3,k} & 1\\ -\boldsymbol{e}_{4,k} & 1 \end{array} \right]
觀察 G\boldsymbol{G} 可以發現,G\boldsymbol{G} 只與衛星和接收機的幾何位置有關,所以也稱 G\boldsymbol{G} 爲幾何矩陣。

而一般把 b\boldsymbol{b} 稱爲僞距殘差。它是觀測到的僞距與第k次迭代時估計出的僞距的差值。

得到線性化的方程組之後,我們就可以用最小二乘法將方程組解出來,得到
[ΔxΔyΔzcΔδt]=(GTG)1GTb\left[ \begin{array}{c} \Delta x\\ \Delta y\\ \Delta z\\ c\cdot\Delta \delta_{t} \end{array} \right] = (\boldsymbol{G}^T\boldsymbol{G})^{-1}\boldsymbol{G}^T\boldsymbol{b}
然後進一步得到迭代下一步的估計值
[xk+1yk+1zk+1δt,k+1]=[xk+Δxyk+Δyzk+Δzδt,k+Δδt]\left[ \begin{array}{c} x_{k+1}\\ y_{k+1}\\ z_{k+1}\\ \delta_{t,k+1} \end{array} \right] = \left[ \begin{array}{c} x_{k} + \Delta x\\ y_{k} + \Delta y\\ z_{k} + \Delta z\\ \delta_{t,k} + \Delta \delta_{t} \end{array} \right]
如此反覆迭代,直到 [xk  yk  zk  δt,k]T[x_k \ \ y_k \ \ z_k\ \ \delta_{t,k}]^T 滿足精度要求,牛頓迭代法即可中止。

在使用牛頓迭代法解算位置的過程中,需要注意幾點:

  1. 是否收斂。解的估計值有可能在一個值附近來回振盪,這是無法得到更高精度的解。
  2. 是否收斂到地球附近位置。解有可能收斂到遠離地球的一端,這時需要重新給初始值,重新進行迭代解算。
  3. 嚴格來講,每次迭代位置更新後,大氣延時等誤差需要重新估算,爲了減小計算量,在連續定位時可以認爲此誤差在迭代中保持不變。
  4. 若可觀測衛星多於4顆,可以對雅可比矩陣 G\boldsymbol{G} 進行擴展,依然可以用牛頓迭代和最小二乘法來求解。
  5. 若可觀測衛星少於4顆,可以利用各種假設來增加輔助方程,以解出需要的未知數。如限定高度變化量、限定運動方向、限定接收機鐘差變化量等,當然此處需要注意限定的有效期。

定位精度

下面我們把誤差也考慮進去,假定測量誤差和定位誤差都很小,於是線性化後方程組爲:
G[Δx+ϵxΔy+ϵyΔz+ϵzc(Δδt+ϵδt)]=b+ϵρ \boldsymbol{G} \left[ \begin{array}{c} \Delta x + \epsilon_x\\ \Delta y + \epsilon_y\\ \Delta z + \epsilon_z\\ c\cdot(\Delta \delta_{t} + \epsilon_{\delta_{t}}) \end{array} \right] = \boldsymbol{b + \epsilon_\rho}
其中
ϵρ=[ϵρ,1ϵρ,2ϵρ,3ϵρ,4] \boldsymbol{\epsilon_\rho} = \left[ \begin{array}{c} \epsilon_{\rho,1}\\ \epsilon_{\rho,2}\\ \epsilon_{\rho,3}\\ \epsilon_{\rho,4} \end{array} \right]
爲衛星的測量誤差向量,ϵx,ϵy,ϵz\epsilon_x, \epsilon_y, \epsilon_zϵδt\epsilon_{\delta_t} 分別表示由誤差向量 ϵρ\boldsymbol{\epsilon_\rho} 引起的定位和定時誤差。

解這個方程可以得到
[ϵxϵyϵzϵδt]=(GTG)1GTϵρ\left[ \begin{array}{c} \epsilon_x\\ \epsilon_y\\ \epsilon_z\\ \epsilon_{\delta_{t}} \end{array} \right] = (\boldsymbol{G}^T\boldsymbol{G})^{-1}\boldsymbol{G}^T\boldsymbol{\epsilon_\rho}
假設各個衛星的測量誤差都爲正態分佈,其均值 E[ϵρ]=0E[\epsilon_\rho] = 0,方差 V[ϵρ]=σURE2V[\epsilon_\rho] = \sigma_{URE}^2,假設各個衛星的測量誤差互不相關,則可以推導出定位誤差協方差陣爲:
Cov([ϵxϵyϵzϵδt])=(GTG)1σURE2=HσURE2 Cov\left(\left[ \begin{array}{c} \epsilon_x\\ \epsilon_y\\ \epsilon_z\\ \epsilon_{\delta_{t}} \end{array} \right]\right) = (\boldsymbol{G}^T\boldsymbol{G})^{-1}\sigma_{URE}^2 = \boldsymbol{H}\sigma_{URE}^2
其中
H=(GTG)1 \boldsymbol{H} = (\boldsymbol{G}^T\boldsymbol{G})^{-1}
爲權係數陣,是一個對稱陣。

由定位誤差協方差陣可以看出,GPS定位誤差的方差是測量誤差的方差被權係數陣放大的結果,而權係數陣只與衛星的幾何分佈有關,故GPS的定位誤差取決於測量誤差和衛星幾何分佈兩個因素。

精度因子

有了權係數陣,我們就可以計算精度因子了。精度因子用於表示各個方向和時鐘的誤差放大倍數。假設在站心座標系(座標系可參見前文GPS座標系)下表示的權係數陣爲:
H=[h11h22h33h44] \boldsymbol{H} = \left[ \begin{array}{cccc} h_{11} & & & \\ & h_{22} & & \\ & & h_{33} & \\ & & & h_{44} \end{array} \right]
那麼水平精度因子(HDOP)、高程精度因子(VDOP)、位置精度因子(PDOP)、鐘差精度因子(TDOP)、幾何精度因子(GDOP)分別爲:
HDOP=h112+h222VDOP=h332PDOP=h112+h222+h332TDOP=h442GDOP=h112+h222+h332+h442 \begin{array}{c} HDOP = \sqrt{h_{11}^2 + h_{22}^2} \\ VDOP = \sqrt{h_{33}^2} \\ PDOP = \sqrt{h_{11}^2 + h_{22}^2 + h_{33}^2} \\ TDOP = \sqrt{h_{44}^2} \\ GDOP = \sqrt{h_{11}^2 + h_{22}^2 + h_{33}^2 + h_{44}^2} \end{array}
一般GPS接收機在輸出定位結果的同時都會輸出精度因子,在相同測量誤差的情況下,精度因子越小,定位精度越高。

精度因子只與衛星的幾何分佈有關,有一個簡單的方法可以大致判斷GDOP的大小:以接收機所在位置爲錐頂、以各個衛星所在位置爲頂點組成一個錐形體,這個錐形體體積越大,相應的GDOP就越小。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章