Help us understand the problem. What is going on with this article?

簡単に作れる一周波RTK-GNSSの基準局+移動局

More than 1 year has passed since last update.

TouchRTKStation

  • TouchRTKStaionのGithubリポジトリはこちら
  • トランジスタ技術(2019年2月号)の記事はこちら

概要

  • 一周波GNSSアンテナ・受信機 + RTKLIB + RaspberryPi + タッチスクリーン + ケース + GUI

機能

  • 基準局(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データはこちら)
      • 次のshopに出品しているので,下記から直接購入することもできます
    • 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程度の金属板
    • その他: 熱収縮チューブ,はんだ,など
  • ソフトウェア

セットアップ

Raspbianのインストール (PC上での作業)

  1. RaspbianのImageをダウンロード
  2. SD Card FormatterなどでSDカードをフォーマット
  3. Win32Diskimagerなどで*.imgをmicro SDカードに書き込む

TouchRTKStationのインストール

  • TouchRTKStationのインストールには,Raspberry Pi3上でRaspbianを実行できるようにしておく必要がある
  • Raspbian上で作業するためにHDMIケーブルでモニターとRaspberry Pi3を接続し,下記の手順でタッチスクリーンのドライバとTouchRTKStationをインストールをする
  1. HDMIケーブルを用いてRaspberry Pi3とモニターをつなぐ.4インチディスプレイも接続しておく.
  2. Raspberry Pi3を起動
  3. ネットワークの設定 (省略)
  4. TouchRTKStationのダウンロード

    $ cd /home/pi/
    $ git clone https://github.com/taroz/TouchRTKStation.git
    
  5. 設定用シェルスクリプトInstall.sh実行

    $ cd /home/pi/TouchRTKStation/install
    $ sudo sh Install.sh
    
  6. Install.sh実行後、自動で再起動される

  7. 4インチディスプレイに画面が出力されるようになる.HDMI出力に戻すには

    $ cd LCD-show
    $ ./LCD-hdmi
    
  8. TouchRTKStationの動作確認

    $ sudo python3 /home/pi/TouchRTKStation/TouchRTKStation.py
    
  9. 動作確認したらTouchRTKStationを終了する

  10. (全画面表示になっているためCtrl+Alt+Dでデスクトップ表示,またはAlt+F4で終了)

  11. TouchRTKStation自動起動設定用シェルスクリプトAutostart.sh実行

    $ cd /home/pi/TouchRTKStation/install
    $ sudo sh Autostart.sh
    
  12. 自動で再起動される

  13. TouchRTKStation.py自動起動

組み立て手順

  1. DC-DCコンバータの作成
  2. 説明書に従いはんだ付けを行う.説明書ではケーブル保証抵抗が実装されているが,今回用いるケーブルは十分短いため必ずしも実装する必要ない.DC-DCコンバータ,受信機などはショートしないように固定するか,熱収縮チューブなどで絶縁したほうが良い
  3. バッテリーマウントの改造

    • 四方のねじを外しカバーを開ける.
    • ケーブルを切断,基盤を外して電源ケーブルをはんだ付けする.
    • カバーを戻す.
  4. 全体の組み立て

    • ポール取り付け用の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(移動局)

  1. Single(単独測位),RTK(Static),RTK(Kinematic)のどれかを選択
  2. Configを押す.Inputタブは基本的にはDefaultのまま.Solution/Logタブで保存先を指定.デフォルトはUSBメモリ.
  3. RTKの場合は,Correctionタブで補正データのストリームを設定.さらに,基準局のBasePosタブで基準局の座標を入力.
  4. Startで移動局モード開始.測位結果が表示される(エフェメリスのデコードが必要なため30秒程度待つ必要がある).
  5. Stopで終了.Rawデータ,Posデータが保存されている.

Base (基準局)

  1. Baseタブを選択
  2. Configを押す.Inputタブは基本的にはDefaultのまま.Logタブで保存先を指定.デフォルトはUSBメモリ.
  3. 補正データを配信する場合Outputタブで補正データのストリームを設定(要ネットワーク接続).Zigbeeなどを利用する場合には,Output2タブでシリアルポートを設定する.RTCM形式で配信する場合には,BasePosタブで基準局の座標を入力.
  4. Startで基準局モード開始.GNSSデータの配信/保存が始まる.
  5. 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
taroz
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした