見出し画像

ETロボコン2023を終えて

北海道地区から「塩辛ーズ」としてプライマリークラスの競技に参加し、同チームのリーダーを努めたあずらたと申します。
去年も書いた振り返り記事を今年も書こうと思います。去年のやつは下からどうぞ。

今年の結果

今年の結果は次の通りです。

  • 競技

    • Lコース: 24.9ポイント

      • ダブルループ 4本通過

    • Rコース: 0ポイント

      • リタイヤ

  • モデル

    • C評価

去年はモデルを公開していましたが、今年はある理由があり、モデルがあまりにも酷い出来なのでちょっと今年は避けたいと思います。

今年のモデルに関して

悲しいことに、うちのチームではモデルをまともに書ける人が僕しかいません。メンバーは、アクティビティ図やクラス図、ステートマシン図といった図がかろうじて読めますが、細かい文法や設計についてはノーマークです。
これは、うちのチームの参加者層がB2〜B3に偏っており、B2の後期までまともなソフトウェア工学の講義が行われないためです。

それを考慮したうえで、去年のモデルはがっつり僕が書いたのですが、今年はモデルを書きたいと言ってくれたメンバーがいたのでそのメンバーに書かせて、僕は資料を提示したりレビューをしたりといったことを主にしていました。

実際のフィードバック(ステートマシン図)から抜粋

ポイントは主に3つ。重要度順で並べた。

- 何を言いたいのか伝わらない
- 体裁が整っていない
- 一貫性がない

実際のフィードバック(総評)から抜粋

ただ、僕の進行が遅かったために〆切当日を迎えてしまい、最終的に僕が1日で全部描き直したレビューもウォークスルーすらもされていないモデルが提出されました。当然のようにクオリティは低く、先述の通り評価はCでした。
唯一まともな点を挙げるなら、文法ミスを指摘できないほど他のつっこみどころが酷かった可能性もありますが、実行委員会からのコメントには文法ミスの指摘がなかったことです。

今年の競技に関して

ベースとなるコードは去年の流用でしたが、今年からRasPike環境にしたことでバグ修正にだいぶ苦労しました。特に、カラーセンサはEV3とSPIKEで値の範囲に違いがあり、変数の値がオーバーフローしていることに気づかず、しばらく走行体が走りませんでした。
また、試走会2では模擬レースで他のチームは達成できたLAP通過ができないという悲しい結果となっていました。
その結果、結果は競技5位と沈んでしまいました。

ただ、実は悪いことだけではなく、去年よりも進んだこともあります。

まず、昨年度はとっていなかったログを取るようになりました。色々とってはいたのですが、ログが一番活躍したのは青線検知と大会では使われなかったブロックマーカー検知です。

実際のログと青線検知に関する議論の跡

また、ライントレースで使うカラーセンサの値にフィルタを入れるようになりました。
今のままではただの移動平均フィルタでN = 3にしか対応していないというクソコードぶりですが、実装に対しての改善案もあるので、来年にはなんとかなるでしょう。

来年は台形駆動の実装とかしたいですね。大会が終わったあとに一人で勉強してました。

台形駆動に関する勉強で使った実際のノート

ふりかえり

チームでの振り返り

今年は活動内容について、メンバー同士でKPTを使ってふりかえる機会を用意しました。結果は次の通りです。

  • Keep

    • 大会直前の追い上げ

    • 去年の資産を活かせた

  • Problem

    • 3年生がインターンや用事で不在だった

    • 全体的に稼働時間が短かった

    • 本格的に活動を始めたのが遅かった

    • できる人しかコードを書いていなかった

    • バグの多かった

    • SPIKEに対する知見が少なかった

  • Try

    • RasPikeにはカメラがついているので、カメラを使いたい

    • 進捗管理をしたほうが良い

    • RasPikeではデバッガが使えるので活用したい

    • オンラインでできることを増やしたい

    • メンバーのスケジュールを確認・調整したほうが良い

