pinewell's farmer blog Just another WordPress site

2021年1月18日

NtripCasterのロードバランサー

Filed under: GNSS — pinewell @ 11:01 PM

NtipCasterにSNIPを使用している。これはさくらのVPSでWindowsServerを借りての運用。耐障害性を考えて2台での運用していた。

2020年はそれぞれrtk1 とか rtk2 として接続先を変えていたのだが、本年より接続ユーザー数が30、クライアントとしては50台くらいにはなるのだろうか?

負荷分散を考えるに手動で設定するのは面倒。なのでロードバランサーの検討/導入となった。

単純にDNSラウンドロビンでも良いのだが、サーバーダウン時には対応が出来ないとなると二の足を踏んだ。

CentOSにてLVSとKeepalivedでの構築も考えたのだが(全て石狩データセンターなのでそれぞれがローカルでも繋っている)、ntripcasterはただのhttpサーバーとは違い、NtripServerからの基準局データを受け付けなければならず、これも断念。(実サーバーのdefaultgatewayがロードバランサーにしなければならず、globalIPでのntripserverの受付ができない。)

そこでさくらのクラウドにあるGSLB(広域負荷分散)を用いることとした。

NtripServerからの基準局データ送信は caster1.example.com と caster2.example.comとしてDNSにて登録されたglobalIPへ送信する。

NtripClientからは rtk.example.com としてDNSにてCNAMEされた GSLBのFQDNへ変換。さくらのGSLBに登録されている実サーバーのうち、適切なサーバーのglobalIPをクライアントに返すように設定ができた。

料金は月額550円。これは安い!

2021年1月16日

NTRIP 接続

Filed under: GNSS — pinewell @ 2:24 PM

ntripcaster 0.1.5 を使用してlinux鯖によるrtk配信サービスを構築するつもり。

”Lefebure NTRIP Client”での接続でローカル環境でのテストではOKなのにインターネット上のサーバーに接続すると認証エラーでつながらない。

ソースから main.c のinfo.logfiledebuglevel = 0 を 9にして全デバッグ情報を確認すると どういうわけか接続時の文字列の分解に失敗しているよう。

[Authorization] == [Basic XXXXXXXXXXXXXXXX] が取得できていない。

[Connectiotion] == [Basic XXXXXXXXXXXXXXXX]になってしまっているので client.c をいじって [Authorization]の取得に失敗していたら [Connectiotion]の値を使って認証させるように(場当たり的ではあるが)修正した。

AgLeaderではどうかと思い確認すると[Authorization] == [Basic XXXXXXXXXXXXXXXX]が無事取得できているのでまぁよし。

GET /AGS HTTP/1.0
User-Agent: NTRIP AgLeader/1.0 (InCommand)
Host: 192.168.1.254
Authorization: Basic XXXXXXXXXXXX

[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Building request out of [GET /AGS HTTP/1.0]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Building clean request from [/AGS]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Adding varpair [User-Agent] == [NTRIP AgLeader/1.0 (InCommand)]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Building request out of [Host: 192.168.1.254]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Adding varpair [Authorization] == [Basic XXXXXXXXXXXX]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Checking need for authentication on mount /AGS

 

GET /AGS HTTP/1.0
User-Agent: NTRIP LefebureAndroidIntNTRIPClient/20200406
Accept: */*
Connection: close
Authorization: Basic XXXXXXXXXXXX

[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Building request out of [GET /AGS HTTP/1.0]
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Building clean request from [/AGS]
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Adding varpair [User-Agent] == [NTRIP LefebureAndroidIntNTRIPClient/20200406]
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Adding varpair [Accept] == [*/*]
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Adding varpair [Connectiotion] == [Basic XXXXXXXXXXXX]
[15/Jan/2021:14:48:04] [3:Connection Handler] WARNING: Invalid header line [XXXXXXXXXXXX] without colon
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Checking need for authentication on mount /AGS

 

