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 ビューワーで接続するとロボットが机の前に立っていて、机の上に缶とペットボトルが置いてあります。 シミュレーションをスタートさせるとロボットが空き缶もしくはペットボトルに手を伸ばし、それをもってゴミ箱へと運びます。 ゴミ認識 †このサンプルでは缶、もしくはペットボトルをゴミと認識してゴミ箱に運びます。 ロボットのコントローラを見てみます。 $ emacs CleanUpRobot.cpp 300行目あたりにrecognizeTrashという関数がありここでゴミを認識します。 このサンプルではゴミの名前が既に分かっていて、乱数でゴミを決定し、直接ゴミの位置を取得しています。 画像処理や距離センサなどでゴミを認識する場合はここにコードを追加していきます。 Clean Up タスクサンプル 2 †サンプル1ではゴミの名前からゴミの位置を直接取得しました。次のサンプルではゴミの名前をロボットがあらかじめ知ることができず、画像処理や距離センサの情報のみからゴミの位置を推定するためのサンプルプログラムを紹介します。 ロボットはゴミの名前を知ることはできないので、このサンプルではロボットの手と衝突したオブジェクトをgraspします。 さらにこのサンプルではサービスプロバイダを作成しクライアント側でゴミの位置を認識します。 コントローラサンプルコード取得 †以下のサンプル(最新版)をダウンロードします。 v3 修正点 †
コンパイル †次に展開してコンパイルします。 $ 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: 2454,
today: 2,
yesterday: 0
|