昨年11月から、あわててSTA23システムを作り始めて、本日左右スキーへの実装組み込み完成しました。実に4か月まるまるかかりました。2か月半は、ソフト開発で、1か月半がハード制作でした。右のシステムが動作して滑走確認してしてから、左のシステムを作り始めたので、左システムは、10日で仕上げました。
●STA23開発備忘録
①Teensyのプログラムの安定動作で相当手間取りました。
SDカードログが昨年夏から今年の1月まで安定動作しなくて、困り果てていたのですが、
偶然、M9Nのハードシリアルのバッファ読み込み方式を変更したら、安定動作しだしたので
ハードウェアシリアルのバッファの使い方が悪くて、SD書き込みに悪影響を及ぼしていました。これが分ったのが正月ですので、実に、6か月くらい不安定状態だったわけです。
備忘録記事は、こちら
【STA22】Teensy4.1SDカードOPENエラー<HardwareSerialバッファが原因だった>
一旦安定動作しだすと、SDファイルの超高速書き込みのおかげで、ログデータ増やし放題で、
M9Nばかりか、IMUのBO055の各種データも全部ログできるようになりました。
②厚さ14ミリの薄型実装で四苦八苦した。
STA22から、薄型でMovingBaseを2体分離させる方式をとりました。
目的は、薄くして、足に巻き付けても、スキー動作に影響がないこと総厚さ20ミリ以下なら
違和感なく滑ることができました。
■薄くなったポイント
1:SimpelRTK2Bをつかった、SimpelRTK2Bliteは、足をチョン切りました。
2:ESP8266基板のNTRIPレシーバーがXBEEコネクタ上に搭載しているので、薄くするためにピンヘッダのプラスチック受けを上下逆につけて、厚さを3ミリかせぎました。
3:SimpleRTK2BもTeensy4.1も1枚基板に直付けしました。
4:蓋を削った、部分的にあたる部分があって、そこの部分だけ蓋の肉を削りました。
5:Base-Rover間ケーブルの合理化
Roverとの通信線は、4芯で行ってます。
1芯目は、Baseから送るRTCM3(460800bps)と
2芯目は、Roverの結果出力をBaseに送り返す115200bps線
3,4芯目は、Rover側に装着してあるモバイルバッテリー4000mAhの電源線をBaseに送電してます。
6:無線モジュールの扱い
今回はBlueToothSPPでまとめてますが、ESP-NOWとかUDPに変更する可能性もあるので
無線用コネクタを用意して、モジュールを外付けにして、スペースの空いてるRover箱に収納してあります。
③レガース(脛あて)に収納する工夫
IMUは、足の甲の部分の裏クッションをカットして、レガースに埋め込んであります。
振動でIMUが動くことを防ぎたいのと雪と水分の防止のためです。
ケーブル類は、レガースのクッション生地にマジックテープで止めまくってます。
ケーブル類どうしても長めになってしまうので、レガース裏面で巻いてマジックテープで止めてます。これのおかげで組み立てが簡単になって、実使用時もトラブルがでないようになってます。
④レガースの左右にポシェットをつけた
ケースを外側に露出するのは、雪、水分で危険なので、百斤でスマホポシェットを買ってきて
レガースにねじ止めしました。これが、結構具合よくて、デバッグした後、ポシェットに収納するだけで、取り付けができるので、ねじ止めなど面倒な固定法が不要で便利です。
⑤Baseアンテナをブーツクランプに取り付けた。
2023年では、MovingBaseの補完のために、IMUでYAW角を補正しながら、板の角度を測定する方式もとってるので、首尾よく補正精度が出れば、MovingBaseを無くすことができます。
そうすると、アンテナが1個ですむので、ブーツの1個取り付けてあれば、スキー板には、何も搭載しないで済みます。取り扱い性が劇的に向上するので、これは、なんとしても、実現したい方式です。
歩行など、その他の運動測定にもそのまま使えるシステムとなりそうです。
●組込みソフト仕様面での備忘録
Teensy4.1のプログラムはGISTにあります。rev091まで来てます。
https://gist.github.com/dj1711572002/48f769ab44d12d020809d4cde0844a48
項目 | |
RTKキャリブレーション (基線長ばらつき測定) |
●2021年までは、緯度経度で位置座標を換算していたのですが、精度が悪い計算になるので、2022年から基線長座標で、緯度経度を一切使わない方式に変更しました。おかげで、位置ばらつきが統計的に把握できるので、現在の測位状態で、計測開始していいか判断ができるようになりました。 =>測定開始時に、滑走開始基準位置を決めたい場合、Pキーイン送ると、PreProcessモードになって、1分間基線長解析を行います。1分間じっとしているとその地点と長野市にあるNC_NAGANO様基準点からの基線長の精度を測定します。平均値と2シグマを記録して、平均値を基準位置として、移動軌跡をログしていきます。また、一度基準位置を決めて電源オフしてもkijun.txtファイルがSDカードにログされているので、次の電源オン起動時に、基準位置を読み込んで、現在位置と基準位置の3次元座標が計算されてログされます。 |
ログ操作 | BlueTooth経由で、タブレット画面で、キーインしてログ操作をします。pキーでキャリブレーション、sキーでSDログ dキーで、リセットして、SDカードのDIRを見られる。 ログが終了したら、プログラムをリセットして、SDカードのファイルを確認することができます。ファイルは、タイムスタンプ名なので、今ログしたファイルの容量を確認できるので無事ログできていることがその場で検査できます。 |
モニターデータ | 4種類のヘッダーで、モニターデータが送られてきます。 [mode]現在何モードで動作しているか[]に表示[p]キャリブレーションモード、[m]モニターモード、[s]SDログモード、 モニターとして送られてくるデータは、flagsとpdopで電波受信状態が分ります [mode]:md,flagsB,flagsR,pdopB,pdopR,haccB,haccR,miscount0,count_upB,count_upB-count_upB0,tp,tp0 [Base]itowB,NYB,EXB,DZB,gSpeedB,headMotB [Rover]itowR,NYR,EXR,DZR,gSpeedR,mHead,bnHosei+eX[0],re [BNO]eX[0],eY[0],eZ[0],laX[0],laY[0],laZ[0],grX[0],grY[0],grZ[0]) BNO055は、40msec周期でSDログされてますが、モニターでは120msec周期のデータのEuler角(yaw,pitch,roll)とLinearAcc(X,Y,Z)とGravity(X,Y,Z)がでてくるので 現在の板の姿勢がわかります。 これだけ多くのデータが120msec周期で出てくるので、自作C#ソフトだとハングするリスクがあるので、当面の間、TeraTermを2個立ち上げて左右のモニターデータを監視します。 |
●以後
目標としている、滑った直後にグラフィックで、現在の滑りのフィードバックを見たいというところまで届いてませんが、2024年には、実現できると思います。
、2023年は明日以降、スキー場で測定に入ります。予期せぬトラブル 課題が必ず発生しますので、
雪がある間で、片づけたいと思いますが、無理だったら、4月5月の標高の高いスキー場か
夏の野沢温泉サマースキー場でやります。