- 追加された行はこの色です。
- 削除された行はこの色です。
目次
#contents
*ライントレースするロボット [#b256a8af]
#ref(2006a/B3/課題2左/Image0026.jpg,100%)
*メンバー [#o8acc2ee]
竹原 プログラム
#br
荒起 寝てた(後にHP編集等)
#br
村松 ホームページ
*特徴 [#o6a382dd]
●センサーを二つ使い、ライン上を確実にトレースする
右のセンサーがライン上にのったとき左に曲がり、同様に左のセンサーがライン上にのったとき右に曲がり、両方のセンサーがライン上にのっていないときは直進するというもの。センサーの数が2つあることによって、1つのものよりも速い速度でライントレースをすることが可能。
#br
●バンパーで障害物を察知
バンパーを大きくすることによって、範囲が広がり確実に障害物に反応することが可能。
#br
●障害物にあたると反転する
ライントレース中に障害物にあたると少々後退した後、180°回転してあたる前とは逆向きにライントレースを開始する。
*苦労した点 [#u83cd59d]
●センサーが二つなのでプログラムを組むのが大変だった。
if(SENSOR_1>40){OnFwd(OUT_C);OnRev(OUT_A);}
else{OnFwd(OUT_A+OUT_C);}
if(SENSOR_3>40){OnFwd(OUT_A);OnRev(OUT_C);}
else{OnFwd(OUT_A+OUT_C);}
プログラムを作った当初はこのようなプログラムだったのだが、例えば、センサー1がライン上にあるときモーターAを逆回転し曲がるはずなのだが、センサー3が反応しているしていないに関わらずモーターAを正回転させているので、打ち消し合ってしまいうまくいかなかった。当然逆にモーターCについても言える。そこで、センサ−1のプログラムのelse内からはOUT_Cを、センサー3の方からはOUT_Aを削除することによって解決した。
#br
●バンパーで障害物を避けなければいけないことを知らなかったので、急遽作らなければならなかった。
短時間で本体、プログラム共に作り直さなければならなかった。
#br
●ワールドカップ、バイト、テスト等で体がボロボロだった。(ソウマ)
不可抗力です(笑)
*プログラム [#wbe3288c]
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサーを定義
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
while(true)
{
if(SENSOR_1>40){OnFwd(OUT_C);OnRev(OUT_A);} //通常時直進 ラインにあたると進行方向をかえる
else{OnFwd(OUT_A+OUT_C);}
else{OnFwd(OUT_A);}
if(SENSOR_3>40){OnFwd(OUT_A);OnRev(OUT_C);} //通常時直進 ラインにあたると進行方向をかえる
else{OnFwd(OUT_C+OUT_A);}
else{OnFwd(OUT_C);}
until(SENSOR_2 == 1); //タッチセンサーにあたると反転する
OnRev(OUT_A+OUT_C);Wait(100);
OnRev(OUT_A);OnFwd(OUT_C);Wait(195);
}
}
*コメント [#c97142f8]
一言お願いします。
-特長、苦労した点について、もう少し具体的に書くようにしましょう。どのように確実にトレースできるようにしたのか、どんな点が大変だったのか、等を記述すると、読み応えのあるレポートになります。 -- [[ゆき(TA)]] &new{2006-07-07 (金) 15:08:34};
#comment