使用RASPBERRY PI计算机和RTKLIB进行精确的GPS定位-移动GPS单元的配置

设置好基站并发送GPS数据后,接下来便是移动单元的结构。B.用于机器人。移动单元与基站之间的主要区别在于,移动单元从基站接收GPS数据流,并使用其接收的其他GPS数据来确定机器人的精确位置。现在,该过程非常简单。首先创建基站的micro-SD卡的映像/副本,然后将此映像复制回移动单元的micro-SD卡。

像基站一样,移动单元也被重新安装在宜家的快餐盒中。饭盒的塑料可以很容易地用简单的方法加工,并且不会碎裂。下图显示了移动单元和基站。两个单元中都再次安装了来自www.drfasching.at的RasPiGNSS模块


XBee_Module-300x225.jpg


启动Raspberry Pi之后,您应该首先更改主机名。对于移动站,我将其更改为“ mstation ”。然后,您实际上几乎可以使用现有的RTK库来确定移动单元的确切位置。

第二根“ Tallysman™TW-4421”天线连接到移动站上的RasPiGNSS模块。移动站和基站还具有XBee Pro S1模块,用于快速GPS数据交换。目前,我仍然让两个设备都通过W-LAN进行通信。

操作的前提条件是移动站从基站接收GPS数据流。如理论结构文章中所述,两个设备都必须通过无线电链路交换GPS数据。在上一篇有关基站的文章中,“ / usr / bin / rtkbase”文件的配置确定了数据传输的类型。

移动站-软件设置

本节是关于配置GPS接收器并在移动单元上执行RTKRCV(实时定位程序)程序的。

初始化RASPIGNSS模块

在将RasPiGNSS模块与RTK库一起使用之前,必须在BINR模式下对其进行初始化。www.drfasching.at的RPGTOOLS的文件夹“ / usr / etc /”中有一些脚本与基站一样,最好在每次重新启动移动单元中的Raspberry Pi后初始化RasPiGNSS模块。我再次在rc.local中为移动单元进行了调整。

为了能够编辑/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/rtkrcv -s -p 23 -m 24 -o /home/pi/gnss/rtkrover.conf &)

带有用于启动RasPiGNSS模块的调整的rc.local如下图所示。


rc-local-mobile-station-300x233.png



最后一行“ / usr / bin / rtkrcv -s -p 23 -m 24 -o /home/pi/gnss/rtkrover.conf”直接启动rtkrcv程序,用于计算移动单元的RTK位置。您可以使用RTKRCV程序通过Telnet(<IP地址> <端口>)从任何计算机进行连接。

注意TELNET

如果要终止与rtkrcv程序的连接,请在控制台/ Telnet客户端中键入“ exit”。否则,您将被锁定,并且将无法再通过Telnet连接到移动设备。仅在重启rtkrcv之后才有可能。

您可以在网站www.drfasching.at上找到更多信息,该网站更深入地介绍了RasPiGNSS GPS接收器模块的初始化细节。

注意:检查BINR模式

RasPiGNSS模块必须以BINR模式在移动台和基站上运行。您可以使用上面介绍的命令进行此设置。可以使用以下命令来检查基站的RasPiGNSS模块是否以BINR模式运行。

命令: stty -aF / dev / ttyAMA0

在下图(来自基站)中,您可以看到“ 230400”的构建速率。这样可以确保模块以BINR模式运行,而不是以NMEA模式运行,而NMEA模式的构建速率较低,为“ 115200”。您还应该在移动设备上看到带有“ 230400”的构建速率。


RasPiGNSS_module_BINR_mode.jpg





在BINR模式下成功初始化GPS接收机后,可以使用RTKRCV程序确定位置并计算移动单元的确切位置。

RTKRCV程序-配置简介

RTKRCV(实时定位程序)程序在移动设备上使用。此RTKRCV程序需要一个配置文件,例如 B.名称rtkrcv.conf,准确描述了定位的计算方法。该文件中还配置了两个GPS输入流。一个是来自基站的GPS数据流,另一个是来自移动单元和RasPiGNSS模块本身的GPS数据流。

rtkrcv.conf文件中或与我一起使用的名称rtkrover.conf中,都知道不仅有必要能够开始实时定位,而且还必须通过各种配置使它尽可能地好。

选项RTKRCV程序

运行此程序时,RTKRCV程序的以下选项可用:

-s 在程序启动时启动RTK服务器
-p端口 telnet控制台的端口号
-m端口 监视器流的端口号
-d开发 控制台终端设备
-o文件 配置文件
-r级 输出解决方案状态文件(0:关闭,1:状态,2:残差)
-t级 调试跟踪级别(0:关闭,1-5:开启)

我想参考RTK库的说明:RTKLIB

