GraspConsumer プラグインによる把持動作計画チュートリアル

GraspConsumer プラグインを用いた把持動作計画の作成例です。

GraspPlannerCompのビルド

GraspPlannerCompがあるディレクトリまで移動します。

 % cd ~/workspace/Chorenoid/extplugin/GraspConsumer/GraspPlan20170313

ccmakeを実行します。
 % ccmake .

cmakeの画面が表示されるので、cを2回押しConfigureした後、gを押しMakefileをGenerateします。
次にmakeを実行します。
 % make

ディレクトリ内にGraspPlannerCompが生成されていれば成功です。

ソフトウェアの起動

GraspConsumerプラグイン を使うには、ロボットの動作生成ツール Choreonoid、把持動作計画コンポーネント GraspPlannerComp を立ち上げ、この二つのツールを Eclipse の RTシステムエディタで結びつけてやる必要があります。

Choreonoid を起動する

まず、Ubuntu のアプリケーションメニューのアクセサリから、「端末」を選び、以下のコマンドラインを実行してください。

 % ~/workspace/Choreonoid/bin/choreonoid 

新しく Choreonoid ウインドウが開きます。
GraspConsumerTutorial_chorenoid.png

GraspPlannerComp の起動

端末のファイルメニューの「新しいタブを開く」を選んで別の端末を開き、以下のコマンドラインを実行してください。

 % cd ~/workspace/Choreonoid/
 % cd extplugin/graspPlugin/
 % cd GraspConsumer/GraspPlan20170313
 % ./GraspPlannerComp 

GraspPlannerComp は、実行してもとくにメッセージなどは表示しません。

Eclipse の起動

もう一度「新しいタブを開く」メニューで端末を開き、以下のコマンドラインを実行してください。

 % cd ~/workspace/eclipse/eclipse

新しい Eclipse ウインドウが開きます。

Eclipse の設定

RT System Editor を開く

Eclipse の「ウインドウ」メニューバーから、パースペクティブを開く~その他 を選択してください。
perspective.png
「パースペクティブを開く」ダイアログの中から、<RT System Editor> を選んで、OKを押すと、下のような画面が出ます。
RTSystemEditor.png

ここでツールバーの「ON」ボタンを押して、「System Diagram」を開きます。
SystemDiagram.png

RTコンポーネントを設置する

Eclipse ウインドウの左側にある Name Service View のリストに「localhost」もしくは「127.0.0.1」という項目があります。
その頭にある、右向きの三角形をクリックして開くと、
  • PCname(注:ここはあなたのパソコンにつけられた名前になります)|host_cxt
  • MessageView|

という二つの項目が現れます。

もしここで、Name Server View の項目が選択できない場合、/etc/hosts の設定 を参照してください。

ここでさらに下の項目の右向き三角を開くと、
  • GraspConsumer0|rtc
  • GraspPlanner0|rtc

という二つの項目があります。

この 「GraspConsumer0|rtc」 が Choreonoid に、「GraspPlanner0|rtc」 が GraspPlannerComp に対応したRTコンポーネントです。
まず GraspConsumer0|rtc を、System Diagram の上にドラッグ&ドロップします。
DragConsumer.png

ドロップすると、青くて四角いコンポーネント「GraspConsumer0」が現れます。
drop1.png

続いて同じように、GraspPlanner0|rtc も System Diagram にドラッグ&ドロップします。
drop2.png

System Diagram 上に、二つのRTコンポーネントが現れています。

RTコンポーネントのポートを接続する

さて、コンポーネントの右側にある二つの小さな正方形は、ポートを示しています。
GraspConsumer0 と GraspPlanner0 は、それぞれ二つのポートを持つコンポーネントであるということになります。

ここで、この二つのポート同士を接続します。
どちらでもかまいませんが、コンポーネントの上側のポートをもうひとつのコンポーネントの同じ上側のポートにドラッグ&ドロップします。
DragToConnect.png

すると、「ポートプロファイルを入力してください」というダイアログが出るので、そのままOKボタンを押すと、上のポート同士が線でつながります。
PortProfile.png
残った下のポート同士も、同じようにして接続して、下の図のような形にしてください。
Activate.png

ポートを間違えたときは…

もしここで、間違えて上のポートを下のポートにつないでしまっても修正できます。
misconnect.png
間違ってつないだ線をクリックすると、ポートの両側と線の中心にポイントができます。
clickline.png
この3つのポイントのうちのどれかを右クリックすると、メニューが現れます。]]
disconnect-menu.png

