Up:Tutorial? Previous:SSH接続? Next:動力学シミュレーションのサンプル テスト実行1 †SIGVerseサーバを起動して、ビューワーからサーバに接続できることを確認します。 SIGVerseの起動 †サーバ側でSIGVerseをインストールした場所に移動してSIGVerseを起動してみます。 $ cd ~/sigverse-<version>/bin SIGVerseを起動するには~/sigverse-<version>/binにあるsigserver.shシェルスクリプト実行して起動します。このとき-pオプションでポート番号を指定します。ポート番号は空いている番号でしたら何番でも構いません。9000番以上の番号で他人と重複しにくい番号をお勧めします。ポートフォワーディングによる接続の場合はローカルポートフォワーディングで指定した「サーバ側で使用するポート番号」をここで指定します。 $ ./sigserver.sh -p 9001 [SYS] data directory : [SYS] [1] /home/<username>/sigverse-100317/share/sigverse/data/xml/ [SYS] [2] /home/<username>/sigverse-100317/share/sigverse/data/shape/ [SYS] world file : MyWorld.xml [SYS] reading /home/<username>/sigverse- 100317/share/sigverse/data/shape/sample3.x3d... read /home/<username>/sigverse-100317/share/sigverse/etc/X3DParser.cfg *** JavaVMOption *** options[0].optionString = (-Djava.class.path=/home/okamoto/sigverse- &b100317/share/sigverse/jar/X3DParser.jar:/home/<username>/sigverse- 100317/share/sigverse/jar/xj3d-all.jar) options[1].optionString = (-Djava.library.path=/tmp) Java VM start ok all done.[SYS] waiting for connection... SIGVerseが正常に起動しました。 ビューワーからサーバへの接続 †次にSIGVerseを起動した状態のままビューワーを使ってサーバに接続します。 まずSIGViewerを起動します。 ポートフォワーディングを使用しない場合 †ポートフォワーディングを使用しない場合はSIGVerseサーバのホスト名、上で起動したポート番号をViewerの左下のConnection枠に入力します。 ポートフォワーディングを使用する場合 †ポートフォワーディングを使用してサーバに接続する場合は、ローカルポートフォワーディングの設定が完了した状態で、サーバに接続します。ローカルポートフォワーディングの設定で指定した中継サーバのホスト名(localhost)、クライアント側で使用するポート番号を左下に入力して、"Connect to SimServer"ボタンを押してサーバに接続します。 接続 †"Connect to SimServer"ボタンを押してビューワーで以下のようなロボットが見えれば接続成功です。 SIGViewerの視点や方向を変えるには画面上でCtrlを押しながら右クリック(または右クリックのみ)でマウスを動かします。 接続が完了したら、サーバ側では以下のようなメッセージが出ます。(ポートフォワーディングによる接続時のメッセージ) all done.[SYS] waiting for connection... [SYS] attach view : polling [SYS] 127.0.0.1 connected [SYS] SIGViewerDataPort : dataport [SYS] 127.0.0.1 connected [SYS] localhost:8100 : service provider [SYS] 127.0.0.1 connected リモートポートフォワーディングの設定をしているときは前回設定したサーバ側で使用するポート番号と、中継サーバのホスト名(localhost)が以下のように表示されます。 [SYS] localhost:8100 : service provider それでは一度ビューワーのDisconnect SimServerボタンを押してサーバとの接続を断ちます。 SIGVerseの停止 †次に サーバ側でctrl+zボタンを押してSIGVerseサーバを一旦停止します。 このときSIGVerseがバックグラウンドで起動し続けているため、同じポート番号でSIGVerseを起動することができなくなります。よって、killコマンドを使ってSIGVerseを停止する必要があります。 以下のシェルスクリプトを作成します。 $ emacs kill.sh #!/bin/bash for i in `ps aux | grep sig | grep <username> | awk '{print $2}'`; do echo process id: $i kill -9 $i done ※<username>は自分のユーザー名に置き換えてください。 $ chmod 744 kill.sh $ ./kill.sh : [1]+ 強制終了 ./sigserver.sh -p 9001 (wd: ~/sigverse-100908/bin) これでプロセスが終了します。 現在起動中のプロセスを確認するには以下のコマンドを使います。 $ ps aux | grep <username> 今後省略しますが、SIGVerseを起動するたびにkill.shを実行するようにしてください。 テスト実行2 †次に世界ファイルというものを作成して仮想世界にオブジェクトを登場させます。 先ほど登場したロボットはデフォルトで用意された世界ファイル(MyWorld.xml)を用いました。 世界ファイル作成 †$ cd ~/sigverse-<version>/share/sigverse/data/xml ここに世界ファイルを作成します。世界ファイルはxmlファイルで記述されており、仮想世界に登場するキャラクターの設定を行います。 $ emacs test.xml test.xml ※ファイル保存時にコードシステムを聞かれたらutf-8を入力します。 これは仮想世界にペンギンのキャラクターを登場させる世界ファイルです。 起動 †それではSIGVerseを起動してみましょう。 $ cd ~/sigverse-<version>/bin $ ./sigserver.sh -w test.xml -p 9001 & 先ほど作成した世界ファイル(test.xml)を-wオプションで指定しました。xmlファイルを作成したディレクトリまでのパスはあらかじめ設定されているので、指定する必要はありません。 次にSIGViewerを起動して接続先のホスト名、上で起動したポート番号を入力して、"Connect to SimServer"ボタンを押してサーバに接続します。 ペンギンのようなキャラクターが見えます。 キャラクターへのアタッチ †このキャラクターを動かす為にはコントローラを作成し、登場するキャラクターにアタッチしなければなりません。ここではすでにいくつかのコントローラのサンプルが用意されているのでそれを使ってテスト実行してみましょう。 それでは準備されているサンプルコントローラバイナリを読み込み、エージェントにアタッチします。(Enterキーを押すとコマンドが使えます。) ペンギンが見えている状態で以下のコマンドを実行します。 $ ./sigrunac -l ../share/sigverse/samples/GoRound.so -n Toy_D -p 9001 [SYS] Controller attached to "Toy_D" [SYS] 127.0.0.1 connected [SYS] Toy_D : dataport [SYS] 127.0.0.1 connected これでキャラクタ-にアタッチしました。 sigrunacはコントローラをシミュレーションサーバ中のエージェントにアタッチするためのツールです。-lオプションでアタッチするコントローラライブラリを指定します。サンプルのコントローラライブラリは sigverse-<version>/share/sigverse/samples/ にいくつか用意されています。 GoRound.soというコントローラは登場するキャラクターがぐるぐる回るサンプルです。
SIGViewerで動作確認 †それではシミュレーションを開始してみましょう。 次にSIM_CTRL_CMDの枠の中がSTARTとなっている状態でSendボタンを押してシミュレーションを開始します。 ペンギンがぐるぐる回転しているのが見えましたでしょうか? シミュレーションを停止するにはSIM_CTRL_CMDの枠の中がSTOPとなっている状態でSendボタンを押します。 Disconnect Simserverボタンを押して一度サーバと接続を断ちます。 それではいったんSIGViewerを終了しましょう。 次はいよいよコントローラを作成します。 Up:Tutorial? Previous:SSH接続? Next:動力学シミュレーションのサンプル |