2011.08.11 08:33

 
오늘 소개해 드릴 내용은 XBOX용으로 출시된 Kinect 입니다.
이미 XBOX용으로는 성공을 거두고 Microsoft가 Game 산업에서 입지를 다지는데 큰 역할을 했던 Kinect는 소니의 무브나 닌텐도의 위 컨트롤러와는 달리 사람이 자체가 인식식 된다는데에서 많은 사람들의 관심을 받았습니다.

이런 Kinect에서 개발자들은 많은 가능성을 보았고 이 관심을 충족시켜 드리기 위해서 Kinect를 PC에서도 운영할 수 있는 Kinect SDK가 출시되었습니다.

 

자세한 내용은 이전 포스팅인 http://blogs.msdn.com/b/eva/archive/2011/06/28/kinect-sdk-for-windows-nui.aspx 을 참조해 주시고 여기에서는 유용한 자료들을 소개해 드리려고 합니다.

 

Kinect 공식 웹 사이트 입니다.

Kinect for Windows website  Kinect Website

Kinect Forum  입니다. 영문이지만 QnA를 할 수 있는 곳 입니다.
Kinect Forum 

Kinect for Windows FAQ  Kinect Website

개발 문서 입니다. C++과 C# 두 가지 언어를 지원하도록 되어 있습니다.

