2021年3月16日火曜日

モーションコントローラ実験

 加速度センサ、ジャイロセンサといえば昔から電子工作が趣味の人間なら一度は手を出した経験があると思いますが、当然のごとく私も以前にハマった記憶があります。

しかし実際に加速度、角速度の生データをみると当然のごとくノイズにまみれていて使い物にならなかった記憶しかありません、以前は今のように簡単に使えるフィルタ等がなく全て自前でフィルタ類を用意しなければなかったからです。

ただ現在はちがいます、センサ自体も進化しフィルタ類もライブラリという形で誰でもマイコン機種を問わず簡単に使える環境が揃っています。(例えばカルマンフィルタ、相補フィルタ、MadGwickフィルタなど数学的知識がないととても扱えるようなフィルタではありませんが現在は関数の形で生センサデータを送ると綺麗にフィルタリングされて戻ってきます)

ただしかし、必ずここで問題になるのはyaw(Z)軸のドリフト問題です。

yaw軸のドリフト問題というのは簡単にいうとpitch(Y軸)、roll(X軸)、yaw(Z軸)のうちyawだけが計算で角度を求めるため計算誤差が蓄積されていき結果ドリフトという現象になることです。(ドローンでいうと、ラダーのセンターが時間と共にズレていくことになります)

この問題を解決するために今までの加速度、角速度の6軸に加え、地磁気の3軸を足した9軸センサというものもありますが、自然界の地磁気というものは人工物である電線、配電盤、鉄塔などの磁力に比べると遥かに小さく特に屋内などでは使い物にならないようです。

このドリフト問題、例えばセンサーを手にもってドローンを目視で飛ばすような場合、最初はいいのですがドリフト量が大きくなりキャリブレーション位置からラダーのセンターが180°ズレた場合は体はドローンと反対方向を向くことになり、とても目視できる状況ではないのは明らかです、

ただしかしFPVだったらどうでしょうか?

この疑問から今回のプロジェクトはスタート致しました。

FPVですとラダーのセンターがズレた場合も映像でズレを認識できるし体がドローンと反対方向を向いていても操縦ができるのではないか?

とりあえず今回はこれを検証にするために実験プラットフォームを作成してみました

センサーは3軸加速度、3軸角速度が取れるMPU6050(I2C接続)を使用し生データをMadGwickフィルタに入れその後各軸角度に変換しDAコンバータ変換後、送信機であるT_LIGHTに送っています。使用マイコンはSTM32F103





ドリフトが発生してもFPVで飛ぶことができるのか?

というかその前にモーションセンサで飛ばすこと自体できるのか?を検証してみます。