GPS资料收集

来源:互联网 发布:网络工程公司经营范围 编辑:程序博客网 时间:2024/06/05 00:39

  GPS即全球定位系统(Global Positioning System)是美国从本世纪70年代开始研制,历时20年,耗资200亿美元,于1994年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。经近10年我国测绘等部门的使用表明,GPS以全天候、高精度、 自动化、高效益等显著特点,赢得广大测绘工作者的信赖,并成功地应用于大地测量、工程测量、航空摄影测量、运载工具导航和管制、地壳运动监测、工程变形监测、资源勘察、地球动力学等多种学科,从而给测绘领域带来一场深刻的技术革命。

 

  全球定位系统(Global Positioning System)是美国第二代卫星导航系统。是在子午仪卫星导航系统的基础上发展起来的,它采纳了子午仪系统的成功经验。和子午仪系统一样,全球定位系统由空间部分、地面监控部分和用户接收机三大部分组成。

 

  按目前的方案,全球定位系统的空间部分使用24颗高度约2.02万千米的卫星组成卫星星座。21+3颗卫星均为近圆形轨道,运行周期约为11小时58分,分布在六个轨道面上(每轨道面四颗),轨道倾角为55度。卫星的分布使得在全球的任何地方,任何时间都可观测到四颗以上的卫星,并能保持良好定位解算精度的几何图形(DOP)。这就提供了在时间上连续的全球导航能力。

 

  地面监控部分包括四个监控站、一个上行注入站和一个主控站。监控站设有GPS用户接收机、原子钟、收集当地气象数据的传感器和进行数据初步处理的计算机。监控站的主要任务是取得卫星观测数据并将这些数据传送至主控站。主控站设在范登堡空军基地。它对地面监控部实行全面控制。主控站主要任务是收集各监控站对GPS卫星的全部观测数据,利用这些数据计算每颗GPS卫星的轨道和卫星钟改正值。上行注入站也设在范登堡空军基地。它的任务主要是在每颗卫星运行至上空时把这类导航数据及主控站的指令注入到卫星。这种注入对每颗GPS卫星每天进行一次,并在卫星离开注入站作用范围之前进行最后的注入。

 

全球定位系统具有性能好、精度高、应用广的特点,是迄今最好的导航定位系统。随着全球定位系统的不断改进,硬、软件的不断完善,应用领域正在不断地开拓,目前已遍及国民经济各种部门,并开始逐步深入人们的日常生活。

GPS定位原理
  GPS定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。如图所示,假设t时刻在地面待测点上安置GPS接收机,可以测定GPS信号到达接收机的时间t,再加上接收机所接收到的卫星星历等其它数据可以确定以下四个方程式:

上述四个方程式中待测点坐标x y z Vto为未知参数,其中di=cti (i=1234)
    di (i=1234) 分别为卫星1、卫星2、卫星3、卫星4到接收机之间的距离。
    ti (i=1234) 分别为卫星1、卫星2、卫星3、卫星4的信号到达接收机所经历的时间。
    cGPS信号的传播速度(即光速)。

  四个方程式中各个参数意义如下:
    xyz 为待测点坐标的空间直角坐标。
    xi yi zi (i=1234) 分别为卫星1、卫星2、卫星3、卫星4t时刻的空间直角坐标,
  可由卫星导航电文求得。
    Vt i (i=1234) 分别为卫星1、卫星2、卫星3、卫星4的卫星钟的钟差,由卫星星历提供。
    Vto为接收机的钟差。

  由以上四个方程即可解算出待测点的坐标xyz 和接收机的钟差Vto

 

GPS 的热启动 冷启动和温启动

启动GPS
GPS
开机定位分为冷启动、温启动和热启动三种:


冷启动:以下几种情况开机均属冷启动。初次使用时;电池耗尽导致星历信息丢失时;关机状态下将接收机移动1000公里以上距离。


温启动:距离上次定位的时间超过两个小时的启动。


热启动:距离上次定位的时间小于两个小时的启动。


有时候如果机器有软件问题,需要进行冷启动,冷启动可以使用gpsviewer进行。

 

GPS发展

在卫星定位系统出现之前,远程导航与定位主要用无线导航系统。

1
、无线电导航系统
罗兰--C:工作在100KHZ,由三个地面导航台组成,导航工作区域2000KM,一般精度200-300M
Omega(奥米茄):工作在十几千赫。由八个地面导航台组成,可覆盖全球。精度几英里。
多卜勒系统:利用多卜勒频移原理,通过测量其频移得到运动物参数(地速和偏流角),推算出飞行器位置,属自备式航位推算系统。误差随航程增加而累加。
缺点:覆盖的工作区域小;电波传播受大气影响;定位精度不高