AudioCaptureRaw Walkthrough—Capturing the Raw Audio Stream (C++)  Kinect Document
MFAudioFilter Walkthrough—Capturing Audio Streams with a Media Foundation Audio Filter (C++)  Kinect Document
MicArrayEchoCancellation Walkthrough—Capturing Audio Streams with Acoustic Echo Cancellation and Beam Forming (C++)  Kinect Document
Programming Guide: Getting Started with the Kinect for Windows SDK Beta  Kinect Document
RecordAudio Walkthrough—Recording an Audio Stream and Monitoring Direction (C#)  Kinect Document
Skeletal Viewer Walkthrough—Rendering Data with the NUI API (C++ and C#)  Kinect Document
Speech Walkthrough—Recognizing Voice Commands (C#)  Kinect Document

아래 링크는 Channel9과 기타 사이트에 올라온 관련 정보 입니다.
이미 Kinect와 관련된 오픈 소스들이 다수 있어서 제작에 큰 도움이 될 것 같습니다.

Kinect for Windows SDK Beta Refresh Available  Kinect Article
Adding Speech Recognition to a Kinect Quickstart  Kinect Article
Baby NUI... Using the Kinect as a Baby Monitor  Kinect Article
Camera/Tripod Mount (3D Printer required)  Kinect Article
Can the Kinect "know" what you are doing?  Kinect Article
Coding4Fun Kinect Toolkit  Kinect Article
Display Kinect color image containing only players (aka background removal)  Kinect Article
Flame On! Mercury Particle Engine and Kinect  Kinect Article
Gestures and Tools for Kinect and matching Toolkit too  Kinect Article
Getting Started with Kinect, Setup, Depth, Player Index  Kinect Article
HandsTrackball - Kinect 3D object manipulation  Kinect Article
"I have the Minority Report UI.."  Kinect Article
Intro to the Kinect SDK–Drawing Joints in XNA  Kinect Article
Kinductor  Kinect Article
Kinect Buttons  Kinect Article
Kinect Contrib  Kinect Article
Kinect Controlled Quadrotor  Kinect Article
Kinect Depth Cam  Kinect Article
Kinect Earth Move  Kinect Article
Kinecting the Dots: Adding Buttons to your Kinect Application  Kinect Article
Kinecting with Robots - Kinect Services for the Microsoft Robotic Development Studio  Kinect Article
Kinect MIDI Controller  Kinect Article
Kinect Mouse Cursor  Kinect Article
Kinect Paint  Kinect Article
Kinect SDK and F#  Kinect Article
Kinect SDK Skeleton Custom Control for WPF  Kinect Article
Media Player I NUI you well…  Kinect Article
NUI for PowerPoint  Kinect Article
Of course our first Kinect for Windows SDK Project has to involve a Light Saber!  Kinect Article
StartMenu / Candescent NUI  Kinect Article
That's Ripplelicious  Kinect Article
The Busy Developers Guide to the Kinect SDK Beta  Kinect Article
Tweeting from Kinect concept  Kinect Article
신고
2011.06.28 08:04

 

32224_1468530191732_1187893437_1364978_7316647_n[1]

김영욱 차장 iwinkey@hotmail.com

국내 유수의 대기업 프로젝트에 참여했던 풍부한 경험과 마이크로소프트 MVP로서 다양한 활동을 바탕으로 .NET과 관련된 개발 기술에 전념하고 있다. 현재 한국마이크로소프트에서 Evangelist로 근무하고 있다.

또 이런 이야기를 한다면 필자를 늙은이 취급할 개발자들도 많겠지만 마우스도 없던 시절의 컴퓨팅 환경에 비하면 정말 매일 격세지감을 느낄 수 밖에 없다. 하지만 격세지감 따위를 즐기고 있을 만한 여유는 어디에도 없다. 세상은 정말 빠르게 변화하고 있는 듯 하다.

PC가 메인프레임으로 부터 컴퓨팅의 자유를 이끌어 냈을 때 세상은 퍼스널 컴퓨팅 세상으로 바뀌었고 모바일 혁신은 기존의 PC에서 모빌리티 자유를 이끌어 낼 수 있었다.

인터페이스에서도 다양한 혁신이 이끌어져 오고 있는데 키보드 마우스를 넘어서서 최근은 거의 모든 디바이스에서 볼 수 있는 터치 인터페이스의 확산 속도는 이전의 어떤 인터페이스 보다 확산 속도가 빠르다. 터치 인터페이스는 폰을 넘어서 타블릿PC 그리고 최근 영상이 공개된 원도우즈의 차기 버전(가칭 원도우즈8)까지 광범위 하게 사용되고 있다. 하지만 최근에 마이크로소프트가 발표한 키넥트는 이전에 그 어떤 인터페이스에서도 제시하지 못했던 새로운 차원의 인터페이스를 제시하면서 또 한번의 큰 변화를 예고하고 있다.

게임기에서 Windows로 넘어가는 Kinect


<그림1>Microsoft Kinect

키넥트는 원래 게임 콘솔인 XBOX 360에서 게임을 위해서 출시되었다. 기존의 닌텐도나 소니에서 선보였던 손에 센서 뭉치를 들고 하는 방식이 아니라 사람을 직접 인식하는 혁신적인 방식이다. 물론 과거에도 사람을 직접 인식하는 기술들은 여럿 있었지만 별다른 부가장치의 부착없이 사람을 관절단위로 인식하는 시도는 처음 상용화 된 방식이다. 키넥트는 적외선, RGB, 깊이(Depth) 등의 세 가지 센서를 통해서 사람을 정확하게 관절로 인식하고 마이크로폰을 이용해서 음성인식이 가능하다. 키넥트는 부가적으로는 사람을 잘 인식하기 위해서 받침대와 목사이의 관절에 모터가 설치되어 있어서 사람을 찾아서 시선을 조정하기도 하는 등 제법 똑똑한 모습도 보여준다. 현 시점에 게임 시장에서 키넥트를 보면 상당히 성공적이다. 최단기간 1000만대를 팔아서 ‘가장 짧은 시간에 가장 많이 팔린 전자기기’라는 이름으로 기네스북에 오르기도 했다. 하지만 세상의 개발자들과 오덕후 들은 키넥트를 게임 용도로만 국한하지 않았다. 키넥트를 원도우즈를 시작해서 매킨토시, 리눅스, 안드로이드 등 다양한 플랫폼에 연결 시키는 오픈 소스 프로젝트가 진행되는가 하면 로봇이나 모형 헬기를 조정하는 용도부터 장애인들을 위한 다양한 프로젝트까지 여러가지 아이디어와 결합되기 시작했다.


<그림2>휠체어를 인식해서 따라다니는 쇼핑 카터 프로젝트 wi-Go

사람들의 아이디어가 무궁무진하고 다양한 형태로 표출되면서 좀 더 적극적으로 체계적인 지원에 대한 요구가 많아지면서 마이크로소프트는 키넥트를 XBOX 360의 게임을 위한 용도 이외에 PC와 연결되어서 일어날 수 있는 다양한 시나리오를 직접 지원하기 위해서 Kinect SDK for Windows를 발표하게 되었다.

Kinect SDK for Windows

Kinect SDK for Windows는 마이크로소프트 연구소(Microsoft Research)에서 준비되고 발표된 것으로 32비트와 64비트 버전 두 가지 모두 지원되지만 제공되는 샘플이 32비트 버전에서만 지원되는 것들이 있어서 아직은 32비트 버전을 사용할 것을 권장한다. Kinect SDK for Windows 안에서 키넥트를 위한 소프트웨어를 개발하기 위해서 3가지 구성 요소를 제공한다.

- 키넥트를 윈도우에 인식시키기 위한 디바이스 드라이버
- 키넥트를 제어하기 위한 API 프레임웍
- 샘플과 문서

키넥트를 이용한 소프트웨어 개발을 위해서는 당연하겠지만 키넥트가 필요하다. 하지만 키넥트를 받아든 순간 허걱하고 놀라게 되는데 당연히 USB인줄로만 알았던 컨넥터가 USB도 아닌 것이 처음 보는 형태로 되어 있기 때문이다. 키넥트를 사용하기 위해서는 표준적인 USB 포트가 제공해 줄 수 있는 전력보다 더 많은 전력을 소비해야 하기 특별한 형태의 컨넥터 타입이 필요하게 되었다.


<그림3>일반적인 USB 컨넥터와 키넥트 컨넥터

그래서 구형 XBOX 360과 PC에서 키넥트를 사용하기 위해서는 별도로 전력을 공급할 수 있는 어뎁터가 필요하다. 해당 어뎁터는 시중에서 바로 구입할 수는 없고 마이크로소프트 고객센터로 전화해서 신청하면 구입할 수 있다.


<그림4> 키넥트 전원 어뎁터

하드웨어에 대한 준비가 끝났으면 이제 개발환경을 설정할 차례이다.
개발환경은 기본적으로 원도우7과 비주얼 스튜디오가 필요하다.

- 원도우7 (x86 혹은 x64)
- Kinect for Xbox 360 센서
- Microsoft Visual Studio 2010
- Microsoft .NET Framework 4.0 (Visual Studio 2010과 함께 설치 됨)
- DirectX Software Development Kit June 2010(C++만 필요)
- Microsoft Speech Platform SDK
- Kinect for Windows Runtime Language Pack

여기에 제일 중요한 것이 Kinect SDK for Windows(이하 키넥트 SDK) 이다. 키넥트 SDK는http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/ 에서 다운로드 할 수 있으며 관련 문서들을 추가로 다운로드 받을 수 있게 되어 있다.

키넥트 SDK를 설치하고 나면 인체를 뼈대로 인식하는 것을 볼 수 있는 Skeletal Viewer와 음성인식과 간단한 게임을 보여주는 Sample Shape game 두 가지 완성된 샘플을 볼 수 있다.

<그림5>Skeletal Viewer


<그림6>Sample Shape game

특히 Sample Shape game의 경우 인체를 인식하기도 하지만 음성 인식도 함께 가능해서 ‘Super Big’, ‘Start’,’Stop’과 같은 명령들을 직접 음성으로 내려 볼 수 있다.

키넥트를 이용한 애플리케이션을 개발하기 위해서는 위해서는 VC++ 혹은 C#, VB와 같은 개발 언어를 알아야 한다. 키넥트 SDK에서 제공되고 있는 라이브러리에서 인체 구조를 인식하고 제스츄어를 분석하는 등의 기능을 하는 부분이 NUI Library 이다.


<그림7>NUI Library
NUI Library는 키넥트에서 전송되어서 오는 이미지와 Depth 그리고 오디오 정보를 취합해서 애플리케이션에서 활용할 수 있는 정보로 전환하는 기능을 가지고 있는 핵심 요소이다. 좀 더 세부적으로 들어가면 <그림8>과 같은 아키텍처르 정리할 수 있다.


<그림8>키넥트 아키텍처
키넥트 하드웨어는 USB 기반의 기술로 PC와 연결되며 커널 모드 드라이버로 작성된 키넥트 드라이버가 하단에 자리 잡고 있다. 그 위에 카메라와 오디오 스텍이 있고 그 위에 최상위 추상화 레벨에서 NUI API와 오디오/비디오 컴퍼넌트가 잡리 잡고 있는 형태이다.

사실 개발자의 입장에서는 아키텍처 자체는 그리 중요하지 않을 수도 있다. 하지면 전체적인 그림을 이해하고 넘어가는게 아무래도 좀 더 개발에 탄력을 줄 수 있을 것 같다.

NUI Skeleton Tracking

NUI Library에서 제공되는 API중에서 NUI Skeleton API가 있는데 이는 키넥트 앞에 있는 사람을 최대 2명까지 뼈대로 인식해 낸다. 단순히 인식한다고 하면 사람의 형체만 인식하는 것처럼 보일 수 있지만 다시 이야기 하면 사람의 각 부분을 정확하게 인식해 낸다.


<그림9> NUI Skelton API의 인식 부분
NUI Skeleton API는 사람의 주요 부위를 20개로 인식하고 각 부분별로 명칭이 정해져 있다. 여기서 나오는 정보를 기반으로 애플리케이션에서 다양한 반응을 만들어네게 되는데 뼈대에 관한 정보를 찾아내기 위해서는 C++에서는 NuiSkeletonGetNextFrame을 사용할 수 있고 C#등에서는 SkeletonEngine.GetNextFrame을 사용해서 각 부분의 상태를 확인할 수 있다.


<그림10>Active tracking

Kinect SDK for Windows 개발

키넥트 SDK는 VC++, C#, VB.NET 등등 네이티브 언어와 매니지드 언어를 모두 지원하는데 여기서는 C#언어를 기준으로 설명한다. 키넥트 SDK를 사용하기 위해서는 Microsoft.Research.Kinect.dll을 참조해야 한다.


<그림11> Microsoft.Research.Kinect.dll 참조

키넥트 관련 라이브러리에서 Microsoft.Research.Kinect.Nui에는 사람을 직접 인식하는 데 관련된 클래스들이 포함되어 있으며 Microsoft.Research.Kinect.Audio에는 음성 인식과 관련된 클래들이 포함되어 있다.

using Microsoft.Research.Kinect.Nui;
using Microsoft.Research.Kinect.Audio;

kinectRuntime = new Runtime(); kinectRuntime.Initialize(RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseSkeletalTracking | RuntimeOptions.UseColor);
<소스1>네임스페이스 설정

<소스1>에서 보면 개발에 필요한 두 개의 네임스페이스를 포함하고 키넥트를 사용하기 위해서 키넥트 런타임을 생성하고 초기화 시키는 과정을 볼 수 있다.
키넥트 SDK를 설치하고 나면 함께 설치되는 도움말을 보게 되면 생각보다 많은 객체와 내용들에 우선 질리실지도 모르겠다.

좀 더 싶게 접근하려면 Coding4Fun Kinect Toolkit (http://channel9.msdn.com/coding4fun/projects/Coding4Fun-Kinect-Toolkit) 을 사용할 수 있다. Kinect Took에서는 WPF Extension, WPF Controls, WinForm Extensions, skeletal Extensions등이 포함되어 있어서 개발이 한결 수월하게 해준다.


<그림12>Coding4Fun에 올라와 있는 Kinect 관련 프로젝트들

http://channel9.msdn.com/coding4fun 에서 오픈소스로 진행되는 프로젝트들을 보는 것도 흥미로울 것이다. Kinect Paint, Kinect Mouse등의 프로젝트는 흥미로운 요소들을 제공해 줄 것이다.

- 정리

키넥트를 바라보는 사람에 따라서 서로 다른 기대치를 가지고 볼 수 있겠지만 필자가 개발자의 눈으로 바라보는 키넥트는 ‘정말 재미있는 개발자들의 장난감’이다. 즐겁고 재미있게 만들고 고민하다 보면 키넥트와 관련된 정말 재미있는 애플리케이션들을 많이 만들 수 있을 것 같다.

신고
2011.06.17 08:19
최근에 Microsoft가 가지고 있는 기술중에 가장 주목 받고 있는 제품을 들라고 하면 아마도 대다수의 사람들이 원도우즈나 오피스를 들지 않고 Kinect를 들 것입니다.
Kinect는 적외선과 RGB, Depth 등 세개의 센서를 사용해서 사람을 300여개의 관절로 인식하는 획기적인 제품입니다. 작년에 XBOX 360에 하나의 추가 기능으로 출시 될 때만 해도 게임계에서만 사용될 것으로 보였지만 이미 많은 사람들은 오픈소스 기반의 프로젝트를 통해서 PC에 연결해서 사용한 시도를 해왔습니다.

현지 시간으로 2011-06-16일 오전 09:30 Kinect SDK Beta 발표
Kinect를 PC에서 인식하고 개발 가능하게 하는 Kinect SDK Beta 버전이 출시 되었습니다. 학술 혹은 연구용 그리고 매니아 계층을 위해서 출시된 이번 Kinect SDK Beta는 상용 제품을 만들 수 있는 라이선스는 포함되어 있지 않습니다. 추후 Kinect SDK의 커머셜 버전은 또 조만간 다시 발표할 예정이라고 합니다.

http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/ 에서 현재 Kinect SDK beta를 다운로드 할 수 있습니다.


Kinect SDK Beta의 기능
Kinect SDK를 통해서 개발자들은 오디오, 시스템 API 및 센서등을 직접 접근할 수 있으며 이를 통해서 NUI(Natural User Interface) 부분에서 재미있는 발전이 예상됩니다.

이번 SDK를 설치하고 사용해 보기 위해서는 아래와 같은 사양이 기본적으로 필요하다.
 

·         Computer with a dual-core, 2.66-GHz or faster processor

·         Windows 7–compatible graphics card that supports Microsoft® DirectX® 9.0c capabilities

·         2 GB of RAM

·         Kinect for Xbox 360® sensor—retail edition, which includes special USB/power cabling


이번에 제공되는 Kinect SDK안에는 Kinect Driver와 개발 문서 샘플 코드등이 포함된 일종의 Starter Kit 형태로 발표되었으며 beta 버전임에도 불구하고 상당한 수준까지 개발할 수 있는 기능들이 모두 제공됩니다.

아래는 Microsoft Reseach에서 제공하는 Kinect SDK 샘플 동영상입니다.
저작자 표시 변경 금지
신고
2010.12.01 11:49

XBOX에도 Silverlight가?

News 2010.12.01 11:49
XBOX 360에도 Silverlight가 포함될 것인가? 관련 기사에 따르면 XBOX 팀에서 Silverlight 엔지니어와 관련된 소식이 솔솔 흘러나오고 있는데 지사 직원으로써 본사에서 어떤 의도로 방향을 잡고있는지 알기는 어렵지만 만약 XBOX에도 Silverlight가 포팅 되기를 개인적으로는 강력히 바라고 있다.

XBOX에 Silverlight가 도입된다면 Web/Desktop/Phone에 있어서 엔터테이먼트 디바이스이자 홈 미디어 기기까지 하나의 UI Framework으로 통합되는 효과가 있을 것이고 두 번째 규모의 경제에 의해서 Silverlight의 발전에 좀 더 탄력이 붙지 않을까라는 기대를 함께 가지고 있다.

하지만 모든 결과는 시간이 지나봐야 알 수 있겠지만... 그래도 XBOX에 Silverlight 좀 안돼겠니.. ^^

http://www.tomsguide.com/us/Silverlight-xbox-360-windows-phone-7,news-8985.html 
저작자 표시 변경 금지
신고
2010.11.16 14:36
기다리고 기다리던 최신형 XBOX 360 4G와 키넥트를 그리고 전용 타이틀 3종을 입수 했습니다. 곧 직접 촬영한 영상을 올려드리도록 하겠습니다. 커밍~순~
저작자 표시 변경 금지
신고
2010.11.15 13:33
사람의 모션을 직접 인식해서 동작하는 키넥트(Kinect)가 18일 출시한다고 합니다. 아래 동영상은 초기에 만들어진 컨셉 동영상입니다.

지금은 훨씬 더 구체화 되어서 실제 제품으로 이번주에 출시하게 되었다고 합니다.
저는 회사에서 한 대 지급받기로 해서 조만간 동영상으로 시연을 해드릴까 합니다.
 아래 동영상은 올해 E3 게임쇼에서 직접 키넥트를 시연하는 모습입니다.

다음 주에 관련된 동영상을 바로 보여드리겠습니다. 커밍 순~
저작자 표시 변경 금지
신고