空き缶を所定の位置に運ぶ
まず、トラックのような車体をつくり、缶を荷台に載せて運ぶタイプを考えた。 しかし、荷台に載せる動作や荷台の安定性などを考えると現実的ではない。
次に、2台のロボットに分け、1台を「とにかく黒い缶を取ってくるロボ」とし、もう一方を「残りを集めて持って行くロボ」としようとした。しかし、完成に近づいたところで高い場所の缶をつかむ機構に問題があったことに気づいたため制作を中断。大幅なタイムロスとなった。
そして、結局2つのRCXを1台のロボに組み込むタイプのロボを制作することになった。 1台のRCXをメインに、もう1台をセンサー専門にし、イン、アウト共にポート数が足りないというRCXの弱点を補おうとした。
時間がなかった(ロボコン本番がはじまってからも、まだやっていた)為、なにもできていません。もうしわけありません。
// モーターの回転方向がおかしくてもプログラム上で // すぐ対応できるよう、マクロ化 // 逆回転だったら、ここを逆にすれば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.
課題3あたりから、4人全員が集まることがなくなりました。たいてい2人だけで、一度3人集まったことがある、といった程度でした。そのため、作戦や方針がまとまらず、ロボット制作の開始が前日の昼から、という事態に陥りました。ただこれについては、みんなの都合がなかなか合わなかったので仕方なかったという気もします。
日時の調整などはスアマが担当していたのですが、試験期間中自分自身がわりとピンチだったりしたために集まろうと提案する回数がとても少なかったことも、時間不足の大きな原因だったと思います。