Showing Posts From

Gps

GPS基础及其定位的工作原理

GPS基础 - GPS:Global Position System,全球定位系统。全称为NAVSTAR GPS(NAVigation Satellite Timing And Ranging Global Position System,导航星测时与测距全球定位系统)。 - GPS是一个由美国国防部开发的空基全天侯导航系统,它用以满足军方在地面或近地空间内获取在一个通用参照系中的位置、速度和时间信息的要求。 - 其他与GPS类似的卫星导航系统: - GLONASS(全球轨道导航卫星系统),前苏联/俄罗斯 - Galileo-ENSS(欧洲导航卫星系统,即伽利略计划),欧盟 - 北斗导航系统,中国 GPS定位的工作原理 - 运行在宇宙空间的GPS卫星系统持续不断的向地球表面发射导航电文,其导航电文是每秒50位的连续的数据流,每颗卫星都同时向地面发送以下信息:系统时间、时钟校正值、自身精确的轨道数据、其他卫星的近似轨道信息、电离层模型参数和世界协调时(UTC)数据等系统状态信息。GPS导航电文用于计算卫星当前的位置和信号传输的时间,从而使GPS接收机在接收导航电文后能确定自身的位置。 - 因此可以简单的理解为:GPS卫星向地面所发射的信号就是卫星自己当前的坐标和时间信息,这样地面的接收设计就可以基于卫星坐标和时间信息来计算出来自己的位置; !Untitled.png - GPS定位的基本原理可以使用上图来进行说明。 - 对于地面的GPS接收器而言,要计算自己的当前位置,需要用到四颗卫星的当前坐标位置以及这些卫星与自己的距离数据: - 各个卫星的当前坐标位置包含在GPS卫星发射的导航电文信息中; - GPS卫星与接收设备之间的距离可以基于接收到的卫星导航电文中包含的时间与接收设备自己的当前时间的时间差来进行计算: - GPS接收器收到卫星的导航电文后,用自己系统中的当前时间减去导航电文中包含的时间戳上的时间,就是导航电文数据包在空中传输所用的时间了。 - 知道了导航电文数据包在空中的传输时间,那么乘上它的传输速度(也就是光速),就是该数据包在空中传输的距离,也就是该卫星到GPS接收器的距离了。 - 根据立体几何知识,在三维空间中,三对[Positioni,di]这样的数据就可以确定一个点了,为什么这里需要四对呢?理想情况下,的确三对就够了,也就是说理想情况下只需要三颗卫星就可以实现GPS定位。但是事实上因为时间和传输速度计算方面存在的误差关系,必须要用到四颗卫星的数据来进行计算,才能保证定位的精度。因此增加一颗卫星就是为了提升GPS定位计算的精度,校正计算方面存在的误差。 单点定位与差分定位 - 单点定位:就是通过一个GPS接收器来定位当前设备所在的位置。如以上GPS定位工作原理部分的描述,一个GPS接收器通过同时接收四个GPS卫星的信号来确定自己当前的位置。 !Untitled.png - 差分定位:也称为相对定位,就是通过增加一个参考GPS接收器来提高定位精度。 !Untitled.png - 差分定位为何能够提升定位精度? - 将一台GPS接收机安置在基准站上进行观测。根据基准站已知精密坐标与GPS接收机计算出的坐标,计算出真实坐标与GPS定位得到的坐标的改正数,并由基准站实时将这一数据发送出去。用户接收机在进行GPS观测的同时,也接收到基准站发出的改正数,并对其定位结果进行改正,从而提高定位精度。 - 因此对于差分定位的实现而言,需要两个必要条件:一是需要安装在固定已知精确坐标位置的基准站;另外一个是基准值需要有一个数据通信的渠道把自己的定位校正数据发送出去 - 单点定位和差分定位最大的区别在于精度的不同,单点定位的精度是米级,差分定位的精度可以达到厘米级。实际上对于绝大多数的民用应用而言,米级精度的单点定位方式就已经足够使用了。 GPS系统的组成以及工作流程 !Untitled.png - GPS系统总体上来讲由空间部分、地面控制部分、用户部分三个部分组成。 - 空间部分: - GPS空间部分主要由24颗GPS卫星构成,其中21颗工作卫星,3颗备用卫星。24颗卫星运行在6个轨道平面上,运行周期为12个小时。保证在任一时刻、任一地点高度角15度以上都能够观测到4颗以上的卫星。 - 主要作用:发送用于导航定位的卫星信号。 - 构成:24颗卫星=21颗工作卫星+3颗备用卫星。 - !Untitled.png - 地面控制部分 - GPS地面控制部分=主控站(1个)+监测站(5个)+注入站(3个) - 主控站:从各个监控站收集卫星数据,计算出卫星的星历和时钟修正参数等,并通过注入站注入卫星;向卫星发布指令,控制卫星,当卫星出现故障时,调度备用卫星。 - 位于美国科罗拉多州(Calorado)的法尔孔(Falcon)空军基地。 - 监控站:接收卫星信号,检测卫星运行状态,收集天气数据,并将这些信息传送给主控站。 - 1个与主控站在一起;3个与注入站在一起;另外一个在夏威夷(Hawaii),西太平洋。 - 注入站:将主控站计算的卫星星历及时钟修正参数等注入卫星。 - 阿松森群岛(Ascendion),大西洋;迭戈加西亚(Diego Garcia),印度洋;卡瓦加兰(Kwajalein),东太平洋。 - !Untitled.png - 用户部分 - GPS用户设备部分包含GPS接收器及相关设备。GPS接收器主要由GPS芯片构成。如车载、船载GPS导航仪,内置GPS功能的移动设备,GPS测绘设备等都属于GPS用户设备。 参考资料 - GPS定位基本原理浅析 - GPS的导航电文

