主要总结些定位相关的概念性东西, 方便自己看, 如有错误, 请指正.
GNSS: Global Navigation Satellite System
, 全球卫星导航系统, 能在地球表面或近地空间的任何地点为用户提供全天候的3维坐标和速度以及时间信息的空基无线电导航定位系统.
4大全球系统: 美国GPS, 俄罗斯GLONASS, 欧盟GALILEO, 中国北斗卫星导航系统
区域系统有日本的QZSS和印度的IRNSS. 此外还有增强系统.
各个系统的比较(图自Satellite navigation Wiki):
反应在轨道上(图自 https://upload.wikimedia.org/wikipedia/commons/b/b4/Comparison_satellite_navigation_orbits.svg):
至少4颗卫星才能较为准确的定位(可以去搜下那个熟悉的方程…), 多个系统混起来用可以增加可视卫星的数量, 提高定位精度, 减少平均收敛时间.
以前手机只用GPS L1频段, 定位精度令人抓狂, 受建筑物影响, 定位误差往往1~200米
. 去年开始, 手机纷纷上了双频GPS(L1+L5), 剔除建筑物影响, 可达到误差3~5米
或更为精确的定位.
RTK(Real - time kinematic,实时动态)载波相位差分技术, 是实时处理两个测量站载波相位观测量的差分方法, 将基准站采集的载波相位发给用户接收机, 进行求差解算坐标.
RTK(real time kinematic)是以载波相位观测值进行实时动态相对定位的技术。其原理是将位于基准站上的GPS接收机观测的卫星数据,通过数据通信链(无线电台)实时发送出去,而位于附近的移动站GPS接收机在对卫星观测的同时,也接收来自基准站的电台信号,通过对所收到的信号进行实时处理,给出移动站的三维坐标,并估其精度。
利用RTK测量时,至少配备两台GPS接收机,一台固定安放在基准站上,另外一台作为移动站进行点位测量。在两台接收机之间还需要数据通信链,实时将基准站上的观测数据发送给流动站。对流动站接收到的数据(卫星信号和基准站的信号)进行实时处理还需要RTK软件,其主要完成双差模糊度的求解、基线向量的解算、坐标的转换。
RTK技术可以在很短的时间内获得厘米级的定位精度,广泛应用于图根控制测量、施工放样、工程测量及地形测量等领域。但RTK也有一些缺点,主要表现在需要架设本地参考站,误差随移动站到基准站距离的增加而变大。
可以去了解下D-GPS(Differential GPS), A-GPS(Assisted GPS or Augmented GPS)等的原理.
这个基准站可以自己去建, 然后通过UHF/4G等和移动设备建立联系, 一次投入, 长久受益, 在固定的范围比较合适.
如果今天到这, 明天到那, 百十上千公里, 自己建基站可能就不划算了, 这就牵涉到跨域资源共享Cross-Origin Resource Sharing (CORS), 国家各地的测绘院有这个, 自己用的话, 国内用的比较多的有千寻位置
.
铁老大建基站, 用户手机联网需要收费, 千寻建基站也不是无本生意, 也要收费. 如厘米级定位千寻知寸套餐, 400元/月, 3600元/年, 对于个人而言比手机话费贵多了, 对于搞测绘或者自动驾驶来说, 这个钱掏就掏了:
买回来后, 有两种使用方法, 一种是appkey
+appSecret
(密钥)的方式, 一种是自己设置的差分账号+差分密码的方式, 前者用官方的SDK开发起来比较方便, 后者用在通用的设备如4G DTU里面比较合适.
想自己开发硬件或者写代码就看SDK集成指南, 想直接买了其他家4G DTU然后就用的, 看差分账号指南.
差分帐号好不好使可以用Lefebure NTRIP Client
, NtripDTU
等软件查看, 前者功能强大, 我们来用后者试试:
帮助中心: https://help.qxwz.com/ 可以看到各种集成方式:
也就是说, 可以直接在Android/iOS/PC上集成千寻SDK, 也可以简单的拿 嵌入式Linux或者单片机(如STM32)+2G/4G模块撸一个出来.
点进去嵌入式差分数据SDK, 可以看到原理:
下载里面:
更新的还是挺频繁的, 然而这个版本拉下来短时间内并不知道怎么用, 论坛半遮半掩, 总是私信, 前人走错的路后人也必须趟一遍的感觉. 半年前下载过1.3版本的:
只需要main.c里面填入上面买的appKey(出错的话, 几个不同名字的号都试试)+appSecrect(很长很长), deviceId和deviceType可以自定义:
int main(int argc, const char * argv[]) {
//设置appKey和appSecret
//apapKey申请详细见说明文档
config.appkey="";
config.appSecret="";
config.deviceId="";
config.deviceType="";
//[1] Set sdk configs
qxwz_setting(&config);
//[2] Start rtcm sdk
qxwz_rtcm_start(qxwz_rtcm_response_callback,qxwz_status_response_callback);
//[3] Send gga every second, gga is hard code in this demo
int i;
for (i = 0; i < 120000; i++) {
qxwz_rtcm_sendGGAWithGGAString("$GPGGA,000001,3112.518576,N,12127.901251,E,1,8,1,0,M,-32,M,3,0*4B\r\n");
QXLOGI("Send GGA done\r\n");
sleep(1);
}
QXLOGI("qxwz_rtcm_stop here\r\n");
//[4] Stop rtcm sdk
qxwz_rtcm_stop();
QXLOGI("qxwz_rtcm_stop done\r\n");
return 0;
}
然后gcc -g -o main main.c -lrtcm -L. -Wl,-rpath=. -std=c99
编译, ./main
运行.
代码中"$GPGGA,000001,3112.518576,N,12127.901251,E,1,8,1,0,M,-32,M,3,0*4B\r\n"
换成GPS芯片传来的数据就可以了.
直接买其他厂家开发好的硬件如4G DTU, 一般是单片机+4G模块搞的, 都实现好了Ntrip协议进行通信, 插个手机卡/物联卡, 再稍微设置, 接上惯导等就可以用了, 设置的几个选项如下:
①地址域名:rtk.ntrip.qxwz.com 或IP(60.205.8.49)
②端口
端口:8001 对应坐标框架ITRF2008 参考历元2016.0
端口:8002 对应坐标框架WGS84 参考历元2005.0
端口:8003 对应坐标框架CGCS2000 参考历元2000.0
③mountpoint/源/挂载点
RTCM32_GGB 或 RTCM30_GG
④差分账号
⑤差分密码
http://47.254.43.90/cn/infocenter/news/551.htm
前段时间传出一款很中国特色的芯片移远LG69T模组:
此次推出的移远LG69T模组为汽车提供了现阶段最高水平的定位能力,在开阔环境下可以输出精度10CM的定位数据。这一结果主要通过千寻位置终端智能算法,基于意法半导体最新车规级双频高精度定位芯片STA8100GA和惯性测量单元ASM330的原始数据,结合千寻位置智能驾驶专有服务FindAUTO数据进行解算而实现的。
传言2020年中交付, 确定的话还是很不错的.
欢迎扫描二维码关注本人微信公众号, 及时获取或者发送给我最新消息: