GNSS之伪距单点定位

测距码测定卫地距

原理:首先架设卫星钟和接收机钟均无误差,都能与标准的GPS时间保持严格同步。在某一时刻t,卫星在卫星钟的控制下发出某一结构的测距码,与此同时,接收机则在接收机钟的控制下产生相同的测距码。由卫星所产生的复制码经 Δ t \varDelta t Δt时间的传播后到达接收机并被接收机所接收。由接收机所产生的复制码则经过一个时间延迟器延迟时间 τ \tau τ后与接收到的卫星信号进行比对。如果这两个信号尚未对齐,就调整延迟时间 τ \tau τ,直至这两个信号对齐为止。此时,复制码的延迟时间 τ \tau τ就等于卫星信号的传播时间 Δ t \varDelta t Δt,将其乘以真空中的光速 c c c 后即可得到卫地间的伪距 ρ \rho ρ
ρ = τ ∗ c = Δ t ∗ c \rho = \tau * c = \varDelta t * c ρ=τc=Δtc
由于卫星钟和接收机钟实际上不可避免地存在误差,此外还有电离层、对流层等的影响。求得的 ρ \rho ρ并不等于卫星与测站的真实距离,故称为伪距。

观测方程

在伪距测量中,直接量测值是信号到达接收机的时刻tr与信号离开卫星的时刻(卫星钟量测)之差,此差值与真空中的光速c乘积即为观测值p,即:
ρ r s = c ⋅ ( t r − t s ) \rho _{r}^{s}=c\cdot \left( t_{r}^{}-t_{s}^{} \right) ρrs=c(trts)
但实际上,卫星钟与接收机钟均有误差
t r ′ = t r − δ t r t_{r}^{'}=t_r-\delta t_r tr=trδtr
t s ′ = t s − δ t s t_{s}^{'}=t_s-\delta t_s ts=tsδts
代入得:
R r s = c ⋅ ( t r ′ − t s ′ ) + c ⋅ ( δ t r − δ t s ) = ρ r s + c ⋅ ( δ t r − δ t s ) R_{r}^{s}=c\cdot \left( t_{r}^{'}-t_{s}^{'} \right) +c\cdot \left( \delta t_r-\delta t_s \right) = \rho _{r}^{s}+c\cdot \left( \delta t_r-\delta t_s \right) Rrs=c(trts)+c(δtrδts)=ρrs+c(δtrδts)
加上电离层、对流层、多路径等各种带来的误差:
R r s = ρ r s + c ⋅ ( δ t r − δ t s ) + δ Σ R_{r}^{s}=\rho _{r}^{s}+c\cdot \left( \delta t_r-\delta t_s \right)+\delta _{\varSigma} Rrs=ρrs+c(δtrδts)+δΣ
R r s R^{s}_{r} Rrs 表示伪距,伪距=真实距离+误差距离,加上电离层、对流层带来的误差
根据卫星与测站坐标,卫星 ( x i , y i , z i ) (x_{i},y_{i},z_{i}) (xi,yi,zi)与测站间 ( x , y , z ) (x,y,z) (x,y,z)几何距离为
ρ r s = ( x i − x ) 2 + ( y i − y ) 2 + ( z i − z ) 2 \rho_{r}^{s}=\sqrt{\left( x_i-x \right) ^2+\left( y_i-y \right) ^2+\left( z_i-z \right) ^2} ρrs=(xix)2+(yiy)2+(ziz)2
R r s = ( x i − x ) 2 + ( y i − y ) 2 + ( z i − z ) 2 + c ⋅ ( δ t r − δ t s ) + δ Σ R_{r}^{s}=\sqrt{\left( x_i-x \right) ^2+\left( y_i-y \right) ^2+\left( z_i-z \right) ^2}+c\cdot \left( \delta t_r-\delta t_s \right)+\delta _{\varSigma} Rrs=(xix)2+(yiy)2+(ziz)2 +c(δtrδts)+δΣ
如何求解出方程呢?式中存在未知数 ( x , y , z ) (x,y,z) (x,y,z) δ t r \delta t_r δtr ,卫星位置 ( x i , y i , z i ) (x_{i},y_{i},z_{i}) (xi,yi,zi)、卫星钟差 δ t s \delta t_s δts是可以通过广播星历得到的,一般伪距定位不考虑电离层等误差改正。故方程中存在四个未知数,欲求解出测站坐标,至少需要四个方程,即在测站位置需同时接收到4颗及以上的卫星,才能对方程进行求解。为方便方程的解算,通常需对伪距方程进行线性化,在多数情况下,接收到的卫星数量会大于4颗,一般采用最小二乘法对方程进行解算。
ρ r s = ( x i − x ) 2 + ( y i − y ) 2 + ( z i − z ) 2 \rho_{r}^{s}=\sqrt{\left( x_i-x \right) ^2+\left( y_i-y \right) ^2+\left( z_i-z \right) ^2} ρrs=(xix)2+(yiy)2+(ziz)2 x = ( x r 0 , y r 0 , z r 0 ) x=\left( x_{r}^{0},y_{r}^{0},z_{r}^{0} \right) x=(xr0,yr0,zr0)进行泰勒展开,
{ ρ = F ( x 0 ) + ∂ F ( x ) ∂ x ∣ x 0 d x + ε d x = x − x 0 = [ Δ x Δ y Δ z ]    ∂ F ( x ) ∂ x = ( ∂ F ∂ x r , ∂ F ∂ y r , ∂ F ∂ z r ) \begin{cases} \rho =F\left( x_0 \right) +\frac{\partial F\left( x \right)}{\partial x}\mid_{x_0}^{}dx+\varepsilon\\ dx=x-x_0=\left[ \begin{array}{c} \varDelta x\\ \varDelta y\\ \varDelta z\\\end{array} \right]\\ \,\,\frac{\partial F\left( x \right)}{\partial x}=\left( \frac{\partial F}{\partial x_r},\frac{\partial F}{\partial y_r},\frac{\partial F}{\partial z_r} \right)\\\end{cases} ρ=F(x0)+xF(x)x0dx+εdx=xx0= ΔxΔyΔz xF(x)=(xrF,yrF,zrF)
代入 R r s R_{r}^{s} Rrs,记为 R R R,保留未知量,得 R ∼ \overset{\sim}R R:
R ∼ = R − ρ 0 + c ⋅ δ t r − δ Σ R ∼ = [ − ( x s − x r 0 ) ρ 0 , − ( y s − y r 0 ) ρ 0 , − ( z s − z r 0 ) ρ 0 , 1 ] [ Δ x r Δ y r Δ z r c δ t r ] + ε \overset{\sim}{R}=R-\rho _0+c\cdot \delta t_r-\delta _{\varSigma}\\\overset{\sim}{R}=\left[ \frac{-\left( x_s-x_{r}^{0} \right)}{\rho _0},\frac{-\left( y_s-y_{r}^{0} \right)}{\rho _0},\frac{-\left( z_s-z_{r}^{0} \right)}{\rho _0},1 \right] \left[ \begin{array}{c} \varDelta x_r\\ \varDelta y_r\\ \varDelta z_r\\ c\delta t_r\\\end{array} \right] +\varepsilon R=Rρ0+cδtrδΣR=[ρ0(xsxr0),ρ0(ysyr0),ρ0(zszr0),1] ΔxrΔyrΔzrtr +ε
记为 L = A X + υ L=AX+\upsilon L=AX+υ
多个 L = A X + υ L=AX+\upsilon L=AX+υ进行联立,采用最小二乘法进行求解
注意点:

  • x = ( x r 0 , y r 0 , z r 0 ) x=\left( x_{r}^{0},y_{r}^{0},z_{r}^{0} \right) x=(xr0,yr0,zr0)表示为用户接收机天线位置的近似值,通常初始化为 ( 0 , 0 , 0 ) (0,0,0) (0,0,0)。我们将计算出来的 x = ( x r 0 , y r 0 , z r 0 ) x=\left( x_{r}^{0},y_{r}^{0},z_{r}^{0} \right) x=(xr0,yr0,zr0)作为下一次的 ( x r , y r , z r ) (x_r,y_r,z_r) (xr,yr,zr),通过多次迭代计算后,就可以获取误差值最小的 ( x r , y r , z r ) (x_r,y_r,z_r) (xr,yr,zr) ,也就是我们需要计算的接收机天线位置坐标。
    x = d x + x 0 = [ Δ x Δ y Δ z ] + [ x 0 y 0 z 0 ] x=dx+x_0=\left[ \begin{array}{c} \varDelta x\\ \varDelta y\\ \varDelta z\\\end{array} \right] +\left[ \begin{array}{c} x_0\\ y_0\\ z_0\\\end{array} \right] x=dx+x0= ΔxΔyΔz + x0y0z0

程序实现步骤:

  1. 读取卫星星历数据、原始观测量数据(即卫星的伪距、载波等);
  2. 通过卫星星历以及伪距信息计算出卫星基于ECEF的坐标、每个卫星的钟差;
  3. 将接收机天线位置初始化为(0,0,0);
  4. 根据推导的方程中各公式,结合卫星坐标、时间、伪距信息计算出对应的数值;
  5. 根据最小二乘法,将上述的数据整理为对应的矩阵;
  6. 根据矩阵计算法则计算出的值;
  7. 重复4-6步,并设定值的变化满足一个很小的值的时候,结束迭代;
  8. 输出对应的坐标。
  • 13
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值