[[2017a/Member]] 目次 #contents *課題 [#z7e56824] 課題2のコースのある地点に空き缶を置きロボットで缶を集め交差点Tの円の中に積み上げる。高くつみあげると点数が上がる。 詳しくは[[課題3>2017a/Mission3]] *ロボット [#r8c7a2bf] &ref(2017a/Member/Mitsuki/Mission3/IMG_3614.jpg,50%,本体画像1); &ref(2017a/Member/Mitsuki/Mission3/IMG_3620.jpg,50%,本体画像1); 本体の搭載の仕方はセンサーを向かい合わせて前方の本体を移動担当として、後方の本体を缶の積み上げ担当としました。 **移動方法 [#qddd7e1b] &ref(2017a/Member/Mitsuki/Mission3/IMG_3624.jpg,50%,本体画像1); &ref(2017a/Member/Mitsuki/Mission3/IMG_3625.jpg,50%,本体画像1); ロボット前方の左右にタイヤを付け後ろは底が丸くなっている部品で滑るようにしてロボットを支えています。 最初はライントレースするためにこのような構造にしたがライントレースがうまくできなかった。だが、小回りがきく構造だったので移動はスムーズにできました。 **缶の積み方 [#r106d825] &ref(2017a/Member/Mitsuki/Mission3/IMG_3621.jpg,50%,本体画像1); &ref(2017a/Member/Mitsuki/Mission3/IMG_3618.jpg,50%,本体画像1); &ref(2017a/Member/Mitsuki/Mission3/IMG_3619.jpg,50%,本体画像1); &ref(2017a/Member/Mitsuki/Mission3/IMG_3622.jpg,50%,本体画像1); 私たちのロボットは缶をタイヤで挟みエレベーターのように上げるようになっていて、缶の集め方はロボット前方の左右に広がったフレームで集めます。缶を上げるための上と下のタイヤは輪ゴムでつながっており下のタイヤを回すと一緒に回るようになっています。この缶をどこまで上げるかは回転センサーを使い測りちょうどいいところで止められる。 缶を積んだところでタイヤに挟まっているのでここままでは積み上げた缶を離す事ができないので、缶を上げるためのガイドのフレームが前方に飛び出すようにして、積まれた缶をタイヤから外します。 *プログラム [#u593ac65] **ルート [#w259e45c] Aからスタートして、E地点の方向に進みEの缶を上げ、90度回転し、ロボット前方のフレームで缶を集めながらゴールに向かって前進しながら、F.EF間.Tの缶を集めゴールする。 **説明 [#zc040c9e] ライントレースはせずにモーターの回転時間を調整してゴールまで缶を持って行くプログラムになっています。 **移動プログラム [#we0501c2] ライントレースはせずにモーターの回転時間を調整してゴールまで缶を持って行くプログラムになっています。 #define SIGNAL_ARM 1 #define SIGNAL_GO 2 #define senkai_l Wait(50);OnFwd(OUT_C);OnRev(OUT_B);Wait(80);Off(OUT_BC); //右旋回 #define go_forward OnFwd(OUT_BC); //直進 #define go_back OnRev(OUT_BC);Wait(100);Off(OUT_BC); //後退 sub can_catch() //缶の目の前まで進む {go_forward; SendMessage(SIGNAL_ARM); until(Message() == SIGNAL_GO); Off(OUT_BC);} sub tyokushin() //缶を持ち上げてから、右に90°旋回して直進する {go_forward; Wait(370); Off(OUT_BC); SendMessage(SIGNAL_ARM);} sub can_release() //缶をおろして押し出したあと、後退する {until(Message() == SIGNAL_GO); go_back; } task main() { ClearMessage(); can_catch(); senkai_l; ClearMessage(); tyokushin(); can_release(); } **積み上げプログラム [#acbed092] #define SIGNAL_ARM 1 #define SIGNAL_GO 2 #define can_up OnFwd(OUT_A); //缶を上げる #define can_down OnRev(OUT_A);Wait(50);Off(OUT_A); //缶を下げる #define can_push OnFwd(OUT_C);Wait(50);Off(OUT_C); //缶を押し出す sub can_catch() //回転センサーが反応するまで缶を持ち上げる {until(Message() == SIGNAL_ARM); can_up; until(SENSOR_3 < -3); Off(OUT_A); SendMessage(SIGNAL_GO);} sub can_release() //缶を下げて押し出す {until(Message() == SIGNAL_ARM); can_down; Wait(50); can_push; SendMessage(SIGNAL_GO);} task main() { SetSensor(SENSOR_3, SENSOR_ROTATION); ClearMessage(); can_catch(); ClearMessage(); can_release(); } *まとめ [#l0d7b44c] **ロボコンの結果 [#ka3f8102] 缶を二段積みゴールに持って行けました。 基本点:9点 技術点平均:14.3点 合計:23.3点 順位;4位 **感想 [#zba10cea] 本当はライントレースして確実に缶を集めてもっと高得点を取りたかったがこの限られた時間の中で、できることは全部できたと思う。光センサーの使い方やライントレースの条件をうまく設定できなかったのは心残りだが、ロボコンでなかなかいい成績を出すことが出来て良かった。とても大変な課題だったが班で協力して試行錯誤することが出来た。