GPS差分定位

目录

 

1 差分定位

2 差分定位分类

3 位置差分原理

4 伪距差分原理


1 差分定位

差分GPS系统包含着一个或多个安装在已知坐标位置点上的GPS接收机作为基准站接收机,通过基准站接收机对GPS卫星信号的测量而计算出差分校正量,然后将差分校正量播发给位于差分服务范围内的用户(又称流动站)接收机,以提高用户接收机的定位精度。尽管不同的差分系统均基于这样一个相同的思路,但是它们仍可能具有各自不同的运行环境、操作方式和服务性能。差分GPS系统可从以下多个方面进行分类。

2 差分定位分类

(1)根据系统所服务的地理范围来分,差分GPS通常被分为局域、区域和广域三大类,他们分别对应着不同长度的基线距离。一般来说,虽然基准站与用户接收机之间的基线距离较短的局域查分系统有着较小的差分服务面积,但是它的定位精度较高;反之虽然基线距离较长的广域差分系统有着较大的服务覆盖面积,但是其定位精度相对有所降低。

(2)根据予以差分校正的目标参量不同,差分GPS可主要分为位置差分、伪距差分、载波相位平滑后的伪距差分以及载波相位差分四种。

位置差分系统认为基准站接收机的定位误差与用户接收机的定位误差相关,于是它将基准站收机的定位值与经精密测绘得到的真实位置值之差作为差分校正量并将之播发出去,以用于对户接收机定位值的直接校正。虽然位置差分的思路相当简单,但它存在如下一个严重缺陷:为了让于不同位置的基准站接收机与用户接收机更大程度地拥有一个相同的定位结果误差,这两个接几必须至少采用同一种定位算法和同一套卫星测量值组合,而这在实际操作中会遇到许多困稍具体地讲,一方面,基准站接收机和所有利用其差分服务的用户接收机不但应当采用例如最小二乘法或者卡尔曼滤波等同一种定位算法,而且算法中的各个参数值也必须尽一致。

与差分校正量在定位领域内的位置差分不同,其他三种差分技术的差分校正量则均在测距领,这也就是本章一开始所默认的对GPS测量值进行差分校正的那种。由于载波相位测量值度比伪距测量值的精度要高出几个数量级,因而基于载波相位的差分系统通常具有最高的定位,可以用来实现精密定位。除了高精度之外,载波相位测量值的另一个主要特点是其所包的周整模糊度,而事实上我们将会发现,利用载波相位测量值实现精密定位的根本任务正是出载波相位测量值中的周整模糊度。载波相位平滑后的伪距,它的特点是没有周整模糊度,其精度介于伪距与载波相位测量值的精度之间。一般来说,基于伪距差分系统可获得分米级的定位精度,而基于载波相位的差分系统的定位精度最高能达毫米级。

(3)根据用户接收机的 定位结果形式来分,差分GPS定位可以分为绝对差分定位和相对差分定位两种。

在绝对定位中,基准站接收天线的位置坐标需要被事先精确地确定,而利用差分服务的用户接收机可求解出器天线位置在同一坐标系统中定位置;相反,相对定位系可以不需要知道基准站接收天线的精确坐标位置,用户也并不十分关注它的绝对位置坐标,而用户接收机所解得的定位结果是相对于基准站位置的位移向量(即基线向量)。

3 位置差分原理

安置在已知点基准站上的GPS接收机经对4颗或4颗以上的卫星观测,便可实现定位,求出基准站的坐标。

由于存在着卫星星历、时钟误差、大气折射误差等,该坐标与已知坐标不一样,存在误差:

                                                           \Delta X = X-X^{'}

                                                           \Delta Y = Y-Y^{'}

                                                           \Delta Z = Z-Z^{'}

将上述坐标改正数利用数据链将坐标改正数发送给用户站。用户站用接收到的坐标改正数对其坐标进行改正,及:

                                                         X_{k} =X_{k} ^{'} +\Delta X

                                                          Y_{k} =Y_{k} ^{'} +\Delta Y

                                                         Z_{k} =Z_{k} ^{'} +\Delta Z

如果考虑数据传送时间引起的用户站位置的瞬间变化,则可写为:

                                                         X_{k} =X_{k} ^{'} +\Delta X +\frac{d(X_{k} ^{'} +\Delta X)}{dt}(t-t_{0})

                                                          Y_{k} =Y_{k} ^{'} +\Delta Y+\frac{d(Y_{k} ^{'} +\Delta Y)}{dt}(t-t_{0})

                                                         Z_{k} =Z_{k} ^{'} +\Delta Z+\frac{d(Z_{k} ^{'} +\Delta Z)}{dt}(t-t_{0})

优点:可以提高精度,而且数据传输量小,计算方法简单。

缺点:难以确保基准站和用户站观测统一组卫星,位置差分定位效果不如伪距差分好。

4 伪距差分原理

