視覚に関する操作
[
Front page
] [
New
|
List of pages
|
Search
|
Recent changes
|
Help
]
Start:
Up:[[Tutorial]] Previous:[[エージェント間のメッ...
----
#contents
*視覚に関する操作方法 [#f37ce459]
※このチュートリアルはv2.1.0以降対応しています。
視覚に関する操作方法を説明します。~
//なお、ここで説明する機能はSIGViewer1.3.5以降のバージョ...
**周りを見渡す [#scce7ec9]
エージェントがいろいろな方向を見渡すことができるサンプル...
***コントローラ作成 [#t10e6f74]
$ cd ~/MyWorld
$ emacs WatchController.cpp
WatchController.cpp
#highlight(cpp){{
#include "Controller.h"
#include "Logger.h"
#include "ControllerEvent.h"
#define PI 3.141592
#define DEG2RAD(DEG) ( (PI) * (DEG) / 180.0 )
class WatchController : public Controller
{
public:
void onRecvMsg(RecvMsgEvent &evt);
};
void WatchController::onRecvMsg(RecvMsgEvent &evt)
{
SimObj *my = getObj(myname());
//受け取ったメッセージをint型に変換します
const char *value = evt.getMsg();
int angle = atoi(value);
if (angle <= 180 && angle >=-180){
//体全体をz軸から指定した角度だけ回転します
my->setAxisAndAngle(0, 1.0, 0, DEG2RAD(angle));
}
}
extern "C" Controller * createController ()
{
return new WatchController;
}
}}
これは回転する角度をメッセージとして受信して、その角度だ...
z軸方向(ロボットが最初に前を向いている方向)からの角度を...
***コンパイル [#ebdcf9b7]
コンパイルします。
$ ./sigmake.sh WatchController.cpp
***リビングルームの世界ファイル作成 [#iea3d264]
新しく世界ファイルを作成します。
$ emacs WatchWorld.xml
WatchWorld.xml
#highlight(xml){{
<?xml version="1.0" encoding="utf8"?>
<world name="myworld5">
<gravity x="0.0" y="-980.7" z="0.0"/>
<!--エージェントRobot-niiの設定-->
<instanciate class="Robot-nii.xml">
<!--エージェント名-->
<set-attr-value name="name" value="robot_000"/>
<!--C++言語の指定-->
<set-attr-value name="language" value="c++"/>
<!--コントローラの指定-->
<set-attr-value name="implementation"
value="./WatchController.so"/>
<!--動力学演算をfalseに設定-->
<set-attr-value name="dynamics" value="false"/>
<!--エージェントの位置(x,y,z)-->
<set-attr-value name="x" value="0.0"/>
<set-attr-value name="y" value="54.0"/>
<set-attr-value name="z" value="-40.0"/>
<!--カメラのID番号,リンク名、方向、位置の設定-->
<camera id="1"
link="HEAD_LINK"
direction="0 -1 1"
aspectRatio="1.5"
fov="45"
position="0.0 0.0 5.0"/>
</instanciate>
<!--リビングルーム-->
<instanciate class="seTV.xml">
<set-attr-value name="name" value="TV_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-20.0"/>
<set-attr-value name="y" value="87.5"/>
<set-attr-value name="z" value="-250.0"/>
<set-attr-value name="visStateAttrName" value="switch...
<set-attr-value name="switch" value="on"/>
</instanciate>
<instanciate class="seDoll_Bear.xml">
<set-attr-value name="name" value="kuma_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="0.0"/>
<set-attr-value name="y" value="9.9"/>
<set-attr-value name="z" value="0.0"/>
</instanciate>
<instanciate class="seToy_D.xml">
<set-attr-value name="name" value="penguin_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="50.0"/>
<set-attr-value name="y" value="6.15"/>
<set-attr-value name="z" value="-40.0"/>
</instanciate>
<instanciate class="seSofa_2seater.xml">
<set-attr-value name="name" value="sofa_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-200.0"/>
<set-attr-value name="y" value="31.85"/>
<set-attr-value name="z" value="-100.0"/>
<set-attr-value name="qw" value="0.707"/>
<set-attr-value name="qx" value="0.0"/>
<set-attr-value name="qy" value="0.707"/>
<set-attr-value name="qz" value="0.0"/>
</instanciate>
<instanciate class="seTVbass_B.xml">
<set-attr-value name="name" value="TVdai_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-20.0"/>
<set-attr-value name="y" value="25.1"/>
<set-attr-value name="z" value="-250.0"/>
</instanciate>
<instanciate class="sePlant_B.xml">
<set-attr-value name="name" value="ki_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="100.0"/>
<set-attr-value name="y" value="56.5"/>
<set-attr-value name="z" value="-250.0"/>
</instanciate>
<instanciate class="seSidetable_B.xml">
<set-attr-value name="name" value="sidetable_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-100.0"/>
<set-attr-value name="y" value="16.0"/>
<set-attr-value name="z" value="-100.0"/>
<set-attr-value name="qw" value="0.707"/>
<set-attr-value name="qx" value="0.0"/>
<set-attr-value name="qy" value="0.707"/>
<set-attr-value name="qz" value="0.0"/>
</instanciate>
<instanciate class="seApple.xml">
<set-attr-value name="name" value="apple_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-50.0"/>
<set-attr-value name="y" value="3.875"/>
<set-attr-value name="z" value="30.0"/>
</instanciate>
<instanciate class="seOrange.xml">
<set-attr-value name="name" value="orange_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="70.0"/>
<set-attr-value name="y" value="2.215"/>
<set-attr-value name="z" value="-30.0"/>
</instanciate>
</world>
}}
これはリビングルームにヒューマノイドロボット(Robot-nii.xm...
この世界ファイルではロボットエージェントにカメラが設置さ...
#highlight(xml:firstline[28]){{
<camera id="1"
link="HEAD_LINK"
direction="0 -1 1"
aspectRatio="1.5"
fov="45"
position="0.0 0.0 5.0"/>
}}
linkでカメラを設置するパーツ名を指定します。このサンプル...
カメラの位置はlinkを設定した場合はlinkの位置からの相対位...
direction, position でカメラの方向ベクトル、位置を設定し...
同様にaspectRatio, fov でカメラのアスペクト比、視野角(y方...
これらのパラメータを設定しなかった場合はデフォルト値が設...
|パラメータ名|デフォルト値|
|position| "0 0 0"|
|direction| "0 0 1" |
|link | "(Root link name)" |
|aspectRatio | "1.5" |
|fov | "45" (degree)|
1エージェントに複数個のカメラを設置する場合は以下のように...
#highlight(xml:firstline[28]){{
<camera id="1"
:
<camera id="2"
:
}}
***起動 [#s12fde3f]
それでは起動してみましょう。
$ sigserver.sh -w ./WatchWorld.xml
SIGViewerでサーバに接続して、シミュレーションを開始します...
#ref(視覚に関する操作(v2.0系)/watch_1.PNG,40%)
次に、ヒューマノイドロボットをクリックすると、左上の小さ...
#ref(視覚に関する操作(v2.0系)/watch_2.PNG)
さらにその枠の右上にあるボタンを押すとロボットから見た映...
#ref(視覚に関する操作(v2.0系)/watch_3.PNG,40%)
元に戻したい場合はもう一度左上のサブウィンドウの右上にあ...
カメラの位置や視線方向を確認したい場合はビューワーの右下...
#ref(./Watch_7.PNG,40%)
カメラの位置とカメラの視線方向がオレンジ色で示されていま...
次に右下のトレイにある"Message"ボタンをクリックして、ヒュ...
#ref(視覚に関する操作(v2.0系)/watch_4.PNG,80%)
するとロボットが90°回転してロボットの視線からはオレンジや...
#ref(視覚に関する操作(v2.0系)/watch_5.PNG,40%)
*Old Version [#e5d66315]
-[[視覚に関する操作(v2.0系)]]
-[[視覚に関する操作(v120330, v1.4.8)]]
#highlight(end)
----
Up:[[Tutorial]] Previous:[[エージェント間のメッ...
#counter
End:
Up:[[Tutorial]] Previous:[[エージェント間のメッ...
----
#contents
*視覚に関する操作方法 [#f37ce459]
※このチュートリアルはv2.1.0以降対応しています。
視覚に関する操作方法を説明します。~
//なお、ここで説明する機能はSIGViewer1.3.5以降のバージョ...
**周りを見渡す [#scce7ec9]
エージェントがいろいろな方向を見渡すことができるサンプル...
***コントローラ作成 [#t10e6f74]
$ cd ~/MyWorld
$ emacs WatchController.cpp
WatchController.cpp
#highlight(cpp){{
#include "Controller.h"
#include "Logger.h"
#include "ControllerEvent.h"
#define PI 3.141592
#define DEG2RAD(DEG) ( (PI) * (DEG) / 180.0 )
class WatchController : public Controller
{
public:
void onRecvMsg(RecvMsgEvent &evt);
};
void WatchController::onRecvMsg(RecvMsgEvent &evt)
{
SimObj *my = getObj(myname());
//受け取ったメッセージをint型に変換します
const char *value = evt.getMsg();
int angle = atoi(value);
if (angle <= 180 && angle >=-180){
//体全体をz軸から指定した角度だけ回転します
my->setAxisAndAngle(0, 1.0, 0, DEG2RAD(angle));
}
}
extern "C" Controller * createController ()
{
return new WatchController;
}
}}
これは回転する角度をメッセージとして受信して、その角度だ...
z軸方向(ロボットが最初に前を向いている方向)からの角度を...
***コンパイル [#ebdcf9b7]
コンパイルします。
$ ./sigmake.sh WatchController.cpp
***リビングルームの世界ファイル作成 [#iea3d264]
新しく世界ファイルを作成します。
$ emacs WatchWorld.xml
WatchWorld.xml
#highlight(xml){{
<?xml version="1.0" encoding="utf8"?>
<world name="myworld5">
<gravity x="0.0" y="-980.7" z="0.0"/>
<!--エージェントRobot-niiの設定-->
<instanciate class="Robot-nii.xml">
<!--エージェント名-->
<set-attr-value name="name" value="robot_000"/>
<!--C++言語の指定-->
<set-attr-value name="language" value="c++"/>
<!--コントローラの指定-->
<set-attr-value name="implementation"
value="./WatchController.so"/>
<!--動力学演算をfalseに設定-->
<set-attr-value name="dynamics" value="false"/>
<!--エージェントの位置(x,y,z)-->
<set-attr-value name="x" value="0.0"/>
<set-attr-value name="y" value="54.0"/>
<set-attr-value name="z" value="-40.0"/>
<!--カメラのID番号,リンク名、方向、位置の設定-->
<camera id="1"
link="HEAD_LINK"
direction="0 -1 1"
aspectRatio="1.5"
fov="45"
position="0.0 0.0 5.0"/>
</instanciate>
<!--リビングルーム-->
<instanciate class="seTV.xml">
<set-attr-value name="name" value="TV_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-20.0"/>
<set-attr-value name="y" value="87.5"/>
<set-attr-value name="z" value="-250.0"/>
<set-attr-value name="visStateAttrName" value="switch...
<set-attr-value name="switch" value="on"/>
</instanciate>
<instanciate class="seDoll_Bear.xml">
<set-attr-value name="name" value="kuma_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="0.0"/>
<set-attr-value name="y" value="9.9"/>
<set-attr-value name="z" value="0.0"/>
</instanciate>
<instanciate class="seToy_D.xml">
<set-attr-value name="name" value="penguin_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="50.0"/>
<set-attr-value name="y" value="6.15"/>
<set-attr-value name="z" value="-40.0"/>
</instanciate>
<instanciate class="seSofa_2seater.xml">
<set-attr-value name="name" value="sofa_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-200.0"/>
<set-attr-value name="y" value="31.85"/>
<set-attr-value name="z" value="-100.0"/>
<set-attr-value name="qw" value="0.707"/>
<set-attr-value name="qx" value="0.0"/>
<set-attr-value name="qy" value="0.707"/>
<set-attr-value name="qz" value="0.0"/>
</instanciate>
<instanciate class="seTVbass_B.xml">
<set-attr-value name="name" value="TVdai_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-20.0"/>
<set-attr-value name="y" value="25.1"/>
<set-attr-value name="z" value="-250.0"/>
</instanciate>
<instanciate class="sePlant_B.xml">
<set-attr-value name="name" value="ki_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="100.0"/>
<set-attr-value name="y" value="56.5"/>
<set-attr-value name="z" value="-250.0"/>
</instanciate>
<instanciate class="seSidetable_B.xml">
<set-attr-value name="name" value="sidetable_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-100.0"/>
<set-attr-value name="y" value="16.0"/>
<set-attr-value name="z" value="-100.0"/>
<set-attr-value name="qw" value="0.707"/>
<set-attr-value name="qx" value="0.0"/>
<set-attr-value name="qy" value="0.707"/>
<set-attr-value name="qz" value="0.0"/>
</instanciate>
<instanciate class="seApple.xml">
<set-attr-value name="name" value="apple_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="-50.0"/>
<set-attr-value name="y" value="3.875"/>
<set-attr-value name="z" value="30.0"/>
</instanciate>
<instanciate class="seOrange.xml">
<set-attr-value name="name" value="orange_0"/>
<set-attr-value name="dynamics" value="false"/>
<set-attr-value name="x" value="70.0"/>
<set-attr-value name="y" value="2.215"/>
<set-attr-value name="z" value="-30.0"/>
</instanciate>
</world>
}}
これはリビングルームにヒューマノイドロボット(Robot-nii.xm...
この世界ファイルではロボットエージェントにカメラが設置さ...
#highlight(xml:firstline[28]){{
<camera id="1"
link="HEAD_LINK"
direction="0 -1 1"
aspectRatio="1.5"
fov="45"
position="0.0 0.0 5.0"/>
}}
linkでカメラを設置するパーツ名を指定します。このサンプル...
カメラの位置はlinkを設定した場合はlinkの位置からの相対位...
direction, position でカメラの方向ベクトル、位置を設定し...
同様にaspectRatio, fov でカメラのアスペクト比、視野角(y方...
これらのパラメータを設定しなかった場合はデフォルト値が設...
|パラメータ名|デフォルト値|
|position| "0 0 0"|
|direction| "0 0 1" |
|link | "(Root link name)" |
|aspectRatio | "1.5" |
|fov | "45" (degree)|
1エージェントに複数個のカメラを設置する場合は以下のように...
#highlight(xml:firstline[28]){{
<camera id="1"
:
<camera id="2"
:
}}
***起動 [#s12fde3f]
それでは起動してみましょう。
$ sigserver.sh -w ./WatchWorld.xml
SIGViewerでサーバに接続して、シミュレーションを開始します...
#ref(視覚に関する操作(v2.0系)/watch_1.PNG,40%)
次に、ヒューマノイドロボットをクリックすると、左上の小さ...
#ref(視覚に関する操作(v2.0系)/watch_2.PNG)
さらにその枠の右上にあるボタンを押すとロボットから見た映...
#ref(視覚に関する操作(v2.0系)/watch_3.PNG,40%)
元に戻したい場合はもう一度左上のサブウィンドウの右上にあ...
カメラの位置や視線方向を確認したい場合はビューワーの右下...
#ref(./Watch_7.PNG,40%)
カメラの位置とカメラの視線方向がオレンジ色で示されていま...
次に右下のトレイにある"Message"ボタンをクリックして、ヒュ...
#ref(視覚に関する操作(v2.0系)/watch_4.PNG,80%)
するとロボットが90°回転してロボットの視線からはオレンジや...
#ref(視覚に関する操作(v2.0系)/watch_5.PNG,40%)
*Old Version [#e5d66315]
-[[視覚に関する操作(v2.0系)]]
-[[視覚に関する操作(v120330, v1.4.8)]]
#highlight(end)
----
Up:[[Tutorial]] Previous:[[エージェント間のメッ...
#counter
Page: