CLASLIBによる高精度GPS測位
はじめに
高精度衛星測位方法として、精密単独測位(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は、アプリケーション
- ssr2osr (state space representation to observation state representation)
- ssr2obs (state space representation to observation)
- rnx2rtkp (RINEX to RTK post processing)
からなります。かつて、CLASLIBはみちびきホームページにて公開されていていました。そのとき、ダウンロード版CLASLIBの中にrnx2rtkp
は含まれず、そのバイナリーファイルまたはソースコードを入手するためには申請が必要でした。rnx2rtkp
は、RTKLIBの同名のアプリケーションを拡張したもので、AR(電波波長とコード距離との整数値あいまいさ解決、ambiguity resolution)によってssr2osrよりも精度高く座標を推定できます。私は、過去にダウンロード版CLASLIBのssr2osrとssr2obsを試しました。
このCLASLIBがオープンソースソフトウェアになり、rnx2rtkp
のソースコードとともにGitHubに公開されました。今回は、このrnx2rtkp
を中心に扱います。GitHub版のCLASLIBには、rnx2rtkp
のソースコードだけでなくバイナリーファイルもありますので、これを利用します。
この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秒間隔にて(
-ti 1
)、 - 2019年8月27日 16:00:00UTCから16:59:59UTCの範囲にて(
-ts
オプションと-te
オプション)、 - 詳細デバッグ情報ファイルも作成し(
-x 2
、traceの拡張子を持つテキストファイルが作成されます)、 - 設定ファイル
kinematic.conf
を用いて(-k kinematic.conf
)、 ..\..\data\
にあるOBSファイル0227239Q.obs
(..\\..\\data\\0227239Q.obs
)、..\..\data\
にあるNAVファイルsept_2019239.nav
(..\\..\\data\\sept_2019239.nav
)、..\..\data\
にあるCLAS L6ファイル2019239Q.l6
(..\\..\\data\\20119239Q.l6
)に対してCLAS測位を行う、および、- その結果を
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.conf
のout-solformat
をllh
(latitude, longitude, and elliptical height)に、またout-timesys
をutc
に変更すれば、座標や時刻が読みやすくなります。ここでは、NMEAフォーマットのままでrtkplot.exe
にてプロットします。rtkplot.exe
を起動したら、Edit
→Options..
(またはctrl
+p
)にて、オプション画面を表示します。ここで、統計情報を出力するためにShow Statistics
をON
に、時間経過により正しい値に収束することを仮定し原点を最終時刻座標にするためにCoordinate Origin
をEnd Pos
に、それぞれ変更し、OK
を押します。
そして、File
→Open Solution-1...
にてこの0627239Q.nmea
を選択しプロットします。
rtkplot
の表示モードをGnd Trk
(ground track)からPosition
に変更すると、座標の時間変化が表示されます。
画面下部には、座標が確定された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度であることがわかります。
地球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
でプロットしてみます。
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
test_VRS
この例はCLAS測位によるものではありません。L6ファイルを与える代わりに、RTKと同様に、NAVファイル、移動局でのOBSファイル、基準局でのOBSファイルの3つを用いて、移動局に対するRTK測位を行うものです。ここでは、CLASLIBのssr2obsにより仮想的に作り出した基準局(VRS: virtual reference station)を用います。ここで用いる設定ファイルkinematic_vrs.conf
では、測位モードpos1-posmode
がvrs-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
この結果は、VRSが用いられずに、すべて単独測位(Q=5)になっていることを表しています。これは、フォルダ../../data/
にVRS OBSファイルvrs2019239Q.obs
がないためです。以下のssr2obsにて作成したvrs2019239Q.obsをここにおいて再び実行すると、CLAS VRSによるRTK測位ができます。
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
時間経過とともに、単独測位(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
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
ST9でのtest_VRS
と同様、このST12の例でも、VRS OBSファイルvrs2019349B.obs
がないために、単独測位になっています。以下の方法で作成したvrs2019349B.obsをdata
フォルダに置くことにより、RTK測位ができました。
rnx2rtkp
単体によるCLAS測位と、ssr2obs
にて作成したVRSによるRTK測位を比較しました。rtkplot
のSolution-1にCLAS測位を、Solution-2にRTK測位を与えます。
次にQ=1を選択してFix状態のみを比較します。上述のCLAS測位と、このssr2obsを用いたVRS-RTK測位とで、ほぼ同一の結果になりました。
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
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
オプション-ti
、-ts
、-te
を指定しなくてもCLAS測位ができました。ここで、Fix状態であるQ=1に限定してプロットします。
大学屋上の静止した受信機の座標が数センチメートルのばらつき以内で測位できました。
この設定ファイルkinematic.conf
では、受信機としてTrimble NetR9受信機が、アンテナとしてTrimble TRM59800.800が、それぞれ設定されているので、本当は設定ファイルの変更が必要でした。また、この解析に用いたデータは、国土地理院の電子基準点のものではないので、設定ファイルのコメントに書かれているように、BLQ(ocean tide loading)ファイルの変更も必要でした。
まとめ
CLASLIBのrnx2rtkpを用いて、CLAS測位を行いました。MADOCALIBと異なり、CLASLIBでは、アプリケーションの他にCLASグリッドファイルなど複数ファイルが必要になり、また設定ファイルも複雑です。rnx2rtkp
アプリケーションは、NAVファイル、OBSファイル、CLAS L6ファイルがあれば、VRSなしにCLAS測位ができて便利です。
関連記事
- 準天頂衛星みちびきの測位ライブラリCLASLIBの利用(その3:ssr2obsによるVRS-RTK測位) 10th May 2020
- 準天頂衛星みちびきの測位ライブラリCLASLIBの利用(その2:ssr2osr) 8th May 2020
- 準天頂衛星みちびきの測位ライブラリCLASLIBの利用(その1:構成の理解) 7th May 2020