2002 년에 열심히 정리해 놓은 문서들을  찾아 보다가 발견했습니다. 가끔 TV 프로그램 같은곳에서 몇년 몇월이 무슨 요일이냐? 라고 물으면 곧바로 대답을 하는 사람을 보고 엄청난 기억력이나 초능력을 가진것으로 취부하는것을 본적이 있는데요...  그게 그렇게 엄청난 것은 아닙니다.  암산만 조금 할 수 있다면 여러분도 가능합니다.

  가령 오늘이 2010년 7월23일 금요일입니다. 그러면 2011년 7월 23일은 무슨 요일일까요?

답은 오늘의 요일 + 1요일 입니다.  즉, 토요일 입니다.
왜일까요?  아래의 글을 읽어보시면 아시게 될겁니다.
로보밥 


0000년 00월 00일은 무슨 요일인가? 에 대한 해답

 @200205261900

궂이 컴퓨터가 없더라도, 모든 해의 요일을 맞출 수 있다. 그다지 어렵지 않은 산수만 할 줄안다면, 암산으로 말이다.

원리: 요일은 7 State만을 갖는 변수이다. 즉, 어느 순간 7개중 한 상태일 뿐이다. 단 7개. 때문에 쉬울 수밖에 없다.

찍어도 1/7 확률아닌가??? ^^;;

 

규칙1. 현재보다 x 일 이 더 지난 후의 요일은 x mod 7 의 값만큼 다음(현재요일기준)요일이다.

 

예1. 오늘은 일요일이다. 23일 후는 무슨 요일인가? 풀이: 23 Mod 7은 = 2 이다. 근데 오늘은 일요일이므로 2만큼 다음요일은 화요일이된다. (이후 +2요일이라고 약칭한다)

 

어떤날의요일 = 오늘의요일 + x Mod 7  (x는 차이 일수)

 

참고사항: MOD의 의미

x Mod 7이란 x를 7로 나눈 후 나머지 값을 말합니다.  나머지(Modulus) 연산자라고 불리며, 프로그래밍 언어에서는 보통 % 라고 표시됩니다.  윈도우 전자 계산기를 공학모드로 설정하면 Mod 버튼이 보입니다.   365 mod 7 이 몇인지 한번 계산해보시기바랍니다. 답은 1입니다.

 

규칙2. 1년 후 오늘의 요일은 오늘의 요일 +1요일이 된다. ( 단, 윤년인 경우,  +2 요일 )

우선 상식을 우선 배워보자.

상식1. 1년은 몇 일인가?

정답은 365.xxx일이다. 일년의 기준은 지구가 정확히 태양을 한바퀴 걸리는데 얼마나 걸리나를 정의하는데, 정확히는 365일이 넘는다. 그래서 문제는 해가 지날수록 시간이 조금씩 틀려진다는 것. 때문에 4년에 한번씩 (2월달에)하루를 추가하여 오류를 수정한다. 즉, 366일을 만드는 것이다(이게 윤년이다.) 평년엔 2월이 28일까지 있는데 윤년에는 29일까지 있다. 재밌는 것은 윤년의 2월29일이 생일인 사람은 4년에 한번 생일이 돌아온다 ^^; 주변에 2월29일생이 있다면 생일 잘 챙겨주시길~. (자세한 윤년의 정의는 아래의 참고자료를 보세용)

결론: 1년은 몇 일인가?

평년은 365일 (윤년이 아닌 모든해)

윤년은 366일 ( ,,, 1984,1988,1992,1996,2000,2004,2008 ,,, )

때문에 규칙2가 성립된다. 규칙1에 의해서 규칙2를 증명해보자.

평년인 365일의 Mod 7은 1이다. 그러므로 동일한 월/일의 다음해는 +1요일

윤년의 366일의 Mod 7운 2이다. 그러므로 동일한 월/일의 다음해는 +2요일이된다.

 

상식2. 몇월이 몇일까지 있는지 어떻게 정해지나?

결론을 말하자면, 1,3,5,7,8,10,12월은 무조건 31일까지있다.

그리고 2월은 평년에는 28일, 윤년엔 29일까지있다.

나머지 4,6,9,11월은 30일이다.

결국 2월을 제외하고는 매 해마다 동일하다.

 

규칙3. 다음월의 요일은 몇월인가에 따라 +요일치가 달라진다.  왜워두면 바로 적용가능.

오늘은 5월26일이다. 그러면 다음달의 26일 무슨요일인가?

규칙1에 의해서 계산을 해도도지만 더 단순한 규칙을 찾아보자.

월의 일은 31일 30일 29일 28일 네가지가 있다. 때문에 미리 계산해둔 값을 기억해서 쓰면 빠르다.

31 Mod 7 = 3 (그러므로 +3요일)

30 Mod 7 = 2 (+2요일)

29 Mod 7 = 1 (그러므로 윤년의 3월의 요일은 2월의 요일 +1 )

28 Mod 7 = 0 (그러므로 윤년의 2월의 요일은 3월의 요일과 동일)

결론: 1,3,5,7,8,10,12월은 다음달 같은일에 +3요일이 된다.

4,6,9,11월은 다음달 같은일에 +2요일이 된다.

2월은 윤년일 땐 다음달에 같은 요일이 되고, 평년에는 +1요일이 된다.

그러면 다음달이 아닌 한달 전은 어떨까?

이때는 저번 달을 기준으로 잡고 + 가 -로 변하게된다.

5월 26일(일)이라면 저번 달의 26일은 4월이 -2요일이 되므로 금요일이 된다.

 

 


참고사항: 윤년의 정의

[閏年, leap year]

카테고리: 과학 > 순수과학 > 지구과학 > 천문학 > 역법 및 측시법

개요 : 태양력법에서 2월을 29일로 둔 해.

본문 출처 : 두산세계대백과 EnCyber

원래 2월은 평년이 28일까지 있는 것이지만, 만일 윤년이 없이 언제나 평년이라면 1년의 길이가 365일로 되어 실제보다 0.2422일 짧아지므로 점차 역일(曆日)과 계절이 달라진다. 그러므로 율리우스력에서는 4년마다 2월을 29일로 함으로써 4년간의 연평균 일수를 365.25일로 정하였다. 이 값은 실제보다 1년에 0.0078일이 길다.

그후의 그레고리력에서는 다음과 같은 치윤법(置閏法)을 정하고 시행하였다. 즉, ① 서력 기원 연수가 4로 나누어 떨어지는 해는 우선 윤년으로 하고, ② 그 중에서 100으로 나누어 떨어지는 해는 평년으로 하며, ③ 다만 400으로 나누어 떨어지는 해는 다시 윤년으로 정하였다. 이로써 1년의 평균길이를 365.2425일로 정하여 역에 썼으므로 실제의 1년보다 0.0003일이 길다.

이 그레고리오력에서는 400년간에 97년이 윤년이 된다. 한국에서는 1896년(건양 1)부터 태양력이 쓰였는데 이 역법은 그레고리오력이다. 그레고리오력이 현행의 태양력이다. 율리우스력은 한국에는 들어오지 않았다. 고레고리오력의 치윤법에 의하여 1900년은 평년이었고 2000년은 윤년이 된다.

 


자,  이제 훈련만 잘하면 주위 분들에게 엄청난 계산력? 암산력의 소유자로 칭송 받게 될 지도 모릅니다.

한번 머리 훈련좀 해보시겠습니까? !!!

 

 


따뜻한 봄 날,  3D관련 전시회에 갔다가 신기한 녀석을 봐 버렸습니다.
빔프로젝터에 카메라가 달려있는 녀석이었는데,  이게 3D 스캐너라는 겁니다.
보자마자 원리가 보이더군요... 하지만 이게 정말 된단 말이야???


[사진1. 코엑스 3D영상기기 전시회에서 본 빔프로젝터 이용한 3D 스캐너 ]

예전부터 3D스캐너를 만들고 싶다는 생각은 했지만,  고가의 레이져 장비가 있어야 된다는 생각에 포기했었는데요,
뒤통수 맞은 기분이었습니다.  아니, 생각의 덫이 하나 떨어져 나가서 홀가분해졌다고 해야할까요!!

어쨌든, 중요한건,,,,  오홋! 그럼 나도 만들 수 있겠다.

그래서 일단 만들어봤습니다.
준비물은 매우 간단한 편입니다.

하드웨어: 일반 USB웹캠 1대(2대면 더 좋음),  빔프로젝터 1대,  고정용 스탠드.
개발환경: 제 경우 플래시 액션스크립트 3.0으로 직접 구현하는 것을 목표로 하였습니다.
              ( 보통은 C/C++, MATLAB,  기타 Tool을 이용하더군요,  관련링크 참조)



[사진2. 자작 3D 스캐너 - 웹캠 1대와 빔프로젝터 1대로 구성]

참고사항. 함께 설치된 Wiimote 2개는 IR Tracking용으로 일반적인 3D 스캐닝 용도로는 없어도 됩니다.



[동영상1. 스캐닝 후 공간분할이 잘 되었는지 확인하는 영상입니다. ]





[동영상2. 스캔 결과 Data(3D Points Cloud)를 별도의 MeshLab 뷰어로 확인해 봤습니다. ]

수만개의 단색 점을 3D 공간에 표시하기만 해도 대략적 형상이 나오는것을 확인 할 수 있습니다.



[동영상3. 몇가지 스캔 결과물을 모아놓은 영상입니다. ]

1. 종전의 영상은단색 점인것과 달리 본 영상의 점은 색상있는 점입니다.
2. 수만개의 점중에 일부 점만 무작위 추출하여 매핑을 한 영상입니다.
3. 위 결과를 라운드 처리하여 본 결과입니다.
4. 벽면의 붙인 그림을 스캔할 결과물입니다. 평면의 물체가 굴곡면으로 스캔된 것을 볼 수 있습니다.
    렌즈굴곡 보정을 안해줘서 그런것 같습니다.


사실 아직 완성된건 아니고, 렌즈굴곡보정, 노이즈처리, Point Cloud로 Polygon 형성, 3D Viewer 등등의 작업이 남아있습니다. 차후에 좀더 개량을 해야하겠습니다.  가능하면 관련 이론 소개를 별도의 문서로 올려보도록 하겠습니다. 새로운 참고자료도 본 글을 통해 업데이트 하도록 하겠습니다.


추가사항(2010.Nov.15)

스캔원리에대해 요약 소개:

링크 자료중 byo3d pdf 문서를 보시면  chapter5  structured lighting 이라는 개념이 있습니다.
사실 이게 빔프로젝터로 3D스캐너를 만드는데 있어서 핵심내용입니다.
카메라와  빔프로젝트가 거리 L만큼 떨어져있고,  빔에서 선이 하나 발사되어 벽에 반사되어 카메라로 캡쳐되는 상황을 가정해보시면 카메라와 프로젝터의 상대각을 구할 수 있고, 간단한 삼각함수만으로 그 점의 3차원 x,y,z 좌표값(카메라+빔프로젝터를 기준으로한 상대적인)을 구하실 수 있을겁니다.  

사실 이것만으로도 3d스캐닝이 가능합니다. 빔프로젝터에서 점을 이동하면서 카메라에서 그 위치를 캡쳐하게되면, (매우 느리겠지만) 원하는 point cloud를 구할 수 있습니다. 근데 문제는 너무 느려서 비효율적입니다. 점하나당 한번의 캡쳐를 해야한다는 결론이나오므로 실용성이 없습니다.

그래서 Structed Lighiting 이라는 방식이 도입되었습니다.
이 방법을 사용하면 n번의 갭쳐만으로 2^n * row  개의 기준화소점군(라인)을 구해낼 수 있게됩니다.
즉, 8장을 캡쳐하는것 만으로도 256개의 기준선을 추출할 수 있고, 각 기준선마다 m개의 화소를 추출할 수 있게되어,  한차례( 해상도에 따라 다름: 가령 8장 안팍)의 연사촬영만으로 수만개의 화소점을 구해낼 수 있게됩니다.

원리는 빛을 동일한곳에 다른 패턴으로 방사하고 촬영한 후 이 값들을 단순히 누적하기만 하면, 거의 화소단위로 영역이 구분이 된다는 것입니다. byo3d pdf문서를 잘 살펴보시면 원리를 알게될 겁니다. 

링크6. 정보가 추가 되었습니다. 

정보를 제공해주신 분에의하면 해당 자료를 다운받아 따라해보니 스캔 결과물도 괜찮게 나온다고 하셨습니다. 1대의 웹캠과 1대의 빔프로젝터, 90도 직각으로 설계된 캘리브레이션 도구를 이용하여 3d 스캐너를 구현한 방식입니다.


