MATLAB/SimulinkでETロボコンに出場する:調整が簡単なアーキテクチャ

ETロボコンという競技は、設計はもちろん大事ですが、実際にロボットでコースを走らなきゃいけないので、調整に時間が掛かります。 ここをどうやって簡単にするかも、最終的な仕上がりを決める重要ポイントの1つでして。 
これまで、いろんなモデルを見ていましたが、調整パラメータは、プログラムのソースコードに埋め込まれ、一緒にコンパイルされることが多かったです。 ところが、これが結構、手間がかかる手順でして。 ソースコード上のパラメタを書き換え、コンパイルし、ロボットとケーブルで繋いで、プログラムを転送して、プログラムを起動して、コースの調整したい場所まで歩いていって、実験する。 これを延々と繰り返すわけです。 たぶん数百回レベルの数で。
たとえば1回に掛かる時間を2分短縮すると、100回で200分、500回で1000分ほど時間が節約になるし、コースのまわりを歩き回る労力も減ります。1000分といえば、1日に2時間使って調整したとしたら、8日間は節約できます。
今回の巨匠チームは、調整方法に2つの方式を取り入れました。
1.静的シナリオ
  ソースコードと一緒に、調整パラメタを書いたファイルを用意し、コンパイル時に取り込まれる方式
2.動的シナリオ
  EXCELで調整パラメタを書き、それをツールを使って無線通信により、走行体プログラムに送り込む方式
静的シナリオは、プログラムと一体になっているので、いつ何時でも、安定してプログラムが動く利点があります。 対して動的シナリオは、動作中のプログラムに無線で送り込むので、走行体が遠く離れた場所にあってもすぐに書き換えられる利点があります。 ただ、大会本番ではBluetoothの電波がうまく届かないことがあり、これだけに頼ると、動的シナリオが転送できないので走れません! という事態になりかねません。
度重なる調整は動的シナリオでやり、固まってきたら静的シナリオにして、プログラムに埋め込むという手順が一番良さそうですが、巨匠チームは、大会ではどうだったのでしょうねぇ。
Scenario_2
全体の構成はこんな感じになります。競技者はEXCELのシートにシナリオを書きます。 コマンダーという通信アプリで、シートの1つを選んでBluetoothで送信します。 EV3内部では、今回開発したプログラムがBluetooth受信で、シナリオ1行1行を受け取りますが、動的シナリオのRECモードのときだけ動的シナリオバッファに溜めます。
シナリオ管理者は、動作モードが静的シナリオか動的シナリオかに応じて、どちらかのシナリオグループか順位シナリオを取り出して送り出します。 シナリオグループというのは、一連のシナリオを更に複数まとめあげる役割をしています。
最近のETロボコンでは、こういう動的なシナリオ編集システムを同時に開発しているチームを時々見かけます。 最初に見かけたのは、H社の研究所の人達が出てきたときだったでしょうかね。 よくもまあ、こんなに作り込んだもんだ、と関心しました。 EXCELのシナリオを書いてコマンダーで送る人、 走行体をコース上でセットする人、の二手に分かれて作業ができるので、コース回りの移動をしなくても済むし、トライ&エラーのターンアラウンドがとても短くなります。
次回は、これが実際に動かせるファイル一式をもってきましょう。 実際にやってみて実感するのが一番ですからね。