走行体には、さまざまなハード機器が搭載されていますが、ライントレースに必要となるハード機器は「光センサー」「サーボモータ」です。
以下で、それぞれについて簡単に説明します。
光センサーは、光の明暗を感じ取ることができるセンサーのことです。ある物体の表面から反射される光の強さを計測することで、色の違いを観測できます。
サーボモータとは、制御信号によって回転軸の角度や速度を正確にコントロールできるモータのことです(図3)。
ETロボコン2009(もちろん、ETロボコン2010でも)のレギュレーションとして、走行体の「二輪倒立」がありました。走行時に二輪倒立状態を維持するためには、「倒立制御」が必要となりますが、この部分は標準ライブラリとして倒立制御機能が提供されているため、本連載では説明を割愛します。
続いて、光センサーとサーボモータによるライントレースの仕組みを説明したいと思いますが、その前に、簡単な例え話で少し抽象的なイメージを持っていただきたいと思います。
人間に「布の上に描かれた黒線の上を歩行してください」とお願いしたとします。きっと、難なく目で布の上の黒線を見て、判断し、線の上を歩行できると思います。この話を、人間を走行体に、目を光センサーに、判断を何らかの走行制御に、歩行をサーボモータに置き換えるとライントレースのイメージがわくと思います。
さて、ライントレースに対する抽象的なイメージを持ったところで、今度は、上記の話をハードウェア間のやりとりとしてイメージしてみましょう。以下のシーケンス図をご覧ください(図4)。
いかがでしょうか。ここまでの解説で、何となく走行体のライントレースについてイメージできたのではないでしょうか。
上記の説明では、光センサーを用いて、布の上の黒線を判断するとさらっと記述しましたが、実際はそう簡単ではありません。なぜなら、光センサーは布から反射する光の強さ(光量)としてしか色の違いを認識できず、色そのものを認識できないからです。なお、以降、本連載中で光量という場合は、光センサーのAPIを使用して取得する値を指すことにします。
走行体の光センサーで、ETロボコン2009 公式コースで使用されているラインの色を認識した場合、以下のようになります(図5)。
また、人間の目には、布の上の黒線はすべて同じに見えますが、光センサーで認識する場合、黒色と白色の境界付近は、黒色からの光量と白色からの光量が混じり合うため、走行体は灰色に近い光量として認識します。
以下の図6は、実際に光センサーを、黒線をまたぐように移動させたときの光量の変化をグラフ化したものです。黒色の光量と白色の光量が少しずつ混じり合いながら、白色から黒色へ、そして、黒色から白色へと光量が変化するため、なだらかな山なりの曲線を描いていることが分かると思います。
さて、ここまでの説明でライントレースとは“目標とする光量に近づくために、走行制御を用いながら走行体を前進させること”だと理解できたと思います。というわけで、ここからようやく、本連載の本題であるシステム制御について解説したいと思います
Copyright © ITmedia, Inc. All Rights Reserved.