#contents *&size(20){''☆ ロ ボ コ ン ☆''}; [#n8e72c7c] **ロボコンの内容 [#r8126c3b] *** 日時・場所 [#r3a22495] :日時| 2009年2月5日(月) 13:30〜 :場所| 10番教室 :予定| --13:00〜13:20 (競技の説明と各係の選出) --13:20〜14:20 (リハーサル) --14:20〜14:40 (調整) --14:40〜15:40 (競技) --15:40〜16:30 (後かたづけ、反省会) //:実施| //-- 〜14:25(リハーサル) //-- 〜14:50(調整) //-- 14:50〜(競技) //-- 16:00〜(延長戦) //-- 16:30〜(後片付け) *** 課題:空き缶運搬ロボット [#qd565657] 空き缶を所定の位置に運ぶ &ref(2008b/ロボコン/robocon2008b-2.png,50%,ロボコンのフィールド平面図); :フィールドの説明 | --フィールドは約160cm×110cm //--1000mlの紙パックは約7.1cm×7.1cm×19.6cm //--ゴールの紙パックには約6cm四方の穴が2箇所開けられている //--ゴールの穴以外の部分は黒で覆われている //--フィールドの長辺の中央部におかれたゴールの紙パックの穴は上を向いている //--フィールドの短辺の中央部におかれたゴールの紙パックの穴は横を向いている //--外側の楕円の長径は128cm、短径は96cm //--内側の8の字の曲線部の曲率半径は24cmで、交差部は直交している --黒い線の太さは約25mm *** ルール [#qd569324] :基本ルール | --4段に積まれた空き缶を運びだし、ゴールに入れる。 --競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。 --2隅のコーナー(30cm四方)からスタートする。 --スタート時のロボットは2個を越えないこと (スタート後はいくつに分裂してもかまわない)。 --開始の合図から5秒以内にRCXのスタートボタンを押す作業を完了すること。 --競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。 --途中でうまく動かなくなった場合、1回限り再スタートすることができる(再スタートの際に別プログラムで起動してよい)。 :基本得点の計算方法| --緑の空き缶を1個ゴールに運べば4点。 --黒い空き缶(最上の空き缶)を運べば8点 --空き缶を場外に出してしまった場合は一個につきマイナス1点。 --半分以上ゴールに入った空き缶だけを得点の対象とする。ただし空き缶がゴールからはみ出している場合は、マイナス1点 :技術点の計算方法| 以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について他の全てのチーム(9チーム+TAor教員)が20点満点で採点し、その平均点を求める。 得点の目安: --空き缶までたどり着く動作 (3点) --空き缶を運ぶ動作 (転がす・掴むなど) (4点) --空き缶をゴールに入れる動作 (2点) --2台以上のロボット、あるいは単体のロボットの場合は2台のRCXの連携の良さ(3点) --自立型のロボットとしての形や動作の美しさ、斬新さ(3点) --その他 (5点) *&size(20){''制作''}; [#lfdc3f20] **作戦 [#yddeb91b] ~まず、トラックのような車体をつくり、缶を荷台に載せて運ぶタイプを考えた。 しかし、荷台に載せる動作や荷台の安定性などを考えると現実的ではない。 ~次に、2台のロボットに分け、1台を「とにかく黒い缶を取ってくるロボ」とし、もう一方を「残りを集めて持って行くロボ」としようとした。しかし、完成に近づいたところで高い場所の缶をつかむ機構に問題があったことに気づいたため制作を中断。大幅なタイムロスとなった。 ~そして、結局2つのRCXを1台のロボに組み込むタイプのロボを制作することになった。 1台のRCXをメインに、もう1台をセンサー専門にし、イン、アウト共にポート数が足りないというRCXの弱点を補おうとした。 #ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2008b/20090205/pict2377_Large.jpg) #ref(http://yakushi.shinshu-u.ac.jp/robotics-photo/2008b/20090205/pict2376_Large.jpg) **プログラム [#h085300b] 時間がなかった(ロボコン本番がはじまってからも、まだやっていた)為、なにもできていません。もうしわけありません。 // モーターの回転方向がおかしくてもプログラム上で // すぐ対応できるよう、マクロ化 // 逆回転だったら、ここを逆にすればOK #define lfow OnFwd(OUT_C); //進行方向右を正回転 #define lrev OnRev(OUT_C); //進行方向右を負回転 #define loff Off(OUT_C); //進行方向右を止める #define rfow OnFwd(OUT_A); //進行方向左を正回転 #define rrev OnRev(OUT_A); //進行方向左を負回転 #define roff Off(OUT_A); //進行方向左を止める //////////////////////////////////////////////////////////// // 回転とかを関数化orサブルーチン化。 sub tokei(){ //時計回りに90°回転 lfow;rrev; Wait(50); loff;roff; }// end tokei. sub hanto(){ //時計回りに90°回転 rfow;lrev; Wait(50); loff;roff; }// end hanto. void drive(int t){ //t秒間前進 lfow;rfow; Wait(t); loff;roff; }// end drive. void back(int t){ //t秒間後退 lrev;rrev; Wait(t); loff;roff; }// end back. sub hndopen(){ //手を開く OnRev(OUT_B); Wait(50); Off(OUT_B); }// end hndopen. sub hndclose(){ //手を閉じる OnFwd(OUT_B); Wait(150); Off(OUT_B); }// end hndopen. //////////////////////////////////////////////////////////// task main (){ drive(300); //スタート地点から進む tokei(); drive(500); //最初の廊下(?)を入口まで進む hanto(); //入口のほうを向く drive(800); //奥まで進む hanto(); //空き缶の部屋を向く drive(200); //空き缶の前に進む tokei(); //手が空き缶のほうを向く hndopen(); //手を開く back(100); //手が空き缶の直前へ進む hndclose(); //手を閉じる PlaySound(SOUND_UP) ;//意味なんてない! back(200); tokei(); back(200); hanto(); back(100); hanto(); back(300); tokei(); back(200); hndopen(); }// end task main. **反省点 [#be31b704] ~課題3あたりから、4人全員が集まることがなくなりました。たいてい2人だけで、一度3人集まったことがある、といった程度でした。そのため、作戦や方針がまとまらず、ロボット制作の開始が前日の昼から、という事態に陥りました。ただこれについては、みんなの都合がなかなか合わなかったので仕方なかったという気もします。 ~日時の調整などはスアマが担当していたのですが、試験期間中自分自身がわりとピンチだったりしたために集まろうと提案する回数がとても少なかったことも、時間不足の大きな原因だったと思います。 **コメント [#hdddbdc6] - コメント欄作り忘れてましたー! -- [[スアマ]] &new{2009-02-12 (木) 21:06:46}; #comment