- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*課題2 黒い線に沿って動くロボット [#iff70e19]
黒い線に沿って動くロボットを作成する。ただし以下の点に注意すること。
-速さと正確さを追求すること
-交差点で優先側を走っていない場合には、一時停止すること
-前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと
-コースを3周したら自動的に止まること
**ロボット設計 [#h46cb510]
始めは光センサーを一つだけ取り付けたロボットを作成した。早速走るかどうか実験してみたところ、普通に走ることは走るのだが、光センサー一つでは
-交差点にはいる
-衝突する
ということをロボットが認識できないことがわかった。そこで、タッチセンサーと光センサーを一つ増やし、タッチセンサーで衝突を、光センサー2個で交差点を認識させることにした。以下が完成したロボットの写真である。
(ロボットの全体を撮った写真)
**プログラム作成 [#je38350b]
define LINE 42
define TIMER 1000 //3週走る秒数
task main(){
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
SetSensor(SENSOR_3, SENSOR_LIGHT);
ClearTimer(0);
while( Timer(0) <= TIMER ){
if((SENSOR_1 > LINE) && (SENSOR_3 > LINE)){
OnFwd(OUT_A+OUT_C); //白・白だったら前進
}
else if((SENSOR_1 <= LINE) && (SENSOR_3 > LINE)){
Off(OUT_A);
OnFwd(OUT_C); //黒・白だったら左折
}
else if((SENSOR_1 > LINE) &&(SENSOR_3 <= LINE)){
Off(OUT_C);
OnFwd(OUT_A); //白・黒だったら右折
}
else if((SENSOR_1 <= LINE) &&(SENSOR_3 <= LINE)){
Off(OUT_A+OUT_C);
Wait(50);
OnFwd(OUT_A+OUT_C);
Wait(100); //黒・黒だったら一時停止後、前進
}
if(SENSOR_2 == 1){
OnRev(OUT_A+OUT_C);
Wait(30);
Off(OUT_A+OUT_C);
Wait(100); //衝突したら後進して一時停止
}
}
Off(OUT_A+OUT_C);
}
**問題点 [#w5201b4b]
*** [#w85ae9d2]
**苦労・工夫した点 [#u6bc68b2]
**感想 [#wef9c992]