ロボット×複合現実システムの作り方 - rokihi/MobileRobotShootingGameRTC GitHub Wiki

全体の流れ

#以下の説明はWindowsを対象とする

  • 各公式ウェブサイトに従って,OpenRTMUnityをインストール.
  • ゲームシステムにあわせたハードウェアやゲームロジックの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を起動したら,以下の手順でシステムを構築する

  1. ネームサーバとeclipse上のシステムエディタを起動
  2. システムエディタにドラッグ&ドロップ
  3. ポート同士をつなぐ
  4. 右クリック->(All)Activate

新規コンポーネントの作り方

  1. RTC Builderで以下の項目を設定し,雛形(スケルトンコード)を作る
    • モジュール名=RTCの名前,説明等の記述
    • ポートの追加
    • onActivated, onDeactivated, onExecuteの選択
    • コンフィグパラメータの追加
    • 言語 C++/Java/Python
  2. onExecuteに毎周期の振る舞いを記述する.
  • rtc.conf,RTC名.confで実行周期,コンフィグ値のデフォルトを設定できる.これらは実行ファイルと同じ階層に置く.
  • PythonのRTCBuilderによる雛形の変数の初期化にはバグがある.

Unity-RTMAdapterの作り方

ここからラッパーツールをダウンロード,インストールする.ここでのビルドは64bitで行う(cmake時のConfigure時のオプションで64bitを選択) デバッグのためには,64bit版のRTMが必要.その場合はこちらからダウンロードできる.

参考Unityプロジェクトをダウンロードし,この中のAssetや動作を任意のものに変更する. ここでのUnityスクリプトは以下のようになっている image

GameManager.cs

unity 内の空のオブジェクトにアタッチされているスクリプト。このスクリプトが RTM アダプターに送られてくるデータを見て、それを基にそれぞれのオブジェクトの動作を行う関数を実行する。勝敗が決まったというデータが来れば、勝敗のラベルを表示する。

Shooting.cs、explode.cs

オブジェクトについているスクリプト。それぞれそのオブジェクトの攻撃、被 弾時の爆発の動作を行う。

RTMManager.cs、RTMAdapter.cs

unity のプロジェクト内で GameManager.cs が RTMAdapter コンポーネントを 起動させる。RTMManager.cs が RTMAdapter.cs を参照して使用する。