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 センサー 」を買って、ずっと前に想像していた未来に来た気分になってみるのはいかがでしょうか。