Help us understand the problem. What is going on with this article?

深度カメラ「intel RealSense D435i」にNode.jsからアクセスする方法(試行錯誤中)

忘年会続きの師走、aptpod Advent Calendar 2018の20日目。今回で4記事目(笑)とまあまあ頑張ったほうなのですが、実は今回の記事が一番書きたかったネタです:sunglasses:

深度カメラ「intel RealSense D435i」とは

rs-save-to-disk-output-depth.png

深度カメラとは、映像だけでなく物体までの奥行きがセンサーで検出できるカメラです。有名所でいうとKinectも深度カメラの一つです。ですがKinectは2017年11月に生産終了となり(記事「米マイクロソフトがKinectの生産を終了。販売分についてはサポート継続」)、Amazonでも定価よりも高い価格で販売されていたりと世の中から確実に数を減らしています。

Kinectの次はどの深度カメラがいいのか? と世の中がザワザワしている中で、新たな選択肢としてintel RealSenseが候補として上がってきました。Kinectの生みの親MicrosoftもKinectのSDKページで「開発者の間では Kinect ハードウェアからの移行が進んでいるため、Microsoft では、開発者の皆様に Intel RealSense デプス カメラを検討することをお勧めしています。」とおすすめしているほどです。

intel RealSenseにも様々なモデルがあるのですが、2018年11月13日に発表されたD435iに心奪われ、酔った勢いでポチりました(後悔はしていない)。惹かれたポイントとしては、IMU(慣性計測ユニット)が初めて搭載されたことです。これにより、元々の物体までの奥行きに加え、カメラのピッチ、ヨー、ロールの回転を計測できるようになりました。

※intel RealSense D432iはUSB3.0搭載の端末が対象です

d435i.jpg
▲intel ReasSense D435i

そんなintel RealSense D435iを、JavaScript(Node.js)でアクセスできるようになるまでの流れをまとめました(ハマったところがありすぎた...特にWindows...)。

※この記事ではソースコードなどの詳細な解説は含みません。いろいろ試してみてノウハウが貯まってきたら別途記事書きます!

cap3.gif
▲Windows10でIntel® RealSense™ Viewerを試した様子

まずは接続確認したい

せっかく手元にあるので1秒でも早く映像出したい! 手元の端末がWindowsでしたら、GitHubページで公開されているアプリ「Intel® RealSense™ Viewer」をダンロードして確認できます。macOSの場合はSDKをダウンロードして手元でビルドする必要があります。

viewer.jpg
▲Intel® RealSense™ Viewer

執筆時点(2018/12/20)では、macOS(Mojave 10.14.2)でうまくビルドできませんでした...:sob: ですが、Node.jsから試すとサンプルは動作したのでこのまま突き進んじゃいます... この件は引き続き調査します...

Node.jsでアクセス!

Node.jsからintel RealSenseへアクセスするためにはWrapperを使います。Node.jsの他にもPythonやUnity、Unreal Engine 4など様々なWrapperが用意されています。

Node.jsのWrapperを使ってintel RealSenseへアクセスする方法をmacOS、Windowsの環境で紹介します。

  • macOS Mojave 10.14.2
  • Windows 10

執筆時点(2018/12/20)でWindows 10でうまくサンプルが動かず... ライブラリのダウンロードまではうまくいったので情報は残しておきます... この件も引き続き調査します...:sob:

macOS

ビルド環境を整える

XCode 6.0以上とHomebrewを端末にインストールし、次のコマンドで必要なパッケージをインストールします。

brew install libusb pkg-config
brew install homebrew/versions/glfw3
brew install cmake
npm install -g jsdoc

node-librealsenseをダウンロード

作業するフォルダーを任意の場所に用意し、次のコマンドを実行します(npm initなどでpackage.jsonは用意していてください)。同時にSDKもビルドされるので少々時間がかかります。

npm install --save node-librealsense

サンプルを動かす

node_modules/node-librealsense/examples/以下にサンプルファイルが格納されているので深度データをキャプチャするサンプル「nodejs-save-to-disk.js」を試してみます。

cd node_modules/node-librealsense/examples
npm install
node nodejs-save-to-disk.js

rs-save-to-disk-output-depth.png

▲こんな画像が生成されたら成功です!:tada:

APIのドキュメント

node-librealsenseのダウンロード時に、node_modules/node-librealsense/docs/以下にドキュメントが生成されます。

Windows

ビルド環境を整える

Python2.7系をインストール

Python 2.7.15のダウンロードページで、32bitならWindows x86 MSI installer、64bitならWindows x86-64 MSI installerをダウンロードする。ここでのハマりポイントは、3系ではなく2.7系をインストールするということです。インストール時にPATHも通すのを忘れずに。

python.PNG

Add python.exe to Pathを忘れずにチェック

Visual Studio 2017 Communityをインストール

Visual Studio 2017 CommunityをインストールしPATHを通します。

システムの詳細設定 > 詳細設定 > 環境変数 > システム環境変数 > PathC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Binを追加します

CMakeをインストール

インストール時にAdd CMake to the system PATH for all usersAdd CMake to the system PATH for the current userを選んでインストールします。

必要なパッケージをインストール

npm install -g node-gyp
npm install -g jsdoc

node-librealsenseをダウンロード

作業するフォルダーを任意の場所に用意し、次のコマンドを実行します(npm initなどでpackage.jsonは用意していてください)。同時にSDKもビルドされるので少々時間がかかります。

npm install --save node-librealsense

サンプルを動かす

ここから怪しい空気に...:sob:

node_modules/node-librealsense/examples/以下にサンプルファイルが格納されているので深度データをキャプチャするサンプル「nodejs-save-to-disk.js」を試してみます。

cd node_modules/node-librealsense/examples
npm install

npm install実行時に脆弱性があると怒られた...

audited 237 packages in 1.415s
found 6 vulnerabilities (5 moderate, 1 high)
  run `npm audit fix` to fix them, or `npm audit` for details

次のコマンドを実行して脆弱性解消

npm audit fix

サンプルを実行!

node nodejs-save-to-disk.js

ん? エラー...

Error: Unrecoverable! error native function rs2_pipeline_start: No device connected

検索したりいろいろ試行錯誤しましたが解消されることはありませんでした...悔しい:sob:

Node.jsでやってみたいならmacOSが今の所よさそう...

残念ながらWindowsにてサンプルがうまく動かないという悲しい結果になりました... Node.jsからintel RealSense D435iへアクセスしたいときは今の所macOSがよさそうです... 引き続き調査しますので、解決でき次第本記事を更新します:bow_tone1:。Unityなどの他のWrapperで試すとうまくいくのかな...?

参考URL

どなたかご存知の方いらっしゃいましたら...

macOS(Mojave 10.14.2)でうまくビルドできませんでした...:sob:

Node.jsのWrapperではなく本体のintel RealSense SDK2を直接ビルドしてViewerを試してみたかったのですが、XCodeで次のようなエラーが出てしまいビルドを断念しました... 解決方法をご存知の方がいらっしゃいましたらご教示いただけると嬉しいです...

macOSでのビルド時のエラーキャプチャ

Windows 10でうまくサンプルが動かず...:sob:

今回の一番悔しい思い出... エラーを見た感じだとNode.jsからうまくintel RealSense D435iへアクセスできていないようです。あまり情報がなく悔しい...

Error: Unrecoverable! error native function rs2_pipeline_start: No device connected
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away