参加者間の質問コーナーでは、会場に張り出されていた各チームのモデル図を見て疑問に思ったことや詳しく聞いてみたいことをアンケート用紙に記入し、その用紙を基に数々の疑問が解決されていく。
2日目のワークショップでは、走行部門で見事2位入賞を果たした「都立砂川高校」に対して、同じく高校生チームの「埼玉県立熊谷工業高校」の2人(前回ご紹介した2人)がUMLモデリングをどのように勉強したのかという質問や、独自のシミュレーションツールを開発したInfiniteLoopへの質問があった。
そして、3日目に最も多くのチームから出たのが次の質問だ。
Q.:PID制御って何ですか?これをやると、どれくらい精度が上がるのですか?
前回紹介した「こがっ2」のインタビューでも出てきたPID制御。そもそもこれはロボコン固有の制御技術ではなく、幅広い業界で使われているフィードバック制御技術の1つである。メカトロニクスなど、大学では制御工学などの分野で学ぶことが多い。理論としては、光センサの偏差に対し、その偏差量または偏差の積分にP(比例)やI(積分)やD(微分)を掛けて制御を行うといったものだ。
PID制御を取り入れたGALAPAGOSは、「PID制御は今年から取り入れたのですが、効果は正直ここまで!? というくらいの効果がありました。というのも、去年大会では終始ジグザグ走行で完走が1回だけだったのですが、それが今年はラインに沿って走行し、数値的にも安定しました」と、PID制御のメリットについて語った。
PID制御については技能審査団からもコメントがあり、ETロボコンでPID制御を用いる場合に考えなくてはならない3つの難点について説明が行われた。
例えば目標地点が黒と白のエッジだとすると、目標値は光センサの値ということになる。光センサの値は黒と白の反射の値だが、それをロボコンのステアリング制御という観点で見ると、狙った所にステアリングを切り替える際にズレが生じてしまう。従ってそれを合わせるために、ステアリングの角度のズレを光センサの値という物差しで測る必要がある。PID制御を成り立たせる大前提として、光センサの値のズレ量、ステアリングの角度、この関係を比例的に求めておく必要があり、これはPID制御の入力源といわれる大本である。
ETロボコンで使用されるモーターの最大出力は255Wだが、最終的にPID制御で得た値に、それに応じた力が出ているかどうか、そこが重要となる。求め方はまずモーターの回転数を見て、回転トルクとモーターの出力値の関係を求める。もし比例でなかったら、変換式を作らなくてはならない。
D(微分:時間当たりの変化量、つまりここではステアリングの変化速度)を測るに当たり、PID処理を行うプログラムが毎回同じ周期で動いていなくてはならない。ロボコンでプログラムを作る手法は多々あるが、例えばmain関数でループを回しているときのif elseの処理によっては、プログラムのステアリング制御の部分の周期がずれてしまうこともある(俗にいう無限ループ地獄に陥ってしまう)。今回成功していたチームはそこの部分をうまく処理することで、決まった周期で照合を制御していた。
この3つの前提がしっかりとあり、ゲインを合わせることができればある程度の応答性は求めることができるという。
イメージとしては、最初にP制御で変化量に応じたゲインを掛けていき、低速で合わせる。徐々にゲインを上げ、スピードを上げていくと首を振ってしまうので、D制御で応答性を合わせる。ここで少し余談だが、実はETロボコンにはI制御はあまり関係ないという説もある。I制御は止まっているものに対し力を加えて、目標地点にピシッと合わせる制御方法。誤差を積分することで力を出している。よって常に対象物が動いているETロボコンはピシッと合わせる前に相手が動いてしまうのであまり意味がない。つまりETロボコンでいうPID制御とは、まずP制御で目標の位置に止まるようにし、D制御でその動作を高速にするということである。
次回は引き続きモデルワークショップの内容から、分かりやすいクラス図の描き方をご紹介! 来年参加予定の方も必見だ。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.