はじめてのH8マイコン 【ビュート ローバー編】
<第6回(最終回)>スムーズに直角コースを曲がれるようビュート ローバーを改良してみよう


| | コメント(0) | トラックバック(0)

直角コース検出用の光センサ基板をビュート ローバーに取り付ける
 H8マイコン応用編の第17~18回で製作した直角コース検出用の光センサ基板を,写真1に示すようにビュート ローバー(Beauto Rover)に取り付けてみました.

 
p6-1.jpg<写真1>直角コース検出用の光センサ基板を取り付けたビュート ローバー(Beauto Rover)の外観

直角コースを曲がるライントレース・ロボットのプログラムを作成する
 Beauto Builder 2を起動したら,早速プログラムを作成してみましょう.プログラムエリアにアクションブロックを配置したあとで,実行順序に従って矢印で接続します.それでは,具体的にプログラムの作成手順について説明していきましょう.
 H8マイコン応用編の第17回でライントレース・ロボットの動作条件を次のように決定しました.
(A)左前方の光センサがライン上(黒色領域)と検知した場合
   進行方向に対して90度左回転(反時計回り)させる.
(B)右前方の光センサがライン上(黒色領域)と検知した場合
   進行方向に対して90度右回転(時計回り)させる.

 上記の動作条件に従ってプログラムを作成してみましょう.
 ここでは,左前方のセンサを「センサ3」に割り当て,右前方のセンサを「センサ4」に割り当てた場合を考えています.センサの数値はライン上(黒色領域)では大きく500以上に,ライン外(白色領域)では低く100以下に設定されたことを前提にします.センサの数値は実際の使用環境に合わせましょう.
 ここでは,センサの値200より大きければライン上,200以下ならばライン外と判定するようにしました.作成したプログラムを図1に示します.

zu6-1.jpg
<図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)の動きを見てみます.写真は左折コースを曲がっていく例ですが,安定して走行しているようすがわかります.

p6-2a.jpg
<写真2(a)> 直角コース(左折コース)手前までラインに沿って前進しているビュート ローバー(Beauto Rover)


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


p6-2c.jpg
<写真2(c)>モータの過負荷防止のため一時停止してから90度左回転をする

p6-2d.jpg <写真2(d)>左折コースと平行になったらラインに沿って前進を始める


 ラインとレースロボットのプログラムはBeauto Builder 2で作成しましたが,C言語プログラムでも動かすことができます.これ以降については,書籍「はじめてのH8マイコン」に解説が掲載されています。

< Yoshihito Shimada >

トラックバック(0)

このブログ記事を参照しているブログ一覧: はじめてのH8マイコン 【ビュート ローバー編】
<第6回(最終回)>スムーズに直角コースを曲がれるようビュート ローバーを改良してみよう

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/5253

コメントする





このブログ記事について

このページは、yoshidawが2011年2月18日 11:23に書いたブログ記事です。

ひとつ前のブログ記事は「はじめてのH8マイコン 【ビュート ローバー編】<第5回>ビュート ローバーによるライントレース・ロボットを動かしてみよう」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

/*yahoo remove*/