Up:Tutorial? Previous:視覚に関する操作 Next:エージェント視点の画像取得 複数個のカメラを設置する方法 †ヒューマノイド型のエージェントはデフォルトでは顔に一つだけカメラが設置されていますが、複数個のカメラを体の好きな場所に取り付けることができます。ここではエージェントに複数個のカメラを設置する方法を説明します。なお、ヒューマノイド(関節を持ったエージェント)以外のエージェントはカメラを増やすことはできません。(SIGViewer1.3.5以降のバージョン対応) サブカメラを設置する †エージェントにサブカメラを設置するサンプルコードを紹介します。 コントローラ作成 †$ cd ~/sigverse-<version>/bin/NewWorld $ emacs SetCamera.cpp SetCamera.cpp このエージェントはメッセージ"move"を受信すると現在向いている方向に進みます。"rotation"を受信するとエージェントは向きを変えます。回転する角度をメッセージとして受信して、その角度だけ体を回転します。また、"「関節名」=「角度」"というメッセージを送信するとエージェントは関節を指定した角度に曲げます。 それではコンパイルします。 $ emacs Makefile 変更前 #オブジェクトファイルの指定 OBJS = WatchController.so 変更後 #オブジェクトファイルの指定 OBJS = SetCamera.so $ make リビングルームの世界ファイル作成 †世界ファイルは前節(視覚に関する操作)で使用したリビングルームの世界ファイルとほとんど同じものを使います。 $ cd ~/sigverse-<version>/bin $ emacs xml/MultiCamera.xml MultiCamera.xml サブカメラを設置するリンクの名前を(elnk1, elnk2, elnk3, ... , elnk9)で設定します。 また、ヒューマノイド以外のエージェント(seDoll_Bear.xml)にもカメラを設置していますが、この場合はカメラを設置するリンク名を指定する必要はありません。カメラの位置、方向は(vpx,vpy,vpz), (vvx,vvy,vvz)で設定します。 起動 †それでは起動してみましょう。 $ ./sigserver.sh -w MultiCamera.xml -p 9001 SIGViewerでサーバに接続して、シミュレーションを開始します。リビングルームに向かい合って立っている2体のヒューマノイドロボット型のエージェントが見えると思います。 SIGViewerで接続してみるとリビングルームにロボットが立っているのが見えます。 ロボットをクリックするとロボットにつけられたカメラから映し出された画像が左側のサブカメラに表示されます。 "start"ボタンを押してシミュレーションを開始して、SIGViewerからエージェントに"rotation"や"move"などのメッセージを送信してエージェントが向きを変えたり、移動したりすることを確認してみてください。ロボットを動かすと左の画像でサブカメラの視線がつられて動いているのがわかると思います。 サブカメラの切り替え †"camera"タブから左の4つのビューポートに映すカメラを切り替えることが出来ます。 まず、カメラを表示したいエージェントをクリックします。すると"Target Object:"のところにクリックしたエージェントの名前が表示されます。 "SubCam ID:"は上からビューポート1、ビューポート2、ビューポート3、ビューポート4に対応しており、それぞれ好きなカメラ番号で映し出される画面を表示することができます。 メインビューの切り替え †Viewerにメインで表示されている画面をエージェントに取り付けられたカメラからの画面に切り替えることができます。 メインビューで表示したいエージェントをクリックし、cameraタブの"MainCam ID:"をカメラ番号(ヒューマノイド以外の場合はAgentView)を指定するとメインビューがエージェントのカメラ視点に切り替わります。 メインビューを"Robot_1"のカメラ1の画像に切り替えました。 WorldViewに戻すと元の画面に戻ります。 ここではロボットに複数のカメラを設置しましたが人間型エージェントでも同じことが行えます。 Up:Tutorial? Previous:視覚に関する操作 Next:エージェント視点の画像取得
Counter: 1653,
today: 1,
yesterday: 0
|