딥러닝에서 역전파(Backpropagation)를 처음 배울 때를 떠올려보시면 좋겠습니다.
출력에서 입력 방향으로 거슬러 올라가며 기울기를 계산하는 과정이 처음엔 낯설었지만, 이해하고 나면 "이렇게 할 수밖에 없구나"라는 생각이 드셨을 겁니다.
로봇팔의 기구학도 비슷합니다. 처음엔 행렬과 삼각함수가 쏟아져서 당황스럽지만, 핵심 질문 하나를 붙잡으면 전체 구조가 보입니다.
"관절 각도를 알면 손의 위치를 알 수 있는가? 반대로, 손의 위치를 정하면 관절 각도를 구할 수 있는가?"
이번 글에서는 이 질문을 중심으로 로봇팔의 구조와 기구학, 역기구학, 그리고 동역학까지 순서대로 풀어보겠습니다.
1. 로봇팔의 구조 — 링크와 관절
로봇팔은 크게 링크(Link) 와 관절(Joint) 로 이루어져 있습니다.
링크는 뼈대입니다. 관절과 관절 사이를 연결하는 구조체로, 그 자체는 움직이지 않습니다. 관절이 돌아가면 링크가 함께 따라 움직이는 방식입니다. 대부분의 모델에서 링크는 변형되지 않는 강체(Rigid Body)로 가정합니다.
관절은 움직임의 단위입니다. 회전하거나(Revolute) 직선으로 미끄러지는(Prismatic) 방식으로 동작합니다.
여기서 중요한 개념이 자유도(Degrees of Freedom, DOF) 입니다. 자유도란 로봇의 자세를 결정하기 위해 필요한 독립적인 변수의 수입니다. 평면 위에서 한 축을 기준으로 회전하는 관절은 자유도가 1입니다. 각도 θ 하나만 알면 상태를 완전히 기술할 수 있기 때문입니다.
3차원 공간에서 물체의 위치(x, y, z)와 방향(roll, pitch, yaw)을 완전히 표현하려면 6개의 값이 필요합니다. 그래서 3D 공간에서 자유롭게 작업하는 로봇팔은 보통 6개 이상의 관절을 갖습니다.
관절 공간(Configuration Space) 이라는 개념도 알아두시면 좋습니다. 6개 관절이 있는 로봇이라면, 각 관절의 각도를 하나씩 축으로 가지는 6차원 공간을 생각할 수 있습니다. 로봇의 현재 자세는 이 공간에서 하나의 점으로 표현됩니다. 로봇이 움직인다는 것은 이 점이 6차원 공간 안에서 이동하는 것과 같습니다.
2. 말단 장치 — 로봇의 손
로봇팔 끝에 달려 실제 작업을 수행하는 부분을 말단 장치(End-effector) 라고 합니다. 사람으로 치면 손에 해당합니다.
용도에 따라 종류가 다양합니다.
기계식 그리퍼는 가장 흔한 형태입니다. 2개 또는 3개의 손가락(Jaw)으로 물체를 집는 방식으로, 구조가 단순하고 정밀도가 높아 산업 자동화에 많이 쓰입니다.
흡착식 석션 컵은 진공 압력으로 물체 표면에 달라붙는 방식입니다. 택배 분류 시스템이나 반도체 공정처럼 평평하고 매끄러운 물체를 빠르게 이동시킬 때 적합합니다.
로봇 핸드는 사람의 손과 유사한 구조로, 다양한 형태의 물체를 섬세하게 조작할 수 있습니다. 구조가 복잡하고 비용이 높지만 연구용이나 협동 로봇에 많이 사용됩니다.
AI 로봇 학습의 관점에서 특히 중요한 것은 말단 장치 카메라입니다. 손목 부분에 달린 카메라(Wrist Camera)로 주변 환경을 촬영하고, 이 영상을 신경망의 입력으로 활용합니다. 지난 글에서 다룬 LeRobot의 모방학습에서도 카메라 영상이 핵심 관측값이었던 것을 기억하시면 연결이 쉽습니다.
3. 프레임 — 로봇은 어떻게 위치를 계산하는가
로봇이 "손이 지금 어디 있는가"를 계산하려면 기준이 필요합니다. 이 기준을 프레임(Frame) 이라고 합니다.
비유를 들면, 서울에서 부산까지 거리를 말할 때 우리는 서울을 기준점(원점)으로 삼습니다. 로봇도 마찬가지입니다. 로봇 바닥에 고정된 베이스 프레임을 기준으로, 각 관절마다 자신의 프레임이 있습니다.
관절이 돌아가면 그 관절에 연결된 링크와 그 이후의 모든 프레임이 함께 변환됩니다. 이 변환을 수학적으로 표현하는 것이 변환 행렬(Transformation Matrix) 입니다.
변환 행렬은 회전 행렬 R과 위치 벡터 t를 하나로 합친 4×4 행렬입니다.
T = | R t |
| 0 1 |
R은 얼마나 회전했는지, t는 얼마나 이동했는지를 나타냅니다. 딥러닝으로 비유하면 R은 방향 정보, t는 위치 정보를 담은 하나의 패키지입니다.
관절이 2개인 로봇에서 베이스 {A}에서 첫 번째 링크 끝 {B}로의 변환을 T_B^A, {B}에서 두 번째 링크 끝 {C}로의 변환을 T_C^B라 하면, 베이스에서 최종 말단까지의 변환은 다음과 같이 행렬 곱으로 구합니다.
T_C^A = T_B^A × T_C^B
체인처럼 연결된 변환을 순서대로 곱하면 전체 변환이 나옵니다. 이것이 기구학의 핵심입니다.
4. 순기구학 — 관절 각도로 손의 위치 구하기
순기구학(Forward Kinematics, FK) 은 관절 각도들을 알 때 말단 장치의 위치를 구하는 방법입니다.
[θ₁, θ₂, θ₃, ...] → (x, y, z) 위치와 방향
앞서 설명한 변환 행렬을 관절 수만큼 곱하면 됩니다. 관절이 n개라면 n개의 변환 행렬을 순서대로 곱합니다. 계산 과정이 명확하고 해가 유일하게 존재하기 때문에, 순기구학은 비교적 다루기 쉽습니다.
2개 관절(θ₁, θ₂)과 2개 링크(길이 l₁, l₂)가 있는 2D 로봇을 예로 들면, 말단 장치의 위치는 다음과 같습니다.
x = l₁cos(θ₁) + l₂cos(θ₁ + θ₂)
y = l₁sin(θ₁) + l₂sin(θ₁ + θ₂)
삼각함수를 통해 각 링크가 어느 방향으로 뻗어 있는지 계산하고, 그것을 더하면 최종 위치가 나옵니다. 실제로는 변환 행렬 곱으로 같은 결과를 체계적으로 구합니다.

