cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

openFrameworksでOMPLを動かしたい(その1)

ロボットの経路計画や動作計画用ライブラリとして有名なOMPL(OpenMotionPlanningLibrary)をWindows10MSVC環境のopenFrameworksで動かせるようにしたいと思います。
The Open Motion Planning Library
当初は、C++できれいに書かれているし単に.libをリンクするだけでいいんじゃない?と思っていましたし、結果的にはそうだったのですが、いろいろはまりポイントがあったので記録に残します。

インストールガイドによると、Windowsにインストールはできるけれどもサポート外でAppVeyorを参考にしてくれ、とあります。
Installation

ハマリポイント1

多分やり方が悪いのだと思うのですが、AppVeyorでビルドしたompl.libはうまくリンクできない。

appveyor版ビルドは使いませんが、ビルドの仕方だけ箇条書きで残します。またGUIのompl.appはこの記事では扱いません。
1.appVeyorgithubのアカウント連携を使ってアカウントを作る
2.OMPLを自分のGithubにフォークする
3.appVeyorにてProject->NewProject->Omplのフォークを指定
4.ビルドを開始。30分ほどで完了、メールで教えてくれる
5.appVeyorにてompl->Artifacts->build/ompl-1.3.2-win64.zipをダウンロード
これを展開して生成物を普通にリンク指定して動かしてみようとしても、リンクの不具合が出てうまく解消できませんでした。

あきらめて、プロジェクトフォルダを眺めるとCMakeList.txtがあり、中を見るとMSVCの記述もあるので普通にCMakeでも良さそうです。
CMakeでビルドしようとみていくと、まずboostで引っかかることに気が付きました。

ハマリポイント2

boostが必要だけど、openFrameworksのboostじゃいろいろ足らない

omplは外部ライブラリとして、EigenとBoost(大きなライブラリにしては、だけ)を必要とします。
openFrameworksは、自身にboost1.58を内包しているのですが、全てではなく一部だけしか持っていません。なので、不足分を自前で用意する必要があります。

もっと新しいバージョンのboostでも多分大丈夫ですが、ここではopenFrameworks0.9.8に合わせてboost1.58を自前で用意したいと思います。
1.https://sourceforge.net/projects/boost/files/boost/からboost1.58.0.zipのソースコードをダウンロードする
2.VisualStudioの「開発者コマンドプロンプトforVS2015」を開き、bootstrap.batを実行します。
3.新しくできたb2.exeを使ってlibを作成[1].ちゃんとカレントディレクトリをbootstrap.batと同じ位置に移動してからじゃないと駄目ですよ。

b2 toolset=msvc threading=multi variant=debug,release link=static runtime-link=static address-model=32 --stagedir=stage/x86 -j 8
b2 toolset=msvc threading=multi variant=debug,release link=shared runtime-link=shared address-model=32 --stagedir=stage/x86 -j 8
b2 toolset=msvc threading=multi variant=debug,release link=static runtime-link=static address-model=64 --stagedir=stage/x64 -j 8
b2 toolset=msvc threading=multi variant=debug,release link=shared runtime-link=shared address-model=64 --stagedir=stage/x64 -j 8

ハマリポイント3

omplのCMakeオプションの見えるところにBoostの表示がない

結果BOOST_ROOTでパスを指定すればよかっただけなのですが、見えるところになかったので焦りました。
CMakeの指定の例:
Where is the source code: D:\workspace\ompl
Where to build the binaries: D:\workspace\ompl\build\release
EIGEN3_INCLUDE_DIR: D:/workspace/eigen-334
Add Entry
Name: BOOST_ROOT
Type: PATH
Value: D:\workspace\boost_1_58_0
Add Entry
Name: BOOST_LIBRARYDIR
Type: PATH
Value: D:/workspace/boost_1_58_0/stage/x64/lib

ようやくompl.libが出来上がりました。つづく。

[1]或るプログラマの一生 » Windows に boost C++ libraries をインストール(ビルド)