ロボコンの種目の一つであるライントレースロボットの製作です。ただ、ロボコン仕様で本格的に取り組むとなると、どれもある程度の場所を必要とするため、一般の電子工作のように誰でも手軽にというわけにはいかないようです。ライントレーサも例外ではなく、特に日本の一般家庭では十分な広さのテストコースの確保が難しいのが現状です。
そこで、どこでも手軽に楽しめるように小型化して卓上サイズのライントレーサとしてみました。コースの作成はA3用紙にプリントするだけという手軽さなので、床が確保できなくてもキーボードを除ける程度で十分OKです。それではコーヒーでもすすりながらのんびりいきましょー :-)
ライントレースロボット(line following robot)は、ロボットコンテストの種目として古くからあるもので、床に描かれた曲線(コース)を周回するタイムを競うのものです。基本的なプロセスは次の通り。
ラインスタイルには、白ラインと黒ラインの2通りがあります。国内のロボコンでは白ラインが主流のようですが、海外では黒ラインが多いようです。ライン幅は15〜25mm程度です。
右のIMGに製作したライントレーサの裏面と側面を示します。全てのメカ部品と電子部品はユニバーサル基板のシャーシにマウントしました。
このライントレーサの場合、2個の動輪と1個の従輪による三点支持としています。動輪は車体の左右に配置され、その回転を個別に制御することによって走行・旋回する、走るロボットとして最も一般的な形式です。この方式はステアリング機構が不要で小回りがきくという利点があります。従輪は車体の動きに合わせて自由に向きが変わるキャスターのようなもので、しばしばスライダで置き換えられることがあります。動輪は7mmベアリングにタイヤを履かせた物で、従輪は5mmベアリングを自由に向きを変えるようにラフマウントしたものです。
動力源は、2個の振動モータで、モータのシャフトを板バネでタイヤに押しつけて動力を動輪に伝えます。
| コントローラ | ATmega8 (Atmel) |
| ラインセンサ | 反射式フォトセンサ ×6 |
| 電源 | CR2032リチウム電池 ×2 (コントローラ用+モータ用) |
| モータ | φ5mmマイクロモータ ×2 |
| サイズ | 45(L), 33(W), 12.5(H) [mm] |
| 質量 | 15g (本体:8g/電池:7g) |
| 性能 | 53cm/秒 (A3楕円コース) |
コントローラとしてATmega8を使用しています。コントローラ部と動力部の電源を分けているのは、モータの始動電流による電圧ディップでマイコンのBODが作動したりセンサが不安定になるのを防ぐためです。コントローラ部の電源電圧を安定化できるなら電源は共通にしても同じです。ラインセンサは、6個の反射型フォトセンサをシャーシの前縁に横に並べてあり、それぞれの直下の床面の反射率を測定します。モータは比較的低い周期のPWM駆動により、回転速度がリニアに制御されます。
辿るラインを検出するため、多くの場合2個かそれ以上の数の反射型フォトセンサが使われます。センサは床面の反射率に比例した電流を出力し、抵抗でI-V変換されたあとA/Dコンバータやコンパレータ等の判定回路で処理されます。しかし、センサ出力はLED投光によるものだけではなく、右の図のように環境光の影響を受けるので、判定レベルを固定にすると外乱に弱いセンサ回路になってしまいます。
外乱の影響を除去するため、産業用のセンサモジュールでは光源に変調をかけて使用するのが普通です。そのようにすれば、受光側でBPFを通して変調成分(LED光)だけ選り分けることができるのです。もちろん、センサ出力が飽和してしまうような強い外乱光には対応できないので、そのような環境では別の対策も必要です。
この回路の場合は、環境光をキャンセルするため右の図のようにパルス光を使用しています。この場合、LEDがOFFからONに移行する前後のセンサ出力の差が純粋なLEDによる光電流となります。いわゆる同期検波ですが、隣接センサの投光器からの影響を排除するため各センサを順にスキャンするにはこの方が好都合ですし、またマイコンによる制御に適しているといえます。
右の図に実際のライン位置とセンサ出力から算出されたライン位置の対応を示します。内部的には、±12.5mmのライン位置がセンタ値640の0〜1280の範囲の値で得られています。処理的には、白い部分の出力レベルを基準に黒ラインに近い2個のセンサの出力比で算出しているだけです。
一般的にセンサの感度にはある程度のバラツキがあります。特に光センサはバラツキが大きいようで、今回のようにリニア領域で使う場合は無視できません。このバラツキを補償するため、各センサをトリマで調整するかコントローラ側で補正係数を持つ必要があります。この回路では、基準(白紙)を入力しておいてオンラインコマンド一発でセンサの校正が済むようにしています。
得られたライン位置はセンター値と比較され、その誤差分に応じた操舵をすることによりラインに追従するサーボ制御が行われます(右図)。サーボ性能を向上するため、一般的に誤差分の処理にPIDフィルタ等の各種サーボアルゴリズムの処理が加えられます。
P(比例)項目は単純な帰還ゲインを設定する最も重要で基本的な項目で、他の項目はそれを補助する為のオマケといった感じです。I(積分)項目は定常誤差をキャンセルするための処理です。P項目だけでは制御が釣り合うために一定の誤差が必要ですが、これが問題になるとき誤差を積分(つまりDCゲインを∞にする)して定常誤差がゼロになるようにします。積分は位相の遅れを伴うので、制御対象の特性によっては系が不安定になるなど、なかなか気むずかしい項目です。D(微分)項目は外乱や目標値の変更などに対する追従性能を向上させるため、急な誤差の変化に対してカウンターを当てる処理です。微分は進み位相制御なので、制御対象の時定数の影響が大きいときに有効です。
ラインの終了やコースアウト等で入力が途切れるなど何らかの異常が発生した時は、異常動作を防ぐためシステムを停止する必要があります。本機の場合、一定時間有効入力が無い場合は、動作を停止してゼロパワー状態に入るようにして電源SWを省いています。
