- 追加された行はこの色です。
- 削除された行はこの色です。
[[2009a]]
*課題2 ライントレースロボットを作る [#qcba8fc1]
A11L ダークホース
#contents
**ロボット [#h779cce3]
***車体 [#p2c45fc8]
車輪は基本的に最初二作ったものに改良を加えたもの。~
最初に作ったロボットはなかなか小回りが利くため今回の課題にはもってこいだった。~
またセンサーを組み込みやすかったため比較的はやくロボットを完成させられた。~
***タッチセンサー [#ibfeb330]
シングルバンパーを作成し、その先にアームを取り付けることにした。~
アームによって牛乳パックをキャッチし、運ぶことにしたがしかし、運ぼうと思っても牛乳パックが出てしまうことに気がつき改良を加えた。G型にすることにより、左旋回では出ないようになった、なので右旋回はできない。
結果、いい感じに牛乳パックをキャッチできるようになった。
***光センサー [#s27b9c2c]
最初はかなり悩んだが、先端につけると重心が前になってしまうためタッチセンサーアームより後ろにつけることにした。
センサー間を狭くすることによって、正確なライントレースが可能になった。
***完成 [#x5e75ece]
完成したがカブトムシになった。なかなかの出来ではないだろうか。
**コース [#td8c7c25]
コース1~
交差点:3~
紙の端や交差点が狭い。
**プロブラム [#ka9d6769]
***1:紙パックをキャッチした後、旋回し元の場所に戻し、また旋回してライントレースに戻る。 [#s1680104]
#define T 40 //闘値を40に設定
#define Run_time 780 //Run_timeを78秒に設定
#define a OUT_A //OUT_Aをaと定義
#define c OUT_C //OUT_Cをcと定義
#define go_s(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //直進
#define go_b(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //後退
#define t_l(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C); //左旋回
#define t_r(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); //右旋回
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサーを1にセットする。
SetSensor(SENSOR_2,SENSOR_TOUCH); //タッチセンサーを2にセットする。
SetSensor(SENSOR_3,SENSOR_LIGHT); //光センサーを3にセットする。
ClearTimer(0);
while(true){ //78秒たったら止まるループ
if(SENSOR_1>T){ //光センサが2個とも白紙上にあるとき、直進
if(SENSOR_3>T){
OnFwd(a+c);
}
else{
if(SENSOR_1>T){ //左だけ白紙上にあるとき、右にターン
OnFwd(a);
Off(c);
}
}
}
else{
if(SENSOR_3>T){ //右だけ白紙上にあるとき、左にターン
OnFwd(c);
Off(a);
}
else{ //両方コース上にあるとき 1.0秒静止し、1.0秒前進する。
Off(a+c);
Wait(100);
OnFwd(a+c);
Wait(100);
}
}
if(SENSOR_2 == 1);
go_s(50);
t_l(90);
go_b(50);
t_l(90);
}
**コメント [#w23da78b]
#comment