Arduinoを使ったライントレースカーの実装

2013年8月1日作成

はじめに

前回Arduinoを用いてラジコンを作成したので今回はセンサーにより自立走行するライントレースカーを作成しようと思う。また、前回のノウハウを生かして、無線によりライントレースカーのパラメーターを変更できるようにする。一機目はライントレースカーに関するノウハウが全くないので、とりあえず動くものを作る事が目標になる。ソフト側に関しては無線で操作を可能にする.

ライントレースカーの機能

  • 黒のビニールテープをコースとし、コースをトレースして走行
  • 走行速度やトレーススタート, 停止をPCから無線で操作可能
  • センサーのしきい値等のセッティングをPCから無線で変更可能
  • センサーから得られるデータを無線によりリアルタイムにPCに表示可能

実装の方針

  • ビニールテープの太さの黒い線を認識できるようにする
  • フォトリフレクタを用いて線を認識する
  • フォトダイオードは4つ利用する
  • 比例制御により制御を行い、パラメーターを変更する事で制御量を調整する
  • コマンドを設計する事で、パラメーターの変更を可能にする
  • 車体側からセンサーデータをPCに送信し、表示を行う
  • コントローラー側はJavaにより実装を行う

使用した部品

マイコン部分

センサー


シャーシ

ハード部分の実装

車体はArduino Tankと同様に、タミヤ工作キットを組み合わせ作成した。初めに以下の写真のように作成したが、旋回の際に車輪が空転してしまうため、後ろにボードを追加し、重心を後ろに持って行く事で対応した。なお、マイコン部分はArduino UNOとモーターシールドR3とXBeeシールドを3段重ねにして利用している。バッテリーはエネループを利用した際にもマイコンに5V以上供給できるように、今回は単3電池を6本利用している。
これで一応、空転しなくなった。車体の重心に関しては再度調整する必要があると思う。

ラインセンサー

黒いセンサーが二つのセンサーの間に入った際に、両方のセンサーがぎりぎりで反応するように、センサー位置を調整した。このあたりは、線の認識方法と合わせて検討する必要がある。

プログラム

黒線の位置判定

黒線の判定は、センサーの閾値を設定し、センサーの反応している個数と位置に応じて位置を出力する仕組みになっている。

PC側プログラム

PC側のプログラムからスタート, ストップやスピード、センサーの閾値を無線で設定する事が出来る。

画面例

上記の画面のように様々な設定をPCから無線で行う事が出来る。また、車体の現在の設定やセンサーデータをリアルタイムに表示する事が出来る。

動作確認

以上のようなコースを作成し、線上を走行できている事を確認した。スピードを上げすぎると振動が収まらなくなり脱線してしまう。また、少し急なカーブの際にオーバーシュートしてしまう場合があった。

今回わかった事

  • 車体は駆動輪を中心に旋回する
    • 駆動輪上に重心がないと旋回の際に車輪が空転してしまう
    • 回転軸より前に重量物があると回転の際の抵抗につながる

次なる目標

  • 現在はArduino Uno + モーターシールド + XBeeシールドの3階建てだが、これを1枚の基盤上に実装したい
  • Arduinoベースの基盤を自分で作成したい(ユニバーサル基盤上)
  • 車体のバランスを考え高速走行を可能にしたい
  • より細かく認識ができるセンサーを作りたい
最終更新:2013年08月12日 21:23