目次
こんにちは。グローバルウェイのビジネスアプリケーション事業本部のPです。
このブログでは、24卒新人研修ETロボコンの取り組み:後編について紹介します。
一回目の東京・北関東試走会は7月28日に行われました。
ETロボコンに着手した時期が7月初旬だったため、ほぼ直線の上しか走れない状況での参加となりました。簡単な走行しか行えない状況で参加する意味があるのか、一度チームで相談をしましたが本番に近い環境を直接確認することを目的に参加することにしました。
結果としては参加してよかったと思います。今までオフィスでしか走らせなかったロボットを違う環境で走らせることで、新たな課題点が見つかりました。ロボットはカラーセンサーまたはカメラを用いて経路を認識します。人間と違い、同じ色でも照明が変わると違う色だと誤認するため、同じコース図を敷いているにも関わらず全く違う動きをします。オフィスでは安定した走りを見せたコードでも違う場所では動かない可能性が大きいことに気付き、「環境の変化にどう対応するか」が課題となりました。
この時点では、経路の認識にカラーセンサーを使っていたため、照明が少し変わっただけでも色の認識が変わることが問題でした。試走会にいらっしゃったスタッフの方に「本番では10分ほどの調整時間が与えられる」と言うアドバイスをいただき、「環境が変わってもすぐに変更・調整が可能なプログラム」を作成することを目指し始めました。
技術的な発見だけではなく、他の参加者の走りを見ることができたのもとても参考になりました。Eチームを組み動き始めた時期が7月だったため、年初からチームを組み準備してきたであろう他のチームに対して焦りを感じていましたが、目の前で他のチームの進捗を確認することができて、気持ちに余裕を持つことができました。既に半分以上完成させたチームがある一方、同じくらいの進捗であるチームもあり、最初より前向きな気持ちで挑めることができました。
2回目の試走会は8月24日に行われました。
2回目に向けて課題である「環境差による動作のブレ」の対策として、照明を変えながら色の測定値がどんな風に変わるのかをCSVで整理しデータを作りました。集めた色のデータを用いてキャリブレーションを行い、2回目の試走会で試しました。
結果としては方針を変更することになりました。キャリブレーションそのものは有効であるが、やはり青色など特定の色の判定がブレることが多かったためです。カラーセンサーでは安定した動作を期待することが難しいと気付き、その場でカメラとOpenCVによる画像認識を試してみることに。いきなりの変更であるにもかかわらず、カラーセンサーよりもカメラとOpenCVの組み合わせの方が、精度が高いことを確認することができました。
ただ、カメラによる画像認識を使うには大会運営委員会提供のRasPike(C, C++)環境からRasSpike-ROS(Python)へ切り替わる必要がありました。地区大会まで3週間しか残っていない時期に環境そのものを変えることになるため、かなりリスキーな挑戦でしたがそれでもカラーセンサーよりはいい結果になるであろうと言う判断のもと、環境の再構築・ロジック修正を行いました。
環境の変更、モデル設計図の提出、プログラミングで目まぐるしい3週間を経て、いよいよ東京・北関東地区大会の日になりました。大会当日、会場である早稲田大学は、ETロボコンの参加者で日曜にも拘わらず賑やかで、過去最大の参加人数だったらしいです。
グローバルウェイチームは、会社のロゴがプリントされている白Tシャツを着て、朝8時から会場に集まりました。参加者控室で運営者からのルールの説明を聞いた後、順番に試走タイムが始まりました。試走の時間はあまり長くなく、予想通り会場の環境に合わせてまた調整が必要になり、大急ぎでソースコードを触ることになりました。環境が変わったと言え、何故か一周のタイムも練習より遅く、本番までどう調整すべきかをみんなで悩みました。
悩んでいたらあっという間にラウンド1の時間になりました。ETロボコンの競技コースは左向きと右向きの2種類があり、ラウンド1と2で各コースを1周し、得点の高い方で順位が決まります。グローバルウェイチームは左コースで練習を続けていたため、左コースが指定されているラウンド2が本命でした。
ラウンド1は試走タイムと同じ設定での出陣となりました。理由としては時間が足りないだけではなく、急な変更により本番でコースを大きく離脱してしまう恐れがあったためです。リスクを避けたおかげか、大きい事故はありませんでしたが、やはり練習よりもずっと低い速度でした。ラウンド1の成績は31秒・14ポイント。やはり速度が練習よりずっと遅く、その原因は会場のコースの滑りが悪いからと見受けられました。
本命の左コースが走れるラウンド2では速度の設定値を上げることにしました。リスク回避のために速度の調整を渋っていたメンバーもラウンド1を経て、会場の環境なら速度を上げてもコースを離脱する可能性はそこまで大きくないと意見を変えた故の変更でした。テストもできないまま速度を変えて迎えるラウンド2で、ドキドキしながらロボットのスタートボタンを押すメンバー。幸いにも調整が上手く効き、ロボットは練習と同じくらいの速度で走りだしました。
ラウンド2の結果は、24.8秒・19.2ポイント。ラウンド1よりも6.2秒早く、5.2ポイント高い成績を取ることができました。
地区大会が終わり、グローバルウェイチームのETロボコンも終了となりました。東京・北関東地区大会の成績は2024 プライマリークラス L/Rコース のL/R総合では13位、Lでは9位でした!
今までWeb系のプログラミングしか経験のないロボット素人で、知らないことばかりで最初はとても不安でした。初心者なのは今でも変わりませんが、ETロボコンを通じてC++やPythonなどの言語とRasberry Piがあれば色んなものを直接作れると知ることができました。前はWeb上で動くプログラムしか書けないと思っていた言語で、現実でロボットを動かせると知って学習のモチベーションが更に上がりました。ネット上であらゆるモノが繋がるIoT社会において、ソフトウェアエンジニアはどこに目を向けるべきかについて考える機会にもなったと思います。
C++とPythonにまだ慣れておらず、ロボットについても素人だったため、チームメンバーには沢山迷惑をかけてしまいました。それでも一つのプロジェクトを同期と作り上げ、大会に参加した経験は自分の視野が広がるとても良い経験となりました。
これからはまた業務で忙しくなりますが、もっと経験と実力を積んで、いつかまたロボコンに挑戦してみたいと思います。3ヵ月間の新人研修、お疲れ様でした!
★★関連ブログ記事★★
最後までお読みいただきありがとうございました。
グローバルウェイでは沖縄在住エンジニアを積極的に募集しています。
是非一度グローバルウェイの求人一覧をご覧ください。
※ビジネスアプリケーション事業本部について詳細が気になる方は、以下のページをぜひご確認ください!