6.2 스칼라, 벡터, 행렬, 텐서의 계층 구조
1. 수학적 객체의 차수 기반 분류
로봇공학에서 사용되는 수학적 객체는 차수(order) 또는 계수(rank)에 따라 체계적으로 분류된다. 스칼라, 벡터, 행렬, 텐서는 각각 0차, 1차, 2차, 일반 n차 텐서로 간주할 수 있으며, 이들은 하나의 통일된 계층 구조를 형성한다. 이 계층 구조를 이해하는 것은 로봇 시스템에서 다루는 물리량의 수학적 성격을 정확히 파악하고, 적절한 연산과 변환 규칙을 적용하기 위한 기초이다.
2. 0차 텐서: 스칼라
스칼라(scalar)는 하나의 수치로 표현되는 물리량으로서, 좌표계의 선택에 무관하게 그 값이 불변하는 양이다. 수학적으로 스칼라는 0차 텐서(zeroth-order tensor)에 해당하며, 하나의 성분만을 가진다.
s \in \mathbb{R}
로봇공학에서 스칼라로 표현되는 대표적 물리량은 다음과 같다.
- 질량(mass) m: 로봇 링크의 관성 특성을 나타내는 기본 물리량
- 에너지(energy) E: 운동 에너지, 위치 에너지, 총 에너지
- 온도(temperature) T: 모터와 전자 부품의 열적 상태
- 시간(time) t: 궤적 계획과 제어 주기의 기본 변수
- 관절 변수(joint variable) q_i: 개별 관절의 각도 또는 변위
스칼라의 핵심 성질은 좌표 변환에 대한 불변성(invariance)이다. 동일한 물리 현상을 서로 다른 좌표계에서 기술하더라도 스칼라 값은 변하지 않는다. 예를 들어, 로봇 링크의 질량은 어떤 좌표계에서 측정하든 동일한 값을 가진다.
6.2.3 1차 텐서: 벡터
벡터(vector)는 크기와 방향을 가지는 물리량으로서, n개의 성분으로 구성된 1차원 배열이다. 수학적으로 벡터는 1차 텐서(first-order tensor)에 해당하며, 하나의 지표(index)로 성분을 지정한다.
\mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} \in \mathbb{R}^n
벡터의 제i 성분은 v_i로 표기하며, 이는 선택된 기저(basis)에 대한 좌표(coordinate)이다. 좌표계가 변경되면 벡터의 성분 값은 변하지만, 벡터 자체가 나타내는 물리량(크기와 방향)은 불변이다. 이 변환 규칙이 벡터를 1차 텐서로 분류하는 근거이다.
로봇공학에서 벡터로 표현되는 주요 물리량은 다음과 같다.
| 물리량 | 기호 | 차원 | 설명 |
|---|---|---|---|
| 위치 벡터 | \mathbf{p} | \mathbb{R}^3 | 3차원 공간에서의 점의 위치 |
| 선속도 | \mathbf{v} | \mathbb{R}^3 | 위치의 시간 미분 |
| 가속도 | \mathbf{a} | \mathbb{R}^3 | 속도의 시간 미분 |
| 각속도 | \boldsymbol{\omega} | \mathbb{R}^3 | 회전의 시간 변화율 |
| 힘 | \mathbf{f} | \mathbb{R}^3 | 물체에 작용하는 힘 |
| 토크 | \boldsymbol{\tau} | \mathbb{R}^3 | 회전축 주위의 모멘트 |
| 관절 변수 벡터 | \mathbf{q} | \mathbb{R}^n | n자유도 로봇의 관절 상태 |
벡터는 열벡터(column vector)와 행벡터(row vector)로 구분된다. 열벡터는 n \times 1 행렬로, 행벡터는 1 \times n 행렬로 간주할 수 있으며, 양자는 전치(transpose) 연산으로 상호 변환된다. 본 서적에서는 별도의 명시가 없는 한 벡터를 열벡터로 취급한다.
3. 2차 텐서: 행렬
행렬(matrix)은 수를 직사각형 배열로 나열한 수학적 객체로서, 두 개의 지표로 성분을 지정하는 2차 텐서(second-order tensor)이다. m \times n 행렬 A는 m개의 행과 n개의 열로 구성되며, 제(i,j) 성분은 a_{ij}로 표기한다.
A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} \in \mathbb{R}^{m \times n}
행렬은 선형 변환(linear transformation)의 수치적 표현이다. 행렬 A \in \mathbb{R}^{m \times n}는 \mathbb{R}^n에서 \mathbb{R}^m으로의 선형 사상을 나타내며, 벡터 \mathbf{x} \in \mathbb{R}^n에 대한 행렬-벡터 곱 A\mathbf{x} \in \mathbb{R}^m은 이 선형 변환의 적용 결과이다.
로봇공학에서 행렬로 표현되는 주요 객체는 다음과 같다.
회전 행렬
회전 행렬(rotation matrix) R \in SO(3) \subset \mathbb{R}^{3 \times 3}은 3차원 공간에서의 자세(orientation)를 나타내며, R^\top R = I와 \det(R) = 1의 조건을 만족한다.
동차 변환 행렬
동차 변환 행렬(homogeneous transformation matrix) T \in SE(3) \subset \mathbb{R}^{4 \times 4}은 회전과 병진을 결합한 강체 변환을 나타낸다.
T = \begin{bmatrix} R & \mathbf{p} \\ \mathbf{0}^\top & 1 \end{bmatrix}
여기서 R \in SO(3)은 회전 행렬이고, \mathbf{p} \in \mathbb{R}^3은 병진 벡터이다.
3.1 자코비안 행렬
자코비안 행렬(Jacobian matrix) J(\mathbf{q}) \in \mathbb{R}^{m \times n}은 관절 속도 \dot{\mathbf{q}} \in \mathbb{R}^n과 말단 장치 속도 \dot{\mathbf{x}} \in \mathbb{R}^m 간의 선형 관계를 기술한다.
\dot{\mathbf{x}} = J(\mathbf{q}) \dot{\mathbf{q}}
관성 행렬
관성 행렬(inertia matrix) M(\mathbf{q}) \in \mathbb{R}^{n \times n}은 로봇의 동역학 방정식에서 관절 가속도와 관절 토크 간의 관계를 기술하는 대칭 양정치(symmetric positive definite) 행렬이다.
일반 n차 텐서
텐서(tensor)는 스칼라, 벡터, 행렬의 일반화로서, n개의 지표로 성분을 지정하는 다차원 배열이다. n차 텐서는 n개의 자유 지표를 가지며, 좌표 변환에 대해 특정한 변환 규칙을 따른다.
k차 텐서 \mathcal{T}의 성분은 k개의 지표 T_{i_1 i_2 \cdots i_k}로 표기된다. 각 지표가 1부터 d까지의 값을 취하면, k차 텐서는 총 d^k개의 성분을 가진다. 3차원 공간(d = 3)에서 각 차수의 텐서가 가지는 성분 수는 다음과 같다.
| 차수 | 명칭 | 지표 수 | 성분 수 (d = 3) | 로봇공학 예시 |
|---|---|---|---|---|
| 0 | 스칼라 | 0 | 3^0 = 1 | 질량, 에너지 |
| 1 | 벡터 | 1 | 3^1 = 3 | 힘, 속도, 위치 |
| 2 | 행렬 | 2 | 3^2 = 9 | 관성 텐서, 응력 텐서 |
| 3 | 3차 텐서 | 3 | 3^3 = 27 | 레비-치비타 기호 |
| 4 | 4차 텐서 | 4 | 3^4 = 81 | 탄성 텐서 |
6.2.5 3차 텐서의 예: 레비-치비타 기호
레비-치비타 기호(Levi-Civita symbol) \epsilon_{ijk}는 3차 텐서의 대표적 예이다. 이 기호는 외적(cross product) 연산을 지표 표기법으로 기술하는 데 사용되며, 다음과 같이 정의된다.
\epsilon_{ijk} = \begin{cases} +1 & (i,j,k) \text{가 } (1,2,3) \text{의 짝순열인 경우} \\ -1 & (i,j,k) \text{가 } (1,2,3) \text{의 홀순열인 경우} \\ 0 & \text{두 지표가 동일한 경우} \end{cases}
두 벡터 \mathbf{a}와 \mathbf{b}의 외적 \mathbf{c} = \mathbf{a} \times \mathbf{b}의 제i 성분은 다음과 같이 표현된다.
c_i = \sum_{j=1}^{3} \sum_{k=1}^{3} \epsilon_{ijk} a_j b_k
4차 텐서의 예: 탄성 텐서
4차 텐서의 대표적 예는 탄성 텐서(elasticity tensor) C_{ijkl}이다. 이 텐서는 응력(stress) 텐서 \sigma_{ij}와 변형률(strain) 텐서 \varepsilon_{kl} 간의 선형 관계를 기술하며, 유연체(flexible body) 역학을 포함하는 로봇 시스템의 해석에 사용된다.
\sigma_{ij} = \sum_{k=1}^{3} \sum_{l=1}^{3} C_{ijkl} \varepsilon_{kl}
4. 계층 구조의 포함 관계
스칼라, 벡터, 행렬, 텐서 간의 계층 구조는 포함 관계로 요약된다.
\text{스칼라} \subset \text{벡터} \subset \text{행렬} \subset \text{텐서}
구체적으로, 스칼라는 1 \times 1 행렬이자 1차원 벡터로 간주할 수 있다. 벡터는 n \times 1 또는 1 \times n 행렬로 간주할 수 있다. 행렬은 2차 텐서이다. 이 포함 관계를 명확히 인식하는 것은 수학적 연산의 일관성을 유지하고, 차원 불일치(dimension mismatch)로 인한 오류를 방지하기 위해 중요하다.
저장 구조와 계산적 고려
계산적 관점에서, 각 차수의 텐서는 메모리 내에서 다차원 배열(multidimensional array)로 저장된다. 로봇공학 소프트웨어에서는 다음과 같은 자료 구조를 일반적으로 사용한다.
- 스칼라: 단일 부동 소수점 수 (
double또는float) - 벡터: 1차원 배열 (
Eigen::VectorXd,numpy.ndarray) - 행렬: 2차원 배열 (
Eigen::MatrixXd,numpy.ndarray) - 고차 텐서: 다차원 배열 또는 특화된 텐서 라이브러리
k차 텐서의 성분 수는 각 차원의 크기의 곱으로 결정되므로, 차수가 증가함에 따라 메모리 사용량과 연산량이 급격히 증가한다. 로봇공학에서는 3차원 공간을 주로 다루므로 대부분의 텐서가 d = 3인 경우에 해당하며, 관성 텐서(3^2 = 9 성분)나 탄성 텐서(3^4 = 81 성분, 대칭성에 의해 독립 성분 21개)와 같이 특수한 대칭 성질을 이용한 저장 최적화가 실용적으로 중요하다.
좌표 변환 규칙의 차이
스칼라, 벡터, 행렬, 텐서를 구분하는 가장 본질적인 기준은 좌표 변환에 대한 변환 규칙(transformation rule)이다. 좌표계가 변경될 때 각 객체의 성분이 변환되는 규칙은 다음과 같다.
- 스칼라: 좌표 변환에 의해 성분이 변하지 않는다. s' = s
- 벡터: 좌표 변환 행렬 R에 의해 1차 변환된다. v'_i = \sum_j R_{ij} v_j
- 행렬 (2차 텐서): 좌표 변환 행렬에 의해 2차 변환된다. T'_{ij} = \sum_k \sum_l R_{ik} R_{jl} T_{kl}
- n차 텐서: 좌표 변환 행렬이 n번 적용된다.
이 변환 규칙은 텐서의 정의 자체를 구성하며, 좌표계에 무관한 물리 법칙을 텐서 방정식으로 기술할 수 있게 하는 근간이다. 로봇공학에서 관성 텐서의 좌표 변환이 I' = R I R^\top 형태를 취하는 것은 관성 텐서가 2차 텐서이기 때문이다.
참고문헌
- Axler, S. (2024). Linear Algebra Done Right (4th ed.). Springer.
- Bowen, R. M., & Wang, C.-C. (1976). Introduction to Vectors and Tensors (2nd ed.). Plenum Press.
- Siciliano, B., Sciavicco, L., Villani, L., & Oriolo, G. (2009). Robotics: Modelling, Planning and Control. Springer.
- Featherstone, R. (2008). Rigid Body Dynamics Algorithms. Springer.
Version: 1.0