連載
» 2010年04月21日 00時00分 UPDATE

ETロボコンではじめるシステム制御(2):オンオフ制御によるライントレースに挑戦 (1/2)

最初のステップとして、イメージしやすく、比較的取り組みやすい「オンオフ制御」によるライントレースにチャレンジしよう!!

[柏崎 真司(永和システムマネジメント),@IT MONOist]

 前回「目指せETロボコン!! ライントレースとシステム制御」で触れたとおり、わたしたちは「教育用レゴ マインドストームNXT(以下、走行体)」のライントレースのための走行制御として、「オンオフ制御」と「PID制御」を取り入れることにしました。

 とはいえ、システム制御になじみのなかったわたしたちが、いきなり両方を取り入れるのはさすがにハードルが高かったため、最初のステップとして、イメージしやすく、比較的取り組みやすいオンオフ制御についてチャレンジすることにしました。

 今回は、わたしたちが走行制御としてオンオフ制御を取り入れ、実際に走行体を走行させるまでの過程を紹介していきます。

 早速、本題に移りたいところですが、その前にライントレースについてもう少し詳しく説明しておきたいと思います。

ライントレースについて

 前回、「目標とする光量に近づくために、走行制御を用いながら、走行体を前進させることが、走行体のライントレースである」と定義しました。文章としては、何となく理解していただけたと思いますが、実際に動作としてイメージすることは難しかったのではないでしょうか。ここでは、ライントレースを動作として、しっかりとイメージしていただきたいと思います。

 走行体のライントレースには、「エッジ」というキーワードが欠かせません。わたしたちの普段の会話の中では、以下のように使っています。

え〜っと。新しいロジックを試してみたいんだけど、いまの設定は右エッジ? 左エッジ?


あっ!! 走行体がコースアウトしちゃった。エッジを間違えたからだ……。


 いかがでしょうか? 上記の会話だけでも、ずいぶんとイメージできたのではないでしょうか。走行体のライントレースは、線上を走行するといっても、線の中心を走行するのではなく、“左右どちらか片側のエッジを走行”しています(図1)。

右エッジ走行図のイメージ 図1 右エッジ走行図のイメージ

 エッジを固定するのは、走行制御を容易にするという目的のためです。つまり、ライントレースでは、走行制御を用いながら目標とする光量へと近づけていきますが、エッジを固定することで、目標とする光量へと近づく方向は常に一定となり、走行制御が容易になります。

 右側から近づく場合は「右エッジ走行」、左側から近づく場合は「左エッジ走行」となります。さらに、この考えを基にした走行手法の1つに「エッジ切り替え(例えば、走行中に右エッジ走行から左エッジ走行へと切り替える)」という手法が存在します(図2)。

エッジ切り替え走行図 図2 エッジ切り替え走行図

 さて、ここまでの説明で走行体のライントレースについて具体的なイメージを持っていただけたかと思います。ここからは、いよいよオンオフ制御を用いて走行体を走らせていきます。なお、今回のオンオフ制御を用いたライントレースは、特に断りがない限り、すべて右エッジ走行を前提として進めていきます。

オンオフ制御について

 それでは、ここからオンオフ制御について説明していきます。

 前回、ヒータを例に「開ループ制御」について説明しましたが、まずは、これを走行体のライントレースとして置き換えてみましょう(表1)。

ヒータ 走行体のライントレース
設定温度25度 目標とする光量680(注1)
室温 光センサーから取得した光量
ヒータが動作 走行体が左旋回
ヒータが停止 走行体が右旋回
表1 走行体のライントレースでの開ループ制御

※注1:目標とする光量は、走行体が走行する環境により異なることに注意してください。


 具体的には、走行体の目標とする光量を「680」にすることをイメージしてください。光センサーから取得した光量が680を超えるまで、走行体は左に旋回し続け、光センサーから取得した光量が680を超えると走行体は右に旋回します。そして、光センサーから取得した光量が680よりも下がると、再び走行体は左に旋回します。

 いかがでしょうか。このままコーディングすれば、オンオフ制御を用いてNXTを走行させることができそうな気がしますよね。確かに、このままでもオンオフ制御の一側面としては間違いではありませんし、走行させることもできます。ただし、実際に、制御技術としてオンオフ制御を採用する場合には、目標値のみのオンオフ切り替えは、切り替えが頻発するため通常は行いません。

 通常は“オンオフ領域をオーバーラップさせる”ことで、オンオフ切り替えの頻発を防ぎます。このオーバーラップさせた領域のことを「動作隙間(すきま)」といいます(図3)。

オンオフ制御(ライントレースの場合) 図3 オンオフ制御(ライントレースの場合)

 この動作隙間の幅は、制御対象により異なります。ここからは、実際に走行体を動かし、動作隙間の変化により走行体の走行がどのように変化していくのかを見ていきたいと思います。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.