RTK_TOOL 3 で RTKLIB
Raspbian と Windows で RTKLIBRTK_TOOL 3 は …
CQ出版社のトランジスタ技術2019年2月号別冊付録で解説されている手順を、できるだけコマンド操作をすることなく実行できるプログラムを目指し開発したものです。Python3.7上で動作します。
STR2STR（基準局）と RTKRCV（移動局）はRaspbian
上で動作します。Windowsでもファイルの作成まではできますが、実際の接続はできません。
Windowsでは、RTKLIB の strsvr.exe（基準局）とrtknavi.exe（移動局）をご利用ください。
その他のツールはWindowsでも動作します。

【Raspbian Buster】
・Python3.7
インストールされています。
・PyQt5インストールされています。
【Windows】
Windowsでは、「平均計算」「SemiDynaEXE」「Logger」「Setting」 が使用できます。
・Python3.7をインストールしてください。
https://www.python.org/downloads/windows/
・PyQt5
コマンドプロンプトで 「C:¥Python37¥python.exe -m pip install pyqt5」とタイプしてください。※「Logger」 機能を使用する場合、以下のライブラリをインストールする必要があります。
【Raspbian Buster】
・pyserial
インストールされています。
・pyproj
LXTerminalで 「 sudo apt-get install python3-pyproj 」 とタイプしてください。
【Windows】
・pyserial
コマンドプロンプトで 「C:¥Python37¥python.exe -m pip install pyserial」とタイプしてください。※
・pyproj
コマンドプロンプトで 「C:¥Python37¥python.exe -m pip install pyproj」とタイプしてください。※※ Python3.7 が C:¥Python37 にインストールされている場合

ダウンロード
https://www.n-survey.com/cgi/down/download.cgi?dl=RTK_TOOL_3【Raspbian Buster】
ダウンロードした zip ファイルを解凍してできた「RTK_TOOL3」フォルダを「/home/pi/」の下にコピーします。
【Windows】
ダウンロードした zip ファイルを解凍してできた「RTK_TOOL3」フォルダを適宜の場所に置きます。

RaspbianWindows初回起動【Raspbian Buster】
LXTerminalを起動して「python3 /home/pi/RTK_TOOL3/RTK_TOOL3.py」とタイプして「Enter」【Windows】
コマンドプロンプトを起動して「C:¥Python37¥python.exe D:¥RTK_TOOL3¥RTK_TOOL3.py」とタイプして「Enter」※※ パスはインストールした環境に合わせて修正してください。

Windows
Raspbian「RTK_TOOL 3」が起動します。
「Setting」タブを開いて「起動用ファイル作成」をクリックします。
デスクトップに「RTK_TOOL3.sh」というファイルが作成されます。
次回からは、このアイコンをダブルクリックして起動します。
下のウィンドウが表示されますので「実行」をクリックします。

「RTK_TOOL 3」が起動します。
「Setting」タブを開いて「起動用VBScript作成」をクリックします。
RTK_TOOL3のフォルダの「run.bat」と「RTK_TOOL3.vbs」いうファイルが環境に合わせて書き替えられます。
次回からは、この「RTK_TOOL3.vbs」をダブルクリックして起動します。

・RTKLIB のインストール ※1・COMポート番号（先頭の番号）の確認 ※1
・RTK_TOOL 3 起動用ファイルの作成 ※1
・RTK_TOOL 3 起動用VBScriptの作成 ※2※1 Raspbian でのみ動作※2 Windows でのみ動作「RTKLIB のインストール」を実行する前に、上のテキストボックスに zip ファイルの URL を設定してください。
v.2.3.4 b33 と v.2.3.4 b34 に対応しています。