2
、卫星定位系统
最早的卫星定位系统是美国的子午仪系统(Transit),1958年研制,64年正式投入使用。由于该系统卫星数目较小(5-6颗),运行高度较低(平均1000KM),从地面站观测到卫星的时间隔较长(平均1.5h),因而它无法提供连续的实时三维导航,而且精度较低。
为满足军事部门和民用部门对连续实时和三维导航的迫切要求。1973年美国国防部制定了GPS计划。

3
GPS发展历程
GPS
实施计划共分三个阶段:
第一阶段为方案论证和初步设计阶段。从1973年到1979年,共发射了4颗试验卫星。研制了地面接收机及建立地面跟踪网。
第二阶段为全面研制和试验阶段。从1979年到1984年,又陆续发射了7颗试验卫星,研制了各种用途接收机。实验表明,GPS定位精度远远超过设计标准。
第三阶段为实用组网阶段。198924第一颗GPS工作卫星发射成功,表明GPS系统进入工程建设阶段。1993年底实用的GPS网即(21+3GPS星座已经建成,今后将根据计划更换失效的卫星。

 

GPS的常用术语

1、坐标

  描述你的位置的一组数值,一般有纬度(北或南)和经度(东或西)。UTM坐标系以米为单位测量你离赤道(北或南)和本初子午线(东或西)的距离。另外一个坐标系MGPSMilitary Grid Reference System)也基于UTM,但是把UTM坐标分隔得更细了,它只用在军用的GPS接收器上。


  22维和3维坐标


  你的平面位置,例如经度和纬度,称做2维坐标,至少需要3GPS卫星的数据来定位2维坐标。如果因为树木、山峰或建筑物挡住了卫星,你可能只能得到2维坐标。


  纬度、经度和速度称为3维坐标,确定它需要至少4颗卫星。几乎所有GPS接收器都以提供3维坐标做为标准。


  3、路旁标记和航路点

  你可以把一个位置存储为一个路旁标记(landmark)或航路点(waypoint)。它可以是你途中定位的一个位置,也可能是你输入的一个坐标或其他位置,例如目的地。GPS设备会给它一个名称,例如LMKOZ,你也可以用一个容易记住的名称重新命名。


  4、位置

  当你的接收器根据GPS卫星的信息标出了你的坐标后,它会确定你的位置。许多GPS设备允许你选择标记或存储你的现在位置做为路旁标记或航路点。一些甚至允许你为位置命名或添加一个图标。


  5、路线

  路线包括开始位置和目的地,同时也有途径的地点。一条路线上的两点之间称为航段。一条路线可由一个或若干个航段组成。如果你徒步旅行,你可以输入一条路线,其中包括方向、计划休息的地点或宿营地,还有你的目的地。有一些GPS设备允许你反向跟踪路线或设置逆向路线。


  路线主要有两种用途:


  1)如果你去探险或旅行,你可以从高速路地图或一些地图软件中获取地点的坐标。这在以后的旅行中很有用。一些GPS接收器允许在计算机上设计你的旅线,然后把它载入你的GPS接收器;


  2)如果你拿着GPS接收器旅行时记录下你走过的地点,回家后可以复制或者下载你的路线并且找出最有价值的景点的位置,或者最适合钓鱼的地点,或者你看见一只珍稀小鸟的地点,或者你在恶劣天气藏身的岩洞位置。如果有队员受伤了,救援队就可以根据确切的坐标找到伤员所在的地方。搜索救援人员可以下载完整的路线来知道探险队所在的位置。


  6、高度

  如果有足够的GPS卫星可见,一些GPS设备可提供高度信息(海拔)。由于GPS系统本身的特点,高度不如平面坐标那么精确。


  7、航向

  这是反映沿水平方向GPS接收器移动的方向,并不需要你把GPS接收器确切地指向这个方向。在你移动时可以看到这个值,航向的值是按0359度顺时针方向分布的,和指南针的值相对应。


  8、方位角

  如果你选定了一个路旁标志或航路点,想知道从你现在所处位置到它的方向,你就需要知道方位角的值。它是从北方向算起沿顺时针分布的值。如果到你的目的地的方位角是270度,而你的移动方向是240度,你的航线就和目的地有30度的偏差。如果你是在坐火车,这可能没关系,但如果这个偏差值很大,你需要查看一下地图,说不定你的路线错了。

 

GPS接收机接口说明

GPS接收机接口说明

        1  通讯接口:软硬件波特率为4800baud

        2  电文格式:NMEA0183,其内容包含:GGAGLLGSAGSVRMCVTG。各组数据含义如下:(数位参考)

A. GGA显示的说明座标位置数据

 

 

