# EyeSim - EyeBotシミュレーター

EyeBotシミュレーターEyeSimは複数制御対応のロボットシミュレーターで、 実際にロボットを制御するEyeBotの同じプログラムを変更することなく使用することができます。EyeSimはロボットのすべてのセンサーだけでなく、ロボットを駆動するアクチュエーター（作動操縦）のシミュレーションを行う機能をもっています。

- オンボード映像(生成した人工的な画像)
- 赤外線センサー
- バンパー
- 走行距離計

アクティブなロボットのリストと一緒にシミュレーション環境と全ロボットの３次元画像を表示します。リスト上のロボットをクリックすると環境の中のロボットの位置を確認できます。また、ロボットのユーザーインターフェースを通じて操作するための、制御パネルウインドウ(EyeBot上にあるLCD画面やボタンと等価)が開きます。

See EyeSim example programs.

いかなるソースコードも変更することなくEyeBotのプログラムを繰り返しコンパイルできるようにするために、このシミュレーションの実現方法は他の多くの方法とは異なっています。ロボット上でRoBIOSライブラリーを使ってEyeBot用プログラムをコンパイルするように、同一のヘッダーをもつ別バージョンのライブラリーを作成しました(ライブラリーを参照)。

#### EyeSimの特徴

- シミュレーションプログラムのコンパイルとシミュレーションライブラリーのリンク
  gccsim myfile.c
- EyeBotのすべてのRoBIOS関数のシミュレーション
- 設定可能な誤差モジュール。実際問題を想定してセンサー測定、アクチュエータ駆動、画質に誤差をもたすことができます。
- キー入力とLCD画面出力
- 各ロボット用の人工的なカラーカメラ映像（ユーザーが生成） (各ロボットの視点から)
- 複数制御対応のロボットシミュレーション
- シミュレートしている環境内での移動ロボットの操縦
- センサーのシミュレート: バンパー、PSD、赤外線接近センサー
  設定されているセンサー名とその値を画面表示
- アクチュエーターのシミュレート: VW作動駆動
- 並列処理
  - 同一環境で実時間に複数台のロボットをシミュレートすることができます。 (この場合にはグローバル変数を使用しないでください！)
  - 各ロボットのプログラムは、それぞれ任意の並列処理用スレッド番号を使用します。
- パラメーターファイル
  - myfile.sim
    メインシミュレーションパラメーターファイルです。環境とロボットファイルにリンクされます。
  - myrobot.robi
    ロボット記述ファイルです。物理的な寸法やセンサー位置を定義します。
  - myrobot.iv
    ロボット形状のOpenInventor 3Dグラフィクスの定義ファイルです。
  - eyesim.ini
    プログラム初期化ファイルです。タイミングパラメーター、誤差設定などを設定します。
  - myenv.maz or myenv.wld
    環境ファイルです。以下を参照してください。
- 環境ファイル
  - Worldフォーマット (Saphira) 例を参照
  - Mazeフォーマット (マイクロマウス) 例を参照

EyeSim V5はThomas Bräunl指導のもとでAxel Waggershauserによって作成されました。 EyeSim V5はLinux上で実行することができ、OpenGL、Qt、commoncppのライブラリーが必要です。EyeSimの詳細については下記を参照してください：

- 書籍: Bräunl, Embedded Robotics, Springer, Berlin, 2003
- 論文: Axel Waggershauser
- ダウンロード領域