「ELEGOO UNO R3スマートロボットカーV3.0+」でライントレース(自動運転)をやってみた

「ELEGOO UNO R3スマートロボットカーV3.0+」でライントレース(自動運転)をやってみた

前回の記事(「ELEGOO UNO R3スマートロボットカーV3.0+」で障害物回避(自動運転)をやってみた)に引き続き、今回はライントレースカーがどのような仕組みで動いているのか、簡単に説明したいと思います。

1.ライントレース(自動運転)の動作について

自動車業界のトレンドとして、自動運転があります。自動運転にはいくつかレベルがあり、現在はレベル1やレベル2の機能が搭載された車が増えてきています。その内の「車線逸脱防止支援システム(レーンキープアシスト)」の機能を簡素化しておもちゃの車に搭載したのが、今回の作成物です。

2.回路構成

この機能を構成するための主なパーツは下記のとおりです。
これらは、「ELEGOO UNO R3スマートロボットカーV3.0」に含まれています。

  • ライントラッキングモジュール(TCRT5000 ×3個)
  • モータドライバ(L298N)
  • DCモータ4個
  • Arduino-UNO-R3

TCRT5000は、 反射型フォトセンサ(フォトリフレクタ)  という素子で、赤外線LEDを出して、その反射光を検出する機能があります。

実際の車では、車線(白線・黄線)をカメラで認識して、そこから逸脱しないように、タイヤの向きを自動で制御します。もし、車線が認識できない場合は、前方を走行する車をカメラで追従して走行する車も出てきています。(wikipedia:車線逸脱防止支援システム)。今回のキットでは、安価に実現するために、黒線上を走行する仕様とし、黒線をフォトリフレクタで認識して、逸脱しないよう左右のモータ回転を制御します。黒い表面の光反射率は、白い表面の光反射率と異なることを利用しています。 フォトリフレクタの使用数は3個です。1個や2個だと、モータ制御が間に合わずに車線を逸脱しやすく、4個以上になると制御プログラムが複雑になるため、3個を選んだのだと思います。

3.プログラム構成

プログラムの概要は下記の図のとおりです。

  1. 真ん中のセンサが黒線上にある場合、車は直進します。
  2. 真ん中のセンサが黒線から外れており、右側のセンサが黒線上にある場合、 車は左寄りにずれていると判断し、右側に進みます。
  3. 真ん中のセンサと右側のセンサが黒線から外れており、左側ののセンサが黒線上にある場合、 車は右寄りにずれていると判断し、左側に進みます。

プログラムの流れは下記のフローチャートのとおりです。

簡単なアルゴリズムですが、ちゃんとトラッキングして走ってくれます。しかし、ガタガタ走行(愛らしいですが)で急なカーブや黒線がくねくね曲がっていると、脱線して停止してしまいます。より正確なトラッキングをするためには、PID制御などを使用する必要があります。これは高校数学レベルの知識(微分・積分)を理解している必要があります。PID制御については別の機会に記事にしたいと思います。

Arduino番外編カテゴリの最新記事