graspPlugin 環境構築

Ubuntu 10.04 上に graspPlugin の環境を構築するには、下のソフトウェアのインストール手順を順に実行します。GraspPlugin の構築が完了したら、GraspConsumer プラグインによる把持動作計画チュートリアルでハンドロボット PA10 に缶をつかむ動作をさせることができます。なお、GraspConsumerプラグインを使わないのであれば、Choreonoid とgraspPlugin のインストールとビルドで十分です.

OpenRTM のインストール

一括セットアップスクリプトを使って、OpenRTM を Ubuntu 12.04 にインストールする。
ここでは、インストール先を~/src/choreonoid-1.3.0 とする。

OpenRTM-aist-1.0.0-RELEASE から Ubuntu 用一括セットアップスクリプト pkg_install_ubuntu.sh をダウンロードする。
(注:ウェブサイト上では pkg_install_ubuntu.sh と表示されているが、実際にダウンロードするファイルは pkg_install_ubuntu100.sh となる。ただし、2013年9月現在このファイルは存在しないようです。結果的にOpenRTM1.1をインストールすることになると思いますが、問題なく動作することを確認しています。)

ブラウザを使わずに、wget でダウンロードする場合は以下の通り。(以降、囲み内で %で始まる行は端末に打ち込むコマンドを示す。最初の%は含まない)

 % wget http://svn.openrtm.org/OpenRTM-aist/trunk/OpenRTM-aist/build/pkg_install_ubuntu.sh

このスクリプトをコマンドラインで実行すると、必要なパッケージが自動的にインストールされる。

 % sudo sh pkg_install_ubuntu.sh

実行中、以下のようにスクリプトから何度か問い合わせがあるが、すべての問い合わせに対して y と答えて続行する。

問い合わせ例 1

 OpenRTM-aist のリポジトリが登録されていません。
 Source.list に OpenRTM-aist のリポジトリ:
    deb http://www.openrtm.org/pub/Linux/ubuntu/ lucid main
 を追加します。よろしいですか?(y/n)

問い合わせ例 2

 この操作後に追加で XXXkB のディスク容量が消費されます。
 続行しますか [Y/n]?

問い合わせ例 3

 警告: 以下のパッケージは認証されていません!
  (注:ここに表示されるパッケージ名は、その都度異なります)
 検証なしにこれらのパッケージをインストールしますか [y/N]?

[Y/n]と問われているときは、Enter キーを押すだけでyを入力したとみなされインストールが行われるが、[y/N]と問われた場合は明示的にyキーのあとEnterを押さないと、nを入力したとみなされインストールがスキップされてしまう。
もし誤ってインストールをスキップした場合は、もう一度 pkg_install_ubuntu.sh を実行すればよい。

サンプルプログラムを取得

OpenRTM のサンプルのソースは /usr/share/OpenRTM-aist/examples にインストールされる。

 % cp -pr /usr/share/OpenRTM-aist/examples ~/workspace

などとして、ユーザーのワークスペースにサンプルをコピーできる。

OpenRTM 1.1系がインストールされてしまう場合

2012/2/20現在、apt-getでOpenRTM1.0系をインストールしようと思っても、1.1系がインストールされてしまいます。この場合、/etc/apt/preferencesを編集します。OpenRTMのサイトにも書いてありますが、preferencesに以下の記述を追加してください。
--<ここから>--
Package: openrtm-aist
Pin: version 1.0.*
Pin-Priority: 1001

Package: openrtm-aist-dev
Pin: version 1.0.*
Pin-Priority: 1001

Package: openrtm-aist-doc
Pin: version 1.0.*
Pin-Priority: 1001

Package: openrtm-aist-example
Pin: version 1.0.*
Pin-Priority: 1001

Package: openrtm-aist-python
Pin: version 1.0.*
Pin-Priority: 1001

Package: openrtm-aist-python-example
Pin: version 1.0.*
Pin-Priority: 1001
--<ここまで>--

