1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Mosaic-HAT】Raspberry Pi+RTKLIBでRTK基準局を作ってみよう

Last updated at Posted at 2021-07-24

これまで、パソコンでMosaic-HATを動かしてきましたが、いよいよラズパイに搭載です。
Mosaic-HATをRTK基準局モードにし、RTKLIBのstr2str経由でRTK2goに配信します。
先行事例がなく、試行錯誤です。
※移動局の作成はこちらhttps://qiita.com/KIT-tokunaga/items/f9a7249bdba8b1aceb3b

#1.工作

まず、Mosaic-HATの工作です。
図面を入手しましょう。GitHubにmosaicHAT_schematic.pdfがあります。
https://github.com/septentrio-gnss/mosaicHAT
ラズパイとの接続は、

  • 5V給電x2
  • リセット
  • LEDx2
  • シリアル(RX/TX)
    の7本と、8本のGND。
    ボード付属の40pinコネクターを全ピンハンダ付けで問題ありません。
ラズパイに載せた図 コネクタだけだと片持ちになるので、反対側はスペーサでラズパイ基板と固定しますが、ケースによっては干渉します。そもそもMosaic-HATはラズパイボードと同じ幅で、これを収める小型ケースはなかなか見つかりません。 とにかくこれでラズパイの電源を入れると、Mosaic-HATのLEDが光り、準備OKです。

#2.リセット

ラズパイのGPIO5をLowにすることで、Mosaic-HATをリセットできます。
Pythonで書くとこんな感じ。

mosaicReset.py
import RPi.GPIO as GPIO
#Module Reset
print("Module Reset")
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

GPIO.setup( 5, GPIO.OUT, initial=GPIO.LOW)
sleep(1)
GPIO.output( 5, GPIO.HIGH)
GPIO.setup( 5, GPIO.IN)
sleep(10)

#3.COMの設定

Mosaic-HATのコマンドインタフェース仕様が必要になります。
SeptentrioのプロダクツサイトからD/Lできます。
https://www.septentrio.com/en/supportresources/mosaic/mosaic-x5
メルアド入力すると入れますので、mosaic-X5 Firmware v4.10.0 Reference Guideを入手します。
ラズパイと通信するシリアルは、Mosaic-HATとしてはCOM1に割り当てられ、初期設定は115200baud, 8bit-data, no-parity, 1-stop bit, no flow-controlです。設定はsetCOMSettingコマンドで変えられますが、まずは初期設定にラズパイ側を合わせます。

mosaicCOMset.py
import serial
#COM Initialize
print("COM Initialize")
ser = serial.Serial('/dev/ttyS0', 115200)
sleep(1)        # wait for connection

なお、ラズパイの拡張コネクタのシリアルポートは、通常Disableですので、これをEnableにする必要があります。GitHubに書いてありますが、抜粋すると、

  • sudo raspi-config でConfigメニューに入る
  • Select Interfacing OptionsSerial を選択
  • Would you like a login shell to be accessible over serial? はNo
  • Would you like the serial port hardware to be enabled? はYes

設定を更新するとリブートします。以後、シリアルポートは有効のままとなります。

#4.RTK基準局の設定

Mosaic-HATは、Sの連打でコマンドモードに入るそうです。Pythonで書くと、
ser.write(b'SSSSSSSSSSSSS\n')
という書き方になります。
以下、ser.write(b'<シリアルコマンド>\n')の書き方でRTK基準局に必要な設定をラズパイから送信していきます。ありがたいことに、Reference Guideの1.5.1に、RTK基準局に必要なコマンド設定が、解説つきで書いてあります。このコマンドを入れていけば、RTK基準局として必要な情報がCOM1から得られるというわけです。
ただし一点注意。ser.writeでコマンドを書き連ねても受け入れてくれません。1コマンドごとにser.readlineでコマンドのリターンを受けてから次のコマンドを投げるようにします。以下、アンテナ位置を現在地に合わせ、RTCMv3フォーマットでほしいメッセージ内容に変えたコマンド一式の設定スクリプトです。最後にシリアルの転送速度を19200に落としています。これは次のRTKLIBのためです。

