Skip to content

付録:測位結果の出力設定

概要

MRTKLIB の測位結果は様々な形で外部出力し、利活用することができます。 本章では出力方法に応じた設定方法を説明します。

出力の設定は、UI の Output & Log Streams にある Output 1 (Solution) で行います。 複数の出力設定を行いたい場合には、Output & Log Streams の右側にある + をクリックすることで、出力設定を増やすことができます。

出力方法 主な用途 対応 OS 事前準備
File ログとして保存し、後から解析する Windows / macOS / Linux 不要
TCP/IP Server 別アプリ・別端末からリアルタイムに受け取る Windows / macOS / Linux 不要
Serial(USB) 外部機器へリアルタイムに流し込む Windows / Linux のみ 必要(手動)
NTRIP / TCP Client 外部サーバへ送信する Windows / macOS / Linux 不要

重要

ここで扱うのは測位結果(解)の出力です。 現在の mrtklib-docker-ui ではリアルタイム測位と並行して受信機から届く Raw データ(SBF)をそのまま保存することができません。 近日中に Raw データ保存にも対応できるように検討中です。

出力方法の選択

Type をクリックすると、出力方法をプルダウンから選択できます。

Type を選ぶと Path と Format が入力できるようになります。 Path の書式は出力方法ごとに異なるため、以下の各節を参照してください。 Output & Log Streams の見出しの右にある ? アイコンからも、書式の一覧を確認できます。

出力フォーマットの選択

Format は NMEA を選択します。 測位結果は NMEA センテンス($GPGGA など)として出力され、多くのアプリケーションがそのまま解釈できます。

File 出力

ファイル出力を行う場合は、Type と Path をそれぞれ以下のように設定します。

項目 設定内容
Type File
Path /workspace/G5P6%n%H.nmea::S=1
Format NMEA

/workspace はホストの {path to mrtklib-quickstart}/mrtklib-quickstart-data/workspace にマウントされています。 ファイル名の例 G5P6%n%H.nmea は受信機名が G5P6、%n が年通算日 (Day of Year)、%H が時間コード (a=0,b=1,..x=23) をそれぞれ表します。

重要

Path は必ず /workspace/ から始まる絶対パスで指定してください。 相対パス(例:workspace/out.nmea)はコンテナ内の別の場所に書き込まれるため、ホストからは見えず、コンテナを停止・削除すると失われます。

時刻の指定子

%n、%H 以外にも以下の指定子が利用可能です。

指定子 意味
%Y Year (yyyy)
%y Year (yy)
%m Month (mm)
%d Day of Month (dd)
%n Day of Year (ddd)
%W GPS Week No. (wwww)
%D Day of Week
%h Hour (00-23)
%M Minute (00-59)
%S Second (00-59)
%H Hour code (a,b,...,x)

ファイルの分割

パスの末尾に付けた ::S= は、ファイルを分割する間隔を時間単位で指定するものです。

指定 動作
::S=1 1 時間ごとに新しいファイルへ切り替える
::S=24 24 時間ごとに切り替える
::S=0.5 30 分ごとに切り替える
指定なし 分割せず 1 つのファイルに書き続ける

分割を使う場合は、ファイル名に時刻の指定子を必ず含めてください。 含めないと、切り替えのたびに同じ名前のファイルへ上書きされてしまいます。

TCP/IP Server 出力

MRTKLIB を TCP サーバとして動作させ、別のアプリケーションや別の端末から接続して測位結果を受け取ります。

項目 設定内容
Type TCP Server
Path :2101
Format NMEA

Path は : に続けてポート番号を書きます。

重要

ここで指定する番号は、起動スクリプトが公開しているポートと一致させる必要があります。それ以外の番号を指定しても外部からは接続できません。 公開されているのは scripts\windows\lib\common.ps1 の $OutPort(既定では 2101)だけです。変更したい場合は 使用するポートを変更する を参照してください。

接続の確認

同じ PC から確認する場合は、PowerShell で次のコマンドを実行します。 TcpTestSucceeded : True と表示されれば、ポートまで到達できています。

PowerShell
Test-NetConnection localhost -Port 2101

ノート

このコマンドが確認するのは、ポートに到達できるかどうかだけです。実際に測位結果が流れているかは、接続先のアプリケーションで NMEA センテンスが受信できることをもって確認してください。

別の端末から接続する場合は、localhost の代わりに MRTKLIB を動かしている PC の IP アドレスを指定します。IP アドレスは次のコマンドで確認できます。

PowerShell
ipconfig

公開範囲についての注意

警告

