制御開発の全体像とその手順。基本の6ステップでもう迷わない!

制御理論入門(用語解説とか)

制御工学では色んな手法を学ぶけど、結局実践で開発するときはには、まず何をどうしたらいいんだ??

という疑問を解消するために、このページでは制御開発の全体的な手順について解説します。

このページのまとめ
  • 制御開発の標準的な流れは、次の通り
制御開発の標準的な流れ。1.要件定義、2.設計方針の決定、3.数式モデリング、4.制御器の実装、5.シミュレーション検証、6.実機検証
  • 実際の所は、制御目的や制御対象に応じてケースバイケースで臨機応変に対応する
スポンサーリンク

制御開発の全体像

当然、制御開発の手順は、制御目的や制御対象に応じて様々です。このページでは、大半のケースに当てはまる標準的な開発の流れについて解説していきます。

まずは全体像を把握しておきましょう。全体の手順は次のようにまとめられます。

制御開発の標準的な流れ。1.要件定義、2.設計方針の決定、3.数式モデリング、4.制御器の実装、5.シミュレーション検証、6.実機検証

これを念頭に置きながら、各手順の詳細を確認していきましょう。

以降では、各手順をイメージしやすくするために、ロボットアームの角度制御を題材に説明していきます。

ロボットの関節の角度を指令どおりに動かしたい

手順1:要件定義

さっきの手順で言うとココ

まず、制御システムがどのような要件を満たせば設計完了とするのかを定めましょう。

実際のところは、制御システムに対する要求性能制約条件を数字で決めることがほとんどになると思います。例えば次の通りですね。

  • 与えられた目標角度に対し、ロボットの角度を誤差±〇〇以内で追従させる(要求性能)
  • 制御中、角度が一時的に振動してもよいが、□□秒以内に振動を収束させる(要求性能)
  • ロボットが生み出せるパワー(トルク)は最大±△△なので、その範囲内で制御する(制約条件)

このように定量的に要件を定めることで、性能の評価手法の選定の指針として使えるわけですね。

要件書を渡す自分「コレがゴールね」ロボット「分かりやすい!」

上記では3点だけを例示しましたが、制御対象が複雑化するにつれて、項目はどんどん増えていくことになります。

特に複数人で開発する場合は、これらをしっかりと共有しておきましょう。不要なすれ違いや手戻りを回避できます。

自分「いい感じに動いてね」同僚「そうそう、いい感じに」ロボット「どんな感じ…!?」
スポンサーリンク

手順2:設計方針の決定

さっきの手順で言うとココ

続いて、具体的に制御システムの構造を考えていきましょう。

制御工学の王道であるモデルベースド制御を実施する場合は、制御対象の数式モデルと、それに基づいた制御器(制御手法)が必要となります。

よってまずは先ほど設定した要件と、既に分かっている制御対象の性質を元に「どんな数式モデルと、どんな制御器を組み合わせるか」を検討しましょう。

数式モデルと制御器が組み合わせって、初めて制御が達成できる

数式モデルと制御器、考える順番はケースバイケースです。

例えば、数式モデルの精度の悪さが問題になりそうな場合は、先にモデリング方法を検討することになるでしょう。そうして実現できた精度に応じて、後からそのモデルを扱える制御器を検討することになります。

数式モデル「ゴメン、頑張ったけど精度悪いわ…」制御器「じゃあそれに合わせた制御をするか…」

また、要求性能が非常に高く、高度な制御手法でないと達成できないことが明らかな場合は、先に使用する制御器を決定し、後からそのために必要な数式モデルを考えることになるでしょう。

制御器「最適制御じゃないと無理じゃない?」数式モデル「じゃあ状態方程式準備しとくね」

いや、でも初心者にはどの制御器がいいとか分からないんですけど…

最初はよく分からなくて当然なので、「とりあえず参考書に載っているこの制御手法を使ってみよう。そのためにはこんな数式モデルが必要らしいから、それを作ろう。」といった感じで全然OKです!

スポンサーリンク

手順3:数式モデリング

さっきの手順で言うとココ

モデリングの概要

次に、制御対象の数式モデルを作成していきましょう。

モデルベースド制御はモデルが命なので、モデリングは今後の運命を左右する非常に重要なステップです。設計者は、制御器設計だけでなくモデリングのセンスも問われるわけですね。

数式モデル「すべての土台になるので、今後の運命は私次第ですよ」設計者「責任重大…」

数式モデルで重要なのは、精度シンプルさのバランスです。ほとんどの場合、これらはトレードオフの関係にあります。

数式モデルの精度とシンプルさはトレードオフの関係にあることがほとんど

バランスのさじ加減は、使用する制御器しだいです。制御器に合わせて、情報を省いたり近似したり予想したりしながら、必要なエッセンスのみを適切に抽出したモデルを作りましょう。

モデリングの方法

ほーん。で、数式モデルは具体的にどうやって作ればいいの?

数式モデルを作るアプローチとしては、以下のものがメジャーです。

  • ホワイトボックスモデリング:既存の物理法則から数式を組み立て、数式モデルとする方法。「第一原理モデリング」とも呼ばれる
物理法則から、数式モデルを作るイメージ図。例えば機械システムなら運動方程式が数式モデルとなる
  • ブラックボックスモデリング:制御対象の動作データからその特徴を抽出し、数式モデルとする方法
