Up:Tutorial?    Previous:HMD+KINECT 


Clean Up タスクサンプル 1

※このサンプルはv2.1.1以降で動作します。

ロボットがゴミをゴミ箱に捨てるサンプルを紹介します。

サンプルコード取得

以下をサーバ側でダウンロードします。

fileCleanUp_v1.tar.gz

コンパイル

次に展開してコンパイルします。

$ tar xzvf CleanUp_v1.tar.gz
$ cd CleanUp_v1
$ make

コンパイルに失敗する場合

コンパイルするには環境変数SIGVERSE_PATHにバージョンSIGVerseのバージョン2.1.1以降を設定する必要があります。

$ export SIGVERSE_PATH=/home/<username>/sigverse-<バージョン2.1.1以降>
$ export PATH=$PATH:$SIGVERSE_PATH/bin
$ bash

※注意)動作環境によっては以下のコードをコントローラの最初に追加する必要があります。

#include <unistd.h>

実行

それでは実行してみましょう。

$ sigserver.sh -w ./CleanUp.xml

ビューワーで接続するとロボットが机の前に立っていて、机の上に缶とペットボトルが置いてあります。

CleanUp_1.PNG

シミュレーションをスタートさせるとロボットが空き缶もしくはペットボトルに手を伸ばし、それをもってゴミ箱へと運びます。

CleanUp_3.PNG

ゴミ認識

このサンプルでは缶、もしくはペットボトルをゴミと認識してゴミ箱に運びます。

ロボットのコントローラを見てみます。

$ emacs CleanUpRobot.cpp

300行目あたりにrecognizeTrashという関数がありここでゴミを認識します。 このサンプルではゴミの名前が既に分かっていて、乱数でゴミを決定し、直接ゴミの位置を取得しています。 画像処理や距離センサなどでゴミを認識する場合はここにコードを追加していきます。

Clean Up タスクサンプル 2

サンプル1ではゴミの名前からゴミの位置を直接取得しました。次のサンプルではゴミの名前をロボットがあらかじめ知ることができず、画像処理や距離センサの情報のみからゴミの位置を推定するためのサンプルプログラムを紹介します。

ロボットはゴミの名前を知ることはできないので、このサンプルではロボットの手と衝突したオブジェクトをgraspします。

さらにこのサンプルではサービスプロバイダを用いてゴミの位置を認識します。


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