E.6单点定位
主要是RTKLIB ver. 2.4.2 Manual E.6的翻译.
RTKLIB采用迭代加权LSE(最小二乘估计)用于ʺSingleʺ(单点定位)模式,有或没有SBAS校正。
(1)线性LSE
假设有一个测量向量y,它可以被建模为一个未知参数向量x和一个随机测量误差向量v的线性方程。
y
=
H
x
+
v
−
−
−
(
E
.
6.1
)
y=Hx+v---(E.6.1)
y=Hx+v−−−(E.6.1)
最小二乘损失函数
J
J
S
J_{JS}
JJS定义为测量误差平方和:
J
L
S
=
v
1
2
+
v
2
2
+
.
.
.
+
v
m
2
=
v
T
v
−
−
−
(
E
.
6.2
)
J_{LS}=v_1^2+v_2^2+...+v_m^2=v^Tv---(E.6.2)
JLS=v12+v22+...+vm2=vTv−−−(E.6.2)
利用(E.6.1)和(E.6.2),损失函数可以改写为:
J
L
S
=
(
y
−
H
x
)
T
(
y
−
H
x
)
=
y
T
y
−
y
T
H
x
−
x
T
H
T
y
+
x
T
H
T
H
x
−
−
−
(
E
.
6.3
)
\begin{aligned} J_{LS}&=(y-Hx)^T(y-Hx)\\ &=y^Ty-y^THx-x^TH^Ty+x^TH^THx---(E.6.3) \end{aligned}
JLS=(y−Hx)T(y−Hx)=yTy−yTHx−xTHTy+xTHTHx−−−(E.6.3)
为了使代价函数最小化,
J
L
S
J_{LS}
JLS的梯度应为零。然后
∂
J
L
S
∂
x
=
0
T
−
y
T
H
−
(
H
T
y
)
T
+
(
H
T
H
x
)
T
+
x
T
H
T
H
=
−
2
y
T
H
+
2
x
T
H
T
H
=
0
−
−
−
(
E
.
6.4
)
\begin{aligned} \frac{\partial J_{LS}}{\partial x}&=0^T-y^TH-(H^Ty)^T+(H^THx)^T+x^TH^TH\\ &=-2y^TH+2x^TH^TH=0---(E.6.4) \end{aligned}
∂x∂JLS=0T−yTH−(HTy)T+(HTHx)T+xTHTH=−2yTH+2xTHTH=0−−−(E.6.4)
它给出了所谓的ʺ正规方程ʺ为:
H
T
H
x
=
H
T
y
−
−
−
(
E
.
6.5
)
H^THx=H^Ty---(E.6.5)
HTHx=HTy−−−(E.6.5)
要解标准方程,通过LSE估计得到的未知参数向量
x
^
\hat x
x^为:
x
^
=
(
H
T
H
)
−
1
H
T
y
−
−
−
(
E
.
6.6
)
\hat x=(H^TH)^{-1}H^Ty---(E.6.6)
x^=(HTH)−1HTy−−−(E.6.6)
如果给出了每个测量值的权重,则成本函数(E.6.3)可以用一个权重矩阵W。
J
W
L
S
=
v
T
W
v
−
−
−
(
E
.
6.7
)
J_{WLS}=v^TWv---(E.6.7)
JWLS=vTWv−−−(E.6.7)
为了最小化代价函数
J
W
L
S
J_{WLS}
JWLS,我们可以通过加权LSE得到估计的未知参数向量,方法与简单LSE类似:
x
^
=
(
H
T
W
H
)
−
1
H
T
W
y
−
−
−
(
E
.
6.8
)
\hat x=(H^TWH)^{-1}H^TWy---(E.6.8)
x^=(HTWH)−1HTWy−−−(E.6.8)
加权LSE的权矩阵W通常为:
W
=
d
i
a
g
(
σ
1
−
2
,
σ
2
−
2
,
.
.
.
,
σ
m
−
2
)
W=diag(\sigma_1^{-2},\sigma_2^{-2},...,\sigma_m^{-2})
W=diag(σ1−2,σ2−2,...,σm−2)
其中
σ
i
\sigma_i
σi是第i个测量误差的先验标准差。
(2)非线性LSE的高斯-牛顿迭代
如果测量结果不是线性模型,则测量方程可以用一般的非线性向量函数表示为:
y
=
h
(
x
)
+
v
−
−
−
(
E
.
6.9
)
y=h(x)+v---(E.6.9)
y=h(x)+v−−−(E.6.9)
式中
h
(
x
)
h(x)
h(x)是参数向量x的测量向量函数,对初始参数向量
x
0
x_0
x0采用泰勒级数可将方程推广为:
h
(
x
)
=
h
(
x
0
)
+
H
(
x
−
x
0
)
+
.
.
.
−
−
−
(
E
.
6.10
)
h(x)=h(x_0)+H(x-x_0)+...---(E.6.10)
h(x)=h(x0)+H(x−x0)+...−−−(E.6.10)
式中,H为
h
(
x
)
h(x)
h(x)对x在
x
=
x
0
x=x_0
x=x0处的偏导数矩阵:
H
=
∂
h
(
x
)
∂
x
∣
x
=
x
0
−
−
−
(
E
.
6.11
)
H=\frac{\partial h(x)}{\partial x}\vert_{x=x_0}---(E.6.11)
H=∂x∂h(x)∣x=x0−−−(E.6.11)
假设初始参数充分接近真实值,泰勒级数的第二项和进一步项可以忽略。我们可以将(E.6.9)近似为:
y
≈
h
(
x
0
)
+
H
(
x
−
x
0
)
+
v
−
−
−
(
E
.
6.12
)
y\approx h(x_0)+H(x-x_0)+v---(E.6.12)
y≈h(x0)+H(x−x0)+v−−−(E.6.12)
我们可以得到以下线性方程:
y
−
h
(
x
0
)
=
H
(
x
−
x
0
)
+
v
−
−
−
(
E
.
6.13
)
y- h(x_0)=H(x-x_0)+v---(E.6.13)
y−h(x0)=H(x−x0)+v−−−(E.6.13)
对(E.6.13)应用线性加权LSE (E.6.8),可以得到非线性加权LSE的法向方程:
H
T
W
H
(
x
^
−
x
0
)
=
H
T
W
(
y
−
h
(
x
0
)
)
−
−
−
(
E
.
6.14
)
H^TWH(\hat x-x_0)=H^TW(y-h(x_0))---(E.6.14)
HTWH(x^−x0)=HTW(y−h(x0))−−−(E.6.14)
因此,我们可以得到估计的未知参数向量
x
^
\hat x
x^:
x
^
=
x
0
+
(
H
T
W
H
)
−
1
H
T
W
(
y
−
h
(
x
0
)
)
−
−
−
(
E
.
6.15
)
\hat x=x_0+(H^TWH)^{-1}H^TW(y-h(x_0))---(E.6.15)
x^=x0+(HTWH)−1HTW(y−h(x0))−−−(E.6.15)
如果初始参数x0在真实值附近不够,我们可以迭代改进估计的参数,如:
x
0
^
=
x
0
−
−
−
(
E
.
6.16
)
x
^
i
+
1
=
x
^
i
+
(
H
T
W
H
)
−
1
H
T
W
(
y
−
h
(
x
^
i
)
)
−
−
−
(
E
.
6.17
)
\hat{x_0}=x_0---(E.6.16)\\ \hat x_{i+1}=\hat x_i+(H^TWH)^{-1}H^TW(y-h(\hat x_i))---(E.6.17)
x0^=x0−−−(E.6.16)x^i+1=x^i+(HTWH)−1HTW(y−h(x^i))−−−(E.6.17)
如果迭代收敛,我们可以得到最终的估计参数为:
x
^
=
lim
i
→
∞
x
^
i
−
−
−
(
E
.
6.18
)
\hat x=\lim\limits_{i\to \infty}\hat x_i---(E.6.18)
x^=i→∞limx^i−−−(E.6.18)
迭代LSE通常被称为高斯-牛顿法。需要注意的是,这种迭代并不总是能通过简单的高斯牛顿法收敛,特别是对于具有很大非线性的病态测量方程。在这种情况下,我们应该对这种非线性LSE采用另一种策略。最常用的非线性LSE方法是LM (Levenberg‐Marquardt)方法。
(3)接收机位置和时钟偏差的估计
对于ʺ单点定位ʺ模式为ʺ定位模式ʺ,采用以下单点定位程序逐历获取最终解。对于一个历元时间,定义未知参数向量x为:
x
=
(
r
r
T
,
c
d
t
r
)
T
−
−
−
(
E
.
6.19
)
x=(r_r^T,cdt_r)^T---(E.6.19)
x=(rrT,cdtr)T−−−(E.6.19)
伪距测量向量y可表示为:
y
=
(
P
r
1
,
P
r
2
,
P
r
3
,
.
.
.
,
P
r
m
)
T
−
−
−
(
E
.
6.20
)
y=(P_r^1,P_r^2,P_r^3,...,P_r^m)^T---(E.6.20)
y=(Pr1,Pr2,Pr3,...,Prm)T−−−(E.6.20)
其中
P
r
s
P_r^s
Prs为伪距测量值。如果处理选项ʺ电离层校正ʺ设置为ʺ无电离层LCʺ,则使用附录E.5(7)中定义的无电离层LC(线性组合)伪距。在其他情况下,只使用L1伪距。
单点定位测量方程及其偏导数矩阵为:
h
(
x
)
=
(
ρ
r
1
+
c
d
t
r
−
c
d
T
1
+
I
r
1
+
T
r
1
ρ
r
2
+
c
d
t
r
−
c
d
T
2
+
I
r
2
+
T
r
2
ρ
r
3
+
c
d
t
r
−
c
d
T
3
+
I
r
3
+
T
r
3
⋮
ρ
r
m
+
c
d
t
r
−
c
d
T
m
+
I
r
m
+
T
r
m
)
H
=
(
−
e
r
1
T
1
−
e
r
2
T
1
−
e
r
3
T
1
⋮
⋮
−
e
r
m
T
1
)
−
−
−
(
F
.
6.21
)
h(x)=\begin{pmatrix} \rho_r^1+cdt_r-cdT^1+I_r^1+T_r^1\\ \rho_r^2+cdt_r-cdT^2+I_r^2+T_r^2\\ \rho_r^3+cdt_r-cdT^3+I_r^3+T_r^3\\ \vdots\\ \rho_r^m+cdt_r-cdT^m+I_r^m+T_r^m\\ \end{pmatrix} H=\begin{pmatrix} -e_r^{1T}&1\\ -e_r^{2T}&1\\ -e_r^{3T}&1\\ \vdots&\vdots\\ -e_r^{mT}&1\\ \end{pmatrix}---(F.6.21)
h(x)=⎝⎜⎜⎜⎜⎜⎛ρr1+cdtr−cdT1+Ir1+Tr1ρr2+cdtr−cdT2+Ir2+Tr2ρr3+cdtr−cdT3+Ir3+Tr3⋮ρrm+cdtr−cdTm+Irm+Trm⎠⎟⎟⎟⎟⎟⎞H=⎝⎜⎜⎜⎜⎜⎛−er1T−er2T−er3T⋮−ermT111⋮1⎠⎟⎟⎟⎟⎟⎞−−−(F.6.21)
其中几何范围
ρ
t
s
\rho_t^s
ρts和LOS矢量
e
r
s
e_r^s
ers由E.3(4)和E.3(5)与卫星和接收机位置给出。卫星位置
e
s
e^s
es和时钟偏差
d
T
s
dT^s
dTs也来自于E.4中描述的GNSS卫星星历和时钟,根据处理选项ʺ卫星星历/时钟ʺ。
为了求解测量方程,得到最终估计的接收机位置和接收机时钟偏差,RTKLIB采用迭代加权LSE为:
x
^
i
+
1
=
x
^
i
+
(
H
T
W
H
)
−
1
H
T
W
(
y
−
h
(
x
^
i
)
)
−
−
−
(
E
.
6.22
)
\hat x_{i+1}=\hat x_i+(H^TWH)^{-1}H^TW(y-h(\hat x_i))---(E.6.22)
x^i+1=x^i+(HTWH)−1HTW(y−h(x^i))−−−(E.6.22)
对于迭代加权LSE的初始参数向量x0,所有0都用于单点定位的第一阶。一旦得到一个解,该位置用于下一个epoch初始接收机位置。对于权值矩阵W, RTKLIB使用以下公式
W
=
d
i
a
g
(
σ
1
−
2
,
σ
2
−
2
,
.
.
.
,
σ
m
−
2
)
−
−
−
(
E
.
6.23
)
σ
2
=
F
s
R
r
(
a
σ
2
+
b
σ
2
/
s
i
n
E
l
r
s
)
+
σ
e
p
h
2
+
σ
b
i
a
s
2
+
σ
i
o
n
2
+
σ
t
r
o
p
2
−
−
−
(
E
.
6.24
)
W=diag(\sigma_1^{-2},\sigma_2^{-2},...,\sigma_m^{-2})---(E.6.23)\\ \sigma^2=F^sR_r(a_\sigma^2+b_\sigma^2/sinEl_r^s)+\sigma^2_{eph}+\sigma^2_{bias}+\sigma^2_{ion}+\sigma^2_{trop}---(E.6.24)
W=diag(σ1−2,σ2−2,...,σm−2)−−−(E.6.23)σ2=FsRr(aσ2+bσ2/sinElrs)+σeph2+σbias2+σion2+σtrop2−−−(E.6.24)
其中:
F
s
:
卫
星
系
统
误
差
因
子
(
1
:
G
P
S
、
G
a
l
i
l
e
o
、
Q
Z
S
S
、
北
斗
,
1.5
:
G
L
O
N
A
S
S
,
3.0
:
S
B
A
S
)
R
r
:
码
/
载
波
相
位
误
差
比
率
a
σ
,
b
σ
:
载
波
相
位
误
差
因
子
a
和
b
(
m
)
σ
e
p
h
:
星
历
表
标
准
偏
差
和
时
钟
误
差
(
m
)
σ
i
o
n
:
电
离
层
校
正
模
型
误
差
标
准
偏
差
(
m
)
σ
t
r
o
p
:
对
流
层
修
正
模
型
误
差
标
准
偏
差
(
m
)
σ
b
i
a
s
:
码
偏
误
差
标
准
差
(
m
)
\begin{aligned} F^s&:卫星系统误差因子(1:GPS、Galileo、QZSS、北斗,1.5:GLONASS, 3.0: SBAS)\\ R_r&:码/载波相位误差比率\\ a_\sigma,b_\sigma&:载波相位误差因子a和b (m)\\ \sigma_{eph}&:星历表标准偏差和时钟误差(m)\\ \sigma_{ion}&:电离层校正模型误差标准偏差(m)\\ \sigma_{trop}&:对流层修正模型误差标准偏差(m)\\ \sigma_{bias}&:码偏误差标准差(m) \end{aligned}
FsRraσ,bσσephσionσtropσbias:卫星系统误差因子(1:GPS、Galileo、QZSS、北斗,1.5:GLONASS,3.0:SBAS):码/载波相位误差比率:载波相位误差因子a和b(m):星历表标准偏差和时钟误差(m):电离层校正模型误差标准偏差(m):对流层修正模型误差标准偏差(m):码偏误差标准差(m)
RTKLIB使用市建局(用户距离精度)或类似的指标来衡量星历表的标准偏差和时钟误差。经过多次迭代,求解在正常情况下收敛,得到估计的接收机位置
r
^
r
\hat r_r
r^r和接收机时钟偏置
d
t
^
r
d\hat{t}_r
dt^r。
x
^
=
lim
i
→
∞
x
^
i
=
(
r
^
r
T
,
c
d
t
^
r
)
T
−
−
−
(
E
.
6.25
)
\hat x=\lim\limits_{i\to \infty}\hat x_i=(\hat r_r^T,\hat{cdt}_r)^T---(E.6.25)
x^=i→∞limx^i=(r^rT,cdt^r)T−−−(E.6.25)
估计的接收机时钟偏差
d
t
^
r
d\hat{t}_r
dt^r不会显式输出到解决方案文件。相反,它被包含在解决方案的时间标签中。这意味着解决时标不是指接收器时标,而是指在GPST中测量的真实信号接收时间。
(4)估计接收器速度和时钟漂移
如果给出了GNSS信号的多普勒频率测量,则可以按照以下步骤估算接收器的速度和时钟漂移。 在某个时间段内,将用于速度估计的未知参数向量x定义为:
x
=
(
v
r
T
,
c
d
t
˙
r
)
T
−
−
−
(
E
.
6.26
)
x=(v_r^T,cd\dot t_r)^T---(E.6.26)
x=(vrT,cdt˙r)T−−−(E.6.26)
其中
v
r
T
v_r^T
vrT和
c
d
t
˙
r
cd\dot t_r
cdt˙r分别为接收机速度在ECEF,单位为 (m/s)。和接收机时钟漂移(s/s)。量程速率测量矢量y可以表示为:
y
=
(
−
λ
i
D
r
,
i
1
,
−
λ
i
D
r
,
i
2
,
−
λ
i
D
r
,
i
3
,
.
.
.
,
−
λ
i
D
r
,
i
m
)
T
−
−
−
(
E
.
6.27
)
y=(-\lambda_iD_{r,i}^1,-\lambda_iD_{r,i}^2,-\lambda_iD_{r,i}^3,...,-\lambda_iD_{r,i}^m)^T---(E.6.27)
y=(−λiDr,i1,−λiDr,i2,−λiDr,i3,...,−λiDr,im)T−−−(E.6.27)
其中,
D
r
,
i
s
D_{r,i}^s
Dr,is为卫星s的Li多普勒频率测量值。RTKLIB总是使用L1多普勒频率测量值。这些测量方程及其偏导数矩阵构成如下:
h
(
x
)
=
(
r
r
1
+
c
d
t
˙
r
−
c
d
T
˙
1
r
r
2
+
c
d
t
˙
r
−
c
d
T
˙
2
r
r
3
+
c
d
t
˙
r
−
c
d
T
˙
3
⋮
r
r
m
+
c
d
t
˙
r
−
c
d
T
˙
m
)
H
=
(
−
e
r
1
T
1
−
e
r
2
T
1
−
e
r
3
T
1
⋮
⋮
−
e
r
m
T
1
)
−
−
−
(
E
.
6.28
)
h(x)=\begin{pmatrix} r_r^1+cd\dot t_r-cd\dot T^1\\ r_r^2+cd\dot t_r-cd\dot T^2\\ r_r^3+cd\dot t_r-cd\dot T^3\\ \vdots\\ r_r^m+cd\dot t_r-cd\dot T^m\\ \end{pmatrix} H=\begin{pmatrix} -e_r^{1T}&1\\ -e_r^{2T}&1\\ -e_r^{3T}&1\\ \vdots&\vdots\\ -e_r^{mT}&1\\ \end{pmatrix}---(E.6.28)
h(x)=⎝⎜⎜⎜⎜⎜⎛rr1+cdt˙r−cdT˙1rr2+cdt˙r−cdT˙2rr3+cdt˙r−cdT˙3⋮rrm+cdt˙r−cdT˙m⎠⎟⎟⎟⎟⎟⎞H=⎝⎜⎜⎜⎜⎜⎛−er1T−er2T−er3T⋮−ermT111⋮1⎠⎟⎟⎟⎟⎟⎞−−−(E.6.28)
在这些方程中,接收器和卫星之间的距离‐范围
r
r
s
r_r^s
rrs来自于:
r
r
s
=
e
r
s
T
(
v
s
s
(
r
s
)
−
v
r
)
+
ω
e
c
(
v
y
s
x
r
+
y
s
v
x
,
r
−
v
x
s
y
r
−
x
s
v
y
,
r
)
−
−
−
(
E
.
6.29
)
r_r^s =e_r^{sT}(v^ss(r^s)-v_r)+\frac {\omega_e}c(v_y^sx_r+y^sv_{x,r}-v_x^sy_r-x^sv_{y,r})---(E.6.29)
rrs=ersT(vss(rs)−vr)+cωe(vysxr+ysvx,r−vxsyr−xsvy,r)−−−(E.6.29)
式中,
v
s
=
(
v
x
s
,
v
y
s
,
v
z
s
,
)
T
,
v
r
=
(
v
x
,
r
,
v
y
,
r
,
v
z
,
r
)
T
v^s=(v_x^s,v_y^s,v_z^s,)^T,v_r=(v_{x,r},v_{y,r},v_{z,r})^T
vs=(vxs,vys,vzs,)T,vr=(vx,r,vy,r,vz,r)T。利用类似于接收机位置估计的迭代LSE,我们可以得到接收机速度和时钟漂移如下:
x
^
=
lim
i
→
∞
x
^
i
=
(
v
˙
r
T
,
c
d
^
t
˙
r
)
T
−
−
−
(
E
.
6.30
)
\hat x=\lim\limits_{i\to \infty}\hat x_i=(\dot v_r^T,c\hat{d}\dot t_r)^T---(E.6.30)
x^=i→∞limx^i=(v˙rT,cd^t˙r)T−−−(E.6.30)
其中权矩阵W设为I(非加权LSE)。
(5)方案验证和RAIM FDE
(3)中所描述的估计接收机位置可能包含由于未建模测量误差而无效的解。RTKLIB在得到估计的接收机位置后,为了测试是否有效并剔除无效的解,采用了以下验证。如果验证失败,该解决方案会被警告消息拒绝。
v
s
=
(
P
r
s
−
(
ρ
^
r
s
+
c
d
^
t
r
−
c
d
T
s
+
I
r
s
+
T
r
s
)
)
σ
s
−
−
−
(
E
.
6.31
)
v
=
(
v
1
,
v
2
,
v
3
,
.
.
.
v
m
)
T
−
−
−
(
E
.
6.32
)
v
T
v
m
−
n
−
1
<
χ
α
2
(
m
−
n
−
1
)
−
−
−
(
E
.
6.33
)
G
D
O
P
<
G
D
O
P
t
h
r
e
s
−
−
−
(
E
.
6.34
)
v_s=\frac {(P_r^s-(\hat \rho_r^s+c\hat{d} t_r-cdT^s+I^s_r+T^s_r))}{\sigma_s}---(E.6.31)\\ v=(v_1,v_2,v_3,...v_m)^T---(E.6.32)\\ \frac{v^Tv}{m-n-1}<\chi_\alpha^2(m-n-1)---(E.6.33)\\ GDOP<GDOP_{thres}---(E.6.34)
vs=σs(Prs−(ρ^rs+cd^tr−cdTs+Irs+Trs))−−−(E.6.31)v=(v1,v2,v3,...vm)T−−−(E.6.32)m−n−1vTv<χα2(m−n−1)−−−(E.6.33)GDOP<GDOPthres−−−(E.6.34)
其中n为估计参数的个数,m为测量值的个数。
χ
α
2
(
n
)
\chi_\alpha^2(n)
χα2(n)是自由度n的卡方分布和
α
=
0.001
(
0.1
\alpha= 0.001(0.1%)
α=0.001(0.1。GDOP是几何DOP(精度稀释)。GDOPthres可以设置为处理选项ʺGDOP的拒绝阈值ʺ。
除上述方案验证外,2.4.2版本中还增加了RAIM(接收机自主完整性监测)FDE(故障检测和排除)功能。如果处理选项ʺRAIM FDEʺ被启用,(E.6.33)的卡方测试失败,RTKLIB通过排除一个又一个可见卫星来重新估计。在所有重试后,选择归一化平方残差最小的估计接收机位置vTv作为最终解。在这种方案中,由于卫星故障、接收机故障或大多径导致的无效测量被排除为离群值。请注意,对于两个或多个无效度量,此特性是无效的。它还需要两颗冗余的可见卫星,这意味着至少需要6颗可见卫星才能得到最终的解决方案。