簡単に修正できたように書いているが辿り着くまでは困難だった。

なにせローカルでは問題ないので苦もなく動くものと思いこんでいました。

それにしても[Connectiotion]って?再現性はあるのでもう少しスマートな修正もできるのでしょうが、C言語は不得手で。

2020年3月7日

ngrok

Filed under: GNSS — pinewell @ 11:29 AM

ngrokとは. 簡単にいうと、ローカルPC上で稼働しているネットワーク(TCP)サービスを外部公開できるサービス」だそうだ。
これを使うとグローバルIPが貰えないMVNOでも外部からアクセス出来そうだ。

2020年3月5日

自前基準局の作製

Filed under: GNSS — pinewell @ 11:18 PM

ZED-F9Pを用いた安価なRTK基準局の作製 その9

前回まででインターネット環境が整った自宅などを基準局とすることができるようになりました。(自宅ルーターのポート解放とかDDNSとかは端折ってますが。)
ここからはインターネット環境の無い場所での基準局の構築です。
実際のところ牛舎の屋根の上とか、倉庫の屋根の上など自宅にインターネット環境があっても敷地内にはLANケーブルの敷設が難しい場所もあるでしょう。
Wifiを使っても良いのですがここではMVNOを使った通信を行います。

アンテナ設置状況
D型の屋根に設置
まだ専用ケースが無くてダイソーのプラケース

・LTEルーターについて
NECから PA-HT100LNという製品が2017年の8月に発売されています。
半年前に購入した時は12,000円ぐらいだったし即入荷だったのですが、現在は最安値で13,140円しかも在庫は無しで2月22日に注文したら入荷予定が5月2日〜5月29日。即納できそうな処は15,000円を越えてきます。
RasPi3以降のWifiは高性能/電源キビシメで夏場の発熱が怖くて、どうしても有線で繋ぎたいので、代替機を模索中です。
いっそのことL-02Cでraspiから直接LTE通信してしまおうかとも。

・MVNO SIMについて
自宅からsshで繋いで管理をする都合上、グローバルIPが貰えるSIMが必要でした。調べると某ショッピングセンター系のドコモType2プランが最適です。
月1Gプランで480円。通信速度が低速時でも200kbpsなのでRTCMデータのみなら問題はありません。シリアルの通信が115.2kbpsなのですから。
1日24時間で約250MBのデータ送信を行っています。250*30=7500ひと月で8Gくらいのデータをアップロードしてますが今のところ上手くいってます。
問題があるとするならば一人5回線の制限です。とうとう妻の名前を借りることになりました。
他に低速(常時250kbps)でもつなぎ放題なMVNOがあります。某カメラ店で販売しています。
これでもテストを行っていますが通信速度的には問題ないのですがグローバルIPがもらえないので却下です。
その他2社ほど試してみた結果の結論です。

・ルーターに求める機能について
有線接続ができること。
ポート解放ができること。
DHCPサーバー機能でMACアドレスで指定ができること。
必須ではないが無線LANのアクセスポイントとなること。これができると現場でPCからWifi接続、raspiの設定変更が出来る。

この据置きルーターは使えなかった。

上記のLTEルーターはルーターとしての機能(DHCPサーバーのMACアドレス指定、ポート解放)が出来無いものだったのでゴミとなった。Amazonでも売ってますね。コメントが微妙。技適ってなに?商品です。

自前基準局の作製

Filed under: GNSS — pinewell @ 9:35 PM

ZED-F9Pを用いた安価なRTK基準局の作製 その8

RaspberryPiの設定
Raspbianをセットアップ。
sshを使えるように。/boot/ に touch ssh
基本的な設定(raspi-configによるupdate、パスワード変更など。)
GPIOのUART(シリアルポート)を使えるように。
raspi-configにて
[5 Interfacing Options]-[P6 Serial]を選択。
Would you like a login shell to be accessible over serial?に<No>。
Would you like the serial port hardware to be enabled?に<Yes>。


RTKLIBのダウンロード、unzip。
RTKLIBのstr2strだけコンパイル。
$ cd {解凍dir}/app/str2str/gcc
$ make
終わるまで待つ。
/usr/bin/にstr2strをコピー。
$sudo cp str2str /usr/bin/
接続確認
$sudo str2str -in serial://ttyAMA0:115200 -out ntrips://:{PASS}@xxx.xxx.xxx.xxx:2101/KAYANO
これで繋がるならRaspi起動後に実行されるようにrc.localの設定。
exit 0 の前の行に
/usr/bin/str2str -in serial://ttyAMA0:115200 -out ntrips://:{PASS}@xxx.xxx.xxx.xxx:2101/KAYANO

str2strでシリアルから受信、NtripCasterに接続できている様子。
Reserved MountPtsから接続されるとグリーンに変る。
解析が済むとRTCM3viewerで送信されている状況がわかる。

自前基準局の作製

Filed under: GNSS — pinewell @ 1:26 PM

ZED-F9Pを用いた安価なRTK基準局の作製 その7

NtripCater SNIPのインストール・設定
私はさくらのVPSを借りていますが自宅サーバーでも運用しています。
DDNSなどで名前解決、ポート開放などができれば自宅サーバーでも可能でしょう。
VPSを借りているのは複数台のRoverからのアクセスに耐えられる帯域を確保したいためです。
自宅サーバーのアップロードの帯域では不安で。
サーバーの能力的にはW1Gプランで十分かと。HDD容量も必要ありません。

SNIPをダウンロードしてインストールします。
・ユーザー登録が必要だったはず。
・サービスとしては動かず、ログインした状態で実行しつづけなければならない。
・LITEとしてレジストしなければ評価モードとして動作し1時間で切れる。
・LITEでレジストしてしまうとStream設定の編集・追加ができなくなる?
特に最後の部分が問題です。お金があるならばBASICを購入した方が良いです。

SNIP起動
最初の起動でいきなり配信がスタートしてしまいます。(「Auto Start」にチェックが入っている)
[Caster and Clients]タブを選択して [Disconnect]します。
[Caster IP:] 127.0.0.1 これはVPSならグローバルIPです。
[Cster Port:] 2101 特に問題なければ変えません。NtripのWellKnownPortはまだ無いようです。実質多くのアプリが2101がデフォルト値となっているようです。
Windowsのファイアウォールの設定で開放しておきます。
[User Accounts]ボタンで接続ユーザーの管理ができます。
ユーザーあたりの接続数も制限できます。
[Allow Annoymous Access for Users]のチェックを外すと匿名では接続できなくなります。
[Allow Use-SNIP.com access for quality monitoring]も外しておきます。

[Relay Streams]タブ
ここは5つの転送するストリームが登録されています。
全て不要なのでストリームを選択して右クリック [Remove] します。

[Pushed-In Streams]タブ
ここにRaspiから受信するストリームを設定します。
[Add]ボタンを押します。
[MountPt]-[Configure]ボタンでマウントポイントの詳細設定ができます。

右側から
[Mount Pt] 一意になる名称を設定します。
[City/Satte] 都道府県で良いかな。
[Contry] JP
[Data Format] RTCM 3.x(Auto)
[GNSS types] GPSとGLONASSにチェック
[Carrier] 周波の数です。ZED-F9Pは2周波なので2
[Msg Types] 空白でも作成してくれます。
[Location] おおよその値を入力しています。
[Access] 初期値のままで。
[Misc]空白です。
左側
[Password]このストリームにアップするためのパスワードです。
[Parse] チェックを入れます。送られてくるストリームを解析してくれる。
保存して [Caster and Clients]タブに戻り、[Connect]ボタンでNtripCasterとして受付待ちとなります。
その前に。
[Misc]ツールバーからの[Data File Settings]を開き、ログデータの設定をします。
容量の少ないVPSではログを貯めきれないので[Delete data files after ] 3 [Days].としてチェックをいれます。

