猛暑のため、屋外試験は、気温が低いタイミングを狙ってしないと熱中症になってしまいます。
RTKの実験は、見晴らしの良い場所で行うので、熱中症のリスクが高いです。ということで、本来なら自転車に搭載して測定するのですが、自動車に搭載して速度ベクトルを測定してみました
●F9P高速化のアイデアと原理
「25HzのM9Nの速度ベクトル精度がF9Pと同等な事を利用して、M9Nの速度ベクトルを積分することで
変位座標を得ます。F9Pの100msec周期の間隔を40msec,80msecをM9Nの積分値で補間するアイデア」
・面白いことに、M9Nは、測位精度は、1-1.5mですが、速度積分だと数cm~20cm以内になります。
・100msec周期内の積分なので、数cmで収まります。
・毎回100msec毎にF9P位置と合致させてリセットするので積分誤差を累積することもありません。
・補間周期は、F9Pの100msecとM9Nの40msecの最大公約数の20msecなので、50Hzとなります。
●以降の開発進捗記事
【RTK22】裏技!GPSドップラーなら高精度でベクトル得られる<M9N衝動買い>
【RTK22】高レートGPS Ublox-M9Nいじる その1<SBASって何だ>
【RTK22】高レートGPS Ublox-M9Nいじる その2<M9N速度積分で使える>
【RTK22】M9N Arm Motion測定で異変<モードの設定次第で化ける>
【RTK22】GPSドップラー解析ツール作り<30kmh以上の実験必要>
【RTK22】GPSドップラーノイズ対策にLowPassFilterかけた<積分精度向上した>=>M9NのvelNを積分してF9PのLatitudeから変位を200msecで比較すると±5cm程度に収まってました。
●システムハード構成
アルミ薄板上にヘリカルアンテナとM9N基板(チップアンテナモデル)を並べて、アルミ板裏側に
SimpleRTK2B基板ボックスを取り付けて、ロードバイクに取り付けるために風速計用に作ってある3Dプリント
クランプ台を取り付けてあります。アンテナとF9Pの距離を20cm以内にしてアンテナ線が短くなったので
自転車走行での激しい振動でも、大丈夫だと思います。スキーの代替え測定になると思います。
猛暑がおさまってくるのが待ち遠しいです。
マイコンは、Teensy4.1にBlueTooth SPPモジュールのRN42をシリアル接続してあります。
Teensy4.1は、ハードウェアシリアルが8個もあるので、周辺デバイスつなぎ放題です。
●6月からコツコツとM9N補間システムプログラムを作成してきました。
特徴:100-200msec遅れで50HzデータをBlueToothで出力するので、運動動作中にグラフを見ながら実験できます
未だ、プログラムSD書き込みが不具合があって、デバッグ中ですが、次のデータ積分処理のプログラムは、F9PとM9Nの線形性が非常によくでているのでM9N速度を積分して、変位で補間する計算方法とアルゴリズムを開発していきます。
結果1:F9P100msec(10Hz)とM9N40msec(25Hz)の最大公約数は、20msecなので、20msec基準で補間計算をして、データを生成することにしました。50Hzのitow出力となります。
ソースは、GISTにあります。
https://gist.github.com/dj1711572002/fa30615dad79ddf06e65d1ce6f2bc150
結果2:リアルタイムで流れてくるデータに対して、補間計算は、最小公倍数200msec分データがたまってから
補間計算をさせるので、実際のリアルタイムから、200msecほど遅れて、マイコンから出力されますが
しかも、20msec間隔のデータを不規則なタイミングで流した場合、CPLTなどWINDOWSのグラフアプリで
きちんご見えるかが課題でしたが、車載実験したところ、不自然さはありませんでした。
補間は、単純に時間比例の線形補間です。
結果3:M9NとF9Pの出力タイミングがばらつくので、itowがずれて受信されます。そのitowのずれを補正しながら
補間計算して、50Hzの同期データにまとめて出力するプログラムを何とか作成できました。
itowが20msec刻みになっているのが新鮮です。
順番が前後してでてくるので、それを整理するのに一工夫しました。
これから、実装していくのは、
実データは、F9Pが100msec単位、M9Nが40msec単位になります。ですので、重なるのは200msecですので、
その時に、F9Pの位置とM9Nの積分位置を比較してM9Nの位置データのずれを計算します。
多分数cm程度しか誤差がでないので、M9Nの補間データをF9Pの25Hz補間として採用できると思います。
スキーなど、小半径での高速ターンの場合は、100msecで1mくらい進むので、その間のデータが無いのは
旗門通過時点のターンの挙動を失うことになるので、25Hz化は重要だと思います。
下記で、lon latは、停止しているので、値の変化がありませんが、動きがあると線形に補間します。
結果4:車載でシステムを稼働させて、CPLTで眺めながら走行しましたが、gSpeed、headMotは、F9PとM9Nは、ぴったりと合ってました。線形性が完全にでていることを再認識できました。
●車載測定グラフ
20msec周期で、100msec毎にまとめて5個ずつ出力してますが、グラフ上では流れて見えます。
実際の動きから200msec遅れてますが,それは、車載運転中では気づきませんでした。
黒F9Pー緑M9N曲線がgSpeedでほぼ重なっています。
青F9Pー藍色M9N曲線がheadMotでほぼ重なってます。
時間軸を拡大(1目盛5秒)でもぴったり重なってました。自動車走行では、運動半径が大きいので、
100msecで大きく変位しないので、F9PとM9Nでずれが発生しないので重なってみえると思います。
自転車走行なら、細かな変位が短時間で発生するので、F9PとM9Nで差異がみられて、
補間の効果が見えると思います。