NTRIP实现GPS数据传输与播发

Recording by yinflying
Email:yinflying@foxmail.com

1.平台与资料准备

  1. NTRIP SERVER: 可选有两个:一个是github上的nunojpg/ntripserver 另外一个则为RTKLIB中的str2str组件:下载地址
  2. NTRIP CASTER: 下载地址
  3. NTRIP CLIENT: 采用的是BNC 下载地址
  4. ubuntu 14.04x86_64

2.NTRIP SERVER下载安装与配置

本次主要是介绍和使用RTKLIB中的str2str组件下载安装和使用。下载RTLLIB的源码包,
rtklib_2.4.2.zip (55.2MB),然后解压该源码包,找到str2str的makefile文件,编译并安装。

$ unzip rtklib_2.4.2.zip
$ cd ./rtklib_2.4.2/app/str2str/gcc
$ make
$ sudo cp str2str /usr/bin

这样就把str2str2安装到了/usr/bin中,可在任意处调用。str2str的使用简单的使用方法:

usage: str2str -in stream -out stream
输入流类型: serial, tcp client, tcp server, ntrip client,file.
输出流类型:serial, tcp client, tcp server, ntrip server,file.
stream 格式要求([]括号表示可选内容)
    serial       : serial://port[:brate[:bsize[:parity[:stopb[:fctr]]]]]
    tcp server   : tcpsvr://:port
    tcp client   : tcpcli://addr[:port]
    ntrip client : ntrip://[user[:passwd]@]addr[:port][/mntpnt]
    ntrip server : ntrips://[:passwd@]addr[:port][/mntpnt[:str]] (only out)
    file         : [file://]path[::T][::+start][::xseppd][::S=swap]

更多更详细的用法见rtklib包中有manul.pdf,或者使用str2str -h获得。

3.NTPIP CASTER安装与配置

因为是github的程序,故采用git即可下载编译和安装:

$ git clone https://github.com/nunojpg/ntripcaster.git
$ cd ntripcaster
$ ./configure --prefix=/opt
$ make
$ sudo make install

其中./configure中有可选择合适的位置。本次将其安装到/opt目录下。ntripcaster安装目录下会有三个子目录:
logs,conf,bin。logs目录为默认日志目录,而conf则为配置路径目录,bin为主程序目录。现在主要是修改主目录下的配置文件。
conf目录有两个示例性的配置文件ntripcaster.conf.dist和sourcetatble.dat.dist,将两者尾辍.dist去了,该配置文件就可以生效。A

$ cd /opt/ntripcaster/conf
$ cp ntripcaster.conf.dist ntripcaster.conf
$ cp sourcetable.dat.dist sourcetable.dat

之后再修改ntripcaster.conf的内容,主要修改的有两个方面server passwards和server IP/port configuration.

#########################Server passwords#####################################
#encoder_password 主要是用于server端传数据所用密码
encoder_password 123456
####################Server IP/port configuration##############################
#server_name 设置为一个IP地址,port只要不被现有端口占用即可
server_name 127.0.0.2
port 2101

更多的设置仔细看看该配置中的说明。

4.BNC 安装

下载对应的编译版本,运行其中的可执行文件即可,其更多的使用方法参见安装包下的bnchelp.pdf。

5.操作方案

5.1 启动NTRIP CASTER

对于NTRIP传输来说,CASTER是为中间传输层,是最为重要连接部分。首先得云行CATESTER。
在上述的安装和配置中已经配置了ntripcaster.conf,密码和IP地址均配置好了,但是没有配置挂载路径、数据类型等与数据源相关的配置,这些配置均在sourcetable中。
在sourcetable.dat加入该行:

STR;FFMJ2;Frankfurt;RTCM 3;1(1),3(19),16(59);0;GPS;GREF;DEU;50.12;8.68;0;1;GPSNet V2.10;none;N;N;560;Demo

其中FFMJ2即为挂载点,RTCM 3为数据源类型,由于str2str2只能提供RTCM_3输出数据,故只能采用RTCM_3作为数据类型。更多的关于sourcetable的信息请参见ntripcaster源码包下./conf/NtripSourcetable.doc。
配置完成之后即可启动CASTER:

$ cd /opt/ntripcaster/bin
$ ./ntripcaster
NtripCaster Version 0.1.5 Initializing...
NtripCaster comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of NtripCaster under the terms of the
GNU General Public License.
For more information about these matters, see the file named COPYING.
Starting thread engine...
[17/Sep/2016:14:10:38] NtripCaster Version 0.1.5 Starting..
[17/Sep/2016:14:10:38] Using stdout as NtripCaster logging window
[17/Sep/2016:14:10:38] Starting main connection handler...
[17/Sep/2016:14:10:38] WARNING: Resolving the server name [127.0.0.2] does not work!
[17/Sep/2016:14:10:38] Listening on port 2101...
[17/Sep/2016:14:10:38] Using '127.0.0.2' as servername...
[17/Sep/2016:14:10:38] Server limits: 100 clients, 100 clients per source, 40 sources
[17/Sep/2016:14:10:38] Starting Calender Thread...
[17/Sep/2016:14:10:38] Bandwidth:0.000000KB/s Sources:0 Clients:0

这样CASTER就开始等待CLINET和SERVER的接入,在此过程中该进程保持运行。

5.2 NTRIP SERVER播发数据。

首先得找合适的NTRIP SOURCE,本次直接使用公用的CASTER作为数据源,然后使用SERVER传入到CASTER中。公用的数据源可用的并不多,大部分都需要用户和密码才可以进入。不过依旧会存在一些季节性的开放的CASTER。在BNC的示例中会找到一些:BNC/Example_Configs/下的.BNC配置文件中即有可用的挂载点:

mountPoints=//Example:Configs@mgex.igs-ip.net:80/CUT07 RTCM_3.2 AUS -32.00 115.89 no 1, //Example:Configs@www.igs-ip.net:80/FFMJ1 RTCM_3.0 DEU 50.09 8.66 no 1

选择第一个挂载点作为输入数据类型,将其传到到本地CASTER上:

$str2str -in ntrip://Example:Configs@mgex.igs-ip.net:80/CUT07 -out ntrips://:123456@127.0.0.2:2101/FFMJ2
stream server start
2016/09/17 04:01:48 [-----]          0 B       0 bps
2016/09/17 04:01:53 [CC---]       4842 B    5324 bps (0) mgex.igs-ip.net/CUT07 (1) 127.0.0.2/FFMJ2
2016/09/17 04:01:58 [CC---]      11388 B   10487 bps (0) mgex.igs-ip.net/CUT07 (1) 127.0.0.2/FFMJ2
2016/09/17 04:02:03 [CC---]      22682 B   10463 bps (0) mgex.igs-ip.net/CUT07 (1) 127.0.0.2/FFMJ2
2016/09/17 04:02:08 [CC---]      30167 B   10862 bps (0) mgex.igs-ip.net/CUT07 (1) 127.0.0.2/FFMJ2
2016/09/17 04:02:13 [CC---]      37261 B   12275 bps (0) mgex.igs-ip.net/CUT07 (1) 127.0.0.2/FFMJ2

前面[CC]表示传输状态,前面C表示传入状态良好,后面C表示传出状态良好。命令的具体的含义参照命令的说明以及前面CASTER的配置。
与此同时,ntripcaster下则会出现如下的消息:

[17/Sep/2016:14:40:15] Accepted encoder on mountpoint /FFMJ2 from 127.0.0.1. 1 sources connected

5.3 NBC接收数据

点击NBC客户端左下角Add Stream—-caster,然后再Add Stream from Caster的窗口中选择:

caster host:127.0.0.2
caster port:2101
user: (空)
Password:(空)
Ntrip Version: 1

其中由于在Caster中并没有对挂载点设置限制的用户和密码,user和password实际上任意。再点击窗口下面“Get table”,即可获得table,选中FFMJ2所在栏,点击”select“并退出该窗口,即可看见Streams下添加了该挂载点。
再接着设置一下下载数据的存放位置,选择”RINEX Observations”选项卡,将Directory修改为数据存储目录(注意要有写权限)。最后点击最下面一排中“start”按钮开始接收数据即可。BNC端会出现如下消息:

16-09-17 06:40:36 ========== Start BNC v2.12.2 (LINUX) ==========
16-09-17 06:40:36 Panel 'RINEX Observations' active
16-09-17 06:40:36 FFMJ2: Get data in RTCM 3.x format
16-09-17 06:40:36 Configuration read: /home/yf/.config/BKG/BNC.bnc, 1 stream(s)

与此同时CASTER端会出现如下消息:

[17/Sep/2016:14:40:36] Accepted client 1 [(null)] from [127.0.0.1] on mountpoint [/FFMJ2]. 1 clients connected
[17/Sep/2016:14:41:48] Bandwidth:0.933333KB/s Sources:1 Clients:1

数据流会开始传输,且目录下会看到观测值文件,至此,表示CASTER搭建成功。

此条目发表在GNSS, LINUX分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。