このポートは既定で 0.0.0.0(すべてのネットワークインタフェース)で公開されるため、同じ LAN 上の任意の端末から接続できます。 MRTKLIB の TCP Server に認証機能はありません。 共用の Wi-Fi など、信頼できないネットワークで使用する場合はご注意ください。

Path にアドレスを書いても公開範囲は変わりません。 MRTKLIB の TCP Server は、パスに何を書いても常にすべてのインタフェースで待ち受けます。 同じ PC の中だけで使いたい場合は、scripts\windows\lib\run-container.ps1 の公開指定を次のように書き換えてください。

PowerShell
'-p', "127.0.0.1:${OutPort}:${OutPort}"

Serial(USB)出力

USB シリアル変換器などを介して、外部機器へ測位結果を流し込みます。

警告

Serial 出力は Windows(WSL 経由)と Linux でのみ利用できます。 Docker Desktop for Mac はシリアルデバイスのパススルーに対応していないため、macOS では利用できません。 macOS では TCP/IP Server 出力 をご利用ください。

重要

出力先となる機器は多岐にわたるため、自動設定の対象外です。 以下の手順は手作業になります。 また、コンテナへ渡すデバイスは起動時にしか指定できません。 必ず start.bat を実行する前に出力先の機器を接続してください。 コンテナの起動後に接続しても認識されません。

出力先デバイスの接続

受信機と同じように、出力先の機器も WSL へアタッチする必要があります。

出力先の機器を USB 接続し、管理者権限の PowerShell(PowerShell を管理者権限で起動)で、接続されている USB 機器の一覧を表示します。

PowerShell
usbipd list

出力先の機器の BUSID を確認し、共有してから WSL へアタッチします。X-Y は確認した BUSID に読み替えてください。

PowerShell
usbipd bind --busid X-Y
usbipd attach --wsl --busid X-Y

WSL 側でデバイス名を確認します。

PowerShell
wsl ls /dev/ttyUSB* /dev/ttyACM*

FTDI や CP210x、CH340 といった一般的な USB シリアル変換器は /dev/ttyUSB0 のように現れます。 ここで確認した名前を、次の手順と UI の設定で使用します。

コンテナへのデバイスの追加

start.bat がコンテナへ渡すのは、受信機の SBF が流れているポート 1 本だけです。 出力先の機器を渡すには、scripts\windows\lib\run-container.ps1 の次の行を書き換えます。

PowerShell
$deviceArgs = @('--device', "${sbfDevice}:${ContainerDevice}",
                '--device', '/dev/ttyUSB0:/dev/ttyUSB0')

/dev/ttyUSB0 は前の手順で確認した名前に読み替えてください。

書き換えたら、stop.bat を実行してから start.bat を実行し直します。コンテナが作り直され、追加したデバイスが渡されます。

ノート

出力先が Arduino のような CDC-ACM 機器(/dev/ttyACM* として現れるもの)の場合、start.bat の SBF ポート検出処理が起動時に約 3 秒間そのポートを読みにいきます。 読み出しで副作用がある機器では注意してください。

UI の設定

項目 設定内容
Type Serial
Path ttyUSB0:115200
Format NMEA

Path は デバイス名:ボーレート の形式で指定します。先頭の /dev/ は不要です。 ボーレートは出力先の機器側の設定に合わせてください。

ノート

ttyACM0 は受信機の入力(Rover)で使用しているポートです。出力先として指定しないでください。

終了時のデタッチ

stop.bat がデタッチするのは受信機(mosaic-G5)だけです。 追加した出力先の機器は WSL にアタッチされたまま残り、Windows からは見えない状態が続きます。

stop.bat を実行したあと、管理者権限の PowerShell で手動でデタッチしてください。

PowerShell
usbipd detach --busid X-Y

NTRIP / TCP Client 出力

外部のサーバへ測位結果を送信します。 MRTKLIB 側から接続しにいく外向きの通信なので、ポートの公開は不要です。

NTRIP

NTRIP キャスタへ測位結果を送信します。

項目 設定内容
Type NTRIP Client
Path [:passwd@]addr[:port]/mountpoint
Format NMEA

重要

Type の表示は NTRIP Client ですが、出力に設定した場合は NTRIP サーバ(キャスタへ送信する側)として動作します。 そのため Path は上記の書式になり、入力側で使う NTRIP クライアントの書式(user:passwd@...)とは異なります。 ユーザ名は指定せず、パスワードとマウントポイントを指定してください。

例::mypassword@rtk2go.com:2101/MYMOUNT

TCP Client

任意の TCP サーバへ接続して、測位結果を送信します。

項目 設定内容
Type TCP Client
Path addr[:port]
Format NMEA

例:192.168.1.100:2101

うまくいかない場合