Tokyo MotionControl Network #7でLTしてきました。

LINEで送る
Pocket

珍しく開発者っぽい投稿?です。

昨日の2014/05/08、Tokyo MotionControl Networkというイベントに参加して、LTで発表してきました。
http://tmcn.doorkeeper.jp/events/10492

で、こういうイベント久しぶりだけどまじめな雰囲気やろうなーどうしよっていう感じだったのですが、開会の挨拶とか聞いていると結構柔らかいというか緩い感じだったので安心し、さらにお酒が(焼酎とか!)あったので調子に乗ってガンガン呑んでました。。。そして結構な仕上がり・・・・

しゃべれなくなると思って喋る内容を資料に打ち込んでいたのですが結果かなり饒舌にしゃべれた気がします!
うけたのではないでしょうか。(自賛)

その後もいろんな方と面白い話ができていってよかったです。

モーションセンサー系とかに興味ある方はいってみると同じ事で盛り上がれる人に知り合えてよいのではないでしょうか?

あと、運営のみなさま、いろいろとご無理を通していただいてありがとうございました!

あ、発表した内容は都合によりアップはしないですがブログに書いているような内容をしゃべってきました!

OpenNIのライセンスが気になったので聞いてみた

LINEで送る
Pocket

KinectやXtionを使ってアプリ開発するときには、Kinect for WindowsのSDKであれば
Kinect for Windowsのデバイスを買い、Windowsアプリを作るのであればライセンスの心配をする事はありません。
一方のOpenNIはLGPLやらGPLやらと書いていて、GPLの解釈については動的リンクでもソースコードの公開義務があるとする解釈もあり商用案件で使うにはやはり躊躇してしまいます。

とはいえOpenNIになじんでいたのでOpenNIの開発元の一つである、primesenseにメールで直接問い合わせました。

返答がこれ。

The LGPL constraint that you are mentioning only applies if you are modifying OpenNI using it source code. If you are using OpenNI as-is, then you do not need to uncover anything about your own code! OpenNI is FREE for commercial use, but softwares using OpenNI do not need to inherit the LGPL license. For examples, NiTE is not LGPL nor open source, it’s a Primesense proprietary software.

要するに、「OpenNIをそのまま使うのであればソースコードを公開する必要は無いよ、実際NiTEはオープンじゃないし」
って事で公認がもらえたと思ってるので商用案件でもOpenNIを導入して良さそうですね!

その後も少しやりとりしていると、Apache ライセンスに変えるか検討しているようでした。

[修正]スケルトン認識ポーズいらずのOpenNI1.4.0.2がリリースされました!

LINEで送る
Pocket

OpenNIの新しいバージョンがunstableながら出たようです。(バージョンは1.4.0.2)
http://75.98.78.94/
※ググった結果の一番上なんですけどなんでIPアドレスなんだろう。。。

今回からなんとOpenNIでスケルトン認識する時の例のポーズがいらなくなった、という大きすぎるアップグレードがあります。
「かおるんダイアリー」様が早速デモ動画をアップされています。
http://d.hatena.ne.jp/kaorun55/20111121

MSのSDKでは画面から外れた時の暴れっぷりや全身が映っていないときの反応がちょっと荒かった印象がありましたが、OpenNIの方は比較的ましな感じがしています。

今はSensorKinectの人にも問い合わせしているので進展があれば追記します。

早速試したかったのですが、僕の環境では実行しようとしても
Segmentation fault: 11
が出てしまい実行できませんでした。

あまりにもわからなかったのでOpenNIのGoogleGroupで質問してみたところ、
Kinectの時に使っているドライバ、SensorKinectが新しいバージョンに対応していないからだそうです。

これはOpenNI使う時はKinectじゃなくてXtion使えよ、っていうことなんでしょうかね。。。

追記:
動作することを確認しました。
すみません。僕が使っていたSensorKinectが古かったようです。

ここにあるバージョン(5.0.5.1で確認しました)を使うと無事動作しました。
OpenNI, SensorKinect、NITE、入れていればOpenNIのサイトにあるSensorをアンインストールし、KinectをUSBから抜いて再度インストールすると問題なく動作するようになりました。
(NITEは先ほどリリースされた1.5.0.2をインストールしました。)
https://github.com/avin2/SensorKinect

さあ、これで試せるよ!

備考:
動作確認バージョン:
OpenNI: 1.4.0.2
NITE: 1.5.0.2
SensorKinect 5.0.5.1
Mac OS X 10.7 Lion
デバイス: Kinect

撮影するための環境が無くて僕とKinectの距離が近かったのでスケルトンが暴れていますが、実際はもう少しましだと思います。

これになったことでスケルトンを使ったアプリを作りやすくなりましたが、暴れることが以前より多くなった(当然)ので、こういったノイズデータをハンドリングする必要がありそうですね。

[OpenNI] UserTrackerのサンプルが動かないときの確認事項

LINEで送る
Pocket

新しく(2011/10月発売?)MacBook Proを買ったものの時間が無くてOpenNIのインストールをしばらくできてなかったのですが、必要に駆られてOpenNIのインストールをしてみたところはまったところがあったので残しておきます。

おこった問題:
Sample-NiUserTracker の実行ができなかった。(ただし、Sample-NiSimpleViewerは実行できた)

エラーメッセージ:
Could not find data file /usr/etc/primesense/Features_1_4_2/s.dat
current working directory = /Users/xxxxx/Documents/OpenNI/OpenNI-Bin-Dev-MacOSX-v1.3.4.6/Samples/Bin/x86-Release
→実際該当するパスにファイルが存在しなかった。

解決方法:
うまく動いていた状態の古いマシンには /usr/etc/primesense/ 以下に Features_1_3_1と Hands_1_3_1というフォルダがあったので、そのファイルを使い、フォルダ名を Features_1_4_2、Hands_1_4_2と変更した。

OpenNI、NITE、SensorKinectともにバラバラにインストールしてしまっていたのが原因だとは思うが、これで動作するようになりました。

KinectをOpenNI / Macで使ったときにはまった事1

LINEで送る
Pocket

KinectをOpenNIを使えばunstable版ではありますが、Macでも使う事ができます。
で、普段のWebやPC、Mobileのアプリとは異なりハードウェア的な観点で注意しないと行けない事があり、ちょっとハマってしまった事があったので書いておきます。

今までまったくもって普通に動いていたアプリが突然すごくカクカクと動いてしまっていたのですが、ソースコード上の無駄をどれだけそぎ落としても、Kinectのデータ更新を別スレッドで行うようにしてもカクつきがまったく改善されなく、原因がわからなくて途方に暮れていたところ、試しにUSBの差し口を変更した所今までどおり高速に動作するようになりました。
どうやら状態によって通信速度が変わる事が考えられます。

MacBook ProのUSBポートは内部的には同じもののはずだからどちらに差したからと言って通信速度が変わることはないと思っていたのですが、そんな事も無かったです。

Kinect自身はUSBでPCと繋いでデータを受信します。KinectはXtion Proなどのデバイスとは違い、USBだけでは正しく動作しないのでコンセントにさす必要もあるのですが、電気の供給が不足しているときにも動きがカクカクしてしまう事がありました。

USBを差し替える前後の違いが分かるように動画をアップしましたので気になる方はご覧下さい。

はまりどころを抜けて、こんな感じのサンプルを作りました。

KinectとOpenNIとVJと – 1. Kinectとは何か

LINEで送る
Pocket

こんにちは。
ここしばらくKinectで何かをする事が多かったので、忘れないうちに記事を残しておこうと思います。

Kinectとは?

kinect
Kinectとは、MicrosoftがXbox360向けに発売したゲームデバイスです。
従来と違い、距離センサーなどを搭載した事で、全く何のコントローラーを持つ事無く人のジェスチャーでゲームを楽しむ事ができます。

どんな事ができるのかは、この動画をみると分かりやすいと思います。

これがもし、Xboxだけでしか使えないものであればここまで流行る事も無かったと思うのですが、あまりにも安価なセンサーデバイスだったため、世界中のハッカーが勝手にハックしてKinectの情報をプログラムで扱えるようになりました。

センサー部分を開発している、イスラエルのPrime Sensor社がOpenNIというライブラリを公開したことは、Kinectのパーツを実際に作っているところからの公開であり、準公式とも言えそうなライブラリの登場に非常に興奮したものです。
C++, C#で利用する事ができます。
http://www.openni.org/

また、Microsoft自身もSDKを公開するとの事ですが、僕はMac使いなため、OpenNIを使う事に変わりないと思います。
http://japanese.engadget.com/2011/02/21/kinect-sdk/

他にもOpenFrameworksで使われるためのofxkinectというアドオンもあります。
https://github.com/ofTheo/ofxKinect

MicrosoftのKinectに関するページ:
http://www.xbox.com/ja-JP/kinect

先ほども書いたように、Mac使いである僕はC++(OpenFrameworks)+OpenNIという方法でKinectをいじり始めるのでした。
続く。