メニューの中の「Delete」を選べば線が消えるので、あらためて正しいポート同士を接続してください。

アクティベートする

上下のポートがちゃんとつながったら、RTコンポーネントをアクティベートします。
ツールバーの「All Activate」ボタンをクリックして、青く表示されていたコンポーネントが、緑色になったらアクティベート成功です。
Activated.png

Choreonoid の設定

Choreonoid にロボットと物体のモデルデータを読み込んで、把持動作をさせます。

PA10 の読み込み

最初に PA10 ロボットのモデルデータを読み込みます。
Choreonoid の ファイルメニューの、[読み込み]->[Open HRPモデルファイル] を選び、ファイルダイアログで workspace/Choreonoid/extplugin/graspPlugin/RobotModels/PA10/PA10.yaml を選択して、PA10 のモデルを読み込みます。

GraspConsumerTutorial_openmodel.png.png

これで Choreonoid ウインドウの左側の アイテムタブに「PA10」のチェック項目ができるので、チェックしてやるとシーンタブに直立したPA10が現れます・

GraspConsumerTutorial_show01.pngGraspConsumerTutorial_show02.png

この状態で、マウスのドラッグとホイールで視点の操作ができます。
左ボタンでドラッグする
原点を中心に床面が回転
ホイールボタンでドラッグする
視点を水平移動
ホイールの回転
画面の奥行き方向に視点移動

この操作の組み合わせで、物体を好きな方向から見ることができます。

Scene タブ上で右クリックして、編集モード を選択すると、PA10 の基部が赤い点で囲まれます。
GraspConsumerTutorial_show03.pngGraspConsumerTutorial_show04.png
この基部をドラッグして、PA10を移動させることができます。元あった場所からグリッド一マス程度動かしておきましょう。

缶オブジェクトモデルの読み込み

今度は缶オブジェクトモデル can200hrp を読み込みます。
再び File メニューから、[読み込み]->[Open HRPモデルファイル] を選び、ファイルダイアログで workspace/Choreonoid/extplugin/graspPlugin/Samples/Object/can200hrp.wrl を選択します。(注:can200.wrl を読み込むことはできない!)
PA10 のときと同様、アイテムタブに現れた「can200」をチェックすると、黒い円筒形のモデル can200 が現れます。
Can200.png

これも編集モードで好きな場所に移動できます。

Set Robot と Set Object

アイテムタブのPA10をクリックして、=GRASP=ツールバーの「SetRobot」をクリックすると、画面下のメッセージタブに「PA10 is grasping robot」と表示されます。
GraspConsumerTutorial_setrobot01.png
GraspConsumerTutorial_setrobot02.png
GraspConsumerTutorial_setrobot03.png

続いて Items タブのcan200 をクリックして、今度は =GRASP= ツールバーの「SetObject」をクリックします。
Messageタブに「can200 is grasped object」と出たら準備OK。
GraspConsumerTutorial_setobj01.png
GraspConsumerTutorial_setobj02.png
これで準備が整いました。
「=GraspRTC=」ツールバーの、「Grasp」ボタンを押すと、PA10が缶を把持する体勢になります。
GraspConsumerTutorial_grasp01.png
GraspConsumerTutorial_grasp02.png
同様に、Samples/Object 下にあるファイル *hrp.wrl を開いて SetObject、Grasp とすることでさまざまな物品を把持することができます。

また、不要なオブジェクトを削除するときは、アイテムタブでオブジェクトを右クリックして、コンテキストメニューから「カット」を選びます。

プロジェクトの保存

Choreonoid を使用するたびに、このすべての作業を行うのは骨です。
Choreonoid の ファイル メニューの「名前を付けてプロジェクトを保存」を使うと、 Choreonoid の現在のロボットとオブジェクトの状態を好きな名前のプロジェクトファイル(拡張子は cnoid)として保存できます。
そこで、現在の状態をプロジェクトファイル ~/workspace/PA10.cnoid として保存しておきます。

後日 Choreonoid を起動したとき、ファイル メニューの「プロジェクトの読み込み」を開いて ~/workspace/PA10.cnoid を読み込むと、このセッティングが復元されます。

graspPlugin の終了

Eclipse の System Diagram を表示し、ツールバーの「All Deactivate」ボタンを押します。
画面上のコンポーネントが緑から青に変わったら、Choreonoid と GraspPlannerComp、そして Eclipse をそれぞれ終了してください。

以上でチュートリアルは終了です。
おつかれさまでした。