Up:Tutorial? Previous:エージェント間のメッセージのやりとり Next:サービスプロバイダの使用方法
視覚に関する操作方法を説明します。
エージェントがいろいろな方向を見渡すことができるサンプルを紹介します。
$ cd ~/sigverse-<version>/bin/NewWorld $ emacs WatchController.cpp
WatchController.cpp
これは回転する角度をメッセージとして受信して、その角度だけ体を回転させるサンプルです。
z軸方向(ロボットが最初に前を向いている方向)からの角度を指定します。回転する角度は-180°から180°まで指定することができます。
Makefileの変数OBJSにWatchController.soを追加してコンパイルします。
新しく世界ファイルを作成します。
$ cd ~/sigverse-<version>/bin $ emacs xml/WatchWorld.xml
WatchWorld.xml
これはリビングルームにヒューマノイドロボット(Robot-nii.xml)が立っているというxmlファイルです。リビングルームにはテレビやソファなどがおかれています。
この世界ファイルではロボットエージェントにカメラが設置されています。カメラの位置や方向などは以下のように設置しました。
linkでカメラを設置するパーツ名を指定します。このサンプルではを"HEAD_LINK"に設置しました。ヒューマノイドロボットのパーツ名はJoint定義一覧のLink名を参照してください。関節やパーツを持たないエンティティにカメラを設置する場合はlink名を設定することはできません。
カメラの位置はlinkを設定した場合はlinkの位置からの相対位置となります。
direction, position でカメラの方向ベクトル、位置を設定します。このサンプルではまっすぐ前を向いた方向から、下方向45°に目線があるということになります。
同様にaspectRatio, FOV(field of view)なども設定できます。
1エージェントに複数個のカメラを設置する場合は以下のようにidを1,2,3と順番につけていきます。
それでは起動してみましょう。
$ ./sigserver.sh -w WatchWorld.xml -p 9001
SIGViewerでサーバに接続して、シミュレーションを開始します。リビングルームに立っているヒューマノイドロボット型のエージェントが見えると思います。
#ref(): File not found: "watch_1.PNG" at page "視覚に関する操作"
次に、ヒューマノイドロボットをクリックすると、左上の小さい画面にロボットの目線から見た映像が表示されます。
#ref(): File not found: "watch_2.PNG" at page "視覚に関する操作"
さらにその枠の右上にあるボタンを押すとロボットから見た映像がメイン画面に切り替わります。
#ref(): File not found: "watch_3.PNG" at page "視覚に関する操作"
元に戻したい場合はもう一度左上のサブウィンドウの右上にあるボタンを押します。
次に右下のトレイにある"Message"ボタンをクリックして、ヒューマノイド型ロボットのエージェントに回転する角度を指定して、メッセージを送信します。例えば90を送信します。
#ref(): File not found: "watch_4.PNG" at page "視覚に関する操作"
するとロボットが90°回転してロボットの視線からはオレンジやペンギンのおもちゃが見えているのがわかります。
#ref(): File not found: "watch_5.PNG" at page "視覚に関する操作"
Up:Tutorial? Previous:エージェント間のメッセージのやりとり Next:サービスプロバイダの使用方法