产品搜索 Search
产品目录 Product catalog
北京北斗联星科技有限公司
销售电话:+86-10-63344996
售后服务:18612719456
销售传真:
公司邮箱:bdlx@qq.com
公司网站:www.3snav.com
办公地址:北京市西城区马连道路11号一商大厦818

技术文章
浅析差分GPS的算法及数据格式
点击次数:10871 发布时间:2009-11-20 打印本页面 返回

何 怡1,李扬继2

  摘 要:简要介绍了GPS 25XL的星历数据及位置数据遵从的标准,详述了差分GPS技术在消除电离层、对流层误差方面的算法,同时对RTCM SC-104电文格式进行了分析,并在此基础上给出了构造RTCM SC-104格式差分数据的方法,为相应产品的开发提供了有益的经验。
  
一、引言
  GPS利用zui简单的C/A码定位,精度可达到14m;利用P码定位,精度可达到3m。美国政府曾经采取SA(Selective Availability)政策,人为地将误差引入卫星时钟和卫星数据中,极大地限制了定位技术的应用。现在美国根据形势对全部卫星取消了SA政策,这使差分GPS(DGPS)的精度有了更大提高,但修正速率因不受SA的影响而放慢。因此,即使取消了SA政策,DGPS仍然具有很高的利用价值,是重要的导航定位产品之一。

  商用的差分GPS设备已经投入使用,其用户设备采用双工传输的串行I/O通用通信接口,并采用通用的RTCM SC-104电文格式。分析差分数据电文格式有助于我们利用RTCM格式的差分改正信号,修正定位误差。

  本文将详细介绍差分GPS算法和国际通用的GPS差分数据格式RTCM SC-104。

二、相关的数据格式遵从的标准
  在下面将要介绍的算法中,许多参数都来自GPS的星历数据和位置数据。在本文列出的参考资料中,可以方便地查阅这两种数据格式,所以这里不再赘述,只简要介绍一下它们遵从的标准。

  星历数据和位置数据结构中有很多参数是float型和double型的,它们都遵从IEEE-754标准。

三、DGPS算法介绍
  GPS定位是利用一组卫星的伪距、星历、卫星发射时间等观测量和用户钟差来实现的。要获得地面的三维坐标,必须对至少4颗卫星进行测量。在这一定位过程中,存在3部分误差:
  *部分误差是由卫星钟误差、星历误差、电离层误差、对流层误差等引起的;
  第二部分是由传播延迟导致的误差;
  第三部分为各用户接收机固有的误差,由内部噪声、通道延迟、多径效应等原因造成。
  利用差分技术,*部分误差可以完全消除;第二部分误差大部分可以消除,消除程度主要取决于基准接收机和用户接收机的距离;第三部分误差则无法消除。
  下面,我们主要介绍消除由于电离层延迟和对流层延迟引起的误差的算法。在算法中使用的时间系统为GPS时,坐标系统为WGS-84坐标系。
