2012年9月4日火曜日

下準備(1)

OMPL(Open Motion Planning Library)は、ランダムサンプリングに基づくロボットの運動計画アルゴリズムに関するライブラリです。具体的な衝突判定や視覚化要素はユーザが自由に作成・追加できますが、標準のものとして、OMPL.appが存在します。これはPQP, FCL衝突判定ソフトウェアと、PyQtに基づくシンプルなGUIと、いくつかのサンプルを有しています。また、3次元形状のメッシュ形式についてはAssimpライブラリを用いています。またROS内で使用することもできます。


インストールについて

OMPLのWEBサイトにもインストールのページがあり、インストール方法が記載されています。Ubuntu Linuxであれば、リポジトリを追加することでapt-getでパッケージを導入することができます。また、MacOSXでは、MacPorts、Ubuntu以外のLinuxディストロでは、依存ソフトウェアをパッケージ管理ソフトで導入しておくことで、OMPLのソースをMakeすることができます。
一方、Windowsの場合は、OMPLウェブサイトでは、MingwやVisualStudioを用いた導入方法が記載されていますが、結構大変なので、以下に成功した方法の一つ(MinGW32を使用)を記述します。

テスト環境


  • OS : Windows 7 Professional 64bit
  • RAM : 8GB
  • 直接関係ないが、Visual Studio Express 2010 + Microsoft Windows SDK 7.0導入済み


依存ソフトウェア


  • CMake :OMPLは各種プラットフォームで使用させるために、CMakeを用いたビルドシステムを採用しています。CMakeほーむぺーじからWindows版のインストーラをダウンロードして、インストールします。そして、インストールしたフォルダを環境変数PATHに追加しておきます。
  • MinGW (Minimalist GNU for Windows) :MinGWは、WIndows上でGCC(GNU Compiler Collection)を用いたソフトウェア開発を行うためのツール群です。GCCのほかに、アセンブラやリンカーなどが含まれています。また、MSYSという、コマンド群があり、いくつかのUNIX系コマンドを利用することができます。これらをインストールしておきます。
  • Python:OMPLのライブラリは、Pythonからアクセスすることも可能です。また、OMPL.appはPyQtを用いてGUIを構築しているので、Pythonの環境が必要です。また、後述するBoost.Pythonを使用するためには、事前にPythonをインストールしておく必要があります。
  • Boost:BoostはC++言語の拡張ライブラリで、数多くのソフトウェアで利用されています。OMPLでもさまざまな部分でBoostライブラリを利用しています。さらに、Pythonとの併用においては、Boost.Pythonを利用します。
  • Assimp (Open Asset Import Library):3次元形状モデルを扱うためのライブラリです。内部でBoostを用いています。そのため、Boostの後でインストールします。また、DirectX SDKが必要なので、ここからダウンロード、インストールしておきます。
  • GCCXML:OMPLでは、Python Bindingsを生成するために、pygccxmlとPy++を用いていて、その内部では、GCCXMLを利用します。GCCXMLは、C++のソースコードから、GCCの内部表現を経てXML表現を生成するソフトウェアで、そこからpygccxmlを用いてPythonのクラスを作成します。また、Py++を用いてBoost.Pythonライブラリのコードを生成します。
  • PyQt4:PyQt4は、PythonからQt4ライブラリにアクセスするためのPythonクラスです。PyQtのインストールのためには、sip(こちらもC/C++のコードからPythonクラスを作成するモジュール)が必要です。また、当然Qt4も必要です。
  • PyOpenGL:3D描画のためにOpenGL APIにPythonからアクセスするためのモジュールです。

インストール手順


最初に、CMake, MinGW, Pythonはすでにインストールされているものとします。以降ソースファイルはd:\home\srcにコピーされているとします。また、MinGWシェルとコマンドプロンプト上でgcc, CMake, pythonが実行できるものとします。また、Pythonは、d:\local\python2.7.3にインストールされているとします。

Boostの導入

2012年8月時点での最新版は、1.51です。Boostのサイトからソースアーカイブをダウンロードして展開すると、boost_1_51_0というフォルダができます。コマンドプロンプト(MinGWシェルではない)で、

> bootstrap.bat gcc

