LoginSignup
1

More than 3 years have passed since last update.

【SimpleOpenNI】ProcessingでKinect V2を動かそう!環境構築編【Processing / Kinect V2】

Last updated at Posted at 2020-11-30

総合コンテンツサークル アドベントカレンダー 1日目 & Nakano Computer Club アドベントカレンダー 1日目
- 総コン→https://adventar.org/calendars/5757
- NCC→https://qiita.com/advent-calendar/2020/ncc

お久しぶりです。研究のためにkinectを使うことになったのですが、新たにC++とかいろいろ手を出すのがしんどいと思ったので、ライブラリ「SimpleOpenNI」を利用し、私が触り慣れているProcessingで動かそうとしたところ、いろいろ苦労したのでやり方とか苦労した点とかまとめます。皆様の参考になれば幸いです。

はじめに

この記事はMacでkinect v2動かすことを想定して書かれています。
が、kinect v1も動作可能だしWindowsやLinuxでも動作可能...だと思います!(試していないのでうまくいくかわかりません!)

目次

  1. 動作環境
  2. libfreenect2をインストールする
  3. Processingのライブラリ「OpenSimpleNI」を導入する
  4. 最後に必要なひと手間!
  5. おわりに
  6. 参考記事

動作環境

  • Macbook Pro 2017 13inch
  • macOS Catalina 10.15.6
  • Processing3.5.2
  • Kinect v2

Processingのインストール

本題に入る前に、Processingのインストール方法を簡単に説明します。後述のライブラリを導入する際に最新版だとうまく動かないことがあるで、要求に見合ったバージョンを入れる必要があります。

ダウンロードはこちらから!
https://processing.org/
こちらのページの飛んで「Download Processing」をクリックし、自前のOSにあったやつをインストールしてください。zip形式でダウンロードするので、解凍してアプリケーションに(WindowsはProgram File系に)移動させましょう。

公式ホームページに乗っていないバージョンもあるのでその際はginhubから直接バージョン指定してインストールできます。
https://github.com/processing/processing/releases

libfreenect2のインストール

詳細はコチラから
https://github.com/OpenKinect/libfreenect2

まず、ターミナルを開きましょう。
Macのターミナルは、Application -> ユーティリティー -> ターミナルに存在します。
また、command + space を押し、Spotlight検索を起動し、terminal.appと入力することでも起動します。

githubに書いてある手順を実行する前に、まだ入れてない方はhomebrewをインストールしましょう。homebrewはmac/linux向けのパッケージ管理ツールで、macで何かする際に目にすることも多いと思います。

homebrewについての説明はコチラの記事を参照してください
https://qiita.com/zaburo/items/29fe23c1ceb6056109fd

homebrewのインストールはターミナルで以下のスクリプトを実行してください。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

そして、導入の際に必要なcmakeを入れましょう。

brew install cmake

cmakeについて詳しくはコチラ
https://qiita.com/kai_kou/items/df335eb7ee78229ee46f

インストールが終わったら、導入に参りましょう。
まず、以下のコマンドを入力し、libfreenect2を導入しましょう。

git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2

続いて以下のコマンドを入力し、libusbとGLFWを導入しましょう。

brew update
brew install libusb
brew install glfw3

続いてTurboJPEGの導入。これは任意らしいがやっておこう。

brew install jpeg-turbo

さらに続いてOpenNI2の導入。これも任意らしいけどやっておくに越したことはないだろう。

brew tap brewsci/science
brew install openni2
export OPENNI2_REDIST=/usr/local/lib/ni2
export OPENNI2_INCLUDE=/usr/local/include/ni2

最後に以下のコマンドを打ってビルドしよう。

mkdir build && cd build
cmake ..
make
make install

これが完了したら、kinectを接続し以下のコマンドを実行してみて動作するか試してみよう。試してみたら第一段階は成功だ!

./bin/Protonect

Processingでkinectを動かす際は事前にProtonectを起動しておく必要があるみたいだ。

今回はmac向けに説明しましたが、Windows、Linuxの方はlibfreenect2のgithubページのInstllationの章にそれぞれのやり方が書いてあります。
https://github.com/OpenKinect/libfreenect2

SimpleOpenNIの導入

Processingのライブラリ「OpenSimpleNI」を導入してみよう。
SimpleOpenNIのgithubからダウンロードできる。自分のProcessingのバージョンにあったライブラリをダウンロードしよう。

なお、kinect v2が作動するバージョンは限られているので確認しましょう。
2020年11月現在では、 V3.5.2、V3.4、V3.3.7、V3.3.6が対応しているようだ。対応していない人はprocessingを入れなおそう!

The library has compatibility with Kinect V2 just in Processing V3.5.2, V3.4, V3.3.7 and V3.3.6

ダウンロードしたらzipを解凍し、中にあるSimpleOpenNIフォルダをコピーし、Processingのライブラリがあるフォルダにペーストしよう。デフォルトだと~/Documents/Processing/libraries/にある。

正しく入っていれば、Processingでスケッチ→ライブラリをインポート→SinpleOpenNIと出るはずだ。

導入がうまくいったら、exampleを動かしてみよう。ここでうまくいかない人も多いかもしれないがご安心。そこで実際に私が体験した問題を次章で解決させします。

ここでうまくいかないひとのために

私も紆余曲折重ねながらここまできましたが、以下のエラーが吐かれて成功しない。

[Info] [Freenect2DeviceImpl] opening…
[Info] [Freenect2DeviceImpl] transfer pool sizes rgb: 2016384 ir: 4128*33792
[Info] [Freenect2DeviceImpl] opened
[Error] [protocol::CommandTransaction] bulk transfer failed: LIBUSB_ERROR_TIMEOUT Operation timed out
[Error] [protocol::CommandTransaction] bulk transfer failed: LIBUSB_ERROR_TIMEOUT Operation timed out
[Error] [protocol::CommandTransaction] bulk transfer failed: LIBUSB_ERROR_TIMEOUT Operation timed out

どうすればいいんだ!しかし解決法は存在します。

homebrewでopenNI2をインストールしたと思いますが、その中のusr/local/lib/OpenNI2/Drivers内にlibfreenect2-openni2.0.dyliblibfreenect2-openni2.dylibがあると思いますが、その2つをProcessingのライブラリフォルダ内のSimpleOpenNI/libraries/SimpleOpenNI/library/osx/OpenNI2/Drivers内にコピペしましょう。

ソース:https://discourse.processing.org/t/use-kinect-1-or-2-sensors-with-processing-2-or-3/86/12

訳はさっぱり分かりませんがこれをやったら動きました。

他にもいろいろなエラーが出ると思いますが、エラー文で検索かけてみると解決法が出てくると思います!めげずにトライしよう!
上記ソースにも全部英語ですがこれに関する問題の解決法があると思うので頑張ってね。これの作成者はSimpleOpenNI制作者のtotovrさんなので信じていいはず(雑)。

おわりに

いかがでしたか?無事kinectは動きましたか?ここまでたどり着くのに苦労した方も多いと思いますが、その分成功した喜びが大きいと思います。ちなみに私は8時間くらい悪戦苦闘していました。

環境構築が済んだところでどのようなことができるか...は次回のお楽しみ。

文章、内容ともに拙かったと思いますが、最後までお付き合いくださり、ありがとうございました。
(表記揺れ警察の皆様どうか許してください、、、)

参考リンク

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1