インターネット接続PCのみでのRTKの数センチメートルオーダ測位体験
GPS測位誤差とRTKの概要
GPSの測位精度を数センチメートルオーダにまで高めるRTK(realtime kinematic: リアルタイムキネマティック)を体験します。この内容は広島版IoT縛りの勉強会! IoTLT広島Vol.9で講演した内容です。
GPSの電波を受信した測位では、自らが止まっていても、数メートルから十数メートルくらい動いて表示されます。カーナビやスマートフォンでは、タイヤ回転センサや加速度センサなどを用いて、利用者が止まっている時には止まっているように表示しています。
この3次元的に動く軌跡の中に(またはその軌跡から大きく外れていない場所に)真値があると仮定し、またその真値とある時点での測位結果との差が誤差であると仮定します。このような誤差は、GPS衛星が送信している電離層電波遅延モデルパラメータと現実の電波遅延との相違、それぞれの衛星内部が持つ時計のずれ、利用できる衛星の幾何学的配置による解の劣化、などにより生じます。
RTKは、緯度・経度・高度の既知な「基準局」にて搬送波位相なるものまでを使った精密な衛星信号観測結果(測位計算の前段階である擬似距離算出結果)をインターネットで放送し、一方、利用者はその基準局観測結果をもとに自らの測位結果を実時間(リアルタイム)で補正するするものです。ここではNTRIP (エヌトリップ) というプロトコルを利用して基準局の観測結果を放送します。基準局と移動局とのGPS受信機に本質的な差はありません。
広島市立大学に設置したRTK基準局と擬似移動局
したがって、RTKを利用するためには「搬送波位相」を取り出せるGPS受信機と、その観測結果と基準局での観測結果を用いて測位計算を行うソフトウェアが必要です。後者のソフトウェアには有名なフリーウェアであるRTKLIBが利用できますが、通常は前者のGPS受信機ハードウェアが必要です。
そこで、雨の日でもRTKの実験ができるように、また、RTKに対応した受信機購入前の事前評価ができるように、基準局とは別の場所にある「擬似移動局」を用意しました。この擬似移動局は、実際には静止しています。基準局の観測結果と同様に、擬似移動局の観測結果もNTRIPにて放送しています。
Windows PCによるRTK擬似体験
- RTKLIBをダウンロードして、展開します。
- その中にある rtknavi.exe を実行します。
- 各種設定を行い、RTKを実行します。下記のように順にクリックして設定してゆきます。
以下に具体的な設定手順を述べます。
はじめに、メイン画面のウィンドウ上部の「I」をクリックして、「Input Streams」画面を表示します。
「Input Streams」画面の(1) Roverと(2) Base Stationのチェックボックスを選択します。(1)と(2)の両方のTypeに「NTRIP Caster」を、またFormatに「RTCM 3」を選択します。続いて、RoverとBaseそれぞれのOptをクリックし「NTRIP Client Options」画面を表示して、以下のように設定します。
(1)のOptについて、Hostに「ntrip.phys.info.hiroshima-cu.ac.jp」を、Portに「80」を、Mountpointに「ROV」(Rover…移動局の略)を、User-IDとPasswordは空欄にして、OKを押します。
(2)のOptについては、Mountpointを「F9P」にして、それ以外は(1)と同様に入力し、最後にOKを押します。
その後、メイン画面の下部の「Option…」を押して「Options」の設定を続けます。
「Options」画面の「Settings 1」画面では、Positioning Modeに「Kinematic」を選択、Frequenciesに「L1」を選択、Ionosphere Correctionに「Broadcast」を選択、Troposphere Correctionに「Saastamoinen」を選択、Satellite Ephemerisに「Broadcast」を選択、そして最下部の衛星はすべて選択します。そして上部の「Positionタブ」をクリックします。
「Positionsタブ」において、この基準局は自らの座標値を放送していますので(RTCM 3 Type 1005メッセージ)、Basestation欄に「RTCM Antenna Position」を選択します。
そして、「Options」画面のOKを押します。
最後にメイン画面で「Start」をクリックすると、測位を開始します。
数秒から数十秒で擬似移動局の測位結果がでて「Single」(単独測位)状態になります。
前述の基準局座標を10秒ごとに放送していますので、スタートをクリックしてから約5秒で「Float」(衛星から利用者までの距離が電波波長の何倍かを探索している)状態になります。
さらに30秒から1時間程度待つと、衛星から利用者までの距離が矛盾なく定まった「Fix」状態になります。
しばしば、数秒でFix状態になることがありますが、すぐにFloat状態になります。これは、ミスフィックスと呼ばれ、誤った測位結果を表示する現象です。
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
を下記の通り編集します。このファイルはGist からダウンロードできます。
$ cd rtkrcv/gcc/
$ git clone https://gist.github.com/00587e3767ab01e6b61410c1d69364d6.git rtkrcv.conf
(4) rtknavi を実行します。
$ ./rtknavi
rtknavi> start
rtknavi> stat 1
...
Ctrl + C
rtknavi> shut
しばらく待つとFix状態になります。
上述の画面の拡大です。solution statusがfixに、ratio of validationが3.19になっています。まだミスフィックスの可能性がありますが、ratio of validationは10を超えたあたりから急速に大きくなり最大値の999.9になります。