使用RASPBERRY PI计算机和RTKLIB进行精确的GPS定位-GPS基站的配置
在Raspberry Pi上的上一篇文章中为RasPiGNSS模块安装了软件并检查了GPS接收器的功能之后,现在可以进行基站的进一步配置。该基站可在室外和任何天气中使用。因此,必须安全保护电子设备不受风吹雨打。我专注于防潮,并自己建造了防水外壳。面临的挑战是,我在五金店的电子部门找不到低价的合适住房。但在下一节中将对此进行更多介绍。
防水套
我买了一个零食盒作为在宜家发现的房屋。这个盒子仅售4.99欧元,为Raspberry Pi,降压转换器,RasPiGNSS GPS接收器,电池和XBee Pro无线电模块提供了足够的空间。我将W-LAN和XBee无线电的天线直接拧到外壳上,并通过小孔将它们引出。我将电缆通过带有密封螺母M16的电缆固定头(符合IP68标准)连接到Tallysman TW-2410 GPS天线。我还通过具有IP68防护等级的M12尺寸的电缆密封套将电源线从包装箱中取出。整个过程看起来像下面的图片。
基站配置
该软件已经可用,并且原则上仅需启动服务器,该服务器便通过W-LAN将接收到的GPS信号传输到移动单元,随后再通过XBee无线电模块传输。RTK库中的str2str服务器用于此目的。您可以在www.drfasching.at上获得一个名为“ rtkbase”的脚本,该脚本是 RPGTOOLS的一部分。该脚本映射了流功能,而您无需编程任何一行。在此脚本中,区分是通过TCP-IP还是通过z进行传输。B.应该通过XBee模块串行完成。
下载RTKBASE脚本:www.drfasching /download
安装rpgtools之后,所需的脚本作为Debian软件包位于/ usr / bin /文件夹中。
调整RC.LOCAL
RasPiGNSS模块必须以BINR模式在基站上运行。必须执行以下命令,以使GPS模块以BINR模式运行并传递原始数据。在www.drfasching.at的支持下,我建立了命令,以便RasPiGNSS模块可以在BINR模式下安全运行。每次关闭Raspberry Pi时,都必须再次执行这些命令。GPS模块不会记住设置模式,并且在重新启动Raspberry Pi后始终以NMEA模式启动。
我以根用户身份将以下命令添加到了/etc/rc.local。这种组合在RasPiGNSS模块中设置了正确的模式,最后还启动了基站的str2str服务器。为了能够编辑/ect/rc.local,您必须执行以下命令。
命令: sudo nano /etc/rc.local
现在,在文件末尾输入以下命令并保存更改。
(/bin/sleep 5 && /usr/bin/nvsctl -v reset)
(/bin/sleep 7 && /usr/bin/nvsmode -v binr)
(/bin/sleep 9 && /usr/bin/binrcmd -v /home/pi/gnss/rpgtools/etc/init.cmd)
(/bin/sleep 11 && /usr/bin/rtkbase &)
rc.local现在对我来说像这样,对您来说也应该像这样。进行更改后,重新启动Raspberry Pi。
如果要检查GPS模块是否以BINR模式运行,则可以例如 B.执行以下命令并检查传输速度。
命令: stty -aF / dev / ttyAMA0
在下图中,您可以看到“ 230400”的 率。这样可以确保模块以BINR模式运行,而不是以NMEA模式运行,而NMEA模式的构建速率较低,为“ 115200”。
手动启动基站
使用以下命令,您可以从rpgtools手动启动脚本,从而启动基站。或者,您可以如上所述更改rc.local,并在打开Raspberry Pi后让基站的str2str服务器自动启动。
以下是用于手动启动str2str服务器的命令。
命令: sudo ./usr/bin/rtkbase
运行rtkbase脚本后的输出应如下所示。设备读取流时,将显示相应的IP地址。如果有多个设备读取GPS流,则只有连接到基站的设备数量可用。
RTKBASE GPS原始数据流
如果要通过TCP / IP将接收到的GPS原始数据作为数据流从基站传输到移动单元以计算精确的GPS位置,则必须相应地修改“ / usr / bin / rtkbase”文件。对于设置outformat 并为设定的消息 仍然不确定/空。
outformat =
消息=
那么您必须如下所示配置rtkbase。
在屏幕截图中,您可以看到未定义格式,也 未定义消息, 这是原始数据流传输到移动单元的方式。根据基站和移动单元之间无线电连接的带宽,我们建议使用RTCM3格式。以下各节之一将对此进行详细介绍。
RTKBASE GPS RTCM3流
如果要通过TCP / IP将接收到的GPS数据作为RTCM3流从基站传输到移动单元,以计算精确的GPS位置,则必须配置“ / usr / bin / rtkbase”文件,如下所示。对于RTCM3流,必须始终定义要传输的消息 。
outformat =“ rtcm3”
消息=“ 1002,1004,1006,1010,1013,1019,1020,1033,1107 ”
RTKBASE TCP-IP或串行XBEE传输
如果要通过TCP / IP或XBee模块串行传输数据,则必须如下更改rtkbase。
TCP / IP设定
如果GPS数据通过网络/ WIFI模块作为RTCM3流从基站传输,则必须相应地修改“ / usr / bin / rtkbase”文件。作为帮助,可以在下面找到配置TCP / IP数据传输的基本部分。
outtype =“ tcpsvr”
outstream =“:5800”
outformat =“ rtcm3”
消息=“ 1002,1004,1006,1010,1013,1019,1020,1033,1107 ”
设置完成后,配置如下图所示。
串行XBee设置
来自基站的GPS数据是否应该通过串行接口发送,例如 B.与XBee模块一起传输时,必须相应地修改“ / usr / bin / rtkbase”文件。作为辅助,可以在下面找到配置串行数据传输的基本部分。
outtype=”serial”
outstream=”ttyUSB0:115200:8:n:1:off”
outformat=”rtcm3″
messages=”1002,1004,1006,1010,1013,1019,1020,1033,1107″
设置完成后,配置如下图所示。
存储RTKBASE GPS坐标
在“ / usr / bin / rtkbase”中,您还应该存储基站的GPS坐标及其高度。该信息很重要,因此移动单元可以计算出相对于基站的相对参考点。对我来说,当前设置看起来像这样。
显示GPS数据流-基站
在GPS数据流上z。B.作为来自基站的RTCM3,移动单元可以使用以下地址<IP地址>:<5800>进行访问。
然后,您可以 在Android平板电脑上使用“ RTK + GPS”程序显示接收到的基站GPS坐标。
在PC上,您可以 B.使用了程序RTKNAVI,那里的基站数据流显示如下:
可以从以下URL获得Windows的RTKNAVI程序:在GitHub中打开存储库(Windows的二进制程序)。
https://github.com/tomojitakasu/RTKLIB_bin
概要
在我习惯了RTK库之后,设置基站并使其投入使用并不是很困难。我需要一点时间来制作防水盒,以便能够在户外设置Raspberry Pi和其他电子产品的防水性。在这里,我使用了便当盒作为最便宜的解决方案,并添加了一些连接。RTKLIB基站的建设和安装耗时约1天。str2str服务器的不同配置有些复杂,但是我希望我的说明会帮助您理解它们。但是现在一切运行都非常可靠,我可以设置流动站和XBee无线电连接。