GraspConsumer プラグインを用いた把持動作計画の作成例です。
GraspPlannerCompがあるディレクトリまで移動します。
% cd ~/workspace/Chorenoid/extplugin/GraspConsumer/GraspPlan20170313
% ccmake .
% make
GraspConsumerプラグイン を使うには、ロボットの動作生成ツール Choreonoid、把持動作計画コンポーネント GraspPlannerComp を立ち上げ、この二つのツールを Eclipse の RTシステムエディタで結びつけてやる必要があります。
まず、Ubuntu のアプリケーションメニューのアクセサリから、「端末」を選び、以下のコマンドラインを実行してください。
% ~/workspace/Choreonoid/bin/choreonoid
端末のファイルメニューの「新しいタブを開く」を選んで別の端末を開き、以下のコマンドラインを実行してください。
% cd ~/workspace/Choreonoid/ % cd extplugin/graspPlugin/ % cd GraspConsumer/GraspPlan20170313 % ./GraspPlannerComp
もう一度「新しいタブを開く」メニューで端末を開き、以下のコマンドラインを実行してください。
% cd ~/workspace/eclipse/eclipse
Eclipse の「ウインドウ」メニューバーから、パースペクティブを開く~その他 を選択してください。
「パースペクティブを開く」ダイアログの中から、<RT System Editor> を選んで、OKを押すと、下のような画面が出ます。
ここでツールバーの「ON」ボタンを押して、「System Diagram」を開きます。
という二つの項目が現れます。
もしここで、Name Server View の項目が選択できない場合、/etc/hosts の設定 を参照してください。
ここでさらに下の項目の右向き三角を開くと、という二つの項目があります。
この 「GraspConsumer0|rtc」 が Choreonoid に、「GraspPlanner0|rtc」 が GraspPlannerComp に対応したRTコンポーネントです。
まず GraspConsumer0|rtc を、System Diagram の上にドラッグ&ドロップします。
ドロップすると、青くて四角いコンポーネント「GraspConsumer0」が現れます。
続いて同じように、GraspPlanner0|rtc も System Diagram にドラッグ&ドロップします。
System Diagram 上に、二つのRTコンポーネントが現れています。
さて、コンポーネントの右側にある二つの小さな正方形は、ポートを示しています。
GraspConsumer0 と GraspPlanner0 は、それぞれ二つのポートを持つコンポーネントであるということになります。
ここで、この二つのポート同士を接続します。
どちらでもかまいませんが、コンポーネントの上側のポートをもうひとつのコンポーネントの同じ上側のポートにドラッグ&ドロップします。
すると、「ポートプロファイルを入力してください」というダイアログが出るので、そのままOKボタンを押すと、上のポート同士が線でつながります。
残った下のポート同士も、同じようにして接続して、下の図のような形にしてください。
もしここで、間違えて上のポートを下のポートにつないでしまっても修正できます。
間違ってつないだ線をクリックすると、ポートの両側と線の中心にポイントができます。
この3つのポイントのうちのどれかを右クリックすると、メニューが現れます。]]
メニューの中の「Delete」を選べば線が消えるので、あらためて正しいポート同士を接続してください。
上下のポートがちゃんとつながったら、RTコンポーネントをアクティベートします。
ツールバーの「All Activate」ボタンをクリックして、青く表示されていたコンポーネントが、緑色になったらアクティベート成功です。
Choreonoid にロボットと物体のモデルデータを読み込んで、把持動作をさせます。
最初に PA10 ロボットのモデルデータを読み込みます。
Choreonoid の ファイルメニューの、[読み込み]->[Open HRPモデルファイル] を選び、ファイルダイアログで workspace/Choreonoid/extplugin/graspPlugin/RobotModels/PA10/PA10.yaml を選択して、PA10 のモデルを読み込みます。
これで Choreonoid ウインドウの左側の アイテムタブに「PA10」のチェック項目ができるので、チェックしてやるとシーンタブに直立したPA10が現れます・
この操作の組み合わせで、物体を好きな方向から見ることができます。
Scene タブ上で右クリックして、編集モード を選択すると、PA10 の基部が赤い点で囲まれます。
この基部をドラッグして、PA10を移動させることができます。元あった場所からグリッド一マス程度動かしておきましょう。
今度は缶オブジェクトモデル can200hrp を読み込みます。
再び File メニューから、[読み込み]->[Open HRPモデルファイル] を選び、ファイルダイアログで workspace/Choreonoid/extplugin/graspPlugin/Samples/Object/can200hrp.wrl を選択します。(注:can200.wrl を読み込むことはできない!)
PA10 のときと同様、アイテムタブに現れた「can200」をチェックすると、黒い円筒形のモデル can200 が現れます。
これも編集モードで好きな場所に移動できます。
アイテムタブのPA10をクリックして、=GRASP=ツールバーの「SetRobot」をクリックすると、画面下のメッセージタブに「PA10 is grasping robot」と表示されます。
続いて Items タブのcan200 をクリックして、今度は =GRASP= ツールバーの「SetObject」をクリックします。
Messageタブに「can200 is grasped object」と出たら準備OK。
これで準備が整いました。
「=GraspRTC=」ツールバーの、「Grasp」ボタンを押すと、PA10が缶を把持する体勢になります。
同様に、Samples/Object 下にあるファイル *hrp.wrl を開いて SetObject、Grasp とすることでさまざまな物品を把持することができます。
また、不要なオブジェクトを削除するときは、アイテムタブでオブジェクトを右クリックして、コンテキストメニューから「カット」を選びます。
Choreonoid を使用するたびに、このすべての作業を行うのは骨です。
Choreonoid の ファイル メニューの「名前を付けてプロジェクトを保存」を使うと、 Choreonoid の現在のロボットとオブジェクトの状態を好きな名前のプロジェクトファイル(拡張子は cnoid)として保存できます。
そこで、現在の状態をプロジェクトファイル ~/workspace/PA10.cnoid として保存しておきます。
後日 Choreonoid を起動したとき、ファイル メニューの「プロジェクトの読み込み」を開いて ~/workspace/PA10.cnoid を読み込むと、このセッティングが復元されます。
Eclipse の System Diagram を表示し、ツールバーの「All Deactivate」ボタンを押します。
画面上のコンポーネントが緑から青に変わったら、Choreonoid と GraspPlannerComp、そして Eclipse をそれぞれ終了してください。
以上でチュートリアルは終了です。
おつかれさまでした。