1消除电离层误差的算法
  我们主要通过电离层网格延迟算法来获得实际的电离层延迟值,以消除电离层误差。具体过程如下:解算星历,得出卫星位置→求电离层穿透点位置→求对应网格点→求网格4个顶点的电离层延迟改正数→内插获得穿透点垂直延迟改正数→求穿透点的实际延迟值。
  (1)卫星位置的计算 
  解算出星历数据后,加入星历修正和差分信息,便可计算出卫星位置。
  从GPS OEM板接收到的是二进制编码的星历数据流,必须按照本文前面部分列出的数据结构解算星历数据,再依据IEEE-754标准将其转换为十进制编码的数据。在这里,需要解算的参数有:轨道长半轴的平方根(sqrta)、平近点角改正(dn)、星历表基准时间(toe)、toe时的平近点角(m0)、偏心率(e)、近地点角距(w)、卫星轨道摄动修正参数(cus cuc cis ciccrs crc)、轨道倾角(i0)、升交点赤经(omg0)、升交点赤经变化率(odot)。
  另外,在卫星位置的计算中,需要一些常量参数,下面一并列出:WGS-84椭球长半轴(a=6378137.0 m),WGS-84椭球扁率(f=1/298.257223563)、地球自转角速度(we=7.292115×10-5rad/s),地球引力常数(GM=3.986005×1 014m3/s2)。
  下面列出卫星位置的具体解算过程:
  1)计算卫星运行的平均角速度:先计算圆轨道的平均角速度,由于GPS卫星轨道实际为微椭球形,所以应在计算的原轨道的平均角速率上加一个修正量; 
  2)计算归化时刻:tk=t-toe。tk为相对于星历基准时间的归化时刻。应考虑一个星期(604 800 s)的开始或结束,当tk>302 400 s,应减去604 800 s;tk<-302 400 s,应加上604 800 s;
  3)计算观测时刻的平近点角Mk:Mk=m0+n·tk;
  4)计算偏近点角Ek:利用开普勒方程迭代方式计算,电文中已给出基准时刻的平近点角m0,并在3)中求得Mk,Ek=Mk+e·sinEk (均以弧度计)。
  迭代计算:取E0=Mk,Ei+1=Mk+e·sinEi,代入计算,当|Ei+1-Ei|<ε=10-12时停止迭代;
  5)计算卫星矢径rk:rk=a·(1-e·cosEk);
  6)计算卫星真近点角Vk:Vk=
  7)计算升交点角距Φk:Φk=Vk+ω(ω为电文中的近地点角距);
  8)计算摄动改正项δu、δr、δi:
  
  9)计算经过摄动改正的升交距角Uk、卫星矢径rk和轨道倾角ik:
  
  11)计算观测时刻的升交点经度Ωk:Ωk=Ω-GAST。其中:Ω为升交点赤经、春分点、升交点角距;GAST为格林尼治视恒星时、春分点、格林尼治起始子午线角距。升交点赤经:Ω=Ωoe-Ωtk。
  卫星电文提供一个星期的开始时刻tk(星期六午夜/星期日子夜的交换时刻)的格林尼治视恒星时GASTw,由于地球自转,GAST不断增加,其增值率为地球自转速率we。
  
  12)计算卫星在地心坐标系中的位置。轨道平面直角坐标系转换为地心坐标系:沿地心升交点(X轴)旋转ik角,沿Z轴旋转Ωk角(依照右手定则为:-ik、-Ωk)。经由旋转矩阵二次变换:
  
  (2)电离层改正数的计算
  在已经求得卫星位置的前提下,根据卫星的坐标和GPS输出的用户概略位置可以求得电离层穿透点的位置,从广域差分广播数据中查找其所在的网格点,获得对应网格4个顶点的电离层垂直延迟改正数,然后内插获得电离层穿透点垂直延迟改正数,并利用垂直延迟改正数来求得电离层穿透点实际延迟的改正数。
  1)计算用户电离层穿透点的概略位置:需要求得用户仰角E和卫星相对用户方位角Au(λ,φ分别表示经度、纬度)。
  卫星、用户、地心构成一个三角形ΔSUO,如图1所示。


  2)用户电离层穿透点垂直延迟改正值的获得。
  在已经求得用户电离层穿透点概略位置的情况下,查找网格点,获得用户所在的网格以及网格4个顶
 
  确定用户所在网格的方法非常简单,只要在给出的数据流中查找同时满足条件(1)和(2)的网格顶点即可:
  
  穿透点垂直延迟值因4个网格顶点的排列顺序的不同而不同,从而影响zui终的定位精度,所以确定网格顶点的顺序至关重要。假设已经获得的网格4个顶点的经度、纬度、垂直延迟值分别为(φ1,λ1, 
 



  我们使用内插的方法求得用户电离层穿透点的垂直延迟值,内插公式为
  
 
4个网格点的经、纬度,而Δλ=λIPP-λ1,Δφ=φIPP
  

  3)求得用户电离层穿透点实际延迟改正值。倾斜因子:
  
2消除对流层误差的算法
  这里选取改进的Hopfield模型对对流层进行修正:
  
  已知用户概率位置:经度L,纬度B,高度h。
  海平面标准气象元素:t0=18℃,P0=1013.25mbar,H0=50%。
  用户的气象元素计算如下(将用户的气象元素近似为用户位置的函数):
  
  分别计算干、湿分量折射改正量:
  
  rdry、rwet分别表示测站到传播路径与干湿折射指数趋于零的边界之交点的距离(m),其计算公式为
  
