Skip to content

本项目为GNSS伪距单点定位完善版本。它能够根据星历文件与观测值文件快速解算出观测值文件每一个历元下的接收机位置。

luohongk/PseudorangeSPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PseudorangeSPP

本项目为GNSS伪距单点定位python面向对象的版本

说明

  • 如果代码有问题的地方或者有疑问的地方,欢迎联系我,我的github主页有联系方式。
  • 代码我还会继续完善,后面会把代码里面的变量命名以及代码注释都写得非常规范。
  • 后续我还会在这个代码里面加入一些有趣的东西,敬请期待。

运行此项目

git clone https://github.com/luohongk/PseudorangeSPP.git
cd PseudorangeSPP
python main.py

教学视频

B站GNSS伪距单点定位教学

文件解释

文件名 文件功能
main.py 主函数,函数入口
readfile.py 文件读取类,读与存数据
satelite.py 卫星类,用于计算位置位置
position.py 定位类,用于进行观测值的匹配以及地面坐标解算

定位原理

如果通过广播星历以及观测值文件进行单点定位比较困难,需要熟系观测值文件格式以及卫星位置计算的一些算法。可以再加电离层,对流层延迟。

对于每一个观测伪距

$$ R=\sqrt{\left( x_s-x_r \right) ^2+\left( y_s-y_r \right) ^2+\left( z_s-z_r \right) ^2}=f\left( x_r,y_r,z_r \right) $$

线性化(泰勒公式):

$$ R^0+V=\sqrt{\left( x_s-x_{r}^{0} \right) ^2+\left( y_s-y_{r}^{0} \right) ^2+\left( z_s-z_{r}^{0} \right) ^2}+\frac{\partial f}{\partial x_r}\varDelta x_r+\frac{\partial f}{\partial y_r}\varDelta y_r+\frac{\partial f}{\partial z_r}\varDelta z_r $$

上述公式线性化后可以化简为:

线性化后的公式

L

有:

P0

上述公式可以简化为

$$ V=Bx-L $$

$$ x=\left( B^TB \right) ^{-1}\left( B^TL \right) $$

需要进行迭代的话迭代方程为

$$ \left{ \begin{array}{l} x_r=x_r+\varDelta x_r\\ y_r=y_r+\varDelta y_r\\ z_r=z_r+\varDelta z_r\\ \end{array} \right. $$

About

本项目为GNSS伪距单点定位完善版本。它能够根据星历文件与观测值文件快速解算出观测值文件每一个历元下的接收机位置。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published