主に graspPlugin を初めて使う方、まだ使い始めたばかりの方を対象にしたチュートリアルです。
Choreonoid でモデルファイルを開き、Scene画面上に配置する手順を記します。
~/src/choreonoid-1.0.0 にインストールした場合、端末から
% cd ~/src/choreonoid-1.0.0 % bin/choreonoid
画面下のMessageタブにも、さまざまなメッセージが表示されます。
ツールバーの詳細についてはChoreonoid 1.0 ヘルプを参照してください。
graspPlugin で利用するモデルは、File メニューで、Open - OpenHRP model file を使って開きます。
モデルを開くと、Items タブにチェックボックスとモデル名が表示されます。
チェックボックスをオンにすると、Scene画面上の原点に3Dモデルが表示されます。
モデルファイルは、extplugin/graspPlugin/Grasp 以下に配置されています。
例えば ahiru.wrl と ahiruhrp.wrl があった場合、開くことができるのは arihuhrp.wrl ということです。
ahiru.wrl を読み込んでも、以下のようなメッセージが出るだけで何も起こりません。
Loading OpenHRP model file "/home/asa/workspace/Choreonoid/extplugin/graspPlugin/Grasp/Object/ahiru.wrl" Humanoid node is not found -> failed.
モデル名で示します。ファイル名は、モデル名+hrp.wrl となります。
また、アイテムAを選択したまま新しいモデルを開くと、新しいモデルはアイテムAの子アイテムBとして追加されます。
アイテムAの名前の頭の三角マークをクリックすると、子モデルリストを開閉できます。
先にも述べましたが、Items タブのチェックボックスをオンにすると、Scene ビュー上に3Dモデルが表示されます。
読み込んだばかりのモデルはみな原点に配置されます。このとき、小さなモデルは大きなモデルに埋まって見えないことがあります。
例えばこの図では、PA10の基部にあひるが埋まっています。
このようなときは、まず Kinematics バーを FK か IK にセットしたあと、Scene ビューバーのEditボタンをクリックして、Edit Modeにしてください。
Edit Mode では、モデルの周囲に赤い立方体が現れます。このモードでモデルにマウスカーソルを合わせると、モデルの輪郭が赤い線で囲まれます。
見えないモデルを確認したら、モデルを左ボタンでドラッグすると、移動させることができます。
Scene ビューバーのViewボタンでView Mode に戻ります。
(Scene ビュー上で、右クリックしたときに出るメニューでも、View Mode と Edit Mode の切り替えができます)
オブジェクトを見失った時は、Scene ビューバーの Look ボタンを押すと、選択中のモデルがよく見える位置にカメラを移動します。
Edit Mode では、モデルの周囲に赤い点が表示されます。
また、マウスカーソルをモデルに重ねると、モデルが赤線で囲まれて、選択状態になります。(モデルを選択していない状態での操作は、View Mode と同じです)
このとき、メニューバーのキネマティクスモードによって操作が変わります。FK または IKモードにしてモデル(ロボットの場合、モデルの土台)を左ドラッグすると、モデルを移動できます。
モデルの移動軸は視点によって変わるので、グリッドの回転と視点移動をうまく組み合わせて、好きな場所にモデルを移動してください。
モデルの向きを調整するには、IKモードで Enable Attitude Edit をオンにして、モデルをクリックします。
すると、モデルの周囲を赤青緑の三色のリングが囲みます。このリングを左ドラッグすると、それにつれてモデルの向きが変化します。
赤がロール(横揺れ)、青がヨー(偏揺れ)、緑がピッチ(縦揺れ)となります。
シーンビューバーのViewを押すか、Scene 画面の右クリックメニューで、View Modeを選ぶと、View Mode に戻ります。
Scene 画面上に配置したハンドロボットとモデルの状態をまとめて、プロジェクトファイル(拡張子 .cnoid)に保存できます。
File メニューの Save Project As を選ぶとファイルダイアログが出るので、好きなディレクトリに好きな名前でプロジェクトをセーブしてください。
同じく File メニューの Open Project からプロジェクトファイルを選択して、いつでも保存したときの状態に戻すことができます。
また、ファイルバーのO.P.(Overwriting Project)をクリックすると、現在の状態を即座にプロジェクトファイルに上書きします。
Graspプラグインを利用して、プランナーバーのSetObject, SetRobot, Grasp の三つのツールボタンを使って、把持計画を行うチュートリアルです。Graspプラグインについては、 Grasp プラグイン解説 を併せてお読みください。
端末から Choreonoid を起動します。(今回は GraspPlannerComp や Eclipse 全部入りは使いません。)
まず Choreonoid 1.0 基本チュートリアル を参考に、ハンドロボット PA10.yaml とあひる ahiruhrp.wrl を開き、適切に配置します。
配置が済んだら、把持ロボットと、対象物をセットします。
Items タブの PA10 を選択し、プランナーバーの「SetRobot」をクリックします。
Message タブに「PA10 is grasping robot」と表示されたら成功です。
続いて同じように、Items タブの ahiru を選択し、今度はプランナーバーの「SetObject」をクリックします。
Message タブに「ahiru is grasped object」と表示されたら成功です。
ロボットと対象物を設定したら、プランナーバーの「Grasp」をクリックします。
うまくいけば、ロボットの姿勢が変わり、対象物をつかんだ形になります(注:アニメーションはありません。アームの動作計画を生成するためにはPRMプラグインを使います)。また、Items タブの PA10 の子アイテムとして、「GRC」が追加されます。
メッセージ欄には以下のように表示されています。
prehension 0 is selected Success: Grasp Plannng
![]() |
![]() |
![]() |
物体が遠すぎてつかめない | 物体をロボットに近づけた | 把持成功! |
---|
Graspに成功したら、今度はロボットの周辺の何もない場所をクリックして、「Place」を押します。クリックした場所に、ロボットが対象物を置きます。
把持動作計画は、SaveGraspPattern でファイルに保存して、把持動作計画モジュールなどの外部システムで利用できます。
PRMプラグイン、Graspプラグインを用いて、プランナーバーと、パスプランバーによりアームの動作計画を行うチュートリアルです。PRMプラグインについてはPRM プラグイン解説をごらんください。
まずGrasp プラグイン解説と同様に、PA10 とあひるを読み込み、それぞれに SetRobot/SetObject をかけます。
次にテーブルを用意します。File メニューの Open - OpenHRP model file で、Grasp/Object/table-can.wrl を選択してください。
Items タブの table をチェックして、テーブルを適切な(PA10の動作を妨げるほど近くなく、手が届かないほど遠くない)位置に移動し、あひるをテーブルの上に配置します。
Items タブで table-can が選択されているのを確認して、プランナーバーの SetEnv をクリックします。
メッセージ欄に
table-can is sorrounding environment
Please selecet more than one bodyitem
この操作によって、PRMプラグインがアームの動作計画を行う際、table-can にアームがひっかからないよう考慮されるようになります。
プランナーバーの Grasp をクリックすると、いつものようにPA10があひるをつかみます。
PA10があひるをつかんだら、いよいよ動作計画です。パスプランバーの Start をクリックします。
メッセージ欄に
Trajectory Planning is finished
このとき、Items タブに「GraspPoseSeqItem」という項目が追加されます。
PA10 の子の GraspPoseSeqItem を選択して、タイムバーのスタートアニメーションを押すと、アームが動き出してあひるをつかむ一連の動作を動画として見ることができます。
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 をそれぞれ終了してください。
以上でチュートリアルは終了です。
おつかれさまでした。