mosaicRTKBASEset.py
from time import sleep
#Module Initialize
def PutCmd(command) :
        ser.write(command)
        while 1 :
                msg = ser.readline().decode()
                if '$R' in msg :
                        print(msg)
                        break

print("Module Initialize")
ser.write(b'SSSSSSSSSSSSS\n')   # push MOSAIC to run in command mode
sleep(1)
PutCmd(b'setStaticPosGeodetic, Geodetic1, 36.317118439, 136.376642485, 59.5925\n')
PutCmd(b'setPVTMode, Static, , auto\n')
PutCmd(b'setRTCMv3Interval, RTCM1005|6, 10\n')
PutCmd(b'setRTCMv3Interval, RTCM1033, 10\n')
PutCmd(b'setRTCMv3Formatting, 496\n')
PutCmd(b'setRTCMv3Output, COM1, RTCM1006+RTCM1033+RTCM1074\n')
PutCmd(b'setDataInOut, COM1, , RTCMv3\n')

ser.write(b'setCOMSettings, COM1, baud19200\n')
sleep(1)

print("Finish")
ser.close()

説明のために分割しましたが、ここまでのスクリプトを全て繋げて1ファイルにしておけばワンタッチでMosaic-HATの設定は完了です。

#5.RTKLIBを使ったRTK2go配信の設定

PCでは、RxToolやWebアプリでインタラクティブな設定が出来ましたが、ラズパイにはそういったアプリが用意されていません。なので、オープンソースであるRTKLIBを使います。
ラズパイへのRTKLIBインストールについては、他の人の情報を参考にしてください。

今回は、RTKLIBの中のstr2strというコマンドライン版ストリームサーバを使います。Mosaic-HATから受けた基準局データを、Ntripサーバに配信する機能です。Ntripサーバには、RTK2gohttp://www.rtk2go.com/を使います。
str2strは、RTKLIB/app/str2str/gccにあります。実行オプションは、str2str -hで見ることが出来ます。最低限のオプションとして、以下4つを指定します。

-in : シリアルポートの設定と読み込みフォーマットの指定
-out: Ntripサーバの設定と配信フォーマットの指定
-msg: 配信するメッセージタイプの指定
-p : アンテナ位置

シェルスクリプトの例を示します。PASSWD, MOUNTPTには、RTK2goにマウントポイントを登録した際のパスワードとマウントポイント名を、DESCRIPTIONは、http://www.rtk2go.com:2101/を真似て説明を、LAT/LONG/HEIGHTは、Mosaic-HATのアンテナ位置(deg, m単位)を、それぞれ入れてください。

base.sh
! /bin/sh
cd /home/pi/myRTKLIB/RTKLIB/app/str2str/gcc
./str2str -in serial://ttyS0:19200:8:n:1:off#rtcm3 \
          -out ntrips://:PASSWD@rtk2go.com:2101/MOUNTPT:"DESCRIPTION"#rtcm3 \
          -msg "1006(10),1033(10),1074(1)" \
          -p LAT LONG HEIGHT

なお、-inオプションにいれた19200は、Mosaic-HATの設定の最後に入れた通信速度の変更後に合わせています。Mosaic-HATの初期値である115200に合わせればよい、と思いがちですが、どうもstr2strの処理の関係で、高い転送レートだとエラーになるようです。

ひとまずこのスクリプトを実行すると、
2021/07/24 01:26:29 [CC---] 1242115 B 1626 bps (1) rtk2go.com/MOUNTPT
のような表示が出力され、配信できていることがわかります。
しばらくしたのち、http://www.rtk2go.com:2101/をアクセスし、自身のマウントポイントが表示されていれば、Ntripサーバにまで届いていることがわかります。

次回は、もう1台のMosaic-HAT+Raspberry-Piを組み立てて、Rover設定です。RTKのfix安定度や精度が評価できるようになります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?