Pythonで遊ぶ制御工学2(制御工学って何?)

さあ、今回から本格的に制御工学の内容に触れていくことにしよう。

いきなりだが、ここで質問。「制御」というワードを聞いて、何を思い浮かべるだろうか?制御というと、意外と言葉のイメージを掴めないと思うが、制御とは、英語の「コントロール」の意味である。日本語の方がむしろ意味を掴みにくいという、可哀想な単語である。まあ、それはいいとして、「コントロール」と聞けば、思いあたる例が1つや2つはあるだろう。

例えば、ゲームの「コントローラー」などがそれに当たるだろう。

では、このコントローラーについてもう少し考察を深めるために、その役目を考えてみる。例えば、戦闘系のゲームをやっている場合には、いくつかのボタンがコントローラーにあるが、自分の動かしているキャラクターにこういう技を出させたい、避けたい、ジャンプしたいなど様々な目的にあったボタンを押すであろう。こういった「何か動かす対象があり、それをどのようにしたら理想的に動かすことができるか」を考えるのが制御工学の役目なのである。

ここまでは具体的な話だったが、これから少し抽象的な話になるので、我慢しながら読んでもらいたい。

制御は3つのステップからなっており、それは「モデリング(数理モデル化して考える)」「アナリシス(制御対象がどのような特性を持っているかを解析)」「デザイン(制御対象を理想通りに動かすための機器(コントローラ)の設計)」である。モデリング、に関しては、実は高校物理で死ぬほどやっていることである。

少し簡単な物理モデルで考えてみることにしよう。以下の図を見て欲しい。(手書きで申し訳ない)。単純に、「摩擦の何もない床において、質量mの物体があるとする。そこに時間に依存して変化するf(t)を物体にかかる力として定める。では、時刻tの物体の位置x(t)を求めよ。」という問題を考えよう。やるべきことはわずか2つだ。

スクリーンショット 2021-10-11 11.18.13

1.運動方程式を立てる。

スクリーンショット 2021-10-11 11.24.46

2.1を解く。

これだけだ。以上の式を一つの図に落とし込むと以下のようになる。これがブロック線図と呼ばれる、制御工学の根幹をなすものだ。基本セットは、入力、出力、システムだ。今回であれば、入力がf(t)、出力がx(t)となる。システムを表す数式は、ここでは結果だけ述べるが、1/ms^2となる。(次回のラプラス変換のところでわかる。)ここでは、制御対象を支配する数式とでも思っておけば大丈夫である。また、このシステムを表したこの数式および関数のことを伝達関数と呼ぶ。このように、制御対象を取り巻く状況を伝達関数およびブロック線図に落とし込む作業をモデリングと呼ぶ。ぜひ覚えておこう。

スクリーンショット 2021-10-11 11.35.55

アナリシスとは、適当にシステムに入力を与えた時、どのように制御対象が動くかを把握することをいう。上の例で言えば、入力f(t)を適当な関数に変えていった時に、どのように出力x(t)が変わっていくかを把握することが、アナリシスにあたる。

最後に、デザインとは、モデリング、アナリシスによって、入力、システム、出力の数学的関係が判明した後、その数学的関係を活かしながら、自分が思ったように制御対象が動くように、今回の例であれば、x(t)が自分の思った通りになるように、コントローラーを設計することを言う。

最後に、ちゃんと覚えておくべき単語をおさらいする。

1.入力(自由に操作できる量、(上の例ならば力の加える量))

2.出力(システムに何か入力した結果(上の例ならば物体の位置))

3.ブロック線図(入力、システム、そして出力の関係を視覚的に表した図)

4.伝達関数(入力と出力の関係を示す関数)

もちろんこれから先で、フィードバックやフィードフォワードなど新しい用語が出てくるが、長くなるのでそれはその時に説明するとしよう。

とりあえず、制御工学ってこんなことやるんだとわかってくれれば大丈夫。

次回、「ラプラス変換って何?」お楽しみに!





この記事が気に入ったらサポートをしてみませんか?