対面している相手の青いBOXの正面で往復運動し、相手の活動を妨害するいやらしいロボット。
スパイボティクス(spybotics,またはspcとも表記されている。ここでは以下スパイと呼称)を使用。
予選時のプログラムはこんな感じ。(プログラム製作・丸山)
#include "spy.nqh" int a; task main() { a=0; OnRev(OUT_A+OUT_B) ;Wait(300); while (true) { if (a<2){ if (SENSOR_1 == 1 ) { PlaySound(SOUND_UP); OnFwd(OUT_A+OUT_B) ; Wait(75); OnRev(OUT_B); Wait(150); OnRev(OUT_A+OUT_B) ; a=a+1; }} else { OnRev(OUT_A+OUT_B) ; Wait(700); OnFwd(OUT_A+OUT_B) ; Wait(700); }} }
ところが予選でスパイが段差を降りるときに転倒。
この結果を踏まえてスパイ本体が改良されたのだが、 それに伴いプログラムも修正する必要が出てきた。
で、上のプログラムがここにアップされていた事に気付かなかったため、 決勝10分前ぐらいに慌ててゼロから作ったスパイ用プログラムがこちら。 (プログラム製作・柳澤)
比べると結構違う…
task main () { OnFwd(OUT_A+OUT_B);Wait(300); // 箱から落ちるまで進む OnRev(OUT_A+OUT_B); until(SENSOR_1 == 1) ; PlaySound(SOUND_CLICK) ; // 音 OnRev(OUT_B); OnFwd(OUT_A); Wait(120); // 向きを90度変える OnRev(OUT_A+OUT_B); until(SENSOR_1 == 1) ; PlaySound(SOUND_CLICK) ; // 音 OnRev(OUT_A); OnFwd(OUT_B); Wait(120); // 向きを90度変える while (true) { if (Timer(0) > 50) { OnRev(OUT_A); OnFwd(OUT_B); Wait(240); // 向きを180度変える ClearTimer(0); // Timer(0) をリセット } OnRev(OUT_A+OUT_B); } }
後で見ると、スパイのプログラムの最初には
#include "spy.nqh"
と書いておけとあったのだが、なくても問題なく動作していた。
決勝戦用スパイの仕上がりは下のような感じに。
なんと、段差を降りるときにひっくり返ることを考慮して、上下さかさまの状態からスタートする仕様なのだ!
これぞ『逆転』の発想!?
・苦労した点 とにかく、SPC本体を何に使ったらいいか見当がつかず、 考えに考えた末妨害ロボットにすることに決定。 (本番では案の定、似たような考えの班が続出していたが。) というのも、こいつはタッチセンサーと光センサーを搭載しているのだが、 その位置が固定されているためにひどく利用しづらいのである。 特に光センサー。本体のおケツに横向きでくっついており、ライントレースには使えないのだ。 ...何度光ファイバーを切断してやろうと思ったことか。 このため、本体頭についたタッチセンサーで衝撃を判断し、相手陣地へ出向かせて、 うろついてもらうのが最も「自分の班を妨害しない」と判断し、この作戦を取った。 次に、タッチセンサーに取り付けたバンパーのためにうまく段差を降りられなかった点。 これについては先にも述べたとおり、 ひっくり返った状態からスタートさせるという非常に斬新なアイデアで解決。 なかなか面白い策だったとメンバーみんなで自負している。 本番であまり目立てなかったのが残念で仕方ない...。