フィジカルAIラボ 1.2:PIDと制御周波数――3 つの項を手で計算し、周波数を周期に直す

公開小テストは詳しい解説付き。ログインすると、外乱を含む PID ログの手計算、応答記録からの指標計算、制御周波数の計画書の審査に、解答例と採点基準付きで取り組めます。

この回の動画

ナレーションは AI 合成音声です。 動画の章・文字起こし・出典

文字起こし

文字起こし

知行の問い

箸を一本、手のひらに立てる。倒さないためには、なんで手をずっと動かしてなきゃいけないの?前回は関節の角度を計算しました。今回は制御の話です。ロボットはどうやって、実際の動きを目標にしっかり追いつかせるのでしょうか。たとえば、クルーズコントロール。上り坂で速度が落ちると、アクセルを多めに踏んで、速度を押し戻します。これが、制御器の仕事です。

閉ループ:測る・比べる・動かす

制御の中心にあるのは、一つの輪です。まず今どこにいるかを測り、目標と比べます。どれだけずれているか、それが誤差です。そして、この誤差で、モーターにどれだけ力を出させるかを決めます。大きくずれていれば、力いっぱい追いかける。少しなら、そっと抑えめに。もし測らずに、前もって決めた動きの通りに動くだけなら、それは開ループです。途中で何か乱れがあっても、気づかないし、直しもしません。測りながら直すこの輪を、何度も何度も回す。これをへいループ制御といいます。物理AIが頼りにしているのは、これです。こうした、測りながら直す制御器には、定番のレシピがあります。PIDです。ある研究の推定では、産業界の制御器の九割が、このタイプです。

PIDの三つの味:比例・積分・微分

まずP、つまり比例です。誤差が大きいほど強く押し、小さいほど、やさしく押します。これが主力です。大ざっぱに言えば、インバーターエアコンのサーモスタットは、比例制御に近い動きをします。設定温度から離れているほど、エアコンは強く運転します。近づくと、ひとりでにゆるめます。でもPだけだと、行き過ぎやすいのです。行き過ぎて、引き戻されて、行ったり来たりの振動が、なかなか止まりません。そこでI、積分を加えます。過去の誤差を、少しずつためていきます。どんなに小さな誤差も、見逃しません。アイの役目は、いつもほんの少し足りない、というくせを直すことです。たまったら、その小さなしっぽを埋めます。これを定常偏差と呼びます。最後はD、微分。誤差がどれだけ速く変わっているかを見張ります。目標が近づくと、早めに力をゆるめます。Dはブレーキのようなものです。システムに減衰をかけて、揺れを抑えます。変化が速いほど、強く抑えます。Pが主力、Iがしっぽを埋め、Dがブレーキ。三つを一緒に調整して、はじめて速くて安定します。調整がまずいと、揺れたり、ずれていったりします。そっか、PIDは三つのスイッチじゃなくて、三つの性格なんだ。組み合わせなきゃ!

制御周波数:輪はどれだけ速く回る

PIDをうまく調整できても、まだ一つあります。この輪は、一秒に何回回れるのか。これを制御周波数といいます。もともと不安定なものがあります。たとえば、立てた棒。手を離せば倒れます。休みなく測って、休みなく直さなければなりません。ループの回る速さが遅すぎると、困ったことになります。反応したときには、棒はもう倒れています。目を閉じて運転して、数秒に一度だけ目を開けるようなものです。ループが速く回るほど、すぐに直せて、安定します。風が吹いても、手が震えても、ずれが出る前に、もう直してあります。たとえば、ある力を制御するロボットアームは、メーカーによると、低レベルの制御が毎秒千回。一回ごとに測って、直しています。周波数が追いつかなきゃ、PIDをどんなにうまく調整しても、意味がないんだ!今回のページを開いてください。画面には逆さに立った棒があって、制御器だけが支えています。支えがなければ倒れます。まずPを大きくして、行ったり来たりの振動を見てください。そこにDを少し加えると、揺れが収まります。棒がゆっくり落ち着きます。次にIで、いつも少し足りないしっぽを埋めます。最後に制御周波数を下げて、棒がゆらゆら揺れて、倒れていく様子を見てください。一つ注意です。PIDの調整に、万能の公式はありません。たいていは少しずつ試して見つけます。調整して、反応を見て、また調整する。PIDはシンプルで便利ですが、あなたの機械のことは分かっていません。とても複雑で、部分どうしが干渉し合うシステムには、もっと賢い制御器が必要です。ふりかえりです。ポイントは三つ。一つ、閉じたループ。測って、誤差を比べて、それから動かす。二つ、PIDの三つの味。Pが力を出し、Iが足りない分を埋め、Dがブレーキ。三つ、制御周波数は十分に高く。ループが遅いと、どんなにいいPIDでも安定しません。だから箸を立てるには、ずっと動かすしかないんだ。いつも測って、直して、追いかけてるから!でも直すには、まず正確に測らなきゃ。ロボットは何で世界を感じ取ってるの?また次回!

