[Physical AI W2D2 · 1/7]
로봇 팔의 관절 각도를 알 때 손끝이 공간 어디에 있는지 계산하는 것이 정운동학(Forward Kinematics)이다. 링크·관절·자유도·말단 장치 같은 기본 구성 요소부터, 2축 평면 로봇 팔의 삼각함수 공식, 그리고 회전과 이동을 한 번에 담는 동차변환행렬까지 개념을 잡는다. W2D1에서 다룬 좌표계·TF가 왜 필요했는지 여기서 비로소 연결된다.
이 글에서 잡는 개념
- 정운동학(Forward Kinematics) 이란 무엇인가 — "관절값 → 말단 장치 위치·자세" 계산
- 로봇의 기본 구성 요소: 링크 · 관절 · 자유도 · 말단 장치
- 2축 평면 로봇 팔의 정운동학 공식을 삼각함수로 직접 유도
- 회전과 이동을 하나로 묶는 동차변환행렬과 그 연속 곱이 정운동학의 핵심 구조라는 점
(W2D1에서 좌표계·TF·동차변환행렬을 "개념"으로 만났다면, 이제 그 좌표계를 써서 로봇 팔의 손끝 위치를 실제로 계산하는 단계입니다.)
들어가며 — "관절을 이만큼 돌리면 손끝은 어디에 있지?"
로봇 팔을 떠올려 봅시다. 어깨를 30도, 팔꿈치를 45도 돌렸습니다. 그러면 팔 끝에 달린 그리퍼는 공간상 정확히 어디에 있을까요?
로봇 제어에서 가장 기본이 되는 질문은 두 가지입니다.
① 각 관절값이 주어졌을 때, 로봇의 끝부분은 공간상 어디에 있는가?
② 끝부분을 원하는 위치로 보내려면, 각 관절을 얼마만큼 움직여야 하는가?
첫 번째 질문을 다루는 것이 정운동학(Forward Kinematics) 이고, 두 번째 질문을 다루는 것이 역운동학(Inverse Kinematics) 입니다. 이번 글은 그중 정운동학을 다룹니다.
정운동학과 역운동학은 로봇 팔, 협동로봇, 산업용 매니퓰레이터, 휴머노이드 로봇, 이동 로봇, 자율주행 로봇의 기본 계산 원리입니다. ROS 2에서 좌표계 변환, TF, RViz2 시각화, MoveIt 기반 경로 계획을 이해하기 위해서도 반드시 알아야 하는 핵심 이론입니다.
💡 여기서 말단 장치(End Effector)란 — 로봇 팔 끝에 달린 그리퍼, 용접기, 카메라, 흡착 패드, 센서처럼 실제 작업을 수행하는 부분입니다.
정운동학과 역운동학에서 최종적으로 계산하려는 대상은 대부분 이 말단 장치의 위치와 자세입니다.
1. 운동학이란 무엇인가
운동학(Kinematics) 은 물체의 움직임을 수학적으로 표현하는 분야입니다. 여기서 중요한 구분이 있습니다.
동역학적 원인 (힘, 토크, 질량, 마찰) ← 운동학에서는 다루지 않음
움직임의 결과 (위치, 자세, 속도, 가속도) ← 운동학이 다루는 것
즉 운동학은 "왜 움직이는가(힘)"가 아니라 "어떻게 배치되고 움직이는가(위치·자세)"에 집중합니다.
로봇 운동학은 다음을 포함합니다.
- 로봇의 각 링크가 어떻게 연결되어 있는가를 표현한다.
- 각 관절의 회전 또는 직선 이동이 로봇 전체의 위치와 자세에 어떤 영향을 주는지 계산한다.
- 기준 좌표계에서 말단 장치의 위치와 방향을 구한다.
- 목표 위치에 도달하기 위해 필요한 관절값을 계산한다.
- 관절 속도와 말단 장치 속도 사이의 관계를 분석한다.
한마디로, 로봇 운동학은 로봇이 공간 안에서 자신의 몸을 어떻게 배치하고 움직이는지를 계산하는 기초 수학입니다.
2. 로봇의 기본 구성 요소 — 링크·관절·자유도·말단 장치
운동학을 이해하려면 먼저 네 가지 용어를 알아야 합니다.
2.1 링크 (Link)
링크는 로봇을 구성하는 강체 구조물입니다. 사람의 팔에 비유하면 위팔, 아래팔, 손이 링크에 해당합니다.
- 링크 자체는 변형되지 않는 강체로 가정합니다.
- 링크 사이의 상대적인 움직임은 관절에서 발생한다고 봅니다.
예를 들어 2축 평면 로봇 팔은 보통 두 개의 링크를 가집니다.
첫 번째 링크: 어깨 관절 → 팔꿈치 관절
두 번째 링크: 팔꿈치 관절 → 손끝(그리퍼)
각 링크의 길이와 연결 구조는 정운동학 계산에서 중요한 기준이 됩니다.
2.2 관절 (Joint)
관절은 링크와 링크를 연결하면서 상대 운동을 가능하게 하는 부분입니다. 로봇에서는 주로 두 가지 형태를 씁니다.
| 관절 종류 | 움직임 | 관절값 | 단위 | 예시 |
|---|---|---|---|---|
| 회전 관절 | 축을 기준으로 회전 | 각도 | 라디안 또는 도 | 산업용 로봇 팔, 협동로봇, 휴머노이드 |
| 직선 관절 | 한 방향으로 미끄러져 이동 | 거리 | 미터 또는 밀리미터 | 리니어 액추에이터, 슬라이더, 승강 장치 |
로봇 운동학에서 관절값은 보통 기호 q로 표현합니다. 여러 개의 관절값은 벡터로 묶습니다.
q = [q1, q2, q3, ..., qn]
여기서 q1, q2, q3는 각각 첫 번째, 두 번째, 세 번째 관절의 각도 또는 이동량을 의미합니다.
2.3 자유도 (DOF, Degrees of Freedom)
자유도는 로봇이 독립적으로 움직일 수 있는 방향 또는 관절의 수입니다.
- 평면 위 점 하나의 위치 → x, y 두 값 → 2자유도
- 3차원 공간의 위치 → x, y, z 세 값 → 3자유도
- 3차원 강체의 위치 + 자세 → 위치 3개 + 회전 3개 → 6자유도
위치: x, y, z
자세: roll, pitch, yaw
전체: 6자유도
💡 왜 산업용 6축 로봇이 많을까 — 6자유도가 있으면 공간상에서 말단 장치의 위치(3개)와 자세(3개)를 모두 제어할 수 있기 때문입니다.
6축 로봇은 손끝을 원하는 지점에 두는 것은 물론, 원하는 방향으로 기울일 수도 있습니다.
2.4 말단 장치 (End Effector)
말단 장치는 로봇이 실제 작업을 수행하는 끝부분입니다. 작업 목적에 따라 달라집니다.
물체 잡기 → 그리퍼
용접 → 용접 토치
도장 → 분사 노즐
검사 → 카메라, 센서
물류 → 흡착 패드, 집게
정운동학과 역운동학에서 최종적으로 계산하려는 대상은 대부분 이 말단 장치의 위치와 자세입니다.
3. 좌표계가 왜 필요한가 (W2D1과의 연결)
로봇의 위치와 자세를 계산하려면 기준이 필요합니다. 이 기준이 바로 좌표계입니다.
같은 물체라도 어떤 좌표계를 기준으로 보느냐에 따라 위치값이 달라집니다. 책상 위 컵을 방 입구 기준으로 표현할 수도 있고 책상 왼쪽 모서리 기준으로 표현할 수도 있죠. 기준점이 달라지면 같은 컵이라도 좌표값이 달라집니다.
로봇도 마찬가지입니다. 로봇 베이스를 기준으로 말단 장치 위치를 표현할 수도, 첫 번째 링크를 기준으로 두 번째 링크 위치를 표현할 수도, 카메라를 기준으로 물체 위치를 표현할 수도 있습니다. 따라서 로봇 시스템에서는 여러 좌표계 사이의 관계를 명확히 정의해야 합니다.
💡 W2D1과 연결 — ROS 2는 이 좌표계 관계를 TF / TF2 로 관리합니다.
RViz2에서 로봇 모델이 올바르게 보이려면base_link,joint,link,camera_link,map,odom같은 좌표계 관계가 정확해야 했죠. W2D1에서 "좌표계를 왜 그렇게 신경 써야 하나" 싶었다면 — 정운동학이 바로 그 좌표계들을 차례로 연결해 손끝 위치를 구하는 계산이기 때문입니다.
4. 위치와 자세 — 둘은 다르다
로봇의 상태를 표현할 때는 위치(position) 와 자세(orientation) 를 구분해야 합니다.
4.1 위치 — "어디에 있는가"
2차원: p = [x, y]
3차원: p = [x, y, z]
위치만으로는 물체가 어느 방향을 바라보는지 알 수 없습니다.
4.2 자세 — "어느 방향을 향하는가"
- 2차원에서는 보통 하나의 회전각 θ로 표현합니다.
- 3차원에서는 roll, pitch, yaw 또는 회전행렬, 쿼터니언으로 표현합니다.
roll : x축 기준 회전
pitch : y축 기준 회전
yaw : z축 기준 회전
로봇 제어에서는 위치와 자세를 함께 다뤄야 합니다. 로봇 팔이 물체를 잡으려면 손끝이 물체 위치에 도달하는 것만으로는 부족하고, 그리퍼의 방향도 잡기 좋게 맞아야 하니까요.
말단 장치 상태 = 위치 + 자세
5. 정운동학의 개념 — x = f(q)
이제 핵심입니다. 정운동학은 로봇의 관절값이 주어졌을 때 말단 장치의 위치와 자세를 계산하는 과정입니다.
입력: 관절값 q
출력: 말단 장치의 위치와 자세
수식으로 쓰면 이렇게 한 줄입니다.
x = f(q)
여기서 q는 관절값 벡터, x는 말단 장치의 위치와 자세, f는 로봇의 기구학적 구조를 나타내는 함수입니다.
정운동학은 비교적 명확한 계산 과정을 가집니다. 각 링크의 길이, 각 관절의 회전각, 좌표계 변환 관계를 차례대로 곱하면 말단 장치의 최종 위치와 자세가 나옵니다. 예를 들어 2축 평면 로봇 팔에서 두 관절각이 주어지면, 삼각함수만으로 손끝의 x, y 좌표를 구할 수 있습니다. 바로 다음 장에서 직접 해봅니다.
6. 2축 평면 로봇 팔의 정운동학 — 공식 유도
가장 단순한 예로 2축 평면 로봇 팔을 생각해 봅시다. 회전 관절 두 개와 링크 두 개로 구성됩니다.
L1 : 첫 번째 링크의 길이
L2 : 두 번째 링크의 길이
θ1 : 첫 번째 관절각
θ2 : 두 번째 관절각

1단계 — 첫 번째 링크 끝의 위치. 첫 번째 링크는 원점에서 θ1만큼 회전한 방향으로 L1만큼 뻗습니다.
x1 = L1 cos(θ1)
y1 = L1 sin(θ1)
2단계 — 두 번째 링크를 더한다. 두 번째 링크는 첫 번째 링크의 끝에서 다시 θ2만큼 상대적으로 회전합니다. 따라서 절대 방향은 (θ1 + θ2)가 되고, 말단 장치의 최종 위치는 다음과 같습니다.
x = L1 cos(θ1) + L2 cos(θ1 + θ2)
y = L1 sin(θ1) + L2 sin(θ1 + θ2)
이 식이 2축 평면 로봇 팔의 대표적인 정운동학 식입니다. 의미는 간단합니다.
- 첫 번째 항 = 첫 번째 링크가 만들어내는 위치
- 두 번째 항 = 두 번째 링크가 추가로 만들어내는 위치
- 두 기여를 합하면 최종 말단 장치 위치
⚠️ 흔한 함정 — θ2는 "상대 각도" — 두 번째 항이 cos(θ1 + θ2)인 이유는 두 번째 관절각 θ2가 첫 번째 링크 기준의 상대 회전이기 때문입니다.
절대 각도로 착각해 cos(θ2)로 쓰면 손끝 위치가 완전히 틀어집니다.
관절각은 거의 항상 "직전 링크에 대한 상대값"임을 기억하세요.
6.1 직접 계산해 보기
L1과 L2가 각각 1m이고, θ1 = 0도, θ2 = 0도라면 로봇 팔은 오른쪽으로 완전히 펴진 상태입니다.
x = 1 cos(0) + 1 cos(0 + 0) = 2
y = 1 sin(0) + 1 sin(0 + 0) = 0
따라서 말단 장치는 원점에서 x축 방향으로 2m 떨어진 곳에 위치합니다. 두 링크가 일직선으로 펴졌으니 1m + 1m = 2m. 직관과 정확히 맞죠.
7. 정운동학의 특징
정운동학은 관절값이 주어졌을 때 결과 위치를 계산하는 문제입니다. 로봇 구조와 관절값이 명확하면 일반적으로 하나의 결과가 나옵니다. (역운동학은 여러 해가 나올 수 있는데, 이건 2편에서 다룹니다.)
① 계산 방향이 관절 공간 → 작업 공간으로 향한다.
관절 공간은 각 관절값으로 표현되는 공간, 작업 공간은 말단 장치의 위치·자세로 표현되는 공간입니다.
관절 공간 → 작업 공간
② 계산 과정이 비교적 직접적이다. 각 관절의 변환행렬을 순서대로 곱하면 됩니다.
③ 로봇의 현재 상태를 파악하는 데 쓴다. 현재 관절각을 센서나 엔코더로 측정하면, 정운동학으로 손끝 위치를 알 수 있습니다.
④ 시각화와 디버깅에 중요하다. RViz2에서 링크와 관절이 올바르게 표시되려면 정운동학 관계가 정확해야 합니다.
8. 동차변환행렬이 필요한 이유
2축 평면 예제는 삼각함수만으로 풀렸습니다. 하지만 로봇은 여러 좌표계가 연결된 구조이고, 관절이 움직이면 좌표계 사이의 관계도 함께 변합니다. 단순히 위치만 더하는 방식으로는 3차원에서 회전과 이동을 동시에 표현하기 어렵습니다.
그래서 로봇 운동학에서는 회전과 이동을 하나의 행렬로 함께 표현하는 동차변환행렬을 씁니다. 4x4 행렬입니다.
T = [ R p ]
[ 0 1 ]
- R : 회전을 나타내는 3x3 회전행렬
- p : 이동을 나타내는 3x1 위치벡터
동차변환행렬을 쓰면 회전과 이동을 하나의 행렬 곱으로 처리할 수 있습니다. 베이스 → 1번 링크 변환을 T01, 1번 → 2번 링크 변환을 T12라 하면, 베이스에서 2번 링크까지는:
T02 = T01 × T12
말단 장치까지 여러 변환을 연결하면:
T0n = T01 × T12 × T23 × ... × T(n-1)n
💡 이 식이 정운동학의 진짜 핵심 구조 — 6장의 삼각함수 공식은 2축 평면이라는 특수한 경우를 손으로 푼 것이고, 일반적인 로봇에서는 이 변환행렬의 연속 곱이 곧 정운동학입니다.
W2D1에서 본 동차변환행렬이 여기서 "여러 개를 곱한다"로 확장되는 셈입니다.
9. 회전행렬의 의미
회전행렬은 좌표계가 어떻게 회전했는지를 표현하는 행렬입니다. 2차원 평면에서 각도 θ만큼 회전하는 행렬은 다음과 같습니다.
R = [ cos(θ) -sin(θ) ]
[ sin(θ) cos(θ) ]
이 행렬로 어떤 점을 원점 기준 θ만큼 회전시킬 수 있습니다. 3차원에서는 x축, y축, z축 각각에 대해 회전행렬을 정의할 수 있습니다.
x축 기준 회전 → roll
y축 기준 회전 → pitch
z축 기준 회전 → yaw
로봇 팔에서는 각 관절이 특정 축을 기준으로 회전하므로, 각 관절의 회전은 회전행렬로 표현됩니다.
10. 이동벡터의 의미
이동벡터는 좌표계가 기준 좌표계로부터 얼마나 떨어져 있는지를 표현합니다. 3차원에서는:
p = [x, y, z]
예를 들어 어떤 링크 좌표계가 베이스 좌표계에서 x축으로 1m, z축으로 0.5m 떨어져 있다면 이동벡터는:
p = [1.0, 0.0, 0.5]
로봇의 링크 길이는 보통 이동벡터에 반영됩니다. 관절이 회전하면 회전행렬(R)이 바뀌고, 링크 길이(p)에 의해 다음 좌표계의 위치가 결정됩니다. 즉 한 동차변환행렬 T 안에서 R은 "얼마나 돌았나", p는 "얼마나 떨어졌나" 를 담당합니다.
11. 동차변환행렬을 이용한 정운동학 — 순서가 생명
동차변환행렬을 쓰면 각 링크와 관절 사이의 관계를 체계적으로 표현할 수 있습니다. 각 관절마다 변환행렬을 하나씩 정의합니다.
T01: 베이스 좌표계에서 1번 링크 좌표계로의 변환
T12: 1번 링크 좌표계에서 2번 링크 좌표계로의 변환
T23: 2번 링크 좌표계에서 3번 링크 좌표계로의 변환
말단 장치까지의 전체 변환은 각 변환행렬을 순서대로 곱해서 구합니다.
T03 = T01 × T12 × T23
⚠️ 흔한 함정 — 행렬 곱은 순서가 바뀌면 결과가 달라진다 — 좌표계 변환은 곱의 순서가 매우 중요합니다.
T01 × T12 ≠ T12 × T01일반 숫자 곱셈처럼 순서를 바꿔도 된다고 생각하면 손끝 위치가 엉뚱하게 나옵니다.
로봇 운동학에서는 좌표계가 어떤 순서로 연결되어 있는지 정확히 이해해야 합니다.
💡 W2D1 TF와 정확히 같은 구조 — ROS 2의 TF 구조도 이런 계층적 좌표계 관계를 기반으로 합니다.
base_link → link1 → link2 → end_effector로 이어지는 관계는 곧 동차변환행렬의 연속 곱과 같은 의미입니다.
W2D1에서 TF 트리를 봤다면, 그 트리의 각 화살표가 하나의 변환행렬이라고 생각하면 됩니다.
1편 정리
- 정운동학(FK) = 관절값 q가 주어졌을 때 말단 장치의 위치·자세를 구하는 계산. 한 줄로 x = f(q).
- 로봇의 기본 구성: 링크(강체) · 관절(회전/직선) · 자유도(독립 움직임 수, 공간 강체는 6) · 말단 장치(작업 끝부분).
- 위치(어디)와 자세(어느 방향)는 다르며, 말단 장치 상태 = 위치 + 자세.
- 2축 평면 팔의 정운동학: x = L1 cos(θ1) + L2 cos(θ1 + θ2), y = L1 sin(θ1) + L2 sin(θ1 + θ2). θ2는 상대 각도.
- 일반 로봇에서는 동차변환행렬(4x4, 회전 R + 이동 p) 의 연속 곱(T0n = T01 × T12 × … )이 정운동학의 핵심 구조이며, 곱의 순서가 결정적이다.
- 이 구조는 W2D1의 TF 트리와 같은 의미 —
base_link → link → end_effector.
다음 편 예고
2편에서는 반대 방향 문제인 역운동학(Inverse Kinematics) 을 다룹니다. "손끝을 여기로 보내려면 관절을 얼마나 돌려야 하나"는 정운동학보다 까다로워서 — 여러 개의 해, 해가 없는 경우, 작업공간(Workspace), 자코비안, 그리고 로봇이 통제 불능이 되는 특이점(Singularity) 까지 살펴봅니다.
📚 Week2 Day2 전체 목차 (총 7편)
- 1/7 운동학 개념 ① — 정운동학(링크·관절·자유도·2축 팔·동차변환행렬) — 이번 글
- 2/7 운동학 개념 ② — 역운동학·작업공간·자코비안·특이점
- 3/7 정운동학·역운동학 Python 실습 — 직접 계산·검증·관절제한·특이점
- 4/7 계산 결과를 RViz2로 시각화 — FK/IK → 화면
- 5/7 MoveIt 개념 ① — 경로계획 핵심(Planning Group·Scene·Collision·Trajectory)
- 6/7 MoveIt 개념 ② — 계획 기법·Move Group·ROS 2 Control
- 7/7 MoveIt 경로계획 RViz2 시각화 실습(+ 오류 점검 7종)
'피지컬AI' 카테고리의 다른 글
| [Physical AI W2D2] 3/7 — 정운동학·역운동학 Python 실습(직접 계산·검증·관절제한·특이점) (0) | 2026.06.21 |
|---|---|
| [Physical AI W2D2] 2/7 — 운동학 개념 ②: 역운동학·작업공간·자코비안·특이점 (0) | 2026.06.21 |
| [Physical AI W1D2] 톺아보기 — ROS 2 통신·패키지 20문제 완전 풀이 (0) | 2026.06.20 |
| [Physical AI W2D1] 6/6 — 좌표 변환 실습: Python 변환 + TF Publisher + RViz (0) | 2026.06.20 |
| [Physical AI W2D1] 3/6 — RViz2 실습: GCP VM 헤드리스 GUI로 센서·TF 시각화 (0) | 2026.06.20 |