Choreonoid のインストールとビルド

ロボット動作振り付け統合ソフトウェア Choreonoid の導入手順を以下に記す。ここでは一度にgraspPluginの導入はせず、Choreonoidのみをビルドして実行する。なお、graspPluginはChoreonoidのバージョン1.0から1.3.1に対応しています。バージョン1.4への対応は少しお待ちください。

Choreonoid インストール

ソースの入手

Choreonoid ホームページ のダウンロードページから、ソースパッケージ http://choreonoid.org/_downloads/choreonoid-1.3.1.zip をダウンロードして、展開する。
展開先に~/srcを指定することで、~/src/choreonoid-1.3.1ディレクトリが作られ、ビルドに必要なファイルが展開される。

端末を立ち上げ、この~/src/choreonoid-1.3.1ディレクトリをカレントディレクトリとする。

 % cd choreonoid-1.3.1

必須パッケージのインストール

misc/script に、一括インストールスクリプトが用意されているので、実行する。
 % cd choreonoid/misc/script
 % sudo ./install-requisities-ubuntu-1*.**.sh
 (中略)
 続行しますか [Y/n]? 

「*」の部分は対応するバージョン名を入れる。相当量のパッケージをインストールするが、途中で失敗するなら update してから、再度スクリプトを実行する。
 % sudo apt-get update
 % sudo ./install-requisities-ubuntu-1*.**.sh

libgstreamermm-0.10-dev と libqt4-phonon-dev も必要な場合は、手動でインストールする(2013年9月現在必要なし)。
 % sudo apt-get install libgstreamermm-0.10-dev libqt4-phonon-dev 

Ubuntu10.04にChoreonoid1.3.1をインストールする場合は、eigenは自力でインストールする。
 % sudo apt-get install libeigen3-dev

完了したら、Choreonoid ディレクトリに戻る。
 % cd ../..

ccmake を使ったビルド

Makefile を生成するため、ccmake を起動する。

 % ccmake .

ccmake は、最初の起動では EMPTY CACHE とだけ表示される。
emptycache.png
ここで「c」キーを押して configure を行うと、数秒後にキーと値のメニューが表示される。
configure1.png
もう一度cを押すと、画面の下のキーメニューに新しく「Press [g] to generate and exit」の項目が出る。
configure2.png
そこで「g」キーを押すと、ccmake が終了する。これで Makefile が生成されているので、make を行う。
 % make

PCによっては時間がかかる。

Choreonoid の起動

make が完了したら、 choreonoid を実行する。

 % bin/choreonoid

以下のような Choreonoid 起動画面が出たら成功である。
Choreonoid_2.png

graspPlugin のインストールとビルド

glaspPlugin のインストール手順を以下に記す。

必須ソフトウェアのインストール

glaspPlugin のインストールに先立ち、OpenRTM と Choreonoid をインストールする必要がある。
  1. OpenRTM のインストール
  2. Choreonoid のインストールとビルド

加えて、wx-common パッケージをインストールする。

 % sudo apt-get install wx-common 

wx-commonパッケージがないと、ccmakeのconfigureにおいて、wxWidgets_wxrc_EXECUTABLE が NOT FOUND になって失敗する。

これらがすでにインストール済みであれば、この項はスキップして graspPlugin インストール から作業を始めることができる。

graspPlugin インストール

graspPlugin は Choreonoid のプラグインとして提供される。

graspPlugin ソースの展開

以下のサイトにブラウザからアクセスする。

 https://code.google.com/p/grasp-plugin/downloads/list

ここで、graspPlugin-1.3.zip ならびに、PRM-1.3.zipをダウンロードする。

graspPluginのソースを ~/src/choreonoid-1.3.1 の extplugin 以下に展開する。

 % cd ~/src/choreonoid-1.3.1/extplugin
 % unzip graspPlugin-1.3.zip

