Gimbal Lock

Gimbal Lock에 대해 자세히 알아보기 전에 정확하진 않지만 대략 착한놈인지 나쁜놈인지 정도는 감을 잡을 수 있는 문장을 읽어보자.

Gimbal Lock(김벌락)은 3차원 공간에서 오일러 각을 이용하는 방식으로 회전을 다룰 때 맞닥뜨리게 되는 부작용이다.

그렇다. 부작용이라고 표현한 것처럼 Gimbal Lock은 일단은 나쁜놈이다. 이제부터 위 문장에 나온 단어 중 별로 친숙하지 않은 김벌, 오일러 각에 대한 이야기를 시작으로 김벌락이 왜 나쁜놈인지 어떻게 이 나쁜놈을 피해갈 수 있는지 차례로 알아보자.

Gimbal

먼저 김벌은 무엇인지 영상으로 보자.
일단 4분 46초부터 5분 30초 까지만 보면 된다.

김벌은 어릴 때 한 번쯤은 가지고 놀아봤을테지만 이름은 몰랐던 바로 그 장난감이다. 김벌은 3가지 축으로 물체를 회전시켜 볼 수 있는 장난감인데, 아래와 같은 특징을 가지고 있다.

  • 안쪽의 고리는 중간의 고리에 연결되어 있어 중간의 고리가 회전할 때 함께 회전하고,

  • 중간의 고리는 바깥의 고리와 연결되어 있어 바깥의 고리가 회전할 때 함께 회전한다.

다음 이야기를 이어가기 전에 여기서 꼭 기억하고 넘어가야 할 것이 한 가지 있다.

중간에 있는 고리가 회전할 때는 안쪽에 있는 고리를 물고 함께 회전한다.

바로 이것이 Gimbal Lock이 발생하는 핵심 원인이다. 물고 함께 회전하기 때문에 Lock이라는 잠김 현상이 발생한다.

오일러 각

오일러 각(Euler's Angle)은 이름에서 풍겨나오는 아우라와는 달리 단순하다. x축 기준의 회전각, y축 기준의 회전각, z축 기준의 회전각을 말한다.

오일러 각은 단순해서 그림이 오히려 글보다 보다 복잡해보이지만 그래도 한 번 보고 가자.

오일러 각을 이용한 회전이라 함은 결국 x, y, z축별 회전각을 통해 계산하는 회전 방식을 의미한다.

그렇다면 축별 회전 순서는? 그건 정하기 나름이다. 보통은 단순하게 x축 회전을 가장 먼저, 그 다음 y축, z축의 순서로 회전을 적용하며, 이 글에서도 그 기준을 따른다.

오른손 법칙, 왼손 법칙

x, y, z축이 등장했다. 앞으로 이 글에서의 설명은 모두 오른손 법칙을 기준으로 한다.

오른손 법칙, 왼손 법칙도 그냥 그림으로 보고 넘어가자.

오른손 법칙은 오른손을 손바닥이 하늘을 향하도록 폈을 때, 엄지손가락이 가리키는 방향을 x축, 손바닥이 가리키는 방향을 y축, 오른 팔꿈치가 가리키는 방향이 z축이다.

회전과 관련해서 오른손 법칙은 반시계 방향을 기본 회전 방향으로 한다. 손을 세로로 편 상태에서 주먹을 쥐어보자. 엄지를 회전 축이라고 한다면 나머지 네 손가락은 반시계 방향으로 회전한다.

영상으로 보는 김벌락

이제 맨 처음 김벌락을 소개하는 문장에 나온 단어는 다 알게 되었고 오른손 법칙도 이해했으니, 이제 김벌락이 어떤 현상인지 실제 눈으로 확인해보자.

영어로 나오지만, 각 고리는 축별 회전면을 의미한다는 것만 이해하고 있으면 보는 데 큰 무리 없을 것이다. 06:24에서 06:50 까지만 보면 된다.

글로는 길었지만 영상으로는 겨우 25초 정도만 보면 이해할 수 있는 현상이 바로 김벌락이다.

김벌락의 정의

이제 김벌락을 조금 더 폼나게 정의할 수 있을 것 같다.

김벌락은 3차원 공간에서 오일러 각 회전을 적용할 때, 특정 회전 상황에서 세 축 중 두 축이 겹치는 현상이다.

김벌락이 왜 문제인가

위의 영상을 보면 알겠지만 y축을 기준으로 90도의 회전을 적용하면 x축과 z축이 겹친다. 두 축이 겹친다는 것은 x축을 기준으로 회전하는 것과 z축을 기준으로 회전하는 것이 결국에는 동일한 하나의 축을 기준으로 회전한다는 소리다.

처음에 x, y, z축 별 회전각을 a, b, c로 정했을 때는 각 축 별로 a, b, c만큼 회전하길 원했던 건데, b가 90도가 되면 x축 기준의 회전과 z축 기준의 회전이 같아진 다는 것은 원래 원했던 상황이 아니다. 그래서 김벌락이 문제아 취급을 받는다.

영상에서는 y축 기준 90도 회전을 예로 보여줬는데, 사실 아주 엄밀히 얘기하면 y축을 기준으로 90도가 아니라 -90도를 회전시켜야 x축과 z축이 완전히 동일해진다. 90도로 회전하면 x축과 z축이 일직선상에 있지만 방향은 반대인 상태가 된다.

y축이 -90도 회전하면 x축, z축이 동일해지므로 그 동일한 축을 기준으로 a + c 만큼 회전이 발생하고, y축이 90도 회전하면 x축, z축이 방향이 반대인 상태가 되므로 회전이 서로 상쇄되어 x축 기준으로 a - c 만큼, z축 기준으로는 c - a 만큼 회전이 발생한다. 물론 이 내용은 앞에서도 얘기했듯이 오른손 법칙, 반시계 방향 회전 기준이며, 회전은 x축, y축, z축 순서 기준이다.

다른 관점에서 보는 김벌락의 원인

오일러 회전을 얘기할 때 축별 회전 순서라는 것을 잠깐 얘기 했었다. 김벌락의 원인은 축별 순서가 존재하고, 그 순서에 따라 어떤 축의 회전이 다른 축의 회전에 영향을 미치기 때문에 발생한다. 어떤 점(point)을 오일러 회전을 적용해서 x축, y축, z축 순서로 회전 시키는 방법을 단순하게 표현하면 다음과 같다.

회전 후 점의 좌표 =
z축 기준 회전 × y축 기준 회전 × x축 기준 회전 × 회전 전 점의 좌표

안쪽 고리(x축 기준 회전)는 다른 고리에 영향을 안 미치고 회전하는 물체(회전 점의 좌표)에만 영향을 미치며, 중간 고리(y축 기준 회전)는 회전할 때 안쪽 고리(x축 기준 회전)를 물고 함께 회전하고, 바깥쪽 고리(z축 기준 회전)는 회전할 때 중간 고리(y축 기준 회전)를 물고 회전하는 이유가 이 식에 담겨 있다.

그리고 김벌락의 발생을 피할 수 있는 방법에 대한 힌트도 이 식에 담겨 있다.

김벌락 회피 방법

결국 김벌락은 회전을 여러 축(x축, y축, z축)의 회전으로 계산하기 떄문에 발생하는 현상이었던 것이다.

이쯤 되면 김벌락을 피할 수 있는 방법을 이미 알아버린거나 마찬가지다.

회전을 여러 행렬의 곱이 아니라 다른 방식으로 계산해 낼 수 있다면 김벌락의 발생을 막을 수 있다!!

이 다른 방식의 회전 중의 하나가 바로 4원수를 이용한 회전 되시겠다.

4원수를 이용한 회전은 다음 글에서..

정리

  • 김벌락은 3차원 공간 상에서 오일러 회전을 적용할 때 발생하는 부작용이다.

  • 김벌락은 y축의 회전에 따라 x축과 z축이 완전히 겹쳐지면서 x축 회전과 z축 회전이 합쳐지거나 상쇄되는 현상이다.

  • 김벌락은 회전을 x축, y축, z축별 회전의 곱으로 계산하기 때문에 발생한다.

  • 회전을 다른 방식으로 계산하면 김벌락의 발생을 막을 수 있다.


크리에이티브 커먼즈 라이선스hanmomhanda의 저작물인 이 저작물은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.