前項の二体間通信実験では二体の連結角度が離れていくにつれて
A
が赤外線セ ンサーの受信を受けることが出来なくなった。そのため長時間の通信を維持でき ないことからプログラムを改良し、二つのフォトトランジスタを利用し通信を維 持できるようなプログラムに変更し再度実験を行った。8.1 実験方法
二体間通信実験
2
の方法を以下に示す。前項の二体間通信実験と同様に平面な 床の上に1
台を待機させ、赤外線を後方に送信しながら前進するもう1
台を置き、後方の待機しているロボットが前方機の発する赤外線を二つのフォトトランジス タが受信したときのみ前進し、前方機との隊列が乱れたときは後方機が隊列を組 み直すようにプログラムを組み実験を行う。
図
8.1
二体間通信実験2
8.1.1 二体間通信実験 2 フローチャート
図
8.2
に実験フォローチャートを示す。FRONT(B)
前進赤外線送信
2秒間維持 停止赤外線停止
2秒間維持
BACK(A) 待機
NO 赤外線
赤外線 左受信 赤外線 右受信
全受信
YES
前進 左車輪前進 右車輪停止
右車輪前進 左車輪停止
NO
YES
NO
YES
図
8.2
二体間通信実験2
前述の二体間通信実験プログラムでは通信維持が長時間できないことを受け、こ の二体間通信実験
2
のプログラムでは赤外線センサー受信側のA
の二つのフォト トランジスタを利用し、片側のセンサが受信を遮断した際はその遮断した側のタ イヤのみを前進し、二つのセンサに受信がある状態、すなわち前方機と直線上に 並び直るというプログラムに改良した。以下に二体間通信実験
2
の流れを示す。1.
二体間通信実験と同様の体系をとる。2.
二体が発進する。3.
センサ遮断を感知し、後方機が前方機との体系を維持する(追従する)。という実験を行い検証した。
8.1.2 実験プログラム
以下に改良した待機側後方機のプログラムを示す。
103: void tusin_back(){
104: if(input(LIGHT_SENSE_FRONT_LEFT) == 1 && input(LIGHT_SENSE_FRONT_RIGHT) == 1){
105: ;
106:
107: }else if(input(LIGHT_SENSE_FRONT_LEFT) != 1 && input(LIGHT_SENSE_FRONT_RIGHT) ==
1){
108: while(input(LIGHT_SENSE_FRONT_LEFT) != 1){
109: MITUKO();
110: stop();
111: right_motor_forward();
112: }
113: }else if(input(LIGHT_SENSE_FRONT_LEFT) == 1 && input(LIGHT_SENSE_FRONT_RIGHT) !=
1){
114: while(input(LIGHT_SENSE_FRONT_RIGHT) != 1){
115: MITUKO();
116: stop();
117: left_motor_forward();
118: }
119: }else{
120: SHOUKO();
121: }
122: }
107
行目〜111行目において左側に軌道が外れた際に右タイヤを停止し、軌道修 正を行い、113行目〜117行目において右側に軌道が外れた際に左タイヤを停止し 軌道修正を行う。8.2 結果
以下に二体間通信実験
2
の結果を示す。プログラムを改良し検証した結果、後 方機が軌道を修正して前方機に追従して行くことが可能になった。追従距離は格 段に延び路面が続く限り追従していける事もわかった。この実験結果を受け、1台 のロボットに前方機、後方機として機能するようにプログラムを書き込んだとこ ろ、ロボットの前後を入れ換えても正常に動作した。図