FC2ブログ
2019-08-30 20:01 | カテゴリ:倒立振り子ロボット
10日間かけて、PID係数の最適化を検討しています。


セルフバランスの難しさは、以下の様な課題も解決していかなければなりません。


*中立点でモーターの回転方向が逆転ー>瞬時切り替えのレスポンス

*車体の振動ー>回転切り替え時のギアの少しのガタで車体が揺れ、センサーの計測に影響

*モーターの回転数とトルクのバランス->回転の立ち上がりの速さ


前回の途中経過報告のビデオでもお判りのように、正立はおろか、じっとしていることすら難しい状況が続いています。

WEBで先人の方々の様子を拝見すると、このPID係数は、総当たりの力業の様です。

私も、あーでもない、こーでもない、と数字を少しずつ変えては、走行させる日々でした。

それにしても、細かい設定を変えつつ、パラメータの途中経過を確認するには、この「フリスクもどきの表示器」は、大活躍でした。

(SR1000)

SR1000.jpg






続きは、、、





係数をいろいろ変更して、机上にて、指で支えながら、指の動きに反応し、その方向にちゃんと追従するところまできました。

実は、こんなおとなしい状態に手なずけるようになるまでには、こんなロデオ状態も。


(SR1001)






そして、、、、、

(SR1002)





なんとやっとのことで自立させることができました。


もう少しパラメータを調整して、こんな感じにも。


(SR1003)






やっとのことで、ある程度のPID係数の目安を得ることができました。

当たり前なんですが、机上の様に硬い滑らかな場所と、カーペットのような場所では、かなり係数が異なります。

カーペット上で、よい感じでユラユラ自立していても、机上では振動してあられもない方向へ進んでいくことも。

今後はこの目安に基づいて、微調整を進めることができます。

一方で、別の問題も解決していかなければなりません。

それは、センサーのドリフトの問題です。

今回は、センサーのジャイロ(GYR)で検出された角速度をを用いて、それを時間積分し、正立時の角度を基準として現在の傾きの角度を推定し、補正する様にモーターを制御しています。

しかし、GYRセンサーの角速度は、時間や温度によってドリフトが少なからずあり、それが車体の不安定(どんどん移動してしまう)につながります。

(SR1004)

起動直後から、GYRの計測値が少しづつ変動し、

SR1004.jpg



(SR1005)

数秒から十数秒後には、この様な数値にまで変動してしまいます。

SR1005.jpg




それにどの様に対応するかも課題です。

一方で、センサーで計測された加速度(Acc)は、重力加速度を含む運動時の加速度を検出します。

これは、車体が制止していれば、重力加速度を安定して計測できます。


(SR1006)

これは、重力加速度を元に計算した角度ですが、単位は、1/1000度です。

SR1006.jpg



同じく数十秒経過しても大きくドリフトするようには見えません。


(SR1007)

SR1007.jpg





加速度からの角度計測は、ドリフトは少ないのですが、それ以上に走行による加速度の影響を受けてしまいます。

ネットでいろいろ調べると、「カルマン・フィルター」とか「相補フィルター」とかがあったのですが、「カルマン・フィルター」は、行列演算などがあるようで、「見なかった」ことにして、「相補フィルター」にトライしてみます。

相補フィルターは、GYRのデータとACCのデータを適当に「混ぜて」角度を得るものらしいのですが、

私は、


Angle = P_Angle + 0.9 * (float) (Gyr) * Dt + 0.1 * (-P_Acc_Ang + Ang_Acc) * 65.359;

尚、65.359 は、PID係数のけたをそろえるための係数 = 1/15.3 * 1000 = 65.359 としました。

としました。これで正解かどうかはわかりません。PID係数がうまく設定できればいいのですが。


P_Angleは、直前の車体の傾き角度、
P_Acc_Angは、直前のAccによる計測・計算角度
Ang_Accは、今回ACCで計測・計算した角度です。

簡単に言えば、10%ほど、ACCで求めた角度を混ぜてやろう、という感じです。


これで、角度のドリフトを見てみると、以外に落ち着いています。

(SR1008)

SR1008.jpg





じゃあ、これを元に角度を計算して制御すればいいのでは???

しかし、GYRデータだけでも多少は自立しているので、もう少しこの係数を煮詰めてから、相補フィルターに行こうと考えています。

まだまだ先は長いです(笑)


関連記事

管理者のみに表示する