制御工学では色んな手法を学ぶけど、結局実践で開発するときはには、まず何をどうしたらいいんだ??
という疑問を解消するために、このページでは制御開発の全体的な手順について解説します。
制御開発の全体像
当然、制御開発の手順は、制御目的や制御対象に応じて様々です。このページでは、大半のケースに当てはまる標準的な開発の流れについて解説していきます。
まずは全体像を把握しておきましょう。全体の手順は次のようにまとめられます。
これを念頭に置きながら、各手順の詳細を確認していきましょう。
以降では、各手順をイメージしやすくするために、ロボットアームの角度制御を題材に説明していきます。
手順1:要件定義
まず、制御システムがどのような要件を満たせば設計完了とするのかを定めましょう。
実際のところは、制御システムに対する要求性能や制約条件を数字で決めることがほとんどになると思います。例えば次の通りですね。
- 与えられた目標角度に対し、ロボットの角度を誤差±〇〇以内で追従させる(要求性能)
- 制御中、角度が一時的に振動してもよいが、□□秒以内に振動を収束させる(要求性能)
- ロボットが生み出せるパワー(トルク)は最大±△△なので、その範囲内で制御する(制約条件)
このように定量的に要件を定めることで、性能の評価や手法の選定の指針として使えるわけですね。
上記では3点だけを例示しましたが、制御対象が複雑化するにつれて、項目はどんどん増えていくことになります。
特に複数人で開発する場合は、これらをしっかりと共有しておきましょう。不要なすれ違いや手戻りを回避できます。
手順2:設計方針の決定
続いて、具体的に制御システムの構造を考えていきましょう。
制御工学の王道であるモデルベースド制御を実施する場合は、制御対象の数式モデルと、それに基づいた制御器(制御手法)が必要となります。
よってまずは先ほど設定した要件と、既に分かっている制御対象の性質を元に「どんな数式モデルと、どんな制御器を組み合わせるか」を検討しましょう。
数式モデルと制御器、考える順番はケースバイケースです。
例えば、数式モデルの精度の悪さが問題になりそうな場合は、先にモデリング方法を検討することになるでしょう。そうして実現できた精度に応じて、後からそのモデルを扱える制御器を検討することになります。
また、要求性能が非常に高く、高度な制御手法でないと達成できないことが明らかな場合は、先に使用する制御器を決定し、後からそのために必要な数式モデルを考えることになるでしょう。
いや、でも初心者にはどの制御器がいいとか分からないんですけど…
最初はよく分からなくて当然なので、「とりあえず参考書に載っているこの制御手法を使ってみよう。そのためにはこんな数式モデルが必要らしいから、それを作ろう。」といった感じで全然OKです!
手順3:数式モデリング
モデリングの概要
次に、制御対象の数式モデルを作成していきましょう。
モデルベースド制御はモデルが命なので、モデリングは今後の運命を左右する非常に重要なステップです。設計者は、制御器設計だけでなくモデリングのセンスも問われるわけですね。
数式モデルで重要なのは、精度とシンプルさのバランスです。ほとんどの場合、これらはトレードオフの関係にあります。
バランスのさじ加減は、使用する制御器しだいです。制御器に合わせて、情報を省いたり近似したり予想したりしながら、必要なエッセンスのみを適切に抽出したモデルを作りましょう。
モデリングの方法
ほーん。で、数式モデルは具体的にどうやって作ればいいの?
数式モデルを作るアプローチとしては、以下のものがメジャーです。
- ホワイトボックスモデリング:既存の物理法則から数式を組み立て、数式モデルとする方法。「第一原理モデリング」とも呼ばれる
- ブラックボックスモデリング:制御対象の動作データからその特徴を抽出し、数式モデルとする方法
- グレーボックスモデリング:上記の組み合わせ。ホワイトボックスモデリングで表現しきれなかった部分を、ブラックボックスモデリングでカバーする方法
実用上は、次のように「まずホワイトボックスモデリングを実施し、必要に応じてグレーボックスモデリングに切り替える」というアプローチを取ることが多いです。
- 物理法則を元に、数式モデルの形を決定する
- 作った数式モデルの各種パラメータ(物理定数など)を、実機のスペックや動作データから決定する
- 制御対象の動作を数式モデルから計算(予測)し、その結果を実際の動作データと比較する
- 要求精度が出ていれば次に進み、出ていなければ前の工程に戻って数式モデルを改善する。または、不足分をブラックボックスモデリングする(=グレーボックスモデリングに切り替える)
手順4:制御器の実装
数式モデルが完成したら、それに基づいて制御器を設計・実装しましょう。
既存の制御器(制御手法)をそのまま適用するだけでもよいですが、目的に応じてオリジナルのカスタマイズを入れてもOKです。そこが腕の見せ所でもあり、楽しいところでもあります。
制御器は機械的なカラクリや電気回路によってアナログ的に実現することもありますが、今どきはコンピュータープログラムを用いてデジタル的に実装することがほとんどです。
手順5:シミュレーション検証
制御器ができたら、まずはそれをシミュレーション上で動作確認することがほとんどです。「そもそも思うように動作しているか」や、「どのくらいの性能がでそうか」をざっくりと確認しましょう。
不具合が見つかった場合は原因を探り、前の工程に戻って数式モデルや制御器の修正を行います。
いや、でも結局シミュレーションって現実世界を厳密に再現するわけじゃないんでしょ?誤差があるならあんまり意味ないんじゃないの?めんどくさいし…
確かに誤差は必ず入ってしまいますが、そもそも「現実世界のミニチュア版」であるシミュレーション上ですらうまく動作しないなら、現実世界でもうまく動作しない場合がほとんどです。
また、実装したてでなんの調整もしていない制御器はほぼ暴走状態ですので、いちいち実機を動かしていると危険ですし、時間もかかります。
よって、最初はシミュレーション上で効率よく動作確認するのがセオリーです。シミュレーション上では動作条件や制御パラメータの変更が容易ですし、システム内部で何が起きているかを隅々まで確認可能ですからね!
ほーん。でもシミュレーションって専用のソフトを買わないといけないんでしょ?そんなの持ってないし…
そうとは限りません。確かに精度を重視して高価なシミュレーションソフトを使うケースもありますが、例えば先ほど作成した制御用の数式モデルをコンピュータで解くだけでも、簡易的なシミュレーションは可能です。
それでは精度が悪すぎる場合は、精度を重視した複雑な数式モデルをシミュレーション用に別途用意する場合もあります。
必要な精度に応じて、シミュレーション方法を選ぶとよいでしょう。
手順6:実機検証
シミュレーションでいい感じの動作が確認できたら、いよいよ本番環境で動作検証しましょう。
これで当初の要件を満たす性能が出れば開発完了です!もし不具合が見つかれば原因を探り、前の工程に戻って数式モデルや制御器の修正を行いましょう。
ほとんどの実用シーンでは、この工程に最も時間をかけることになるでしょう。実際に装置を動かすと様々な細かい不具合が見つかり、パラメータ調整や制御器のカスタムなど、泥臭い試行錯誤が必要となるためです。
解決法は制御対象や制御手法に応じて様々なので、ケースバイケースで臨機応変に対応する必要があります。
えぇ…。制御工学って、数式を使ってスマートに対象を操る学問じゃないの…?
制御のエッセンスはそうなのですが、泥臭い試行錯誤をその場その場で効率よく行うセンスも制御屋さんの重要スキルだったりします。
以上、制御開発の全体像と、その手順についての解説でした!
コメント