5. 역기구학 — 손의 위치로 관절 각도 구하기
역기구학(Inverse Kinematics, IK) 은 순기구학의 반대입니다. 말단 장치를 어디에 두고 싶다는 목표가 주어졌을 때, 그 위치에 도달하기 위한 관절 각도를 구합니다.
(x, y, z) 목표 위치 → [θ₁, θ₂, θ₃, ...] 관절 각도
로봇이 실제로 물건을 집으려면 역기구학이 필수입니다. 그런데 순기구학보다 훨씬 어렵습니다. 이유가 두 가지입니다.
첫째, 해가 여러 개일 수 있습니다. 팔꿈치를 위로 올리든 아래로 내리든 손의 위치가 같을 수 있는 것처럼, 하나의 말단 위치에 대응하는 관절 각도 조합이 여럿일 수 있습니다.
둘째, 관절 수가 많아지면 계산이 복잡해집니다. 삼각함수가 뒤섞인 비선형 방정식을 풀어야 하기 때문입니다.
역기구학을 푸는 방법은 크게 세 가지입니다.
해석해(Analytic Solution) 는 수식으로 직접 답을 구하는 방법입니다. 코사인 법칙 같은 삼각함수를 활용해서 닫힌 형태의 수식을 도출합니다. 한번 식을 구해두면 매우 빠르게 답을 내놓을 수 있지만, 관절이 많아질수록 수식 도출 자체가 어려워집니다.
수치해(Numerical Solution) 는 반복 계산으로 답에 접근하는 방법입니다. 현재 관절 각도에서 말단 위치를 구하고, 목표와 차이가 있으면 차이를 줄이는 방향으로 관절 각도를 조금씩 수정합니다. 이때 자코비안(Jacobian) 행렬을 사용하는데, 이는 다음 섹션에서 자세히 설명합니다. 대부분의 다관절 로봇에 적용 가능하지만 반복 계산이 필요하고, 특정 자세(특이점)에서 불안정해질 수 있습니다.
학습 기반 방법(Learning-based) 은 역기구학 함수 자체를 신경망으로 학습하는 방법입니다. 딥러닝을 이미 알고 계신 분이라면 가장 친숙한 방식일 겁니다. GPU를 활용하면 빠르게 다수의 해를 구할 수 있지만, 학습 데이터가 필요하고 정확도가 떨어질 수 있습니다.
6. 자코비안 행렬 — 속도와 힘의 변환
자코비안(Jacobian) 은 다변수 함수의 편미분으로 이루어진 행렬입니다. 로봇에서는 관절 각도 변화와 말단 장치 위치 변화의 관계를 나타냅니다.
딥러닝에서 손실 함수를 파라미터로 편미분하여 기울기를 구하는 것과 개념적으로 같습니다. 단지 여기서는 관절 각도들이 파라미터이고, 말단 위치가 출력 함수입니다.
수식으로 쓰면 다음과 같습니다.
ẋ = J(θ) · θ̇
말단 장치의 속도(ẋ)는 자코비안(J)과 관절 각속도(θ̇)의 곱입니다. 관절이 얼마나 빠르게 돌고 있는가를 알면, 말단 장치가 얼마나 빠르게 움직이는지 계산할 수 있습니다.
자코비안은 세 가지 용도로 활용됩니다.
속도 변환: 관절 속도 → 말단 속도, 혹은 그 반대.
역기구학 수치해: 목표 위치와 현재 위치의 차이(Δx)를 줄이기 위한 관절 각도 변화량(Δθ)을 구할 때 사용합니다.
Δθ = J⁻¹ · Δx
자코비안의 역행렬로 말단 위치 오차를 관절 각도 오차로 변환하고, 이를 반복해서 목표에 접근합니다.
힘 변환: 말단 장치에 가해지는 힘(F)을 관절 토크(τ)로 변환할 때도 자코비안을 씁니다.
τ = Jᵀ · F
자코비안이 모든 열이 선형 종속이 되는 특수한 자세를 특이점(Singularity) 이라고 합니다. 이 상태에서는 역행렬이 존재하지 않아서 제어가 불안정해집니다. 팔을 완전히 펴거나 특정 각도로 정렬할 때 발생하는데, 실제 로봇 제어에서는 특이점 회피가 중요한 문제입니다.
7. 동역학 — 힘과 토크가 어떻게 움직임을 만드는가
지금까지는 위치와 속도의 이야기였습니다. 동역학(Dynamics)은 여기서 한 발 더 나아가, 힘과 토크가 어떻게 작용해서 가속도와 속도와 위치를 만들어내는가를 다룹니다.
뉴턴의 F=ma를 로봇 관절에 적용하면 다음과 같은 방정식이 나옵니다.
τ = M(q)q̈ + c(q, q̇)q̇ + g(q)
각 항이 무엇을 의미하는지 하나씩 풀어보겠습니다.

