読者です 読者をやめる 読者になる 読者になる

Zed Stereo Camera 事始め1

ということで,足回りの目処が立ったので Zed Stereo Camera の環境構築にとりかかります.

ZED Stereo Camera

Stereo Camera に付属している SDK に視差マップを生成してくれるソフトが付いているのですが,どうやらこれが NVIDIAGPU がないと動かないみたいで...
ロボットにつけている Intel NUC には GPU がついてないので,どうしようかな....と思ってます.ひとまず, NVIDIAGPU が付いているノートパソコンに環境を作って動かすことにしました.

1.ZED SDK のダウンロード

 まず, ZED の SDK を下記リンクからダウンロードします.
ZED SDK 1.2 - Developer Center

2.ZED SDK のインストール

$ ./ZED_SDK_Linux_Ubuntu16_v2.0.0.run

3.Cuda8.0 のダウンロード

developer.nvidia.com

4.Cuda8.0 のインストール

 下記ドキュメントの必要なとこだけ拾っていけば,割とすんなりとインストールできました.
docs.nvidia.com

5.OpenCV3.1 のビルド・インストール

 最後, OpenCV3.1 のダウンロードとインストールです.ROSとの兼ね合いもあるので,個別の OpenCV のシステムディスクへのインストールは避けたく,ローカルに適当なインストールフォルダを作ってそこに共有ライブラリのパスを設定します.

OpenCV のダウンロード,3.1.0へのブランチ切り替え,opencv_contribのダウンロード
$ git clone https://github.com/opencv/opencv.git opencv-3.1.0
$ git checkout 3.1.0
$ git clone https://github.com/opencv/opencv_contrib.git opencv_contrib

なお,Cuda8.0との兼ね合いで一部ソースコードを変更しないとビルドが通りませんでした.
"/modules/cudalegacy/src/graphcuts.cpp"のL46の記述を下記のように変更します.

Before :

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

After :

// GraphCut has been removed in NPP 8.0
+#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
cmake のコンフィグレーション設定
cmake -DCMAKE_INSTALL_PREFIX=/installpath/reps/opencv-3.1.0/install -DBUILD_EXAMPLES=ON -DINSTALL_C_EXAMPLES=ON -DWITH_OPENGL=ON -DWITH_V4L=ON -DWITH_QT=ON -DOPENCV_EXTRA_MODULES_PATH=/installpath/reps/opencv-3.1.0/opencv_contrib/modules ..
ビルド実行 & インストール
make -j8
make install
OpenCVの共有ライブラリ設定

/etc/ld.so.conf.d/opencv.conf ファイルを作成し,先ほどインストールしたパスを記述します.つまり,自分の場合だとファイルの中身は下記のようになります.

/installpath/reps/opencv-3.1.0/install/lib

で,ldconfigを実行すれば,上記のパスを共有ライブラリの探索パスとして登録してくれます.
ここまでくれば,ZED SDK のサンプルコードを実行できるようになります.