[[2019a/Member]] 目次 #contents : * 課題について [#r41f217a] 今回の課題はコースをライントレースをして、4つのピンポン玉を回収して特定の箱の中にボールを入れることです。 #ref(./コース1.png,50%,) * ロボットについて [#u78b29f3] 私たちのロボットは課題2のロボットを主体に作りました。 最初の私たちは前回の課題2のロボットはライントレースがうまくできたのでその上にいろいろな機構を加えていこうと思いました。 #ref(./h1.jpg,10%,) #ref(./b1.jpg,10%,) しかし、前回のロボットをそのまま使っていたけれど掴む機構やピンポン玉を保存する機構などで重くなってしまい動きが思ったように動きませんでした。 なので、課題2の機体をそのまま使うのではなく、白の大きなタイヤに変更しました。 #ref(./e1.jpg,10%,) ピンポン玉をつかむ機構は課題2のものを使いました。 それを上下させる機構は2本の柱を立て、それができるだけ水平に上下するように作りました。 #ref(./c1.jpg,10%,) ピンポン玉を保存する機構はできるだけ軽くすることで、ロボットに取り付けても影響が出にくいようにして、動かすにしても簡単に動かすようにしました。 #ref(./a1.jpg,10%,) しかし、最終的には多くの機構をつけすぎて、一回余分なものを外していくとピンポン玉を保存するところがなくなりました。 私たちはピンポン玉を箱の上に置くと勘違いしていたので上下する機構もはずしてしまいました。 なので最終的にはRISは一つとなりました。 #ref(./e1.jpg,10%,) * プログラミンについて [#w0cfd16c] ライントレースは課題2のを使用しました。 int white_time=30; white_timeはロボットが早く動いてしまったときに曲がりきるまえに別の黒いラインに行ってしまうの防ぐために白がある一定時間以上動かないようにするものです int black_time=20; black timeは黒いラインを曲がるときの時間を調べ止まるためものです #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); O 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 止まるものです。 このfollow lineは課題2のものです 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); } プログラミングがもう間に合わないと時間的にわかったので一つのピンポン玉を回収するプログラムを書きました。 ロボットの位置はAからMに向かって始めました。 task main(){ SetPower(OUT_AC,7); follow_line2(); follow_line2(); ここは2つないと動かないので2つ入れています。 ここはfollow lineが2つないと動かないので2つ入れています。 ここまででKに行きます migisenkai Wait(75); Off(OUT_AC); Wait(100); ここでJに方向転換します chokushin; Wait(25); Off(OUT_AC); Wait(100); ここまでJに行きます 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); ここでボールを離します } 最終的にロボットが大きく変化してしまったためにプログラミングはあまり書けずにおわってしましました。 最後の方にロボットが大きく変化してしまったためにプログラミングはあまり書けずにおわってしましました。 defineも使わずにいました * 最後に [#o7145f3e] 今回の課題3はうまくできませんでした。 失敗した点は 機体の完成が遅くなってしまい、プログラミングが間に合わなかった。 ピンポン玉の置き方を勘違いしていたこと プログラミングの書くのが遅いこと プログラムを試す時間があまり無かったこと など多くありました