PRMプラグインのソースを~/src/choreonoid-1.3.1 の extplugin/graspPlugin 以下に展開する。
 % cd ~/src/choreonoid-1.3.1/extplugin/graspPlugin
 % unzip PRM-1.3.zip

なお、開発者は https://grasp-plugin.googlecode.com/svn/trunk/graspPlugin を利用できる。

必須パッケージをインストール

graspPlugin のインストールスクリプトを実行する。(ユーザーパスワードが必要)
 % ./graspPlugin/Grasp/install-requisities-ubuntu.sh

ccmake を使ったビルド

graspPlugin をプラグインとして導入するため、ccmake で Choreonoid のビルド設定を変更する。

 % cd ~/src/choreonoid-1.3.1
 % ccmake .

graspPlugin をビルドするには、ここでccmake で項目を編集する必要がある。
ccmake では、画面の左半分に白地で表示される項目がキーで、右半分に黒地で表示される項目がキーに対する値となる。
上下のカーソルキーを使って目当ての項目に移動したら、エンターキーを押すと値を編集することができる。
値を修正したら、もう一度エンターキーを押すと、再びカーソルキーを上下に動かせるようになる。

2度cキーを押して configure すると、GRASP_PLUGINS と GRASP_ROBOT_MODEL_PLUGINS の二つの項目ができる。
ccmake.png

それぞれに対して、以下の値を設定する。この設定は使うプラグインやロボットのモデルによって異なる。
例えば、双腕ロボットHIROによるピックアンドプレースの場合、
キー GRASP_PLUGINS
値 Grasp;PRM;GripperManipulation;VisionTrigger;RobotInterface
キー GRASP_ROBOT_MODEL_PLUGINS
値 HIRO/Plugin
と設定する。また、例えばPA10によってGraspプラグインの把持計画を使う場合
キー GRASP_PLUGINS
値 Grasp;PRM
キー GRASP_ROBOT_MODEL_PLUGINS
値 PA10/Plugin

となる。目的とするプラグインが依存しているプラグインについては、各プラグインの解説の中に依存プラグインとして記述している。

値を編集したら、「c」キーを押して configure を行う。
数秒後に configure が無事に終了すると、画面の下のキーメニューに新しく「Press [g] to generate and exit」の項目が出る。
pressg.png
「g」キーを押すと、makefileが生成され、ccmake が終了する。

ここで make を実行して、Choreonoid とプラグインをビルドする。
 % make

実行

choreonoid を実行する。

 % bin/choreonoid

以下のような画面が出たら成功。
Choreonoid.png

graspPlugin を組み込んだことによって、ツールバーの種類が増えている。
また、Messageタブにもプラグインファイルを読み込み、起動した旨のメッセージが表示されている。

GraspPlannerComp のビルド

把持動作計画モジュール GraspPlannerComp のコンパイル方法について、以下に記す。

環境整備

ここでは、graspPlugin のインストールとビルド まですでに完了しているとする。

ビルド

GraspPlanner 本体のソースのあるディレクトリに移動し、make する。

 % cd ~/workspace
 % cd Choreonoid/extplugin/graspPlugin/GraspConsumer/GraspPlan20100623/
 % make

