2015-3-2 16:09:08 [显示全部楼层]
6686浏览
查看: 6686|回复: 3

GPS模块使用 FAQ

[复制链接]

楼主近期使用了DFRobot公司的两块GPS模块。一块是GPS/GPRS/GSM模块V3.0TEL0051,另一块是DFRduino GPS Shield-LEA-6HTEL0044,使用的过程中出现了很多问题,也对GPS的知识有了初步的了解。

本帖将主要解决在GPS模块使用的过程中出现的一些问题,对于模块的工作原理将不做进一步说明。


问题一:在浦东进行的定位,为何在地图上却是闵行?

这个涉及到了GPS的单位转化问题,在GPRMC协议(以上提到的两块GPS模块所使用的协议)中,$GPGGA一行的第三位和第五位为GPS收集到的经纬度信息,如楼主在浦东软件园Y1座进行GPS测量,收集到的GPRMC信息中的$GPGGA一行信息如下:

$GPGGA,062351.000,3112.136400,N,12135.895059,E,1,4,2.92,29.357,M,8.341,M,,*5B

其中3112.136400,N,12135.895059,E即为经纬度信息。

该经纬度的格式为ddmm.mmmmmm,其小数点前倒数两位为分,小数点倒数两位之前的数字为度,小数点后的数字为分的小数位。这个格式一不是单纯的小数制的单位换算,二也不是我们熟悉的度分秒的单位秒转换,而是单纯的度分转换。所以得到的数据的具体含义为,当前点的经度为东经12135.895059分,北纬3112.136400分。了解了这个也就可以理解了为什么明明在浦东却定位在闵行了。

地图中的经纬度单位为度,比如百度地图的坐标拾取系统中,天安门的经纬度为116.40386,39.915291,其含义为东经116.40386度,北纬39.915291度。地图所使用的经纬度和GPRMC中的经纬度有单位的差距,如果没有经过换算就使用的话就会造成偏差。比如在坐标拾取系统中输入121.35895059,31.12136400。然后再进行单位转换,即121+35.895059/60=121.598251;31+12.136400/60=32.202273。在坐标拾取系统中输入121.598251, 31.202273。将两次结果整合到一张图中即可理解为何明明在浦东测量的GPS反而定位到了闵行。
GPS模块使用 FAQ图1

在具体的使用过程中我发现出了GPRMC协议使用度分的格式之外,其他地方所使用的皆为度的单位。其中百度的标准为经度在前,纬度在后,谷歌的标准为纬度在前,经度在后。使用时需记得区分。


问题二:为何在地图上显示出来和我测量的位置相差了一千米左右的距离?是因为GPS模块不精确么?
这个涉及到了地图的参考点的问题,具体的内容无需了解,只需要了解的是现如今,在国内一共有三种坐标系,第一种为大地坐标系统WGS-84,第二种为火星坐标系统GCJ-02,第三种是百度坐标系统BD-09。第一种即为全球通用的坐标系统,GPRMC中的经纬度信息即按照该坐标系统选取,第二种为国家保密加偏后的坐标系统,即对真实的坐标系统进行了人为的加偏处理,国内很多地图公司(除百度地图)的坐标系均为此坐标系,第三种是百度在火星坐标系统上又进行了一次加密。网上有很多的算法,可以在各种坐标系之间进行转换,但是楼主使用下来之后感觉还是百度提供的坐标转换API最为方便好用。因为在百度的自己的官方文件中也曾提到,可能会因为时间的不同在定位出来的点上面有一些偏差,这说明百度坐标系的加密算法可能并不是固定的。由于百度坐标系算法并不开源,所以楼主也不敢下更多结论。百度地图坐标转换的API链接为:百度坐标转换。转换结果如下图:
GPS模块使用 FAQ图2
参考信息:




Grey  中级技匠

发表于 2015-3-2 16:14:04

本帖最后由 Grey 于 2015-3-2 16:15 编辑

感谢分享!
回复

使用道具 举报

hnyzcj  版主

发表于 2015-3-2 18:21:28

楼主真有钱,一买弄两块,
回复

使用道具 举报

hnyzcj  版主

发表于 2015-3-2 18:22:53

我估计可能是模块中的定位算法不够精确,安理工的测绘学院做的定位算法可以精确到米,南京青奥使用的是他们的方案。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail