Post

회전변환 이란

물체를 회전시키는 변환은 수학적으로 어떻게 표현될 수 있을까?

회전변환이란

회전 변환은 다양한 의미로 해석될 수 있다.

  • 물체의 자세를 변화시킴
  • 점(벡터)를 원점에 대해 회전시킴
  • 공간상의 점(벡터)를 임의의 축에 대해 회전시킴
  • 좌표계 자체의 회전
  • 고정된 점을 표현하는 서로 다른 두 좌표계 사이의 변환.

물론 전부 해당된다..

회전 변환은 동역학, 로보틱스 분야에서 아주 중요하게 짚고 넘어가야 하는 핵심 개념중 하나이다.

특히 강체의 자세에 대한 역학을 풀 경우 기준 좌표계(reference frame)에 대하여 강체의 좌표계(body frame)이 회전된 정도가 곧 자세이므로, 회전 변환 = 물체의 자세 로 간주된다.

회전 변환과 선형 대수학

회전 변환은 선형 대수학과 매우 밀접한 관계에 있다.

선형 대수학은 선형 변환(linear transform)에 대한 것을 다루는 수학의 학문 분야이다.

벡터 공간을 변환해서 다른 벡터 공간으로 만들때, 선형 결합이 유지되는 변환을 선형 변환이라 하며, 이를 수식으로 표현하면 다음과 같다 :

벡터공간 $V,W$가 있을 때, $V -> W$로 가는 변환 $T$가 있다.
이때, 각 벡터공간의 모든 2개의 원소 $v_1, v_1 \in V$와 스칼라 $k$에 대해 다음이 성립하면,

\[T(kv_1 + v_2) = kT(v_1) + v_2\]

이 변환 $T$를 Linear Transform 이라 한다.

선형 대수학의 관점에서 회전 변환이란 한 벡터공간의 기저(이 경우에는 좌표계의 축벡터)를 회전하여 서로 간의 각도와 길이(norm)을 유지한 다른 기저들로 만드는 것이다.

이러한 관점으로 회전을 바라보기 위해서는, 벡터가 단순히 숫자 n개의 나열이 아니라 특정 좌표계의 축 백터의 선형 결합을 간단히 표기한 것임을 읽어내야 한다.

또한 선형 대수학에서 모든 Linear Transform은 반드시 행렬의 형태로 나타낼 수 있음이 증명되어 있다.

회전 변환 역시 선형 변환의 일종이므로 반드시 행렬의 형태로 나타낼 수 있게 되며, 이를 통상 회전 행렬(Rotation Matrix)이라 하고 $R$ 로 표현한다.

이를 이해하기 위한 아주 좋은 영상 자료가 있다. 선형 변환과 선형대수의 관계를 깊게 이해할 수 있을 것이다.
3Blue1Brown - Essence of linear algebra

회전과 자세, 그리고 수

회전을 수학적으로 정확하게 표현한다는 것은 무엇일까?

무엇인가가 돌아간 정도를 표현할 때 우리는 보통 몇 도(degree, °)를 사용한다.

어떤 물체를 각도 $\theta_1$만큼 돌리고 그 다음 다시 각도 $\theta_2$만큼 돌렸다면, 그 물체는 총 $\theta_1 + \theta_2$만큼 돌아가 있다고 표현한다. 마치 우리가 자세를 표현하는 ‘수’ 처럼 각도를 스칼라의 형태로 사용하는 것이다.

하지만 이러한 방식에는 문제가 있다. $360°$마다 다시 $0°$로 돌아오는 불연속성이다.

$350° + 20° = 370° = 10°$는 각도이므로 가능하지만, $350 + 20 = 370 \neq 10$ 는 숫자 자체로써는 말이 안되는 상황이다.

이를 통해 회전을 수의 덧셈으로 표현하는 것이 부정확함을 알 수 있다. 이 때문에 로봇 코드에서는 심심찮게 wrap_angle(theta)같은 함수들을 볼 수 있다. 각도 표현과 이를 다루는 실수 사이의 어긋난 수학적 특성을 강제로 조건문을 통해 바로잡는 샘이다.

그렇다면 회전을 연산하는 수학적으로 매끄러운 방법은 무엇일까? 회전 자체를 나타낼 수 있는 수가 존재할까?

순서

내가 회전 변환을 공부하며 느꼈던 카타르시스를 다른 분들도 느끼길 바라며, 아마 다음의 순서가 되지 않을까 싶다.

This post is licensed under CC BY 4.0 by the author.