【RTK21】M5Stick付アンテナポール作った<DIY土地測量>

測量用にアンテナのポールを作成しました。家屋から2m以内だと電波のマルチパスで精度が大きく劣化することが分かったので、それを防止するために、BaseとRoverとも1.8m角棒の上端にアンテナを設置しました。

●棒の鉛直を調整して固定する方法の開発

①鉛直は、M5StickCのIMUを使って調整する。<M5StickC IMU傾いてます>

地面の位置と高さが欲しいのですが、地面にアンテナを置いたら、電波が反射してマルチパス地獄になって測位できませんので、アンテナをある高さに固定しなければなりません。ところがそのことで、地面の精度を±1-2cm以内にするのが大変になります。何故なら棒が3次元に傾いたらアンテナは何cmもずれてしまうからです。
そこで、M5StickCに内蔵されているIMUを利用して、G表示で、accX=1G、accY、accZ=0G
になるように調整しながら、棒を地面に釘で差し込むことにしました。

②IMUと棒の鉛直の校正<M5StickC IMU傾いている対策>
棒が鉛直になった時に、IMUが所定の値付近を表示するか校正をしました。
家の壁に棒を固定して、建築用三角錘を上からつるして、下で位置が鉛直になっているか確認して鉛直に棒を固定します。


この状態でM5StickCの読みを見ると
accZが0.06-0.08G大きい、accYが0.02-0.01G大きかったので、M5StickCのプログラムで
補正をかけました。原因は、多分、M5StickCの基板上のIMUチップが傾いて半田付けされて
いるのではないかと思います。それなら、Z方向の加速度が大きくずれているのが理解できます。2台やっても同じ結果でしたので、M5StickCでIMUを使うときは筐体の水平とIMUの水平がずれていることを校正して補正しないと精度は相当狂います。
下図で液晶面に垂直に背面に向かうベクトルがaccZ加速度方向なので、基板上での傾きが
SINで効いてくるので、accZ一番大きな影響をうけるということです。


しょうがないので、結局、プログラムの測定値に下駄をはかせて補正しました。
厳密にやるには、専用治具を作って、正確な角度を与えながら、校正すればいいのですが
今回は測量用途での校正します。

●自宅庭でシステム試運転

強風だったので、鉛直出しは、使えませんでした、Baseポールをフェンスにたてかけて、Roverポールを移動させて測定してみました。
写真の状態では、ほぼ高さは等しいです。

■M5Core2で無線モニターしながら、結果を確認してから1点ずつログします。
上記写真の状態では、Acc2d=14mm Acc3d=10mmでFIxしてます。
Length(Base-Rover距離)=18.6cm
relN(Base-RoverN方向座標)=-0.6cm<ほとんど東西ライン上にいるということです。>
relE(Base-Rover E方向座標)=18.6cm <東へ18.6cm離れてます。>
relD(Base-Rover高さ方向座標)=-0.9cm<BaseよりRoverが0.9cm上に居る>
という結果で、目分と合致してます。
[ 0.5]は、20点の分散値です、これで、測定時のばらつきがOKだと確認してからログします。
風の無い日で、実家の土地で精密な校正方法考えます。

Roverを家の北へ伸ばしてフェンスに立てかけてみた(強風で自立できないため)

この状態でのM5Core2の読みは、
Length(Base-Rover距離)=1201.8cm
relN(Base-RoverN方向座標)=1200.8cm<ほとんど東西ライン上にいるということです。>
relE(Base-Rover E方向座標)=45.2cm <東へ18.6cm離れてます。>
relD(Base-Rover高さ方向座標)=-21.3cm<BaseよりRoverが0.9cm上に居る>



●測定システムとプログラム
F9Pは、スキー用のMovingBaseBOXを流用してます。
NTRIP受信は、WiFi NTRIP Maseterを使ってることで、システムが
非常にコンパクトでシンプルになってます。
データログとデータ無線送信は、M5AtomTF-Cardで行ってます。
万一M5Core2のログが失われても、TFカードでF9PのMovingBase1出力常時ログしているので、安心です。無線データ送信の場合、データが失われるリスクがあるので、送信側での二重ログは必須です。

この小さな筐体内にESP32が2個入っているので、電流値1A近く流れます。
そこで、電源ケーブルはUSB高速充電用の極太いケーブルを採用してます。
これに、1.5A流せるモバイルバッテリーを接続して電流を供給してます。
●測量システムプログラム
ArduinoIDEで、シリアル受信、ESP-NOW,SDカード、LCDをSprite表示する機能使ってます。
①送信側
https://gist.github.com/dj1711572002/0958f3bfaf8c48c746ea0ed4ac55b2e4
M5Atomのプログラムですが、シリアル2でF9PのMovingBaseデータ172byteを受信して、SDカードログしながら、M5Core2へデータを送信してます。
モニターの送受信は、M5Coreからの信号で、モニター送信オンオフしてます。
ESP-NOWで、常時送信していると電池寿命が短くなるので、1日もたないので
測定でモニターをつかうときのみ電波を送信する仕様です。

②受信側
https://gist.github.com/dj1711572002/d63d78ee697406e8d5bc8270a6da1d13

M5Stack Core2のプログラですが、新しい試みでSpriteを使ってLCD表示をしてます。描画するデータを事前にRAM上に展開してから、書き終わってから一気にLCDへ転送することで超高速描画できます。M5Stackでは、通常書き込みが遅くて、時々暴走するので、今回から、Stpriteを使うことで、描画速度の高速化と安定性を担保できました。今後はLCD書き込みはSpriteを使っていきます。
Spriteの使い方は、LangShip様の解説が丁寧です。
https://lang-ship.com/blog/work/lovyangfx-6-sprite-base/

●以後
天気が良くて、風が少ない日を狙って、実家に行って、土地の測量実験を開始します。

 

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です