추가사항(2010.DEC.10)


사진. 단계노출 및 그로부터 계산된 line으로 그룹화된 점 정보들.

최하단의 결과 이미지에서 동일한 색상 및 명함으로 이뤄진 화소점들(Line)을 구해낸것을 볼 수 있습니다. 이 결과값으로 화소점들의 3D 좌표값을 구할수 있습니다.


사진. Point Net 씨우기

계산할 점의 개수가 너무 많으므로 일부만을 선택하여 사용하기 위해서 특정 점들만 선택하는 과정입니다. 왼쪽이 Convert 이전의 상태이며, 이때 일부 점들은 수동으로 위치시킬 수 있으며(얼굴부분) 나머지는 자동으로 가장 근처에 있는 점이 선택되어 최종적인 3D 좌표값으로 변환되게 됩니다.


사진. 3D스캐닝 세트 전경



관련자료
1. 제가 아는한 자작 3D스캐너와 관련하여 가장 자세한 기술소개문이 있는 사이트입니다.
   소스와 유틸리티, 원리소개등의 모든자료가 있다네요.    http://mesh.brown.edu/byo3d/index.html
  
2. 위 사이트에서 배포하는 기술소개문 pdf 파일입니다.  http://mesh.brown.edu/byo3d/notes/byo3D.pdf
3. 3D Photography on your desk  http://www.vision.caltech.edu/bouguetj/ICCV98/
    한수 더 떠서 막대기와 조명기구만으로 만드는 3D스캐너입니다. 
4.  Model-Based Face Capture from Orthogonal Images 사진 두장으로 3D얼굴 재현하기 입니다.
     http://mesh.caltech.edu/ee148/projects/EngLanmanMayes/
5. 독일 공항에 설치된 화려한 색광을 사용하는 얼굴스캐너  http://mtcave.blogspot.com/2009/09/face-scanner-test.html

6. 켄터키 대학에서 구현한 3d 스캐너: http://www.engr.uky.edu/~lgh/soft/soft.htm 



RLC발진회로와 크리스탈 발진회로


R,L,C를 적절히 혼합한 회로로 임의의 주파수를 발생시키는 발진회로를 구성할 수 있습니다. 하지만 정밀한 주파수 발생원으로 사용하는데 어려움이 많고 좀더 손쉬운 방법들이 있습니다.  바로 크리스탈(말 그대로 수정입니다.)을 이용하는 방법이 있는데요.  특정 주파수에 공진하도록 조정된 수정에 콘덴서 2개만 붙이면 발진회로의 심장부를 만들 수 있습니다. 간단히 고정밀도 주파수를 발생시킬수 있어서 전자제품이라면 하나씩은 달고 나오는것 같습니다.

레조네이터와 오실레이터

최근에는 기술발달로 세라믹을 소재로 하고 콘덴서까지 내장하여, 저가격 및 사용편리성을 높인 레조네이터를 많이 사용하곤합니다. 수정보다는 정밀도가 떨어지지만 비교적 저속으로 작동되는 마이크로컨트롤러(MCU)의 주 클록 발생원으로 사용하면 딱 인 제품입니다.
특정 주파수 발진 파형을 가장 손쉽게 얻으려면 원하는 주파수의 오실레이터를 사면 됩니다 . 입력 전압만 걸어주면 원하는 주파수의 방형파가 멋지게 출력됩니다.  하지만 가격이 비쌉니다. 휴대폰에 황금코팅(정말일까요? 정확하진 않습니다만 그렇게 보입니다)까지 되어 붙어있는 녀석입니다.

발진파형 비교 - 오실로스코프 파형측정

새로 구입한 오실로스코프의 성능도 검사할겸 레조네이터와 오실레이터의 발진파형을 측정해 봤습니다.

부품 사양:
레조네이터: 4MHz, 1Mohm저항(저는 500K정도 2개연결함), 인버터 IC로 CMOS4069UBCP 사용했습니다.
                (레조네이터의 다리 3개중 가운데가 GND, 나머지 2개는 방향없이 연결가능합니다.)

오실레이터: 1.000000 MHz, 기타부품 필요없고, 5V 전압원만 있으면 됩니다.
                 (오실레이터는 다리가 4개인데요, 점 표시가된 다리는 미사용됩니다.)

측정기기: DSO-2090 USB형 디지탈 오실로스코프 (BandWidth: 40MHz)   


[그림1. 레조네이터 발진회로]



[그림2. 오실레이터 발진회로]




[동영상. 레조네이터와 오실레이터 발진파형 측정]


로봇 개발 및 교육용 시뮬레이터 Marilou와 URBI(로봇통합제어플랫폼)의 교육자료( 파워포인트 ppt문서)를 아래에 첨부하였습니다.  필요하신 분은 요청없이 바로 다운로드하셔서 참고하실 수 있습니다.  국내의 일부 연구소와 기업들을 대상으로 제품 교육시 사용했던 자료이며, 기본 개념을 파악하시거나 소프트웨어 사용 테스트를 하실 경우 도움이 되실거라 생각됩니다.

Marilou_URBI-기본교육v2010a.pdf



아래는 교육문서 일부 페이지 내용입니다.











공인 받지는 못했지만, 자칭 세상에서 가장 쉬운 적외선펜(IR Pen)만들기 방법을 소개해 드리렵니다.
너무 간단해서 제작기라고 하기도 민망합니다.  멋들어진 적외선펜을 구입하거나 만들어 사용하시기 전에 우선 테스트로 적외선펜이 필요하신 경우나 여러개의 적외선펜이 필요하신 경우 뚝딱 만들어 사용할 수 있는 방법입니다.



Wii Remote Controller(이하 Wiimote)를 활용한 전자칠판 제작에 있어서 핵심 구성 요소 중 하나가  IR Pen(적외선펜)인데요, 제작 방법은 사실 단순하지만, 실제로 제작이 용이치 않습니다. 재료 구하고 조립하는데 그냥 하루가 갑니다. 그래서 제가 터득한 아주 간단한 제작법을 알려드리겠습니다. 일단 동영상을 먼저 보시죠.



[동영상1.  적외선펜(IR Pen) 만들기 - Wii전자칠판용 가장 간단한 방법 ]

