前編では大会一日目までの話を書いたが、1勝2分けの好発進で2日目のCompilationErrorとの試合で引き分けに持ち込めれば得失点差で決勝リーグに進めることがわかっていた。
4/28 (大会2日目)
朝
今日は決勝リーグ進出がかかった大切な試合!
”Keep programming!”
”Programmer, never sleep”
-
午前2時:4/28 by HansRobo · Pull Request #332 · ibis-ssl/crane · GitHub
- 1日目に修正した変更をマージ
- ZJUNLict戦でのPK戦不具合の修正
- 午前4時:
StealBallスキルの復活 by HansRobo · Pull Request #337 · ibis-ssl/crane · GitHub
- エラーを吐いていて使っていなかった相手のボールを奪う動きのバグを修正
- 結局GitHubCopilotの出力したコードをそのまま使ったのがバグの原因だった
- 午前5時:
SimpleKickoff実装 by HansRobo · Pull Request #338 · ibis-ssl/crane · GitHub
- 1日目にキックオフの動きがおかしかったのでシンプルなものに変更した
- 午前6時:
ボール先回り by HansRobo · Pull Request #339 · ibis-ssl/crane · GitHub
- フィールド外に出そうなボールの先回りをするプログラムを実装
ホテルの朝ご飯が始まった瞬間に凸して会場出発までの時間を睡眠にあてた。
アドレナリンで眠くはないが流石に寝ないと死んでしまう。
CompilationError
実は前日にチームリーダーのお兄さんと仲良くなっていたCompilationErrorとの対戦。ここで引き分けに持ち込めれば決勝リーグに進出できる。
絶対勝ちたいと思う一方で、勝ち進めると4徹目が確定するので流石にちょっと...という気持ちもあった。
流石ZJUNLictに勝ったことのあるチームだけあって、試合中のボール支配率はCompilationErrorの圧勝で、きれいなパス回しを見せていた。
一方で、ibisのデフェンスもよく動き、徹底的なマンツーマンマークとゴール前の壁の構築でシュートチャンスをよく潰していた。
しかし、前半終了間際に遂にibisは初失点を喫する。
それもディフェンスに戻ってきた味方ロボットが押し込むカタチのオウンゴールで....
せめてバシッと決められたかった...
一方で、色々とこれまで調整してきた甲斐があって、実装した動きが思い通りに動いている場面も多く見られた試合になった。
徹夜で実装したボールの先回りは、割とうまく動いていたようだ。
また、ゴール前でのパスを検知したらパス先のロボットを特定した上で守備に回る、という動きをゴールキーパーに入れていたのだが、この試合中にその動きを実際に見ることができた。
動画を見ても「ボールを追いかけているだけじゃん」とピンと来ない人もいると思うが、ボールとほぼ同じ速度でゴールキーパーが動く、という動作はボールを追いかけているだけでは絶対に実現できないものなのだ。大会サーバー側での認識遅れ・AI内での遅れ・ロボット側での司令を受けてから動き出すまでのハードウェア的な遅延を考えると、どうしてもボールに対して1テンポ・2テンポ遅れてしまうのが現実だ。
結局、動画では相手のシュートが外れる形で終わるが、これもゴールキーパーが圧をかけていてミスを誘った結果だとも解釈できるので狙い通りではある。
ところどころ良い動きを見せたものの、結局試合状態は変わらず、0-1で敗北に終わってしまう。
若干の悔しさはあるものの、やれることは全部やって今のibisの全力が出し切れていたこと、SSL未経験者チームの初出場にしては十分すぎるほどの試合結果だったこと、そして何よりようやく寝れることもあって安堵の気持ちが大きかった。
試合後、CompilationErrorのお兄さんと健闘を称え合ったあと、お兄さんがドリブラの構造や調整シーンを見せてくれた。
ドリブラの後ろにはバネやダンパがあるわけではなく、スポンジが配置されていて衝撃を吸収しているらしい。
このスポンジをハサミでカットして入念に調整を行うようだ。どうやら日本のフィールドは海外のフィールドと比べて摩擦係数が違うのかかなり調整には苦労したよう。
強いドリブラの秘訣の一つは、F1マシンのタイヤのようにドリブラを超高速回転させることで摩擦熱でドリブルバーのラバーを溶かして粘着させることにあるんだとか....なんじゃそりゃ.........
道理でドリブルするときの音が全然違ったわけだ....
審判3
すべてを終えたので、メンバーには寝てと言われたがアドレナリンがバシバシで眠くなかった。
審判関連の仕事は他のメンバーがやってくれた。
ロボコン時代の同期と後輩が来ていたので久々に立ち話をしていた。
審判4
Roots vs KIKSの試合の主審を担当した。
正直あまり記憶が残っていないので多分問題なく進んだのだろう。
4/29 (大会3日目)
大会期間内初めてのまともな睡眠!
気持ちの良い目覚め!
軽い心!
スッキリとした頭!!!
審判5
主審担当。
この日ある決勝戦と3位決定戦はibisとRootsさんが審判担当になっていたが、初出場のチームに決勝戦の主審は酷だということでRootsさんが先に決勝戦の審判に立候補して頂いたようだ。
ありがたい限りである。
3位決定戦は中国チーム同士の対決なのでコミュニケーションは英語。
大会結果
決勝までが終わり、
1. RoboDragons
2. KIKS
3. ZJUNLict
4. Compilation Error
という結果になった。
ibisは順位こそ出ていないものの、5位か6位くらいだと思うのでよくやったと思う。
練習試合(Roots)
全試合終わったあとの時間は練習時間に当てられるのだが、迷わずRootsさんに練習試合の対戦をお願いした。
ibisのAIであるcraneはRootsさんが公開しているconsai系ソフトウェアにめちゃめちゃお世話になっており、Rootsさんのソフトウェアを見てSSLを学んだと言っても過言ではない。
リーグが違って対戦が叶わなかったので、日頃の感謝を込めた正拳突きである。
なぜか、ibisのAIが大会サーバーからの司令を受け取れず、かなりグダグダになってしまった。(大会中に発生しなくて良かった.....)
この試合でもゴール前パスに反応するゴールキーパーを見ることができた。
この場面ではパスに失敗しているが、他の試合を見ている感じではRootsさんのゴール前のパスは昔よりかなり洗練されて来ている印象なのであとでソースコードを見て勉強させてもらおうと思う。
練習試合(KIKS)
光栄なことに、KIKSさんから練習試合のお誘いを頂いた。
時間は1枠しかないのでRootsさんとの練習試合を早めに切り上げて後半はKIKSさんとの練習試合にあてた。
相変わらずibisのAIの不調が続き、グダグダな試合進行。
中でも嬉しかったのは以下の場面。少しズルい状況からスタートするのだが、両チームインプレイの状態でゴールの端を狙ってゴールを決めることに成功する。
もちろん、これはあくまでも不公平な状態からスタートしているので現状の実力を反映したものではないのだが、それでもこの状況でしっかりゴールを決められることが確認できた意義は大きかった。
来年の大会では正々堂々、正式なゴールを決めにいくぞ!
最後に
チーム結成から6年弱、出場までにコロナの影響を受けたり、研究で忙しくて全く進捗が出なかったり、そもそもあまりSSLに対してモチベがなかった期間もあった。
それでも、こうして大会出場に漕ぎ着けることができて本当に嬉しい。
大会期間中は本当に楽しくて、身体的にはかなり無理をしてしまったがアドレナリンと脳汁がドバドバでやめられなかった。後悔はしていない。
これだけの大会デスマーチに耐えられる体力はもう無いんじゃないかと思っていたので、自分でも少し驚いているというのが正直なところだ。
デスマーチはやらないに越したことはないが、ここぞとやりきれる体力はこれからも頑張って維持したいと思う。
大会を経て、ibisのできていること・できていないことが沢山判明したので来年の大会までにはしっかりと対策をして上位チームと互角に戦えるところまで持っていきたいところだ。
来年の大会には強くてニューゲームな新チームも現れるようなので非常に楽しみである。
SSLをやっていて本当に良かった。
SSL最高!