ibisというプライベートチームでRoboCup のJapanOpen2024の車輪小型リーグに初参戦してきました。
色々と書いていたら長くなってきたので、とりあえず前編を出します。
この記事はソフトウェアの視点から書きますが、メカ班視点の記事はこちらに
manjuu.hateblo.jp
開発習慣などの記事はこちら
hans-robo.hatenablog.com
※この記事は最大3徹状態の記憶が含まれます。事実と異なった記述があればこっそり教えてください。
4/25(移動日)
仕事を終えて荷造りをして新幹線で滋賀へ向かう。
ホテルについたら、実家に泊まると言っていたはずの他のメンバーに遭遇した。
なんでやねん。
大会前の最後の追い込みが始まる――――
”Keep programming!”
”Programmer, never sleep”*1
4/26(準備日)
この日は大会の準備日。最低限の動作確認は完了させたい。
チームリーダーのくじ運が悪すぎてラスボス引いてウケる(ウケない)
でもやるしか無いので、徹夜で頑張るしか無い!
ちなみに、この日もフィールドを使って練習できる時間があったのだが、チームリーダーは一番最初を枠を引いてきた。
つくづくくじ運の悪い男だ。もっと準備時間をくれ。
”Keep programming!”
”Programmer, never sleep”
4/27(大会1日目)
激動の一日だった。
この日は3試合をこなしたほか、主審もやった。
ZJUNLict戦
YouTube配信
VIDEO www.youtube.com
初戦なこともあり、かなり違反が多くて相手には申し訳ない試合になってしまった。
一方、ロボットは基本的に調子よく動いていて一安心した。
世界大会優勝経験のある強豪ということでボコボコにされるだろうと身構えていたが、調整不足のようであまり振るわない動きをしていた。
調整時間中も「キッカーが蹴らないんだけど」「ごめん、OFFになってた」みたいな基本的なやり取りが聞こえていた気がするので研究室の新入生なのかもしれない。
もちろん、基本押され気味ではあるのだがデフェンス がよく動いていてなんとかしのいでいた。
あと、相手がダイレクトシュートのチャンスを幾度か見逃していたのも気になった。
世界大会ではダイレクトシュートコースが空いているなんていうことは基本ないので、考慮されていないのかも?(それマジ?)
多すぎるファール
試合進行上、ロボットが入ってはいけないエリアがあるのだが、エリア回避の動作でロボットの半径分の考慮をすっかり忘れていて、ギリギリエリアに侵入してしまうということを繰り返し、かなりの数のファールを記録した。
また、敵のフリーキック なのに味方ロボットが突撃してしまい、違反を取られるというハプニングも発生した。
そのようなプログラムを書いた覚えはなく、毎回再現するわけではないので迷宮入りしてしまう。結局、原因判明は夕方のRi-one戦を待つことになる。
結局、この試合でファール66回・イエローカード 3回を記録するが、初出場のチームにしては少ない方らしい。
ペナルティキック
デフェンス エリアから脱出中のロボットがボールに触って蹴ってしまうハプニングがあり、ペナルティキック となった。
ペナルティキック 中、関係ないロボットはボールから1m以上下がらないといけないというルールがあるのだが、誤ってロボットのディフェンスエリア回避をONにしてしまっており、デフェンス エリアに引っかかって盛大に相手PKを邪魔してしまうというやらかしをしてしまった。
当然PKはやり直しになったが、相手がボールにバックスピンをかけすぎてPK失敗判定が下り、九死に一生 を得た。
(SSL のPKでは相手ゴール方向以外へボールを進めてはいけないというルールがあり、バックスピンでボールが戻るだけでPK失敗となる)
PKが終わったところで試合時間オーバーで試合終了。
なんと、強豪相手に引き分けに持ち込むことができたが、前述の通りかなりファールをしてしまっているのでなんとも申し訳ない感じになってしまった。
審判1 (Sasa-kamati vs Roots)
RoboCup の大会では、参加チームが持ち回りで審判をやる。
それは初参加の我々とて例外なく回ってくる。
審判は毎試合2チームが担当し、メインとサブのチームにそれぞれ役割が割り振られる。
このときはサブのチームに割り当てられた。
サブのチームの仕事内容
チームから2人出す必要があり、それぞれ「Assistant Referee 」「Vision Expert 」を担当する。
「Assistant Referee」
主審の補助をする役職だ。
具体的には判定が難しいときに主審の相談相手になったり、ボールを手動で動かす必要があるときにパシられる役になったりする。
「Vision Expert」
天井のカメラ画像からロボットの位置などを計算し、各チームへ情報を送る「SSL Vision 」というソフトウェアの面倒をみる役職だ。
通常、この役職は暇なことが多いが稀にロボットが認識されなくなったりするので、そのときにパラメータの調整などを行って改善する。
審判2 (KIKS vs RoboDragons)
遂にやってきた審判のメイン担当回。
メンバーはそれぞれルールを読んで来ているものの、日々ルールを違反しないようにソフトウェアを書いている自分が一番ルールを把握しているだろうということで、主審は自分になった。
ただ、この初主審のこの試合、相手が悪かった。
対戦するKIKSとRoboDragonsは世界大会常連の日本の2TOPである。
当然試合状況は目まぐるしく変化するし、両チームとも試合慣れしていて、少しでも怪しい判定をすると容赦なくチャレンジカード を切ってくる。
良い経験にはなったが気疲れがすごかった。
GreenTea戦
YouTube配信
VIDEO www.youtube.com
GreenTeaは我々ibisより後に設立されたチームだが、一足先に大会に出場するようになった先輩チームだ。
メンバーのバックグラウンドがibisと似ていることもあり、メンバーには知り合いも多い。
出場する前から煽り合っており、ぜひボコボコにしたい相手だった。
しかし、試合が始まってみると絶望的に試合が進まない。致命的に相性の悪いのだ。
結果は0-0で引き分け。
次こそは!待ってろ、GreenTea!!
致命的に相性の悪い相手
コート中央付近で戦っている分には問題はないのだが、一度コートの角に入り込むともうだめだ。
一度ゴールキック で角に入るといつまで経ってもそこから抜け出さないのだ。
角にほとんどのロボットが固まっているせいで、パスを出そうにも角、フィールド外に出てもゴールキック で角、と試合が全く進まない。
途中、仕方がないのでタイムアウト を取って、ゴールキーパー のパス先を強制的にフィールド中心に変更してからかなりマシになったようにも思うが、結局時間内に得点変化はなく引き分けに終わった。
怪しくなってくるキックオフ
パラメータチューニングの副作用なのか、このGreenTea戦あたりからキックオフ動作が怪しくなっていた。
キックオフで蹴る直前にウェイポイントを置いているのだが、そこに到達する前に止まってしまい、いつまで経っても到達判定が出ずにキック動作に進めずキックオフができないのだ。
修正できた大量ファール
ZJUNLict戦で問題となった大量ファールは修正が間に合ったので、かなり減らすことができた。
基本的にこの手のファールはロボット同士がぶつかったり、立入禁止エリアに侵入してしまうことで発生する。
前者はロボットのスピードを落としたりして付け焼き刃の対策しかできなかった。
一方、後者についてはibisのソフトウェアでは立ち入り禁止区域をGridMapで保持しており、その設定を少し変えるだけで対応できた。
ちなみに、この試合ではGreenTeaよりもファール数が少なかったようだ。
この試合ではかなりGreenTeaのロボットに邪魔されることが多かったですが、しっかり障害物回避を効かせてエレガントに避けているのが見れてよかったです。
VIDEO youtu.be
Ri-one戦
YouTube配信
VIDEO www.youtube.com
Ri-oneもまた我々ibisより後に設立されたすごいチームだ。
新参ながらすごいチーム、Ri-one
これがまたすごいチームで、ibisがうかうかしている間に世界大会に出場して3位の成績を収めている*2 。
ibisが泥仕合 の末、引き分けになってしまったGreenTeaも過去の大会では10-0でボコボコにしたこともある。
RoboDragons・KIKSに続き、Rootsと同じかそれ以上に強くて新参チームの中では頭一つ抜けたチーム、というのが個人的なRi-oneのチーム評価だったのでibisも欲張らず「勝てたらラッキー」くらいに考えていた。
しかし、今大会ではどうしたことか、ロボットに何やら問題があるらしく大会前から連日徹夜している様子。
3年目にしてヤバイチーム、Ri-one
聞くところによると、新機体の開発に伴って既存のロボット全てが動かなくなる変更をしたらしい。
どうしてそんなことになったか分からないが、初出場のibisよりも遥かに大変そうで大変そうだった(語彙力)
試合ができるか心配だったが、なんとか間に合ったようで、ibisとの対戦の時は多少怪しい動きもありつつも動いているようで一安心。
ちょっと動きの怪しいチーム、Ri-one
ロボットの調子が悪いのかソフトウェアの不具合なのか見分けがつかなかったが、それなりに動き出してからも少し怪しい動きをしていた。
ディフェンスエリアからボールを排出する動きがなかったり、ボールプレイスメントを邪魔したりと、ソフトウェアもリビルドされてルール対応がリセットされてしまっているのかも?と感じた。
ibisもibisでソフトウェアの状態遷移がうまく行かず2回ほどタイムアウト を取っている。
また、この試合は通信トラブルの多い試合であった。
通信トラブルとibisロボットの暴走
試合途中でGameControllerが混線して試合進行が止まるハプニングがあったが、配信解説担当によるとこの手のネットワークトラブルはこれでもかなり今年は少ないらしい。
試合開始後、しばらくするとibisのロボットが暴走を始める。
何が起こったのかと調べてみると、ロボットまでのping が1秒を超えている。どうやら、隣のブースのRi-oneとWiFi アクセスポイントのチャンネルが被っていて、ibisのAPが競り負けていたようだ。
Ri-one側ではチャンネル変更ができないということで、ibis側がチャンネルを変更し、事なきを得た。
(自分の記憶では書いたとおりなのだが、配信解説では別リーグのAPと混線しているという説明がなされていて、真相は結局わからない)
初得点!!!!
通信トラブルから明けた直後に、なんとibis始まって以来初めての得点を決める!
しかも完璧なパスシュートで!!もう脳汁ドバドバ。
配信の奥の方をよく見ると、確かにフリーキック からのパスシュートをしているのがわかる。
VIDEO youtu.be
怪しいキックオフ
ところで、Ri-oneもキックオフができないことが多々あり、GreenTea戦からキックオフ不調なibisと相まってどちらもキックオフができない奇妙な試合となった。
最後の方には、キックオフできないので強制開始コマンドでスタートするなど中々カオスになっていた。
通信が改善されてからはibisはよく動き、1点目ほどエレガントではないものの追加で2得点を決めることができた。
結果は0-3で初勝利!!
Ri-oneさんの調子が悪かったとは言え、勝利は勝利。
長年の悲願だったので嬉しさがこみ上げてくる。
また、本調子になったRi-oneさんと来年の大会で戦いたいものです。
このRi-one戦での得点を稼いだせいで、明日のCompilationError戦で同点に持ち込めば決勝進出できるらしい。
これは徹夜で頑張るしか無い!
”Keep programming!”
”Programmer, never sleep"
交流会
実はRi-one戦の裏でお寿司を食べながらSSL 交流会が開催されていたらしい。
試合が終わって急いでいくと、試合をしていた我々の分はちゃんと残されてありました。優しい!
初勝利直後のお寿司ほど美味しいものはない....
交流会ではibisのロボットが大人気でした。
後編に続く...