Tech Sketch Bucket of Technical Chips by TIS Inc.

kinectで物体の3Dスキャンを試してみたよ1

Pocket

kinectなどの安価なDepthセンサを利用して3Dスキャンをしようというソフトウェアが世の中には存在します。
今回の記事ではkinectを利用した3Dスキャナーのソフトウェアを試してみました。

Point Cloud Libraryからkinectを利用してみる

Pocket

Point Cloud Library(PCL)

Point Cloud Library は3D空間上の点の集合に対して、解析、操作、保存、表示などを提供するBSDライセンスのライブラリです。
PCLを利用してkinectの入力を取り扱うことで「現実空間」を「コンピュータ上の3次元の空間」に取り込むことが可能になります。
これによって以下の動画のように、通常のカメラ画像の情報に追加する形で、kinectからのdepthセンサの情報を利用することで特定の画素までの距離(depth)もリアルタイムに表現可能になります。


今回の記事ではPCLの紹介と、上記の動画を撮影するのに利用したPCLに付随するサンプルアプリケーションを動作させる手順の説明をします。

体を動かすロボット操作(ジェスチャ入力チーム:OpenNI + Xtion Pro Live )

Pocket

人の動きに合わせてモノが動いたら楽しい。

Kinectを利用して動作するものを考えたときに、チーム内で人の動きに合わせて動いたら楽しいよね。

やろうか

ということで、1泊2日で動くものを作るを目標にして2/24にチームの開発合宿を実施しました。
今回はその合宿で作った成果をここにまとめます。

つくってみます

本記事では冒頭の通り、「体の動きに合わせて物を動かす」ことを目標に2回の記事に分けて1つのアプリケーションを作っていきます。
まず、全体的なアーキテクチャを以下のように設計しました。

gesture-robot.png

画像内の左右に対応した以下の2チームに分かれて実装にかかります。

ジェスチャ入力チーム

  1. 人間の動きを検出して
  2. 画面表示しつつ、
  3. 条件を満たしたときに対応したRESTのリクエストを送付

ロボ制御チーム

  1. RESTのリクエストを元にロボット(LEGO MINDSTORMS NXT 2.0)を制御

まずはジェスチャ入力チームの記事です。

OpenCV&Kinectでお絵かきアプリ

Pocket

お絵描きをする

kinect hackといえば空中にお絵描きしたくなるもの。
というわけで以下のようなお絵描きモノを作ってみました。


というわけでどんな感じに実装してみたかをまとめます。

体を張ってアプリを起動「Kinect Launcher」の作り方

Pocket

開発合宿

2011年の9月に開発合宿を行いました。場所は茨城の デュープレックスセミナーホテル
美味しいご飯&広い別館が良いですね。到着してすぐにPCを開き、集中して開発することができました。

いまさらですが、その時作ったソフト「Kinect Launcher」を公開します。
あなたもポーズをとってアプリを起動してみませんか?

Kinect Launcher

Kinect Launcher本体 (Windows & .NET Framework 4.0):KinectLauncher.zip
C#ソースコード (Visual Studio 2010):KinectLauncherSource.zip

Kinect Launcherはその名前の通り、「Kinectを使ってポーズを入力することでアプリを起動することのできるランチャーアプリ」です。
この一文で大体想像は付くと思いますが、「なにそれ?」な人は動画をごらんあれ。

当然ながら、動かすためにはKinectをPCに接続しておく必要があります。


続きには使い方&作り方を記載しています。

Kinect Hack 映像をNode.jsで擬似ストリーミング・・・まだまだだね(2)

Pocket

みなさん、楽しくKinectをHackしていますか?

Kinect&Node.jsの環境構築をした前回に引き続き、今回は

Kinect → OpenNI → OpenCV → C++Addon → Node.js → websocket → HTML5

とつないでいくソースコードをご紹介します。

出現する言語は、C++とjavascriptとpythonスクリプトです。

前回もお世話になった KINECTセンサープログラミング に、掲載されているソースコードを、かなり参考にさせていただきました。
また矢野直樹(Yano Naoki)
さんのブログ yanoの日記 の記事 C++ による base64 変換 のbase64変換コードを流用させていただきました。
この場を借りてお礼申し上げます。

今回の一連のソースコードにより、以下のような映像がWebsocketクライアントに配信されることになります。


Kinect Hack 映像をNode.jsで擬似ストリーミング・・・まだまだだね(1)

Pocket

みなさん、楽しくKinectをHackしていますか?

公式/非公式なデバイスドライバを手に入れた瞬間から、Kinectは単なるゲームコントローラの枠を越え、「シンプルなAPIを持った3Dカメラ」として利用できるようになります。
世界中のハッカーがこぞってKinectをHackしており、 3D Video Capture with KinectKinectでスーパーヒーローに変身Kinectを使ってブラウザのWebGL内を動いてみた など、秀逸な動画がたくさん公開されています。

しかし身に付けて歩けるほどKinectセンサーは小さくないため、Kinectセンサーは固定PCに接続し据え置かざるを得ません。
Kinectセンサーから得て付加情報を重畳した映像を、その固定PC上で表示するだけでなく、Kinectセンサーのターゲットとなっている人物自身へ何らかの手段で遠隔配信できれば、何か面白いことができるのではないでしょうか。

そこで今回は、最近ハヤリのNode.jsのWebsocketを用い、Kinectセンサーで取得された画像をWifi経由でノートPCへ擬似ストリーミング配信してみたいと思います。

kinect_sample01.pngのサムネイル画像