[Help]-[Registration]
[Select the type of license below]のコンボボックスでLite(Free)を選択。
[Next]ボタンで名前とメールアドレスを入力して[Next]。
SNIP Legal Agreement を読んで [I agree to the terms of the license]に同意ができたらチェック。[Next]。
[Register]ボタンでLiteバージョンとして登録されます。
以降、ストリームの編集・削除?ができなくなります。
追加も個数を超えるとできなくなる?

自前基準局の作製

Filed under: GNSS — pinewell @ 10:11 AM

ZED-F9Pを用いた安価なRTK基地局の作製 その6

RaspberryPiとの接続

USBポートはPCとの接続用に空けています。
電源をRaspiから取っているので少し心配ですが半年以上の運用では現在のところ大丈夫。

3Dプリンタでケースを作りました。
夏場はファンが必要か?

2020年3月4日

自前基準局の作製

Filed under: GNSS — pinewell @ 11:50 PM

ZED-F9Pを用いた安価なRTK基準局の作製 その5

私が本を読んだりネットを探し回って調べた設定です。
間違っているもの、不要なものもあるかも知れません。あくまで使用は自己責任で。

基準局としてのZED-F9Pの設定(u-Center使用)
要点
使用するGNSSの設定
動作モードの設定
基準局の位置
出力するRTCM情報の設定
不要な情報の出力停止

使用するGNSSの設定
[Receiver]-[Action]-[Revert Config]で工場出荷状態。
[UBX]-[CFG]-[GNSS]でGPSとGLONASSのみEnableに。
[UBX]-[CFG]-[RATE]でMeasurementPeriod を1000から250に。

動作モード
[UBX]-[CFG]-[NAV5]の[Dynamic Model] を Stationary
[UBX]-[CFG]-[NMEA]の[High precision mode]にチェック

基準局の位置
[UBX]-[CFG]-[TMODE3]
Mode を 2-Fixed Modeに
Use Lat/Lon/Alt Positionにチェック
Lat/Long/Altを入力
Accuracyは何だろう?0.0000のまま。
[UBX]-[NAV]-[PVT]を右クリックしてEnableMassegeすると DataViewのFixModeが 3DからTIMEにかわり、緯度経度が設定した値になる。

出力するRTCM情報の設定
[UBX]-[CFG]-[MSG]
コンボボックスで
F5-05 RTCM3.3 1005 を選択 UART1とUART2とUSBのチェックボックスをON
RTCM3.3 1077
RTCM3.3 1087
RTCM3.3 1230
これらも同様に。
[UBX]-[CFG]-[PRT]
Target UART1で Protocol out に 5-RTCM3を設定
Baudrateに115200
Target UART2でも同様に。
Target USBでは Protocol out に 5-RTCM3を設定。
USBでRTCM3のみを選択するとu-Centerで表示させるためのデータも送られてこなくなるため全てのチャート表示が更新されなくなるので注意。

不要な情報の出力停止
[NMEA]を右クリックしてDisableMessage。
純粋にRTCM3メッセージのみが出力されている状態となる。
[View]ツールバーのPacketConsoleをみるとRTCM3メッセージが表示される。

[Receiver]-[Action]-[Save Config]する。
[Tool]-[Receiver Configuration]でZED-F9Pの設定をテキストファイルに書き出すことができる。
幾つかの基準局を設定する必要がある場合は設定を保存しておいてファイルから読み込んで位置情報だけを書き換えるってことが出来る。

2020年3月3日

自前基準局の作製

Filed under: GNSS — pinewell @ 11:53 PM

ZED-F9Pを用いた安価なRTK基地局の作製 その4

まず、問題となるのが基地局となる場所の正確な位置を測位することです。
と、いうのもRTKでの測位では基地局があるのが前提です。なので近くに利用できる基地局が無い場合に正確な測位には時間がかかります。最悪収束できない。
幸いにして私が基地局を設置するにあたりディーラーのNtripCasterが使えたので問題はなかったのです。

