CLASLIBによる高精度GPS測位

category: gnss
tags: clas qzss rtklib

はじめに

高精度衛星測位方法として、精密単独測位(PPP: precise point positioning)を検討しています。

日本の準天頂衛星システム(みちびき、QZSS: quasi-zenith satellite system)が放送するPPP情報には、MADOCA-PPP(マドカ・ピーピーピー、multi-GNSS advanced orbit and clock augmentation - precise point positioning)とCLAS(シーラス、centimeter level augmentation service)があり、ともにL6周波数帯(1278.75 MHz、帯域幅42 MHz)のBPSK(bi-phase shift keying)にて伝送されています。

内閣府は、これらの信号処理ソフトウェアをオープンソースソフトウェアとしてGitHubに公開していて、MADOCA-PPPに対してはMADOCALIB(マドカリブ、MADOCA-PPP test library)、CLASに対してはCLASLIB(シーラスリブ、CLAS test library)があります。MADOCALIB ver.1.2については実験しましたので、今回はCLASLIB v.0.7.3aをWindows PCにて試してみます。

ダウンロードと設定

CLASLIBは、アプリケーション

  1. ssr2osr (state space representation to observation state representation)
  2. ssr2obs (state space representation to observation)
  3. rnx2rtkp (RINEX to RTK post processing)

からなります。かつて、CLASLIBはみちびきホームページにて公開されていていました。そのとき、ダウンロード版CLASLIBの中にrnx2rtkpは含まれず、そのバイナリーファイルまたはソースコードを入手するためには申請が必要でした。rnx2rtkpは、RTKLIBの同名のアプリケーションを拡張したもので、AR(電波波長とコード距離との整数値あいまいさ解決、ambiguity resolution)によってssr2osrよりも精度高く座標を推定できます。私は、過去にダウンロード版CLASLIBのssr2osrssr2obsを試しました。

このCLASLIBがオープンソースソフトウェアになり、rnx2rtkpのソースコードとともにGitHubに公開されました。今回は、このrnx2rtkpを中心に扱います。GitHub版のCLASLIBには、rnx2rtkpのソースコードだけでなくバイナリーファイルもありますので、これを利用します。

CLASLIB ver.0.7.3a

このGitHubページから直接CLASLIBをダウンロードすることもできますが、ここではWindows PCにgitコマンドを導入して、ダウンロードしします。git pullで最新版に更新でき、バージョンアップの点で便利です。また、makeコマンドなどの開発環境が必要になりますのでMSYS2も導入します。これらの導入に、Windows標準搭載のパッケージマネージャーwingetを用います。コマンドプロンプトで次のコマンドを入力します。

winget upgrade --all
winget install git.git msys2.msys2

そして、例えば書類フォルダにて、コマンドプロンプトからgitコマンドにてCLASLIBをダウンロードします。

cd Document
git clone https://github.com/QZSS-Strategy-Office/claslib

次に、MSYS2のMSYS2 MINGW64を起動し、このシェル開発環境の中で、動作確認に必要なmakeをインストールします。

pacman -S make

ここで、インストール確認を求められますので、yを入力します。MINGW64を終了するためには、logout、または、ctrl+d(コントロールキーを押したままDキーを押す)を入力します。これでCLASLIBのrnx2rtkpを試す準備ができました。

CLASLIBのサンプルデータの処理 

はじめに、MINGW64のシェルの中で、先にCLASLIBをダウンロードしたフォルダーの中のutil/rnx2rtkpに移動します。

cd /c/Users/sat/Documents/claslib/util/rnx2rtkp

satの部分は皆様のユーザ名に置き換えてください。このシェル内では、フォルダ名の大文字小文字を区別しないようです。フォルダ名入力の際、途中まで入力した上でtabキーを押すと、残りが補完されます。意図しないフォルダ名が補完されたら、正しいフォルダ名が現れるまでtabキーをくり返し押します。

