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