【STA25】F9P MovingBaseで周期外れ発生していた<対策として460800bpsにアップ>

Teensyログプログラムのデバッグは終了したので、マイコン側の不具合は収まったのですが、
測定すると、Base,Rovetともに、時々データ落ちが発生して1-5%の不良率となってました。
Teensy側に落ち度はないので、F9Pを検証すると。なんと、120msec周期から外れてしまう現象が頻繁に発生してました。
●現象
ログ中にランダムに1エポック抜ける現象です。発生前の数エポックで120mse以上に遅延が始まって、2-3回続くと
1個抜けてまた元に戻るというデータ落ち現象をくりかえします。
Baseは0.3-2%で発生、Roverでは1-5%で発生します。

●F9P MovingBaseの課題
F9P MovingBaseが8-10Hzと遅いのは、RTK計算処置が重いためです。
ですので、電波状況が悪くなると、1Hzまで自動的に落としてデータを出力してきます。
ここ4年気づかなかったのですが、今回120msecを超えて200msec程度まで周期が遅延する現象を測定しました。
多分、ファームHPG1.32になって重くなったのだと思います。

●対策
①F9P UARTからの出力レートを現状の115200bpsから460800bpsへアップしました。
これによって、計算後のデータ転送時間が大幅の縮小できるので、F9Pの負担が減ります。
特にBaseがRTK計算を2回やっているので、Baseには効果があるはずです。

②スペックの8Hz125msecにレートを落とす。
今までは、HPG1.31だったので、長年120msecでシステムを組んでいたのですが、仕様書にあると通りの
8Hz125msecにおとしました。これの影響は、IMUとひずみゲージセンサとの同期がとりにくくなる点ですが
データ落ちの不良率が最優先なので、レートを落としました。

③F9Hの仕事を減らした
Roverの後ろのF9Pが壊れたので
F9Hの交換したのですが、F9Hは、処理能力がF9Pより劣るので、
できるだけ仕事を減らしてあげないと破綻します。そこで、UART2 OUTとUART INをnoneにして
使わない機能をキャンセルすることで、処理能力を救う対策をとりました。
これのやり方は、Ardusimpleサポートチームに教えてもらった過去記事にあります。

【RTK22】正月の工作ZED-F9Hボード試す<Movingbaseアンテナ間固定専用>

 

●結果
5000エポック測定して周期不良の240msecになるエポックの割合が1-5%あったのですが、
  Baseでほぼゼロ個か1個発生、Roverでも10個未満で、0.07%とかでほぼ完ぺきに測定できるようになりました。
1万エポックでもほぼゼロなので、完璧な対策となったと思います。

 

●ログ方式
SDカードログではなく、WindowsPC タブレットでUSBログだと、データをそのまま処理できるので、デバッグの効率が
 良いです。 マイコン側も負担が少なく、X20Pで高速化した場合でも本システムで対応できるので将来性があります。

 C#コンソールでログプログラムを作ってみましたが、TeraTerm同様にデータ落ちなくログできてます。

 

●使ったプログラム
Teensy4.1  ArduinoIDE
https://gist.github.com/dj1711572002/8081a2acc219c42da37c56233e39a218

C# USB Logger
TeensyからUSBケーブル接続でデータをログします。F9P3個、IMU2個、ADS122U04などのバイナリが混在しているので
一括受信したあと、個別にファイルを分別してCSVファイルとして4個出力します。
https://gist.github.com/dj1711572002/6b986df9a52d102cf9b6e9c09842c4c6

コメントを残す

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