動作データを解析し、数式モデルを作るイメージ図
  • グレーボックスモデリング:上記の組み合わせ。ホワイトボックスモデリングで表現しきれなかった部分を、ブラックボックスモデリングでカバーする方法

※上記は大ジャンルに過ぎず、それぞれを実現するための具体的な手法は様々に存在します。ちなみに制御の世界では、モデリング(とその周辺技術)に関する分野のことをシステム同定と呼びます。

実用上は、次のように「まずホワイトボックスモデリングを実施し、必要に応じてグレーボックスモデリングに切り替える」というアプローチを取ることが多いです。

  1. 物理法則を元に、数式モデルの形を決定する
運動方程式から、ロボットの数式モデルの形を決定した図
  1. 作った数式モデルの各種パラメータ(物理定数など)を、実機のスペックや動作データから決定する
ロボットの数式モデルの物理定数を決める
  1. 制御対象の動作を数式モデルから計算(予測)し、その結果を実際の動作データと比較する
数式モデルの計算結果 VS 実際の動作結果
  1. 要求精度が出ていれば次に進み、出ていなければ前の工程に戻って数式モデルを改善する。または、不足分をブラックボックスモデリングする(=グレーボックスモデリングに切り替える)
スポンサーリンク

手順4:制御器の実装

さっきの手順で言うとココ

数式モデルが完成したら、それに基づいて制御器を設計・実装しましょう。

既存の制御器(制御手法)をそのまま適用するだけでもよいですが、目的に応じてオリジナルのカスタマイズを入れてもOKです。そこが腕の見せ所でもあり、楽しいところでもあります。

制御器は機械的なカラクリや電気回路によってアナログ的に実現することもありますが、今どきはコンピュータープログラムを用いてデジタル的に実装することがほとんどです。

PC「頭脳です」ロボット「体です」

手順5:シミュレーション検証

さっきの手順で言うとココ

制御器ができたら、まずはそれをシミュレーション上で動作確認することがほとんどです。「そもそも思うように動作しているか」や、「どのくらいの性能がでそうか」をざっくりと確認しましょう。

不具合が見つかった場合は原因を探り、前の工程に戻って数式モデルや制御器の修正を行います。

いや、でも結局シミュレーションって現実世界を厳密に再現するわけじゃないんでしょ?誤差があるならあんまり意味ないんじゃないの?めんどくさいし…

確かに誤差は必ず入ってしまいますが、そもそも「現実世界のミニチュア版」であるシミュレーション上ですらうまく動作しないなら、現実世界でもうまく動作しない場合がほとんどです。

また、実装したてでなんの調整もしていない制御器はほぼ暴走状態ですので、いちいち実機を動かしていると危険ですし、時間もかかります。

よって、最初はシミュレーション上で効率よく動作確認するのがセオリーです。シミュレーション上では動作条件や制御パラメータの変更が容易ですし、システム内部で何が起きているかを隅々まで確認可能ですからね!

シミュレーションなら全部PCの中で完結!やりたい放題!

ほーん。でもシミュレーションって専用のソフトを買わないといけないんでしょ?そんなの持ってないし…

そうとは限りません。確かに精度を重視して高価なシミュレーションソフトを使うケースもありますが、例えば先ほど作成した制御用の数式モデルをコンピュータで解くだけでも、簡易的なシミュレーションは可能です。

それでは精度が悪すぎる場合は、精度を重視した複雑な数式モデルをシミュレーション用に別途用意する場合もあります。

必要な精度に応じて、シミュレーション方法を選ぶとよいでしょう。

専用のシミュレーションソフト・シミュレーション用の複雑な数式モデル・制御用のシンプルな数式モデル、どれでもシミュレーションはできる
スポンサーリンク

手順6:実機検証

さっきの手順で言うとココ

シミュレーションでいい感じの動作が確認できたら、いよいよ本番環境で動作検証しましょう。

これで当初の要件を満たす性能が出れば開発完了です!もし不具合が見つかれば原因を探り、前の工程に戻って数式モデルや制御器の修正を行いましょう。

ほとんどの実用シーンでは、この工程に最も時間をかけることになるでしょう。実際に装置を動かすと様々な細かい不具合が見つかり、パラメータ調整や制御器のカスタムなど、泥臭い試行錯誤が必要となるためです。

同僚「なんか動作がおかしいぞ?なんで?」自分「さぁ」

解決法は制御対象や制御手法に応じて様々なので、ケースバイケースで臨機応変に対応する必要があります。

えぇ…。制御工学って、数式を使ってスマートに対象を操る学問じゃないの…?

制御のエッセンスはそうなのですが、泥臭い試行錯誤をその場その場で効率よく行うセンスも制御屋さんの重要スキルだったりします。

ベテラン「え、この症状ならプログラムのアソコがおかしいんじゃない?」同僚&自分「マジや…天才か…!(驚愕)」

以上、制御開発の全体像と、その手順についての解説でした!

このページのまとめ
  • 制御開発の標準的な流れは、次の通り
制御開発の標準的な流れ。1.要件定義、2.設計方針の決定、3.数式モデリング、4.制御器の実装、5.シミュレーション検証、6.実機検証
  • 実際の所は、制御目的や制御対象に応じてケースバイケースで臨機応変に対応する

コメント