[[2019a/Member]] *課題について [#hfb3148f] **フィールド [#z296350e] #ref(./mission3.png) -フィールドは課題2で使用した紙を使用する。 -生協のお弁当の四角いプラ容器2つをそれぞれ円内に置き、片方に玉を2個入れる。 -残りの2個の玉は課題2と同じ位置に置く。その際、ゴムタイヤやプレートの上に置いてもよい。 -プラ容器には色をつけたり文字や記号を書いてもよい。 -プラ容器は両面テープ等でフィールドに固定してもよい。 -2枚の紙の境界にはそれぞれ幅1cm、合計2cmの黒線を描いてもよい。 **ルール [#vde59d26] AやA'を出発して各点にあるピンポン玉をつかみ,ゴールのプラ容器に入れる.途中でうまく動かなくなった場合、1回限り再スタートすることができる.また,ロボットが、ゴールのプラ容器に触れていてはいけない. *機体について [#k12e8145] #ref(./3.image2.jpeg,50%) ↑制作途中の写真だが,アームの足を平行四辺形のように作り,それを倒すと上についているアームが地面まで届き,ピンポン玉をつかめるようにした.機体を課題2の時より大きくしすぎるとライントレースが上手くいかないと思い,この形にすることで全体的にコンパクトにできた.これによって,ライントレースのサブルーチンやプログラムを課題2と同じものを使えた. #ref(./3.image3.jpeg,50%) ↑アームの中のアップ写真 #ref(./3.image1.jpeg,50%) ↑ピンポン玉を一個つかむごとにゴールまで運んでいると時間がかかるし,うまく動かない可能性も上がると考えた.そこで,アームでピンポン玉をつかみ,上にあげると右につけたピンポン玉を乗せる部分がアームの真下に,90度回ってくるようにした.そしてゴールにつくと,この機構の横につけたモーターを回し,歯車が噛み合いこの機構を支えている二本の棒の後ろの方だけが少し上あがる.この動きでピンポン玉が乗った部分が傾き,乗っていたピンポン玉がプラ容器に入るように作った.そうすることで一度に数個のピンポン玉を運べるようになった. #ref(./e1.jpg,25%) ↑しかし最終的に *メインプログラム [#n0123445] int white_time=30; int black_time=20; #define migisenkai OnFwd(OUT_A); OnFwd(OUT_C); #define usetsu Off(OUT_A); OnFwd(OUT_C); #define chokushin OnRev(OUT_A); OnFwd(OUT_C); #define sasetsu OnRev(OUT_A); Off(OUT_C); #define hidarisenkai OnRev(OUT_A); OnRev(OUT_C); #define koutai OnFwd(OUT_A); OnRev(OUT_C); #define tsukamu 201 #define tomaru 202 sub follow_line2() { SetSensor(SENSOR_2,SENSOR_LIGHT); while(FastTimer(0)<black_time){ if(SENSOR_2<33){ migisenkai }else if((SENSOR_2>=33)&&(SENSOR_2<36)){ usetsu ClearTimer(0); }else if((SENSOR_2>=36)&&(SENSOR_2<40)){ chokushin ClearTimer(0); }else if((SENSOR_2>=40)&&(SENSOR_2<43)){ sasetsu ClearTimer(0); }else if(SENSOR_2>=43){ hidarisenkai ClearTimer(0); } } Off(OUT_AC); Wait(100); ClearTimer(0); } task main(){ SetPower(OUT_AC,7); follow_line2(); follow_line2(); migisenkai Wait(75); Off(OUT_AC); Wait(100); chokushin; Wait(25); Off(OUT_AC); Wait(100); OnRev(OUT_B); Wait(36); Off(OUT_B); Wait(100); migisenkai; Wait(60); Off(OUT_AC); Wait(100); chokushin; Wait(240); Off(OUT_AC); Wait(100); migisenkai; Wait(75); Off(OUT_AC); Wait(100); OnFwd(OUT_B); Wait(50); Off(OUT_B); }