GPS的NMEA数据格式解析及GPS/北斗双模模块TD3020C介绍

NMEA数据格式 NEMA-0183是GPS接收机应该遵守的标准协议,也是当前世界上GPS接收机上使用最广泛的协议,绝大多数的GPS接收机,包括北斗模块在内都遵守或者至少兼容这个协议。 NMEA语句的标准格式定义如下: - 到*之间的所有字符; - CR和LF则是标准的回车换行符。 在应用中,无论是使用标准的GPS模块还是国内的北斗模块,模块本身输出的定位等信息的格式和协议基本上都是遵循NEMA-0183标准(只是语句的标识符稍有差异): !Untitled.png 而在硬件方面,基本上大部分GPS和北斗模块以及双模模块都采用标准的串口输出这些NEMA语句,因此无论在硬件层面还是软件层面,都可以很方便做到兼容和替换。 常用的NMEA-0183语句 NMEA-0183协议定义的语句非常多,但是常用的兼容性最广的语句主要有: - GPGSA:当前卫星信息 - GPRMC:推荐定位信息数据格式 - GPGLL:地理定位信息 对于我们在应用中使用GPS或者北斗模块而言,主要使用到其提供的以下功能: - 定位的经纬度信息; - 速度及运动方向信息; - 海拔高度; - 校时; 因此对于我们的应用而言,只需要关注和解析定位模块输出的以下语句即可: - GGA:经纬度,GPS状态,可用卫星数量,海拔高度; - RMC:经纬度,UTC时间(精确到ms),磁偏角; - VTG:速度及其方向; 以下链接是一个NEMA数据的解析库,可以在应用中尝试直接使用这个库来实现对所需要信息的解析处理,避免重复造轮子: - http://nmea.sourceforge.net/#downloads GPRMC/BDRMC RMC数据帧的结构及其各个字段的定义如下: - 开始到*之间的所有ASCII码的异或校验 - [CR] 回车符,结束标记 - [LF] 换行符,结束标记 RMC语句中包含的重要信息有:UTC时间,经纬度,定位状态,速度(以节为单位,需要自行换算为km/h)及其方向,磁偏角等; - 可以看到,RMC语句中基本上包含了我们所关注的绝大多数常用信息; - 如果需要获取以km/h为单位的速度信息,可以解析GPVTG语句,该语句中同时包含有以节为单位和以km/h为单位的速度信息; GPGGA/BDGGA GGA数据帧的结构及其各个字段的定义如下: - GPGGA:起始引导符及语句格式说明,如果是北斗模块的话就是BDGGA; - UTC时间,格式为hhmmss.sss; - 纬度,格式为ddmm.mmmm(第一位是零也将传送); - 纬度半球,N或S(北纬或南纬) - 经度,格式为dddmm.mmmm(第一位零也将传送); - 经度半球,E或W(东经或西经) - GPS状态, 0初始化, 1单点定位, 2码差分, 3无效PPS, 4固定解, 5浮点解, 6正在估算 7,人工输入固定值, 8模拟模式, 9WAAS差分 - 使用卫星数量,从00到12(第一个零也将传送) - HDOP-水平精度因子,0.5到99.9,一般认为HDOP越小,质量越好。 - 海拔高度,-9999.9到9999.9米 - M 指海拔单位为米 - 大地水准面高度异常差值,-9999.9到9999.9米 - M 指单位米 - 差分GPS数据期限(RTCM SC-104),最后设立RTCM传送的秒数量,如不是差分定位则为空 - 差分参考基站标号,从0000到1023(首位0也将传送)。 - *:语句结束标志符 - xx 从$开始到*之间的所有ASCII码的异或校验 - [CR] 回车符,结束标记 - [LF] 换行符,结束标记 GGA语句中比较重要的信息就是:经纬度,GPS状态,当前使用的卫星数量,海拔高度; 定位模块NMEA数据解析的小结 - 从以上整理的数据可以看出来,GPGGA和GPRMC均包含有经纬度等定位信息,那我们在应用中应该用哪一个呢?其实,GPGGA是GPS定位信息,而GPRMC是推荐定位信息,所以用GPRMC会比较准确。 - 考虑到我们普通应用中需要从定位模块中获取的信息类型,基本上我们要用到的大部分信息在GPRMC语句中都已经包含了,所以只需要对GPRMC语句进行解析就可以了。 GPS/北斗双模模块TD3020C的使用介绍 TD3020C是东莞市泰斗微电子推出的一款GPS和北斗二代双模导航定位模块,模块尺寸22.4mm x 17mm x 2.0mm,采样28pin邮票孔封装,与主流的GPS模块(例如UBlox的LEA-5/6系列)在硬件上做到pin to pin兼容。 !Untitled.png 典型应用的走线图如下所示: !Untitled.png 主要包含的接口如下: - 电源接口; - 天线接口:GPS和北斗共用同一个外置有源天线接口; - 休眠模式控制接口 - 模块通过外部休眠模式引脚控制进入休眠状态,功耗可降至5mA以下; - 两组UART接口 - 串口1(TXD1/RXD1),在UTC秒边界输出NMEA数据,也可以通过这个串口控制模块的工作模式、输出波特率等;该串口默认波特率为9600; - 串口2(TXD2/RXD2),备用串口,用于输出自定义格式的数据,也可以用于对模块进行软件升级。 - GPIO接口 - 包含3个GPIO接口,可以根据用户需求定义这些GPIO接口的功能。 TD3020C在正常工作中除了能够按照NEMA标准输出经纬度等信息以外,还可以通过UART1来控制模块的定位模式、波特率等运行参数。 - 定位模式的切换指令:可以支持GPS和北斗的独立工作模式和混合工作模式; !Untitled.png - 波特率设置指令:设置串口输出的波特率; !Untitled.png - GPS/北斗模块NMEA信息输出更新率设置指令: !Untitled.png