根拠と出典

九割 · 産業界の制御器の約九割がPIDタイプ(ある研究の推定、総説からの引用) [R] · IntechOpen · Introductory Chapter:PID-Based Industrial Process Control

1 kHz · 力制御ロボットアーム Franka Research 3 の低レベル運動制御の周波数は約1キロヘルツ(毎秒約1000回) [O] · Franka Robotics · Franka Research 3 製品ページ

練習とセルフチェック

小テストは公開で、回答するとすぐ解説が出ます。読み物の練習問題の答えはログイン会員向けです。

図。見出しは「閉ループ:制御周期ごとに一周」。楕円の輪の上に番号付きの丸が四つ(1〜4)あり、時計回りの短い矢印で 1 から 4 へ、そして 1 へ戻るようにつながる。その横の番号付きリストには「1 測る センサーで実際の値を読む」「2 比べる 目標と実際の差が誤差」「3 計算する PIDが誤差から指令を出す」「4 動かす モーターが動き、また測る」とある。
第 1.2 回の閉ループ:測る、比べる、計算する、動かす、そしてまた測る。制御周波数は、この輪が一秒に何回回るかです。くり返し回る輪なので、輪の上の位置は重要度を表しません。出典:フィジカルAIラボ 1.2 動画。 図では動画の「動かす」を PID 計算とモーターの実行の二段階に分けています。

第 1.2 回の動画は「手のひらに立てた箸」の例で三つのことを説明しました。制御は回り続ける輪で、実際を測り、目標と比べて誤差を出し、その誤差で動かします。PID の三つの項にはそれぞれ役目があり、P が主力、I が定常偏差を埋め、D はブレーキの役をします。この輪が一秒に何回回るかが制御周波数で、遅すぎると、どんなにうまく調整した PID でも安定しません。動画は二つの証拠を引用しています。一つは、産業界の制御器の約九割が PID タイプだという、ある総説の章が伝える記述です。もう一つは、力制御ロボットアーム Franka Research 3 のメーカーページの、運動制御は 1 kHz だという記述です。このページはこの回の解説と練習です。文字起こしをくり返すのではなく、まず二つの証拠がそれぞれどこまでを言っているかを整理し、次に架空の数字で PID の出力を 3 ステップ手計算して、積分項が「小さなしっぽ」を埋める様子を見ます。最後に制御周波数を周期に直し、2 回の修正のあいだに架空の棒がどれだけ傾くかを見積もります。全体を通すルールは一つです。数字は、それを示した資料と、その資料が扱う種類のシステムでだけ成り立ちます。

このレッスンの動画、文字起こし、出典はこのページの上部にあります。シーズン全体の構成は講座の概要をご覧ください。前回のフィジカルAIラボ 1.1:座標系と運動学――2 リンクのアームがコップに届く計算を手で追うは、「関節の角度は計算できた。では、モーターはどうやってそこまでしっかり回るのか」という問いで終わりました。このレッスンはその続きです。フィジカルAIラボ 0.3:見る・考える・動く――3 つの周波数をそれぞれのシステムに戻すでは、別の製品ページ(Franka TMR)に載っている FCI の 1 kHz を、ほかの二つの周波数と区別して整理しました。このレッスンが引用するのは Franka Research 3 製品ページの公称値です。その表はくり返さず、ここでは周期への換算の練習にだけ使います。

公開小テストの 5 問には詳しい解説が付いています。ログインすると、三つの練習に取り組めます。外乱を含む架空の PID ログを手計算し、制御器を新しい周波数に移したのに dt を直し忘れた誤りを見つける課題、総説の定義に沿って二つの架空の応答記録から立ち上がり時間、オーバーシュート、整定時間、定常偏差を求める課題、本講座の倒立棒モデルで架空の制御周波数の計画書を審査する課題です。どれにも段階的な解答例、よくある誤り、20 点満点の採点基準が付いています。

1. 二つの証拠と、それぞれの範囲

「九割」は総説の章による伝聞です。動画の数字は、IntechOpen の Introductory Chapter: PID-Based Industrial Process Control に由来します。著者は Mohammad Shamsuzzoha(ノルウェー、Billington Process Technology)と G. Lloyds Raja(インド、National Institute of Technology Patna)です。原文は次のとおりです。

Another study states that about 90% industrial controllers are of PID type [ 2 ] to meet the requirement.

