新規仮想空間の作成

ここではボールが弾むというシミュレーションを行う新しい仮想空間を作成します。

ツリー構造

インストールしたパッケージのツリー構造は以下のようになります。

sigverse-<version>
      |
      |---bin
      |---include
      |     └----sigverse       
      └---shared 
            └----sigverse
                    |----data
                    |----etc
                    |----jar
                    └----samples  

今回はsigverse-<version>/binを作業場所とします。

エージェントコントローラの作成

SIGVerseの sigverse-<version>/binに移動します。

$ cd ~/sigverse-<version>/bin

ここに新しいディレクトリを作成します。ディレクトリ名は何でも構いません。

$ mkdir NewWorld
$ cd NewWorld

次に簡単なエージェントコントローラを作成します。emacsまたはviなどのエディタを使って  MoveController.cppファイルを作成します。

$ emacs MoveController.cpp

MoveController.cpp

#include "Controller.h"
#include "Logger.h"

class MoveController : public Controller {
public:
  double onAction(ActionEvent&);
};
double MoveController::onAction(ActionEvent &evt) {
  SimObj *obj = getObj(myname());
  obj->fz(1000); //z方向に力1000を設定
  return 5.0;
}
extern "C" Controller * createController() {
  return new MoveController;
}

コンパイル

次に先ほど作成したコードのコンパイルを行うためのmakefileを作成します。コンパイル時に必要な環境変数をここで設定します。

emacs Makefile

Makefile

#SIGVerseソースコードの所在
SIG_SRC  = /home/<username>/sigverse-<version>/include/sigverse

#自作コード
CPP_SRCS = MoveController.cpp

#オブジェクトファイル
OBJS     = MoveController.o

#コンパイルを行います。
$(OBJS): $(CPP_SRCS)
        g++ -DCONTROLLER -DNDEBUG -DUSE_ODE -I$(SIG_SRC) -
I$(SIG_SRC)/comm/controller  -fPIC shared -o $@   $<

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