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광점 헤드 트래킹 구현하기

+ Recent posts