用手机时为什么总显示"服务器太忙了请稍后再试″为什么?怎么介决?

基准站主机编号为VA,移动站主机编号为VA,
1、设置基准站发射信号
1.1手薄连接基准站
①进设备连接
②点击连接
③搜索设备
④选择对应机身号
⑤输入配对码1234
⑥连接成功,已连接上主机!
1.2设置基准站发射信号
进基准站把设置为基准站站工作模式发射信号。
地面点选择BLH 平滑采集坐标
如果不平滑采集坐标, 基准站不发射信号!
数据链选择 内置网络
服务器:选择 广州2
202.96.185.34
分组号:0871119
(电话区号+&255三位数)
小组号:180
(&255三位数)
差分模式 RTK
△电文格式 RTCM3.2
高度截止角 5度
同时会弹出提示框:
点击是还是否?
基准站主机信号灯绿灯一直闪?没有连接上服务器,
换个服务器IP\端口再次尝试连接
基准站主机信号灯绿灯常量不闪黄灯,点否,重新设置基站!
基准站主机信号灯绿灯常量闪黄灯,点是,断开连接
2、设置移动台接收信号
2.1手薄连接移动站
2.2设置移动站接收信号
进移动站 把设置为移动站工作模式。
数据链 选择内置网络
服务器:同基准站设置一样!
同基准站设置一样!
同基准站设置一样!
分组号:同基准站设置一样!
小组号:同基准站设置一样!
必须与基准站设置一样才能接收到信号!
电文格式选择RTCM3.2,
移动站设置成功后,
移动站主机信号灯连上服务器绿灯常亮,接收到信号间隔闪黄灯
稍等片刻,手薄会显示“固定”
有回复时邮件通知我
记住我的登录信息
输入用户名或电子邮箱地址,您会收到一封新密码链接的电子邮件。
用户名或电子邮件地址
用户名/邮箱/手机Posts - 96,
Articles - 0,
Comments - 11
14:29 by ^小七, ... 阅读,
最近公司做的一些项目都跟微信有关系,需要有个分享的功能,但是在测试环境的时候分享功能都正常,图片标题描述之类的都没问题,放到线上,安卓手机分享时,缩略图就是不显示
介绍一下测试/生产环境:
  测试环境:网站和图片服务器都是采用http
  生产环境:网站和图片服务器都是采用https
问题原因猜想:
  a.图片大小和尺寸太大出不来:图片是150X150 的,近40K,后来给制作重新做图,30X30的10k不到,分享图片大小最好不要超过32k ,尺寸100x100以上就行,别太大了,太小了图片失真
  b.图片路径有{-}中划线:某些浏览器或手机对含有中划线的路径不【友好】,结果把图片放到上一层目录,避免类似.../year-imgs/head.png这种路径
  c.图片后缀不行:图片做的是.png后缀格式的,网上资料说分享朋友圈的时候可能直接会忽略掉.png后缀的图片,最好使用.jpg的图片作为分享图片的格式
  d.分享时调用接口没有取到图片地址:在页面的顶部(或者把分享的那张图片放在该页面所有图片的前面第一个位置)head里面放置一个图片(隐藏的)
   &img id="head_img" src=&http://wap.qd0931.com/wap/sj_zqth/images/logo.jpg& width=&0&P height=&0&P /&,千万不能写成display:none这种隐藏,
   这样调用分享接口时,微信应该会默认读取到页面第一张图片的路径
  e.最后还是不行,直接使用js获取img的图片路径:$('#head_img').attr('src'),结果没反应
通过上面的一系列的措施最终图片还是没有出来,最后通过对比发现生产环境的图片服务器(协议)是https的,测试的图片服务器(协议)是http的,于是我就把生产环境分享的缩略图的路径复制到测试上面,结果分享的时候果然不显示,而测试服务器的图片在分享的时候就显示,得出结论:安卓机在分享时缩略图不显示可能跟图片服务器的协议有关系(http、https)
  然后根据自己的结论是网上查找相关的资料,果然有这么回事,下图是我在网上看到的特意截个图(原创莫怪!):
  至于为什么启用了https,图片在安卓机器上面就不显示,原因我也不是特别清楚,可能是协议的证书不太完整吧!有待学习1、启动Memcache 常用参数
设置TCP端口号(默认设置为: 11211)
UDP监听端口(默认: 11211, 0 时关闭)
-l &ip_addr&
绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)-c &num&&&&&& max simultaneous connections (default: 1024)
以daemon方式运行
-u &username& 绑定使用指定用于运行进程&username&
允许最大内存用量,单位M (默认: 64 MB)
将PID写入文件&file&,这样可以使得后边进行快速进程终止, 需要与-d 一起使用
更多可以使用者 memcached -h在linux下:./usr/local/bin/memcached -d -u root
-l 192.168.1.197 -m 2048 -p 12121
在window下:d:\App_Serv\memcached\memcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500
在windows下注册为服务后运行:
sc.exe create Memcached_srv binpath= &d:\App_Serv\memcached\memcached.exe -d RunService -p 11211 -m 500&Pstart= auto
net start Memcached
2、连接和退出
telnet 127.0.0.1 11211
3、基本命令
五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:
前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令。它们都非常简单易用,且都使用如下 所示的语法:
command &key& &flags& &expiration time& &bytes&
参数说明如下:
command set/add/replace
key 用于查找缓存值
可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time
在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
在缓存中存储的字节点
存储的值(始终位于第二行)
现在,我们来看看这些命令的实际使用。
3.1 setset 命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。注意以下交互,它使用了 set 命令:
set userId 0 0 5
如果使用 set 命令正确设定了键值对,服务器将使用单词 STORED 进行响应。本示例向缓存中添加了一个键值对,其键为userId,其值为12345。并将过期时间设置为 0,这将向 memcached 通知您希望将此值存储在缓存中直到删除它为止。
3.2 add仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。下面是使用 add 命令的标准交互:
set userId 0 0 5
add userId 0 0 5
NOT_STORED
add companyId 0 0 3
3.3 replace仅当键已经存在时,replace 命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应。下面是使用 replace 命令的标准交互:
replace accountId 0 0 5
NOT_STORED
set accountId 0 0 5
replace accountId 0 0 5
最后两个基本命令是 get 和 delete。这些命令相当容易理解,并且使用了类似的语法,如下所示:
command &key&
接下来看这些命令的应用。
3.4 getget 命令用于检索与之前添加的键值对相关的值。您将使用 get 执行大多数检索操作。下面是使用 get 命令的典型交互:
set userId 0 0 5
get userId
VALUE userId 0 5
如您所见,get 命令相当简单。您使用一个键来调用 get,如果这个键存在于缓存中,则返回相应的值。如果不存在,则不返回任何内容。
3.5 delete最后一个基本命令是 delete。delete 命令用于删除 memcached 中的任何现有值。您将使用一个键调用delete,如果该键存在于缓存中,则删除该值。如果不存在,则返回一条NOT_FOUND 消息。下面是使用 delete 命令的客户机服务器交互:
set userId 0 0 5
delete bob
delete userId
get userId
可以在 memcached 中使用的两个高级命令是 gets 和 cas。gets 和cas 命令需要结合使用。您将使用这两个命令来确保不会将现有的名称/值对设置为新值(如果该值已经更新过)。我们来分别看看这些命令。
3.6 getsgets 命令的功能类似于基本的 get 命令。两个命令之间的差异在于,gets 返回的信息稍微多一些:64 位的整型值非常像名称/值对的 &版本& 标识符。下面是使用 gets 命令的客户机服务器交互:
set userId 0 0 5
get userId
VALUE userId 0 5
gets userId
VALUE userId 0 5 4
考虑 get 和 gets 命令之间的差异。gets 命令将返回一个额外的值 & 在本例中是整型值 4,用于标识名称/值对。如果对此名称/值对执行另一个set 命令,则gets 返回的额外值将会发生更改,以表明名称/值对已经被更新。显示了一个例子:
set userId 0 0 5
gets userId
VALUE userId 0 5 5
您看到 gets 返回的值了吗?它已经更新为 5。您每次修改名称/值对时,该值都会发生更改。
3.7 cascas(check 和 set)是一个非常便捷的 memcached 命令,用于设置名称/值对的值(如果该名称/值对在您上次执行 gets 后没有更新过)。它使用与 set 命令相类似的语法,但包括一个额外的值:gets 返回的额外值。注意以下使用 cas 命令的交互:
set userId 0 0 5
gets userId
VALUE userId 0 5 6
cas userId 0 0 5 6
如您所见,我使用额外的整型值 6 来调用 gets 命令,并且操作运行非常顺序。现在,我们来看看中的一系列命令:使用旧版本指示符的 cas 命令
set userId 0 0 5
gets userId
VALUE userId 0 5 8
cas userId 0 0 5 6
注意,我并未使用 gets 最近返回的整型值,并且 cas 命令返回 EXISTS 值以示失败。从本质上说,同时使用gets 和cas 命令可以防止您使用自上次读取后经过更新的名称/值对。缓存管理命令最后两个 memcached 命令用于监控和清理 memcached 实例。它们是 stats 和 flush_all 命令。
3.8 statsstats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,执行 stats 命令显示了关于当前 memcached 实例的信息:
STAT pid 22459
STAT uptime 1027046
服务器运行秒数
服务器当前unix时间戳
STAT version 1.4.4
服务器版本
STAT libevent 2.0.21-stable
STAT pointer_size 64
操作系统字大小(这台服务器是64位的)
STAT rusage_user 0.040000
进程累计用户时间
STAT rusage_system 0.260000
进程累计系统时间
STAT curr_connections 10
当前打开连接数
STAT total_connections 82
曾打开的连接总数
STAT connection_structures 13
服务器分配的连接结构数
STAT reserved_fds 20
STAT cmd_get 54
执行get命令总数
STAT cmd_set 34
执行set命令总数
STAT cmd_flush 3
指向flush_all命令总数
STAT get_hits 9
get命中次数
STAT get_misses 45
get未命中次数
STAT delete_misses 5
delete未命中次数
STAT delete_hits 1
delete命中次数
STAT incr_misses 0
incr未命中次数
STAT incr_hits 0
incr命中次数
STAT decr_misses 0
decr未命中次数
STAT decr_hits 0
decr命中次数
STAT cas_misses 0
cas未命中次数
STAT cas_hits 0
cas命中次数
STAT cas_badval 0
使用擦拭次数
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 15785
读取字节总数
STAT bytes_written 15222
写入字节总数
STAT limit_maxbytes
分配的内存数(字节)
STAT accepting_conns 1
目前接受的链接数
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT conn_yields 0
STAT bytes 0
存储item字节数
STAT curr_items 0
STAT total_items 34
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
为获取空间删除item的总数
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
此处的大多数输出都非常容易理解。我们先来看看输出,然后再使用新的键来运行一些 set 命令,并再次运行stats 命令,注意发生了哪些变化。
stats items执行stats items,可以看到STAT items行,如果memcached存储内容很多,那么这里也会列出很多的STAT items行。
STAT items:1:number 3
STAT items:1:age 1698
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
STAT items:1:crawler_reclaimed 0
STAT items:1:crawler_items_checked 0
STAT items:1:lrutail_reflocked 0
stats cachedump slabs_id limit_numslabs_id:由stats items返回的结果(STAT items后面的数字)决定的limit_num:返回的记录数,0表示返回所有记录通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。
stats cachedump 1 0
ITEM userId [5
ITEM accountId [5
ITEM companyId [3
stats cachedump 1 2
ITEM userId [5
ITEM accountId [5
stats slabs 显示各个slab的信息,包括chunk的大小、数目、使用情况等
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 3
STAT 1:free_chunks 10919
STAT 1:free_chunks_end 0
STAT 1:mem_requested 232
STAT 1:get_hits 9
STAT 1:cmd_set 14
STAT 1:delete_hits 1
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 0
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
stats sizes 输出所有item的大小和个数
stats reset 清空统计数据
stats reset
3.9 flush_allflush_all 是最后一个要介绍的命令。这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处。下面是一个使用 flush_all 的例子:
set userId 0 0 5
get userId
VALUE userId 0 5
get userId
追加与清除命令
3.10 appendappend 将数据追加到当前缓存数据的之后,当缓存数据存在时才存储。
set username 0 0 8
get username
VALUE username 0 8
append username 0 0 5
get username
VALUE username 0 13
wayne173_ages
3.11 prependprepend 将数据追加到当前缓存数据的之前,当缓存数据存在时才存储。
set username 0 0 8
get username
VALUE username 0 8
prepend username 0 0 5
get username
VALUE username 0 13
name_wayne173
memcached还有很多命令,比如对于存储为数字型的可以通过incr/decr命令进行增减操作等等,这里只列出开发和运维中经常使用的命令,其他的不再一一举例说明。
阅读(...) 评论()介绍篇过去,如果你的女友是个路痴,大概会有这样的对话&&——你在哪儿呢?——啊?我在马路上啊。——有什么特征?——头顶有个月亮。——你旁边有什么啊?——有个路灯。——有没有路牌啊?路牌上写的什么?——我看看啊。还真的有,上边写着“禁止停车 违者罚款”。——姑奶奶,我真是服了你了&&——哼,你是不是不爱我了,你肯定是不爱我了,你是不是喜欢上了新来的那个前台?——。。。——我跟你说那个前台绝对是个伪娘!(开启八卦模式)还有还有,小王买了个新口红真好看,你也给我买好不好&&——(一脸崩溃的表情)(路人甲:你是不可能有女友的!)现在,如果你的女友是个路痴&&——你在哪儿啊?——我发定位给你!乖乖的来接老娘。——遵命。。。作为一个标准路痴,曾经有N次陷入绝境黑历史。正所谓:手持一纸地图,双眼紧盯道路,环顾四周茫然,我现身在何处?后来随着智能手机的普及,我以为情况能有所改善,后来才发现是我想多了——为嘛xx地图、xx导航还是总让我往死胡同里跑,非让我开车过湖?再后来,随着手机操作系统的迭代,芯片的升级,定位才慢慢变得精准、可靠。我再也不用湖里游泳了&&当然,这都是后话了。
(哥开的不是车,是!寂!寞!)慢慢的随着了解的深入,才明白原来定位有这么多区别,里边的学问可大着呢。定位给方式有很多种,室外定位有基站定位,卫星定位等方式;室内定位有BLE、RFID、Wi-Fi等方式;还有其他IP定位,惯性导航等等方式。定位方式定位原理定位方案应用场景成本设备要求精度基站定位上报设备周边基站信息,服务器查表、解析并返回定位结果单基站定位多基站定位室外极低设备成本低需后端支持*500m卫星定位使用天线搜索卫星向地表发射的电波,解算后输出定位结果多星定位室外较低设备成本低5m差分定位卫星+结合基准站的数据进行定位多星定位室外很高设备成本高需专有后端支持*5mmBLE iBeacon使用设备接收蓝牙信号,根据信号强弱计算距离,输出定位结果单点定位多点定位室内较高设备成本较高30cmRFID使用设备接收射频信号,根据信号强弱计算距离,输出定位结果单点定位多点定位室内很高设备成本较高10cmWi-Fi上报设备周边路由器MAC信息,服务器查表、解析并返回定位结果单机定位多机定位室内较低设备成本低需后端支持*10mIP定位上报目标设备公网IP地址,服务器查表并返回定位结果-不限极低设备成本低需后端支持*10km佛系手持佛珠念念有词-不限0成本无需设备随缘“需后端支持”指需要连接到服务器进行数据解析,才能获得定位结果;“需专有后端支持”指可能需要付费才能获得相关数据,终端设备才可以进行定位。本文咱们就说说和物联网关系最密切的卫星定位那些事儿。
众多卫星定位系统中,最广为人知的就是GPS (Global Positioning System)了。它是美国在1958年开始研发,1964年投入使用,1994年实现全球覆盖的全球卫星定位系统。
GPS由24颗工作星和4颗备用星组成。卫星工作在互成55度的6条高度为2.02万KM的非同步轨道上。如此一来,在全球的任何地方、任何时间都可观测到4颗以上的GPS卫星。GPS卫星向地球发射导航电文(系统时间、星历、历书、卫星时钟修正参数、导航卫星健康状况、电离层延时参数等内容),GPS终端收到卫星发送的数据,经解算即可确定当前位置,并以NMEA0183格式,WGS-84坐标系输出数据。
也许有的读者会问,万一卫星坏了怎么办,GPS岂不是要失准了?其实这个担心是多余的啦,轨道上不仅有备用卫星,每年NASA也会委托Space X补发和替换寿终的卫星。当然,卫星定位系统不是GPS一家独大的。只是因为GPS的先驱地位,所以很多人也都习惯性的把所有卫星定位系统都称之为“GPS”。毕竟,使用GPS卫星之时,就是被美国钳制之日。GPS卫星是被美国军方控制的,他们可以随意调节某地区的定位精度(如中东地区),甚至让终端设备解算结果南辕北辙。而且GPS卫星是单向广播的,不具备双向通信能力,功能略显单一。有鉴于此,很多国家也都在建设或已建成卫星定位系统。如中国的北斗(BeiDou)、欧洲的伽利略(Galileo)、俄罗斯的格洛纳斯(GLONASS)、印度的IRNSS等。目前,中国的BeiDou北斗已经具备商用能力。配合基准站,甚至能给客户提供精确到毫米的定位服务。同时,BeiDou北斗也弥补了GPS的不足,具备短报文能力(驴友、海航必备。绝非手机的基站可比拟,只是资费超超超感人)。既然太空中有那么多卫星,又有那么多种不同的卫星定位系统,那么如何知道某一片区域是否有定位卫星覆盖,以及有哪些卫星覆盖呢?Android手机请在应用商店搜索“GPS Data+”并安装,打开后即可看到当前正在使用的定位卫星:
由于智能手机操作系统、定位芯片、天线、算法的差异,所以并不能搜索到所有用于定位的卫星系统。通常来说,智能手机只能搜到并使用部分(如图,即GPS+Beidou+GLONASS+QZSS,没有Galileo、IRNSS)。各导航系统不同频段的工作频率导航系统国家频段工作频率GPS美国L11575.42MHZ&1.023MHZL21227.60MHZ&1.023MHZL51176.45MHZ&1.023MHZGLONASS俄罗斯L1MHZ&4MHZL2MHZ&4MHZBD1中国S2491.75MHZ&4.08MHZL1615.68MHZ&4.08MHZ(左旋圆极化)BD2B1MHZ&2.046MHZB2MHZ&2.046MHZB3MHZ&10.23MHZGalileo欧洲L1MHZ&1.023MHZE5bMHZ&1.023MHZE5aMHZ&1.023MHZE6MHz&1.023MHZQZSS日本L1CL1CD1575.42 MHzL1CPL1-C/AL2C1227.6 MHzL5L5I1176.45 MHzL5QL1-SAIF1575.42 MHzLEX1278.75 MHzIRNSS印度L51176.45 MHzS MHz观察一下表格,我们可以发现,日本简直是太“鸡贼”了——L1 C/A、L1C、L2C、L5信号跟GPS卫星信号是完全兼容的,同时L1-SAIF还可以给日本地区提供高精度定位服务;LEX信号频点和欧洲Galileo系统的E6频点重合。也就是说,日本的QZSS当前可以作为GPS的补充,日后等到Galileo系统正式提供服务,QZSS也能实现Galileo系统的补充。接下来进入喜闻乐见的“你问我答”环节:Q:为什么有的时候手机定位还是很慢?A:信号问题、基带问题等,一切皆有可能。如果想要提高定位精度,最简单方式就是——买!个!新!手!机!Q:我想试试伽利略,有没有支持的手机呢?A:华为有部分机型支持。Q:小米8刘海屏不好看啊,你看VIVO NEX多美。对了,小米8说是全球第一个支持GPS双频定位(L1、L5)的手机,好像很牛逼,能做到厘米级定位吗?A:不能。没有基准站的支持,双频顶多是减小误差,对高精度定位无助。所以,还是洗洗睡吧。Q:北斗的短报文资费究竟有多感人?A:十几块一条吧。你可以去某猫、某宝查看一下报价。至于说语音通信,也有海事卫星电话可用,不同国家资费不同,从十几块到几十块一分钟;什么?你想用卫星上网?按量计费\$10/1M,怎么样,用的起吗?Q:既然已有GPS,为什么还要重造轮子?A:因为GPS的L1、L5是民码,大众可用。中美科技战升级之际,芯片已被扼住咽喉,定位系统这一“隐私”岂可掌握在他人之手?Q:卫星定位系统只在地表有用吗?A:非也。负海拔地区(只要有信号)、空中、甚至大气层外都可以。需要注意的是,水体、岩石等密度高的物体内无法使用。大气层外使用,还要注意广义相对论对时钟造成的影响。Q:《007明日帝国》中,大反派使用了某种很牛逼的设备,通过某些手段改变了卫星参数,劫持了一艘船,这种事情可能发生吗?A:这种事情,世界上已经发生过了。因为GPS信号没有认证方式,且信号极弱,非常容易被劫持。例如HackRF One就可以模拟并发射GPS信号;甚至让大疆无人机在禁飞区起飞。伊朗也是用过类似的技术,成功捕获美国的无人机。Q:最少搜到多少颗卫星才能定位成功呢?A:因为采用三角定位的原理,所以至少3颗卫星才能实现精准定位;具体要求如下:使用卫星数能否定位备注0无法定位1无法定位可以更新UTC时间和日期;2无法定位3可实现2D Fix,输出经纬度不可输出海拔信息4可实现3D Fix可输出正确海拔信息&4(多频)可实现3D Fix可输出伪距Q:你为什么懂得那么多啊?A:大概是因为我比高吧。定位篇有的人会问,既然天上多卫星,为什么我看输出结果只是用了其中有限的几个呢?这是因为单片机使用的小尺寸的陶瓷天线,一般只能做到兼容2个频段(一般软件上也是多选2),无法做到同时兼容3个频段。所以通常是单选GPS或北斗;或者是GPS+北斗、GPS+GLONASS等两两组合的方式。有的开发者实测时发现,为什么代码无误,但是定位模块就是搜不到卫星,无法定位呢?实际上排查这种问题既简单,又复杂。之所以说简单的,是因为搜不到卫星唯一的原因就是信号问题。复杂是因为即便知道了病因,开发者也可能会觉得束手无策。信号问题,那就是“卫星&天线&模块&代码&输出”的某个环节出现异常了。在这里,结合“望闻问切”的方法,针对可能出现的问题逐项击破。首先,开发者应谨记,任何时候都应该避免空间上存在异物遮蔽天线(如树木、建筑、高架桥),物理上存在金属外壳等遮挡天线等情况(如铝壳、铁壳)。应确保测试环境是空旷的,无遮挡的,信号良好的。之所以一直在强调天线、信号、无遮挡,是因为卫星的发射功率并不大,信号到达地面时已经很弱。这种信号强度相当于1.6万公里外一个25瓦的灯泡发出的光。再做个比喻,它比电视机天线所接收到的功率还要低10亿倍。信号弱、无信号,都会表现为无法定位,或者定位慢。那么,如何判断究竟是信号问题导致的定位慢,还是真·无信号呢?观察模块输出的GGA、RMC和GSA:GGA:格式:\$--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh示例:\$GPGGA,,,N,,E,1,9,0.85,18.1,M,8.0,M,,*5E名称样例单位描述消息ID\$GPGGAGGA协议头UTC时间hhmmss.sss纬度ddmm.mmmmN/SNN=北,S=南经度dddmm.mmmmE/WEW=西,E=东定位指示10:未定位1:SPS模式,定位有效2:差分,SPS模式,定位有效3:PPS模式,定位有效卫星数目9范围0到12HDOP0.85水平精度MSL幅度18.1米单位M米大地-2.2米单位M-差分时间秒当没有DGPS时,无效差分站ID校验和*5E消息结束RMC:格式:\$--RMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxxx,x.x,a*hh例句:\$GPRMC,,A,,N,,E,0.257,335.62,291216,,,A*59名称样例单位描述消息ID\$GPRMCRMC协议头UTC时间hhmmss.sss状态AA=数据有效;V=数据无效纬度ddmm.mmmmN/SNN=北,S=南经度dddmm.mmmmE/WEW=西,E=东地面速度0.257Knot(节)方位335.62度日期291216ddmmyy磁变量-校验和*59消息结束GSA:格式:\$--GSA,a,a,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x.x,x.x,x.x*hh例句:\$GPGSA,A,3,10,24,12,32,25,21,15,20,31,,,,1.25,0.85,0.91*04名称样例单位描述消息ID\$GPGSAGSA协议头模式1AM=手动(强制在2D或3D模式)A=自动模式231:定位无效2:2D定位3:3D定位卫星使用10通道1卫星使用24通道2卫星使用12通道3卫星使用32通道4卫星使用25通道5卫星使用21通道6卫星使用15通道7卫星使用20通道8,,,,,,,,,卫星使用通道12PDOP1.25位置精度HDOP0.85水平精度VDOP0.91垂直精度校验和*04消息结束如果GGA中的UTC时间错误,定位指示为0,卫星数目不为0;或者RMC的UTC时间错误,日期错误;GSA中卫星数目不为0,但是载噪比都很低,则可能是搜星慢,定位慢,信号差;如果GGA中的UTC时间错误,定位指示为0,卫星数目始终为0;或者RMC的UTC时间错误,日期错误;GSA完全没有任何有效输出,则可能是完全无信号。对于搜星慢,定位慢,信号差的情况,应改善天线设计,保证天线面朝上的安装使用状态;并且天线周边没有金属物件遮挡,无射频干扰;在空间容许的情况下尽量选择大尺寸的陶瓷天线,必要时应使用有源天线。对于完全无信号的情况,大概率是天线设计错误。譬如,没有给有源天线开启供电,错误使用天线型号(如芯片仅支持GPS,天线仅支持北斗;错误的使用GSM天线接收信号)等。扩展阅读:《Luat模块GPS天线设计建议》http://blog.sina.com.cn/s/blog_5bxy8v.html还有一种常见情况是开发者在室内(含窗口、窗台)进行测试,这是不行的。因为室内没有卫星信号,并不能实现定位。如果开发者不便于去户外进行测试,可以在某宝搜索“GPS转发”并购买相关设备。这样一来,开发者就不用“风吹日晒,饱经风雨”的,“不辞辛劳”的在户外调试啦。接下来进入大快人心的“你问我答”环节:Q:有没有体积小、信号好强的天线?A:鱼和熊掌不可兼得。只有最适合的,没有最好的。Q:NMEA-0183哪里格式说明呢?A:请到http://www.openluat.com/产品中心的GPS模块“下载中心”下载。Q:GNSS和GPS什么关系啊?A:严格来说,GPS&GNSS。所有的卫星定位系统都是可以称之为GNSS,GPS是GNSS的子集。这一点在输出中也有体现,例如:GNGGA,GPGGA,BDGGA,即“混合定位”(多卫星系统)、“GPS定位”、“北斗定位”。语句标识符:标识符含 义BDBDS,北斗二代卫星系统GPGPSGLGLONASSGAGalileoGNGNSS,全球导航卫星系统Q:GGA、RMC、RSV有什么分别?A:都是NMEA-0183标准的要求。他们的释义如下:标识符含 义GGA时间、位置、卫星数量、定位方式GSAGPS接收机操作模式,定位使用的卫星,DOP值,定位状态GSV可见GPS卫星信息、仰角、方位角、信噪比RMC时间、日期、位置、速度VTG地面速度信息Q:UTC时间有办法换算成当地时间吗?A:陆地的话,因为很多国家可能跨越非常多的时区,却使用统一时间,所以只能查表啦(如北京时间UTC+8)。如果是海洋,则根据经度计算时区。Q:有没有手机能用的,测试GPS的,比较牛逼的app?A:Android:GPS Status;GPS Test+;GPS Data+iOS:GPS Test+Q:为什么手机定位那么快那么准,定位模块那么慢,误差还很大?A:因为手机是牺牲个人隐私为前提的多重定位(基站+WiFi+蓝牙+GPS+AGPS+历史数据),而模块只是用GPS天线,所以显得略慢一些。但是使用“AGPS辅助定位”后,一样可以做到秒定位。Q:你为什么懂得那么多啊?A:大概是因为我比较富吧。PS:那么,怎么使用“AGPS辅助定位”呢?请关注下文哦。秒定位篇为什么信号极好的情况下,定位速度也不快?有没有办法实现“秒定位”呢?答案当然是肯定的啦。
常规情况下,定位模块上电开机后,通过天线搜索卫星,解析卫星发射的数据(导航电文),然后内部生成星历,再经过复杂的计算,从而得到当前精确的位置(3D Fix)。这个过程称之为“冷启动”。根据信号强度、芯片运算能力,通常耗时几十秒到几分钟不等。这个过程中,搜星+生成星历文件耗时最久。不过有的读者可能会问,为什么有的时候定位模块只用了几秒就成功定位了呢?原因有二:1、非“冷启动”方式,即“温启动”或“热启动”;2、使用了AGPS辅助定位。那么,“冷启动”、“温启动”和“热启动”有什么区别呢?也许大家会以为,这里的“X启动”和电脑的开机、待机(睡眠)、重启近似吧?实际上并非如此哦。由于卫星所处空间位置、终端设备所处地表位置是不固定的,所以此处的“X启动”都是以最后一次定位时间和位移距离作为判断依据的:启动方式解释自主秒定位*辅助秒定位*冷启动1、初次使用时;2、电池耗尽导致星历信息丢失时;3、关机状态下,移动1000公里以上距离时。&&温启动距离上次定位时间超过2个小时,不足4个小时;没有较大距离的位移发生。&&热启动距离上次定位时间不足2个小时;没有较大距离的位移发生。&&自主秒定位:根据模块内保存的星历,实现快速搜星、定位。辅助秒定位:使用AGPS辅助,实现快速搜星、定位。也就是说,“温启动”和“热启动”情况下,定位模块是可以实现自主秒定位的。那么,什么又是“AGPS辅助定位”呢?在传统GPS定位方式中,定位模块需要全频段搜索以找到可用卫星,因而耗时较长。而“AGPS辅助定位”方式,是通过网络直接下载当前地区的可用卫星星历数据,并将之发送给定位模块,定位模块只搜索特定的卫星,从而提高了搜星速度,减少设备耗电。举个例子:冷启动像是多项选择题,要把所有选项计算一遍,才能找到正确答案;而“AGPS辅助定位”就像是作弊器,排除掉了很多错误答案,只要计算少数几个即可。从而提高效率和准确率。不过,这个世界上没有圣杯,“AGPS辅助定位”不是万金油。它的应用条件还是需要比较苛的:·卫星信号接收条件必须良好,至少可观测到4颗卫星(如果有条件,推荐使用有源天线);定位芯片必须支持AGPS辅助定位;必须可以准确获取当前地区星历数据;如果是冷启动,需要等待通信芯片附着成功,接收到星历数据后,传输给定位模块;如果是温启动/热启动,亦需要重新搜星;由此可见,只有上述条件满足的时候,才能实现秒定位。如果是冷启动+ GPRS附着传输星历数据,实际上需要等待的时间也不短呢(甚至有可能定位模块已经3D Fix,GPRS才刚刚附着成功,把星历数据发过来)。以上海合宙通信科技有限公司的Air8xx系列模块为例,它的AGPS辅助定位基本流程如下:1、设备从蜂窝基站获取到当前位置的小区信息;2、设备通过蜂窝网络,将当前蜂窝小区信息传送给网络中的AGPS位置服务器;3、APGS位置服务器根据当前小区信息查询该区域当前可用的卫星信息(包括卫星的频段、方位、仰角等相关信息),生成对应星历文件,并返回给设备;4、通信模块通过串口把收到的星历文件传输给定位模块;5、定位模块根据星历文件,得到的可用卫星信息,快速找到当前可用的GPS卫星,针对性的搜星,大大提升定位时间。接下来进入普天同庆的“你问我答”环节:Q:我的模块没有GPS芯片,能否使用“AGPS辅助定位”实现定位?A:当然不行。这个问题就相当于“我有增压器,没有发动机,能跑100迈吗”一样。“AGPS辅助定位”,只是辅助加速定位,而不是一项独立可用的定位服务。Q:“AGPS辅助定位”能否提高定位精度?A:不能,它只能加快定位速度。无法提升定位精度。Q:如何根据NMEA-0183判断AGPS是否成功写入了呢?A:看GGA、RMC的UTC时间是否被修正,看GSV数据是否生成;
GSV:格式:\$--GSV,x,x,x,x,x,x,x,...*hh例句:\$GPGSV,3,1,12,14,75,001,31,32,67,111,38,31,57,331,33,26,47,221,20*73名称样例单位描述消息ID\$GPGSVGSV协议头消息数目31~3消息编号11~3卫星数目12卫星ID141~32仰角75度0~90方位角001度0~359载噪比(C/No)31dBHz0~99(无跟踪时为空)卫星ID321~32仰角67度0~90方位角111度0~359载噪比(C/No)38dBHz0~99(无跟踪时为空)卫星ID311~32仰角57度0~90方位角331度0~359载噪比(C/No)33dBHz0~99(无跟踪时为空)卫星ID261~32仰角47度0~90方位角221度0~359载噪比(C/No)20dBHz0~99(无跟踪时为空)校验和*73消息结束Q:“AGPS辅助定位”的星历文件消耗流量多吗?A:很少,几k而已。Q:星历文件是否需要定期更新?更新频率是多少?A:需要根据自己的情况进行分析。如果是冷启动后,不关闭定位模块,下载一次“AGPS辅助定位”数据(星历文件)即可。运行中,定位模块内会自动生成对应的星历文件,无需重复下载;如果是不定时启动、关闭,那么关闭4小时内启动是没必要更新的(“温启动”范畴);如果大于4小时,模块内保存的星历已失效,则必须更新星历文件(重新下载),否则和“冷启动”无异。Q:能否自己搭建AGPS星历数据服务器?A:可以。不过较麻烦。建议使用我司提供的接口(请参考例程中agps.lua的代码)。简述一下如何搭建。首先在NASA下载brdc当日的导航电文数据(以日为例):ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily/2018/brdc/brdc0320.18n.Z(备用)ftp://igs.ensg.ign.fr/pub/igs/data//brdc0320.18n.ZGPS卫星的历书(Almanac)包含在导航电文的第四和第五子帧中,可以看作是卫星星历参数的简化子集。服务端收到客户端的请求,从导航电文中提取当日的星历,然后发送给客户端。扩展阅读:《GPS卫星星历与历书》https://blog.csdn.net/Csdn_Darry/article/details/Q:以GK9501定位芯片为例,怎么把“AGPS辅助定位”的数据发送给它?A:请参考厂商提供的相关文档,以规定格式将数据通过串口发送给定位芯片(请参考例程中agps.lua的代码)。扩展阅读:《AIR系列GPS模块测试用例》http://blog.sina.com.cn/s/blog_5bxy8w.htmlQ:你为什么懂得那么多啊?A:大概是因为我比较帅吧。火星坐标(纠偏)篇历经磨难,终于成功定位,获取正确输出。但是怎么看起来格式不太对呢,经度纬度都是4位、5位的,那岂不是要绕地球好几圈了?其实这是NMEA-0183输出格式和我们日常使用的格式不同造成的误解。我们再来看一下GGA格式:格式:\$--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh示例:\$GPGGA,,,N,,E,1,9,0.85,18.1,M,8.0,M,,*5E名称样例单位描述消息ID\$GPGGAGGA协议头UTC时间hhmmss.sss纬度ddmm.mmmmN/SNN=北,S=南经度dddmm.mmmmE/WEW=西,E=东(省略部分GGA)有没有发现问题所在呢?GGA输出格式:ddmm.mmmm(度-分)日常使用格式:dd.dddddd(度)那么如何把GGA输出的数据转换为我们日常使用的格式呢?学霸看一眼就会说,这个问题很简单嘛,balabala~~~作为学渣的我,一头雾水。咳咳,还是直接套用公式吧。公式如下:ddmm.mmmm&小数点前移两位&dd.mmmm&dd + 0.(mmmm/60) = dd.dddddd举例:&120. + 0.() = 120.390078经过如此换算,我们就可以把获取到的数值放到地图软件里啦。一切看似都很美好,但是&&直到&&你用了百度地图&&我靠,卧槽&&为什么误差那么大?偏差达几百米?
明明在楼里,为什么地图显示我在河里?为什么!是不是定位模块有问题?还是我的又写了个bug?还是天线存在故障?黑人问号脸。
之所以会产生“偏差”,这就涉及到一个有关坐标系转换的问题:GCJ-02火星坐标系统纠偏。前文提到,模块输出数据的格式为NMEA-0183,使用的坐标系是WGS-84。通常,国际上其他国家的地图软件也都是使用WGS-84,相安无事。不过,中国国家测绘局要求所有从事地理测量、地图绘制的公司、单位机构、个人必须使用GCJ-02坐标系(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)。也就是说,国内的地图软件大都是使用的GCJ-02坐标系。所以开发者/用户如果将WGS-84的经纬度填入国内的地图软件,就会产生极大的偏差。(所有的电子地图、导航设备,都需要使用GCJ-02坐标系。第一步,地图公司测绘地图,测绘完成后,送到国家测绘局,将真实坐标WGS-84的电子地图,加密成“GCJ-02火星坐标”,这样的地图才是可以出版和发布的。第二步,所有的面向客户的设备厂商,要在软件中加入该转换算法,将定位模块输出的真实WGS-84坐标,转换成GCJ-02的坐标。这样一来,“以偏治偏”,坐标系才可以完全匹配,也就没有“偏差”了)那么,是不是所有的国内地图都使用了GCJ-02坐标系呢?非也&&百度、搜狗又自成体系,自立坐标了。坐标系地图WGS-84Google MapBing MapHere Mapetc.CGJ-02高德地图腾讯地图谷歌地图(中国)等BD-09百度地图其他搜狗地图其中百度较为特殊,需要WGS-84&GCJ-02&BD-09两次转换。由于转换算法较为复杂,本文不赘述。转换算法涉及浮点运算,推荐开发者将运算任务交给服务端或者上位机。为了方便测试,开发者在此网址http://www.openluat.com/GPS-Offset.html测试纠偏效果。
开发者根据数据格式填入对应的经纬度(支持ddmm.mmmm、dd.dddd和dd&mm&ss&P),点击“坐标转换”按钮,即可看到纠偏后的效果。同时该页面也提供了坐标转换、坐标轴纠偏算法的下载。接下来进入奔走相告的“你问我答”环节:Q:为什么无中生有搞一个GCJ-02坐标系?用WGS-84不是挺好?A:你哦,图样图森破了。加偏收费一次,定位设备纠偏收费一次。每年车机、定位终端出货量就是几亿台,能拉动多少GDP哟。Q:如果我在外国的地图软件上使用WGS-84可以吗?A:没问题的,只是外国的地图软件中,大陆数据更新滞后且不完整。Q:如果我不涉及地图加偏/纠偏,仅需要速度、方向角等数据是否受到这个的影响呢?A:纠偏仅是坐标值的转换,和其他数据无关。Q:为什么推荐开发者把纠偏算法放在上位机呢?A:因为单片机真的——算不过来。Q:为什么感觉GPS芯片上报的经纬度,在一个小范围内飘来飘去?A:这个是需要软件静态抑漂的。可以采用技术手段进行过滤,比如设置速度门限——在低于一定速度时,认为是静止不动的。或者事先知道用户处于什么运动模式,是静止、步行、还是开车。Q:我发现纠偏后还是不够精准,定位误差较大,能不能做到真·厘米级定位?A:可以哦。请看下文“细致入微的厘米级定位”。细致入微的厘米级定位通常情况下,GPS提供5m左右的定位精度,可以满足大多数大多数情况下的定位需求。不过,有一些场景,有更高精度的定位需求。譬如测绘、滑坡监控、无人机、无人驾驶汽车等。基于GPS的特性,很难提供亚米级的定位,那么如何是好呢?经过N次技术创新和持久的基准站建设,现在可以做到覆盖全国的厘米级定位技术。其实简单来说,高精度定位的核心就是消除误差。卫星定位精度不高,是因为误差积累导致,只要把可控的误差消除到最低,就能获得更高精度的定位结果。卫星定位的误差来源通常有:误差来源误差项误差原因定位误差影响卫星卫星星历误差星历中,卫星空间位置与卫星实际位置间的偏差-卫星钟差指GPS卫星时钟与GPS标准时间的差别偏差和漂移和漂移总量仍在1ms~0.1ms以内,由此引起的等效误差将达到300km~30kmSA干扰误差SA误差是美国军方为了限制非特许用户利用GPS进行高精度点定位而采用的降低系统精度的政策-相对论效应的影响由于卫星钟和接收机所处的状态(运动速度和重力位)不同引起的卫星钟和接收机钟之间的相对误差20~30km传播路径电离层折射当GPS信号通过电离层时,与其他电磁波一样,信号的路径要发生弯曲,传播速度也会发生变化,从而使测量的距离发生偏差-对流层折射GPS信号通过对流层时,也使传播的路径发生弯曲,从而使测量距离产生偏差-多路径效应测站周围的反射物所反射的卫星信号(反射波)进入接收机天线,将和直接来自卫星的信号(直接波)产生干涉,从而使观测值偏离接收机接收机钟差GPS接收机一般采用高精度的晶振。接收机的钟面时与GPS标准时之间的差异称为接收机钟差接收机的位置误差接收机天线相位中心相对测站标石中心位置的误差接收机天线相位中心偏差观测时,天线的相位中心随着信号输入的强度和方向不同而有所变化,这种差别叫天线相位中心的位置偏差计算误差由于算法、硬件不稳定、辐射或热电效应等造成的计算错误那么,如何修正这些误差误差,使得定位结果更精准呢?需要基准站通过数据链,将其载波观测值及基准站坐标信息一同传送给用户站,用户站接收GPS卫星的载波相位与来自基准站的载波相位,并组成相位差分观测值进行及时处理,能及时给出厘米级的定位结果。通常,我们提到的DGPS指RTD,即Real Time Differential,伪距差分。基准站上,观测所有卫星,根据基准站已知坐标和各卫星的坐标,求出每颗卫星每一时刻到基准站的真实距离。再与测得的伪距比较,得出差分改正数,将其传输至用户接收机,提高定位精度。从而实现亚米级定位。厘米级定位,则需要用到RTK,即Real Time Kinematic,载波相位差分,实时处理两个测站载波相位观测量的差分方法。即是将基准站采集的载波相位发给用户接收机,进行求差解算坐标,从而实现厘米级定位。文字太空洞,举例说明:BOSS告诉人力,给你发工资¥8848.00。人力听错了,发给你¥8844.00。收到工资之后,觉得不太对——数字的谐音,这不是变相骂人嘛。你赶紧登陆ERP查询,提交实发工资金额¥8844,查询一下。嚯,不得了,系统一阵卡机(查询后台中),然后duang的一声告诉你——少发了¥4.00。你去找人力,要回来了差额¥4.00,喜提锤子R1。
在这个故事中:“BOSS”就是卫星——负责传达指令,不处理具体事物;“人力”就是传播路径——上情下达,产生误差;“ERP查询返值”就是基准站——根据“用户站”上传的数据,下发的“工资改正数”;而你,就是用户站——将“接收值”(¥8844.00)上传给“基准站”,获得“工资改正数”(-¥4.00),你就知道是少发了¥4.00。经过计算(¥8844.00+¥4.00)即可求得正确解(¥8848.00)。颇有点区块链的感觉了,不是吗?扩展阅读:《DGPS与RTK的区别》https://blog.csdn.net/foreverhuylee/article/details/
目前,服务覆盖全国范围的,只有千寻位置。(千寻位置是由中国兵器工业集团和阿里巴巴集团共同发起成立。千寻位置基于北斗卫星系统(兼容GPS、GLONASS、Galileo)基础定位数据,利用遍及全国的超过2000个地基增强站及自主研发的定位算法,通过互联网技术进行大数据运算,为遍布全国的用户提供精准定位及延展服务)用户在千寻位置购买相关套餐后,可以使用千寻位置提供的SDK或NTRIP协议接收RTCM差分数据。开发方式支持架构账号认证上传语句挂载点返回数据格式SDKAndroidiOSWindowsSTM32自动GGA-RTCMNTRIP不限Base64编码传输GGARTDRTCM32_GGBRTCM3.2RTCM23_GPSRTCM2.3RTKRTCM32_GGBRTCM3.2RTCM30_GG参考资料:https://www.qxwz.com/help-document-location-service.htmlhttps://www.qxwz.com/help-document-common-find-config-service.html由于NTRIP认证方式较繁琐,所以本文不再赘述,有兴趣的读者可以点击下方链接了解更多内容:扩展阅读:《Ntrip通讯协议》https://www.cnblogs.com/hanford/p/6028156.html定位效果如此拔群,当然条件也相当苛刻啦:定位芯片必须支持差分数据解算;场地净空条件良好,尽量不要有任何遮挡(高楼、树木等);SNR应大于40;设备具有接收数据的能力(网络接入);流量消耗很高;测量点在基准站覆盖范围内;固定解耗时较久。我们可以通过模块输出的GGA语句判断当前定位状态:GGA:格式:\$--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh示例:\$GPGGA,,,N,,E,5,9,0.85,18.1,M,8.0,M,1,0999,*5E名称样例单位描述消息ID\$GPGGAGGA协议头UTC时间hhmmss.sss纬度ddmm.mmmmN/SNN=北,S=南经度dddmm.mmmmE/WEW=西,E=东定位指示10=未定位1=GPS单点定位固定解2=RTD差分定位3=PPS模式4=RTK固定解(定位精度达厘米级)5=RTK浮点解6=惯导7=手工输入模式8=模拟模式卫星数目9范围0到12HDOP0.85水平精度MSL幅度18.1米单位M米大地8.0米单位M-差分时间1秒(从接收到差分信号开始的秒数,如果不是差分定位将为空)差分站ID0999差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)校验和*5E消息结束如果是GPS芯片已经进行解算,并输出差分定位结果,那么GGA语句中“定位指示”应为2、4、或5;查分时间应大于0(不为空);差分站ID应不为空。只有同时满足上述条件,才能得到精确的测量结果。接下来,我们看一下实际测试结果。测试环境,某小区内:
测试中,使用上海合宙通信科技有限公司提供的Air202 GPRS通信模块,对GPS芯片进行控制,连接千寻位置平台。将模块输出的GGA原始语句上报到千寻位置平台,将平台下发的数据传输给GPS芯片,然后打印GPS芯片解算后输出的GGA。
(手机APP输出数据)
(差分定位结果)
(对比)通过对比图可以看出,手机定位偏差较大(并没有在顶天台测试嘛),RTK测试结果非常准确,符合测绘等需求。接下来进入后会有期的“你问我答”环节:Q:RTD、RTK服务贵吗?A:可以到千寻位置官网查询。参考价:RTD¥6/月/设备;RTK¥400/月/设备。Q:如何判断我的定位结果是否为差分运算后的结果呢?A:观察GGA语句中的定位指示输出值.Q:流量消耗多少?A:RTCM数据每秒下发一次,每次大约0.5k,大约需要60m/天(按24小时计)。Q:大约需要多久才能得到RTK固定解?A:固定点测量大约需要10分钟。Q:有没有把办法减少流量消耗?A:可以根据gps状态修改代码,当定位模式为“rtk固定解”时,主动断开连接。GPS定位状态改变再重连服务器。Q:为什么设备一直处于浮点解定位状态,无法固定。A:请确保终端设备天线对空观测环境良好,没有受到遮挡,或处于易产生多路径信号反射的物体附近,也请留意导航卫星信号接收正常,CN0处于正常范围内,未受到无线电干扰。低功耗篇——21世纪,物联网最重要的搭档有什么?——电池。从常见的的共享单车、车载定位器,到不常见的远程抄表、充电桩管理。在各种和物联网相关的应用中,供电始终是一个绕不开的话题。如果是有常电(如汽车、自动贩卖机)还好,如果是使用电池,那么每一毫安的电都要精打细算才行(哪怕是用太阳能板充电的共享单车,也经常面临“低电”困扰呢)。MCU、GPS、通信模块等,都是众所周知的耗电大户。其中,GPS芯片因为要承担搜星、计算,输出的任务,所以它的耗电量也是不容小觑的。那么,有没有什么办法让GPS芯片“节能降耗”呢?答案当然是肯定的。前文提到过,GPS芯片搜星时耗电量最大了,如果能让模块尽量减少搜星和追踪的耗电量,就可以达到目的啦。如何做到这两点呢?接下来我们以物联网行业最常用的国科GK9501 GPS芯片为例,进行说明。搜星星历下载和星历预测前文提到过,通过2G网络将星历文件传给GPS芯片,从而实现秒定位+省电,众人拍手欢呼。那么,忽然又出现了个“星历预测”,这是什么鬼呢?Q:什么是“星历预测”?A:GK9501的软件自带“星历预测”功能。它是指在信号正常(CN值大于27)的情况下,硬件连续运行5~10分钟,即可在内部自动生成星历,并预测出未来2~3天的星历,此过程不需要耗费任何流量。实现“通电5分钟,奔跑72小时”。当然实现“星历预测”这个功能,是有条件的:1、星历被下载过一次(外部输入给GPS芯片星历文件,或者GPS芯片自主3D Fix)2、GPS信号CN值不低于273、正常定位过一次;4、RTC不掉电(当主电源断开后,只有RTC电源不断,星历预测功能才可以使用,RTC断开后星历预测功能将不再起作用);Q:“星历预测”和“星历下载”的区别是什么?对实际定位有什么帮助?A:这个要从AGPS的发展史说起。早期,服务器下发的星历文件是包含全部所有的可见卫星数据,将之发给GPS芯片,GPS芯片再根据星历文件去搜星。缺点是星历文件大,定位效果还差那么一丢丢;现在,首先是使用通信芯片进行基站定位,后台获取一个粗略的地理位置,查询导航电文后,再根据该地理位置精确下发当前可见卫星星历,GPS芯片再根据精确的星历文件去针对性地搜星。星历文件体积更小,定位效果更好。由此可见:“星历预测”是芯片自动生成的,仅包含可见卫星的星历;而“星历下载”是包含全部可见(但是不可用)卫星的星历。方式实现方式有效时间优点秒定位的限制缺点星历下载通过2G网络将星历文件下载到GPS芯片4小时可以实现秒定位无限制需要消耗网络流量星历预测长时间有效运行(3D Fix)后,GPS芯片自动生成2~3天可以实现较快速度定位较小位移情况下限制条件较多无论在什么状态下,都是GPS信号CN值越好,定位越快;6小时内的星历下载保存可以将RTC电源断开。Q:如果“星历预测”可以用,那为什么还通过2G网络“星历下载”呢?A:因为“星历预测”的前提是在“信号正常(CN值大于27)的情况下,连续运行5-10分钟”,电流28mA,相对比较耗电。所以大多数应用会倾向于每次都进行“星历下载”,而非使用“星历预测”——何况通过基站定位获取大概位置的动作,本身就需要2G联网服务器呢。Q:为什么星历数据保存有效时间最长是6小时?A:星历保存有效的时间和卫星的运行轨迹相关。星历保存时间越长,原来星历里的可见卫星就越少。因为GPS卫星绕地一圈是12个小时,所以,星历数据有效期6小时已是极限值。超过这一时间后,原来的星历数据就没有意义了。鉴于星历保存的时间越短,其对应星历里的可见星就越多,所以2小时内的星历比保存6小时内的星历对定位的帮助更大。追踪动态追踪也是很耗电的,那么有没有办法让芯片“半睡半醒”的工作呢?嘿嘿,还真有办法,GK9501可是会“达芬奇睡眠法”的哦。模式解释唤醒方式低功耗模式CPU睡眠通过串口唤醒超低功耗模式CPU掉电,只有RTC工作需要force on唤醒低功耗追踪模式CPU睡眠,可以通过串口唤醒或者周期性自动唤醒进行定位输出。可以给出运行轨迹超低功耗追踪模式CPU掉电,只有RTC工作,需要force on唤醒或者周期性自动唤醒进行定位输出。可以给出运行轨迹省功耗追踪模式实际上就是周期性自动唤醒:是GK9501根据当前的运动状态自动设置睡眠时间和运行时间。例如在运动比较快的情况下,会自动睡眠30秒,运行3秒;在运动比较慢的情况下,会自动睡眠60秒,运行3秒;达到在有大致轨迹的情况下,降低功耗的目的。如果主控也需要同步睡眠,可以通过GPIO来通知主控。当然也可以通过主控周期性切断GK9501电源的方式实现这一目的。Q:好像其他友商的芯片也支持AGPS秒定位呢,和GK9501有什么区别呢?A:uBlox、中科微、泰斗支持AGPS,MTK、国科GK9501支持秒定位。区别是前者只下载星历,后者不但下载星历,还会结合基站定位加速找星定位的过程。这个是AGPS和秒定位的本质区别。Q:有没有推荐的GPS物联网模块呢?A:上海合宙通信科技有限公司的Air8xx系列。使用RDA8955+GK9501平台,支持2G和GPS,稳定可靠。作者:Luat来源:Delectate特别声明:本文为网易自媒体平台“网易号”作者上传并发布,仅代表该作者观点。网易仅提供信息发布平台。
一键安装官方客户端
重大事件及时推送 阅读更流畅
http://spider.nosdn.127.net/c4a23a7a747dbb.jpeg

我要回帖

更多关于 太忙 的文章

 

随机推荐