と実行すると、ビルドプログラムb2.exeが作成されます。このb2.exeを用いてライブラリを作成しますが、このままだとpythonが認識されず、Boost.Pythonが作成されません。そこで、boost_1_51_0に、以下の内容で、user-config.jamというファイルを作成します。

import toolset : using ;
using python : 2.7 : "d:/local/python2.7.3/python" : "d:/local/python2.7.3/include" : "d:/local/python2.7.3/libs" ;

次にビルドを行います。ここでは、d:\local\boost_1_51というフォルダにインストールすることにします。

> b2 toolset=gcc variant=debug,release link=static,shared --prefix=d:/local/boost_1_51 --user-config=user-config.jam build

しばらく待って、

The Boost C++ Libraries were successfully built!

というメッセージが出ればビルド成功です。
これでエラーが出なければ


> b2 toolset=gcc variant=debug,release link=static,shared --prefix=d:/local/boost_1_51 --user-config=user-config.jam install


でd:\local\boost_1_51下にヘッダやライブラリがインストールされます。ここで、lib下に
libboost_python-mgw***.[a,dll]
というファイルができていれば、boost.pythonも正しくbuild, installされていることになります。
もしもなければ、再度user-config.jamの内容やb2.exeのオプションを確認してください。


Assimpのインストール

Assimpのサイトから、開発版をダウンロードします。開発版はSVNを用いて管理されているので、RapidSVNTotoiseSVNを用いて

https://assimp.svn.sourceforge.net/svnroot/assimp/trunk

をチェックアウトします。また、ASSIMPのサイトから直接スナップショットをダウンロードすることもできます。スナップショットを展開したり、svnでチェックアウトしたディレクトリ内にbuildというディレクトリを作成し、MINGW-SHELL上でそのディレクトリに移動します。そこで、

> cmake-gui ..

とすると、CMakeのGUI設定プログラムが起動し、新しいウィンドウが出てきます。ウィンドウの左下の方の"Configure"ボタンをクリックすると、どのようなMakefileを作成するのかを聞かれるので、"MSYS Makefiles"を選択すると、設定処理が開始されます。
下の画像で、上の方が、設定項目と設定状況です。赤くなっているのが、未設定項目の部分です。下の方が、設定のログで、赤い字のところがエラーになっているところです。

設定処理では、Cコンパイラ(MinGWの場合はGCC, G++)の存在を探したり、Boostを探したりして、ここではBoostの検索に失敗しています。BOOSTには、bootstrap+[b2,bjam]ではなく、CMakeでビルドを行うものもあり、CMakeではそのバージョンのBoostを探しますが、今回はbootstrap版のBoostを用いているので、手動でBoostを教えることにします。具体的には[Boost]グループで、


  • Boost_DIR (Boost(CMake版)の設定ファイルの場所):無いので削除
  • BOOST_INCLUDE_DIR:d:/local/boost_1_51/include/boost-1_51 (修正)
  • BOOST_LIBRARY_DIRS:d:/local/boost_1_51/lib (新規追加)

これでエラーはなくなりますが、その他に、

  • ASSIMP_BUILD_STATIC_LIB (静的ライブラリを作成するか): TRUE 
  • CMAKE_INSTALL_PREFIX (どこにファイルを置くか): d:/local/

と設定しました。インストール先については各自の好みで決めましょう。設定内容が決まったら、"Generate"ボタンをクリックして、Makefile一式が出来上がります。あとはCMake-GUIを終了して、MINGW-SHELL上で

> make ; make install

でインストールされます。
d:/local/assimp/lib/libassimp.a, libassimp.dll
d:/local/assimp/lib/cmake
d:/local/assimp/lib/pkgconfig
d:/local/assimp/include

あとのプログラムのインストールのために、CMake用の設定ファイルd:/local/assimp/lib/cmake/assimp-3.0/assimp-config.cmakeを修正します。
40行目あたりの、

set( ASSIMP_LIBRARY_DIRS "${ASSIMP_ROOT_DIR}/")

set( ASSIMP_INLCUDE_DIRS "${ASSIMP_ROOT_DIR}/")



となっているところを、

set( ASSIMP_LIBRARY_DIRS "${ASSIMP_ROOT_DIR}/lib")
set( ASSIMP_INLCUDE_DIRS "${ASSIMP_ROOT_DIR}/include")

とします。
長くなったので、続きは別記事で。












0 件のコメント:

コメントを投稿