LEGENDのロボット制作に関わってくださった方々へ
📕

LEGENDのロボット制作に関わってくださった方々へ

Tags
RoboCup
LEGEND
Published
November 30, 2021
この度RCAP2021にてジュニアサッカーライトウエイト部門で2位を受賞しました。
私はこれまでの大会とは少し違う心で今回の大会に挑みました。
notion image
高1の時に世界大会に出場したメンバーたちと出会いました。この時はお互いのことも全然知らない状態で二年目くらいで世界大会を目指せるようになればいいなーとか思っていたのを覚えています。
我々はYuseiがプログラミングに特化していて、ざるそばは数学が得意でいいところを生かしていいロボットを作ろうと活動していました。でもどこかで自分が一番理解しているとか、そんなことを思っていたのは否めないです。ロボカップは競技としての側面がどうしても強く出てしまいがちです。サッカーなので点を取らないと上にはいけないからです。なので私は”RoboCup”を少し他の人よりも理解しているだけでした。
実際、ロボットを作ってみるといろんなことを感じました。いいハードウェアといいソフトウェア。これを目指すようになったのは彼らに出会ってからです。

これまでのLEGEND

notion image
RoboCup2019 Soccer Light Weight Individual 3rd placeのロボット
ハードウェアはそれなりに1番を目指して頑張っていました。軽くて強いロボットを作ることをただただ目指していました。
ソフトウェアもそれなりにまあまあなものを書いていました。ライン処理には300通りほどのswitch caseで処理したりもう、脳筋で、とりあえず白線から出てしまわないような処理を書いていました。まだ若かったのもありますし、何よりRoboCupでは他人のソフトウェアを見て真似をするということがほぼできない状況なので
何が良いものなのかがよくわからない状態でした。
そして回路。Arduinoなどから入門する人は多いはずです。あれは便利ですよね。繋げば動いてくれます。つなげるだけで特に回路開発らしいこともこれまではしてきませんでした。例えば電圧波形をみて何かを考察してそこから修正を加えたりなどです。大体がフィーリングで動いていました。実際教えてくれる人がいても理解できる脳が小さい頃はなかったのと難しすぎるし、何より理解しなくても”ゲームでは”得点を決めたら勝ちですから、あんまり重要視していませんでした。

変化した考え方。

notion image
なんだかんだで、世界大会まではいけました。もちろんソフトウェアもそれなりに抽象化してモジュールごとに分割しました。具体と抽象を理解し始めたのも中3高1あたりです。それなりにモジュール設計ができていると思っていましたが、Yuseiからするとダメだったようです。もっとモジュールごとにファイル階層を分けたほうがいいみたいなことも言っていた気がします。プログラムミスも結局制御をしているプログラマーが有能であったとしても最後負けるのはヒューマンエラーです。戦略もそうですが、抽象度を高めて治す部分を最小限に減らし、頭の中のカオスを整理できる純粋に見やすいソフトウェアの構造化が必要でした。
回路もダメでしたね。なんだかんだでダメでした。例えばドリブラーを回してスタックさせると電源ラインがなんかおかしくなってかボールセンサを監視しているマイコンがリセットされて電源を落としてもう一度つけないと動かなくなるバグみたいなのがありました。
Video preview
世界大会。ドリブラーのせいでマイコンがおかしくなるのが何回かありました。
あと京滋奈ブロック2021では、けいはんなの会場でロボット同士がぶつかるとI2Cバスが壊れてコンパスが読めなくなるバグに悩まされ、最終的に決勝戦でサッカーの試合をしないまま後輩のCressentに敗退し、悔しすぎる準優勝。これで私たちのLEGENDとしてのRoboCupは一旦幕を閉じました。こちらが封印していた京滋奈ブロック2021の動画です。とても見せられたものではありません。どう見ても優勝争いの試合ではないです。
Video preview
私たちは試合後もなんどもロボットを動かして後輩のCressentの協力の上、あのコンパスが狂ってくるくると回るシチュエーションの再現を目指しましたがなかなか再現することはできませんでした。
練習ではバグりません。回路も通信もおかしくなりませんでした。しかし試合では別です。途端に狂い出し、このような有様になってしまいます。試合で勝つために必要なのはもっと基礎的な部分であることに気付かされました。私はこの時から回路に設計に興味を持ち始めました。
それなりに制御のプログラミングができたとしてもやはり安定性がないと試合では勝てないものです。基礎設計の部分でプログラマを泣かせるのはあまり良くない構図です。プログラマーをしっかり生かすには良いハードウェアが必要ですと、いろんなところで経験しては語ったりしていますが、それ以上にただならない何か別の信念を、これらの経験から感じるようになりました。