手动启动RTKRCV程序

如果您手动启动了RTKRCV程序,那么您现在位于RTKRCV程序的控制台中。现在,您需要一些命令来控制RTKRCV程序。您只需在控制台中键入“ h”即可看到可用的命令。然后,该帮助将显示所有可能的命令。如果您已通过Telnet连接,这些命令也将起作用。

使用参数-s,RTKRCV服务器在启动程序后立即执行。如果要自动启动RTKRCV程序,则此参数很重要,如开头在rc.local中进行的说明中所述。使用第二个参数p,可以启动一个控制台,该控制台可以通过Telnet(telnet <IP地址> 23)通过端口2950进行访问。因此,您可以通过Telnet在任何计算机上控制正在运行的RTKRCV程序,而不必直接坐在移动设备上。我使用第三个选项“ -o /home/pi/gnss/rtkrover.conf”启动了RTKRCV程序,以便在程序启动时直接加载我的机器人汽车的rtkrover.conf配置中存储的设置。 RTKRCV。

命令: sudo / usr / bin / rtkrcv -s -p 23 -m 24 -o /home/pi/gnss/rtkrover.conf

使用RTKRCV程序控制台中的“流”命令,您可以查看移动单元上GPS接收器接收到的流以及来自基站的流。

terminal_rtkrcv_streams-300x150.jpg




RTKRCV IN流-TCP / IP或串行

必须配置rtkrover.conf文件,以便RTKRCV服务器正常工作就我而言,它位于文件夹“ /home/pi/gnss/rtkrover.conf”中在这一点上,我将进入必须进行的设置,以便能够从基站接收GPS数据流。

首先,我要描述通过TCP / IP协议通过WIFI模块从基站接收GPS原始数据的过程。以下是rtkrover.conf文件的摘录。

#基本输入
-TCPIP流NVS inpstr2-type = tcpcli#(0:关闭,1:串行,2:文件,3:tcpsvr,4:tcpcli,7:ntripcli,8:ftp,9:http)
inpstr2-path =基站:5800
inpstr2-format = nvs#(0:rtcm2,1:rtcm3,2:oem4,3:oem3,4:ubx,5:ss2,6:hemis,7:skytraq,8:gw10,9:javad, 10:nvs,15:sp3)

其次,我想描述通过串行接口的接收。和我一起,XBee模块连接到串行接口,并以RTCM3格式从基站接收GPS信号。以下是rtkrover.conf文件的摘录。

#基本输入
-XBee模块inpstr2-type =串行#(0:关闭,1:串行,2:文件,3:tcpsvr,4:tcpcli,7:ntripcli,8:ftp,9:http)
inpstr2-path = ttyUSB0 :115200:8:n:1:关闭
inpstr2-format = rtcm3
inpstr2-nmeareq = off#(0:关闭,1:latlon,2:单)
inpstr2-nmealat = 0#(deg)
inpstr2-nmealon = 0#(度)

根据配置,移动单元可以例如。B.通过TCP / IP或通过串行接口上的XBee模块接收原始数据或RTCM3数据。

RTKRCV OUT流-NMEA

rtkrover.conf配置文件中还设置NMEA流,该流提供了移动单元的精确GPS坐标。该流的配置如下。

#输出1
outstr1-type = tcpsvr#(0:关闭,1:串行,2:文件,3:tcpsvr,4:tcpcli,6:ntripsvr)
outstr1-path =:2947
outstr1-format = nmea#(0:llh ,1:xyz,2:enu,3:nmea)

但是,流还不是很完美。它仍显示Telnet中流动站GPS坐标中的间隙。这些遗漏是由于移动单元并不总是具有固定解决方案。这取决于接收到的GPS信号的质量以及基站和移动单元接收到的GPS卫星的数量,在float和SBAS之间来回切换。

telnet_nmea_stream-1-300x213.jpg





版本RTKRCV修复解决方案

通过Telnet在RTKRCV程序的控制台中的输出类似于以下屏幕截图。您还可以看到找到了解决方案。因此,我的机器人将来应该能够非常精确地导航。RTKRCV程序的控制台中用于此显示的命令是状态。

命令  status


RTK_FIX_Solution_public-300x181.png



概要

通过基站以及现在的移动单元的构建,RTK设置的基本功能已经完成。根据接收到的卫星数量和GPS信号的质量,我将很快收到SBAS解决方案。大约15分钟后,我通常会使用浮动或固定解决方案。但是,这并不稳定。在这里,浮动和固定解决方案之间总是会有变化。如果RTK设置无法计算解决方案,那么现在希望进行的只是微调,并且可能是回退解决方案。在这里,我可以想象并行使用著名的GPS鼠标。



sitemap