以下、複数の処理例がありますが、CLAS測位の点では、衛星航法(NAV: navigation)ファイル、受信機観測(OBS: observation)ファイル、サブタイプ12のCLAS L6ファイル、の3入力ファイルにて測位を行うtest_ST12が最も重要です。

test_L6

はじめに、makeコマンドでtest_L6を実行します。これは、makefileに書かれたターゲットtest_L6を実行することを意味します。受信データのサンプルに対して、CLASが放送されるL6D信号の復号を行います。このL6データは、旧形式のもので、サブタイプ(ST)9を用いて地域の対流圏遅延情報を表現しています。現在では、ST9の代わりに、ST12が用いられています

sat@horse MINGW64 /c/Users/sat/Documents/claslib/util/rnx2rtkp
$ make test_L6
./rnx2rtkp.exe -ti 1 -ts 2019/08/27 16:00:00 -te 2019/08/27 16:59:59 -x 2 -k kinematic.conf ..\\..\\data\\0627239Q.obs ..\\..\\data\\sept_2019239.nav ..\\..\\data\\2019239Q.l6 -o 0627239Q_claslib_L6.nmea
CSSR frame first recieve: tow=444652.2
L6 data: change facility, week=2323, tow=444652.16,        ---> 1(193)
start CSSR decoding: week=2323, tow=444652.2
pos est: pos=36.104 140.086
selected_grid1: inet=7, weight=0.36, pos=35.850 140.030, dist=28.69km, index=16
selected_grid2: inet=7, weight=0.32, pos=36.390 140.030, dist=32.28km, index=17
selected_grid3: inet=7, weight=0.17, pos=35.850 140.690, dist=61.20km, index=19
selected_grid4: inet=7, weight=0.16, pos=36.390 140.690, dist=62.96km, index=20

