ここではボールが弾むというシミュレーションを行う新しい仮想空間を作成します。
インストールしたパッケージのツリー構造は以下のようになります。
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 $@ $<