- 追加された行はこの色です。
- 削除された行はこの色です。
[[2010a]]
目次
#contents
*課題2:黒い線に沿って動くロボット [#g2725cd5]
各チームで作成したコースを1周するロボットを製作せよ。交差点以外のコース上に350mlの空の空き缶を2個以上おき、空き缶にぶつかった時には次のような動作するプログラムを作成せよ。(他のメンバーと重ならないように一人一つのプログラムを作成する)
1.空き缶をコース上に戻して再びコースに戻って進む
2.空き缶を次の交差点まで運んで行き、その交差点に空き缶を残してさらにコースに沿って進む
3.奇数回目に空き缶に遭遇したら、その場で反転して進み、偶数回目に遭遇したら、空き缶を押しのけて進む
ただし、
•速さと正確さを追求すること
•コースを1周したら自動的に止まること
•交差点では一時停止すること
*メンバー [#ue4fe1ee]
舩山 蔵
鎌倉 竜馬
*目標 [#l068c647]
より安定なロボットを制作する。
確実に読み取れるロボットを作る。
*ロボットの説明 [#v0653de2]
**一回目の失敗[#wf848ea8]
この構造では、タッチセンサーに当たらないので失敗
#ref(sippai3.jpg)
**二回目の失敗 [#z17539bc]
**工夫した点 [#e351ea2f]
・アームを作る際、車体から大きく外れてアームが飛び出るため強度が小さくなってしまうのでブロックを車体全体で組みバランスをとった。
**問題点 [#c4f8d60b]
・光センサーを二つ使用してライントレースを試みたのだが二つのセンサーで光の感度が異なっていたことである。
・「一回目の失敗」であるようにタッチセンターに空き缶があたらず感知できないという問題が発生。
・直線を進む場合は比較的に想像通りに進むが、カーブでコースアウトする。
・光センサーが思ったよりも高性能であり同じ部屋でないと同じ値にならない。
**問題点から工夫した点 [#wa6e1f5b]
・センサーの高さを揃えずに白い所で同じ値になるような高さに設置した。
・
*船山 蔵のプログラム [#z26896bd]
*鎌倉 竜馬のプログラム [#ydf991de]
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //1のセンサーに光センサーを定義
SetSensor(SENSOR_3,SENSOR_LIGHT); //2のセンサーにタッチセンサーを定義
SetSensor(SENSOR_2,SENSOR_TOUCH); //3のセンサーに光センサーを定義
ClearTimer(0);
while(Timer(0)<=950)
{ //ライントレース開始!
if(SENSOR_1 < 40){OnFwd(OUT_C);OnRev(OUT_A);Wait(4); } //光センサー1が40より小さい値をとると左のタイヤをリバースして左に進路を修正 else if(SENSOR_3 < 40){ OnFwd(OUT_A);OnRev(OUT_C);Wait(4); } //光センサー2が40より小さい値をとると右のタイヤをリバースさせて右に進路を修正
if((SENSOR_1 < 40) && (SENSOR_3 < 40)){Off(OUT_A+OUT_C); Wait(200); //両方のセンサーが40より小さい値を同時にとると交差点に差し掛かったので2秒一時停止
OnFwd(OUT_A+OUT_C);Wait(50);}
else{ OnFwd(OUT_A+OUT_C); Wait(4);} 方向修正が必要ないとき、光センサーがラインを割ってないときは直進
ここより空きかんを使った課題
if(SENSOR_2==1){ Off(OUT_A+OUT_C); Wait(90); //タッチセンサーで空き缶を感知したら一時停止をして
if(SENSOR_1 < 40){OnFwd(OUT_C);OnRev(OUT_A);Wait(4); }
else if(SENSOR_3 < 40){ OnFwd(OUT_A);OnRev(OUT_C);Wait(4); } //空き缶を運びつつライントレース
if((SENSOR_1 < 40) && (SENSOR_3 < 40)){OnFwd(OUT_A+OUT_C);Wait(150); //交差点を感知したら反転したときに空き缶が交差点に来るように前進
Off(OUT_A+OUT_C); Wait(100); //一旦停止
OnFwd(OUT_A);OnRev(OUT_C);Wait(170); //反時計回りに180°
OnRev(OUT_A+OUT_C);Wait(150); //バックして缶を置く
OnFwd(OUT_A);OnRev(OUT_C);Wait(170); // 向きを直して
OnFwd(OUT_A+OUT_C);Wait(10);}
} //ライントレース再開
}
*まとめ [#w922f5f8]
・「if」、「else」をつかったプログラムはなかなか慣れずに思うような動きをするプログラムが組めなかった。
・タッチセンサーを三種類考えた。鎌倉が二つ。船山一つ。鎌倉のは二つとも缶を感知しなかったり、接触しなかったりと最終的に船山の案を採用した。
*コメントをどうぞ [#qe049ebf]
#comment