スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PID制御、ねぇ

ロボットを真っ直ぐ綺麗に走らせるためには、ON/OFF制御・PID制御が必要不可欠になりそうなのでメモをば。

ON/OFF制御(bang-bang制御)とは

「ON(出力あり)」か「OFF(出力なし)」を使い分けて「操作量(出力値)」の“あり”“なし”を決定し、「制御量(入力値)」を目的値に近づける制御

とのこと。実装はすぐに実現できる(条件分岐をいくつか用意するだけ)ほど容易になるけども、この制御方法だと閾値を基準としてるので、オーバーシュートとアンダーシュートを繰り返して無駄な走行距離が発生してしまう。これを別名「ハンチング」と言うそうな。ふむふむ。

で、この欠点を補ったものがPID制御というもの。

PID制御とは

P:比例制御(Proportional)
I:積分制御(Integral)
D:微分制御(Derivative)

以上の三つの頭文字を取っており、それぞれ

P:現在の状況から制御量を決定
I:過去の状況から制御量を決定
D:未来の状況から制御量を決定

してるとのこと。ふむふむ。
で、これで制御量を決定する公式が次の通り。

制御量=Kp×偏差+Ki×偏差の累積値+Kd×前回偏差との差

ここで重要なのは、扱う機体によって係数Kp,Ki,Kdの値を適切なものに変える必要があるということ。これら三つの値が適切なものでないと、値が目標値に収束するどころか、寧ろ発散してとんでもない結果にorz
今日の走行では、Kp=0.8 Ki=0.3 Kd=0.08 が一番いい値だったけども、これを切り替えて一番いい係数を発見する必要があるということですね・・・(・x・
こりゃぁ、今度のミーティングまでにまた動かして検証するしかないですのぅ。

あと忘れてならないのは、タスクは連続して実行されるわけでなく、離散的に実行されるということ。
これを連続量っぽく扱うためには、タスク間の時間を乗算したり除算する必要があるわけで。これも忘れてはならない事柄ですな(・x・


少し前のPWMもそうですが、制御関連の話が出てきてすごく面白くなってきましたw
なんというか、そんな手段で上手く制御できるんだなぁ・・・と感心してしまいますw
今度はセンサの話とかで、また制御関連が出てくるんでしょうかねぇ・・・(・x・
スポンサーサイト

コメント

Secret

プロフィール

朔夜だったり、シェルジュだったり

Author:朔夜だったり、シェルジュだったり
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。