2014년 4월 3일 목요일

키넥트와 프로젝트 탱고, 그리고 스트럭쳐 센서

세상에서 가장 빨리, 많이 팔린 가정기기가 무엇일까요?

바로 마이크로소프트의 키넥트(Kinect)입니다.

<MS의 키넥트>


키넥트는 마이크로소프트가 2009년 E3 쇼에서 선보인 모션 캡쳐 카메라입니다.

왼쪽의 회절격자에서 적외선으로 이루어진 촘촘한 점을 비추고, 이의 왜곡을 적외선 카메라가 감지해 물체와 키넥트 사이 거리를 탐지하는 방식이죠.

이렇게 알아낸 거리와 카메라로 촬영한 영상을 조합하여 3D 이미지를 만들어내고, 이를 이용해 사람 몸의 움직임을 측정합니다.

심지어, 엑스박스 원과 함께 출시된 키넥트 2는 1080p 영상 녹화와 심장 박동수 감지, 손가락의 움직임과 표정 변화까지 감지합니다.(마이크로소프트가 외계인 포획에 성공한 것 같습니다.)


얼마 전에, 흔한 공돌이의 쓰레기통.avi 라는 이름으로 돌아다니던, 쓰레기를 자동으로 받는 쓰레기통에 대한 유튜브 영상 또한, 키넥트를 이용해 쓰레기를 추적합니다.

<스마트 쓰레기통>



여튼, 키넥트가 3D로 물체를 촬영한다는 것에서 착안해, 키넥트를 이용하여 3D 스캐닝을 하는 사람들이 등장했습니다.

대표적인 소프트웨어로는 ReconstructMe 가 있습니다. 무료 소프트웨어니까 윈도우용 키넥트가 있는 사람은 한번 해 보시는 것도 좋겠습니다.

저 또한 키넥트의 3D 스캐닝 기능을 이용해, 기술창업 올림피아드에서 발바닥을 3D로 스캐닝한 후 이를 이용해 발에 딱 맞는 깔창을 만들었습니다.


<당시 키넥트로 발을 스캐닝하던 모습>

이 외에도, 키넥트를 드론 위에 설치하고 드론을 움직여 건물의 3D 데이터를 만드는 연구도 진행되었죠.


<상기 내용의 TED 영상>

이렇게, 키넥트는 모션 캡쳐와 3D 스캐닝에 큰 족적을 남깁니다. Leap Motion같은 모션캡쳐 장비나 3D systems의 Sense와 같은 3D 스캐너는 키넥트가 없었더라면 만들어지기 힘들었을 것입니다.

  
<Leap Motion과 Sense 3D Scanner>




구글은 세상의 모든 정보를 모으려고 하죠.

세상의 3D 데이터를 모으기 위해, 구글은 키넥트의 기술을 활용합니다.

이것이 바로 프로젝트 탱고(Project Tango)입니다.


<프로젝트 탱고 소개 영상>


영상에서 나오듯이, 이 기술을 이용하면 오토포커싱이 아주 정밀하고 빠르며, 3D 스캐닝도 할 수 있죠. 나아가 증강현실도 가능합니다.

구글은 이 기능을 아주 멋지게 구현합니다.
아예 키넥트를 스마트폰에 내장시키고, 가속도계와 자이로스코프를 연동시킵니다.

<프로젝트 탱고 프로토타입 스마트폰의 구조>



구글은 이를 이용해 전 세계를 3D 데이터화 하려고 합니다.

<프로젝트 탱고 스마트폰을 이용한 3D 스캐닝>

이를 위한 프로토타입 스마트폰이 개발되었고, 구글 글라스처럼 주요 개발자들에게 배포된다고 합니다. 미래가 아주 기대되는 프로젝트입니다.

<프로젝트 탱고 프로토타입>




이와 같은 3D 스캐닝 기술은 구글만이 구현하고 있는가? 그건 또 아닙니다.

작년 11월 2일, 킥스타터에서 목표 금액인 $100,000 의 1290% 인 $1,290,439 를 성공적으로 펀딩받은 Occipital스트럭쳐 센서(Structure Sensor)는 아이패드에 장착하는 3D 스캐너입니다.


<Structure Sensor 킥스타터 소개영상>

스트럭쳐 센서의 원리는 키넥트와 같습니다. 적외선 LED로 특정 패턴을 방사하고, 적외선 카메라로 이의 왜곡을 감지하여 주변을 3D로 재구성하는 것이죠.

<적외선 LED>

스트럭쳐 센서는 이를 이용해 물건과 공간을 3D로 스캐닝할 수 있고, 정밀한 증강현실도 구현할 수 있습니다.

<물체 3D 스캐닝>

<공간 스캐닝>

제가 가장 좋아하는 잡지, 파퓰러 사이언스에서는 기사에서 스트럭쳐 센서를 극찬하기도 했습니다.


3D 프린터 명가. 3D 시스템즈에서는 자사 상표인 Sense를 붙여 이를 판매하려는 계획을 세우고 있죠.

<iSense>




스트럭쳐 센서 제조사에서는 API를 무료로 배포하고, 심지어 센서를 아이패드에 고정시키는 브래킷의 3D 데이터도 공개하여 어떤 기기에나 연결할 수 있도록 만들었습니다.

<오큘러스 리프트와 연동시킨 스트럭쳐 센서>

또한, 스트럭쳐 센서는 기본적으로 윈도나 맥, 리눅스 등에서도 구동 가능하게 만들어져 있습니다.

이는 스트럭쳐 센서의 성장에 큰 도움이 될 것이라고 생각됩니다.

저는 3D 프린팅과 3D 스캐닝, 그리고 디지털 제조(Digital Fabrication)에 관심이 많습니다. 그래서 3D 프린터를 두대씩 직접 만들기도 했고, 관련 대회도 출전했으며, 학교에서 연구회를 만들어 활동하기도 했죠.

저는 스트럭쳐 센서가 성장할 것이라고 생각합니다. Sense 3D Scanner를 써보면 스크린에 3D 스캐너가 붙어있는것이 얼마나 좋은지 느낄 수 있습니다.

일단 직관적이고, 편하며, 소스가 잘 공개되어 있죠.

만약 성장하지 못한다고 해도, 저에게는 좋은 도구가 될 것이라고 믿습니다.

그래서 학생 신분에게는 매우 부담스러운 $414를 들이부어(...) Structure Sensor를 프리오더 했습니다.



조만간 리뷰하도록 하겠습니다.

긴 글 읽어주셔서 감사합니다.


Appendix

<TechCrunch 리뷰>

<The Verge 리뷰>


2014년 3월 13일 목요일

[로봇 의수] 소소한 개선

지난번에 만든 로봇 의수는, 작동은 어느 정도 가능했지만 그 신뢰성이 매우 낮았습니다.

말로 설명하자니 조금 어려운데, 손가락을 굽힐 때, 서보 모터에서 실이 풀리는 길이가 손등쪽으로 들어가는 실이 당겨지는 길이보다 길어서 실이 느슨해집니다.
그런데, 이 로봇 의수는 사용 공간을 최소화하기 위해 서보모터에 풀리를 연결해서, 실을 감는 방식입니다.

<로봇 의수 구동방식>

그렇다 보니, 실이 느슨해지면 실이 풀리에 감기지 않아 실을 제대로 당겨주지 못하는 문제가 발생합니다.

<느슨해진 낚싯줄>





이 문제를 해결하기 위해, 실제 우리 팔의 해부학적 구조를 찾아봤습니다.

<팔의 해부학적 구조(출처)>

인간의 팔은 손가락을 굽히는 근육과 손가락을 오므리는 근육이 따로 있고, 낚싯줄과는 달리 힘을 전달하는 힘줄에 탄력이 있습니다.

이 중 후자의 원리에서 착안하여, 로봇 의수의 낚싯줄 힘줄에 스프링을 추가했습니다.

<구입한 스프링(구입처)>

이 스프링 판매처도 한국미스미처럼 배송비가 무료라 좋았습니다.
그런데 저런 콩알만한 스프링 10개가 만원에 육박하니...
생각보다 크기가 작으니, 웬만하면 큰 것을 주문하시는게 좋을 것 같습니다. 제가 주문한 규격은 KB1014입니다.

이 스프링을 낚싯줄 중간에 연결해 주었습니다.


<낚싯줄에 연결한 스프링>

처음에는 어떻게 해야 스프링과 실이 견고하게 결합될 지 고민했는데, 스프링의 고리 부분을 플라이어를 이용해 낚싯줄에 꽉 집어 단단히 고정시키고, 순간접착제를 한 방울 떨어뜨리니 낚싯줄에 접착제가 흡수된 상태로 경화되어 단단하게 고정되었습니다.




<스프링의 장력 조절 작용>

효과는 훌륭했습니다. 이처럼 낚싯줄이 풀리더라도 스프링의 길이가 줄어들면서 낚싯줄의 장력을 일정하게 유지시켜 주었습니다.

아두이노를 이용해 10분가량 동작을 반복시켜도 실이 풀리지 않고 정상적으로 작동했습니다.




<EVA폼 접착>

마지막으로, 손바닥의 마찰력 증가를 위해 손바닥과 손가락에 EVA폼을 잘라서 붙여주었습니다.
마찰력 뿐 아니라, 보기에도 더 좋아 보입니다.





마지막으로 로봇 의수 작동 영상입니다.






2014년 3월 10일 월요일

[Ultimaker 2] 3D 프린터 사용법

학교에서 다른 사람들도 Ultimaker 2를 사용할 수 있도록 매뉴얼을 만들어 보았습니다.
이메일로 요청하시면 PDF파일도 보내드리겠습니다.

1. Cura 실행






2. 속채움, 출력속도 설정



Tip: 출력 속도가 높을수록 출력 시간이 짧아지지만, 정밀도와 표면 품질이 떨어집니다.
높은 정밀도와 표면 품질을 위해서는 20~30mm/s, 빠른 속도를 위해선 50~60mm/s로 출력하는 것이 좋습니다.
속채움은 일반적으로 10~20 사이의 값으로 설정합니다. 30으로 설정하면 충분히 튼튼합니다. 50 이상부터는 오히려 수축이 증가해 정밀도가 감소합니다.




3. STL 파일 로드


Load 버튼을 누르고 출력하고자 하는 STL 파일을 선택합니다.





4. 파일 수정


마우스 오른쪽 버튼을 누른 채로 마우스를 움직이면 시야 위치를 바꿀 수 있습니다.
마우스 왼쪽 버튼으로 물체를 클릭한 뒤, 왼쪽 아래의 버튼들을 이용해 크기와 각도를 조절할 수 있습니다.




5. 오버행 확인



오른쪽의 모래시계 모양 버튼을 누른 뒤, Overhang을 선택합니다.





3D 프린터는 아래부터 쌓아나가는 방식이다 보니, 바닥이 없는 형태는 출력할 수 없습니다. Overhang 기능을 이용하면 이와 같이 3D 프린터가 출력할 수 없는 부분을 빨강색으로 강조해서 보여줍니다.
만약 빨간 부분이 심각하게 넓다면, 서포트 옵션을 켜 주어야 합니다.





6. 서포트 설정

오른쪽에서 Support Type을 선택합니다.
빨간 부분의 넓이가 넓다면, Everywhere을 선택합니다.
빨간 부분의 넓이가 작다면 None을 선택합니다.
서포트를 깔면 공중에 떠 있는 부분을 출력할 수 있지만, 서포트가 출력물과 상당히 강하게 접착되어 있어 서포트를 제거하기가 힘들고, 제거하더라도 흔적이 남아서 출력물 표면이 깔끔하지 않습니다.
웬만하면 모델링 단계에서부터 공중에 뜬 부분이 생기지 않도록 하고(모델을 두 조각으로 나누는 것도 좋은 방법입니다.), 만약 빨간 Overhang의 넓이가 작다면 프린터를 믿고 그냥 출력해 보는 것도 좋습니다.





7. 레이어 확인




오른쪽 위 메뉴에서 Layers를 선택하면 실제 3D 프린터의 노즐이 지나갈 경로를 볼 수 있습니다.




서포트를 켠 경우, Layers 모드에서 서포트를 확인할 수 있습니다.
위 사진에서 하늘색 부분이 서포트입니다.





오른쪽의 슬라이더를 조절하면 모델의 단면을 볼 수 있습니다.
내부가 격자 모양으로 채워져 있는 것은 속채움 값에 따라 그 조밀함이 달라집니다.

Layers 모드에서 빨강색은 테두리, 노랑색은 속채움, 하늘색은 서포트를 의미합니다.
출력물의 표면 품질은 테두리의 출력 속도에 따라 결정됩니다.





8. SD 카드에 G-code 저장
3D 프린터가 알아들을 수 있는 언어가 바로 G-code입니다.
Cura 3D 모델을 해석해 G-code로 변환해줍니다.


프린터에서 SD카드를 분리합니다.





분리한 SD카드를 컴퓨터에 연결합니다.




SD카드가 컴퓨터에 정상적으로 연결되면 Cura에서 SD카드에 G-code 저장 기능이 활성화됩니다.
이 버튼을 눌러주면





이와 같이 G-code가 저장되었다는 알림이 나타납니다.
이 때, 저장된 G-code의 이름을 기억합니다.
이 상태에서 SD카드 제거 버튼을 누르고 컴퓨터에서 SD카드를 제거한 뒤, SD 카드를 다시 프린터에 넣어줍니다.




9. 출력


프린터 뒷면의 전원 스위치를 켭니다.





우측의 조그 셔틀을 돌려 ‘PRINT’를 선택하고, 조그 셔틀을 눌러 출력모드로 진입합니다.






조그 셔틀을 돌려 방금 기억해 놓은 G-code 파일의 이름을 찾은 뒤, 조그 셔틀을 누르면 프린터가 출력을 시작합니다.

노즐과 베드가 가열될 동안 기다린 후, 출력이 시작되면 첫 번째 레이어가 바닥에 잘 달라붙는지 확인합니다. 첫 번째 레이어가 출력된 이후에는 프린터를 지켜보지 않아도 됩니다. 다른 일을 보고 돌아오면 잘 출력되어 있을 것입니다.

만약 출력 과정에서 문제가 있다면 아래 주소로 연락해 주세요.
13-133 조정민

wakalics@gmail.com