주의사항. 동영상 자막중에 IRED의 짧은 다리를(+)라고 표시했는데, 오류입니다.
긴다리가(+)이고,  짧은 다리가(-)입니다.

혹시, 위 동영상이 버벅되시면 YouTube 동영상 자료를 참고하세요.  [링크 바로가기]



[사진. 완성된 스프레이형 적외선펜 ]

자세한 설명 들어갑니다. 위와 같은 적외선펜을 만들려면 아래와 같은 재료를 구하시면 됩니다.
보셔서 아시겠지만, 저항, 전선, 전지케이스, 스위치, 납땜도구 등 아무것도 필요없습니다. IRED 다리를 구부릴때 사용할 롱노오즈 플라이어(뺀찌)가 있다면 좀더 편하게 작업 할 수 있습니다.


재료1. 적외선 LED (IRED)
  • 파장이 940nm인 제품이라야 인식이 잘됩니다.  (파장이 다르면 인식률이 확~ 떨어집니다. 링크: 테스트자료)
  • 저항없이 1.5V 전지에 바로 연결하시려면 최대 허용전압이 1.7V이상인 제품을 사용해야합니다.
  • 단, 저항을 사용하신다면 최대 전압이 1.6V이하인 IRED를 사용하셔도 좋습니다.
  • 화각도 +-20도 정도가 되야 기울기에따른 인식률 저하가 적으며, 3D 포인터 등에 활용하기도 용이합니다.


  [사진1. 적외선 LED(IRED)] 

직접 찾아보신 분들은 아시겠지만, Wiimote용 IRED의 구입이 쉽지 않습니다. 제가 위 조건에 딱 맞는 IRED를 박스로 구입한 뒤 소량이 필요하신 분들께 판매중이오니 필요하신 분은 참고하세요 (글하단에 있는 관련링크참조)


재료2. 일반 1.5V 건전지
  • 일반 1.5V 건전지로 크기는 AA, AAA타입 모두 가능합니다. 
  • 건전지 (-)극 부위에 V홈이 있는(사진2) 형태가 좋습니다. 이곳에 IRED 다리를 둥굴게 말아 넣으면 전기적, 구조적으로 잘 결합되게됩니다.  신기하게도 국내산 건전지들이 보통 이런형태이고,  제가 갖고있던 중국, 일본, 미국산 건전지는 보통 이 홈의 깊이가 매우 작거나 아예 없더군요 (사진3 참조)
 ☞ 대부분의 국산 건전지의 경우 비닐커버를 벗겨내도 약간의 접착물이 남아있어서 v홈이 아닌부분에 IRED다리를 접합할 경우 이 접착물들로 인해  IRED 점등이 잘 안되곤 하므로 참고 바랍니다.



[ 사진2. 건전지 추천 형태 - v홈있는것 ]




[ 사진3. 건전지 비추천 형태 - v 홈 없는것 ]


작동원리 - 전지의 구조

동영상 후반부에 보여드렸듯이 건전지 옆면도 사실 (+)극성을 갖고 있는데 비닐커버로 감싸서 절연되어 있는것입니다. 음양(-)과 양군(+)이 바로 옆집에 살면서도, 멀리 학교에서만 만나야 하는 상황 같습니다.
무슨 연애소설이나 일제시대에 만들어둔 비밀 지하통로라도 발견한 기분입니다.
비닐 장벽을 조금 제거하고 곧바로 만나게 해줬더니 전선비용도 아낄수있으니 참 좋습니다.
그런데 간혹 이상한 녀석들도 있더군요, 제가 갖고있는 중국산 건전지는 옆면이 (-)극 입니다. [사진3.중국산 참조] 이런경우 극성이 바뀌므로  전압 테스터기로 직접 확인하신 후 다리 극성을 맞쳐서 연결하시기 바랍니다.


제작 후 작동 확인법

적외선펜은 작동상태가 맨눈으로 안보입니다. 
"눈에 안보이는 빛..." 참 매혹적인 시 구절같지만, 볼 수가 없으니 왠지 답답합니다.
하지만 다행이도 요즘 우리 주변엔 디지탈카메라가 넘쳐납니다. 대부분의 디지탈 카메라들이 가시광선외에 적외선도 함께 보고있으므로  디카, 핸드폰 카메라, 웹캠 어느것이던 적외선 발광 여부를 확인할때 사용하실 수 있습니다. TV리모컨이 말썽일때도 적외선이 제대로 발광하는지 디카로 확인 가능합니다.  제작후 꼭 테스트해 보시기바랍니다.

관련링크
1. 적외선펜 제작용 적외선 LED 팝니다.
2. 1000원짜리 비밀펜으로 적외선펜 만들기
3. 1광점 3D 포인트 트래킹 구현하기
4. 3광점 헤드 트래킹 구현하기



판매 종료했습니다.!!!!


Wiimote 전자칠판용 최적의 IRED 구하기

전자칠판을 만들기위한 재료 대부분은 쇼핑몰에서 바로 구입가능하지만 적외선펜만은 국내 판매처가 없으며(있다면 제게 좀 알려주세요), 자작을 위해 적외선 LED를 구하려해도 일반적인 부품이 아니므로 인터넷 전자부품상에서도 판매를 안하고 있습니다. 직접 사양에 맞는 제품을 구매하러 용산,구로,을지로를 돌아다니셔도 비슷한 제품은 있는데 주파수(빛의 파장)가 달라서 기껏 차비,시간, 돈을 들여서 구매한 부품이 무용지물이 될 수 있습니다. (저의 슬픈 경험담 입니다.)

하지만, 노력하면 배우는게 있습니다. Wiimote와 딱 맞는 940nm파장의 IRED를 구했습니다.
게다가, 작동 전원으로 건전지 1.5V 직결 사용이 가능하므로 "저항? 그런거 난 잘 몰라" 하시는 분들에게도 최적인 적외선 LED를 찾았습니다. 그리고 좀 많이 구매를 해뒀습니다.
(적외선펜을 만드시려는 분들은 맨 아래의 "적외선펜만들기"링크를 참고하시기 바랍니다. 저항도, 스위치도, 전선과, 건전지 케이스도 필요없는 적외선펜 만드는 방법을 알려드립니다.)

"나는 꼭 부품을 직접 구할꺼야!! " 라는 분들은 아래의 사양을 참고하시고요,
교통비, 시간 절약하실 분들은 저한테 구입해 주시면 감사하겠습니다. (위의 온라인샵 링크 참조)