この文を読むときは、次の四点に注意します。

  • 伝聞です。文中の「another study」は参考文献 [2]、O’Dwyer の Handbook of PI and PID Controller Tuning Rules(2009)です。この章はこの割合の数え方を説明しておらず、本講座もその手引書は確認していません。講座の区分では R 級として引用します。
  • プロセス制御の文脈です。この章は冒頭で、PID 制御器は産業制御の調節層で温度、圧力、流量などのプロセス変数を調節するのに使われると述べています。「九割」はこの種の産業用制御器の話で、ロボットの関節の話ではありません。原文にロボットについての割合はありません。
  • 同じ段落に、出典の違う別の数字があります。すぐ前の文は、別の研究が、産業界での PID、高度制御、モデル予測制御の好まれ方を 100:10:1 の比と結論づけたと述べています。これは参考文献 [1]、Kano と Ogawa による日本の化学プロセス制御のアンケート調査(2010)です。二つの数字は別々の資料から来ていて、数えた対象も違うので、一つの結論にまとめることはできません。
  • 使われている割合であって、能力ではありません。この章は PID 方式の限界も挙げています。単位フィードバックの構成は、大きなむだ時間や外乱のある対象には向きません。また章で扱う多くの手法は 1 入力 1 出力のシステムに限られ、多入力多出力(MIMO)のシステムへ広げるには慎重な再設計が必要です。動画は最後に、部分どうしが干渉し合う複雑なシステムにはもっと賢い制御器が必要だと述べています。この章の記述は、それに対応する文献上の背景として読めます。

「1 kHz」はある一つの製品のメーカー公称値です。Franka Research 3 の製品ページの原文は次のとおりです。

High-frequency (1 kHz) motion control with a low-level, high-quality sensor data interface, ideal for motion control research and the development of highly specific behaviors, unachievable with most robots.

同じページによると、この周波数は Franka Control Interface(FCI)のものです。研究者はリアルタイム処理のできる外部 PC で、独自の制御アルゴリズムを 1 kHz で動かせます。オープンソースの C++ インターフェース libfranka を使うと、5 種類のインターフェース(重力・摩擦補償付きの関節トルク、関節位置、関節速度、デカルト空間の姿勢、デカルト空間の速度)でリアルタイムの制御値を 1 kHz で送れ、同時に関節の位置、速度、トルクセンサーの信号などの測定値を 1 kHz で受け取れます。ここから読み取れるのは次のことです。

  • 1 kHz はこの製品の外部制御インターフェースの公称周波数で、O 級のメーカー自身の説明です。本サイトの測定ではありません。アーム内部のより低いレベルのループの周波数は、ページに書かれていません。
  • 「unachievable with most robots」はメーカー自身による比較で、比較のデータは示されていません。
  • このアームが 1 ms に 1 回の間隔で指令と測定値をやり取りできることは示していますが、PID を 1 kHz で動かさなければならないことも、ほかのアームの周波数も示していません。ループにどれだけの速さが必要かは、制御する対象そのものがどれだけ速く変化するかで決まります。第 4 節で架空の数字を使って計算します。

制約と注意点

  • IntechOpen の Introductory Chapter: PID-Based Industrial Process Control は R 級として引用しています。「約 90%」は O’Dwyer の手引書 [2] からの伝聞、「100:10:1」は Kano と Ogawa による日本の化学プロセス制御の調査 [1] からの伝聞です。本講座はどちらの原典も確認しておらず、その数え方も分かりません。どちらの数字も文脈は産業のプロセス制御です。
  • Franka Research 3 の 1 kHz の運動制御、FCI と libfranka のインターフェースの説明は、いずれもメーカーの製品ページによるもので、O 級のメーカー自身の説明です。本サイトは独自に確認していません。「unachievable with most robots」はメーカー自身による比較です。
  • 第 2 節から第 4 節の目標角、測定値、ゲイン、棒の長さ、最初の傾きは練習用の仮定で、動画の実験ページや実在するシステムのパラメータではありません。第 2 節の式は離散 PID の書き方の一つで、「最初のステップの D は 0」はこの例の約束です。
  • 第 4 節のモデルは、棒を固定した支点の上の先端の質点とみなし、小角度の線形近似だけを使い、測定と測定のあいだには修正がまったくないと仮定しています。制御器が周期のあいだ保持する指令、遅れ、ノイズ、モーターの能力は考えておらず、安定性の解析ではありません。
  • 第 5 節の記録表は講座からの提案です。本講座は動画の実験ページの実装を確認していません。
  • 第 6 節の関節、ゲイン、測定値、移植の状況、記録 A〜C、チームメイトの発言、チーム W、二本の棒、20 Hz のカメラ、200 Hz のループ、30 ms の遅れ、計画書の文 M1〜M3 は、すべて練習用の架空のものです。−0.08、1.90、0.4 s、0.6 s、25%、1.5%、約 1.063°、約 1.57°、約 1.13° などの結果は、これらの仮定の下でだけ成り立ちます。課題 1 の往復についての記述は PID の役割分担からの推論で、シミュレーションの結果ではありません。課題 1 の応用課題は本講座の式での計算を示すだけで、実際の実装がノイズをどう扱うかには触れていません。
  • 立ち上がり時間と整定時間の定義は総説によるものです。オーバーシュートの百分率の計算、サンプル点の読み方の決まり、課題 3 で遅れを間隔に含める扱いは本講座の約束です。課題 3 の書き直しの提案は講座からの提案で、どの資料の結論でもありません。紙の上の計算、実験ページ、シミュレーションは、どれもハードウェアの安全性の検証ではありません。

リンク