SIGVerseをさわってみる
Simple Wiki Based Contents Management System
関心分野 >> SIGVerseをさわってみる

SIGVerse ver.3

SIGVerseがUnityを使って全く新しくなるそうです。現在、調査・検証中です。詳細はこちらへ

SIGVerseを触ってみる

2014年のRTMサマーキャンプにて、ロボカップ@ホームでNIIの稲邑先生により開発されているSIGVerseがシミュレーション部門で採用されることを知りました。
また、SIGVerseでもOpenRTM-aistとの連携の要求もあるようですので、少し触ってみることにしました。

SIGVerseの動作環境

SIGVerseのオフィシャルWikiによるとSIGVerseは、物理シミュレーション等をお粉yシミュレーションサーバー(SIGServer)とViewerをかねたサービスプロバイダ(SIGViewer)および複数のエージェントコントローラとユーザサービスにより構成されています。
SIGVerseのオフィシャルサイトでは、SIGServerとSIGViewerおよびユーザサービスを開発するためのライブラリが提供されていますが、SIGServerとエージェントコントローラは、Linux上で動作し、SIGViewerとユーザサービスは、Windows上で動作させることが基本となっています。
これらのプログラムの関係性は、下図のようになっています。

この図からもわかるように、SIGVerseを動作させるには、Linuxが動作する環境とWindowsが動作する環境が必要になります。SIGServerに関してはNIIの方で共有サーバーが提供されていますので、Windowsパソコンのみでも実行可能なのですが、コントローラの作成や様々な自分のシミュレーション環境のカスタマイズなどを行いたい場合には、WMWareなどでLinuxの動作する環境が必要になります。(もちろん、外部のネットワークが使えない場合には、VMWareか2台以上のPCが必要になります)
これでは少し不便ですので、SIGViewerをLinuxへ移植するかSIGServerをWindowsに移植し、単一OS上での動作するようにすれば、開発が容易になることがわかります。
そこで、もう少し各プログラムの動作環境の詳細を調査してみます。

SIGServerの動作環境

SIGVerseの最もコアとなるサーバは、ソースコードで配布されており、各自でコンパイルする必要があります。また、SIGVerseではシミュレーションの環境設定、3Dモデルとして、X3Dフォーマットのファイルを採用しており、Javaによるパーザを用いていますので、JDKも必要なようです。
したがって、下記のシステムおよびライブラリ群をあらかじめインストールしておく必要があります。
  • gccおよびg++
  • JDK(OpenJDK 1.6での動作確認済み)
  • OpenGL
  • xerces-c(X3DファイルおよびSIGVerseのWorldファイルのパージング)
  • ODE(Open Dynamics Engine ver.0.13での動作確認済み)
  • Xj3D(X3DのJava用パーザ)
  • julius(日本語連続音声認識)
  • juliusディクテーションキット
上記のツール、パッケージ、ライブラリ群をWikiの情報に従ってインストールします。Wikiでは、Ubunutu12.04の環境でのインストール方法が記載されているため、他のディストリビューションにインストールする場合には、パッケージ名が異なる場合がありますので、適宜調査する必要があります。
私の場合は、CentOS5のVPSがありましたので、この上でコンパイルとインストールすることができました。CentOS5の場合には、yum にて下記のパッケージをインストールしました。(2014年8月現在)

エージェントコントローラの動作環境

エージェントコントローラを開発、動作させる環境は、上記のサーバー(SIGServer)をインストールできれば、同時に開発ライブラリとMakefileのテンプレートがインストールされます。この開発ライブラリは、SIGServerと同様にg++での実装ですので、エージェントコントローラもg++でのみ記述することができます。

SIGViewerの動作環境

SIGViewerは、Windows上で動作しますので、Windows7以上のPCであれば、オフィシャルサイトで公開されている飲づとーらで必要なライブラリ群がインストールされます。
ただし、配布されているインストーラは、VS2008とjdk1.6で構成されていうようですので、VS2008のruntimeとjre1.6がインストーラされます。
jreは、最新版(ver.1.8)でも動作する要ですが、インストーラのjreを使わない場合には、環境変数のPATHに、(JRE_TOP)\bin\client(jvm.dllがインストールされているフォルダ)を追加する必要があります。
また、インストーラでは、OpenALとDirectXもインストールされます。

ユーザサービスの動作環境

ユーザサービスは、各ユーザが独自に開発することできますが、SIGServer, SIGViewerへサービス用のメッセージを送受信するためには、SIGServiceというライブラリが必要になります。
このライブラリは、オフィシャルサイトからダウンロードすることができます。
もちろんソースコードも公開されていますので、どのバージョンのVC++でもよいと思いますが、コンパイル済みのライブラリとしてVS2008用、VS2010用がありますので、それらを利用すると便利だと思います。

SIGVerseの動作をもう少し詳しく見てみる

上記の調査からSIGVerseを動作させるためには、LinuxOSが動作するマシンとWindowsが動作するマシンが必要なことがわかりました。また、SIGViewerでは、3D描画のためにDirectXが必要なようですので、Windowsの方は仮想マシンではダメなようです。(未確認ですが)
では、単一のハードウェアでSIGVerseを動作させるためには、オフィシャルWikiにも記載があるように、Linuxマシンの方を仮想マシンで動作させるか SIGServerをWindowsへ移植 または SIGViewerをLinuxへ移植 しか方法がなさそうに見えます。
SIGViewerの方も既にソースコードが公開されており、Windows特有の部分をX-Windowsのツールキットなどを使って置き換えるとなんとか動作させることができるかもしれません。(3Dの描画、レンダリングにはOGREというオープンソースのライブラリが使われており、Linux上で動作することも確認できています)しかしながら、この作業は結構骨が折れそうなので、SIGServerの方をWindowsへ移植する方が簡単そうです。
また、現存する様々なロボットミドルウェアには、Pythonの実装を持っているものが多いという状況も考えると、エージェントコントローラをPythonで記述できるようにするとLinuxでもWindowsでもエージェントコントローラが動作することが来たできます。
以上のことより、次の2点の作業を行いました。

資料