■直角コース検出用の光センサ基板をビュート ローバーに取り付ける
H8マイコン応用編の第17~18回で製作した直角コース検出用の光センサ基板を,写真1に示すようにビュート ローバー(Beauto Rover)に取り付けてみました.
■直角コースを曲がるライントレース・ロボットのプログラムを作成する
Beauto Builder 2を起動したら,早速プログラムを作成してみましょう.プログラムエリアにアクションブロックを配置したあとで,実行順序に従って矢印で接続します.それでは,具体的にプログラムの作成手順について説明していきましょう.
H8マイコン応用編の第17回でライントレース・ロボットの動作条件を次のように決定しました.
(A)左前方の光センサがライン上(黒色領域)と検知した場合
進行方向に対して90度左回転(反時計回り)させる.
(B)右前方の光センサがライン上(黒色領域)と検知した場合
進行方向に対して90度右回転(時計回り)させる.
上記の動作条件に従ってプログラムを作成してみましょう.
ここでは,左前方のセンサを「センサ3」に割り当て,右前方のセンサを「センサ4」に割り当てた場合を考えています.センサの数値はライン上(黒色領域)では大きく500以上に,ライン外(白色領域)では低く100以下に設定されたことを前提にします.センサの数値は実際の使用環境に合わせましょう.
ここでは,センサの値200より大きければライン上,200以下ならばライン外と判定するようにしました.作成したプログラムを図1に示します.
<図1>直角コースのラインに対応したライントレース・ロボットのプログラム
●プログラムの説明
プログラムの流れとしては,ライン検出用のプログラムの前に直角コースを検出するようにしています.
(1) 「センサ3(左前方)」の状態を読み込む
(2) 左前方の光センサがライン上(センサ3:x>200)に到達した場合,少し前進(位置補正)したあとで一時停止し,90度左回転して一時停止する.
(3) 「センサ4(右前方)」の状態を読み込む
(4) 右前方の光センサがライン上(センサ4:x>200)に到達した場合,少し前進(位置補正)したあとで一時停止し,90度右回転して一時停止する.
以下,ライン検出用のプログラムに移行する
(5)「センサ1(ライン左)」の状態を読み込む
(6)左側の光センサがライン上(センサ1:x>200)の場合は左折モードに移る.モードを変更したら(1)から処理を繰り返す.
(7)「センサ2(ライン右)」の状態を読み込む
(8)右側の光センサがライン上(センサ2:x>200)の場合は右折モードに移る.モードを変更したら(1)から処理を繰り返す.
(9)両方の光センサがライン外(x≦200)の場合は前進モードに移る.モードを変更したら(1)から処理を繰り返す.
●右左折時の少し前進(位置補正)と一時停止の役割について
ライントレース・ロボットを右左折させる場合,プログラム上では,(2)と(4)の個所で,「少し前進(位置補正)したあとで一時停止し,90度左回転/右回転して一時停止する」となっています.
まず少し前進させる役割は,光センサ基板の搭載位置が車軸より前に離れているため,光センサが直角コースを検出してすぐに回転を始めてしまうと,ラインの手前で曲がってしまうからです.そこでライン上まで車軸が到達する時間(ここでは0.9秒)まで前進させています.
また,回転前後で一時停止させる役割はモータの過負荷防止のためです.回転時にはどちらか一方の車軸の回転方向が逆になります(左折時は左車軸が逆回転し,右折時は右車軸が逆回転します).車軸の回転方向を変える前に0.2~0.3秒程度の停止命令を行ってから変更するほうがいいようです.これを怠ると回転方向が変わるときにモータ・ドライバ回路に多くの電流が流れてしまい,余計な負担がかかってしまいます.
■ライントレース・ロボットを動かしてみよう!
それではプログラムを書き込んでライントレース・ロボットを走らせてみましょう.連続写真(写真2)での流れで、ビュート ローバー(Beauto Rover)の動きを見てみます.写真は左折コースを曲がっていく例ですが,安定して走行しているようすがわかります.
<写真2(a)> 直角コース(左折コース)手前までラインに沿って前進しているビュート ローバー(Beauto Rover)

<写真2(b)>左側のセンサが左折コースのラインを検出.車体は車軸が左折のライン上に来るまで前進を続ける(位置補正)

<写真2(c)>モータの過負荷防止のため一時停止してから90度左回転をする
<写真2(d)>左折コースと平行になったらラインに沿って前進を始める
<写真2(d)>左折コースと平行になったらラインに沿って前進を始めるラインとレースロボットのプログラムはBeauto Builder 2で作成しましたが,C言語プログラムでも動かすことができます.これ以降については,書籍「はじめてのH8マイコン」に解説が掲載されています。
< Yoshihito Shimada >


コメントする