hirax.net::inside out::2011年07月24日

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2011年6月 を読む << 2011年7月 を読む >> 2011年8月 を読む

2011-07-24[n年前へ]

IronRubyからKinectを使ってみる(OpenNI / OSX編) 

 RubyからMicrosoft Kinectを操作(制御)してみたくなったので、OpenNI(Ver1.1)の.NETバインディングを使い、IronRubyからKinectを操作するコードを書いてみました。たとえば、下に貼り付けてみたのは、IronRubyから深度データにアクセスするコード例です。

require 'OpenNI.net'
include OpenNI
require 'XnVNite.net'
include NITE

include System::Reflection
include System

require 'pp'

CONFIG_XML_PATH="SamplesConfig.xml"

@context=Context.new(CONFIG_XML_PATH)
@depthGenerator=nil
@depthGenerator=@context.FindExistingNode(NodeType.depth) 
status=@context.WaitAndUpdateAll() 
depthMetaData=@depthGenerator.GetMetaData()

pp [depthMetaData.XRes, depthMetaData.YRes]
pp @depthGenerator.DeviceMaxDepth
 このコードを実行すると、深度画像のXYサイズと最遠距離が、次のような具合に表示されます。
[640, 480]
10000

 動作テストはOSX上で行いました。つまり、OSX に.NET環境であるMonoをインストールし(もちろんOpenNIもここに書いてある手順に沿ってインストールし)、その上でIronRubyを動かしています。当然、Windows上でも動くと思いますが、動作確認はしていません(Windows側にはMicrosoft Research Kinect for Windows SDK betaをインストールしているので、OpenNIを入れていないのです)。

 RubyでKinectの操作・制御をする…というのは、必ずしも「上手い組み合わせ」ではないかもしれません。けれど、上のようなrubyコードを書くだけで「高度なセンサ群の塊であるKinectからデータを取得できる」となれば、面白く遊んでみたくなる人も多いのではないでしょうか。「Microsoft Xbox 360 Kinect センサー 」を買って、ずっと前に想像していた未来に来た気分になってみるのはいかがでしょうか。