2013년 7월 29일 월요일

저랑 야바위 한판 하실래요? Rotation Matrix

자, 지금부터 저와 내기 한 번 하시죠! 일명 회전 야바위!ㅋ
방법은 간단합니다. 제가 (1,0,0)에 마킹을 해놓았는데요, 앞으로 이 공을 어지럽게 돌릴 것입니다. z축으로 30도, x축으로 45도, y축으로 -120도, z축으로 60도, x축으로 90도, z축으로 -30도... 자, 과연 지금 점은 지금 어느 위치에 마킹되어있을까요?


갑자기 웬 야바위냐고요? 왜냐하면 로봇을 움직이는데엔 관절의 회전에 대한 이해가 필수적이기 때문이죠. 여러분, 주먹을 앞으로 뻗고 싶다고 여러분의 관절도 고무고무하며 늘어나는게 아닌건 아시죠?ㅋ 여러분의 단순한 동작은 사실은 여러 회전이 교묘히 복합된 결과랍니다. 따라서 관절의 회전주먹 끝의 움직임의 관계를 이해하는 것, 그것이 바로 Kinematics의 첫걸음이랍니다~


먼저 Z축으로 돌려볼까요? X,Y,Z 값은 회전에 의해 위의 수식처럼 변화한답니다. (Z축을 중심으로 돌렸으니 Z값은 변화가 없겠네요.) 그런데 저는 못믿겠어요. Z축으로 한번 더 돌려볼래요~ (의심은 창의력의 기초이나니~)

오! 기적이네요! ㅎㅎㅎ 한번 더 돌리니까 두 각의 합(1)만큼 돌아갔어요!ㅎㅎㅎ 의심많은 저도 이젠 이 회전 식을 믿기로 했답니다ㅋ 그런데 이거 너무 복잡한거 아닌가요? 그래서 앞으로는 이 식을 행렬(matrix)을 이용해 표현하려고요. xR1으로 돌리면 x' = R1x, 이것을 다시 R2로 돌리면 x'' = Rx' = RRx가 되는 것이죠. 여기서 주의할 점은 나중에 돌리는 회전행렬들이 앞 쪽에 곱해진 다는 점입니다. 각 축에 대한 회전행렬을 정리하면 다음과 같습니다.


따라서 야바위 게임의 정답 역시 저런 형태의 회전행렬들을 계산기에(사실 쬐~끔 좋은 계산기에ㅎㅎㅎ) 넣고 enter를 치면 해.결.되는 것이죠ㅋ Matlab느님께 정답을 한번 물어볼까요?(2)

이제 야바위의 승리를 위해 남은 것은 좋은 계산기를 준비하는 일 뿐입니다ㅎㅎㅎ 사실 rotation matrix와 관련해서는 orthonormal matrix가 어떻고, special orthogonal group, SO(3)가 어떻고 등 할 말이 너무나 많은데요, 오늘의 수학은 이 정도로 정리하는 것으로 하고, 응용에 대한 예를 한번 살펴보도록 하죠.

출처 : http://www.cambridgeincolour.com/forums/thread11489.htm

나를 둘러싼 아름다운 풍경을 카메라에 모두 담고싶은데 그게 잘 안될 때가 있죠? 요즘나온 카메라 중에는 image stitching 기능을 제공하는 카메라들이 있는데요, 이 기능을 활용하시면 여러 장으로 나누어 찍은 사진들을 자동으로 붙여준답니다. 과연 어떻게 하는 것일까요?

여기에 가장 핵심적인 역할을 하는 것이 바로 rotation matrix 입니다. 여러분이 찍은 사진에는 분명 겹치는 부분이 있을거예요. 하지만 겹치는 부분을 그냥 찾으려고하면 안찾아질 것입니다. 왜냐하면 여러분은 다음 사진을 찍기위해 이미 카메라를 회전시켰을테니 말이죠. 따라서 찍은 사진행렬(3)에 카메라를 회전시킨 각도에 해당하는 회전행렬을 곱해준 뒤, 이 중에서 매칭되는 부분을 찾는 것입니다. (카메라 회전 각도나 매칭되는 부분은 어떻게 찾나고요? 궁금하시면 이 분야를 전공하시면 되요~ㅎㅎㅎ 나중에 비전에 대해 다룰 때 또 이야기를 해보도록 하죠!) 암튼 중요한 것은, 여러분은 오늘 여러분야에서 긴요하게 쓰이는 엄청 중요한 개념에 대해 배우셨다는 것입니다 :D


(1) 계산의 마지막 과정에서는 삼각함수의 덧셈정리가 사용되었습니다.

(2) Matlab은 MathWorks 사에서 개발한 소프트웨어로서 행렬을 기반으로 한 계산, 그래프 그리기 등이 가능한 소프트웨어입니다. Andrew Ng 교수님의 Machine Learning 강좌 첫머리에서 소개되었던 사연이 생각나네요. 한 학생이 졸업 후 교수님을 찾아와 너무 고맙다는 말을 하더랍니다. 그래서 교수님이 "내 강의가 현업에 도움이 많이 되었었나보죠?"라고 묻자 학생은 "전혀요. 그런데, Matlab은 엄청 큰 도움되더라고요"라고 했더랍니다ㅎㅎㅎ

(3) 사진의 이미지는 각 pixel에 RGB값을 할당한 행렬로 볼 수 있습니다.


* 제 글은 RSS로도 구독하실 수 있습니다. http://t-robotics.blogspot.kr/feeds/posts/default