벡터와 행렬 — 로봇에서 무엇을 담는가

  • 벡터 = 크기 + 방향. 위치, 속도, 힘, 회전축이 전부 벡터다.
  • 행렬 = 벡터를 벡터로 보내는 사상(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은 그 결과일 뿐이다

한 줄로 구분하기

DimensionRank
무엇의 성질인가공간(벡터들의 집합)행렬(변환)
무엇을 세는가공간을 만드는 기저의 개수독립인 열(방향)의 개수
비유그릇의 크기그릇에 실제로 담긴 양
모양만 보고 알 수 있나예 (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는 추상적인 수가 아니라 “지금 이 자세에서 로봇이 몇 방향으로 움직일 수 있는가"라는 아주 물리적인 값.


정리

오늘의 내용은 결국 “방향을 몇 개나 갖고 있는가” 하나로 꿰인다.

  1. 내적은 두 방향이 얼마나 같은지를 스칼라 하나로 답한다. 0이면 수직.
  2. 외적은 두 방향이 만드는 평면을 벡터로 답한다. 0이면 평면이 안 만들어진다 — 방향이 사실 하나뿐이었다는 뜻.
  3. Dimension은 공간이 품을 수 있는 방향의 최대 개수, Rank는 그 행렬이 실제로 살려내는 방향의 개수다. 헷갈렸던 이유도 분명해졌다. dimension은 공간을 보고 세는 값이고 rank는 변환을 보고 세는 값인데, 둘 다 “차원"이라는 같은 단어로 답하기 때문이었다. 그래서 **rank를 “출력 공간의 dimension”**이라고 한 번 더 풀어 말하면 겹치지 않는다.

그리고 이 구분이 로봇에서는 특이점이라는 이름으로 되돌아온다. 팔을 쭉 폈을 때 로봇이 갑자기 어떤 방향으로 못 가는 이유는, 그 자세에서 자코비안의 rank가 떨어져 도달 가능한 속도 공간의 dimension이 줄었기 때문이다. 수학에서 “정보가 뭉개졌다"라고 표현하던 것이, 로봇에서는 “그 방향으로는 못 움직인다"로 나타난다.

comments powered by Disqus