Up:[[Tutorial]]      Previous:[[SIGViewerによるSSH接続]]     Next:[[動力学シミュレーションのサンプル]]
----

#contents

*テスト実行1 [#h73b6ff6]

※このチュートリアルはバージョン2.1.0以上で正常に動作します。バージョン2.0.3以前の場合は[[こちら>#p618608f]]

SIGVerseサーバを起動して、ビューワーからサーバに接続できることを確認します。

**環境変数の設定(bashの場合) [#g9c46be6]
SIGVerseの利用に必要な環境変数を設定します。

 $ emacs ~/.bashrc

ホームディレクトリにある.bashrcを開いて以下の2行を追加します。

 export SIGVERSE_PATH=/home/<username>/sigverse-<version>
 export PATH=$PATH:$SIGVERSE_PATH/bin

SIGVERSE_PATHにシグバースのインストール先のパスを指定します。<username>と<version>は自分の環境に置き換えます。

bashを起動します。
 $ bash

今後SIGVerseのバージョンアップを行う場合はその度にSIGVERSE_PATHを新しいバージョンに更新するようにしてください。
**SIGVerseの起動 [#v57d5f89]
サーバ側でSIGVerseをインストールした場所に移動してSIGVerseを起動してみます。
  $ cd ~/sigverse-<version>/bin
それではSIGVerseを起動してみましょう。
sigserver.shシェルスクリプト実行して起動します。

SIGVerseを起動するには~/sigverse-<version>/binにあるsigserver.shシェルスクリプト実行して起動します。このとき-pオプションでポート番号を指定します。ポート番号は空いている番号でしたら何番でも構いません。9000番以上の番号で他人と重複しにくい番号をお勧めします。ポートフォワーディングによる接続の場合はローカルポートフォワーディングで指定した「サーバ側で使用するポート番号」をここで指定します。
  $ ./sigserver.sh -p 9001
//このとき-pオプションでポート番号を指定します。ポート番号は空いている番号でしたら何番でも構いません。9000番以上の番号で他人と重複しにくい番号をお勧めします。ポートフォワーディングによる接続の場合はローカルポートフォワーディングで指定した「サーバ側で使用するポート番号」をここで指定します。
  $ sigserver.sh 

 [SYS]  data directory :
 [SYS]   [1]  /home/<username>/sigverse-100317/share/sigverse/data/xml/
 [SYS]   [2]  /home/<username>/sigverse-100317/share/sigverse/data/shape/
ポートフォワーディングにより接続する場合はログイン時に-Lオプションで指定した「サーバ側で使用するポート番号」をここで指定します。

 $ sigserver.sh -p 9001

以下のように表示されればSIGVerseサーバの起動に成功です。

 + '[' -z ']'
 + LD_LIBRARY_PATH=/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server
 + SIGVERSE_X3DPARSER_CONFIG=/home/hoge/sigverse- 2.1.0/share/sigverse/etc/X3DParser.cfg 
 + SIGVERSE_RUNAC=/hoge/okamoto/sigverse-2.1.0/bin/sigrunac
 + SIGVERSE_DATADIR=/home/okamoto/sigverse-2.1.0/share/sigverse/data
 + export LD_LIBRARY_PATH SIGVERSE_X3DPARSER_CONFIG SIGVERSE_RUNAC  SIGVERSE_DATADIR 
 + /home/hoge/sigverse-2.1.0/bin/sigserver
 [SYS]  ///////// //////////////////////////////////////////////////
 [SYS]  ////////////// World number 0  (port 9000) ///////////////
 [SYS]  ///////////////////////////////////////////////////////////
 [SYS]  data directory : 
 [SYS]  	[1]  /home/hoge/sigverse-2.1.0/share/sigverse/data/xml/
 [SYS]  	[2]  /home/hoge/sigverse-2.1.0/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
 [SYS]  building entity (entName=(Robot-nii), className=(Robot), X3DFileName= (/home/hoge/sigverse-2.1.0/share/sigverse/data/shape/robot_nii_v2.x3d)) 
 read /home/hoge/sigverse-2.1.0/share/sigverse/etc/X3DParser.cf g
 *** 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[0].optionString = (-Djava.class.path=/home/hoge/sigverse- 2.1.0/share/sigverse/jar/X3DParser.jar:/home/hoge/sigverse- 2.1.0/share/sigverse/jar/xj3d-all.jar) 
 options[1].optionString = (-Djava.library.path=/tmp)
 Java VM start ok
 all done.[SYS]  waiting for connection...
 [SYS]  waiting for connection...

SIGVerse起動時にポート番号を指定しなかった場合はワールド番号とポート番号が自動で割り振られます。
ここではここではワールド番号0 ポート番号9000が割り振られました。

SIGVerseが正常に起動しました。
**ビューワーからサーバへの接続 [#y6dcd8b2]
次にSIGVerseを起動した状態のままビューワーを使ってサーバに接続します。
まずSIGViewerを起動します。
***サービス名の入力 [#tfaa5f8b]
まず、サービス名を入力します。ビューワーは画像データなどをSIGVerseに提供します。SIGVerseのエンティティがこのサービスを利用する際にこの名前が必要となります。現在は他のユーザーがいないのでデフォルトの"SIGViewer"のままにしておきます。
***SSH接続しない場合 [#rcaf844d]

SSHによる接続はせず直接サーバに接続する場合はSIGVerseサーバのホスト名、上で起動したポート番号をそれぞれ入力します。
SSHによる接続はせず直接サーバに接続する場合はSIGVerseサーバのホスト名、上で割り振られたワールド番号(もしくはポート番号)をそれぞれ入力します。

#ref(./connectServer1.PNG,60%)

***CygwinによるSSH接続の場合 [#g5c8de6d]
[[CygwinによるSSH接続]]の設定が完了しているものとします。ホスト名をlocalhostと入力し、ポートフォワーディングで設定したポート番号を入力します。
#ref(./connectServer2.PNG,60%)

***ビューワーによるSSH接続の場合 [#g8845514]
[[SIGViewerによるSSH接続]]の設定が完了しているものとします。ログインしたいサーバのホスト名と、ポート番号を入力した後Connect by SSH にチェックを入れます。次にSSHログイン時のユーザー名とキー作成時に設定したパスフレーズを入力します。
[[SIGViewerによるSSH接続]]の設定が完了しているものとします。ログインしたいサーバのホスト名と、ワールド番号(もしくはポート番号)を入力した後Connect by SSH にチェックを入れます。次にSSHログイン時のユーザー名とキー作成時に設定したパスフレーズを入力します。
#ref(./connectServer3.PNG,60%)
***接続 [#vf88da90]

"Connect"ボタンを押してビューワーで以下のようなロボットが見えれば接続成功です。

#ref(./connectServer4.PNG,50%)
SIGViewerの視点や方向を変えるには画面上でCtrl(もしくはShift)を押しながら右クリック、または右クリックのみの状態でマウスを動かします。
#ref(テスト実行(v2.0系)/connectServer4.PNG,50%)
SIGViewerの視点や方向を変えるには画面上でCtrl(もしくはShift)を押しながら右クリック、または右クリックした状態でマウスを動かします。

接続が完了したら、サーバ側では以下のようなメッセージが出ます。
 [SYS]  waiting for connection...
 [SYS]  SIGViewer is connected
 [SYS]  Service: "SIGViewer" is available


**SIGVerseの停止 [#j89cc189]

ビューワーからSIGVerseを停止するには"Quit Simulation"ボタンを押します。本当に終了してもよいか聞かれるのでOKを選択します。これでSIGVerseシミュレーションは終了します。
シミュレーションをいったん終了するにはビューワーの右下トレイのSTOPボタンを押します。

ビューワーからSIGVerseサーバーを終了するには"Quit Simulation"ボタンを押します。本当に終了してもよいか聞かれるのでOKを選択します。これでSIGVerseシミュレーションは終了します。

ビューワーからではなくサーバでシミュレーションを終了する場合は以下のようにします。


まず、サーバ側でctrl+zボタンを押してSIGVerseサーバを一旦停止します。
このときSIGVerseがバックグラウンドで起動し続けているため、同じポート番号でSIGVerseを起動することができなくなります。よって、killコマンドを使ってSIGVerseプロセスを終了する必要があります。
まずビューワーの右下のトレイにあるDisconnectボタンを押してサーバから切断します。次にサーバ側でctrl+cボタンを押してSIGVerseサーバを一旦終了します。
このときSIGVerseがバックグラウンドで起動し続ことがあります。以下のコマンドを使うとSIGVerseプロセスを強制終了することができます。

以下のシェルスクリプトを作成します。
// $ cd ~
 $ emacs kill.sh

 #!/bin/bash
 
 for i in `ps aux | grep sig | grep $(whoami) | awk '{print $2}'`; do
     echo process id: $i
     kill -9 $i
 done
 
// for i in `ps aux | grep sigserver | grep <username> | awk '{print $2}'`; do
//     echo process id: $i
//     kill -9 $i
// done

実行できるように権限を変更します。

 $ chmod 744 kill.sh

実行します。
 $ ./kill.sh
     :
 [1]+  強制終了            ./sigserver.sh -p 9001  (wd: ~/sigverse-100908/bin)
これでプロセスが終了します。

 $ sigkill.sh
   
現在起動中のプロセスを確認するには以下のコマンドを使います。
 $ ps aux | grep $(whoami)

今後省略しますが、SIGVerseを起動するたびにビューワーでシミュレーションを終了するか、サーバ側でkill.shを実行するようにしてください。
//sigkillを使うと自分が起動しているシグバースプロセスをすべて強制終了してしまいます。ポート番号を指定してSIGVerseサーバを終了する場合は以下のコマンドを使用します。

// $ sigend -p 9001

//**SIGViewerの起動 [#k2157e91]
//
//インストールが完了したら、サーバ側でまずSIGVerseを起動します。
//
//$ cd ~/sigverse-<version>/bin
//$ ./sigserver.sh -p 9001
//これによりポート番号9001のSIGVerseプロセスを終了します。
//※ただし他のユーザーのプロセスを誤って終了させてしまう可能性があるので使うときは注意が必要です。

//次にSIGViewerを起動し、"Connection"の枠の中にある"server host name"に接続するサーバのホスト名、"server port No"にサーバで-pオプションを使って指定したポート番号を入力します。ポートフォワーディングによる接続方法は[[こちら>ポートフォワーディングでサーバに接続する方法]]
//念のため
// $ sudo chmod 700 ~/sigverse-<version>/bin/sigend 

//次にサーバ側でSIGVerseを起動した状態でSIGViewerの"Connect to SimServer"ボタンを押してサーバに接続します。

//※この時firewallによるブロックを行いますかと聞かれることがあります。ここではfirewallによるブロックを解除するを選択してください。firewallによるブロックをすると一部使えない機能があります。


//#ref(inst_1.jpg)

//ここでSIGViewerで接続しても現時点では何も見えないと思います。

//SIGViewerを終了するときは、Disconnect SimServerボタンをクリックして接続を断ってから終了します。

//**SIGViewerの設定 [#r909f8c1]

//SIGViewerの設定はインストールした場所
//(デフォルトではc:\Program Files)
//の

//SIGViewer_*.*\release\
//
//にあるstartup.cfgで行います。
//
//このファイルではSIGViewerのカメラの位置や視線の方向などの設定を行えます。


*テスト実行2 [#k98de9c8]
次に世界ファイルというものを作成して仮想世界にオブジェクトを登場させます。
先ほど登場したロボットはデフォルトで用意された世界ファイル(MyWorld.xml)に記述されたものです。
**世界ファイル作成 [#z2214ae9]
 $ cd ~/sigverse-<version>/share/sigverse/data/xml
ここに世界ファイルを作成します。世界ファイルとはxmlファイルで記述されており、仮想世界の設定や登場するキャラクターの設定を行います。
 $ emacs test.xml

test.xml

#highlight(xml){{
<?xml version="1.0" encoding="utf8"?>
<world name="testworld">

  <!--重力の設定-->
  <gravity x="0.0" y="-980.6" z="0.0"/>

  <!--登場キャラクターのインスタンス作成-->
  <instanciate class="seToy_D.xml">

    <!--キャラクターの名前-->
    <set-attr-value name="name" value="Toy_D"/>

    <!--動力学演算の機能off-->
    <set-attr-value name="dynamics" value="false"/>

    <!--C++言語の指定-->
    <set-attr-value name="language" value="c++"/>

  </instanciate>
</world>
}}
※ファイル保存時にコードシステムを聞かれたらutf-8を入力します。

これは仮想世界にペンギンのキャラクターを登場させる世界ファイルです。

**起動 [#uaa20dda]
それではSIGVerseを起動してみましょう。

 $ cd ~/sigverse-<version>/bin
 $ ./sigserver.sh -w test.xml -p 9001 &

先ほど作成した世界ファイル(test.xml)を-wオプションで指定しました。xmlファイルを作成したディレクトリまでのパスはあらかじめ設定されているので、指定する必要はありません。


次にSIGViewerを起動して接続先のホスト名、上で起動したポート番号を入力して、"Connect"ボタンを押してサーバに接続します。


#ref(./test_1.PNG,40%)

ペンギンのようなキャラクターが見えます。





//それではSIGViewer、メインサーバを一度終了します。(この時先ほど作成したkill.shを実行します。)

**キャラクターへのアタッチ [#w06ddb12]

このキャラクターを動かす為にはコントローラを作成し、登場するキャラクターにアタッチしなければなりません。ここではすでにいくつかのコントローラのサンプルが用意されているのでそれを使ってテスト実行してみましょう。


//まずSIGVerseを起動します。
// $ cd ~/sigverse-<version>/bin
// $ ./sigserver.sh -w test.xml -p 9001 &

// all done.[SYS]  waiting for connection...

//この状態ではメインサーバではエージェントがアタッチされるのを待っています。

それでは準備されているサンプルコントローラバイナリを読み込み、エージェントにアタッチします。

ペンギンが見えている状態で以下のコマンドを実行します。(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はSIGVerseコントローラのサンプルの一つです。このサンプルは登場するキャラクターがぐるぐる回るサンプルです。

次の-nオプションでアタッチするエージェントの名前を指定します。Toy_Dは先ほどのペンギンのようなキャラクターの名前です。

つまりコントローラGoRound.soがエージェントToy_Dにアタッチされました。

**SIGViewerで動作確認 [#d8e640c8]
それではシミュレーションを開始してみましょう。

次にSIM_CTRL_CMDの枠の中がSTARTとなっている状態でSendボタンを押してシミュレーションを開始します。


ペンギンがぐるぐる回転しているのが見えましたでしょうか?


シミュレーションを停止するには"STOP"ボタンを押します。
"Disconnect"ボタンを押すとサーバとの接続を断つことができます。 

それではいったんSIGViewerを終了しましょう。
次はいよいよコントローラを作成します。

*Old Version [#p618608f]
-[[テスト実行(v2.0系)]]
-[[テスト実行(v120330, v1.4.8)]]

Up:[[Tutorial]]     Previous:[[SIGViewerによるSSH接続]]     Next:[[動力学シミュレーションのサンプル]]
#highlight(end)


Front page   New List of pages Search Recent changes   Help   RSS of recent changes