RTKLIBのインストール「Setting」タブの「RTKLIB v.2.4.3 b33 のインストール」をクリックすると 、RTKLIB_2.4.3_b33.zip をダウンロード・解凍後、RTK_TOOL3 に同梱の 「rtklib_install.sh」 を実行します。
（ 「RTKLIBのインストール」 をクリックすることにより 「rtklib_install.sh」 に実行権限が与えられます。）
rtklib_install.sh の内容-----------------------------------------------------------------------------------------------------------------------------------------------------cd /home/pi/RTKLIB/app
make ※2
chmod 755 /home/pi/RTKLIB/app/rtkrcv/gcc/rtkstart.sh ※3
chmod 755 /home/pi/RTKLIB/app/rtkrcv/gcc/rtkshut.sh ※3
cp /home/pi/RTKLIB/app/rtkrcv/conf/rtk.conf /home/pi/RTKLIB/app/rtkrcv/rtk.conf ※4
cp /home/pi/RTKLIB/app/rtkrcv/conf/rtk.conf /home/pi/RTKLIB/app/rtkrcv/rtk_conf.org ※4-----------------------------------------------------------------------------------------------------------------------------------------------------※1 コンパイルします。
※2 接続・切断用ファイル「rtkstart.sh」「rtkshut.sh」に実行権限を与えます。
※3 移動局用設定ファイル「rtk.conf」のバックアップファイルを作成します。

「RTKLIB v.2.4.3 b33 のインストール」をクリック※しても、正常にインストールできない場合
１．Zip ファイルがダウンロードされない場合は、別途ダウンロード・解凍してフォルダ名をRTKLIB に変更の上、/home/pi/の下にコピーします。
２．ファイルマネージャで「RTK_TOOL3」フォルダを開いて「rtklib_install.sh」をダブルクリックします。
３．「端末で実行する」をクリックします。
ダウンロードとコンパイルが始まります。（コンパイルには時間がかかります。）※ クリックすることにより「rtklib_install.sh」が作成されますので、一度は必ずこの作業が必要です。

RTKLIBのインストール
https://github.com/tomojitakasu/RTKLIB/releases からダウンロードしたファイルを解凍して、適宜の場所に置いてください。

NTRIPに基準局データを送信します。
Input は Serial、Output は NTRIP または TCP
Server 専用です。
※ Windowsでは動作しません。
（strsvr.exeをご利用ください。）

①

③

④⑤

②
⑥

① Serial の通信条件を設定します。（必須）
通常は「Port」と「Baudrate」以外、デフォルトの設定で良いと思います。
② 基準局の座標を設定します。（任意）③ NTRIPの場合、Host※,Port※,Mountpoint※,UserID,Password※ を設定します。
TCP Server の場合、Port※, Mountpoint※ を設定します。（※必須）
TXP Server の Mountpoint は、設定を保存するファイル名として使用します。）④ cmdfile を選択します。（任意）⑤ 基準局情報を入力します。（任意）⑥ ubx（u-blox RAWデータ）から RTCM3 に変換して送信します。（任意）「登録」で、複数の基準局の接続設定を記憶することができます。
「接続」で、①～⑥の情報から、接続用のファイル「/home/pi/RTKLIB/app/str2str/gcc/str2str.sh」を編集して、接続を開始します。
切断するときは LXTerminal で 「Ctrl + C」 を押します。

② 基準局の座標について設定すると、rtknaviの移動局側の設定で基準局の座標値の入力が不要になります。
④ cmdfile について設定すると、 Rate の変更や、使用する衛星の ON・OFF を切り替えることができます。
cmdfile は、/home/pi/RTKLIB/data/ の中にあります。
⑤ 基準局情報について設定すると、http://www.rtk2go.com:2101/ で表示されます。
⑥ ubx→rtcm3 変換について
u-center で F9P の 設定をする場合、RTCM3 の設定では QZSS が利用できません。
このため、u-center での設定は u-blox にしておいて、str2str で RTCM3 に変換すると、QZSS も利用できるようになります。

