- 追加された行はこの色です。
- 削除された行はこの色です。
[[2006a/A1]]
*課題2:黒い線に沿って動くロボット [#v2b9b732]
黒い線に沿って動くロボットを作成せよ。そして一つの周回コースを2台のロボットが走行すること想定し、以下の2種類のプログラムを作成せよ。
+前方のロボットに接触したら反転して進む
+前方のロボットに接触したらそのロボットを右側から追い抜いて(あるいは避けて通り)、再びライン上に戻って進む
ただし、スピードと確実性をできる限り両立させること。自由課題1も参考に。光センサは2つ使用してよい。
(期限:6月15日)
**今回もがんばりましょう。 [#mbcba84d]
*6月8日 [#da0c3f79]
**試作プログラム1 [#t148dd63]
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) // (1)黒線上にいるとき
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_3 < THRESHOLD) // (3)黒線上にいるとき
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_2==1 )
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(150); //タッチしたら180°反転する
OnFwd(OUT_C);
}
}
}
プログラムはかなり簡単につくった。
実際に動かしたところ結構うまくカーブを曲がることが出来たので、速攻完成かと思ったが、直線のところが無駄の多いうごきになってしまう。
<マシーンの改良…>
自動車と同じでコンパクトにしたほうが小回りが利くと考えて、車輪の幅を6ブロックほど短くした。そして直線では前方に2つつけた光センサーの幅を調整した結果一番近づけたときが無駄が少なくなった。
*6月9日 [#c0e04827]
直線での無駄をなくすために、センサーが両方白いときは直進するプログラムを書いたが、カーブを曲がるときにセンサーが黒い線から両方出てしまうとうまく曲がりきれずに直進してしまった。