其中i为dry、wet,E为卫星高度仰角,r0为用户地心向径,单位为米。

四、DGPS数据格式(RTCM SC-104格式)分析
1RTCM SC-104格式的电文编码
  RTCM电文是由二进制编码的数据流组成,每一组由N+2个30 bit的字码组成,每个字码分解为5个6 bit的字节,这样可允许在标准计算机UART间串行传送。如果所用的UART提供8 bit,则数据的zui高位(MSB)和次高位仅仅作为填充位,固定填为为“0”和“1”,是无效数据。MSB标为d1,LSB标为d30。每个字码的第五个字节(d25~d30)为奇偶校验码,用于检验本字码的RTCM数据。前一组RTCMzui后一个字码的低两位(d29和d30),标记为d29*和d30*,用于产生本组*字码的奇偶校验码。奇偶校验码遵从(32,26)汉明码检错准则,汉明校验矩阵为H,校验公式为:S6×1=H6×24⊕M24×1,式中M24×1为电文中每个字码的前24位信息位。由于卫星电文的子帧长为30 bit,为了满足字长和信息位(24 bit)的要求,将(32,26)汉明码缩短,去掉两位信息位构成(32,24)缩短码。这种缩短码的纠错能力和zui小距离与原码相同。
  RTCM电文结构包含2个字头和N个数据字。下面详细介绍电文结构:
  RTCM SC-104电文结构:
  第1字码:

 

  第2字码:



  第3字码:



  其中:
  第1字码:
  引导字:固定填入01100110
  基台识别:固定填入1111111111
  第2字码:
  修正Z计数=(星期的GPS时间%3600)/0.6
  序号:从001开始计数
  帧长:该帧电文数据的字节数
  从第3个字码起:
  填入卫星信息数据(比例因子——1位,UDRE——2位,卫星识别——5位,伪距改正数——16位,伪距变化率改正值——8位,卫星发布日期——8位),每填入24位之后对这些数据进行奇偶校验,奇偶校验码是6位,每30位(24位数据+6位奇偶校验码)便组成1个字码。
  比例因子:填0或1;
  卫星识别:卫星号,若解读的是星历中第32颗卫星的数据,则将卫星识别置0;否则,将星历数据中的卫星号svid加1;
  伪距改正数:按照一定的数学模型解算出;
  数据发布日期:选取当前日期。
  zui后一个字码:若此字码的数据信息不足24位,则用填充位“1010…”补足24位。
  RTCM电文中每个字码奇偶校验位的zui低位(d30*)决定是否对下一字码的前四个字节取补码(第五个字节不能取补码)。若d30*为1,则取补码,否则取原码。
  电文格式采用6/8进行数据传输。bit7设置为1,bit8设置为0。由于UART为约定的非同步通讯,首先发送或接收LSB。所以,每一个字节在发送前先要完成“滚动”,这在效果上保持了RTCM电文的逻辑序列。因此,在发送媒介中MSB优先。所谓“滚动”,就是d1和d6、d2和d5、d3和d4进行互换(仅滚动数据位,bit7、bit8不参与滚动)。
  根据上面的分析可知:63<byte<128(byte为电文字码中的字节),每个字节的低6位是有效数据。
2获得GPS差分数据的流程
  (1)将计算数据转换为二进制,按照格式填入字码中;
  (2)进行奇偶校验;
  (3)若需要,字节取补码(奇偶校验位不能取补码);
  (4)进行字节滚动(bit7、bit8不参与滚动)。

五、结束语
  本文论述了差分GPS的原理和应用,并提出了构造RTCM SC-104 格式差分数据的方法。为了扩展差分GPS的用途领域,对具体的算法和性能还需要进行深入研究。


参考文献


[1]干国强,邱致和. 导航与定位——现代战争的北斗星[M].北京:国防工业出版社,2000.
[2]王广运,郭秉义,李洪涛. 差分GPS定位技术与应用[M].北京:电子工业出版社,1998.
[3]李洪涛,许国昌,薛鸿印,等.GPS应用程序设计[M].北京:科学出版社,1999.
 

点击这里给我发消息
传真:

电话:
+86-10-63344996
手机:
18612719456