사양소개:
 직경(mm) 파장(nm) 정격전압(V) 최대전압(V) dc Fwd 전류(I) 화각(deg)
 5 940 1.36 1.7  100mA +-20


특징1. Wiimote와 최적의 궁합 파장인 940nm 제품입니다.   (링크: 테스트 자료 참조)
특징2. 최대 허용전압이 1.7V이므로 일반 1.5V전지를 저항없이 연결해서 사용할 수 있습니다.
(일반 1.5V 건전지도 처음 사용시 전압을 측정해보면 1.6V가 넘습니다. 때문에 최대허용 전압이 1.6V인 IRED는 저항을 연결하여 사용해야 안전합니다.)
특징3. +-20도의 화각. 수신기와의 각도에 덜 민감하므로 적외선펜, 광점 트래킹 등 광범위한 용도로 사용하실 수 있습니다.
 


IRED 응용 사례:
  • Wii Remote Controller (Wiimote)를 이용한 전자칠판 만들기:   적외선 펜 만들때 사용됩니다.
  • IR SENSOR BAR :  Wiimote를 리모컨 용도로 사용할때  모니터 위에 센서바를 설치해야합니다.  이것도 IRED로 제작가능합니다.  참고 링크: 초간단 센서바 만들기
  • 자작 적외선 카메라용 포인터:  Wiimote가 없어도 일반 웹캠으로 적외선펜의 모션 트래킹이 가능합니다.
  • 터치패드구현: IR Array로 다량의 빛을 유리면에 방사후 손가락이 닿는 위치에서 반사되는 적외선을 카메라로 캡쳐하면 적외선펜 없이도 UI구현이 가능합니다.
  • 홍채인식 Eye Tracking:   모니터 쪽에서 적외선을 쏘고 사람의 눈에서 반사되는 적외선을 카메라로 감지하여, 눈알?의 각도를 측정해 냅니다. 쉽게말하면 사용자가 어딜 보는지 알려주는 장치입니다.  저도 사용해 봤는데요, 여러분이 알고있는 대형 웹사이트 운영사들이 이미 보유하고 있습니다. 왜냐고요?  새로운 디자인을 할때 여러분이 어딜 먼저볼지, 얼마동안 쳐다보는지 등을 미리 테스트 해볼 수 있기 때문입니다. 아직은 수천만원짜리 고가 장비이지만, 언젠가 개인용으로 저렴하게 나올때가 있을지 모릅니다. 기다리기 싫으시면 그냥 여러분이 만들어 보시죠!


☆ 1.5V 건전지와 IRED만 있어도 적외선펜 만들수 있습니다. 아래의 글을 참고하세요

Wii remote controller 이용한 전자칠판 소개 및 개량형 제작 예

50$로 만드는 전자칠판을 소개해 드릴까 합니다.
마이너리티 레포트에 나오는 멋쟁이 크루주형이 사용했던 UI에는 못미치지만 가격대 성능비 최고의 전자칠판입니다.
사실 구성 방법에 따라서는 100만원을 초과하는 장비가 사용될 수 도 있지만,  단지 컴퓨터만 있어도 몇만원의 돈만 투자하여 만들어 볼 수 있으므로 허위 가장광고는 아닙니다.

한번 만들어 보고 싶지 않으신가요?!

일단, 전자칠판을 만드는데 필요한 장비를 둘러보겠습니다.

[준비물]

1. 컴퓨터
 일반 PC건 노트북이건 넷북이건 상관없습니다. Windows XP정도 돌아가는 컴퓨터면 다 됩니다. Mac OS도 물론 가능합니다.

2. 모니터
 전자칠판의 얼굴역활을 하는 녀석이니  가능한 큰 화면이면 좋겠습니다. 일반 모니터도 가능합니다만 화면이 작아서는 전자칠판이라 부르기가 곤란해집니다.  가격대 얼굴 면적비가 최고인 빔프로젝터의 사용을 추천 합니다.  대형 TV모니터도 컴퓨터 화면 출력을 지원한다면 좋습니다.

3. 위모트 제어기(Wii remote controllerr: 이하 위모트)
 Wii게임기에서 조이스틱같은 역활을 하는 장치입니다. 게임 버튼과 함께 모션센서와 적외선 센서등이 내장되어있는 재능많은 녀석인데요 전자칠판에서는 적외선펜의 위치를 감지하여 블루투스 통신을 통해 컴퓨터로 전송해주는 역활을 담당합니다. Wii게임기를 갖고 계신다면 따로 구매할 필요가 없고, 없으신분은 게임기 통째로 사시지 마시고 이것만 따로 하나 구매(28,000원 정가)하시면 됩니다.

4. 블루투스 동글(Blutooth,BT)
  위모트와 컴퓨터간의 통신을 위해 필요합니다. 노트북엔 대부분 내장되어있고요, 이게 없는 노트북이나 PC는 BT.동글이라는걸 USB포트에 꽂아줘야 합니다. 

5. 적외선 Pen
 국내에선 아직 판매되는곳이 없습니다. (아시는 분 계시면 제게좀 알려주시기 바랍니다.)
해외에서 판매되는 제품을 구하시거나 자체 제작하셔야 하는데요, 적외선 LED(IRED), 스위치, 저항, 케이스, 전선 등의 재료를 구해서 직접 납땜해서 만드는 방법이 있습니다. 제 경험상, 재료 구하고 제작하는데 하루가 그냥 갑니다.
때문에, 일단은 제가 터득한 손쉬운 방법을 이용하시길 추천합니다.

[참고링크: 세상에서 가장 쉬운 적외선펜(IR Pen) 만들기 ]

6. 전자칠판 소프트웨어
 무료 소프트웨어가 공개되어있고, 기능을 보강한 유료 소프트웨어도 판매되고 있습니다. 일단은 무료로 사용해보시고 차후에 유료 소프트웨어 구매도 검토해 보시기 바랍니다.

7. 기타 응용 소프트웨어
 전자칠판과 최고의 궁합을 이루는 많은 유/무료 어플리케이션들이 있습니다. 이중 제가 알고있는 몇개를 따로 소개해 드릴예정입니다.