GPS串口数据接收程序实例

  要:目前GPS(全球定位系统)定位应用市场日趋成熟,正在进入应用的高速发展时期。本文以一款EverMore公司的GM-X205GPS接受模块为例,介绍了其数据格式,以及应用PIC16F874单片机RS232串口进行数据接收的程序。

    关键词:GPSNMEA格式、PIC16F874、串口数据接收

    1 GPS应用简介

    近年来GPS系统,已经在大地测绘、海上渔用、车辆定位监控、建筑、农业等各个领域得到广泛应用。从九十年代我国引进GPS定位技术开始,经过十多年的市场培育,GPS定位应用进入了发展的最好时机,未来十年基于GPS的应用将会改变我们的生活和工作方式。

    目前市场上的大部分GPS接受模块都是通过RS232串口与MCU进行数据传输的。这些数据包括经度、纬度、海拔高度、时间、卫星使用情况等基本信息。开发人员再依据这些基本数据,进行数据处理来完成整套的定位系统软件。

    2 GM-X205模块数据格式

    在进行数据接受编程之前,先介绍一下该模块的数据格式。它支持NMEA-0183输出格式。信息如下:

    GGA位置测定系统定位资料(Global Positioning System Fix Data
    GSV
导航卫星资料(GNSS Satellites in View
    RMC
导航卫星特定精简资料(Recommended Minimum Specific GNSS Data
    VTG
方向及速度等相关资料(Course Over Ground and Ground Speed
   
由于文章篇幅问题,笔者在这里只以接收GGA数据为例,格式如下:
    $GPGGA,hhmmss,dddmm.mmmm,a,dddmm.mmmm,a,x,xx,x.x,x.x,M,,M,x.x,xxxx*CS
   
例:$GPGGA,033744,2446.5241,N,12100.1536,E,1,10,0.8,133.4,M,,,,*1F

说明见表:

3 PIC16F874数据接收程序
笔者在系统中把接收到的数据处理后,显示到图形液晶屏上。限于篇幅在这里只给出数据接收部分程序,并且只接收经度和时间信息,并且给出格林威治时间转换为北京时间的转换函数。其他数据接收程序类似。
;**********************************************************
;         THIS IS A GPS RECEIVER PROGRAM                  *
;**********************************************************
         LIST P=16F874
         INCLUDE P16F874.INC       
;*******
寄存器定义 ********************
TEMP1     EQU    0X27
W_TEMP    EQU    0X54         
STATUS_TEMP  EQU 0X55
LONG1     EQU    0X40         
LONG1--- LONG10经度的10位数据
LONG2     EQU    0X41
LONG3     EQU    0X42
LONG4     EQU    0X43
LONG5     EQU    0X44
LONG6     EQU    0X45
LONG7     EQU    0X46
LONG8     EQU    0X47
LONG9     EQU    0X48
LONG10    EQU    0X49
T1        EQU    0X58           ;T1---T6
时间的6位数据
T2        EQU    0X59
T3        EQU    0X60
T4        EQU    0X61
T5        EQU    0X62
T6        EQU    0X63
;********************************************************
       ORG  00H
       NOP
       NOP
       GOTO MAIN
       ORG  04H          ;
设定按中端健才开始数据接受
       NOP
       NOP
       GOTO INTERRUPT
;*********
判断头文件是不是'$GPGGA’**********
IDMESSAGE
        BCF     STATUS,RP0
BREAK0 
     CALL      PAND
        MOVWF     TEMP1
        MOVLW     '$'        ;detect $
        SUBWF     TEMP1,0
        BTFSS     STATUS,Z
        GOTO   BREAK0
        CALL     PAND
        MOVWF     TEMP1
        MOVLW     'G'        ;detect G
        SUBWF     TEMP1,0
        BTFSS     STATUS,Z
        GOTO   BREAK0
        CALL     PAND
        MOVWF     TEMP1
        MOVLW     'P'        ;detect P
        SUBWF     TEMP1,0
        BTFSS     STATUS,Z
        GOTO  BREAK0
        CALL     PAND
        MOVWF     TEMP1
        MOVLW     'G'        ;detect G
        SUBWF     TEMP1,0
        BTFSS     STATUS,Z
        GOTO  BREAK0
        CALL     PAND
        MOVWF     TEMP1
        MOVLW     'G'        ;detect G
        SUBWF     TEMP1,0
        BTFSS     STATUS,Z
        GOTO  BREAK0
        CALL     PAND
        MOVWF     TEMP1
        MOVLW     'A'        ;detect A
        SUBWF     TEMP1,0
        BTFSS     STATUS,Z
        GOTO  BREAK0
        CALL     PAND        ;
跳过逗号
        RETURN
;************
接收函数******************
RECEIVE
       CALL     PAND                    ;
开始时间数据接收
       MOVWF    T1
       CALL     PAND
       MOVWF    T2
       CALL     PAND
       MOVWF    T3
       CALL     PAND
       MOVWF    T4
       CALL     PAND
       MOVWF    T5
       CALL     PAND
       MOVWF    T6                      ;
时间数据接收完成
       CALL     PAND                     ;
跳过逗号
       CALL     PAND                     ;
跳过10位纬度数据---开始
       CALL     PAND
CALL     PAND
       CALL     PAND                    
       CALL     PAND
       CALL     PAND
       CALL     PAND                    
       CALL     PAND
       CALL     PAND
       CALL     PAND                     ;
跳过10位纬度数据---结束
       CALL     PAND                     ;
跳过逗号
       CALL     PAND                     ;
跳过南/北纬判断位数据
       CALL     PAND                     ;
跳过逗号
       CALL     PAND                     ;
接受经度信号开始
       MOVWF    LONG1
       CALL     PAND
       MOVWF    LONG2
       CALL     PAND
       MOVWF    LONG3
       CALL     PAND
       MOVWF    LONG4
       CALL     PAND
       MOVWF    LONG5
       CALL     PAND
       MOVWF    LONG6
       CALL     PAND
       MOVWF    LONG7
       CALL     PAND
       MOVWF    LONG8
       CALL     PAND
       MOVWF    LONG9
       CALL     PAND
       MOVWF    LONG10                   ;
接受经度信号结束
       RETURN
;***************
串口寄存器中是否数据*****************
PAND  
        BCF      STATUS,RP0
CC   BTFSS PIR1,5
        GOTO CC
        MOVF     RCREG,0
        RETURN
;*****************
中断函数***************************
INTERRUPT    
        BCF INTCON,7                  ;SET GIE=0
屏蔽所有中端
        BCF     STATUS,RP0
        BCF     RCSTA,1               ;
清除溢出错误位
        BSF       STATUS,RP0
        BCF       TXSTA,2             ;BRGH=0 Low speed
        BCF       TXSTA,4             ;Set Asynchronous mode
        MOVLW     0X0C
        MOVWF     SPBRG             ;
设置波特率为4800
        BCF       STATUS,RP0
        MOVLW     B'10010000'
        MOVWF     RCSTA             ;
串口接收相关设置
        BSF       STATUS,RP0         
        BSF       OPTION_REG,6        ; RB0/INT
引脚上升沿中断
       MOVWF W_TEMP            
    SWAPF STATUS,W
    BCF   STATUS,RP0
    MOVWF STATUS_TEMP
    BCF     STATUS,RP0
    CALL    IDMESSAGE
       CALL    RECEIVE
        BCF     STATUS,RP0
        CLRF    RCSTA                ;
清除串口设置
        CALL    CONVERT             ;
调用时间转换函数
OUT BCF STATUS,RP0             ;
跳出中断部分,恢复寄存器
     SWAPF STATUS_TEMP,W
     MOVWF STATUS
     SWAPF W_TEMP,F
     SWAPF W_TEMP,W  
     BSF  INTCON,7     ;SET GIE=1
允许所有中端
     NOP 
        RETFIE
;************
格林威治时间转换为北京时间******************
CONVERT
       MOVLW  A'0'
       SUBWF  T2,1
       SUBWF  T1,1
       MOVLW  D'10'
       MOVWF  TEMP1
LOOP1  MOVF   TEMP1,0
       MOVF   TEMP1,1
       BTFSS  STATUS,Z
       GOTO   ADD10
       MOVLW  D'8'
       ADDWF  T2,1
       MOVLW  D'24'
       SUBWF  T2,1
       BTFSC  STATUS,C
       GOTO   CON1
       ADDWF  T2,1
       GOTO   CON1
CON1   MOVLW  D'20'
       MOVWF  TEMP1
       SUBWF  T2,0
       BTFSS  STATUS,C
       GOTO   CON2
       MOVWF  T2
       MOVLW  0X02
       MOVWF  T1
       GOTO   HALT1
CON2   MOVLW  D'10'
       MOVWF  TEMP1
       SUBWF  T2,0
       BTFSS  STATUS,C
       GOTO   CON3
       MOVWF  T2
       MOVLW  0X01
       MOVWF  T1
       GOTO   HALT1
CON3   MOVLW  0X00
       MOVWF  T1
HALT1  MOVLW  A'0'
       ADDWF  T1,1
       ADDWF  T2,1
       RETURN
ADD10  MOVF   T1,0
       ADDWF  T2,1
       DECF   TEMP1,1
       GOTO   LOOP1
       RETURN
;******************MAIN***********************
MAIN
        BCF       STATUS,RP0
        MOVLW     B'10010000'
        MOVWF     INTCON            ;
打开中断
        LOOP NOP
     BCF     STATUS,RP0
     GOTO  LOOP
     GOTO MAIN
        END