str2str.sh の例--------------------------------------------------------------------------------------------------------------------------------------------------------------cd /home/pi/RTKLIB/app/str2str/gcc./str2str -in serial://ttyACM0:230400:8:n:1:off#ubx -out ntrips://:パスワード@rtk2go.com:2101/nsurvey:"Hokkaido;RTCM3.3;;;GPS+GLO+GAL+BDS+QZS;SNIP;JPN;0.00;0.00;1;0;sNTRIP;none;N;N;0;;"#rtcm3 -msg
"1005(10),1019(1),1020(2),1042(2),1044(2),1046(1),1077(1),1087(1),1097(1),1117(1),1127(1),1230(1)" -p42.916300922 143.038515592 106.9865---------------------------------------------------------------------------------------------------------------------------------------------------------------str2str のコマンドオプション-----------------------------------------------------------------------------" -in stream[#format] input stream path and format"," -out stream[#format] output stream path and format",""," stream path","
serial: serial://port[:brate[:bsize[:parity[:stopb[:fctr]]]]]","
tcp server : tcpsvr://:port","
tcp client : tcpcli://addr[:port]","ntrip client : ntrip://[user[:passwd]@]addr[:port][/mntpnt]","
ntrip server : ntrips://[:passwd@]addr[:port]/mntpnt[:str] (only out)","
ntrip caster server: ntripc_s://[:passwd@][:port] (only in)","ntrip caster client: ntripc_c://[user:passwd@][:port]/mntpnt (only out)","file: [file://]path[::T][::+start][::xseppd][::S=swap]",-----------------------------------------------------------------------------" format","
rtcm2: RTCM 2 (only in)","
rtcm3: RTCM 3","nov: NovAtel OEMV/4/6,OEMStar (only in)","
oem3: NovAtel OEM3 (only in)","ubx: ublox LEA-4T/5T/6T (only in)","ss2: NovAtel Superstar II (only in)","hemis: Hemisphere Eclipse/Crescent (only in)","stq: SkyTraq S1315F (only in)","gw10: Furuno GW10 (only in)","javad: Javad (only in)","nvs: NVS BINR (only in)","binex: BINEX (only in)","
rt17: Trimble RT17 (only in)","sbf: Septentrio SBF (only in)","cmr: CMR/CMR+ (only in)","tersus: TERSUS (only in)",-----------------------------------------------------------------------------------------------------------------------------------------------------------" -msg ¥"type[(tint)][,type[(tint)]...]¥"","
rtcm message types and output intervals (s)"," -sta sta
station id",
" -opt opt
receiver dependent options"," -s msec
timeout time (ms) [10000]"," -r msec
reconnect interval (ms) [10000]"," -n msec
nmea request cycle (m) [0]"," -f sec
file swap margin (s) [30]"," -c file
input commands file [no]"," -c1 file
output 1 commands file [no]"," -c2 file
output 2 commands file [no]"," -c3 file
output 3 commands file [no]"," -c4 file
output 4 commands file [no]"," -p lat lon hgt station position (latitude/longitude/height) (deg,m)"," -px x y z
station position (x/y/z-ecef) (m)"," -a antinfo
antenna info (separated by ,)",
" -i rcvinfo
receiver info (separated by ,)",
" -o e n uantenna offset (e,n,u) (m)"," -l local_dir
ftp/http local directory []"," -x proxy_addr
http/ntrip proxy address [no]"," -b str_no
relay back messages from output str to input str [no]"," -t leveltrace level [0]"," -ft filentrip souce table file []",
" -fl filelog file [str2str.trace]"," -hprint help",------------------------------------------------------------------------------

設定ファイル rtk.conf を編集して、計測を開始します。
編集できるのは、基本的にトラ技の解説にある項目のみです。
※ Windowsでは動作しません。
（rtknavi.exeをご利用ください。）

設定項目の詳細は、トラ技別冊付録を参照

「登録」 で、複数の移動局の接続設定を記憶することができます。
「接続」 で、接続用の設定ファイ「/home/pi/RTKLIB/app/rtkrcv/rtk.conf」 を書き替えて 接続を開始します。
LXTerminal が起動しますので 「start」 とタイプしてEnter を押します。
Outstr1(2)-path で指定したフォルダに log が作成されます。受信内容を表示させる場合は 「status 1」 とタイプして Enter を押します。
切断するときは 「Ctrl + C」 を押してから 「stop」 とタイプして Enter、続けて 「shutdown」 とタイプして Enter を押します。

「転記」 をクリックすると 「STR2STR（基準局）」から、inpstr1-path と inpstr2-path に転記します。