총 경비:
1,2번을 갖고 있는경우 3,4,5 구입 가격이  6만원이 안되므로 $50 전자칠판이 맞는것 같습니다.
하지만,,, 제경우엔 $50짜리 전자칠판 만들려고(물론 다른용도도 있겠지만) 약 $500짜리 프로젝터를 구입했다는점을 고백합니다 ;;
갑자기 돌스프 이야기 생각나네요..



전자칠판 설치 방법

설치방법은 이미 수많은 동영상과 소개글들이 있으므로 참고하시고요
여기서는 일반적인 전자칠판 설치시의 단점을 개선한 설치방법을 알려드리겠습니다.

본래 이 아이디어를 창안하여 공개한  Johhny Chung Lee 의 블로그와 동영상은 아래에서 보실 수 있습니다.
Johhny Chung Lee's youtube channel http://au.youtube.com/user/jcl5m
Johhny Chung Lee's Blog http://procrastineering.blogspot.com/


배치 방식

동일한 장비로 용도에따라 여러가지 형태로 설치가 가능합니다. 제 나름대로 3가지 방식으로 정리하자면
1. 정면형: 일반 학교, 영화관에서 사용하는 프로젝터 스크린 배치형태입니다.
2. 후면형: 프로젝터와 센서가 스크린 뒷면에 있는경우 입니다. 화면이 가려지지 않습니다.
3. 후면미러형: 영상이 거울에 한번 반사된후 스크린 뒷면에 맺히는 방식입니다. 설치공간 부담이 적어집니다.


화면가리는 문제

본래 wii전자칠판은 사용자 등 뒤에 프로젝터와 Wiimote가 설치되어있고 사용자 앞에 설치된 스크린에 반사된 화면에 적외선펜으로 특정 지점을 밝혀주면 이 지점을 Wiimote가 감지해 내는 방식입니다.
그러나 이방식은 좀 불편한 점이 있습니다.
사용자 위치에 따라 프로젝터 화면을 가리게 되고 더불어 적외선 펜의 입력도 감지 할 수 없게되는 점 때문입니다.
대형 스크린이라면 큰 문제없이 사용할 수 있지만,  개인용 전자칠판(아이디어 스케치등) 용도로 사용한다면 화면에 몰입하여 TOM크루즈형같이 멋지게 작업하기는 곤란해 집니다.


문제해결 방법

 프로젝터와 Wiimote를 스크린 뒷면에 설치하면 사용자가 화면을 가리는 일이 없어집니다. 단, 전자칠판 뒷면에 별도의 설치 공간이 필요하게됩니다. 벽에 붙여놓고 사용하기 곤란하다는겁니다. 때문에 이 공간을 줄여주는 방법이 있는데 그것이 후면반사형 입니다. 무슨 교과서 이론 소개 하는느낌이 듭니다.


후면 반사형 설치 예

외형을 나무로 제작한 후면 반사형 전자칠판 입니다.  그 옛날(20년도 안됐지만) 대형 화면을 보고 싶다는 욕구를 화질을 포기하면서까지 이룩하려 했던... 바로 그 유물인 프로젝터 TV가 생각나는 형태입니다.  케이스만 잘 맞쳐주면 프로젝터 TV형태의 전자칠판을 만들 수 도 있겠군요.
모양새가 영 아니지만, 화면가림 현상없이 아이디어 스케치나 게임용도로는 꽤 쓸만한 전자칠판입니다.


[사진A1. 후면반사형 전자칠판]



[사진A2. 후면반사형 전자칠판 상세보기]



또다른 형태

 탁자형의 제작도 생각중입니다. 인테리어적으로도 좀더 보기좋고 오락요소와 연관되어 여럿이 앉아서 함께 게임이나 아이디어 구상을 하는 용도로 사용하면 적절하겠다는 생각이 듭니다. 탁자형태의 (마이크로소프트사와 관련된) 제품이 이미 공공 전시회등에서 사용중인걸 봤는데요.  (물어보나마나 몇천만원이겠죠???)






플래시로 AR(증강현실)을 구현해 봤습니다.

3D Engine은 Sandy3D, 마커인식은 FlarToolKit  을 사용했습니다.

증강현실 개발 지원킷인 ARToolKit을 AS용으로 포팅한것이 FlarToolKit인 데요

플래시도 AS3.0 들어와서 속도도 꽤빨라지고, 거의 못하는게 없는것 같습니다.

FlarToolKit 내에 예제용 3D모델까지 포함되어있으니 여러분도 한번 시도해 보시죠~

시중에 돌고있는 Simson 종이인형을 3D모델링하고 관절 몇개 만들어 왕복운동 시켜본 것 입니다.





체험 서버 종료

무료 호스팅 서비스를 이용하던중 해당 회사 서비스가 종료되어  현재 체험이 불가합니다.  죄송합니다!!

동영상에서 보셨듯이 별다른 기능은 없고요, 그냥 목과 팔을 흔드는 심슨 3D 로봇이랍니다. 

차후 서버에 재등록하게되면 링크를 수정하도록하겠습니다.


준비물:

  1. 웹캠 : 플래시에서 인식되는 웹캠이면 됩니다.

  2. 마커(인식용 이미지가 인쇄된 종이) : 첨부파일을 다운로드 하셔서 가능한 두꺼운 종이에 인쇄하세요.


사용 방법:

접속 후 웹캠 사용 허락하기를 선택하신 후,  인쇄된 마커용지를 카메라에 비춰줍니다. 이후 마커의 위치와 방향에 맞쳐서 3D 로봇이 오버레이 되는것을 보실 수 있습니다. 조명이 중요하니 적절히 주변광을 맞춰주시면 인식이 더 잘됩니다.


어떻게 작동하는가?

웹캡으로 실시간 캡쳐한 영상에서 마커(특정 이미지 패턴이 인쇄된 종이)를 찾고, 그 위치와 방향을 계산해 냅니다. 여기까지가 FlarTooKkit(ARToolkit)이 하는 일이고요, 마커의 위치와 방향에 해당되는 영상이미지 위에 3D로 가상의 영상을 오버레이시켜서 실제화면과 가상화면을 동기화 시키게됩니다. 이때 3D 형상을 보여주는데 사용되는것이 Flash 3D 엔진입니다.  본 예에선 Flash 액션스크립트 개발환경을 이용하여 Flash Player상에서 작동되게되므로 별도의 프로그램 설치없이 웹카메라와 웹브라우져만으로 작동되는 장점이 있습니다.  다만 속도가 조금(많이?) 느립니다.  때문에 매우 빠르고 고화질을 원하는경우는 C/C++기반의 개발환경을 이용하곤 합니다. 다만 이경우엔 별도의 실행파일을 설치하여야 한다는 단점이 있습니다.


