本文主要介绍了一种低成本差分GPS系统的搭建过程,包括基站和移动站两套设备。由于成本限制,硬件基本选择了具有较高性价比的设备,如果后期设备更换,系统搭建过程也基本类似。
同时文中还介绍了一些系统搭建过程中遇到的问题和解决方法,分享出来与大家共勉。
一、硬件准备
1、两块HI600R双频定位模块https://item.taobao.com/item.htm?spm=a1z09.2.0.0.576d2e8d22j1PL&id=663761847721&_u=22f4d3v199ffhttps://item.taobao.com/item.htm?spm=a1z09.2.0.0.576d2e8d22j1PL&id=663761847721&_u=22f4d3v199ff 2、GPS/北斗航海船用蘑菇头天线
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.576d2e8d22j1PL&id=541202200980&_u=22f4d3v1dfb6https://item.taobao.com/item.htm?spm=a1z09.2.0.0.576d2e8d22j1PL&id=541202200980&_u=22f4d3v1dfb6 3、无线数传模块带天线
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.576d2e8d22j1PL&id=41552140402&_u=22f4d3v1e5behttps://item.taobao.com/item.htm?spm=a1z09.2.0.0.576d2e8d22j1PL&id=41552140402&_u=22f4d3v1e5be 4、5V供电模块/锂电池
二、设备连接
1、蘑菇头天线必须要支持GPS L1/L5频段,将输出的SMA接头连接到HI600R天线接收母头。
2、HI600R的UART2输出的是RTCM差分数据,通讯方式为3.3VTTL电平,将其RXD\TXD\GND连接到无线数传模块的TXD\RXD\GND引脚,其工作原理是将基站的RTCM差分数据通过无线数传模块发送出去,经由移动站连接的无线数传模块接收后反馈至移动站。
3、HI600R的UART0输出的是标准NMEA数据,可以直接通过usb数据线进行读取并解码。
4、供电方面,基站使用5v锂电池供电,可以固定在室外空旷地带;移动站使用usb供电,可以随无人车或无人机进行远程移动。
三、软件设置
1、将基站固定在室外空旷位置后,使用ucenter读取基站的纬度、经度、海拔数据(这个精度不用很高,主要为了锁定基站位置),使用厂家自带的PAIR指令对基站的位置进行修改。
2、读取移动站UART0输出的数据内容,等待fix解,即可实现厘米级定位,本人在ROS中进行数据读取和处理,后续会将读取GPS数据,将其解算成odom数据的代码开源。
四、结果验证
首先3D打印了外壳,最终效果如下图所示
选择一处比较空旷的场地:
最终测试的定位精度大约在3cm左右,实现了最初期望的功能。
五、常见问题及解决方法
1、无线数传模块传输数据错误
解决方法:GPS定位解算模块出厂默认波特率115200,RTCM一帧数据大约600个字节,如果采用P900等高成本传输模块可以满足要求,但是目前采用的低成本无线数传模块,在高传输速率和大传输数据量之间无法达到完美契合,因此将GPS定位解算模块UART2的波特率降低到9600,可以实现较低的丢包率。
2 、蘑菇头天线数据接收异常
解决方法:必须采用支持GPS L1/L5双频的天线
3、GPS处于差分模式,但精度依然很低
解决方法:差分模式下依然有fix解和floating解两种状态,fix解可以实现cm级定位,但floating解的精度是在cm-m级之间浮动,所以如果对定位精度要求较高的话,建议将floating解忽略掉。
4、系统很难达到fix状态
解决方法:只有基站和移动站都处于开放天空无遮挡的环境中时才有可能获取到fix解。同时,目前采用的低成本GPS定位解算模块初始化时间较长。解算时间快慢,对环境要求高低,也是市面上GPS精度差异巨大的两个主要原因。
经过两周的摸索和厂家技术大佬的帮忙,终于搭建成了这款低成本差分GPS系统,总体价格在一千元左右,基本实现预期目标,后期将在此系统上进行升级改进。
这是本人第一次分享博客,如有疑问可以在评论区互动交流。