9.85 회전 행렬의 수치적 안정성과 재정규화

9.85 회전 행렬의 수치적 안정성과 재정규화

1. 회전 행렬의 수치적 문제

이론적으로 회전 행렬은 정규 직교 조건 \mathbf{R}^T\mathbf{R} = \mathbf{I}\det(\mathbf{R}) = +1을 정확히 만족한다. 그러나 실제 컴퓨터에서 부동 소수점 연산을 수행할 때, 반올림 오차가 누적되어 회전 행렬이 이 조건들을 정확히 만족하지 못하게 된다. 시간이 지남에 따라 행렬이 더 이상 진정한 회전 행렬이 아닌 상태가 될 수 있다.

이 문제는 자세 적분, 매니퓰레이터 기구학 계산, SLAM 등 회전 행렬을 누적적으로 곱하는 모든 응용에서 발생한다.

2. 부동 소수점 오차의 원인

2.1 곱셈 오차

행렬 곱은 많은 부동 소수점 곱셈과 덧셈을 포함한다. 각 연산이 작은 반올림 오차를 만들고, 이것이 누적된다.

2.2 적분 오차

각속도를 시간에 대해 적분하여 자세를 갱신할 때, 매 시각의 작은 오차가 누적된다. 자세 추정 시스템이 오랜 시간 동안 작동하면 이 오차가 무시할 수 없을 정도로 커질 수 있다.

2.3 복합 변환

여러 변환의 연쇄 곱에서 각 단계의 오차가 누적된다. 매니퓰레이터의 순기구학에서 6개 이상의 링크 변환을 곱하면 작은 오차들이 합쳐진다.

3. 정규 직교성 위반의 영향

회전 행렬이 정규 직교성을 잃으면 다음의 문제가 발생한다.

3.1 길이 변화

벡터를 변환할 때 길이가 보존되지 않는다.

\lVert \mathbf{R}\mathbf{v} \rVert \neq \lVert \mathbf{v} \rVert

이는 강체의 형태가 변형되는 것과 같다.

3.2 각도 변화

두 벡터 사이의 각도가 변환 후 달라진다. 이는 내적이 보존되지 않는 결과이다.

3.3 부피 변화

\det(\mathbf{R}) \neq 1이면 부피가 변한다. 강체의 부피가 늘어나거나 줄어든다.

3.4 거울상 효과

극단적인 경우 \det(\mathbf{R})이 음수가 될 수 있으며, 이 경우 변환에 거울상 효과가 포함된다.

4. 정규 직교성 검증

회전 행렬의 정규 직교성을 정량적으로 평가하는 방법은 다음과 같다.

4.1 \mathbf{R}^T\mathbf{R} - \mathbf{I}의 노름

e_{\text{ortho}} = \lVert \mathbf{R}^T\mathbf{R} - \mathbf{I} \rVert_F

여기서 \lVert \cdot \rVert_F는 프로베니우스 노름이다. 이 값이 0에 가까우면 정규 직교성이 잘 유지되고 있다.

4.2 행렬식

e_{\det} = \lvert \det(\mathbf{R}) - 1 \rvert

이 값이 0에 가까우면 행렬식 조건이 만족된다.

4.3 열벡터의 직교성

\mathbf{R}의 각 열벡터 \mathbf{r}_i에 대해

e_{\text{cross}} = \sum_{i \neq j}(\mathbf{r}_i^T\mathbf{r}_j)^2

이 0에 가까우면 열벡터들이 서로 직교한다.

이러한 측정치들을 정기적으로 모니터링하여, 임계값을 초과하면 재정규화를 수행한다.

5. 재정규화 방법

회전 행렬이 정규 직교성을 잃었을 때, 가장 가까운 진정한 회전 행렬로 보정하는 과정이 재정규화이다.

5.1 그램-슈미트(Gram-Schmidt) 정규화

세 열벡터에 그램-슈미트 과정을 순차적으로 적용한다.

5.1.1 단계 1: 첫 번째 열의 정규화

\mathbf{r}_1' = \frac{\mathbf{r}_1}{\lVert \mathbf{r}_1 \rVert}

5.1.2 단계 2: 두 번째 열을 첫 번째에 직교화 후 정규화

\mathbf{r}_2'' = \mathbf{r}_2 - (\mathbf{r}_2^T\mathbf{r}_1')\mathbf{r}_1'

\mathbf{r}_2' = \frac{\mathbf{r}_2''}{\lVert \mathbf{r}_2'' \rVert}

5.1.3 단계 3: 세 번째 열은 외적으로 결정

\mathbf{r}_3' = \mathbf{r}_1' \times \mathbf{r}_2'

이렇게 결정된 새 행렬은 정규 직교성을 가진다.

5.1.4 그램-슈미트의 단점

첫 번째 열에 편향이 있다(첫 번째 열은 단순히 정규화되고, 다른 열은 그에 맞춰 보정됨). 또한 결과가 입력에 대해 매끄럽지 않을 수 있다.

5.2 SVD 기반 투영

특이값 분해(Singular Value Decomposition, SVD)를 사용하면 더 정교한 재정규화가 가능하다.

5.2.1 SVD 분해

\mathbf{R} = \mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^T

여기서 \mathbf{U}, \mathbf{V}는 직교 행렬, \boldsymbol{\Sigma}는 대각 행렬(특이값을 가짐)이다.

5.2.2 회전 행렬로의 투영

가장 가까운 회전 행렬은 다음과 같이 계산된다.

\mathbf{R}_{\text{proj}} = \mathbf{U}\mathbf{V}^T

5.2.3 \det = +1 보장

\det(\mathbf{U}\mathbf{V}^T)-1인 경우(반사를 포함), 다음의 보정이 필요하다.

\mathbf{R}_{\text{proj}} = \mathbf{U}\mathrm{diag}(1, 1, \det(\mathbf{U}\mathbf{V}^T))\mathbf{V}^T

이는 마지막 특이 벡터의 부호를 반전시켜 회전을 유지한다.

5.2.4 SVD 투영의 장점

  • 프로베니우스 노름 의미에서 가장 가까운 회전 행렬
  • 모든 열에 대해 대칭적
  • 입력에 대해 매끄러움
  • 행렬식이 항상 +1로 보장

5.2.5 SVD 투영의 단점

  • 계산 비용이 더 큼 (SVD 자체가 비싸다)
  • 빈번한 재정규화에는 부담

5.3 쿼터니언 정규화

쿼터니언을 사용하면 재정규화가 매우 단순하다. 단위 노름으로 나누기만 하면 된다.

\mathbf{q}_{\text{norm}} = \frac{\mathbf{q}}{\lVert \mathbf{q} \rVert}

이는 회전 행렬의 SVD보다 훨씬 효율적이다.

6. 재정규화의 빈도

6.1 매번 재정규화

매 회전 행렬 곱셈 후 재정규화한다. 가장 안전하지만 계산 비용이 크다.

6.2 주기적 재정규화

일정 시간 또는 일정 횟수마다 재정규화한다. 효율과 정확성의 균형을 맞춘다.

6.3 임계값 기반

오류가 임계값을 초과하면 재정규화한다. 가장 효율적이지만 임계값 설정이 중요하다.

if (orthogonality_error > threshold):
    R = renormalize(R)

7. 자세 적분의 안정성

각속도 \boldsymbol{\omega}를 적분하여 자세를 갱신하는 과정에서 안정성이 특히 중요하다.

7.1 단순 오일러 적분

\mathbf{R}_{k+1} = \mathbf{R}_k(\mathbf{I} + [\boldsymbol{\omega}\Delta t]_\times)

이 1차 근사는 정규 직교성을 보존하지 않는다. 매 단계마다 오차가 누적된다.

7.2 정확한 지수 사상

\mathbf{R}_{k+1} = \mathbf{R}_k\exp([\boldsymbol{\omega}\Delta t]_\times)

행렬 지수를 사용하면 결과가 정확한 회전 행렬이다. 로드리게스 공식을 사용하여 효율적으로 계산할 수 있다.

7.3 쿼터니언 적분

쿼터니언으로 자세를 표현하고 적분하면, 단위 노름 정규화로 안정성이 유지된다.

\mathbf{q}_{k+1} = \mathbf{q}_k \otimes \mathrm{exp}(\boldsymbol{\omega}\Delta t/2)

쿼터니언이 회전 행렬보다 적분에서 더 안정적이다.

8. 자세 표현 선택의 영향

8.1 회전 행렬

  • 정규 직교 위반에 취약
  • 빈번한 재정규화 필요
  • 9 매개변수, 6 제약

8.2 쿼터니언

  • 단위 노름 위반만 처리하면 됨
  • 정규화가 단순(단위 노름으로 나누기)
  • 4 매개변수, 1 제약

8.3 회전 벡터

  • 자유 매개변수 (제약 없음)
  • 재정규화 불필요
  • 3 매개변수
  • 단, 합성이 복잡

자세 적분과 추정에서는 쿼터니언이나 회전 벡터가 회전 행렬보다 수치적으로 안정적이다.

9. 실용적 권장 사항

9.1 표현법의 선택

장기간의 자세 적분에서는 쿼터니언을 사용한다. 회전 행렬은 점 변환이나 다른 응용에 필요할 때만 변환한다.

9.2 라이브러리의 활용

검증된 행렬 라이브러리(Eigen, Sophus 등)를 사용한다. 이러한 라이브러리는 수치적 안정성을 위한 다양한 기법을 구현하고 있다.

9.3 정기적 모니터링

정규 직교성을 정기적으로 모니터링하고 임계값 위반 시 재정규화한다.

9.4 적절한 적분기

자세 적분에는 정확한 지수 사상이나 쿼터니언 곱을 사용한다. 단순 오일러 근사는 피한다.

9.5 부동 소수점 정밀도

정밀한 응용에서는 더블 정밀도(double)를 사용한다. 단일 정밀도(float)는 더 빠르지만 누적 오차가 더 크다.

10. 응용 사례

10.1 자세 추정

장시간 자세 추정이 필요한 시스템(자율 주행, 우주선 등)에서 수치적 안정성이 결정적이다. 쿼터니언 기반 칼만 필터가 표준이다.

10.2 매니퓰레이터 기구학

매 제어 주기의 순기구학 계산은 새로 시작하므로 누적 오차가 작다. 그러나 부분 변환의 캐싱과 재사용에서 정규 직교성 검사가 필요할 수 있다.

10.3 SLAM

SLAM에서 자세는 시간에 따라 적분되거나 최적화된다. 매 단계의 정규 직교성 보존이 추정의 정확성을 결정한다.

10.4 컴퓨터 그래픽스

3D 애니메이션에서 객체의 자세가 누적적으로 변환된다. 누적 오차로 인해 객체가 뒤틀리는 현상을 방지하려면 주기적 재정규화가 필요하다.

11. 참고 문헌

  • Higham, N. J. (2002). Accuracy and Stability of Numerical Algorithms (2nd ed.). SIAM.
  • Golub, G. H., & Van Loan, C. F. (2013). Matrix Computations (4th ed.). Johns Hopkins University Press.
  • Itzhack, B. Y. (1976). “Orthogonalization Techniques of a Direction Cosine Matrix.” IEEE Transactions on Aerospace and Electronic Systems, 12(6), 798–804.
  • Bar-Itzhack, I. Y. (2000). “New Method for Extracting the Quaternion from a Rotation Matrix.” Journal of Guidance, Control, and Dynamics, 23(6), 1085–1087.
  • Markley, F. L. (1988). “Attitude Determination Using Vector Observations and the Singular Value Decomposition.” Journal of the Astronautical Sciences, 36(3), 245–258.

version: 1.0