- 追加された行はこの色です。
- 削除された行はこの色です。
[[2009b]]写真は後日追加します。
#contents
*課題 [#h3dfeb40]
光センサーを使って、ラインをトレース!~
牛乳パックに負けず、安全確実、かつ颯爽と駆け抜けるロボットを作ろう。~
*チーム [#fe1787dc]
-チーム名 「切なさと悲しさとロボティクス」~
~
-メンバー紹介(「」内は課題にかける想い。)~
しんご (農学部) 「穴数えるの大変。」~
なかみう(教育学部)「シンプルがカッコワルいとは言わせない。」~
~
*ロボット [#y7af0333]
ロボットはシンプルに作った。~
この方針は最初から決定していたので、~
ロボットの大きな変更はなかった。~
ただ、パーツの不具合が多く、大変だった。~
*プログラム [#db4d08ee]
**共通のプログラム [#j6f57639]
共通のプログラムを、なかみうが作成した。~
~
共通のプログラムは下の通り。~
~
SetSensor(SENSOR_1, SENSOR_LIGHT); //光センサー(左)
SetSensor(SENSOR_2, SENSOR_LIGHT); //光センサー(右)
if((SENSOR_1 < white) && (SENSOR_2 < white)) //直進
{OnFwd(OUT_A+OUT_C);}
if(SENSOR_1 < 0) //コースから右にそれたときの回復
{OnFwd(OUT_C); Float(OUT_A);}
if(SENSOR_2 < 0) //コースから左にそれたときの回復
{OnFwd(OUT_A); Float(OUT_C);}
if((SENSOR_1 < 0) && (SENSOR_2 < 0)) //交差点での停止&直進
{Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C);}
**オリジナルのプログラム [#n777f084]
共通プログラムのパーツを組み合わせ(改良して)~
オリジナルのプログラムを作った。~
以下は、それぞれのプログラムと、本人による解説。~
***しんごのプログラム [#f2889524]
#define mae(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); 前進させる
#define THRESHOLD 40 閾値
sub CUP() タッチセンサが反応したときの反応
{OnRev(OUT_C); 回転しパックを後ろにおき、自らは反転、レース上に戻ります
OnFwd(OUT_A);Wait(140);
OnRev(OUT_A+OUT_C);Wait(100);
OnRev(OUT_C);
OnFwd(OUT_A); Wait(140);
OnRev(OUT_A+OUT_C);Wait(100);}
task main()
{
#define mae(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); 前進させる
#define THRESHOLD 40 閾値
sub CUP() タッチセンサが反応したときの反応
{OnRev(OUT_C); 回転しパックを後ろにおき、自らは反転、レース上 に戻ります
OnFwd(OUT_A);Wait(140);
OnRev(OUT_A+OUT_C);Wait(100);
OnRev(OUT_C);
OnFwd(OUT_A); Wait(140);
OnRev(OUT_A+OUT_C);Wait(100);}
task main()
{
SetSensor(SENSOR_1, SENSOR_LIGHT); 光センサ
SetSensor(SENSOR_2, SENSOR_TOUCH); タッチセンサ
SetSensor(SENSOR_3, SENSOR_LIGHT); 光センサ
while (true)
{
if (SENSOR_2 == 1)
{CUP();}
if (SENSOR_1 < THRESHOLD)
{OnFwd(OUT_C);
Off(OUT_A);
until (SENSOR_1 > THRESHOLD) ;
}
if (SENSOR_3 < THRESHOLD)
{ OnFwd(OUT_A);
Off(OUT_C);
until (SENSOR_3 > THRESHOLD) ;
}
if (SENSOR_1&& SENSOR_3 < THRESHOLD)
{OnFwd (OUT_A+OUT_C);}
else{OnFwd(OUT_A+OUT_C);
}
}
}
***なかみうのプログラム [#gb976f48]
#define white 40 //光センサーの値。
//これ以下は黒、これ以上は白。
task main()
{
SetSensor(SENSOR_1, SENSOR_LIGHT); //光センサー:左
SetSensor(SENSOR_3, SENSOR_LIGHT); //光センサー:右
int t = 0; //後で使う変数「 t 」
while( t <= 15){ // t が15以内で繰り返す。
while( t <= 15 ){ // t が15以内で繰り返す。
//この t は最後の方にあります!
//直進
if((SENSOR_1 > white) && (SENSOR_3 > white)){
OnFwd(OUT_A+OUT_C);
}
//コースから右にそれた時の処置(左に行きます)
if(SENSOR_1 < white){
OnFwd(OUT_C);
OnRev(OUT_A);
Float(OUT_A+OUT_C); //このFloatは重要。
//Offではうまくいきません
}
//コースから左にそれた時の処置(右に行きます)
if(SENSOR_3 < white){
OnFwd(OUT_A);
OnRev(OUT_C);
Float(OUT_A+OUT_C);
}
//交差点の通行
if((SENSOR_1 < white) && (SENSOR_3 < white)){
t = t + 1; //きました、「 t 」!
Off(OUT_A+OUT_C); //この動作を15回繰り返したら、
Wait(30); //プログラムは終了します
OnFwd(OUT_A+OUT_C);
}
}
}
*コース [#o92cde6a]
コースはA1左グループと共同で作成した。~
衝突もあったが、なんとかまとまった。~
~
完成したコースは、こちら。~
~
~
~
*コメントのコーナー [#t9fe79fd]
#comment