このmakeコマンドにより、

  1. 出力を1秒間隔にて(-ti 1)、
  2. 2019年8月27日 16:00:00UTCから16:59:59UTCの範囲にて(-tsオプションと-teオプション)、
  3. 詳細デバッグ情報ファイルも作成し(-x 2、traceの拡張子を持つテキストファイルが作成されます)、
  4. 設定ファイルkinematic.confを用いて(-k kinematic.conf)、
  5. ..\..\data\にあるOBSファイル0227239Q.obs..\\..\\data\\0227239Q.obs)、
  6. ..\..\data\にあるNAVファイルsept_2019239.nav..\\..\\data\\sept_2019239.nav)、
  7. ..\..\data\にあるCLAS L6ファイル2019239Q.l6..\\..\\data\\20119239Q.l6)に対してCLAS測位を行う、および、
  8. その結果を0627239Q_claslib_L6.nmeaファイルに出力する(-o 0627239Q.nmea

ことを意味するコマンドが生成されて、実行されます。このコマンド列をシェル環境で実行することも可能です。

この測位の過程で、rnx2rtkpは、受信機の大まかな座標である北緯36.104度と東経140.086度を求め、CLASグリッドの適切なネットワークID(NID)7を発見し、このNID内に含まれる周囲4座標と受信機の大まかな座標との間の距離にて重みづけした対流圏遅延量を求めています。

この座標出力は、NMEA-0183(エヌメア、National Marine Electronics Association)形式なので、そのままでは座標の結果がわかりにくいです。設定ファイルkinematic.confout-solformatllh(latitude, longitude, and elliptical height)に、またout-timesysutcに変更すれば、座標や時刻が読みやすくなります。ここでは、NMEAフォーマットのままでrtkplot.exeにてプロットします。rtkplot.exeを起動したら、EditOptions..(またはctrl+p)にて、オプション画面を表示します。ここで、統計情報を出力するためにShow StatisticsONに、時間経過により正しい値に収束することを仮定し原点を最終時刻座標にするためにCoordinate OriginEnd Posに、それぞれ変更し、OKを押します。

CLASLIB ver.0.7.d

そして、FileOpen Solution-1...にてこの0627239Q.nmeaを選択しプロットします。

CLASLIB ver.0.7.d

rtkplotの表示モードをGnd Trk(ground track)からPositionに変更すると、座標の時間変化が表示されます。

CLASLIB ver.0.7.d

画面下部には、座標が確定されたFix状態であるQ=1が全体の99.9%、座標が不確定なFloat状態であるQ=2が0.1%であることが示されています。また、右上の統計情報から、北緯36.103633678度、東経140.086318713度、楕円体高が69.7940メートルであることがわかります。この座標を国土地理院の地理院地図で検索すると、国土地理院の「地図と測量の科学館」近辺であることがわかります。

一方、ファイル名0627239Q.obsから、これは電子基準点局番号0627の1月1日から239日目(2019年では8月27日)のセッション番号Q(16:00:00UTCから16:59:59UTCまで)のOBSファイルのようです。国土地理院の電子基準点データ提供サービスから局番号0627を検索すると、この局の受信機は1996年にはじめて設置され、概略座標は北緯36.10363585、東経140.08630753度であることがわかります。

CLASLIB ver.0.7.d

地球1周は約4万キロメートルなので、緯度1度は約111キロメートルに相当します。CLASで求めた緯度36.103633678度と、局番号0627の緯度36.10363585度の差は2.18×10-6なので、南北方向に24センチメートル程度の差があります。この基準点座標は概略値で、また、両者の時間経過による地殻変動もありますので、これらはほぼ一致しているといえるでしょう。

test_L6_week

次にtest_L6_weekを実行してみます。この例は、2018年11月25日 00:00:00UTCからの1時間のデータ処理に関するものです。ここでの-l6wオプションは、GPS週番号を指定するもの(15ページ)だそうです。

sat@horse MINGW64 /c/Users/sat/Desktop/claslib/util/rnx2rtkp
$ make test_L6_week
./rnx2rtkp.exe -ti 1 -ts 2018/11/25 0:00:00 -te 2018/11/25 00:59:59 -l6w 2028 -x 2 -k kinematic.conf ..\\..\\data\\0161329A.obs ..\\..\\data\\tskc2018329.nav ..\\..\\data\\2018328X_329A.l6 -o 0161329A_claslib_L6W.nmea
CSSR frame first recieve: tow=445122.9
L6 data: change facility, week=2323, tow=445122.90,        ---> 1(193)
start CSSR decoding: week=2323, tow=445122.9
pos est: pos=39.981 141.225
selected_grid1: inet=9, weight=0.43, pos=40.160 141.340, dist=22.25km, index=12
selected_grid2: inet=9, weight=0.23, pos=39.620 141.340, dist=41.32km, index=11
selected_grid3: inet=9, weight=0.19, pos=40.160 140.690, dist=49.82km, index=7
selected_grid4: inet=9, weight=0.16, pos=39.620 140.690, dist=60.78km, index=6

これもrtkplotでプロットしてみます。

CLASLIB ver.0.7.d

test_L6_bnx

受信機観測ファイルとして、テキスト形式のRINEX(ライネックス, receiver independent exchange format)OBSファイルの代わりに、BINEX(binary exchange format)ファイルを用いた例です。RTKLIBやCLASLIBは、BINEXファイルも読み込めます。日時は、先のtest_L6と同様の2019年の1月1日から239日目(8月27日)の16:00:00UTCから1時間のものです。

sat@horse MINGW64 /c/Users/sat/Desktop/claslib/util/rnx2rtkp
$ make test_L6_bnx
./rnx2rtkp.exe -ti 1 -ts 2019/08/27 16:00:00 -te 2019/08/27 16:59:59 -x 2 -k kinematic.conf ..\\..\\data\\0627239Q.bnx ..\\..\\data\\sept_2019239.nav ..\\..\\data\\2019239Q.l6 -o 0627239Q_claslib_L6B.nmea
CSSR frame first recieve: tow=445241.3
L6 data: change facility, week=2323, tow=445241.26,        ---> 1(193)
start CSSR decoding: week=2323, tow=445241.3
pos est: pos=36.104 140.086
selected_grid1: inet=7, weight=0.36, pos=35.850 140.030, dist=28.69km, index=16
selected_grid2: inet=7, weight=0.32, pos=36.390 140.030, dist=32.28km, index=17
selected_grid3: inet=7, weight=0.17, pos=35.850 140.690, dist=61.20km, index=19
selected_grid4: inet=7, weight=0.16, pos=36.390 140.690, dist=62.96km, index=20

CLASLIB ver.0.7.d

test_VRS

この例はCLAS測位によるものではありません。L6ファイルを与える代わりに、RTKと同様に、NAVファイル、移動局でのOBSファイル、基準局でのOBSファイルの3つを用いて、移動局に対するRTK測位を行うものです。ここでは、CLASLIBのssr2obsにより仮想的に作り出した基準局(VRS: virtual reference station)を用います。ここで用いる設定ファイルkinematic_vrs.confでは、測位モードpos1-posmodevrs-rtkになっています。

sat@horse MINGW64 /c/Users/sat/Desktop/claslib/util/rnx2rtkp
$ make test_VRS
./rnx2rtkp.exe -ti 1 -ts 2019/08/27 16:00:00 -te 2019/08/27 16:59:59 -x 2 -k kinematic_vrs.conf ..\\..\\data\\0627239Q.obs ..\\..\\data\\sept_2019239.nav ..\\..\\data\\vrs2019239Q.obs -o 0627239Q_claslib_VRS.nmea

CLASLIB ver.0.7.d

この結果は、VRSが用いられずに、すべて単独測位(Q=5)になっていることを表しています。これは、フォルダ../../data/にVRS OBSファイルvrs2019239Q.obsがないためです。以下のssr2obsにて作成したvrs2019239Q.obsをここにおいて再び実行すると、CLAS VRSによるRTK測位ができます。

CLASLIB ver.0.7.d

test_ST12

次は、上述のST9の代わりに、現在のCLASで放送されているST12を用いた例です。2019年12月15日 01:00:00UTCからの1時間のデータです。ST12メッセージの放送開始は2020年11月30日 06:00:00UTCなので、このL6ファイルはみちびきからの放送前のテストデータです。このST9からST12へのフォーマット変更により、補強対象衛星数が最大11機から最大17機に増加しました

sat@horse MINGW64 /c/Users/sat/Desktop/claslib/util/rnx2rtkp
$ make test_ST12
./rnx2rtkp.exe -ti 1 -ts 2019/12/15 01:00:00 -te 2019/12/15 01:59:59 -x 2 -k kinematic.conf ..\\..\\data\\0627349AB.bnx ..\\..\\data\\sept_2019349.nav ..\\..\\data\\2019349B.l6 -o 0627349AB_claslib_ST12.nmea
CSSR frame first recieve: tow=445311.3
L6 data: change facility, week=2323, tow=445311.34,        ---> 1(193)
start CSSR decoding: week=2323, tow=445311.3
pos est: pos=36.104 140.086
selected_grid1: inet=7, weight=0.36, pos=35.850 140.030, dist=28.69km, index=16
selected_grid2: inet=7, weight=0.32, pos=36.390 140.030, dist=32.28km, index=17
selected_grid3: inet=7, weight=0.17, pos=35.850 140.690, dist=61.20km, index=19
selected_grid4: inet=7, weight=0.16, pos=36.390 140.690, dist=62.96km, index=20

CLASLIB ver.0.7.d

時間経過とともに、単独測位(Q=5)から、RTKのFloat状態(Q=2)、Fix状態(Q=1)になり、Fix状態を維持していることがわかります。

test_NONAV

CLAS測位には、OBSファイル、NAVファイル、CLAS L6ファイル、の3ファイルが必要です。これは明示的なNAVファイルがなくてもCLAS測位ができる例です。

sat@horse MINGW64 /c/Users/sat/Desktop/claslib/util/rnx2rtkp
$ make test_NONAV
./rnx2rtkp.exe -ti 1 -ts 2019/12/15 01:00:00 -te 2019/12/15 01:59:59 -x 2 -k kinematic.conf ..\\..\\data\\0627349AB.bnx ..\\..\\data\\2019349B.l6 -o 0627349AB_claslib_NONAV.nmea
CSSR frame first recieve: tow=445363.1
L6 data: change facility, week=2323, tow=445363.10,        ---> 1(193)
start CSSR decoding: week=2323, tow=445363.1
pos est: pos=36.104 140.086
selected_grid1: inet=7, weight=0.36, pos=35.850 140.030, dist=28.69km, index=16
selected_grid2: inet=7, weight=0.32, pos=36.390 140.030, dist=32.28km, index=17
selected_grid3: inet=7, weight=0.17, pos=35.850 140.690, dist=61.20km, index=19
selected_grid4: inet=7, weight=0.16, pos=36.390 140.690, dist=62.96km, index=20

CLASLIB ver.0.7.d

NAVファイルがなくても測位できてすごい!と思ったのですが、実はこのBINEXファイルには、OBSファイルだけでなく、NAVファイルも含まれていました。

$ convbin 0627239Q.bnx
input file  : 0627239Q.bnx (BINEX)
->rinex obs : 0627239Q.obs
->rinex nav : 0627239Q.nav
->sbas log  : 0627239Q.sbs

scanning: 2019/08/27 17:00:16 GREJ
2019/08/27 16:00:20-08/27 17:00:18: O=3599 N=85

0627239Q.navの中身は、次のとおりです。

     3.04           N: GNSS NAV DATA    M: Mixed            RINEX VERSION / TYPE
CONVBIN 2.4.3                           20240725 111126 UTC PGM / RUN BY / DATE 
format: BINEX                                               COMMENT             
log: 0627239Q.bnx                                           COMMENT             
                                                            END OF HEADER       
G26 2019 08 27 18 00 00  .251140445471D-04  .898126018001D-11  .000000000000D+00
      .500000000000D+02  .709687500000D+02  .431053669401D-08  .118650858810D+01
      .376068055630D-05  .382131396327D-02  .117458403111D-04  .515366663933D+04
      .237600000000D+06 -.596046447754D-07 -.451940986528D+00  .894069671631D-07
      .950545623389D+00  .146406250000D+03  .136580094595D+00 -.788532845558D-08
     -.261439461432D-09  .100000000000D+01  .206800000000D+04  .000000000000D+00
      .200000000000D+01  .000000000000D+00  .745058059692D-08  .500000000000D+02
      .230418000000D+06  .400000000000D+01
...

test_ST12_VRS

現在、CLASで放送されているST12でのCLAS VRSを用いたRTK測位の例です。

sat@horse MINGW64 /c/Users/sat/Documents/claslib/util/rnx2rtkp
$ make test_ST12_VRS
./rnx2rtkp.exe -ti 1 -ts 2019/12/15 01:00:00 -te 2019/12/15 01:59:59 -x 3 -k kinematic_vrs.conf ..\\..\\data\\0627349AB.bnx ..\\..\\data\\sept_2019349.nav ..\\..\\data\\vrs2019349B.obs -o 0627349AB_claslib_VRS_ST12.nmea

CLASLIB ver.0.7.d

ST9でのtest_VRSと同様、このST12の例でも、VRS OBSファイルvrs2019349B.obsがないために、単独測位になっています。以下の方法で作成したvrs2019349B.obsdataフォルダに置くことにより、RTK測位ができました。

CLASLIB ver.0.7.d

rnx2rtkp単体によるCLAS測位と、ssr2obsにて作成したVRSによるRTK測位を比較しました。rtkplotのSolution-1にCLAS測位を、Solution-2にRTK測位を与えます。

CLASLIB ver.0.7.d

次にQ=1を選択してFix状態のみを比較します。上述のCLAS測位と、このssr2obsを用いたVRS-RTK測位とで、ほぼ同一の結果になりました。

CLASLIB ver.0.7.d

ssr2obsによるVRS受信機観測ファイルの作成 

NAVファイルとCLAS L6ファイルを用いると、任意地点でのVRS OBSファイルを作成することができます。ssr2obsの利用にはソースコードのコンパイルが必要です。MSYS2 MINGW64シェルにて、pacman -S gccによりCコンパイラgccをインストールし、makeによりssr2obsをコンパイルします。

sat@horse MINGW64 /c/Users/sat/Documents/claslib/util/rnx2rtkp
$ cd ../ssr2obs

sat@horse MINGW64 /c/Users/sat/Documents/claslib/util/ssr2obs
$ pacman -S gcc
...

sat@horse MINGW64 /c/Users/sat/Documents/claslib/util/ssr2obs
$ make
...
sat@horse MINGW64 /c/Users/sat/Documents/claslib/util/ssr2obs

コンパイルできたら、テストします。make test1rはST9のCLAS L6ファイルから、make test1r_ST12はST12のCLAS L6ファイルから、それぞれのOBSファイルが作成されます。

sat@horse MINGW64 /c/Users/sat/Documents/claslib/util/ssr2obs
$ make test1r
./ssr2obs.exe -k sample.conf -ts 2019/08/27 16:00:00 -te 2019/08/27 16:59:59 -ti 1 ..\\..\\data\\sept_2019239.nav ..\\..\\data\\2019239Q.l6 -r -o ..\\..\\data\\vrs2019239Q.obs
CSSR frame first recieve: tow=459950.9
L6 data: change facility, week=2323, tow=459950.87,        ---> 1(193)
start CSSR decoding: week=2323, tow=459950.9
pos est: pos=36.104 140.086
selected_grid1: inet=7, weight=0.36, pos=35.850 140.030, dist=28.69km, index=16
selected_grid2: inet=7, weight=0.32, pos=36.390 140.030, dist=32.28km, index=17
selected_grid3: inet=7, weight=0.17, pos=35.850 140.690, dist=61.20km, index=19
selected_grid4: inet=7, weight=0.16, pos=36.390 140.690, dist=62.96km, index=20

sat@horse MINGW64 /c/Users/sat/Documents/claslib/util/ssr2obs
$ make test1r_ST12
./ssr2obs.exe -k sample.conf -ts 2019/12/15 01:00:00 -te 2019/12/15 01:59:59 -ti 1 ..\\..\\data\\sept_2019349.nav ..\\..\\data\\2019349B.l6 -r -o ..\\..\\data\\vrs2019349B.obs
CSSR frame first recieve: tow=459967.4
L6 data: change facility, week=2323, tow=459967.37,        ---> 1(193)
start CSSR decoding: week=2323, tow=459967.4
pos est: pos=36.104 140.086
selected_grid1: inet=7, weight=0.36, pos=35.850 140.030, dist=28.69km, index=16
selected_grid2: inet=7, weight=0.32, pos=36.390 140.030, dist=32.28km, index=17
selected_grid3: inet=7, weight=0.17, pos=35.850 140.690, dist=61.20km, index=19
selected_grid4: inet=7, weight=0.16, pos=36.390 140.690, dist=62.96km, index=20

ここで、ssr2obsにて指定されているオプションファイルsample.confの最後を見ると、VRS座標として、北緯36.103633852777776度、東経140.086318405555573度、楕円体高69.770420000000001メートルが定義されていることがわかります。

# Positions of virtual reference station
ant1-postype       =llh         # (0:llh,1:xyz)
ant1-pos1          =36.103633852777776
ant1-pos2          =140.086318405555573
ant1-pos3          =69.770420000000001

CLASLIB ver.0.7.d

VRS座標は厳密でなくてもよく、例えば小数点以下3桁程度のものでもほぼ同一の結果が得られます。しかしながら、rnx2rtkpがあればVRSを作成しなくてもCLAS測位ができますので、ssr2obsの出番はあまりないかもしれません。

自らのデータによるCLAS測位

現状のCLASLIBは、測位のためにグリッドファイルなどの複数ファイルが必要で、これらの場所は設定ファイル内で指定されます。また、CLASLIBでは多くの設定が必要なので、-kオプションでの設定ファイル読み込みが必要です。グリッドファイルや、大洋潮汐(ちょうせき)ファイルや、受信機固有の信号遅延量テーブルや、アンテナ位相中心ファイルを全部ハードコードし、規定値も設定して、設定ファイルを与えることなく測位できるようにしたいところです。

したがって、これからCLASLIBによりCLAS測位を行うならば、NAVファイル、OBSファイル、そしてCLAS L6ファイルをutil/rnx2rtkpフォルダに集めて、このフォルダ内でrnx2rtkpを実行するのが簡単です。CLAS L6ファイルは、みちびき公式ページから日時検索してダウンロードできます

例として、MADOCALIB実験のときに利用したNovAtel(ノバテル)OEM729受信機にて2024年7月3日 00:00:00UTCからの1時間にわたり観測したデータ20240703a.gpsを解析します。この日時の補強情報を含むCLAS L6ファイル2024185A.l6もダウンロードします。

さらに、RTKLIBのconvbin.exeもこのutil/rnx2rtkpフォルダにおき、衛星電波の受信強度をOBSファイル内に記録する-osオプションをつけて実行します。CLASLIBは、電波強度の弱い衛星を除外するため(設定ファイル内のpos1-snrmask)、このオプションなしのOBSファイルからは衛星を見つけることができません

sat@horse MINGW64 /c/users/sat/Documents/apps/claslib/util/rnx2rtkp
$ ./convbin.exe -os 20240703a.gps
input file  : 20240703a.gps (NovAtel OEM7)
->rinex obs : 20240703a.obs
->rinex nav : 20240703a.nav
->sbas log  : 20240703a.sbs

scanning: 2024/07/03 01:01:37 GREJC
2024/07/03 00:01:38-07/03 01:01:37: O=3600 N=154

このように作成したNAVファイルとOBSファイルをrnx2rtkpにて解析します。

sat@horse MINGW64 /c/users/sat/Documents/apps/claslib/util/rnx2rtkp
$ ./rnx2rtkp.exe -k kinematic.conf 20240703a.nav 20240703a.obs 2024185A.l6 -o 20240703a.nmea
CSSR frame first recieve: tow=392014.5
L6 data: change facility, week=2324, tow=392014.45,        ---> 2(193)
start CSSR decoding: week=2324, tow=392014.5
pos est: pos=34.440 132.415
selected_grid1: inet=5, weight=0.61, pos=34.230 132.130, dist=35.08km, index=3
selected_grid2: inet=5, weight=-0.04, pos=34.770 132.130, dist=45.08km, index=4
selected_grid3: inet=5, weight=0.43, pos=34.770 132.790, dist=50.36km, index=5

CLASLIB ver.0.7.d

オプション-ti-ts-teを指定しなくてもCLAS測位ができました。ここで、Fix状態であるQ=1に限定してプロットします。

CLASLIB ver.0.7.d

大学屋上の静止した受信機の座標が数センチメートルのばらつき以内で測位できました。

この設定ファイルkinematic.confでは、受信機としてTrimble NetR9受信機が、アンテナとしてTrimble TRM59800.800が、それぞれ設定されているので、本当は設定ファイルの変更が必要でした。また、この解析に用いたデータは、国土地理院の電子基準点のものではないので、設定ファイルのコメントに書かれているように、BLQ(ocean tide loading)ファイルの変更も必要でした。

まとめ

CLASLIBのrnx2rtkpを用いて、CLAS測位を行いました。MADOCALIBと異なり、CLASLIBでは、アプリケーションの他にCLASグリッドファイルなど複数ファイルが必要になり、また設定ファイルも複雑です。rnx2rtkpアプリケーションは、NAVファイル、OBSファイル、CLAS L6ファイルがあれば、VRSなしにCLAS測位ができて便利です。


関連記事