言い訳にはなりますが、Problemでも挙げている通り、活動の中核となるはずだった3年生が意外と不在でした。チーム全体では、メンバーの過半数が来るようになったのは実は試走会2直前の8月末あたりからです。
9月になってからも、リーダーの僕やサブリーダー的存在のメンバーが不在の時期があり、その時期はメンバーにだいぶ不安を与えたかもしれません。

個人的振り返り

個人的に大きな反省点は2つほどあり、1つは勉強会がメンバーの役に立っていないように見えること、もう1つは進捗管理ができなかったことです。

チームの知識を底上げするために昨年度から勉強会をしているのですが、あまり身についていないように見えました。
勉強会の内容は次の通りです。

  • シェルコマンド

  • VCS(Git)

  • オブジェクト指向

  • C/C++

  • UML

  • RTOS

  • 基本的な要素技術(PID制御, オドメトリ, 各シナリオ切替の基準)

個人的には割と充実させたつもりですが、実際には次のような問題が起きました。

  • ラズパイにコードを移せない

  • そもそもラズパイの操作ができない

  • Gitの使い方がわからない

  • モデルが読めない・書けない

  • 内容がよくわからないままパラメータ調整をしている

正直これらを抑制したいために勉強会を行なったのに、メンバーが全く太刀打ちできておらず、勉強会を行なった意味を感じられませんでした。
また、これはあまり言い訳にはしたくないですが、そもそも未来大のカリキュラムが弱すぎるという点もあります。

  • まともにシェルを触る講義はB3以降にしかない

  • オブジェクト指向に関する講義はハンズオンだけで本質には触れられない

  • (先述の通り) まともなソフトウェア工学に関する講義はB2の後期でETロボコンに間に合わない

  • コースや人によっては前提にできる知識が基本的なプログラミング知識しかない

こんな状態で何にフォーカスして教えればいいのか、今でも見当がつきません。どうすりゃええねん。

ただ、勉強会のやり方については多少改善の余地が見えています。実は今年まで講義的な進め方をしていました。
今年の参加者からは「ハンズオンが少なかったのでは」というフィードバックを貰っており、実際話す内容を考えるのに精一杯でハンズオンまで行けていない回が大半でした。
来年の勉強会は内容を再考するのももちろんですが、ハンズオン多めにしたいですね。

進捗管理については、正直何をすればよいのかわかりません。
勿論、いわゆるカンバン方式やWBSで計画を立てるなど色々やれることはあるのですが、活動に対して不定期的に妨害(例: 試験, プロジェクト学習, アルバイト)が入るので計画を立てても頓挫しがちというのが2年目までの教訓で、あんまりやっても意味がないのかなと思っています。ただ、競技の目標として30ポイント程度、モデルの目標としてB評価は制定していました。
ちなみにベースとなるコードの開発についてはチケット駆動開発っぽく進めているのですが、コースと難所の攻略に関するパラメータ調整に関してはチケットに起こしても終わりがないので各々好きに進めてもらっています。
開発の進捗管理について何か良い案があったら是非XのDMに。

来年度に向けて

実は今年で僕はプライマリークラス3年目なので、来年にはアドバンストクラスに行くか直接成果物に関われなくなります。

来年も出場したいという意味でも、自分のモデリング力を試したいという意味でも、アドバンストクラスには出場したいです。ただ、チームメンバーの能力がアドバンストクラスレベルになっているかというと、正直そうとは言えません。
もちろん地区大会に向けて頑張ってくれたことについては感謝しているのですが、それはそれ、これはこれです。というか、そもそも今年参加してくれたメンバーも来年参加してくれるかわかりません。
メンバーのスキルセットに自信が持てない以上は、アドバンストクラスに参加するのは危険かなと考えています。でもやっぱり出たいな〜。

あとこれは個人的な文句ですが、北海道地区の試走会1は未来大の期末試験期間と2年連続で被ってるので今年は試走会1に参加できませんでした。なんとかしてください。

以上、長文にはなりましたが、リーダーとしてのふりかえりは以上になります。

謝辞

活動に関して、多大な支援をしていただいたN先生、また、大会を開催するために尽力した方々(特に北海道地区実行委員の方々)に心より感謝いたします。
また、残ってくれたチームのメンバーには、未熟な僕についてきてくれて本当に感謝しています。