회전은 왜 그냥 더할 수 없을까
한 줄 요약: 로봇이 “어느 쪽을 보고 있는지”는 보통 숫자처럼 더하고 뺄 수가 없습니다. 그래서 작은 회전을 화살표로 바꿔서 계산하고, 다시 회전으로 돌려서 “덧붙이는” 방법을 씁니다.
SLAM이 뭐예요?
로봇청소기가 처음 보는 집에서 지도를 그리면서 동시에 자기가 지도 어디에 있는지 알아내는 기술을 SLAM이라고 합니다. 이때 로봇이 알아야 하는 건 두 가지입니다.
- 어디에 있나 (위치)
- 어느 쪽을 보고 있나 (방향, 즉 회전)
위치는 쉽습니다. 앞으로 1m, 옆으로 2m 가면 그냥 더하면 됩니다. 문제는 회전입니다.
실험: 책 돌려 보기
책을 하나 들고 따라 해 보세요.
- 책을 뒤로 90° 눕혀 표지가 위를 보게 하고, 그다음 왼쪽으로 90° 돌립니다.
- 처음 상태로 돌아가서, 이번엔 순서를 바꿔 왼쪽으로 90° 돌리고, 그다음 뒤로 90° 눕힙니다.
같은 두 번의 회전이지만, 순서를 바꾸면 마지막 모습이 다릅니다.
두 결과가 다릅니다. 숫자는 3 + 5나 5 + 3이나 똑같은데, 회전은 순서가 바뀌면 결과가 달라집니다. 그래서 회전은 보통 숫자처럼 마음대로 더하거나 평균 낼 수가 없습니다.
컴퓨터는 회전을 숫자 9개짜리 표(3×3 행렬)로 저장하는데, 두 표를 그냥 더하면 아예 “회전이 아닌 이상한 표”가 나와 버립니다. 로봇이 위치를 조금씩 고쳐 나가듯 회전도 조금씩 고쳐야 하는데, 이러면 곤란합니다.
해결: 작은 회전은 화살표로
방법은 이렇습니다.
- 작은 회전 하나는 화살표 하나로 나타낼 수 있습니다. 화살표 방향이 회전축(무엇을 중심으로 도는지)이고, 화살표 길이가 회전 각도입니다.
- 화살표는 보통 숫자처럼 더하고 줄이고 늘릴 수 있습니다. 계산은 여기서 합니다.
- 계산이 끝나면 화살표를 다시 회전으로 바꿔서, 지금 방향에 “조금 더 돌리기”로 덧붙입니다.
식으로 쓰면 딱 한 줄입니다.
\[\text{새 방향} = \text{지금 방향} \times \mathrm{Exp}(\text{작은 화살표})\]여기서 \(\mathrm{Exp}\)는 “화살표 → 회전”으로 바꿔 주는 변환이고, 반대 방향 변환은 \(\mathrm{Log}\)라고 부릅니다. 수학에서는 이 화살표들의 세계를 Lie 대수, 회전들의 세계를 Lie 군이라고 부릅니다. 이름은 어렵지만 하는 일은 이게 전부입니다.
실제로 해 보면
컴퓨터에게 이런 문제를 줘 봤습니다.
점 50개가 있고, 이 점들을 어떤 각도로 돌린 결과(약간의 오차 포함)를 줄 테니, 얼마나 돌렸는지 맞혀 봐.
방법은 위에서 말한 그대로입니다.
- 일단 “하나도 안 돌렸다”고 가정합니다.
- 지금 가정으로 점을 돌려 보고, 정답과 얼마나 어긋나는지 봅니다.
- 어긋남을 줄이는 작은 화살표를 계산합니다.
- 화살표를 회전으로 바꿔 지금 방향에 덧붙입니다.
- 다시 2번으로.
| 반복 | 정답과의 차이 |
|---|---|
| 시작 | 약 84° |
| 1번째 | 크게 줄어듦 |
| 3번째 | 거의 정답 |
| 4번째 이후 | 약 0.1° (넣어 준 오차 수준) |
4번 만에 정답을 찾았고, 그동안 방향은 한 번도 “이상한 표”가 되지 않았습니다.
정리
- 회전은 순서에 따라 결과가 달라서 보통 숫자처럼 더할 수 없습니다.
- 작은 회전은 화살표로 바꿔서 계산하고, 다시 회전으로 바꿔 곱해서 덧붙입니다.
- 로봇청소기, 드론, AR 앱이 자기 방향을 알아내는 계산이 대부분 이 방식으로 돌아갑니다.
더 읽을거리
- J. Solà 외, A micro Lie theory for state estimation in robotics (arXiv:1812.01537): 로보틱스용 Lie 이론을 그림과 함께 짧게 정리한 논문입니다.