おおむね以下のようなプロセスでビルドが実行される。

 `rtm-config --idlc` `rtm-config --idlflags` -I`rtm-config --prefix`/include/rtm/idl GraspController.idl
 rtm-skelwrapper --include-dir="" --skel-suffix=Skel --stub-suffix=Stub --idl-file=GraspController.idl
 GraspControllerSkel.h  was generated.
 GraspControllerSkel.cpp  was generated.
 GraspControllerStub.h  was generated.
 GraspControllerStub.cpp  was generated.
 rm -f GraspPlanner.o
 g++ `rtm-config --cflags` -I. -c -o GraspPlanner.o GraspPlanner.cpp
 rm -f GraspPlanningImpl.o
 g++ `rtm-config --cflags` -I. -c -o GraspPlanningImpl.o GraspPlanningImpl.cpp
 rm -f GraspControllerSkel.o
 g++ `rtm-config --cflags` -I. -c -o GraspControllerSkel.o GraspControllerSkel.cpp
 rm -f GraspControllerSVC_impl.o
 g++ `rtm-config --cflags` -I. -c -o GraspControllerSVC_impl.o GraspControllerSVC_impl.cpp
 rm -f GraspPlanner.so
 g++ -shared -o GraspPlanner.so GraspPlanningImpl.o GraspPlanner.o GraspControllerSkel.o   GraspControllerSVC_impl.o   `rtm-config --libs` -L/usr/lib -L/usr/local/lib
 rm -f GraspPlannerComp.o
 g++ `rtm-config --cflags` -I. -c -o GraspPlannerComp.o GraspPlannerComp.cpp
 g++ -o GraspPlannerComp GraspPlanningImpl.o GraspPlanner.o GraspControllerSkel.o   GraspControllerSVC_impl.o   GraspPlannerComp.o `rtm-config --libs` -L/usr/lib -L/usr/local/lib 

最終成果物である、GraspPlannerComp を実行できれば、成功。

 % ./GraspPlannerComp 

実行メッセージは特に出ない。

Eclipse 全部入りのインストール

Eclipse 全部入り(OpenRTM Eclipse tools)を動作させるには、Ubuntu 標準の Open JDK ではなく、Sun製の JDK が必要である。

sun-java6-jdk のインストール

Sun製の JDK sun-java6-jdk をインストールするには、まず apt のリポジトリを追加したうえで、パッケージリストを取得する。

 % sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
 % sudo apt-get update

ここで JDK パッケージのインストールが可能になる。
 % sudo apt-get install sun-java6-jdk
 
 アップグレード: 0 個、新規インストール: 8 個、削除: 0 個、保留: 0 個。
 57.0MB のアーカイブを取得する必要があります。
 この操作後に追加で 168MB のディスク容量が消費されます。

途中、このような画面が表示されるので、「了解」を選択して続行する。
java6.png

続いて、以下の画面が表示されたら「はい」を選択する。
java6-2.png

インストールが終了したら、デフォルトのjavaをsun-java6に設定する。

 % sudo update-alternatives --config java

ここで、以下のメッセージが出るなら問題はない。
 There is only one alternative in link group java: /usr/lib/jvm/java-6-sun/jre/bin/java
 Nothing to configure.

メッセージが下のようなものだった場合、Sun Java が呼ばれるよう設定する必要がある。
 There are 3 choices for the alternative java (providing /usr/bin/java).
 
  Selection    Path                                      優        Status
 ------------------------------------------------------------
    0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      auto mode
  * 1            /usr/bin/gij-4.4                           1044      manual mode
    2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
    3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manual mode
 
 Press enter to keep the current choice[*], or type selection number: 

こうした場合、Pathの欄が「/usr/lib/jvm/java-6-sun/jre/bin/java」 となっているものを探す。
ここでは 3 が Sun Java ということになるため、3を押してエンターすると、デフォルトのjava がSun のものに変更される。

eclipse 全部入り本体 のインストール

OpenRTM Eclipse tools 1.0-RELEASE から、 Linux用全部入りパッケージ をダウンロードして、(例として)ホームディレクトリのworkspace 以下に展開する。

 % cd workspace
 % wget http://www.openrtm.org/pub/OpenRTM-aist/tools/1.0.0/eclipse342_rtmtools100release_linux_ja.tar.gz
 % tar xzf eclipse342_rtmtools100release_linux_ja.tar.gz
 % cd eclipse

ただし、このまま ./eclipse を起動するとスプラッシュスクリーンのあと空のウインドウが表示されるだけで、正常に起動しない。

そこで、以下のコマンドラインで起動する。

 % ./eclipse -clean -vmargs -Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner-1.9.2.13/xulrunner

