本記事から1年後に、Xbee接続は不安定で、やめたほうがよいことが判明しました。
※2022年5月27日追記 「3年目でも未だNO RTKが時々発生します。」
1番多いのが:モバイルルーターとNTRIPレシーバーのWiFi接続ができてない、
2番目に多いのが:アンテナ線のゆるみ、接触不良、アンテナ位置が悪くて衛星電波が受信できてない
3番目に多いのが:接続先の基準局様の定期メンテナンスとかサーバーダウン
4番目に多いのが:NTRIPレシーバーからの結線の接触不良。
=>当初、M5StickCでNTRIPレシーバーを作って使っていたのですが、F9P基板と別体だとシリアル通信線の接触不良が多発してNORTKが多かったです。しかし、2021年からF9P基板上に載せるNTRIPレシーバーに変更してから接触不良な皆無になりました。WiFi NTRIP Masterとかそれを真似した自作ESP8266基板が一番安定したRTCM3受信を提供してくれます。
※2021年1月追記 マイコンでのRTCMのシリアル転送に置けるNO RTKについてオシロで解析しました Xbeeなど無線送信の場合、タイミングが断続的になったりすると、RTCM受信ができない場合があって、NORTKになります。 F9Pは、非常にタイトな時間でRTCMを受信するみたいですので、RTCMデータ間で数10msecでも遅延があるとNO RTKになってしまいます。RTCMの無線ではまった記事 NORTKではまった記事
一番安定するのが有線のシリアル接続で、マイコンのLOOPになにも余計な命令をいれないようにしてNTRIPからできるだけダイレクトにF9Pへ送信することが基本となります。
=>Xbee自体が高速シリアル通信(115200bps)のデータ信頼性が無い方式なので、RTCM3通信にXbeeを使うのは
不可能もしくは、不安定になります。私は現在では2種類の方法で、RTCM3通信をしてます。
1:マイコンからNTRIP受信して有線シリアルでF9Pへ入力する。
2:ArduSImple社製のWiFi NTRIP MASTERというXbeeコネクタにESP32が搭載されてNTRIP専用基板
をXbee端子に挿すだけでRTCM3を入力できます。
※2021年8月追記ーNORTKの恒久対策ー
NORTKになる原因は2か所あります。
①NTRIP Casterとのインターネット接続瞬時切断
➁NTRIP Casterとの接続しているマイコンからのF9Pへのシリアル通信の不具合(有線なら接触不良、無線ならパケット落ち)
NORTKが発生した場合測位精度が大きくずれますので、使えないデータとなります。
測位ログと同時にNORTKをモニターしておくことが重要になります。さらに、リアルタイムでNORTK状態を表示して
NORTKが発生したら注意喚起をして、原因対策を促すシステムが必要です。問題は、NOTRKは、F9Pのピン出力でしか得られない点です。その他、GNSS関連メッセージ群ではNORTKそのものを扱っているメッセージはありません。そこで、F9PのピンからNORTK信号を取り出してマイコンのADCピンへ入力してシステムで状態監視する方法を開発しました。
※2021年5月連休
RTCMを外部から無線通信でF9Pへ入力する課題1年半がかりで取り組んできてます。
Xbeeでこけてあきらめていたのですが、スキーターンアナライザ(STA)が本格化してどうしても
RTCMを外部から無線通信してF9Pへ入力しなければ進まなくなったので、連休4日かけて無線化に取り組みました。高速信頼性からWiFi系のESP-NOWを使うことで実現できました。
RTKシステムの場合机上で動作しても、実際のフィールドで完全に動作するとは限りませんので
これから夏秋にかけてESP-NOWでのRTCM通信の評価を続けて冬までに信頼性を確保する予定です。
【RTK21】RTCM無線配信作り始めた<ESP-NOWで初期動作OK>
※2021年5月1日追記(これは古い記事です)
NO RTKが発生していると測定がNGになってしまいますので、NO RTKを監視する方法を検討しました。基板上のLEDがケースに収納すると見えないので、導光樹脂棒を使ってケース表面までlED光を延長して見えるようにしました。更に、RTK出力センテンスでのNO RTK 検出を調査しました。パワーオンからFIXまでのLEDの動作とRTK出力値を動画で撮影して比較した結果
2dAcc=14mm MovingBaseの場合は、アンテナ間距離RELPOS Lengthが設定値になっていればNO RTK LEDは消灯します。解説記事は、こちらです。
動画もご覧ください。海外向けに英語版になってますが、LEDLと数値をみればパワーオンからFIXまでの様子が理解できます。
上記課題について、Ardusimple社のユーザーフフォーラムへつたない英語で質問してみました。1時間もしないうちにサポート担当者から回答がありました。素晴らしくレスポンスがいい会社です。
https://www.ardusimple.com/qa-forum/
●4回ほど質疑応答した結果をメモしておきます。
①NO RTKを調べてみたところ自前の基準局の測位精度が全然でてなくて、RTKに使えるレベルでなかったので、NO RTK LEDが点灯していました。他のNTRIPサーバーからのRTKはNO RTKは点滅して測位できました。
➁XbeeのCTS ON RTS ONで通信できなくなる問題、これはDIGI社の仕様の問題で
SimpleRTK2ボードの問題ではありませんでした。DIGI社のデフォルト条件がCTS ON RTS OFFでしたので、その設定でXCTUで書き込めばSimpleRTK2ボードでも XbeeでRTCM3データを送受信できました。一応CTS ONなので通信のデータ落ちは防げてると思います。RTSはRequwetToSendですが、GPSの場合垂れ流してくるので待ちなしですのでRTSなくてもいいとおもいます。
●RTCM3の通信が正常かu-centerでチェックする方法メモ
①基準局側チェック:UBX-CFG-MSGで以下6項目を入力SEND
MSG 選択項目 | 意味 |
F5-05 1005 | 基準座標 =>これを設定しても出力されてない場合は基準局のCFG-TMODE3のSUVEY INが十分できてないのでNO RTKになってしまう |
F5-4D 1077 | 基準局が受信したGPSの観測データ(米GNSS衛星データ) |
F5-57 1087 | 基準局が受信したGLONASSの観測データ(ロシアGNSS衛星データ) |
F5-61 1097 | 基準局が受信したGALILEOの観測データ(欧州GNSS衛星データ) |
F5-7F 1127 | 基準局が受信したBEIDOUの観測データ(中国GNSS衛星データ) |
F5-E6 1230 | 基準局が受信したGLONASSの補正データ(ロシアGNSS衛星データ) |
この入力を1個ずつしっかりSEND押して転送して、MESSAGES VIEW-UBX-RTCM3で6個が太文字になっていれば、F9Pに登録されたチェック完了です。
登録完了すればすでにRTCMを送信してます。
View-PacketConsoleで出力をみてRTCM3がでているかみます。
私の場合は1005がでてませんでNGですが他はでてます。
私の場合はXbee(UART2)経由で、RTCMを送信しているので、PCでみるには
USBにもRTCMを送信しないとみられませんのでUBX-CFG-PRTで通信ポートの設定をします。
USBのOUTを”0+1+5-UBX+NMEA+RTCM3″とします。
この意味は、UBXは、ucenterで処理に必要な生データ(RAW)、NMEAはGPSの標準データ、RTCM3はRTK計算に必要なデータで、この3個があればucenterはすべての処理をして表示してくれます。
➁移動局ROVERでのRTCM3確認(Xbee設定は115200bps CTS ON RTS OFF)
Xbeeで受信しているのですが、RTCM3はバイナリデータなので化け文字ででてきます。XCTUでみるとバイナリでD300xxとあるのがRTCM3のヘッダーですが、これでは6個のコードが受信できているかわかりません。
③RXMでチェック
そこで、XbeeをROVERにとりつけて、UcenterでRTCM3チェックします。
[ View-MessagesView-UBX-RXM-RTCM]をだすと空白の表が右にでます。
空白なので読みこむには、RTCMにカーソルをおいて右クリックすると
Enable/DiseableがでてくるのでEnableをクリックすると受信したRTCMが
刻々とカウント集計される様子がみられます。設定したRTCMがでてるか数値で確認します。ここでは、1005がないので、RTKは計算できてないということです。
※2020年6月18日記
「Xbeeは、使わないことにした。」
F9PのRTKシステム開発は、MovingBase用のシステムが完成して一段落してます。結末としては、トラ技推奨の方法に戻るのが正解でした。
M5StackやESP32-DEVkitでNTRIP接続してRTCM3をF9Pに入れてます。
当初、本記事のようにRTCM3をXbeeで通信しようとしていたのですが、XbeeがPC、スマホとの連携がうまくない点(BlueToothならPCスマホ内蔵しているがXbeeは内蔵してない)フィールドでは、万一どこか異常が発生した場合、代替えシステムが何通りかあるほうが安全なのですが、無線をXbeeに頼ると一本になってしまいます。BlueTooothやWIFIにしておけば、PCとスマホどちらからも送受信できるので、融通がききますが、Xbeeは、汎用性で負けてます。さらに、Xbeeは、速度を早くするとデータ落ちが顕著に悪くなるので、出来の悪い無線規格だと思います。
ということで2020年度から使うのをやめました。
多分、5Gに押されて、マイナーになる規格だと思います。
2020年になってから、私のマイコン用の無線方式は、ESP32専用のESP-NOWです。これは、電流は食いますが、BlueToothやXbeeより高速(1MBPS)で、プログラムがほとんどいらない便利な規格です。さらに、複数のモジュールの同時通信が設定しなくても、簡単にできるので、F9Pを複数使ったMovingBaseの多点接続が簡単になるので、ESPーNOWを使うとRTK MovingBaseが更に凄い技術になると考えてます。マイコン間でバイナリーデータを処理したあと、モニターデータをBlueToothでスマホとPCへ送るという方法でRTKのデータ処理を行ってます。フィールドでは、有線だとからまって面倒なので、BlueToothでスマホでモニターしながら、測定をおこなうのが一番便利です。スマホのプログラムは、ProcessingAndroidモードです。これは、Arduino感覚で使えるので、Arduinoユーザーなら扱い易い言語だと思います。PC、スマホ、Raspiでもほぼ同じプログラムで動作しますのでベースをPCでつくって展開ができるのでシステム作りにはちょうどいいです。現地でプログラムにパッチをあてるのも簡単にできるので、VSなど重いIDEよりは、機動性があってフィールドで使われるRTK技術には、最適な言語であると思いますので、おすすめします。Processingについては、本ブログに解説が多くあります。私のProcessingの師匠は、MSLABO様です。
まずは、MSLABO様のブログから見ていただくとよいです。
●現在のRTCM3
WifiでRTCM3通信するようにしました。
ESP32をF9P基板に半田付け固定してしまっているので、RTCM3に関しては、ポケットWIFIの電源オンだけで
常時F9Pへ流れるようになってます。基準局を変えるときは、ESP32のプログラムをちょい変するだけです。
現在のシステムのハードの記事です。