[[2009a]]へ #contents *ロボコン [#w553c1b8] 詳しくは[http://yakushi.shinshu-u.ac.jp/robotics/?2009a%2F%A5%ED%A5%DC%A5%B3%A5%F3 こちら] *ロボコンの構想とか [#h1e55bd4] **概要 [#pf6fa7b1] -母艦を作って、その上に小型機を乗せる。 -牛乳パックの乗っている壁の、一か所だけ低くなっている部分(下図で言うと茶色の部分)まで来たら母艦から小型機を射出 -小型機は壁の向こう側で頑張る **母艦(親機) [#d27c601c] -親機の役目は子機を壁の向こう側まで送り込むことのみ -親機にある程度の高さを持たせて、段差の上に橋を掛ける。その上を子機が渡る **小型機(子機) [#z7700714] -小型機の役目はパックをゴールの枠の中に入れること -腕でパックを掴み、運搬する **フィールド全体図 [#r08eac8a] #ref(2009a/ロボコン/robocon2009a-1.png,100%,フィールド) **構想についての話し合いの場(掲示板) [#rf976d8b] - ロボコンの構想について話し合いの場作ってみた(`・ω・´)ゞ ピシッ! -- [[俺]] &new{2009-07-17 (金) 21:44:44}; - いつか集まりたいと思うけど、みんないつなら大丈夫? -- [[KEI]] &new{2009-07-23 (木) 22:15:10}; - ちなみに俺は7月31日と8月3、4日ならOK -- [[KEI]] &new{2009-07-23 (木) 22:16:40}; - 今のところ7/31〜8/5までは空いてる -- [[俺]] &new{2009-07-24 (金) 15:20:00}; ~(この後、3,4あたりに集まることが決まる) - 母艦がスタート側からパックを子機側に押し出して、子機の上にパックを落とし、運搬するやり方も -- [[俺]] &new{2009-07-24 (金) 17:43:12}; - 日曜はロッカーと教室開いてなかった(´・ω・`) 科学の祭典やってた -- [[俺]] &new{2009-08-02 (日) 09:56:20}; - 月曜日はロボットを大体完成させた。火曜日は主にプログラム -- [[俺]] &new{2009-08-04 (火) 11:11:29}; - 親機のプログラム完成 -- [[俺]] &new{2009-08-04 (火) 17:19:34}; #comment ~~ *全体図 [#q1b56577] **親機 [#e240e1fc] -とにかく子機を壁の向こう側にやることだけを考えた。そのために、余分な部品は極力削った -なおかつ、親機は子機をしっかりと支えられるようにした。 -二枚の板を重ねただけでは縦からの圧力に耐えられないので、その板同士を縦方向に棒で挟む構造を作った。 #ref(2009a/A5/ロボコン/oyaki03.jpg,100%,親機01) -橋を掛けた状態 -前輪を取り外すことで、床との摩擦を少なくした ~~ #ref(2009a/A5/ロボコン/oyaki04.jpg,100%,親機02) -橋をしまった状態 ~~ #ref(2009a/A5/ロボコン/oyaki05.jpg,100%,親機03) -光センサー -タッチセンサーでは動作があまりに不安定なため、光センサーを採用した ~~ #ref(2009a/A5/ロボコン/oyaki06.jpg,100%,親機04) -二機重ねた状態 ~~ #ref(2009a/A5/ロボコン/oyaki07.jpg,100%,親機05) ~ ---- -旋回時に、前輪は左右に動かないので、余計な摩擦がかかってしまう。このため前輪は外した -以下の画像は、前輪を取り外す前の画像 #ref(2009a/A5/ロボコン/oyaki01.jpg,100%,親機改良前01) ~ #ref(2009a/A5/ロボコン/oyaki02.jpg,100%,親機改良前02) **子機 [#i0b7e574] -後ろにタイヤを取り付けることでバランスを取り、重心を後方にもってきた #ref(2009a/A5/ロボコン/koki01.JPG,100%,子機01) ~ #ref(2009a/A5/ロボコン/koki02.JPG,100%,子機02) ~ #ref(2009a/A5/ロボコン/koki03.JPG,100%,子機03) ~ #ref(2009a/A5/ロボコン/koki04.JPG,100%,子機04) ~ #ref(2009a/A5/ロボコン/koki05.JPG,100%,子機05) ~ #ref(2009a/A5/ロボコン/koki06.JPG,100%,子機06) ~ #ref(2009a/A5/ロボコン/koki07.JPG,100%,子機07) -改良前ギア部。輪ゴムを使用していた ~ #ref(2009a/A5/ロボコン/koki08.JPG,100%,子機08) ~ #ref(2009a/A5/ロボコン/koki09.JPG,100%,子機09) ~ #ref(2009a/A5/ロボコン/koki10.JPG,100%,子機10) ~ #ref(2009a/A5/ロボコン/koki11.JPG,100%,子機11) ~ #ref(2009a/A5/ロボコン/koki12.JPG,100%,子機12) -最終的にギア部には輪ゴムの代わりに、空回りするギアを採用した ~ #ref(2009a/A5/ロボコン/koki13.JPG,100%,子機13) -親機と同じように、光センサーで線を辿るようにした。 -タッチセンサーだと、少しの揺れで反応してしまう。それを改善させるための構造を作るのにはそれなりのパーツが必要だが、余りは少なくなる見通しであったため、光センサーを採用した -全体像 *プログラム [#mf257811] **親機 [#x1187374] #define THERESHOLD 40 //闘値 #define KAI_S 100 //回転する秒数 task main () //親機の動作 { int kousa=0; //交差点の数を数える変数 SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1は光学センサー SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3は光学センサー while(GO<1){ if (SENSOR_1>THERESHOLD){ if (SENSOR_3>THERESHOLD){ OnFwd(OUT_A+OUT_C); } else { Off(OUT_C); OnFwd(OUT_A); } } else { if (SENSOR_3>THERESHOLD){ OnFwd(OUT_C); Off(OUT_A); } else { //交差点に突入 kousa=kousa+1; if (kousa==1){ Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); //前進 Wait(30); Off(OUT_A+OUT_C); } if (kousa==2){ OnFwd(OUT_A+OUT_C); //前進 Wait(40); Off(OUT_A+OUT_C); usetsu(); //右折 } if (kousa==3){ OnRev(OUT_A+OUT_C); //後退 Wait(30); Off(OUT_A+OUT_C); usetsu(); //右折 OnFwd(OUT_A+OUT_C); //前進 Wait(145); Off(OUT_A+OUT_C); sasetsu(); //左折 OnFwd(OUT_A+OUT_C); //前進 Wait(50); Off(OUT_A+OUT_C); PlaySound(SOUND_UP) ; //ここまで来たら音で知らせる Wait(500); OnRev(OUT_A+OUT_C); //後退し、橋を回収する Wait(500); Off(OUT_A+OUT_C); } } } } } sub usetsu() //右折 { OnFwd(OUT_A); OnRev(OUT_C); Wait(95); Off(OUT_A+OUT_C); } sub sasetsu() //左折 { OnRev(OUT_A); OnFwd(OUT_C); Wait(KAI_S); Off(OUT_A+OUT_C); } **子機 [#haae400a] #define A OUT_A #define B OUT_B #define C OUT_C task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); Wait(1200); //待機時間 OnFwd(B);Wait(30);OnFwd(A+C);Wait(400);OnRev(B);Off(A+C); Wait(150); //壁を越える OnRev(A+C);Wait(70);Off(A+C);Wait(30);OnFwd(C);OnRev(A);Wait(80);Off(A+C);OnFwd(A+C);Wait(70);Off(A+C);Wait(40); OnRev(A);OnFwd(C);Wait(60);;Off(A+C);OnFwd(A+C);Wait(60);Off(A+C);Wait(20);OnFwd(B);Wait(30);OnRev(A+C);Wait(40);Off(A+C);Wait(30); /パックをつかむ start hanten; //ゴールにいれる。 } task hanten() { OnRev(A);OnFwd(C);Wait(150);Off(A+C);OnFwd(A+C);Wait(200);Off(A+C+B); } *コメントをどうぞ [#a4728fe5] #comment