一回~数回、このオプションをつけて起動できたら、単に ./eclipse だけでも起動できるようだ。
パネルにカスタム・アプリケーションのランチャを追加して、コマンドを /home/(ユーザ名)/workspace/eclipse/eclipse のように設定すると、端末を使わずに Eclipse を起動できる。

/etc/hosts の設定

Eclipse のRT System Editor 上で、Name Server View が有効にならない場合があります。
これは、 /etc/hosts の IPv6 関係の項目(The following lines are以降の行)をコメントアウトすることで回避できます。

% sudo gedit /etc/host
として、/etc/hosts を編集してください。

/etc/hosts の例
127.0.0.1 localhost
127.0.1.1 yourservername # 注:この項はサーバ名(PC によって異なる)

# The following lines are desirable for IPv6 capable hosts
#::1 localhost ip6-localhost ip6-loopback
#fe00::0 ip6-localnet
#ff00::0 ip6-mcastprefix
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters
#ff02::3 ip6-allhosts

Eclipse のビルドとインクルードの設定

Eclipse 上で作成した Choreonoid プロジェクトに対して、細かい設定を行う。

インクルードパスの設定

インクルードパスを設定すると、不明な型にカーソルを合わせてF3を押すだけで宣言部を参照できるようになる。

まずプロジェクトのプロパティを開く。プロジェクト名を右クリックしてコンテキストメニューを表示し、その一番下の「プロパティ」を選択すると、プロパティ画面が現れる。
[inline:Project-Property.png]
[inline:EclipseProperty.png]
ここで、左ペインの「C/C++ General」を開き、「Paths and Symbols」を選ぶと、インクルードパスの設定画面となる。
[inline:PathsAndSymbols.png]
Assesmbly,GNU C,GNU C++の三項目が選べるが、ここではすべてに対して一括でインクルードパスを登録する。
右の「Add」ボタンをクリックすると、ダイアログが現れる。
[inline:AddDirectoryPath.png]
そうしたらまず「Add to all languages」 をチェックし、右側の4つのボタンから適切なものを選ぶ。
Variables
Eclipse の内蔵変数を利用する場合
Workspace
ワークスペース内のプロジェクトを参照する場合
File system
/usr/include など、システムのインクルードパスを参照する場合
キャンセル
ディレクトリパスの追加を中止する
登録する主なものとして、
ワークスペース
  • /choreonoid/include
  • /choreonoid/thirdparty/eigen3
  • /choreonoid
ファイルシステム
  • /usr/include/qt4
  • /usr/include/pcl-1.3

等がある。

ビルドの設定

Choreonoid では、ccmake で Makefile を生成しているので、Eclipse からもこれを呼び出せるようにしたい。
インクルードパスの場合と同様にプロジェクトのプロパティを開き、C/C++ Build を選択すると、以下のような画面が出る。
[inline:CppBuild.png]
ここで、「Generate Makefiles automatically」のチェックを外すと、Build directory のロックが外れるので、「${workspace_loc:/Choreonoid}」に修正する。

また、マルチコアCPUを積んだPCであれば、並列コンパイルでトータルビルド時間を短縮できる。
Behaviourタブを開いて、「Use parallel build」をチェック、「Use parallel jobs」にコア数に応じた適切な値を設定するだけでよい。
「適切な値」はPCによって異なる。CPUのコア数、デュアル版・クアッド版、ハイパースレッディング機能の有無、等々。
ひとまず コア数(一般に2~8程度)+1~2 として、パフォーマンスに余裕があるなら増やし、なければ減らすことになるだろう。
また、まれに並列コンパイルを行うと問題の発生するプロジェクトもある。
[inline:BuildBehaviour.png]
エラーが出たら即make を中断する「Stop on first build error」は並列コンパイルとは相性がよくないので、通常は外しておくが、上流のコンパイルエラーが下流に響いて大量のエラーが出るときなどはチェックした方がよい。