Up:Tutorial?     Next:Clean Up Task Sample 3


Clean Up タスクサンプル 1

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

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

サンプルコード取得

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

コンパイル

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

$ 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します。

さらにこのサンプルではサービスプロバイダを作成しクライアント側でゴミの位置を認識します。

コントローラサンプルコード取得

以下のサンプル(最新版)をダウンロードします。

v3 修正点

  • ゴミ箱コントローラによるゴミがゴミ箱に入ったかどうかの判定箇所修正.ゴミ箱上空でゴミをリリースすることが条件。
  • ロボットに設置するカメラを2つに修正。
  • テーブルの衝突判定形状修正。
  • (※注意)SIGVerse v2.2.0以降で正常に動作します。

コンパイル

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

$ tar xzvf CleanUp_<version>.tar.gz
$ cd CleanUp_<version>
$ make

ゴミ認識サービス

ゴミを認識するサービスプロバイダのサンプルをクライアント側で以下からダウンロードします。

vc2008

vc2010

ダウンロードしたファイルを展開したらvc++2008(または2010)でRecogTrashService_****.slnファイルを開きます。

編集

サーバ名を自分の環境に合わせて修正します。 RecogTrashService.cppの105行目あたりでSIGVerseサーバに接続します。

   srv.connect("hostname", 9001);  

"hostname"とポート番号9001を自分の環境に合わせて修正してからビルドします。

実行

それでは実行してみましょう。 サーバ側でまずSIGVerseサーバを実行します。

$ sigserver.sh -w ./CleanUp.xml -p 9001

次にビューワーでサーバに接続してシミュレーションを開始します。この時点ではロボットは認識を開始せず、ゴミ認識サービスが起動するのを待っています。

次にクライアント側でゴミ認識サービスを起動します。するとゴミ認識サービスによりゴミの位置が認識されてロボットがペットボトルをゴミ箱に運び始めます。

終了

終了するときはゴミ認識サービスプロバイダの終了→ビューワーでシミュレーション終了(もしくはQuit)→ビューワーでdisconnect→サーバの終了の順に行います。

ゴミ認識

このサンプルではゴミ認識はクライアント側で行います。サンプルコードを見てましょう。

関数recognizeTrashで画像や距離センサのデータからゴミの位置を推定し、trashposにゴミの位置を代入します。 このサンプルでは真ん中の缶の位置を既知として代入しています。


Up:Tutorial?     Next:Clean Up Task Sample 3

Counter: 2259, today: 1, yesterday: 1

Attach file: fileCleanUp_v3.tar.gz 947 download [Information] fileRecogTrashService_v2_vc2010.zip 945 download [Information] fileRecogTrashService_v2_vc2008.zip 934 download [Information] fileCleanUp_v2.tar.gz 921 download [Information] fileCleanUp_v1.tar.gz 999 download [Information] fileCleanUp_3.PNG 1036 download [Information] fileCleanUp_1.PNG 1028 download [Information]

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2015-01-29 (Thu) 12:51:59 (3369d)