千寻跬步SDK高精度定位试用小记

  • A+
所属分类:技术杂记

最近一直在研究定位精度的问题。心里琢磨着,这些互联网的网约车,如滴滴打车,Uber的定位精度那么高?主要表现为,每一次启用打车服务时,师傅接单打电话,从未问我是在路的哪一边,并且车一般都是停在我打车位置的10米或更低范围内。就算是手机的GPS的定位精度是10m, 在城市道路,非空旷环境下,GPS或者是GNNS系统定位,应该是有严重的定位漂移的,这个我实测过,用uBlox模块,即便是在空旷环境下测试,非差分定位,有时候会漂移20多米,更不用提在信号遮挡或是信号干扰,信号强度弱的情况下测试。有一次,在办公大楼的窗户旁边测试,测试的结果更让人不满,漂移1公里多路......

无独有偶,问度娘高精度定位,度娘回答“千寻位置”的解决方案,通过与千寻位置技术支持沟通,拿到了试用的SDK,经过一番研究,操作基本上是如下几个步骤:

  1. 通过用户在千寻网上注册试用,注册用户名帐号与密码,然后拿到APP Key与密码,绑定设备TYPE与设备SN编码,这一步称为远程用户设备鉴权,其中当然不免有用户与服务器之间的沟通如Creat Socket,Connect Socket, SendData等这些网络基本操作;
  2. 千寻服务器,成功鉴权,则发送鉴权确认信息,然后用户向千寻Ntrip服务器发送当前地理位置的GPGGA信息;
  3. 千寻Ntrip服务器接收用户发送当前的GGA信息,再向用户通过互联网传递用户当前所在地区的差分基准站信息;
  4. 用户设备收到当前所在地区的差分基准站信息,则把该信息直接注入到支持差分信息的定位模块里;
  5. 定位模块通过差分基准站信息,重新输出GPGGA信息;
  6. 设备通过固定周期重复3-5这三个步骤;
  7. 可以通过多组定位数据求经纬度平均值,测试时间越长,锚点越多,定位越精确;

经过队友的艰苦奋斗,终于调通了SDK,找了一个并非特别空旷的环境,测试大约10分钟,通过uBlox提供的软件测试,得出定位精度为1.2米左右(打点的范围是在半径为1.2米的圆圈内),然而,在非空旷环境下测试,并未得到如此高精度的结果,定位精度是10米,20米,甚至是50米,都是很常见的事情。

如此,可以得出结论,若想使用卫星实现高精度定位,首先必须要保证,测试是在空旷环境,而且电波反射要尽量少,当然,模块天线的射频匹配要做的足够好,这是非常必要的;其次,使用差分定位技术,通过网络连接至差分定位基准站得到差分信息(公有误差,如云雾层,电离层等传播介质给定位信息带来的传导误差等),然后采用DGPS算法,重新得到精准的经纬度,再有,使用平均值算法,或使用其他误差算法,来得到更精准的经纬度信息;

另外,有一个问题,在测试过程中,不使用网络模块,并不引入差分基准站信息时,在空旷环境下测试,有时候GPGGA信息,竟然输出的是差分信息?非空旷环境,单模块基本得不到差分信息。(GPGGA语句有一关键字有解释,0表示未定位,1表示使用单点定位,2表示差分定位)有人说,是收到了GPS系统的同步卫星的信号,有人说是低轨道卫星的差分信号。如今还暂时不能确定。问模块的厂家,居然都得不到合理的解释、有人还回复是收到的地面基准站发送的信息。网络模块都没有,又如何收到地面基准站信息呢?这个问题还需查阅资料或得到高人指点迷津。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: