벡터와 행렬 — 로봇에서 무엇을 담는가
- 벡터 = 크기 + 방향. 위치, 속도, 힘, 회전축이 전부 벡터다.
- 행렬 = 벡터를 벡터로 보내는 사상(mapping). 회전행렬, 동차변환행렬, 자코비안이 전부 행렬이다. 그래서 행렬 곱은 “숫자 계산"이 아니라 변환의 합성이다.
R₂R₁v = v에 R₁을 먼저 적용하고, 그 결과에 R₂를 적용
순서를 바꾸면 결과가 달라진다(비가환). 로봇 팔의 관절을 “어깨 먼저 돌리고 팔꿈치"와 “팔꿈치 먼저 돌리고 어깨"가 다른 자세로 끝나는 것과 같은 이야기다.
행렬 곱
(m×n)(n×p) = (m×p)— 왼쪽의 열 수와 오른쪽의 행 수가 같아야 곱이 정의된다. 차원이 안 맞아서 나는 오류의 절반은 곱하는 순서를 뒤집어서 생긴다.
내적 (dot product)
$$ \mathbf{a}\cdot\mathbf{b} = \sum_i a_i b_i = |\mathbf{a}||\mathbf{b}|\cos\theta $$
- 결과는 스칼라 하나
- 기하적 의미: b 방향으로 a가 얼마나 가 있는가 (사영의 길이 × 크기)
a·b = 0→ 두 벡터가 수직- 부호가 방향의 일치 여부를 알려준다 — 양수면 같은 쪽, 음수면 반대쪽
쓰임새
- 두 방향 사이의 각도 구하기
- 일(work)
W = F·d— 힘이 이동 방향으로 한 일만 세어진다 - 로봇에서 “목표 방향과 지금 진행 방향이 얼마나 정렬돼 있나"를 하나의 숫자로 판정
외적 (cross product)
$$ \mathbf{a}\times\mathbf{b} = |\mathbf{a}||\mathbf{b}|\sin\theta,\hat{\mathbf{n}} $$
- 결과는 벡터이고, 3차원에서만 정의된다
- 방향은 오른손 법칙 — a와 b가 만드는 평면에 수직
- 크기는 두 벡터가 만드는 평행사변형의 넓이
a×b = 0→ 두 벡터가 평행(같은 직선 위) → 평면을 못 만든다a×b = -(b×a)— 순서를 바꾸면 방향이 뒤집힌다
쓰임새
- 회전축 구하기 (두 방향으로부터 회전의 축을 뽑아냄)
- 토크
τ = r × F - 강체 위 한 점의 속도
v = ω × r - 면의 법선 벡터
내적 vs 외적
| 구분 | 내적 | 외적 |
|---|---|---|
| 결과 | 스칼라 | 벡터 (3차원 전용) |
| 0이 되는 조건 | 수직일 때 | 평행일 때 |
| 기하적 의미 | 사영 — 얼마나 같은 방향인가 | 평행사변형 넓이 + 수직 방향 |
| 교환법칙 | 성립 (a·b = b·a) | 불성립 (a×b = -b×a) |
| 로봇에서 | 정렬도, 일(work) | 토크, 각속도, 회전축 |
외우는 대신 이렇게 기억하기로 했다. **내적은 “얼마나 같은 방향이냐”**를 묻고, **외적은 “둘이 만드는 평면이 어느 쪽을 향하냐”**를 묻는다. 그래서 내적이 0이면 완전히 다른 방향(수직)이고, 외적이 0이면 평면 자체가 안 만들어진다(평행).
Dimension — 공간의 크기
- 어떤 벡터공간을 만들어내는 데 필요한 기저(basis) 벡터의 최소 개수
- $\mathbb{R}^3$ 의 dimension은 3 — x, y, z 세 축이면 충분하고, 셋보다 적으면 부족하다
- 주의할 점: 성분이 3개라고 해서 항상 3차원 공간을 쓰는 건 아니다. 세 벡터가 우연히 전부 한 평면 위에 놓여 있으면, 그 벡터들이 만들어내는(span) 공간의 dimension은 2다 즉 dimension은 “벡터를 몇 개 갖고 있느냐"가 아니라 **“그 벡터들이 실제로 몇 방향을 커버하느냐”**다.
Rank — 행렬이 실제로 쓰는 차원
행렬의 열(또는 행) 중 서로 선형독립인 것의 최대 개수
다시 말해 열공간(column space)의 dimension = 이 행렬이 출력으로 만들어낼 수 있는 공간의 차원
언제나 행 랭크 = 열 랭크 이고, $\text{rank}(A) \le \min(m, n)$
$\text{rank} = \min(m,n)$ 이면 full rank, 그보다 작으면 rank-deficient
랭크-널리티 정리: $\text{rank}(A) + \text{nullity}(A) = n$ (입력 차원) — 살아남은 차원과 뭉개진 차원의 합이 입력 차원이다
두 번째 열이 첫 번째 열의 2배라서 새로운 방향을 하나도 추가하지 못한다
결과적으로 이 행렬은 평면 전체를 받아서 직선 하나로 눌러버린다
정보가 사라졌으니 되돌릴(역행렬) 방법이 없다 —
det = 0은 그 결과일 뿐이다
한 줄로 구분하기
| Dimension | Rank | |
|---|---|---|
| 무엇의 성질인가 | 공간(벡터들의 집합) | 행렬(변환) |
| 무엇을 세는가 | 공간을 만드는 기저의 개수 | 독립인 열(방향)의 개수 |
| 비유 | 그릇의 크기 | 그릇에 실제로 담긴 양 |
| 모양만 보고 알 수 있나 | 예 (m×n 이면 입력 n, 출력 m) | 아니오 (계산해봐야 안다) |
그래서 로봇에서 왜 중요한가 — 자코비안과 특이점
자코비안 J 는 관절 속도를 말단(end-effector) 속도로 옮겨주는 행렬이다.
$$ \mathbf{v} = J(\mathbf{q}),\dot{\mathbf{q}} $$
J가 full rank면 말단을 원하는 모든 방향으로 움직일 수 있다J의 rank가 떨어지는 자세 = 특이점(singularity)- 어떤 방향으로는 관절을 아무리 움직여도 말단이 그쪽으로 가지 못한다 (그 방향이 열공간에서 사라졌다)
- 반대로 역기구학으로 그 방향 속도를 내려고 하면 $J^{-1}$ 이 발산해서 관절 속도가 폭주한다 대표적인 예가 팔을 완전히 쭉 편 자세다. 두 링크가 한 직선 위에 놓이면 두 방향 벡터가 평행해지고 → 외적이 0이 되고 → 새 방향을 못 만들고 → rank가 하나 줄어든다.
오늘 배운 세 개념이 여기서 한 줄로 이어졌다. 두 벡터가 평행해진다(외적 = 0) → 독립인 방향이 하나 줄어든다(rank 감소) → 도달 가능한 공간의 dimension이 줄어든다(특이점). rank는 추상적인 수가 아니라 “지금 이 자세에서 로봇이 몇 방향으로 움직일 수 있는가"라는 아주 물리적인 값.
정리
오늘의 내용은 결국 “방향을 몇 개나 갖고 있는가” 하나로 꿰인다.
- 내적은 두 방향이 얼마나 같은지를 스칼라 하나로 답한다. 0이면 수직.
- 외적은 두 방향이 만드는 평면을 벡터로 답한다. 0이면 평면이 안 만들어진다 — 방향이 사실 하나뿐이었다는 뜻.
- Dimension은 공간이 품을 수 있는 방향의 최대 개수, Rank는 그 행렬이 실제로 살려내는 방향의 개수다. 헷갈렸던 이유도 분명해졌다. dimension은 공간을 보고 세는 값이고 rank는 변환을 보고 세는 값인데, 둘 다 “차원"이라는 같은 단어로 답하기 때문이었다. 그래서 **rank를 “출력 공간의 dimension”**이라고 한 번 더 풀어 말하면 겹치지 않는다.
그리고 이 구분이 로봇에서는 특이점이라는 이름으로 되돌아온다. 팔을 쭉 폈을 때 로봇이 갑자기 어떤 방향으로 못 가는 이유는, 그 자세에서 자코비안의 rank가 떨어져 도달 가능한 속도 공간의 dimension이 줄었기 때문이다. 수학에서 “정보가 뭉개졌다"라고 표현하던 것이, 로봇에서는 “그 방향으로는 못 움직인다"로 나타난다.