HOME

Scilabでシミュレーション

2008/11/28


ジャイロの働きを、数値計算プログラムScilabでシミュレーションしてみました。 なかなかラジコンヘリを飛ばしているときの実態と合っていそうな 結果でしたので、整理してまとめておきます。

手持ちのジャイロです。
jyro1.gif jyro2.gif

ジャイロは受信機から出力されるラダー用サーボ信号を入力とし、 機体がヨー方向に動いたときにそれを打ち消すように補正された サーボ信号を出力しています。 通常、リバーススイッチとゲイン用ボリュームがついていることが 多いです。
jyro3.gif


ジャイロセンサーは、回転運動の角速度に比例した電圧を出力します。 この電圧をうまく処理し、入力サーボ信号を補正するようにして 出力すれば良いわけです。 調べてみると、PID制御という処理で補正処理を実現することができそうです。 Scilabはこれらの制御系の応答を簡単にシミュレーションすることができます。

まず、ジャイロセンサーの出力電圧をモデル化します。
出力電圧のオフセットは0としています。 停止している状態から急に風が吹いてテールが少し動いたとすると、 ジャイロセンサーは正の電圧を出力します。 (わかりやすくするために符号は正としました。) 回転の速度が遅い動きはじめと動き終わりは電圧が小さく、その間は 一番回転の速度が速いので電圧が大きくなります。 ここでは角速度を三角で代用しています。 角速度を積分すると角度になります。
jyro4.gif
jyro5.gif
上のグラフの黒い線が角速度で、緑の線が積分結果です。 積分結果は元の位置からの角度に相当します。 縦軸と横軸はいい加減な値です。
この角度情報に対して、PID(Proportional、Integral、Derivative)制御に よるフィードバックをかけてあげると、風によるテールの動作を抑制することが できるはずです。

ジャイロの場合は、風によりテールが動いた方向と逆向きにテールローターが 力を出せるようにサーボ信号出力を制御します。
プロポのラダー操作によりテールを動かした場合は、ジャイロはその 動きを補正してはなりません。(当たり前ですが)


いきなり、たくさんのブロックが並びましたが、PID制御のパラメータに よって角度の変化が変わるのがわかります。
結構いい加減なブロック図です。モデル的や数学的におかしなところがあるかも しれません。そのような箇所がありましたら、指摘してくださると うれしいです。
jyro6.gif

左上はジャイロセンサーの出力する角速度情報のモデルです。 そのすぐ右下は加算器で、ジャイロの出力したサーボ信号により 角速度が補正されることをモデル化しています。 加算器の出力は上側と下側に分岐していて、上側は波形モニター用、 下側はゲイン1倍のバッファに接続してあります。

縦に三つ、それぞれ2倍、1倍、4倍のゲインのバッファが並んでいます。 これらが上から、Integral(偏差の積分)、Proportional(偏差)、 Derivative(偏差の微分)の要素になります。

2倍ゲインバッファ(偏差の積分)は、角速度を積分した角度情報を さらに積分した情報を受け取ります。 フィードバック制御を行った結果まだ元の角度まで戻っていないときは、 このバッファの入力が徐々に大きくなり、フィードバックをきつくかける ようになっていきます。

1倍ゲインバッファ(偏差)は、角度情報を受け取ります。 偏差の積分と似ていますが、こちらはフィードバック制御を行った結果が まだ元の位置にもどっていないときに、一定の値を受け取ります。 偏差だけでフィードバックしようとすると、角度に残留偏差が残って しまう場合があります。これを上記の偏差の積分で補正するようにしています。

4倍ゲインバッファ(偏差の微分)は、角速度情報をそのまま受け取ります。 これは角度の微分情報に相当しています。急に強い風が吹いて角度が大きく 動いたような場合、この系のフィードバックによりすばやく補正をかけるように します。

左下の1倍ゲインバッファは、補正量をどの程度フィードバックかけるかを 決めています。
その左は遅延素子です。サーボの応答速度やサーボホーンの長さ、 リンケージの渋さなどをまとめてここの遅延量で置き換えています。


シミュレーションの結果は、このようになりました。
jyro7.gif
黒い線が角速度、緑の線が角度です。 角速度は一度プラス方向に振れてからマイナス方向に振れています。 角度は角速度の線が0クロスする辺りにピークがあります。 風が吹いてテールが振られたときに、ジャイロがサーボ信号を補正し テールローターが振られた方向と逆にテールを動かして 角度を元の位置に戻したときが、このような感じです。


少しパラメータを変えてみます。 補正量のフィードバックゲインを1から3に増やしました。 ジャイロのゲインを上げたのと同じになります。
jyro8.gif
jyro9.gif
ハンチング気味になってしまいまいました...


今までは、遅延素子のパラメータを 0.1に設定してありました。 サーボ応答速度などに相当する部分です。 これを 0.05と半分にしてみます。 つまり、高速サーボに変えたわけです。
jyro10.gif
なんとハンチング気味だったのが、ピタッと停止しています。 しかもフィードバックゲイン=1、遅延量=0.1のときよりも 角度が元に戻る時間が短く、角度のピーク値も小さくなっています。


今回はPID制御のそれぞれのゲインは固定してシミュレーションを行っています。 これらのゲイン値をどのように設定するかは、ヘリの慣性モーメントや サーボの速度・トルク、サーボホーンの長さ、テールローターの回転数 などに応じて、適切な値に決めていく必要があるのですが、今回は えいやっと数値を入れただけです。
それでも、ジャイロゲインとサーボ応答速度とジャイロの効き方の関係は ある程度わかったかなと思います。



こちらは、ZOOMジャイロのカバーを開けた写真です。 普段あまり見ることが無いと思いますので少し大きめの写真にしました。
jyro11.gif
jyro12.gif
右の銀色の長四角のがジャイロセンサーです。

jyro13.gif
jyro14.gif
写真だとわかりにくいですが、PIC16C711が使われています。 16MHzクロックで動作させているようです。
jyro15.gif



HOME