TouchRTKStation
概要
機能
-
基準局(Base)
- GNSS RawデータをUSBメモリに保存
- TCP Server, Ntrip Server, Ntrip Casterで観測データを配信
- ZigBeeなどの無線モジュールにも対応
-
移動局(Rover)
- GNSS Rawデータ,測位結果をUSBメモリに保存
- 単独測位,Kinematic RTK-GNSS,Static RTK-GNSSに対応
特徴
- GNSSのライブラリとして RTKLIB を使用
- TouchRTKStationは RTKLIB_Touchscreen_GUI にインスパイアされたものです.
-
RTKLIB_Touchscreen_GUI と大きく異なる点は,
- RTKLIBのAPP(rtkrcv,str2str)をそのまま呼び出して使用しているため,RTKLIBのアップデートをそのまま利用できる
- PyQTを利用したPythonで書かれた単一のプログラムのため,拡張が容易
- より小型 (5インチ (RTKLIB_Touchscreen_GUI) -> 4インチ (TouchRTKStation))
用意するもの
-
工具類
- はんだごて
- ニッパー
- ドライバー
-
- ケース: 3Dプリンタで出力 (STLデータはこちら)
- GNSS受信機: u-blox M8T CSG shopがおすすめ, mini-USBコネクタ
- mini-USBケーブル: L字ショートケーブルがおすすめ 例:Amazon
- GNSSアンテナ: Tallysman TW3710/TW3740 (GPS+GLO+BDS L1) あたりがおすすめDigi-Key(TW3710) または Digi-Key(TW3740)
- Raspberry Pi 3: RSコンポーネンツなど
- micro SDカード: Raspberry Pi用,16GB程度
- TNC(P)-SMA(J)変換コネクタ: Amazonなど
- SMA(P)-SMA(P)同軸ケーブル: ショートケーブル Amazon など
- 4inchディスプレイ: Waveshare 4inch_RPi_LCD Waveshareなど
- DC-DCコンバータモジュール: Starawberry Linux LT8697 Strawberry Linux
- micro-USBケーブル: L字ショートケーブル Amazonなど
- バッテリーホルダー: Lilliput Battery Plate for Sony Battery F-970 Amazonなど
- バッテリー: Sony NP-F550/F570(2900mAh) または NP-F750/F770(5000mAh)互換バッテリー Amazonなど
- 5/8インチナット: ポール取り付け用 MonotaROなど
- グランドプレーン: 10cm程度の金属板
- その他: 熱収縮チューブ,はんだ,など
-
ソフトウェア
- SD Card Formatter
- Win32Diskimager
- (参考) Raspbian Image: 公式
- (参考) 4inchiディスプレイドライバ: Waveshare
セットアップ
Raspbianのインストール (PC上での作業)
- RaspbianのImageをダウンロード
- SD Card FormatterなどでSDカードをフォーマット
- Win32Diskimagerなどで*.imgをmicro SDカードに書き込む
TouchRTKStationのインストール
- TouchRTKStationのインストールには,Raspberry Pi3上でRaspbianを実行できるようにしておく必要がある
- Raspbian上で作業するためにHDMIケーブルでモニターとRaspberry Pi3を接続し,下記の手順でタッチスクリーンのドライバとTouchRTKStationをインストールをする
-
HDMIケーブルを用いてRaspberry Pi3とモニターをつなぐ.4インチディスプレイも接続しておく.
-
Raspberry Pi3を起動
-
ネットワークの設定 (省略)
-
TouchRTKStationのダウンロード
$ cd /home/pi/ $ git clone https://github.com/taroz/TouchRTKStation.git
-
設定用シェルスクリプトInstall.sh実行
$ cd /home/pi/TouchRTKStation/install $ sudo sh Install.sh
-
Install.sh実行後、自動で再起動される
-
4インチディスプレイに画面が出力されるようになる.HDMI出力に戻すには
$ cd LCD-show $ ./LCD-hdmi
-
TouchRTKStationの動作確認
$ sudo python3 /home/pi/TouchRTKStation/TouchRTKStation.py
-
動作確認したらTouchRTKStationを終了する
-
(全画面表示になっているためCtrl+Alt+Dでデスクトップ表示,またはAlt+F4で終了)
-
TouchRTKStation自動起動設定用シェルスクリプトAutostart.sh実行
$ cd /home/pi/TouchRTKStation/install $ sudo sh Autostart.sh
-
自動で再起動される
-
TouchRTKStation.py自動起動
組み立て手順
- DC-DCコンバータの作成
- 説明書に従いはんだ付けを行う.説明書ではケーブル保証抵抗が実装されているが,今回用いるケーブルは十分短いため必ずしも実装する必要ない.DC-DCコンバータ,受信機などはショートしないように固定するか,熱収縮チューブなどで絶縁したほうが良い
- バッテリーマウントの改造
- 全体の組み立て
- ポール取り付け用の5/8インチナットをケースにはめ込む
- バッテリーマウントをケースに装着し,DC-DCコンバータを接続する.
- Raspberry PiにmicroSDカードを差し込む
- Raspberry Piをケースにねじ止めする.
- Tallysmanアンテナを組み立てる.
- ケーブルをつなぐ.
- LCDを取り付け,アンテナをはめ込む.
使い方
事前準備
- USBメモリをRaspberryPiのUSBポートに挿入.実行時にUSBメモリにGNSS Rawデータ(.ubx)が保存される.Roverモードの場合には,加えて測位結果(.posファイル)が保存される.USBメモリがない場合には,RaspberryPi内のhomeディレクトリに保存される.
- RoverモードでRTKをする場合またはBaseモードで補正データを配信する場合には無線LAN,またはUSBドングルなどでネットワークに接続する,またはZigBeeなどのシリアルポートとして認識されるUSB無線通信モジュールを接続する.
Rover(移動局)
- Single(単独測位),RTK(Static),RTK(Kinematic)のどれかを選択
- Configを押す.Inputタブは基本的にはDefaultのまま.Solution/Logタブで保存先を指定.デフォルトはUSBメモリ.
- RTKの場合は,Correctionタブで補正データのストリームを設定.さらに,基準局のBasePosタブで基準局の座標を入力.
- Startで移動局モード開始.測位結果が表示される(エフェメリスのデコードが必要なため30秒程度待つ必要がある).
- Stopで終了.Rawデータ,Posデータが保存されている.
Base (基準局)
- Baseタブを選択
- Configを押す.Inputタブは基本的にはDefaultのまま.Logタブで保存先を指定.デフォルトはUSBメモリ.
- 補正データを配信する場合Outputタブで補正データのストリームを設定(要ネットワーク接続).Zigbeeなどを利用する場合には,Output2タブでシリアルポートを設定する.RTCM形式で配信する場合には,BasePosタブで基準局の座標を入力.
- Startで基準局モード開始.GNSSデータの配信/保存が始まる.
- Stopで終了(数秒待つ).Rawデータが保存されている.
各種設定の変更の仕方
Config画面のデフォルト値の変更
TouchRTKStation.pyのL26~L97を直接編集してください.
# ublox command file for Base/Rover mode
ubxcmd = dirtrs+'/conf/ubx_m8t_bds_raw_1hz.cmd'
# Default Base position configuration
basepos_type = (['LLH','RTCM']) # for Rover
basepos_itype = 1 # for Rover
basepos_lat = '35.0'
basepos_lon = '139.0'
basepos_hgt = '50.0'
# Default Input stream configration
input_iport= 2 # ttyACM0
input_ibitrate = 9 # 115200 bps
input_ibytesize = 1 # 8 bit
input_iparity = 0 # None
input_istopbits = 0 # 1 bit
input_iflowcontrol = 0 # None
# Default Correction stream configration
corr_flag = False
corr_type = (['NTRIP Client','TCP Client'])
corr_itype = 0
corr_format = (['RTCM2','RTCM3','BINEX','UBX'])
corr_iformat = 1
corr_user = 'user'
corr_addr = 'test.net'
corr_port = '2101'
corr_pw = 'password'
corr_mp = 'RTCM'
# Default Correction(Serial) stream configration
corr2_flag = False
corr2_format = (['RTCM2','RTCM3','BINEX','UBX'])
corr2_iformat = 3
corr2_iport= 4 # ttyUSB0
corr2_ibitrate = 9 # 115200 bps
corr2_ibytesize = 1 # 8 bit
corr2_iparity = 0 # None
corr2_istopbits = 0 # 1 bit
corr2_iflowcontrol = 0 # None
# Default Log/Solution stream configration
log_flag = True
sol_flag = True
dir = glob.glob('/media/*/*/') # Find USB memory
if len(dir)==0:
dir = [dirtrs+'/']
sol_filename = dir[0]+'%Y-%m%d-%h%M%S.pos'
log_filename = dir[0]+'%Y-%m%d-%h%M%S.ubx'
# Default Output stream configration
output_flag = False
output_type=(['TCP Server','NTRIP Server','NTRIP Caster'])
output_itype = 0 # TCP Server
output_format = (['UBX','RTCM3'])
output_iformat = 0 # UBX
output_user = 'user'
output_addr = 'test.net'
output_port = '2101'
output_pw = 'password'
output_mp = 'TRS'
# Default Output(Serial) stream configration
output2_flag = False
output2_format = (['UBX','RTCM3'])
output2_iformat = 0 # UBX
output2_iport= 4 # ttyUSB0
output2_ibitrate = 9 # 115200 bps
output2_ibytesize = 1 # 8 bit
output2_iparity = 0 # None
output2_istopbits = 0 # 1 bit
output2_iflowcontrol = 0 # None
Roverの測位に関するパラメータの変更
RTKLIBの.confファイルを直接編集して下さい.
confファイルは下記のディレクトリに入っています.
$ cd /home/pi/TouchRTKStation/conf/
- 単独測位:
/home/pi/TouchRTKStation/conf/single.conf
- RTK測位(Kinematic):
/home/pi/TouchRTKStation/conf/kinematic.conf
- RTK測位(Static):
/home/pi/TouchRTKStation/conf/static.conf