HJ450 MultiWii QuadCopter:フライト編#4 ~AltHoldのPIDチューニングにトライ~

練習のかいあってかなり操縦に慣れてたので、そろそろPIDチューニングに入ろうと思い手始めにAltHoldのPIDチューニングをしてきました。(タイトル画像はチューニング後のテストフライトでの、バンク⇒フル加速のショットです、いかにも墜落ショットに見えますが違います)

注)この記事作成後に再チューニングを実施しました。現在はこれとは異なるPID値になってますのでこちらの記事も合わせてお読みください。(2015/2/17追記)

最適値を求めるために「PIDの各パラメータを変化させてはフライトさせて姿勢変化を観察する」を繰り返すことになりますがP値、I値、D値と3変数となりそのまま総当たりでやると組み合わせ数が膨大となり多分収拾つかなくなると思い、ネットで効率の良い方法を探してみたら、MultiWIiWikiに書いてありました。(この記事です) で、この記事の通りやってみることに、(各値のステップ値などは変えてあります)

2015-01-13_22h56_18

  1. P=0、I=0にセット、Dを20,40,60,80,100と20ステップで変化させる。⇒D値を決める。
  2. 上記で最適なD値を求め、その値を使い次はPを2,4,6,8,10と変化せる。⇒P値を決める。
  3. Iは積分項なので短期安定度への寄与度が少ないと判断しチューニングは後回しにしてとりあえずデフォルト値で暫定決め。

結果はP=6(6.4)、I=0.025(0.025)、D=50(24) 注)カッコ内はデフォルト値。

デフォルトとあまり変わりがない結果ですがPIDの値の変化と姿勢変化の具合が見て取れたので得るところは大でした。

各値を変化させた時の動画も撮りましたので興味のある方は是非とも、「続きを読む・・・」をクリックしてご一読ください。

 D値の最適値を求める

P=0, I=0に固定して、Dを変化させます、設定範囲が[0~100]なので20からスタートして20ステップで100までやりました。

掻き集めた情報によるとDはDifferentialの略でして、いわゆる微分項になるのでもっぱら短期的な変化に対する制御をします、この制御には加速度センサーのZ軸成分を使っている様です。

またP(Proportional)=0なので圧力センサー(高度センサー)による目標高度制御が無効になってますなので長期的な高度変移(Wikiではdriftと呼んでます)が発生するので、この成分はフライト観測では無視します。

ということで、D値を変えてみては実フライトを繰り返して機体の上下動を観測。

最適値の求め方は、上下動(Wikiではyo-yo actionと呼んでました)が出始めるポイントを探し出し、このポイントから逆に戻して(D値を減らす)上下動の出ないポイントが最適値ということです。

D=80あたりから上下動(感覚的ですが1秒周期程度)が出てきました、

D=40~60ぐらいが最適と判断し、D=50でとりあえず決めました。

後から復習しようと思い動画も撮りました。

 

 P値の最適値を求める

前で決めたD値(=50)を使い、今度はP値を変化させてみます。

P値の設定範囲は[0~10]なので2からスタートして2ステップで10までやりました。

P値の変化の方は機体姿勢の変化の見極めが難しく、はっきり言ってうまくいったような気がしませんでした。

最適値の求め方はD値と同じく上下動の消えるポイントを探すことになります。

難しいといったのはこの上下動の発生が有るのか無いのかが難しいということです。

Wikiなどには明確に書かれてないのですが、スロットルステックをセンター位置から上下させると、AltoHold目標値がOverrideされるようです。これは実機フライトの操縦から学習しました。

しかし、P=4以下ですと、いくらスロットル・スティックを上下させても一向に上昇、下降しませんでした。このことから、P=6を最適値として決めました。

P=0の時は発生しなかった、Baroモードオン時の一瞬の下降(数m程度)もPに値を入れると発生することも上下動観測を難しくしている一因でした。

この後、もう少し時間を掛けて詰めて行こうかと思ってます。

動画も撮りました。

以上