[]첨부파일: 증강현실FlarToolkit용 마커이미지(pdf파일)

flarlogo-marker.pdf


[]참고자료

FlarToolKitSandy3D  , Away3D

심슨종이로봇: http://cubeecraft.com/  직접인쇄해서 종이로봇 만들어보시면 로봇 장난감이 뚝딱~.


URBI는 프랑스 Gostai사에서 개발한 로봇개발 SW플랫폼입니다. 아래의 개요 소개문은 2007년 Gostai사의 홍보자료를 근거로 번역한 자료이며, 현재는 다소 변화된 부분도 있으나 기본개념은 동일할 겁니다.  최근 가장 중요한 변화는 GPL 라이센스의 도입과 엔진 버전이 2.0으로 변화되었다는것인데요.   상당히 혁신적인 기술임에도 널리 알려지지 못한채 사장되거나 시기를 놓쳐버리는 제품들이 많은 상황에서 적절한 대응이 아니였나 생각됩니다.  여러분도 직접 개발사 홈페이지에서 SDK를 받아서 테스트를 해보 실 수 있습니다. 기존 로봇 개발환경과 비교해서 너무도 손쉬운 제어  방법을 제공하고 있으므로, 실무 적용 여부를 떠나서 새로운 아이디어의 발견을 위해서라도 한번 검토해볼 만한 기술이라고 생각됩니다.

[사진1. URBI:: Gostai Studio IDE화면 ]


URBI는 로봇과 인공지능 어플리케이션 개발을 위한 크로스 플랫폼형 소프트웨어 플랫폼이며 병렬처리 및 이벤트처리를 지원하는 URBI 스크립트 언어(C++ 문법과 유사함)를 기반으로 하고 있다. 또한 UObject라 불리우는 분산형 컴포넌트 아키텍쳐 기술을 제공한다. 가령 C++객체를 URBI언어 내에 쉽게 이입하여 사용할 수 있으며, 이를 원격 실행 형 컴포넌트로도 운영할 수 있다.

현재 로봇용 소프트웨어들은 호환성이 없어서 운영체제나 개발환경에 따라 서로 다른 제어 소프트웨어가 필요하다. 여러분은 URBI를 통해 이 문제를 해결할 수 있다.


    * URBI는 운영체제와 개발환경에 무관하게 호환성을 가지는 로봇 제어 인터페이스를 제공한다.
    * URBI는 Linux, Windows,  Mac OS, custom real-time OS 기반의 로봇 모두에서 작동되며 C++ , Java, Matlab, C#, Python, ... 등의 언어들과도 라이브러리를 통한 인터페이스를 제공한다.
    * URBI 호환형으 로 한번 제작된 소프트웨어 모듈은 코드 수정이나 컴파일 없이 플랫폼에 상관없이 재 사용 할 수 있다. 가령 C++로 개발된 음성인식 기능의 컴포넌트를 UObject로 변환하여 제작해두면 운영체제에 상관없이 URBI 호환 로봇에서 재 이용 가능하다.


“URBI는 로봇제어에 특화된 언어이다”

기존 언어들은 기본적인 기능의 구현을 위해 개발시간의 대부분을 소비하게 하며 특히 인공지능의 구현 시 너무 복잡해진다. 이에 로보틱스 분야에서는 좀더 상위레벨의 접근방법이 요구되고 있다. 이 문제를 해결하기 위해 URBI는 언어 차원에서 병렬처리 및 이벤트구동을 지원하는 등 로봇 제어에 특화된 기능들을 포함하고 있다. URBI는 복잡한 쓰레드 및 이벤트 프로그래밍을 하지 않고도 병렬처리 및 이벤트 기반 프로그래밍이 가능하므로 배우거나 사용하기 쉬우며, 또한 몇 줄의 코드로 수십 줄의 코드를 대신하게 되므로 고급 개발자들은 좀더 상위 레벨의 추상화를 통한 고급 프로그래밍에 전념할 수 있게 된다.

 
현재, 대학 및 연구소와 산업현장 또는 취미용으로 이용되고 있다. URBI는 이미 휴머노이드 로봇이나 Marilou, Webot과 같은 시뮬레이터 등, 십여 종이 넘는 로봇용으로 구현되어 있다. URBI를 통하여 인공지능 전문 개발 업체들이 제작한 여러 종류의 컴포넌트를 이용할 수 있다. 일부 URBI Engine들(Aibo, Lego NXT, ...)은 개인적인 용도에 한해 무료로 이용할 수 있으며, 또한 GPL 라이센스 하에 공개된 URBI remote SDK를 이용하여 직접 여러분의 시스템에 적용해 볼 수 있다.

 
URBI 응용분야

- 인공지능 및 인공생명 어플리케이션
- 산업용 및 서비스 로봇 연구 개발
- 로봇용 디바이스 연구 개발
- 교육, 엔터테인먼트, 게임 프로그래밍
- 통합 제어 인터페이스


URBI 제품

UObject  SDK


URBI 호환형 UObject를 제작하는데 이용하며, C++로 개발된 얼굴인식 같은 인공지능 모듈이나 제어 어플리케이션들을 손쉽게 UObject로 전환하여, 각종 URBI호환 로봇들을 위해 사용할 수 있다.

engine SDK


특정 로봇 및 제어시스템들을 위한 URBI엔진을 제작하는데 이용하며, 산업용 및 서비스 로봇, 각종 제어 시스템 등을 URBI 호환 환경으로 만들기 위해 특정 로봇용 URBI엔진을 제작할 수 있도록 지원한다.

URBI engine


이미 특정 로봇용으로 제작된 URBI엔진들. URBI engine for Marilou Robotics Simulator 등.

 

URBI Development Studio

Behavior Editor, Motion Editor, Universal Remote Controller 포함. URBI 호환 형 로봇의 행동 패턴을 만들고, 인공지능 모듈과 융합하여 상태기계 기반의 제어 프로그래밍을 할 수 있도록 지원하며 URBI의 병렬처리 및 이벤트 처리 프로그래밍을 그래픽 인터페이스를 통해서 직관적으로 할 수 있는 방법을 제공한다. 또한 로봇의 원격 제어 프로그램을 위젯들의 조합 방법을 통해 손쉽게 만들어 주는 기능도 지원한다.
 