它是通过在基准站上利用基准站的已知坐标求出测站至卫星的距离,并将其与与含有误差的伪距观测值比较,然后利用一个滤波器将此差值滤波并求出其偏差,并将所有卫星的测距误差传输给用户,用户利用此测距误差改正伪距观测值,并利用改正后的伪距值求出自身的坐标。

设测站i与卫星j之间在t时刻的伪距为:

                                                          \rho _{i}^{'j} = \rho _{i}^{j}+c[\delta t_{i}-\delta t^{j}]+\delta I_{i}^{j}+\delta T_{i}^{j}+d\rho _{i}^{j}

根据基准站的三维已知坐标和GPS卫星星历,可以算得该时刻两者之间的几何距离:

                                                     \rho _{i}^{j} = [[X^{j}-X_{i}]^{2}+[Y^{j}-Y_{i}]^{2}+[Z^{j}-Z_{i}]^{2}]^{1/2}

故由基准站接收机测得包含各种误差的伪距与几何距离之间存在差值:

                                                      \delta \rho _{i}^{j} = \rho _{i}^{'j} - \rho _{i}^{j}

将该伪距的改正值发给用户的接收机,则用户接收机改正后的伪距值:

                                                        \overline{\rho _{k}^{'j}} = \rho _{k}^{'j}-\delta \rho _{i}^{j}

若考虑信号传送的伪距改正数的时间变化率,则有:

                                                    \overline{\rho _{k}^{'j}} = \rho _{k}^{'j}-\delta \rho _{i}^{j}-\frac{d\delta \rho _{i}^{j} }{dt}(t-t_{0})

当用户运动站与基准站之间的距离小于100km时,则有:

                                                     d\rho _{k}^{j} = d\rho _{i}^{j}

                                                    \delta I_{k}^{j} = \delta I_{i}^{j}

                                                   \delta T _{k}^{j} = \delta T _{i}^{j}

                                                   \delta t ^{j} = \delta t ^{j}

因此,改正后的伪距为:

                                         \rho _{i}^{'j} = [[X^{j}-X_{i}]^{2}+[Y^{j}-Y_{i}]^{2}+[Z^{j}-Z_{i}]^{2}]^{1/2}+c*(\delta t_{k}-\delta t_{i})

当基准站同用户站同时观测四颗以上相同的卫星,即可实现用户站的定位。

由于差分定位是利用两站的公共误差的抵消来实现提高精度,而误差的公共性又与两站距离有关,所以,随着两站距离的增加。效果会变差。

  • 8
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
GPS差分定位算法主要用于提高定位精度,它通过将基准站的GPS测量结果与移动站的GPS测量结果进行比较,消除了大部分误差。以下是使用C语言实现GPS差分定位算法的基本步骤: 1. 获取移动站和基准站的GPS测量结果,包括卫星的信号强度、卫星的位置和接收机的时钟误差等信息。 2. 对移动站和基准站的GPS测量结果进行处理,计算卫星的位置和接收机的时钟误差等参数。 3. 根据计算得到的卫星位置和接收机的时钟误差等参数,计算移动站和基准站之间的距离差异。 4. 根据距离差异,计算移动站的位置。 下面是一个简单的C语言程序示例,用于实现GPS差分定位算法: ```c #include <stdio.h> #include <math.h> #define PI 3.14159265358979323846 #define EARTH_RADIUS 6378137.0 // 计算两个经纬度之间的距离 double calc_distance(double lon1, double lat1, double lon2, double lat2) { double rad_lat1 = lat1 * PI / 180.0; double rad_lat2 = lat2 * PI / 180.0; double a = rad_lat1 - rad_lat2; double b = lon1 * PI / 180.0 - lon2 * PI / 180.0; double s = 2 * asin(sqrt(pow(sin(a / 2), 2) + cos(rad_lat1) * cos(rad_lat2) * pow(sin(b / 2), 2))) * EARTH_RADIUS; return s; } // 计算移动站的位置 void calc_position(double lat1, double lon1, double lat2, double lon2, double distance_diff) { double alpha1 = atan2(sin(lon1 - lon2) * cos(lat2), cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon1 - lon2)); double alpha2 = atan2(sin(lon2 - lon1) * cos(lat1), cos(lat2) * sin(lat1) - sin(lat2) * cos(lat1) * cos(lon2 - lon1)); double lat = lat1 + distance_diff * cos(alpha1); double lon = lon1 + distance_diff * sin(alpha2); printf("移动站的位置为:(%lf, %lf)\n", lat, lon); } int main() { double lat1 = 39.9087, lon1 = 116.3975; // 移动站的位置 double lat2 = 39.9086, lon2 = 116.3975; // 基准站的位置 double distance_diff = 5.0; // 距离差异 double distance = calc_distance(lon1, lat1, lon2, lat2); printf("移动站和基准站之间的距离为:%lf\n", distance); calc_position(lat1, lon1, lat2, lon2, distance_diff); return 0; } ``` 这是一个简单的示例,实际的GPS差分定位算法包括更多的细节和步骤。需要根据具体情况进行调整和改进。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值