善意の基準局で運良く近くにあればよいのですが無い場合はどうしたら?
ディーラーに相談して借りるかかホクレンRTKを使えばできる。
どちらもタダってわけには行かないと思いますが…。

正確な座標の求め方
1.アンテナの設置
見通しの良い(オープンスカイ)な場所を選定。
ケーブル長は10m程度としておく。TNC-SMA、SMA-u.FLでZED-F9Pと接続。
2.PCにu-Centerをインストール
USB-C でZED-F9Pと接続するとCOMポートとして認識。
3.ZED-F9Pの設定
u-CenterにてCOMを選択して接続。
ツールバーから [Receiver]-[Action]-[Revert Config]で工場出荷状態。
この時点で衛星からのデータが正常に受信していることが別る。
COMポートのBaudrateを115200に。
[View]-[Message-View]で設定ツールを起動
[CFG]-[GNSS]で使用するGNSSの設定。GPS、BeiDou、GLONASSをEnableにしてSend。
[CFG]-[MSG]のMessageコンボボックスでUSBに出力するデータを指定。
[02-15 RXM-RAWX]のUSBにチェック Send。
[02-13 RXM-SFRBX]のUSBにチェック Send。
ツールバーから [Receiver]-[Action]-[Save Config]
これで測位に必要なu-bloxの生データがUSBに出力される。
Disconnect。u-Centerの終了。

u-Centerの設定画面

4.RTKLIBでの測位
rtknavi.exeをクリックして起動。
インプットストリームの設定。右上「I」をクリックして設定画面。
Roverにチェック Serial を選択。Optで通信速度115200。Format u-bloxを選択。
BaseStationにチェック、NTRIP Clientを選択。OptでNtripCasterのアドレス、ポート、マウントポイントなど設定。FormatでRTCM3など。
基地局によってはTransmit NMEA GPGGA Base Stationが必要な場合も。
これはクライアントの位置情報が必要な場合。疑似基地局を作成するディーラーのNtripCasterでは必要だった。ウソでない程度に緯度経度高度を入力。

「Options」ボタンでオプションメニュー。
Setting1タブ
[PostioningMode] Kinematic
[Frequences] L1+L2
使用衛星の[GPS][GLO][BeiDou]にチェック。
Setteing2
[Integer Ambiguityu Res] Fix and Hold、Fix and Hold、ONを選択
Positionsタブ
[BaseStation] RTCM AntennaPositionを選択

その他40db以上の感度のみ使うや15度以上の衛星を使うとかのオプションがあるが割愛。
「Start」ボタンでRTK測位開始。

動画を見てもらうとわかるが30秒かからずにFIXする。
基地局までの距離は数mというアドバンテージがありますが。
緯度/経度は43.xxxxxxxx と小数点以下8桁。
高度は小数点以下3桁。
FIX後は1~2cmの誤差。
ちなみにクルマに積んで計測してみたらFIX後は正確に位置を捕捉できていた。

自前基準局の作製

Filed under: GNSS — pinewell @ 5:08 PM

ZED-F9Pを用いた安価なRTK基準局の作製 その3

概念図

AgLeaderではディスプレイであるInCommand 1200にWifiが付けられる。
NtripCasterの設定はAgLeaderに行う。
その他の自動操舵システムでは、トラクターでデータをスマフォのアプリで受けて、parani SD-1000を通じてBluetooth-シリアル変換でRTCMデータを受け渡す。(こっちが主流か)

某ホクレンさんのRTK システムではスマフォに専用アプリ+paraniで使用。
NTRIPでは無くTCPのストリームとなっていてポートでユーザーを分けているようだ。
ホクレンRTKから切り替えて、自前基準局を使う場合は別途NtripClientアプリが必要。
メジャーなのは Lefebure NTRIP Client。

Older Posts »

Powered by WordPress