Modernized RTKLIB (MRTKLIB) Web UI
はじめに
衛星測位の研究では、東京海洋大学 高須知二先生のオープンソースソフトウェアRTKILIB(アールティーケイ・リブ、Real Time Kinematic Library)が広く用いられています。RTKLIBは、内閣府のオープンソースソフトウェアCLASLIBやMADOCALIB、また、JAXAのMALIBにも採用されています。
RTKLIBの資産を受け継ぎつつ、新しいソフトウェア技術で再構築したModernized RTKLIB (MRTKLIB)が公開されました。MRTKLIBには、CLASLIB、MADOCALIB、demo5 RTKLIBが統合されています。これらは、元となるRTKLIBのバージョンが異なるため、統合には大変な労力を要したと想像しております。
今回、Docker(ドッカー)を用いたMRTKLIB Webユーザインターフェース(Web UI)も公開されましたので、早速、試してみます。

Dockerイメージのビルド
ここでは、Docker DesktopをインストールしたmacOS上で、MRTKLIB Web UIを利用してみます。
Gitを用いてこのソースコードをダウンロードし、docker compose up -dを実行すれば、イメージのビルドからバックグランド起動までを全自動で行えます。ビルドの際には、インターネット接続が必要です。
git clone https://github.com/h-shiono/mrtklib-docker-ui
cd mrtklib-docker-ui
docker compose up -d
終了するには、このディレクトリで、docker compose downを実行します。再びバックグランド起動するためには、docker compose up -dを実行します。
すでにビルドされたDockerのイメージファイルも用意されています。しかし、MRTKLIBやそのWeb UIは改良が続けられているソフトウェアですので、git pullで最新ソースコードにキャッチアップした上で、docker compose buildにて自らでDockerイメージをリビルドするのが良いように思います。
現時点のtagはv0.2.0-alpha、ハッシュ値はe3a7185です。
RTKの実時間処理
MRTKLIB Web UIをバックグランド起動し、ブラウザでhttp://localhost:8080/にアクセスすると、Web UIが現れます。画面上部には、
- 後処理タブ(Post Processing、RTKLIBの
rnx2rtkpに相当)、 - 実時間処理タブ(Real-Time、RTKLIBの
rtkrcvに相当)、 - ストリームサーバータブ(RTKLIBの
str2strに相当)、 - 生データ等の変換タブ(Conversion、RTKLIBの
convbinに相当)、そして - 便利ツールタブ(Tools、GPS時刻変換)
があります。
ここでは、RTKの実時間処理を試しますので、Real-Timeタブを選択します。
次に、左側のメニューのI/O Streamsをクリックして、観測局(Rover)と基準局(Base Station)の情報を設定します。ここでは、両者のTypeとしてNTRIP Client(エヌトリップ・クライアント)を、FormatとしてRTCM3を選びました。Path欄については、
- Roverに
ntrip.rnav.hiroshima-cu.ac.jp:80/F9P(広島市立大学GNSS観測局のu-blox F9P受信機) - Base Statinに
ntrip.rnav.hiroshima-cu.ac.jp:80/OEM7(同NovAtel OEM729受信機)
を選びました。両者のアンテナ間距離は2メートル程度です。

RTKには、基準局アンテナ座標の設定が必要です。この情報は、左側メニューのAntennaにて設定します。この基準局のアンテナ座標はRTCM3メッセージで自動設定できますので、Position TypeとしてRTCM Antenna Posを選んでください。

そして、Startボタンをクリックすると、観測局と基準局にNTRIP形式にて接続され、測位が始まります。すぐにフロート解が出力され、黄色のプロットが現れました。

Solutionタブでは、日時、座標、品質(Quality)が表示されています。フロート解はQ=2、フィックス解はQ=1です。単独測位について、RTKLIBはQ=5ですが、MRTKLIBではQ=0となっているようです。

ChartのSeriesタブには、AR (ambiguity resolution)、レシオテスト値、利用衛星数の時刻変化が表示されています。見ていて楽しいです。

ChartのSky+SNRタブには、スカイプロット(衛星配置)と衛星ごとの信号強度が表示されています。

しばらくすると、フィックス解になり、緑色のプロットが現れました。素晴らしいです。

単独測位の後処理実行
次に、後処理を行います。ここでは、国土地理院の電子基準点データ提供サービスにて、基準点「広島2A」(基準点番号1157)の2026年5月1日(1月1日から121日経過)の1日分データを用いました。ダウンロードしたファイルは圧縮されていますので、あらかじめ解凍しておきます。
今度は、上部のPost Processingタブを選択し、左側のPOSITIONINGのModeタブをクリックし、Basic StrategyのPositioning ModeとしてSingleを選択します。

次に、左側のExectionのInput Filesタブをクリックし、Rover OBSに観測ファイル11571210.26oを、NavitationにGPS航法データファイル11571210.26nを設定しました。Executeボタンを押すと、単独測位結果が右画面に現れます。

国土地理院のこのファイル名部分11571210は、基準点番号(1157)、1月1日からの経過日数(121)、そして1日分を表すゼロからなります。また、拡張子は、西暦の下2桁(26)と内容1英文字からなります。内容oは観測データを表します。また、
nはGPSの航法データを、gはGLONASSの航法データを、lはGalileoの航法データを、qはみちびきの航法データを
それぞれ表します。現時点では、複数の航法データを設定できないようです。
便利ツール
MRTKLIB Web UIには、時刻計算ツールがあります。GPS週番号や、1月1日からの経過日数などが簡単に計算できます。

おわりに
MRTKLIBのWeb UIを利用してみました。macOS上でもプロット表示が利用でき、楽しいです。MRTKLIBは、CLASのVRS(Virtual Reference Station)によるPPP-RTK測位もできるようです。コマンドラインツールとともに、MRTKLIBを探検してみたいと思います。