rtk.conf の内容# RTKNAVI options (2016/09/19 07:28:53, v.2.4.3 b24)
console-passwd =admin
console-timetype =gpst# (0:gpst,1:utc,2:jst,3:tow)
console-soltype =dms
# (0:dms,1:deg,2:xyz,3:enu,4:pyl)
console-solflag =1# (0:off,1:std+2:age/ratio/ns)
pos1-posmode=kinematic # (0:single,1:dgps,2:kinematic,3:static,4:movingbase,5:fixed,6:ppp-kine,7:ppp-static,8:ppp-fixed)
pos1-frequency =l1# (1:l1,2:l1+l2,3:l1+l2+l5,4:l1+l5)
pos1-soltype=forward # (0:forward,1:backward,2:combined)
pos1-elmask=20# (deg)pos1-snrmask_r =off
# (0:off,1:on)pos1-snrmask_b =off
# (0:off,1:on)pos1-snrmask_L1 =0,0,0,0,0,0,0,0,0
pos1-snrmask_L2 =0,0,0,0,0,0,0,0,0
pos1-snrmask_L5 =0,0,0,0,0,0,0,0,0
pos1-dynamics=off# (0:off,1:on)pos1-tidecorr=off# (0:off,1:on,2:otl)
pos1-ionoopt=brdc# (0:off,1:brdc,2:sbas,3:dual-freq,4:est-stec,5:ionex-tec,6:qzs-brdc,7:qzs-lex,8:stec)
pos1-tropopt=saas# (0:off,1:saas,2:sbas,3:est-ztd,4:est-ztdgrad,5:ztd)pos1-sateph=brdc# (0:brdc,1:precise,2:brdc+sbas,3:brdc+ssrapc,4:brdc+ssrcom)
pos1-posopt1=on# (0:off,1:on)pos1-posopt2=on# (0:off,1:on)pos1-posopt3=on# (0:off,1:on,2:precise)pos1-posopt4=on# (0:off,1:on)pos1-posopt5=on# (0:off,1:on)pos1-posopt6=off# (0:off,1:on)pos1-exclsats=C02# (prn ...)
pos1-navsys=61# (1:gps+2:sbas+4:glo+8:gal+16:qzs+32:comp)pos2-armode=fix-and-hold # (0:off,1:continuous,2:instantaneous,3:fix-and-hold)pos2-gloarmode =off
# (0:off,1:on,2:autocal)
pos2-bdsarmode =on# (0:off,1:on)pos2-arthres=3
pos2-arthres1=0.9999
pos2-arthres2=0.25
pos2-arthres3=0.1
pos2-arthres4=0.05
pos2-arlockcnt =30
pos2-arelmask=0# (deg)pos2-arminfix=30
pos2-armaxiter =1
pos2-elmaskhold =0# (deg)pos2-aroutcnt=30
pos2-maxage
=30
# (s)
pos2-syncsol=off# (0:off,1:on)pos2-slipthres =0.05# (m)pos2-rejionno
=30
# (m)
pos2-rejgdop=30
pos2-niter=1
pos2-baselen=0# (m)pos2-basesig=0# (m)out-solformat=llh# (0:llh,1:xyz,2:enu,3:nmea)
out-outhead=off# (0:off,1:on)out-outopt=off# (0:off,1:on)out-timesys=jst# (0:gpst,1:utc,2:jst)
out-timeform=hms# (0:tow,1:hms)
out-timendec=3
out-degform=dms# (0:deg,1:dms)
out-fieldsep=
out-outsingle =off
# (0:off,1:on)out-maxsolstd=0# (m)out-height=geodetic # (0:ellipsoidal,1:geodetic)out-geoid=internal # (0:internal,1:egm96,2:egm08_2.5,3:egm08_1,4:gsi2000)
out-solstatic=all# (0:all,1:single)
out-nmeaintv1 =0# (s)out-nmeaintv2 =0# (s)out-outstat=off# (0:off,1:state,2:residual)stats-eratio1=100
stats-eratio2=100
stats-errphase =0.01# (m)stats-errphaseel =0.01# (m)stats-errphasebl =0# (m/10km)
stats-errdoppler =1# (Hz)
stats-stdbias
=30
# (m)
stats-stdiono
=0.03
# (m)
stats-stdtrop
=0.3
# (m)
stats-prnaccelh =10# (m/s^2)
stats-prnaccelv =10# (m/s^2)