Plug & Plug형 컴포넌트

얼굴인식, 음성인식, 음성 합성 및 인식 등의 인공지능 모듈 및 각종 어플리케이션 들이 있으며, 각분야에서 전문적인 솔류션을 보유한 협력 업체에서 제작한 URBI 호환 UObjects 모듈 들이다.


[동영상 1. URBI 소개]



[동영상 2. URBI Studio]


관련사이트1.

http://gostai.com

ARDrone  + URBI응용예:

http://kr.engadget.com/2010/12/10/ar-drone-gets-urbi-and-tracks-red-ball/








Marilou(한 국식 발음 마릴루) 본토발음은 표현 못하겠네요 ;;
프랑스 anykode사에서 개발된 로봇 시뮬레이터입니다.  몇가지 로봇시뮬레이터들을 보신분 들이 많을겁니다. 그중에서 유일하게 돋보이는 기능은 별도의 모델링툴없이 곧바로 로봇장치를 모델링 할 수 있다는 점입니다.
아래의 강아지 로봇도 별도의 모델링 전용SW없이 Marilou 내에서 제작된 로봇의 예 입니다. Sony사의 Aibo로봇과 동일한 관절 형태를 갖고 있으며, 좀더 사실적인 외형을 원할경우엔 외부모델링된 Data를 불러와서 연결시킬 수 도 있습니다. 제작사에서 다운로드하여 아래와같은 관절로봇을 만들어 보실 수 있습니다.





 

Marilou Robotics Studio이동형, 휴머노이드형, 관절형, 협력형 로봇들을 직접 모델링하고 현실의 물리법칙이 적용되는 상황에서 시뮬레이션 할 수 있는 환경을 제공합니다.

 



[동영상1. 강아지로봇 구현 예제]


[]Marilou Robotics Studio
의 주요특징

- 별도의 3D모델링 프로그램 없이도 Marilou Robotics Studio 자체적으로 로봇 형상 및 관절 축의 정의로 어떠한 형상의 로봇도 제작이 가능합니다.

- MODA인터페이스 제공:  로봇제어용 네트워크 프로그래밍 소스 자동생성 마법사 기능

- VCP(Virtual Serial Port)가상시리얼 포트 지원 

- URBI(로봇제어용 유니버셜 인터페이스) 지원
  Marilou URBI Engine을 추가하면, URBI호환 로봇간의 완전한 호환성을 바탕으로 한 제어프로그래밍 환경을 이용할 수 있습니다.

 


.URBI(Universal Real-time Behavior Interface):
 
플랫폼과 무관하게 통합(Universal) 로봇제어 인터페이스 환경입니다.
운영체제 및 개발환경과 무관하게 URBI호환 엔진을 장착한 로봇들간의 완전한 호환성을 제공하므로, 로봇제어프로그래밍 개발환경이 통합됩니다. 인공지능(AI)모듈을 URBI UObject로 제작하면 URBI호환 로봇간의 통합 이용이 가능합니다.

 

.URBI Script

 로봇에 특화된 병렬처리 및 이벤트처리 같은 기능의 구현을 위해, 전용 스크립트 언어입니다.  URBI 스크립트언어는 로봇에 내장된 URBI Engine에 의해 해석되어 필요한 제어명령을 수행하게 됩니다.



[]Marilou Robotics Studio의 주요특징

 

- 별도의 3D모델링 프로그램 없이도 Marilou Robotics Studio 자체적으로 로봇 형상 및 관절 축의 정의로 어떠한 형상의 로봇도 제작이 가능합니다.

 

- Microsoft계열 프로그래밍 환경과 GNU Gcc 프로그래밍 환경 모두 지원하며
 
다양한 프로그랭언어(C/C++, VB#, J#, C# and C++ CLI)를 사용할수있으며,
Matlab, Java, Automgen and RT-Maps
과도 호환됩니다.

 

- MS계열도 Visual Studio 2005 Express버젼 이용시 무료개발환경 이용가능

- MODA인터페이스제공: Marilou 시뮬레이터용 로봇제어 인터페이스. 로봇 제어프로그램은 TCP/IP 접속을 통해 로봇에 연결되며, 이를 위한 소스코드를 기본으로 자동생성해주므로, 별도의 네트워크프로그래밍 없이 네트워크 협력 형 로봇들을 시뮬레이션 할 수 있습니다.

 

- VCP(Virtual Serial Port)가상시리얼 포트 지원: 시리얼통신에 의한 로봇제어 프로그래밍 방식을 사용 중일 경우 제어프로그램의 변경 없이 가상시리얼포트를 통한 로봇제어가 가능합니다. 이를 통해 케이블 시리얼은 물론이고 블루투스나 Zigbee같은 무선 시리얼 통신을 이용할 경우라도 가상로봇과 실제로봇의 완벽한 호환성을 제공하므로 응용성이 좋습니다.

 


- URBI(Universal Real-time Behavior Interface): 로봇제어용 유니버셜 인터페이스 엔진지원
  Marilou
URBI engine을 추가하면, URBI호환 로봇간의 완전한 호환성을 바탕으로 한 제어프로그래밍 환경을 이용할 수 있습니다.

 


.URBI
?
플랫폼과 무관한 통합된 로봇제어 인터페이스 환경입니다.
운영체제 및 개발환경과 무관하게 URBI호환 엔진을 장착한 로봇들간의 완전한 호환성을 제공하므로, 로봇제어프로그래밍 응용환경이 통합됩니다. 인공지능모듈을 URBI UObject로 제작하면 URBI호환 로봇간의 통합 이용이 가능해지므로, 다종의 로봇들간에도 제어프로그램 환경과 인공지능 모듈의 호환된 융합 이용이 가능합니다.

 

또한 플랫폼 호환성과 로봇에 특화된 병렬처리 및 이벤트처리 기능의 구현을 위해, 전용 스크립트 언어인 URBI Script를 이용합니다.  URBI 스크립트언어는 로봇에 내장된 URBI engine에 의해 해석되어 필요한 제어명령을 수행하게 됩니다.




관련링크1. http://anykode.com

한글 교육자료: http://robobob.tistory.com/10


제품 구입, 교육 및 기술지원 문의는 메일(sixgen@gmail.com)로 해주시기 바랍니다.

+ Recent posts