ロボット×複合現実システムの作り方 - rokihi/MobileRobotShootingGameRTC GitHub Wiki
全体の流れ
#以下の説明はWindowsを対象とする
- 各公式ウェブサイトに従って,OpenRTMと Unityをインストール.
- ゲームシステムにあわせたハードウェアやゲームロジックのRTCを用意.
- ヘッドマウントディスプレイをセットアップし,Unityで複合現実感表現を作成.
- RTMAdapterを用いてUnityスクリプトをRTC化.
- RTMで実行.
OpenRTM
ロボットや操作デバイス,センサなどを統合して簡単に使うことができるプラットフォーム. 各要素技術をRTコンポーネント(RTC)というモジュール単位に区切り,それらを組み合わせることによってシステムを構築する. チュートリアルはこちら
既存コンポーネントの使い方
使えるコンポーネントは,公式サイトやwasanbonにある程度まとめられている.
各サイトやgit等からダウンロードしたら,
-
Pythonコンポーネントの場合は,RTC名.pyをダブルクリックで起動する.
-
C++コンポーネントの場合は,以下の手順でビルドすることで使える.
ダウンロードしたフォルダのトップに,buildフォルダを作りその中にcmake. もしくはフォルダの中でShift+右クリック→コマンドラインをここに開く→以下のコマンドを入力.
mkdir build cd build cmake ..
生成されたRTC名.slnをVisualStudioで開き,上部のメニューからReleaseモードを選択してBuildbuild/src/Releaseの中実行ファイルgができる.
#外部ライブラリをインクルードする場合,cmakeで見つけるため,それらのパスが通っている必要がある.もしくはVisualStudioで設定する.
各RTCを起動したら,以下の手順でシステムを構築する
新規コンポーネントの作り方
- RTC Builderで以下の項目を設定し,雛形(スケルトンコード)を作る
- モジュール名=RTCの名前,説明等の記述
- ポートの追加
- onActivated, onDeactivated, onExecuteの選択
- コンフィグパラメータの追加
- 言語 C++/Java/Python
- onExecuteに毎周期の振る舞いを記述する.
- rtc.conf,RTC名.confで実行周期,コンフィグ値のデフォルトを設定できる.これらは実行ファイルと同じ階層に置く.
- PythonのRTCBuilderによる雛形の変数の初期化にはバグがある.
Unity-RTMAdapterの作り方
ここからラッパーツールをダウンロード,インストールする.ここでのビルドは64bitで行う(cmake時のConfigure時のオプションで64bitを選択) デバッグのためには,64bit版のRTMが必要.その場合はこちらからダウンロードできる.
参考Unityプロジェクトをダウンロードし,この中のAssetや動作を任意のものに変更する.
ここでのUnityスクリプトは以下のようになっている
GameManager.cs
unity 内の空のオブジェクトにアタッチされているスクリプト。このスクリプトが RTM アダプターに送られてくるデータを見て、それを基にそれぞれのオブジェクトの動作を行う関数を実行する。勝敗が決まったというデータが来れば、勝敗のラベルを表示する。
Shooting.cs、explode.cs
オブジェクトについているスクリプト。それぞれそのオブジェクトの攻撃、被 弾時の爆発の動作を行う。
RTMManager.cs、RTMAdapter.cs
unity のプロジェクト内で GameManager.cs が RTMAdapter コンポーネントを 起動させる。RTMManager.cs が RTMAdapter.cs を参照して使用する。