stats-prnbias=0.0001 # (m)stats-prniono=0.001# (m)stats-prntrop=0.0001 # (m)stats-prnpos=0# (m)stats-clkstab=5e-12# (s/s)ant1-postype=llh# (0:llh,1:xyz,2:single,3:posfile,4:rinexhead,5:rtcm,6:raw)
ant1-pos1=90# (deg|m)
ant1-pos2=0# (deg|m)
ant1-pos3=-6335367.6285 # (m|m)
ant1-anttype=
ant1-antdele=0# (m)ant1-antdeln=0# (m)ant1-antdelu=0# (m)ant2-postype=rtcm# (0:llh,1:xyz,2:single,3:posfile,4:rinexhead,5:rtcm,6:raw)
ant2-pos1=0# (deg|m)
ant2-pos2=0# (deg|m)
ant2-pos3=0# (m|m)ant2-anttype=
ant2-antdele=0# (m)ant2-antdeln=0# (m)ant2-antdelu=0# (m)ant2-maxaveep =3600
ant2-initrst=on# (0:off,1:on)
misc-timeinterp =off
# (0:off,1:on)
misc-sbasatsel =0# (0:all)misc-rnxopt1=
misc-rnxopt2=
misc-pppopt=
file-satantfile =file-rcvantfile =file-staposfile =file-geoidfile =file-ionofile =file-dcbfile=
file-eopfile=
file-blqfile=
file-tempdir=
file-geexefile =file-solstatfile =file-tracefile =#

inpstr1-type=tcpcli # (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,7:ntripcli,8:ftp,9:http)inpstr2-type=tcpcli # (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,7:ntripcli,8:ftp,9:http)inpstr3-type=off# (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,7:ntripcli,8:ftp,9:http)inpstr1-path=:10008
inpstr2-path=:10009
inpstr3-path=
inpstr1-format =ubx
# (0:rtcm2,1:rtcm3,2:oem4,3:oem3,4:ubx,5:ss2,6:hemis,7:skytraq,8:gw10,9:javad,10:nvs,11:binex,12:rt17,13:sbf,14:cmr,17:sp3)
inpstr2-format =rtcm3# (0:rtcm2,1:rtcm3,2:oem4,3:oem3,4:ubx,5:ss2,6:hemis,7:skytraq,8:gw10,9:javad,10:nvs,11:binex,12:rt17,13:sbf,14:cmr,17:sp3)
inpstr3-format =rtcm3# (0:rtcm2,1:rtcm3,2:oem4,3:oem3,4:ubx,5:ss2,6:hemis,7:skytraq,8:gw10,9:javad,10:nvs,11:binex,12:rt17,13:sbf,14:cmr,17:sp3)
inpstr2-nmeareq =off
# (0:off,1:latlon,2:single)
inpstr2-nmealat =0# (deg)inpstr2-nmealon =0# (deg)outstr1-type=off# (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,6:ntripsvr)
outstr2-type=off# (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,6:ntripsvr)
outstr1-path=
outstr2-path=
outstr1-format =llh
# (0:llh,1:xyz,2:enu,3:nmea)
outstr2-format =llh
# (0:llh,1:xyz,2:enu,3:nmea)
logstr1-type=off# (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,6:ntripsvr)
logstr2-type=off# (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,6:ntripsvr)
logstr3-type=off# (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,6:ntripsvr)
logstr1-path=
logstr2-path=
logstr3-path=
misc-svrcycle=10# (ms)
misc-timeout=10000# (ms)
misc-reconnect =10000# (ms)
misc-nmeacycle =5000# (ms)
misc-buffsize=32768# (bytes)
misc-navmsgsel =all
# (0:all,1:rover,2:base,3:corr)
misc-proxyaddr =misc-fswapmargin =30# (s)file-cmdfile1 =file-cmdfile2 =黄色の行は、「RTK_TOOL 3」で書き替え可能な項目
赤色の行は、「out-height= ellipsoidal # (0:ellipsoidal,1:geodetic)」に変更して固定
緑色の行は、 「RTK_TOOL 3」の追加項目

