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でサーバに接続して、シミュレーションを開始します。リビングルームに立っているヒューマノイドロボット型のエージェントが見えると思います。

watch_1.PNG

次に、ヒューマノイドロボットをクリックすると、左上の小さい画面にロボットの目線から見た映像が表示されます。

watch_2.PNG

さらにその枠の右上にあるボタンを押すとロボットから見た映像がメイン画面に切り替わります。

watch_3.PNG

元に戻したい場合はもう一度左上のサブウィンドウの右上にあるボタンを押します。

カメラの位置や視線方向を確認したい場合はビューワーの右下のトレイにあるEntityDataをクリックし、エンティティをクリックします。

Watch_7.PNG

カメラの位置とカメラの視線方向がオレンジ色で示されています。

次に右下のトレイにある"Message"ボタンをクリックして、ヒューマノイド型ロボットのエージェントに回転する角度を指定して、メッセージを送信します。例えば90を送信します。

watch_4.PNG

するとロボットが90°回転してロボットの視線からはオレンジやペンギンのおもちゃが見えているのがわかります。

watch_5.PNG

Old Version


Up:Tutorial?     Previous:エージェント間のメッセージのやりとり     Next:サービスプロバイダの使用方法


Front page   New List of pages Search Recent changes   Help   RSS of recent changes