티스토리 뷰

Kinect

[Kinect Study] (0) Challenge the future with K4W

생각많은 소심남 2012. 9. 8. 01:37

오늘 MS 본사에서 키넥트에 관심있는 사람들을 대상으로 간단한 세미나를 했습니다. 들으시는 분들은 어떻게 생각하실지 모르겠지만 하여튼 못오신 분들을 위해서 세미나 내용을 공유하도록 하겠습니다.

 


오늘의 주제는 키넥트를 이용해서 시도되고 있는 다양한 프로젝트에 대한 소개 및 개발 환경에 대한 설명이었습니다. 개발적인 이야기는 배제하고 최대한 듣는 사람들이 어떤 프로젝트를 하고 있는지에 대한 이해를 도우려고 했습니다. 그리고 할 수 있는한  데모도 같이 해볼 수 있도록 노력했습니다. 



 우선 들어가기 전에 MS에서 어떤 의도를 가지고 이 키넥트라는 도구를 만들었는지를 알아봐야 할 것 같아서 동영상을 준비했습니다. 아마 키넥트가 세상에 미칠 수 있는 영향의 크기를 Kinect Effect라고 정의한 걸 보면 MS에서도 이 시장을 중요하게 보고 있는 것 같습니다. 아마 여러분들도 동영상은 많이 찾아보실 수 있을 겁니다.



동영상에서는 키넥트가 미래에 어떤 부분을 타겟으로 삼겠다는 프로토 타입을 보여주고 있지만 이중 거의 대부분이 현재 시중화되어 실생활에 적용되고 있습니다. 저 같은 경우도 뜻이 맞는 사람들과 함께 재활쪽을 타겟으로 삼고 프로젝트를 진행하고 있습니다. 이처럼 다양한 분야에서 키넥트는 적용되고 있습니다.



전체적인 내용은 크게 3가지 부분으로 나눴습니다. 게임으로 대변되는 오늘과 개발이 진행되가면서 미래에는 실생활로 적용되는 과정에 대해서 언급하고자 했습니다. 그중 첫번째로 말하고자 했던 내용은 바로 게임으로써의 키넥트의 역할입니다. 



여러분들도 아시는 내용이겠지만 키넥트는 본래 엑스박스의 주변기기로 출발했습니다. Project Natal 이라는 이름으로 공개되어 2008년에 정식으로 출시되었지요. 아시는 분들도 계시겠지만 키넥트는 세계에서 가장 빨리 팔린 전자기기로 기네스북에 등재되어 있습니다. 

 그 중에서도 키넥트의 메임 게임으로 인기를 끈 것이 바로 후르츠닌자와 댄스 센트럴이었습니다. 기존의 입력도구가 단순히 게임 패드에 그쳤다면 키넥트는 사람의 몸을 사용함으로써 게임을 즐길 수 있게 했습니다. 물론 그에 따른 운동 효과도 누릴 수가 있었지요. 그 와중에 PC 게임에도 접목시켜서 다양한 게임들이 키넥트와 연결해서 즐길 수 있습니다. 제가 가장 흥미롭게 봤던 게임은 바로 베데스다에서 만든 엘더스크롤 5이었는데요. 한번 동영상을 보시지요.




컴퓨터로도 이렇게 까지 즐길 수 있다는게 참 신기할 따름입니다. 기본적으로 키넥트에서 제공하는 음성인식과 관절인식이 되서 가상현실의 주인공이 된 듯한 느낌을 줍니다. ( 엘더스크롤에 보면 용언이 나오지요. Fus Ro Dah~~)



단순히 게임에만 치중된게 아니었습니다. 실제로 키넥트를 초창기에 산 이유가 단순히 즐기려는 수요도 있었지만 그걸로 개발하려는 geek들의 소요도 무시할 수 없었습니다. 그래서 그런 사람들이 자체 드라이버를 만들어서 개발하기도 했습니다. 현재는 MS에서도 그런 소요에 따라서 자체 개발툴을 제공하고 관련 라이브러리와 교육 자료를 공개하고 있습니다.



