Webots 使い方まとめ

8. コントローラーをVisual C++でプログラミングする方法

より効率的にプログラミングするためには、やはり使い慣れた高機能なプログラミングソフトを使用することが望ましい。 Microsoft Visual C++はWindowsのプラットフォーム上で動作するC/C++のための統合開発環境(IDE)だ。 WindowsOSでは、このVisual C++をWebotsにビルドインされているgccコンパイラの代わりに使用することができる。

Visual C++ 2008 Expressを用いて設定の説明をする。 注意点として、出力されるexeファイルはVisual C++では実行できず、Webotsで起動する必要がある。(dllエラーがでる)

1. Webotsプロジェクトファイルの準備

すでにWebotsプロジェクトを作成している場合は手順2.へ
新規に空のプロジェクトをWebotsのメニューの Wizard > New Project Directory... から作成する。 もしくはWebotsのディストリビューションからサンプルプロジェクトファイルを自分のドキュメントフォルダにコピーする。
プロジェクトはcontrollersとworldsのサブフォルダを含んでいる必要がある。

2. Visual C++プロジェクトの準備

Visual C++を起動し、ファイル > 新規作成 > プロジェクト を開く。

次に以下を設定する。

プロジェクトの種類 : 全般
テンプレート : 空のプロジェクト
プロジェクト名 : MyController(任意)
場所 : C:\Users\ShogoWatada\Documents\webots\controllers(任意)

ここでプロジェクト名は新規に作成するコントローラーの名前を任意に決める。ただし場所に関しては、 手順1で作成したWebotsプロジェクトファイルのサブディレクトリである"Controllers"を選択しなくてはならない。

3. C++ファイルの作成

プロジェクト > 新しい項目の追加 を開き、次の設定をする。



カテゴリ : コード
テンプレート : C++ファイル(.cpp)
プロジェクト名 : main.cpp(任意)
場所 : c:\Users\ShogoWatada\Documents\webots\controllers\MyController\MyController(任意)

下図のようにソースファイル内に先ほど指定した名前が追加されていれば成功。

※Webotsのサンプルコードを使用する場合(一部書き換えたコードも)、これをVisual C++で使用する場合は拡張子.cを.cppに書き換えなければならない。 これはWebotsのサンプルコードは、Visual C++よりも新しいバージョンのgccコンパイラのためにプログラミングされているからだ。
拡張子が.cのままサンプルコードをビルドすると、次のようなエラーがでる。

MyController.c(24): error C2275: 'WbDeviceTag' : illegal use ofthis type as an expression
MyController.c(24): error C2146: syntax error : missing ';' before identifier 'ir0'
...

4. プロジェクトの構成設定

プロジェクト > "プロジェクト名"のプロパティ を開く。

構成プロパティ > C/C++ > 全般 > 追加のインクルードディレクトリ を選択する。 そこに"C:\Program Files\Webots\include\controller\c"と
"C:\Program Files\Webots\include\controller\cpp"を設定する。
(※OSによっては"Program Files"が"Program Files(x86)")

デフォルトでは、Visual C++は.exeファイルをDebugまたはReleaseというサブディレクトリ内に作成してしまう。 しかし、WebotsはMyControllerのルートディレクトリにある.exeファイルしか実行できない。 そこで次の設定が必要だ。
構成プロパティ > リンカ > 全般 > 出力ファイル を選択する。
値を"..\$(ProjectName).exe"に設定する。

次にリンカーの設定をする。
構成プロパティ > リンカ > 入力 > 追加の依存ファイル に"Controller.lib"を指定する。

構成プロパティ > リンカ > 全般 > 追加のライブラリディレクトリ
"C:\Program Files\Webots\lib"を指定する。
(※OSによっては"Program Files"が"Program Files(x86)")

これで設定は完了。

5. ビルドする

プログラムが完成したらビルドする。
ビルド > MyControllerのビルド を選択。("ソリューションのビルド"でも可)

正しくビルドされると、
"MyProject\controllers\MyController\MyController.exe"が作成される。
MyController(コントローラー名)のルートディレクトリにexeファイルが作成されていることを確認する。

6. ロボットのcontrollerに設定する

Webotsを起動し、従来と同じ方法でロボットのcontrollerの設定を行う。controlelrの選択ダイアログを開くと、Visual C++で作成したプロジェクトの名前があるはずだ。
Runを押して動作を確認しなさい。
注意点として、従来はビルドすると自動的にWebotsプロジェクトが更新されていたが、今回のやり方では、Visual C++でビルドを行った後に、Webots上でRevertを押して手動で更新する必要がある。

また、問題点として、Visual C++で作成したコントローラーはWebots上で動作させたときに下図のような黒い端末画面が起動する。さほど邪魔にはならないが、これを消してしまうとWebotsのコントローラーも終了してしまいう。



HOME > Webots 使い方まとめ > 8. コントローラーをVisual C++でプログラミングする方法