RCAPまででの私個人の活動

RCAPに出場しました。やはり、あの負け方で終わるのは味わいが悪すぎました。あんな黒歴史みたいな試合で終わるのは違いますし正直心残りがありました。
京滋奈ブロック2021では、メンバーはもう試合で勝つことよりも試合中のいつあのエラーが起きていてどうすれば再現できるのかの原因解明の方に集中していて、ゲームで勝つことなんでどうでもいいみたいな、試合に対しての感情が一切ない、アウェイなのにデバッグ側に完全に頭が切り替わってしまっていて、こんな感じで終わっちゃうの???みたいな感じでした。
高校を卒業し、一応一旦我々3人のLEGENDとしての活動は終了して、私個人で今回はLEGENDの機体を調整することに。
世界大会が終わってから、Yuseiと僕はやたらと電源のことで話す機会が活動中で増えましたし、I2Cのエラーが起きない設計を心がけるようにみたいな会話も確か多かった気がします。
ざるそばはカメラとマウスセンサと円形ラインセンサ担当になり、数学を生かしたアルゴリズムを書いてくれていました。私はロボカップ世界大会2019でSoccer LightWeightにて全方位カメラを搭載しつつ4輪オムニホイールとキッカーとさらにドリブラまでのサッカーロボットを作る上で必要な全ての機能を1100g以内におさめて作るという革新的な挑戦をして他国のチームからも沢山質問を頂きました。世界大会でハードウェア設計は認められたので、この先目指すものもなくなりました。
次に私が目指したのはパーツの修理・交換がしやすいハードウェア設計でした。いくら軽量化ができたとしても、ロボットは壊れるもので、壊れるのであれば交換する必要があり、勝つためには交換スピードを早める必要があります。
3人が専門性を活かしてちゃんとチームとして活動を始めていい感じに進んでいる時にコロナで大会が次々となくなり出られなくなってしまい、せっかくみんなで研究したものが世に出なくなり、存在が忘れ去られることが悔しくもあり、今回私はRCAP2021-Aich Japanでこのロボットを完璧に仕上げて良い成績を出し、チームの研究成果を供養することが目的で出場しました。
強いロボットは全て細部にこだわりを宿していて、素人がパッと見てわかるハードウェア以外の部分で圧倒的な差をつけて、レベルの高さで優勝してRoboCup JuniorでLEGENDになる。
これが私が果たしたかった使命です。別に頼まれてもないですけれど、本当に努力してくれたチームメイトのためにも蔑ろにできない気持ちの方が圧倒的に強かった気がします。
そして、達成できました。
試合最終日まで調整した結果。電源モジュールもスタック時などで電圧降下でロボットが機能停止することなく、I2Cで通信エラーを起こしてロボットのコンパスが停止してそのままくるくると回転することもなく、交換しやすいハードウェア設計に関してはプレゼンテーションポスターに書き高く評価していただけてBest Presentation賞をいただけて、ざるそばが途中まで書いてくれていたライン処理とマウスセンサも最終日でプログラムに処理を加えてモーション推定を実装してアウトオブバウンズの回数を減らせました。Li-Poの保護回路で電圧降下を起こすこともなく、無事終了。Yuseiが担当してくれていたプログラムの構造設計のおかげで大会中に新しい機能開発をしながらでも試合に参加できる柔軟性が担保され、ヒューマンエラーを減らしながら開発することができました。
今回はチームメンバに直接助けられることはなかったですが、これまで以上に、チームメンバに助けられた大会だったと思います。チームとしての活動が終わってから過去に開発していた前任者に助けられ、設計思想を体感しながら基板設計やアルゴリズム開発、ソフトウェアの機能開発が行えました。過去に書いていた進捗レポートとかにも助けられています。集合知。クラウドの知恵。
またロボットを始めたきっかけに当たる、子供の理科離れをなくす会のリアルデータを取って分析した上で開発をするという科学開発における基礎の大事な考えかたも、今回テクニカルプレゼンテーションで実演披露させていただきました。人から得た思想を取り込んで集約できた気がします。無事に終われそうです。
最後に、メンバーへ感謝のメッセージを。もう1年前になるけど、Yuseiは良い電源と良い構造化プログラミングのできる環境を提供してくれてありがとう。間違いなく研究の成果が立証された大会だった。メイン基板は作り直したけどその時に前任者のものをなるべく真似して設計思想を引き継げたつもり。電源の波形も何回かみてコンデンサつんだりしたし、追加しやすいいい設計だった。最終的にはI2Cの周波数を落としてバグらないようにしたんだけれどもそれでとうとうコンパス狂いもなくせた。ざるそばのマウスセンサも途中開発だったものも引き継いで今回のRCAPで使用した。なんだかんだ面白い制御ができそうな気がする。ちゃんと最後に努力が結果に結びついて、良い賞もいただけて世界3位以上に嬉しいです。今回関わることはなかったけれども、時間差ながら一番チームに助けられていることを実感できた期間でした。ありがとうございました。
最初は何の信念もなくつけたこの”LEGEND”という名前でしたが、これだけ賞をいただけたのなら、なんだかんだ、いい名前だったんじゃないかと思います。
notion image

