- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
**新規仮想空間の作成 [#c6d40ee5]
ここでは新しい仮想空間を作成します。
前回インストールしたSIGVerseの sigverse-<version>/binに移動します。
#contents
*新規仮想空間の作成 [#c6d40ee5]
ここではボールが弾むというシミュレーションを行う新しい仮想空間を作成します。
**ツリー構造 [#fea2aba6]
インストールしたパッケージのツリー構造は以下のようになります。
sigverse-<version>
|
|---bin
|---include
| └----sigverse
└---shared
└----sigverse
|----data
|----etc
|----jar
└----samples
今回はsigverse-<version>/binを作業場所とします。
**エージェントコントローラの作成 [#b9411488]
SIGVerseの sigverse-<version>/binに移動します。
$ cd ~/sigverse-<version>/bin
ここに新しいディレクトリを作成します。ディレクトリ名は何でも構いません。
$ mkdir NewWorld
$ cd NewWorld
次に簡単なエージェントコントローラを作成します。emacsまたはviなどのエディタを使ってMoveController.cppファイルを作成します。
次に簡単なエージェントコントローラを作成します。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);
obj->fz(1000); //z方向に力1000を設定
return 5.0;
}
extern "C" Controller * createController() {
return new MoveController;
}
**コンパイル [#hf0f4b09]
次に先ほど作成したコードのコンパイルを行うためのmakefileを作成します。コンパイル時に必要な環境変数をここで設定します。
// emacs make.sh
//make.sh
// #!/bin/sh
// #SIGVerseソースの場所を指定します。
// export SIG_SRC="/home/<username>/sigverse-201003/include/sigverse"
// #コンパイルを行います。
// make clean
// make
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 $@ $<