Maker Faire Tokyo 2019でARゲームを出展しました
2019/08/14
カブクのJenkinsおじさん 大橋です。2019年8月3日(土)、8月4日(日)に東京ビッグサイトにて「Maker Faire Tokyo 2019」が開催されました。
「Maker Faire」はアメリカ発の世界最大DIYイベントです。
このイベントに、カブク社内の有志が「ものづくり部」として出展しました。
展示内容やその裏側について、出展レポートをお送りします。
展示内容
「ガンメンタイセン ツヴァイ」(以降ガンメンタイセン2)は、2人用のロボット対戦ゲームです。
ロボットにはARマーカーが貼り付けられており、ディスプレイを通してロボットを見ると、ロボット部分に対戦相手の顔がAR表示されます。
ロボットを操縦して対戦させることで、相手と直接戦っているような感覚を体験できます。
技術周り
基本構成
ガンメンタイセン2は1台のMacbookと2つのRaspberry pi Zero WHで構成されています。 またプレイヤーにはそれぞれロボットを動かすためのゲームコントローラと、ディスプレイが渡されており、それぞれがMacbookに接続しています。なお通常はWi-Fiを利用して、無線でロボットを動かしますが、Maker faireの会場では電波の関係で有線(USB-OTG)経由で接続を行っていました。
Mackbook上のソフトウェア構成
Macbook上ではゲームステータス管理及び、それぞれの通信用のMQTTブローカー(mosquitto)、AR処理・ゲーム進行を行うためのFrontend(Angular製のJSフロントエンドアプリケーション プレイヤーに対して1つずつChromeのタブを割り当てる)、そしてゲームコントローラ周りの処理を行うためのrobo_controller(Python製アプリケーション)が動作しています。基本的にすべてゲームに関わる情報・状態の通信はMQTTにて行います。 FrontendはAngularにて作成されたフロントエンドアプリケーションです。
以下の流れでゲームを進行します。
- プレイヤーの顔写真を撮影 対戦相手へ目や、口の位置情報とともに送信
- Raspberry PiよりWebRTCを使用して、動画ストリームを取得
- 動画ストリームをAR.js、Three.jsによりAR表示
- 対戦開始 Three.jsにて表示された顔を照準に合わせて打つことでダメージを与えられる
AR表示には「AR.js」を使っています。
Frontendは後述のロボットがラズパイカメラでwebrtcによってストリーム配信した映像を受け取り、AR.jsとThree.jsにて「ガンメン」をAR表示します。
ロボット(Raspberry Pi)のハードウェア/ソフトウェア構成
Raspberry Piにはタイヤを動かすための2つのサーボと、ラズパイカメラ、またサーボ、Raspberry Pi自体を動かすためのリチウムイオン電池が2つ接続されており、その他電圧変換基盤やスイッチなどがついています。筐体は弊社の生産部が設計しており、それを社内の3Dプリンタで出力しています。筐体に対して、AR表示させるためのARマーカを貼り付け、 「ガンメン」の表示を行っています。
OSはRaspbian Buster、プレイヤーのコントローラ操作をMQTT経由で受け取り、サーボを動かすためのpython clientアプリケーションと、ラズパイカメラの撮影した動画を配信するためのuv4lが動作しています。
まとめ
今回はARロボット対戦ゲームを展示しました。当日はWebRTCが表示できないなどの問題が発生し何度かメンテナンスモードになってしまいましたが、最終的には無事展示することができました。
お子様を中心に多くの方にプレイしていただきありがとうございました。 カブクでは一緒にMaker faireで展示するものを作成してくれるエンジニアを募集しております。 なお今回の展示に関わるソースコードはこちらで公開しています。
その他の記事
Other Articles
関連職種
Recruit