お礼

今回の鍵となったI2Cと電源にまつわる話を、僕がわからない時から話してくださり、オシロスコープを買うきっかけ作ってくださったココロボ2の西村さんありがとうございました。
Zakさんと村田さんには参考になる考え方を多く提供していただきました。会場でも開発にまつわるアドバイスをいただけて次の目標ができました。ありがとうございました。
若い頃のロボットを続けるきっかけになってくださった上村先生お世話になりました。会場で二年ぶりに会いましたが、色々お話できてよかったです。またお話ししたいです。
ロボカップで夢を見せてくれたNitro Eventualのみなさん。ありがとうございました。一番影響しています。同じ滋賀県出身として近いところから夢を見させていただきました。世界大会でLEGENDのロゴをロボットに貼って世界大会に出場してくれたのが今でもすごい印象的にLEGENDパーカープロジェクトが発足するきっかけになっています。質問して付き合ってくださった京田さんは特にご迷惑をおかけしました。ありがとうございました。
何度活躍されていて、質問する内容も特にない状態で質問したり写真撮らせていただいたり、さらには運営がわに回っても活動されている政岡さん。大会お疲れ様でした。2014年に実は初めて会っていて、覚えていないと思いますが、強すぎる人に初めて名刺をもらって興奮してたのを今でも覚えています。小さい頃から憧れていました。
たくさんのロボカッパーたちが夢を見させてくれたYunitのTADAさんにはなんども質問させていただきました。わかりやすくいろんなことを教えていただいたのが印象的で自分も世界大会に出ている身としてこのような対応ができるように目指したいと思いました。ありがとうございました。
LeopardのYutaくん。初めて会ったのは中1の頃で、当時かなりの衝撃をもらいました。リーグが違ってもしゃべってくれたり、年齢が近いロボカップ仲間の中ではかなりライバルみたいな感じで意識していました。大会であってはハードウェアの話がどうしても多くなってしまってごめんなさい。いつかソフトの話したいですね。また大会で会いましょう。
Kossan。回路の解析に関するアイディアを出してくれてありがとう。とても助かった。これからも回路に関すること聞くのでよろしくです。
むくよ先輩。ずっとライバルしてくれてありがとうございました。最初は僕が先輩にロボットを教えるカオス構造でずっと狂ってました。僕よりも先に世界大会に出場しちゃった時はめちゃくちゃ悔しくて、狂気で頑張って次の年にLEGENDの3人で世界大会に出場できました。これからは同じチームでよろしくお願いします
Twitterなどでさまざまな意見を出してくださった全ての皆様ありがとうございました。

最後に宣伝

いつか必ず。ロボットの情報を公開する機会を用意します。
notion image