***************************************
セッションs3-b
テーマ:ETロボコンシミュレータの開発
講師:新吉高(ETロボコン東京地区実行委員)
日時:9/3(金)11:30~12:40
参加人数:約25名(終了時)
***************************************

■自己紹介
2015よりETロボコン実行委員会に東京地区実行委員として参加
2017年から東京地区実行副委員長
2018年より東京地区実行委員長
2020年大会2020年大会で用いられたETロボコンシミュレータ(Unity)の設計・実装を担当


■ETロボコン概要
・Embedded Technology Software Design Robot Contestの通称.
・LEGO社のLEGO Mindstormsを使用した自律型ライントレースロボットの設計とタイムを競うコンテスト.
・プロモーションビデオ:https://www.youtube.com/watch?v=W4U41Jk_b38


■ETロボコンのシミュレータ開発
コロナでリアル大会は断念→シミュレータ大会を開催することが決まる.
救世主はTOPPERS/箱庭WG… 組込みCPUシミュレータAthrillの開発と,これと連携するUnity側の単体ロボットシミュレータを開発していた.

〇要求分析
 ・[運営] 学びを止めない
 ・[箱庭WG]成果物を多くの参加者にアピールしたい
 ・[開発者]リアル大会の雰囲気をシミュレータ大会でも実現したい

〇開発スタート
 ・まず,Athrillとシミュレータの間の通信仕様を1024バイトのUDP通信と決定.
 ・参加者はプログラムを書いて,棚橋先生が開発したetrobo環境で,Athrill経由でロボットを動かす.
 ・技術課題:
本物の重心は割と高く,カーブを曲がる際に転倒する.→速度に応じて重心を下げる.
スポンサーロゴを表す
  →技術課題を克服し,v1.0リリース(7/6)

 ・新たな技術課題:
Unityは日本語のフォントの見栄えが悪い.
走行体の初期位置を変更できるようにしたい.
  →技術課題を克服し,v2.0リリース(8/3)

 ・新たな技術課題:
4画面構成を決定(GPUを使わず,2分の走行キャプチャに5分かかる.)
→高速化(AsyncGPUReadbackを使って画面割込み処理を並列化・PNG生成処理を並列化.)
画面キャプチャ機能(競技結果をcsvに出力)計測モードの追加.
  →技術課題を克服し,v3.0リリース(9/3)

 ・技術課題:
コライダー境界において2つの不具合(走行体が小ジャンプ・ペットボトル転倒判定を誤る).
ガレージ挑戦中に判定継続できるようにしたい.
  →技術課題を克服し,v4.0リリース(10/11)


■CS大会
伝統的に社会人が強いが、2020年は学生が活躍した.

〇残課題
 ・複数OS対応によりインストーラの複雑化と不具合報告.
  →WebGLによるOS非依存化,インストールレス環境の実現.
 ・AthrillとUDP通信周期が短くできず,倒立振子の制御が難しい.
  →Athrillの代わりに軽量スクリプトを用いる.
 ・JSONファイルでは難所配置の自由度が低い.
  →スクリプト言語で自由に配置できるように.


■デモ
SWEST23向けに,WebGLによるOS非依存化,インストールレスなETロボコンシミュレータの開発.
Athrillの代わりに軽量なスクリプト言語(MiniScript)を用いる.

練習1:WebGL版ETロボコンシミュレータをブラウザで起動,MiniScript仕様で10秒直進するコードを書き,実行する.
実習1:for文でロボットを自由に動かす.
練習2:ライントレースを行う.(センサ値も確認可能)
実習2:練習2のプログラムを書き換えて左エッジをライントレースするように変更する.
練習3:倒立振子ロボットを動かす.


■最後に
多くのETロボコン実行委員およびTOPPERS/箱庭WGの努力によって、2020年のリモートCS⼤会は無事終了した.
リアル大会さながらの興奮を味わうことができたと、評判は上々であった.
YoutubeのETロボコンチャネルやQiitaに色々と情報があるので,参照していただきたい.


■質疑応答
Q.シミュレータを現実で担保するか.そうするならどうする?
A.Unity物理エンジンの限界.現実に合わせるのが難しい.
 ETロボコンらしさが難しい.この大会で1位になることの喜びがあるか.
 タイヤの径などが異なるため,シミュレータのコードを実機に適用はできない.
 コマンド制御(黒い線まで動く等)を利用するブロック運びであれば実機でもそのままできる.

Q.自分たちの環境でできてもほかの環境ではうまくいかないのが組み込みだと思う.
 初学者がそう言った組み込みを学べる場を提供してくれているのは非常にありがたい.
A.ETロボコンで組み込みの価値を見出すことができているのではないかと思う.
 もっとうまく広めるにはどうすればいいか.
 Web版シミュレータができるようになったのはSWESTのおかげ.

Q.Azureを選んだ理由は?PC性能は?
A.Azureに対する知見がある実行委員がいたから.
 GPUのCUDAは一番低いのを使おうとしたが,その場合,シミュレーションに時間がかかってしまったので,お金をかけて高性能のものを選択した.

Q.Web版シミュレータで、MiniScript以外の言語を使えるのか?
A.Python だったらできそう.


■まとめ
2020年大会で使用したETロボコンシミュレータの開発について発表を行った.
開発にあたっての要件分析や,技術的課題をいかにして乗り越えたかを説明した.
また,WebGL版ETロボコンシミュレータを用いてデモを行った.