【俺式】ジャイロセンサの調整術

はじめに

タイトルにある【俺式】の通り、経験則に基づいたパラメータの決め方でしかありません。
実装は各自の責任でお願いします。

また、調整するパラメータのおおよその値(桁数的な意味でのスケール)を見つけていくことになります。

これができるとマイクロマウスにおける宴会芸ができるようになります。

ジャイロのゲインの調整をする項目について

ジャイロを調整するにあたって、調整する項目は何なのかですよね?

調整する順を説明します。

  1. センサー値の扱い
  2. 取得したセンサー値を角速度に変換する定数(1種類)
  3. 現在の理想の角速度(=理装置)と、センサーから取得した角速度のずれから、理想値に追従するために使用する定数(PID制御を前提3種類。本記事ではPIまでとする)

0. ジャイロセンサとは

現在の角速度の値を出力するセンサーです。 出力の形式は主に2つあります。

  • アナログ式・・・CPU側でA/D変換で電圧を読み取り、角速度にする
    • マイクロマウスにおいては、ADXRS610、ISZ-650、LY3500がよくつかわれている。
  • デジタル式・・・IC側でセンシングしたデータをSPI/I2C通信などの通信方式で取得する
    • マイクロマウスにおいては、MPU-6000(6500)、ICM-20xxx系などInvenSence社のセンサーがよくつかわれている。SPI/I2Cの両方を扱えるICが多いが、速度の関係上、通信規格上速いとされる、SPIを採用することが多い。

1. センサーの値の扱い

ジャイロセンサはアナログ・デジタル問わず、常に値がぶれています。これは他のセンサー(フォトトランジスタ)と似たものと理解してください。

デジタル式においても、不動の状態でも値は0にはならず、いくつかサンプリングした値を参考に(ゼロ点という)、参考値との差分と定数を掛けたものを角速度の現在値として、利用します。

float k ;    // given
float omega; // [rad/s]
float gyroRef ; // ゼロ点
float gyroData ; // ゼロ点
omega = k *  (gyroRef - gyroData) ;

取得には前述したとおりアナログ・デジタルに違いがあるのですが、予めぶれている値であることから、フィルタ処理をする必要があることがあります。

デジタル式では、IC側でフィルタ処理がすでに施されている場合もあります。

【参考情報】ゼロ点の取得について

値を256回取得し平均したものを、ゼロ点として用いてます。 256回である理由は、2のべき乗による除算は計算誤差を減らすのに有効だと勝手に思ってます。

2. 角速度に変換する定数

まず、前述の定数kを求めます。
しかし、この時点では厳密な値は必要ありません。ゲインのスケールを併せることが目的です。 後述の3が終わらないと、正確なゲインは与えられません。 以下のように、角速度(omega)を積分し角度(angle)します。

#define dt 0.001 // given 
omega = k *  (gyroRef - gyroData) ;
angle += omega * dt;

取得した角度の値をUARTでリアルタイムで監視し、初期値0から90度になるまで手でロボットを回してみて、kの値を調整します。

3. 理想値に追従するために使用する定数

【前提】
マイクロマウスにおいては、ジャイロ以外に、モーター側のフィードバック制御のゲインも調整する必要があります。
即興の調整として、PI制御でPとIが決まってるとよいです。

以下の順で決めます。

  1. Pゲイン
  2. Iゲイン

調整においては1つプログラムの実装が必要です。 具体的には、マウス界隈で言われる宴会芸のプログラムを実装してください。 マウスに速度0、角速度0を維持する制御をすればよいです。

Pゲインの決め方

紙の上にマウスを置き、宴会芸を実行します。マウスがその場で回転するように紙を動かします。
紙を速く動かしている間だけマウスが動いていればよいです。
マウスの動きがバタバタし始めたり、音があり始めると、値が大きする証拠なので、その半分ぐらいにするとよいです(経験則)

Iゲインの決め方

Pゲインの決め方同様、宴会芸で紙を動かしていきます。 Pゲインとは違い、ゆっくり動かして、マウスが応答してくれればよいです。 徐々にIゲインを上げていき、プルプルし始めたら、ゲインが高いといえるので、その半分ぐらいにするとよいでしょう(経験則)

終わりに

Dゲインについてはスラロームなどログを取って調整することになります。P,Iについても同様にログから微調整したほうが良いです。 あまりゲインを上げ過ぎるとロバスト性が悪くなることもありますのでご注意を。

本来なら動画ベースでまとめられるとよいのですが、深夜テンションでやっつけ仕事で書いたので、調整順と調整用のアプリぐらい参考になればと思います。