Basic Linear Algebra

선형대수는 SLAM의 실무 언어입니다: 점, 포즈, 잔차, 관측값은 모두 벡터와 행렬이며, 모든 solver는 결국 행렬 연산으로 환원됩니다.

벡터와 행렬

벡터 vRn\mathbf{v} \in \mathbb{R}^nnn개의 실수로 이루어진 열입니다. SLAM에서 벡터는 점, 이동, 속도, 잔차를 표현합니다. 행렬 ARm×nA \in \mathbb{R}^{m \times n}Rn\mathbb{R}^n에서 Rm\mathbb{R}^m으로의 선형 사상을 표현합니다. SLAM 기하학에서 핵심 객체는 행렬-벡터 곱 Ax=bA\mathbf{x} = \mathbf{b}입니다.

행렬식

정방 행렬의 행렬식 det(A)\det(A)는 선형 사상 AA의 부호 있는 부피 배율을 측정합니다. 핵심 사실:

내적과 외적

u,vR3\mathbf{u}, \mathbf{v} \in \mathbb{R}^3내적uv=uTv=uvcosθ\mathbf{u} \cdot \mathbf{v} = \mathbf{u}^T\mathbf{v} = \|\mathbf{u}\|\|\mathbf{v}\|\cos\theta이며, 투영과 직교성 검사에 사용됩니다. 외적 u×v\mathbf{u} \times \mathbf{v}는 두 벡터 모두에 수직인 벡터를 생성하며, 크기는 uvsinθ\|\mathbf{u}\|\|\mathbf{v}\|\sin\theta입니다. Essential 행렬의 왜대칭 행렬 표현과 표면 법선 계산에 등장합니다.

외적은 왜대칭 행렬을 이용한 행렬-벡터 곱으로 쓸 수 있습니다:

u×v=[u]×v,[u]×=[0u3u2u30u1u2u10]\mathbf{u} \times \mathbf{v} = [\mathbf{u}]_\times \mathbf{v}, \qquad [\mathbf{u}]_\times = \begin{bmatrix} 0 & -u_3 & u_2 \\ u_3 & 0 & -u_1 \\ -u_2 & u_1 & 0 \end{bmatrix}

이 작은 항등식은 SLAM 곳곳에 등장합니다: Essential 행렬은 E=[t]×RE = [\mathbf{t}]_\times R이며, so(3)\mathfrak{so}(3)의 Lie 대수 원소는 왜대칭 행렬입니다.

계수, 역행렬, 전치

AA계수는 열 공간의 차원입니다. SLAM에서 Fundamental 행렬은 구성상 계수 2를 가지며, 모든 점이 공평면에 있을 때 점 행렬은 계수 부족이 됩니다(SLAM 초기화의 퇴화 구성). 역행렬 A1A^{-1}AA1=IAA^{-1} = I를 만족하며 det(A)0\det(A) \neq 0일 때만 존재합니다. 회전 행렬에 대해서는 R1=RTR^{-1} = R^T(직교성)---완전한 역행렬 계산을 피하기 위해 끊임없이 활용됩니다.

행렬이 유효한 회전인지 확인하는 간단한 NumPy 검증:

import numpy as np

theta = np.pi / 4
R = np.array([[np.cos(theta), -np.sin(theta), 0],
              [np.sin(theta),  np.cos(theta), 0],
              [0,              0,             1]])

print(np.allclose(R.T @ R, np.eye(3)))  # True: orthogonal
print(np.linalg.det(R))                 # 1.0: proper rotation

선형 시스템 풀이

SLAM 백엔드는 절대로 행렬을 명시적으로 역행렬화하지 않습니다. 대신 인수분해하여 풀이합니다:

특이값 분해 (SVD)

SVD는 SLAM에서 가장 중요한 행렬 분해입니다. 임의의 행렬 ARm×nA \in \mathbb{R}^{m \times n}은 다음과 같이 분해됩니다:

A=UΣVTA = U \Sigma V^T

여기서 UUVV는 직교 행렬이고, Σ\Sigma는 비음수 특이값 σ1σ20\sigma_1 \geq \sigma_2 \geq \cdots \geq 0을 가진 대각 행렬입니다. 기하학적으로, 임의의 선형 사상은 회전/반사, 좌표별 스케일링, 또 다른 회전/반사의 합성입니다. SLAM에서의 활용:

비율 σ1/σn\sigma_1/\sigma_n조건수입니다: 선형 풀이가 입력 노이즈를 얼마나 증폭시키는지 측정합니다. 조건이 나쁜 시스템(거대한 조건수)이 8점 알고리즘과 DLT에서 좌표 정규화가 중요한 이유입니다.

고유값과 고유벡터

Av=λvA\mathbf{v} = \lambda\mathbf{v}를 만족하는 비영 벡터 v\mathbf{v}와 스칼라 λ\lambda를 각각 AA고유벡터고유값이라 합니다. Harris 코너 검출기는 구조 텐서의 고유값으로부터 이미지 패치를 분류하며, 포인트 클라우드의 PCA는 공분산 행렬의 고유벡터를 사용하여 주 방향을 찾습니다(예: 평면 피팅). 대칭 행렬(공분산, 구조 텐서, JTJJ^TJ)의 경우 고유값은 실수이고 고유벡터는 직교하며---고유값 분해는 SVD와 일치합니다.

흔한 함정

SLAM에서의 의미

SLAM 파이프라인의 모든 단계는 사실 선형대수입니다: 점 투영은 행렬 곱을 사용하고, 최소 solver(8점, DLT, ICP)는 SVD로 환원되며, 번들 조정의 정규 방정식은 큰 희소 선형 시스템입니다. 특히 SVD, 직교 행렬, 계수에 대한 숙련도는 SLAM 논문을 읽고 기하학 코드를 디버깅하는 능력의 기반이 됩니다.

관련 문서