2012年6月19日火曜日

Point Cloud LibraryのiMacへのインストール

はじめに

 

 SSII2012のチュートリアルで、Point Cloud Libraryが紹介されていた。これは、デプスセンサの出力値(3次元点群)を処理するためのライブラリである。デプスセンサとしてKinectが有名である。今回、Kinect互換デバイス、Xtion Pro Liveを購入した。以下、サンプルを動かすまでの手順を記す。

環境

  1. iMac
  2. プロセッサ:3.06GHz Intel Core 2 Duo
  3. Mac OS X 10.7.4
  4. Xcode 4.3.3

依存ライブラリのインストール 

 

最初に、macportsを使って以下のパッケージをインストールした。
  1. cmake @2.8.8
  2. boost  @1.49.0
  3. eigen3 @3.0.5
  4. flann @1.7.1
  5. vtk5 @5.8.0
  6. qhull @2012.1
  7. libusb @1.0.9 
いずれのバージョンも、port searchで見つかる最新版である。ただし、libusbだけはuniversalというバリアントを付加する必要がある。 また、vtk5のコンパイルには少々時間がかかる。
次に、OpenNIとSensorのバイナリをここからダウンロードした。
  1. openni-bin-dev-macosx-v1.5.4.0.tar.bz2 
  2. sensor-bin-macosx-v5.1.2.1.tar.bz2
  3. nite-bin-macosx-v1.5.2.21.tar.bz2
niteは必要ないが、ついでである。これを解凍するとディレクトリ内にinstall.shがあるのでこれを実行すれば良い。 ここまでで、Point Cloud Libraryをインストールする準備が整った。

Point Cloud Library(PCL)のインストール 

 

ここからバイナリを手に入れることができる。しかし、PCLのサンプルをコンパイルした際、依存ライブラリとのリンクに失敗した。推奨されている依存ライブラリのバージョンと異なるからであろう。なのでソースからコンパイルすることとした。ソースはここからダウンロードできる。
  1. PCL-1.5.1-Source.tar.bz2
インストール方法はここにある。 デフォルトのインストール先は、/usr/localである。以上でPCLがインストールされた。

サンプルプログラムの実行 

 

PCLを使ったプログラムのコンパイルにはcmakeが推奨されている。今回試した限りではXcodeでも可能である。以下手順を示す。

新規プロジェクトの作成

Command Line Toolとしてプロクジェクトを作成する。

サンプルプログラムの登録

ここにあるサンプルプログラムをプロジェクトに登録する。

コンパイルオプションの設定

Other Linker Flagsに以下を追加する。
-lpcl_common -lpcl_visualization -lboost_thread-mt -lpcl_io -lpcl_filters 

Header Search Pathsに以下を追加する。
/usr/local/include/pcl-1.5/ /opt/local/include /opt/local/include/eigen3/ /usr/include/ni/ /opt/local/include/vtk-5.8/

Library Search Pathsに以下を追加する。
/usr/local/lib /opt/local/lib 

 

実行 

実行すると、以下のエラーが出る。
Open failed: File not found!
node depth problems
node image problems
node ir problems

ここによると、新規にディレクトリ/etc/primesenseを作成し、以下のファイルをその中にコピーせよとある。
  • OpenNI-Bin-Dev-MacOSX-v1.5.4.0/Samples/Config/SamplesConfig.xml
その通りにしても同じエラーが出る。PCLのソース(PCL-1.5.1-Source/io/src/openni_camera/openni_device.cpp)をgrepすると以下の2カ所からSamplesConfig.xmlを読んでいることが分る。
  • /etc/openni/SamplesConfig.xml
  • /etc/primesense/SamplesConfig.xml
従って、/etc/openni/の方にもSamplesConfig.xmlをコピーした。これで実行できた。ただし、
node ir problems
は依然として出たままである。また、Releaseモードでは落ちる。Debugモードでは動く。素直にcmakeを実行した方が良い。追記

0 件のコメント:

コメントを投稿