インターネット接続PCのみでRTKの数センチメートル測位を体験してみよう

GPS測位誤差とRTKの概要

GPSの測位精度を数センチメートルオーダにまで高めるRTK(realtime kinematic: リアルタイムキネマティック)を体験します。この内容は広島版IoT縛りの勉強会! IoTLT広島Vol.9で講演した内容です。

GPSの電波を受信した測位では、自らが止まっていても、数メートルから十数メートルくらい動いて表示されます。カーナビやスマートフォンでは、タイヤ回転センサや加速度センサなどを用いて、利用者が止まっている時には止まっているように表示しています。

この3次元的に動く軌跡の中に(またはその軌跡から大きく外れていない場所に)真値があると仮定し、またその真値とある時点での測位結果との差が誤差であると仮定します。このような誤差は、GPS衛星が送信している電離層電波遅延モデルパラメータと現実の電波遅延との相違、それぞれの衛星内部が持つ時計のずれ、利用できる衛星の幾何学的配置による解の劣化、などにより生じます。

RTKは、緯度・経度・高度の既知な「基準局」にて搬送波位相なるものまでを使った精密な衛星信号観測結果(測位計算の前段階である擬似距離算出結果)をインターネットで放送し、一方、利用者はその基準局観測結果をもとに自らの測位結果を実時間(リアルタイム)で補正するするものです。ここではNTRIP (エヌトリップ) というプロトコルを利用して基準局の観測結果を放送します。基準局と移動局とで、GPS受信機機能の本質的な差はありません。

Brief description of RTK

広島市立大学に設置したRTK基準局と擬似移動局

したがって、RTKを利用するためには「搬送波位相」を取り出せるGPS受信機と、その観測結果と基準局での観測結果を用いて測位計算を行うソフトウェアが必要です。後者のソフトウェアには有名なフリーウェアであるRTKLIBが利用できますが、通常は前者のGPS受信機ハードウェアが必要です。

そこで、雨の日でもRTKの実験ができるように、また、RTKに対応した受信機購入前の事前評価ができるように、基準局よりもやや条件の悪い場所に擬似移動局を用意しました。基準局観測結果と同様に擬似移動局の観測結果もNTRIPにて放送しています。

NTRIP Caster broadcasting from Hiroshima City University

Windows PCによるRTK擬似体験

  1. オリジナル版RTKLIB、またはEmlid社が公開しているRTKLIBをダウンロードします。
  2. その中にある rtknavi.exe を実行する。
  3. 各種設定を行い、RTKを実行する。下記のように順にクリックして設定してゆきます。

RTKLIB Windows Step 1 ウィンドウ上部の「I」をクリックして(1) Roverと(2) Base Stationをチェック。さらにRoverとBaseのOptをそれぞれクリックして設定をおこなう。終わったら次は下部の「Option…」を設定する。

RTKLIB Windows Step 2 (1)のOptについて、Hostに「ntrip.phys.info.hiroshima-cu.ac.jp」を、Portに「80」を、Mountpointに「ROV」(Rover…移動局の略)を、それぞれ入力してOKを押す。(2)のOptについてはMountpointを「HCU」にすること以外は(1)と同様に入力します。

RTKLIB Windows Step 3 Option…については、Positioning Modeに「Kinematic」を選択、Frequenciesに「L1」を選択、Ionosphere Correctionに「Broadcast」を選択、Troposphere Correctionに「Saastamoinen」を選択、Satellite Ephemerisに「Broadcast」を選択、そして最下部の衛星はすべて選択します。これらは衛星測位の重要なパラメータですので、改めて解説したいと思います。今回、Mask angle以外はこれらの値を使わざるを得ないので、この通りに設定します。そして上部のPositionタブをクリックします。

RTKLIB Windows Step 4 この基準局は自らの座標値を放送していますので(RTCM 3 Type 1006メッセージ)、Basestation欄に「RTCM Antenna Position」を選択します。このようにして最初の画面で「Start」をクリックすると測位を開始します。

RTKNavi single 数秒から数十秒で擬似移動局の測位結果がでて「Single」(単独測位)状態になります。

RTKNavi float 前述の基準局座標を10秒ごとに放送していますので、スタートをクリックしてから約5秒で「Float」(衛星から利用者までの距離が電波波長の何倍かを探索している)状態になります。

RTKNavi fix さらに30秒から1時間程度待つと、衛星から利用者までの距離が矛盾なく定まった「Fix」状態になります。たまに数秒でFix状態になることがありますが、すぐにFloat状態になります。これは、ミスフィックスと呼ばれ、誤って正しく測位できたと判定してしまう現象です。

是非ともSetting 2にある項目内容を勉強して、パラメータを変えながらより早くFixする方法を探ってみてください。

LinuxまたはMacによるRTK擬似体験

(1) RTKLIBのソースコードをダウンロードします。$はプロンプトです。

$ git clone https://github.com/tomojitakasu/RTKLIB.git

Macでは RTKLIB/app/*/gcc/makefile の中の -lrt をすべて削除します。realtime ライブラリであり、Macでのコンパイルには不要なものです。

(2) RTKLIB/app/makeall.sh を実行します。

$ cd RTKLIB/app
$ ./makeall.sh

(3) RTKLIB/app/rtkrcv/gcc/ にある設定ファイルrtkrcv.conf を編集します。 Windows版の設定内容をファイルに記述します。またはGist に置いたファイルをお使いください。

$ cd rtkrcv/gcc/
$ git clone https://gist.github.com/00587e3767ab01e6b61410c1d69364d6.gitmv 00587e3767ab01e6b61410c1d69364d6/rtkrcv.conf

(4) rtknavi を実行します。

$ ./rtknavi
rtknavi> start
rtknavi> stat 1
...
Ctrl + C
rtknavi> shut

rtkrcv-linux1 しばらく待つとFix状態になります。

rtkrcv-linux2 上述の画面の拡大です。solution statusがfixに、ratio of validationが3.19になっています。まだミスフィックスの可能性がありますが、ratio of validationは10を超えたあたりから急速に大きくなり最大値の999.9になります。

作成日: 27th August 2018