Up:Tutorial? Previous:物体を持つ動作 Next: ロボット・ダイナミクス(単純モデル) BVHファイルの読み込み †ここではBVH形式のモーションデータをSIGVerseで読み込むサンプルを紹介します。(※このサンプルはバージョン110223以降で正常に動作します。) サンプルコードの取得 †まずSIGVerseがインストールされたディレクトリに移動します。 $ cd ~/sigverse-<version>/bin 次にsoicoまたはsocio2サーバの以下のディレクトリからサンプルコードを取得し、展開します。 ↓こちらからも取得できます。 $ cp /home/SIGVerse/samples/readBVH.tar.gz . $ tar zxvf readBVH.tar.gz $ cd readBVH このパッケージの中には以下のファイルが含まれています。
コンパイル †それでは早速コンパイルをしてみましょう。 Makefile修正 †Makefileを自分の環境に合わせて修正します。 $ emacs Makefile Makefile #SIGVerseソースの場所指定 SIG_SRC = /home/<user-name>/sigverse-<version>/include/sigverse #オブジェクトファイルの指定 OBJS = BVH.o BVHController.so BVHController.o all: $(OBJS) #コンパイルを行います。 BVHController.o: BVHController.cpp g++ -DCONTROLLER -DNDEBUG -DUSE_ODE -DdDOUBLE -I$(SIG_SRC) - I$(SIG_SRC)/comm/controller -fPIC -c -o $@ $< BVH.o: BVH.cpp g++ -DCONTROLLER -DNDEBUG -DUSE_ODE -DdDOUBLE -I$(SIG_SRC) - I$(SIG_SRC)/comm/controller -fPIC -c -o $@ $< BVHController.so: BVHController.o BVH.o g++ -shared -o BVHController.so BVHController.o BVH.o SIG_SRC = /home/<user-name>/sigverse-<version>/include/sigverse の部分の<user-name>, <version>をそれぞれ自分のユーザ名、バージョン番号に置き換えます。 make †コンパイルします。 $ make BVHController.soが作成されたらコンパイルは成功です。 設定 †ファイルの移動 †次にbvhファイル読み込み用のサンプル形状モデルをパスが通ったshapeディレクトリに置きます。 $ cp bvh_man.x3d ../../share/sigverse/data/shape/ クライアント側のSIGViewerのインストール場所 (デフォルトでは C:\Program Files\SIGViewer_<vesion>\SIGViewer\release) にも同様のファイルを置きます。 次に世界ファイルとエージェント設定ファイルをxmlディレクトリに置きます。 $ cp BVHWorld.xml ../xml/ $ cp Man-bvh.xml ../xml/ (※コピー先 ../../share/sigverse/data/xml/) bvhファイルの取得 †読み込ませたいbvhファイルを取得してカレントディレクトリ(~/sigverse-<version>/bin/readBVH)に置きます。本ページのサンプルではPV STUDIOから取得したbvhのサンプルデータAction_Kick_bvh.bvhを読み込ませます。 世界ファイルの設定 †次に読み込ませたいbvhのファイル名を世界ファイルに記述します。 $ cd .. $ emacs BVHWorld.xml BVHWorld.xml ↓ bvhファイルはSIGVerseを実行するディレクトリからのパスを指定します。 BVHWorld.xml 実行 †これで準備は整いました。それでは実行してみましょう。 $ ./sigserver.sh -p 9001 -w BVHWorld.xml SIGViewerでサーバに接続するとエージェントが手を広げて立っているのが見えます。 Sendボタンを押してシミュレーションを開始するとbvhファイルの読み込みが開始され、エージェントが動き始めます。 エージェントがキックします。 サンプルモデル †bvh読み込みサンプルモデル(bvh_man.x3d)で定義された関節名は以下のようになっています。すべての関節がローカル座標系におけるx,y,z軸を中心に回転するように定義されいています。 参考ページ †Up:Tutorial? Previous:物体を持つ動作 Next: ロボット・ダイナミクス(単純モデル) |