키넥트는 원래 MS에서 만든 것이 아닙니다. 원래는 PrimeSense 라고 하는 이스라엘 센서 제조사에서 만든 것을 라이센싱받아서 생산하는 겁니다. 신기하게도 PrimeSense에서 나온 기기와 MS에서 만든 기기가 드라이버가 호환이 됩니다. 이 말은 즉, 하드웨어적으로 같다는 것이겠지요. 그래서 기본적인 SDK가 나오기 전에 PrimeSense의 드라이버를 가지고 개발했습니다. 그게 바로 OpenNI가 되겠고요. 후에 MS에서 정식적으로 지원하는 것이 바로 Kinect for windows SDK입니다. Kinect SDK는 C++ 과 C# / VB 으로 개발이 가능하고 여기에 덧붙여서 XNA나 DirectX와 같은 게임전용 라이브러리를 붙여서 프로그램을 만들 수 있습니다. 실제로 그런 예제가 Developer ToolKit에 들어 있고요.


앞에서 소개해 드린 것처럼 OpenNI는 SDK가 나오기 이전에 개발자들이 적용하던 드라이버로써 C++ / C# / JAVA 로 개발이 가능합니다. 사실 공식 SDK보다 나온지 오래되었기 때문에 인터넷에 자료가 많습니다. 단점이라면 공식으로 지원하지 않기 때문에 추후에 업데이트되는 기능의 혜택을 전혀 못받는 것이지요. 가령 예를 들면 근접센서가 동작하지 않고 음성 인식이 힘들다는 점을 들 수 있겠군요.


보통 위의 2가지가 메인 SDK가 되고 여기서 추가적으로 적용할 수 있는 라이브러리가 바로 OpenCV와 PointCloudLibrary입니다. OpenCV는 비전기반의 라이브러리로써 이미지 처리를 통해서 뭔가 정밀한 처리를 요구할 때 적용할 수 있습니다. 저도 현재 키넥트 SDK에 OpenCV를 접목시켜서 개발하고 있습니다. 단언컨데 OpenCV는 키넥트가 가지는 한계를 극복할 수 있게 도와주는 라이브러리라고 봅니다. Point Cloud Library는  키넥트가 보내오는 3D 포인트를 visualization 시켜주는 역할을 합니다. 더 궁금하신 분은 제 블로그에서도 관련 내용을 보실 수 있으니 참고 바랍니다. 


마지막으로 하나 더 언급할게 단순히 소프트웨어의 한계를 벗어나 아두이노와 같은 피지컬 컴퓨팅에 점목시켜 하드웨어적으로도 동작을 유도하게끔 하고 있습니다. 분명 원격으로 제어가 되는 만큼 많은 이들의 관심을 받고 앞으로도 발전 가능성이 큰 분야라고 생각합니다.



이렇게 개발된 프로젝트는 미래에 가면 분명 실생활에 적용될겁니다. 그리고 누군가에게 큰 도움이 될 것입니다.



앞의 kinect effect에서도 보셨겠지만 사람의 관절정보를 이용해서 재활훈련을 시킬 수 있는건 참으로 의미있는 겁니다. 단순히 훈련만 한다면 재미를 느낄 수 없겠지만 위와 같이 무언가 시각적으로 나타내주고 즐거움을 준다면 회복 효과는 더 커지리라고 봅니다. 이밖에도 쇼핑할 때도 증강현실의 개념으로 적용할 수 있는 등의 프로그램들이 개발되고 있습니다.



 


이런 것들을 학생들이 개발할 수 있게끔 도와주는 대회가 바로 MS에서 주최하는 이매진 컵입니다. 기존에는 소프트웨어 분야의 도구로써 쓰였지만 올해부터는 따로 Kinect Fun Labs 라는 분야로 나와서 Unity3D를 활용한 게임을 제작하고 이를 평가했습니다. 참고로 저도 이 대회에 나가서 준비를 했었습니다. 물론 결과야 좋지는 않았지만 나름대로 세계적인 대회에 도전해봤다는 것 자체로도 저한테는 큰 의미로 작용했습니다. 참고로 올해 Kinect Fun Labs 1등을 수상한 팀은 이 키넥트를 교육분야에 접목시켜서 시연했습니다. 



진짜 이 프로젝트를 보면서 정말로 저런 걸로 미래의 아이들이 교육받을 환경이 부러워집니다. 그들의 상상력은 더욱 극대화가 될 것이고, 세상은 더 발전하겠지요. 전 키넥트로 그런 세상이 올 것이라고 믿고 있습니다. 



여기까지가 제가 진행한 세미나 내용이었습니다. 누구든지 키넥트에 대해서 궁금한 사항이 있고 도움이 필요하다면 블로그로 오세요. 제가 아는 한도에서 최대한 도와드리고자 노력하겠습니다. 

댓글