Mac + Python で Intel RealSense D415 を使用する

# はじめに

kinectが販売終了になってからしばらく経ちましたが、代替手段として何か良い機材がないかと思っていたところ、Intel RealSense Depth Camera というデバイスが登場したので触ってみました。

# できること

- Intel RealSense Depth Camera D415 のColor画像、Depth画像をpython上で配列取得する。

<img width="1377" alt="スクリーンショット 2018-04-08 22.49.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/197729/719e7242-d564-b824-bdbe-273714bd17e9.png">

# 機材準備
今回使用するRealSenseのモデルはD415とD435が存在し、共にスイッチサイエンスさんから購入可能です。
[https://www.switch-science.com/catalog/3632/](https://www.switch-science.com/catalog/3632/)

D435はD415よりも広角かつグローバルシャッター(カメラや被写体が高速に移動しても歪まない)搭載モデルとなっています。ですが、広角なのはDepthカメラのみで、RGBカメラは同じ画角になっているようです。カラー画像とデプス画像の領域が同じになるようにしたかったので、今回はD415を使用します。


# 環境
- MacBook Pro (2.7 GHz Intel Core i5,16 GB 1867 MHz DDR3)
- macOS Sierra

# 手順

ここでは、brewでインストールしたpythonを使用します。
（試したところ、macにデフォルトで入っているpythonだと、cmakeの時に正常にpython モジュールが吐かれないことが分かっています）

### 環境構築

```
$brew install python
$brew install libusb pkg-config
$brew install homebrew/core/glfw3
$brew install cmake
```

ソースコードをcloneしましょう。

```
$git clone https://github.com/IntelRealSense/librealsense.git
```

まずは、チュートリアルの通りにサンプルプログラムをビルドしてみましょう。

```
$mkdir build && cd build
$cmake .. -DBUILD_EXAMPLES=true -DBUILD_WITH_OPENMP=false -DHWM_OVER_XU=false -G Xcode
```

自分の環境ではcmake時に以下のようなエラーが出ました。

```
G Xcode
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:4 (project):
  No CMAKE_C_COMPILER could be found.
CMake Error at CMakeLists.txt:4 (project):
  No CMAKE_CXX_COMPILER could be found.
-- Configuring incomplete, errors occurred!
```

コンパイラの設定が正しくない様子。

```
$sudo xcode-select --reset
```

こちらでxcodeのパスをリセットしたら上手く行きました。



### pythonモジュールを生成する

pythonモジュールをコンパイルするために、cmake時に以下のようにフラグを立てて実行します。

```
$cmake ../ -DBUILD_PYTHON_BINDINGS=bool:true                                                               

26 月 1:20:30 
-- Info: REALSENSE_VERSION_STRING=2.10.1
CMake Warning at CMakeLists.txt:561 (message):
  Using libuvc!


-- pybind11 v2.2.1
CMake Error at wrappers/pcl/CMakeLists.txt:20 (find_package):
  By not providing "FindPCL.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "PCL", but
  CMake did not find one.

  Could not find a package configuration file provided by "PCL" with any of
  the following names:

    PCLConfig.cmake
    pcl-config.cmake

  Add the installation prefix of "PCL" to CMAKE_PREFIX_PATH or set "PCL_DIR"
  to a directory containing one of the above files.  If "PCL" provides a
  separate development package or SDK, be sure it has been installed.

```
ここでエラー
PCL(Point cloud library)が入っていないので入れます。

```
$ brew install cmake
$ brew install boost
$ brew install eigen
$ brew install flann
$ brew install vtk5 –with-qt
$ git clone https://github.com/PointCloudLibrary/pcl
$ cd pcl
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
```

このあと、次のようなオプションで無事にコンパイルすることができました。

```
cmake .. -DBUILD_EXAMPLES=true -DBUILD_WITH_OPENMP=false -DHWM_OVER_XU=false -DBUILD_PYTHON_BINDINGS=true -DPYTHON_EXECUTABLE:FILEPATH=/usr/local/bin/python  -G "Unix Makefiles"
make
sudo make install
```

サンプルプログラムは/wrappers/python/examplesに入っています。

```
$cd librealsense/wrappers/python/examples
$python opencv_viewer_example.py
```

<img width="1377" alt="スクリーンショット 2018-04-08 22.49.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/197729/719e7242-d564-b824-bdbe-273714bd17e9.png">

これでpythonから自由にカラー画像とデプス画像にアクセスできます。