🙄

振動によって高度が上がる問題

2024/12/26に公開

背景

大型の機体開発でよく陥る問題のひとつが、振動です
できるだけ機体のフレーム重量を軽く作るために、どうしても機体が柔らかくなり、特にモーターアームの固有振動数が低くなってしまいます
それに伴って、振動がフラコンのIMUに影響を与えてしまうことがあります

現象

ホバリングまではできるが、スピードを出してみると不安定になり、高度が上がってしまうという現象が顕著な例です
スピードを出すと、プロペラに風が当たります
プロペラはCWかCCWの向きで回転しているため、横から風が入ってくると、風上に進むブレードと風下に進むブレードで揚力差が生じ、それが大きな振動を発生させます
フラコンにIMUが搭載されており、その値も使って高度の推定を行っています
IMUは計測できる加速度には上限と下限があります
振動が大きくなりすぎると、その加速度センサの計測できる範囲を超えてしまう場合があります
z軸方向の加速度センサは、もともと重力加速度分マイナスにオフセットされているため、マイナス側が先に飽和してしまうのです
上下方向に動いていなければ、z方向のIMUの平均値は-9.8になるはずです
しかし、この振動の影響により、本来-9.8であるところが、例えば-9になってしまった場合、フラコンは機体が下に加速度が発生していると勘違いしてしまいます
なので、機体を上昇しないといけないとなり、高度が上がってしまいます

ログ

振動が大きいときの例です
Ardupilotのドキュメントによると、IMUのxとyについては±3以下、zについては-5~-15の範囲が望ましいと書かれています
このログは、明らかにIMUの揺れが大きいことがわかります
Vibeのclipについてもプロットしてみて、これが増加してしまっていることがわかります
clipはIMUの計測範囲を超えた数のことです
つまり、clipが上昇していくというのは、何度もIMUの計測範囲外の加速度が生じているということです

Vibeの値についてもみてみました
これもドキュメントでは基本は15以下で、たまに30以下であればよいと書かれていますが、明らかに超えてしまっています

このような状態では、まともに飛行させることはできません

解決策

解決策は下記の通りです

  • ハードウェアの修正
    • フレームの剛性アップ
    • 防振処理をする
  • ソフトウェアによる補正
    • ノッチフィルター

エアロネクストでは基本的にハードウェアの修正で対応しています
フレームの剛性アップとしては、特にモーターアーム近辺を強化した方が良い場合があります
防振については、基本的にはCubeに付属の3Mの分厚いクッションテープを使いますが、とても振動が大きい場合は、αゲルのS1や、ゴムダンパーを使います
あとは両面テープのタイプのゲルは非常に使い勝手が良いです
ハサミで切って大きさを変えることができるので、オリジナルのダンパーを作れます
機体の固有振動数を計測しながら、どのようなダンパーが良いか検証していきます
ノッチフィルターについては十分な経験がまだないためわかりませんが、今後どうしてもノッチフィルターを使いたくなることがあれば、色々試してみようと思います

フラコンで固有振動数計測

今はArdupilotのFilter review toolとかもあるので、簡単にできるかもしれませんが、少し前までに行っていた方法です
INS_HNTCH = 1
にして再起動
LOG_BITMASKでIMUのRAWとFASTを取得するように設定
INS_LOG_BAT_OPT = 0
LOG_DISARMED = 1
にして、飛行前のデータを取得できるようにする
この状態で適当な場所をゆすります
だいたいモーターアーム周りなので、モーターをたたいたりします
ログを取得後、mission plannerでfft解析します
mission plannerを立ち上げて、ctrl+Fを押し、FFTをクリック

IMU Batch Sampleを押してログを選択すれば見れます

Discussion