RTKPOST で後処理基線解析したデータを読み込んで平均計算したり、RTKRCV で出力した log ファイルを読み込んで平均計算をします。（この場合、FILEにチェックしてください。）
Fix したものだけ、全て、指定した Ratio 以上のデータで、フィルタにかけることができます。
計算結果を 「SemiDynaEXE」 に送ったり、フィルタにかけて抽出したデータを、KML や SIMA に変換して保存することができます。
XY→BL 、BL→XYを選択すると、単点で平面直角座標⇔緯度・経度の変換をすることができます。

RTKPOSTで後処理基線解析する際に与点の電子基準点成果を元期から今期に変換したり、 RTKPOSTで処理後平均計算した結果を今期から元期に戻したりします。
計算には国土地理院の測量計算API を使用しています。

GNSS モジュールを接続して単独測位したり、 rtknavi（Windows）や rtkrcv（Raspbian）から出力されたデータを受信して、平面直角座標に変換します。また、指定のエポック数で平均をとることができます。
測点探索では、現在地から設定の座標値までの方向角と距離を表示することができます。
TCP_FIX、TCP_ALL、TCP_RATIO はTCP通信に
より rtknavi、rtkrcv と連携します。（次頁参照）
Sentence の RTKNAVI_FIX、RTKNAVI_ALL、
RTKNAVI_RATIOは、シリアル通信により rtknaviと連携します。com0com のような仮想COMポート
ドライバを使用することでケーブルなしで接続することができます。

rtkrcv （Raspbian） との連携
１．「RTKRCV（移動局）」タブを開き、outstr1-type または outstr2-type で「tcpcli」を選択します。
（outstr1-path または outstr2-path に「:@localhost:52001/:」がセットされます。）
２．-m Option にチェックが入ります。（Port は「52001」固定）
３．「接続」をクリックします。
４．LXTerminal で「start」とタイプして「Enter」を押します。
５．もう一つ「RTK_TOOL3」を起動して「Logger」タブを開きます。
６．Sentence で TCP_FIX、TCP-ALL、TCP_RATIO のいずれかを選択し「接続」をクリックします。

rtknavi （Windows） との連携
rtknavi の Output Streams で 「TCP Client」 を選択し、「Option」 を開いて、「Server Address」 に 「localhost」、「Port」 に 「52001」 を入力します。

RTKLIB のコンパイル
cd /home/pi/RTKLIB/app
makechmod 755 /home/pi/RTKLIB/app/rtkrcv/gcc/rtkstart.shchmod 755 /home/pi/RTKLIB/app/rtkrcv/gcc/rtkshut.sh
cp /home/pi/RTKLIB/app/rtkrcv/conf/rtk.conf /home/pi/RTKLIB/app/rtkrcv/rtk.conf
cp /home/pi/RTKLIB/app/rtkrcv/conf/rtk.conf /home/pi/RTKLIB/app/rtkrcv/rtk_conf.org
STR2STR（基準局）
接続
cd /home/pi/RTKLIB/app/str2str/gcc./str2str -in serial://ttyACM0:230400:8:n:1:off#ubx -out ntrips://:ﾊﾟｽﾜｰﾄﾞ@rtk2go.com:2101/ﾏｳﾝﾄﾎﾟｲﾝﾄ名#rtcm3 -msg "1005(10),1019(1),1020(2),1042(2),1044(2),1046(1),1077(1),1087(1),1097(1),1117(1),1127(1),1230(1)" -p 42.916300922 143.038515592 106.9865
切断
Ctrl + C
RTKRCV（移動局）
接続
cd /home/pi/RTKLIB/app/rtkrcv/gcc./rtkrcv -o /home/pi/RTKLIB/app/rtkrcv/rtk.conf （デフォルトでは ./rtkrcv -o /home/pi/RTKLIB/app/rtkrcv/conf/rtk.conf）
start -> Enterstatus 1 -> Enter
切断
Ctrl + C
stop -> Enter
shutdown -> Enter

実は…
RTK_TOOL 3 を使わなくてもこれらのコマンドをLXTerminal に打ち込んで実行するだけで良いのです。