RTKLIB实战:如何用str2str工具搭建低成本RTK数据转发服务器(附配置详解)
在GNSS高精度定位领域,无论是无人机测绘、精准农业,还是自动驾驶测试,实时获取厘米级的定位数据都离不开稳定可靠的数据链路。许多工程师手头有性能不错的GNSS接收机,却常常被数据转发、协议转换和多客户端共享这些“琐事”绊住手脚。你可能遇到过这样的场景:一台接收机通过串口吐着宝贵的RTCM差分数据,却只能被一个上位机软件独占;或者需要在野外将基准站的数据通过4G网络分发给多个移动站,却对复杂的网络配置望而却步。
RTKLIB工具箱里的str2str,这个看似简单的命令行工具,恰恰是解决这些痛点的瑞士军刀。它不负责复杂的定位解算,专精于数据流的“搬运”与“转换”,能以极低的资源开销,在树莓派这类几十块钱的单板计算机上,构建起一个专业级的数据转发枢纽。今天,我们就抛开理论,直击实战,一步步拆解如何用str2str搭建一个稳定、灵活且支持多客户端的RTK数据转发服务器。你会发现,实现专业的数据中继服务,成本可以如此之低,过程也可以如此清晰。
1. 理解str2str:数据流的万能管道
在深入配置之前,我们得先搞清楚str2str到底是个什么角色。你可以把它想象成一个高度可配置的数据管道工,它的工作就是在不同的“入口”(输入流)和“出口”(输出流)之间搬运GNSS数据字节。它不关心数据包里的具体内容是什么,是RTCM3差分改正数、NMEA位置语句,还是接收机原始的UBX协议,它只负责原样搬运,或者按照你的指令进行格式过滤与转发。
它的强大之处在于支持的流类型极其丰富:
- 串口 (serial):直接对接绝大多数GNSS接收机,如/dev/ttyUSB0、COM3。
- 网络 (tcpcli/tcpsvr, udpcli/udpsvr):实现TCP/UDP的客户端或服务器模式,是构建网络化数据服务的核心。
- 文件 (file):既可以实时记录输入流到文件(记录),也可以读取历史文件并模拟实时流播放(回放),这对调试和重现问题至关重要。
- NTRIP (ntripcli/ntripsvr):作为客户端从NTRIP Caster拉取差分源,或作为服务器(Caster)广播数据,是接入国际/国家差分网络的关键。
一个最简单的例子,把串口数据实时转发到TCP端口,只需要一行命令:
str2str -in serial://ttyUSB0:115200:8:n:1 -out tcpsvr://:2101
这行命令启动了一个TCP服务器(tcpsvr),监听本地的2101端口。任何连接到这个端口的客户端,都能收到来自ttyUSB0串口的原始数据。
注意:str2str是RTKLIB的命令行工具(CUI),与之对应的图形化工具是STRSVR。在无图形界面的服务器或资源受限的嵌入式设备上,str2str是唯一选择,其轻量级和易于脚本化的特性,更适合自动化部署。
2. 硬件准备与系统环境搭建
我们选择树莓派4B(甚至更早的3B+)作为硬件平台,它功耗低、体积小、自带网络接口,是理想的边缘数据服务器。成本可以控制在300元人民币以内。
硬件清单:
- 树莓派主板:4B(2GB内存版本足够)。
- GNSS接收机:以u-blox F9P为例,它是支持L1/L2双频RTK的明星型号,通过USB转串口线或直接USB连接树莓派。
- 电源与存储:官方电源或可靠的5V/3A电源,一张16GB以上的MicroSD卡。
- 网络:通过有线网接入局域网,或配置4G USB网卡实现远程访问。
软件环境搭建(以树莓派OS为例):
首先,我们需要从源码编译RTKLIB,以获得最新的str2str程序。打开