τ (관절 토크) 는 각 관절 모터가 출력하는 회전력입니다. 로봇에게 내리는 명령어라고 생각하시면 됩니다. 이 값을 입력하면 로봇이 움직입니다.
M(q)q̈ (질량 행렬 × 관절 가속도) 는 F=ma와 유사한 항입니다. M(q)는 로봇의 질량 행렬로, 각 링크의 질량·중심·관성 모멘트를 반영합니다. 중요한 점은 q, 즉 관절 각도에 따라 이 행렬이 달라진다는 것입니다. 팔을 펼친 자세와 접은 자세에서 같은 힘을 가해도 가속도가 다른 이유입니다. 또한 한 관절의 움직임이 다른 관절에 영향을 줄 수 있기 때문에 대각 행렬이 아닐 수 있습니다.
c(q, q̇)q̇ (코리올리 및 원심력) 은 여러 관절이 동시에 회전할 때 생기는 관성력입니다. 속도에 비례하기 때문에 빠르게 움직일수록 이 힘이 커집니다. 음식을 젓가락으로 집을 때 손목과 팔꿈치를 동시에 움직이면 서로 영향을 주는 것과 비슷합니다.
g(q) (중력 보상) 는 중력에 맞서 현재 자세를 유지하는 데 필요한 토크입니다. 로봇이 완전히 정지해 있을 때(가속도=0, 속도=0)는 τ = g(q), 즉 중력 보상 토크만 출력하면 현재 자세를 그대로 유지할 수 있습니다. 관절 각도에 따라 중력이 작용하는 방향이 달라지므로 q의 함수로 표현됩니다.
이 방정식이 중요한 이유는 MuJoCo의 mj_step() 함수가 바로 이 계산을 수행하기 때문입니다. 지난 글에서 data.ctrl에 값을 넣으면 로봇이 움직였는데, 내부적으로는 이 동역학 방정식을 매 스텝마다 풀어서 다음 위치와 속도를 업데이트하는 것입니다.
8. 딥러닝과의 연결 고리
여기까지 이해하셨다면 로봇 학습에서 이 개념들이 어디에 쓰이는지 보이기 시작합니다.
순기구학은 로봇의 관절 상태로부터 말단 위치를 구할 때 씁니다. 모방학습에서 관절 각도 데이터를 수집할 때, 현재 손의 위치가 어디인지 계산하는 데 사용됩니다.
역기구학은 신경망이 "손을 여기로 보내라"는 목표 위치를 출력할 때, 그것을 실제 관절 명령으로 변환하는 데 씁니다. 학습 기반 역기구학은 신경망 자체로 이 함수를 대체하기도 합니다.
자코비안은 역기구학 수치해에서도 쓰이지만, 최근 로봇 학습에서는 말단 장치의 속도를 제어 신호로 사용할 때 관절 속도로 변환하는 용도로도 활용됩니다.
동역학은 MuJoCo 같은 시뮬레이터의 핵심 엔진입니다. 신경망이 출력하는 제어 신호(data.ctrl)를 받아서 물리적으로 타당한 움직임을 계산하는 것이 동역학 방정식입니다.
마치며
이번 글에서 다룬 내용을 한 줄씩 정리하면 이렇습니다.
- 로봇팔은 링크와 관절로 구성되며, 자유도는 독립적으로 제어 가능한 축의 수입니다.
- 프레임은 위치를 표현하는 기준 좌표계이며, 변환 행렬로 프레임 간 변환을 계산합니다.
- 순기구학은 관절 각도 → 말단 위치, 역기구학은 말단 위치 → 관절 각도입니다.
- 자코비안은 관절 속도와 말단 속도의 관계를 나타내며, 역기구학 수치해와 힘 변환에 활용됩니다.
- 동역학 방정식 τ = M(q)q̈ + c(q, q̇)q̇ + g(q)은 MuJoCo의 물리 계산 핵심입니다.
수식이 많아 보이지만, 각 항이 담당하는 물리적 의미를 이해하면 시뮬레이터가 왜 이렇게 동작하는지, 신경망 출력이 어떻게 로봇의 움직임으로 이어지는지가 명확하게 보입니다.
'Study Archives > Robotics' 카테고리의 다른 글
| [자율 조작 로봇 이해 ⑤] 행동 복제(BC)와 역강화학습(IRL) (0) | 2026.05.25 |
|---|---|
| [자율 조작 로봇 이해 ④] 조작 데이터 수집과 전처리 (0) | 2026.05.22 |
| [자율 조작 로봇 이해 ②] MuJoCo로 로봇 팔 띄우고 움직여보기 (0) | 2026.05.22 |
| [자율 조작 로봇 이해 ①] 로봇팔은 어떻게 스스로 움직일까 (0) | 2026.05.21 |
| [로봇 학습의 이해 ⑥-❶] 강화학습 보상 설계 (0) | 2026.04.10 |