들어가며
로봇 매니퓰레이터(manipulator)를 다루는 글은 결국 "어디에, 어떤 방향으로"를 수로 적는 데서 시작합니다. 그 언어를 세우지 않으면 기구학도 동역학도 제어도 쓸 수가 없습니다. John J. Craig의 교재 "Introduction to Robotics: Mechanics and Control" 은 그 순서를 그대로 따릅니다. 1장은 앞으로 풀 문제들의 지도를 펼치고, 2장은 그 모든 논의가 공유할 언어를 세웁니다.
이 글은 그 교재를 장별로 정리하는 시리즈의 첫 편으로, 1장과 2장을 다룹니다. 교재의 원본 도식과 본문은 저작권 자료라 그대로 싣지 않고, 개념을 다시 그린 자체 제작 도해로만 설명합니다. 본문 역시 원문 번역이 아니라 핵심만 추려 다시 쓴 요약입니다. 용어는 처음 나올 때만 괄호로 원어를 병기합니다.
1. 매니퓰레이터는 무엇으로 이루어지는가
매니퓰레이터는 단단한 링크(link) 를 관절(joint) 로 이어 붙인 사슬입니다. 관절은 대개 둘 중 하나입니다. 돌아가는 회전관절(revolute) 과 미끄러지는 직동관절(prismatic) 입니다. 관절 하나가 자유도(DOF, degree of freedom) 하나에 해당하고, 사슬 끝에는 도구를 쥐는 말단장치(end-effector) 가 붙습니다.
관절값 두 개를 흔들면 말단장치의 위치가 따라 움직입니다. 왼쪽에서 각도를 정하면 오른쪽의 위치가 결정되는 이 방향이 곧 순기구학(forward kinematics) 입니다. 반대로 원하는 말단장치 자세에서 관절값을 되찾는 방향이 역기구학(inverse kinematics) 인데, 이쪽은 해가 여럿일 수도, 아예 없을 수도 있습니다. 해가 없는 영역이 생긴다는 사실에서 작업공간(workspace) 이라는 개념이 따라옵니다.
2. 1장이 펼치는 문제 지도
1장은 책 전체가 어떤 문제를 어떤 순서로 풀 것인지 보여주는 장입니다. 표기 약속과 용어를 정해 두고, 아래 흐름을 예고합니다.
각 단계가 무엇을 받아 무엇을 내놓는지 한 번에 정리하면 이렇습니다.
| 문제 | 입력 | 출력 | 걸림돌 |
|---|---|---|---|
| 순기구학 | 관절값 | 말단장치의 위치·방향 | 표기와 좌표계 약속이 먼저 필요 |
| 역기구학 | 말단장치 자세 | 관절값 | 해가 여럿이거나 없음, 작업공간 밖 |
| 자코비안 | 관절 속도 | 말단장치 속도·정적 힘 | 특이점(singularity)에서 무너짐 |
| 동역학 | 관절 가속도·힘 | 필요한 토크 | 관성과 결합항이 자세마다 달라짐 |
| 궤적 생성 | 경유점 | 시간에 따른 관절·자세 명령 | 연속성과 속도·가속도 한계 |
| 제어 | 목표 궤적 | 실제 구동 명령 | 모델 오차, 접촉이 있는 힘 제어 |
이 지도의 첫 칸이 공간 기술이라는 점이 중요합니다. 나머지 전부가 그 언어 위에서 쓰이기 때문입니다. 그래서 2장이 필요합니다.
3. 위치는 위치벡터로
모든 논의의 출발점은 "어디에, 어떤 방향으로"를 수로 적는 것입니다. 위치는 어떤 기준틀, 즉 프레임(frame) 을 기준으로 한 3차원 위치벡터(position vector) 로 적습니다. Craig의 표기에서는 왼쪽 위 어깨글자로 기준 프레임을 밝힙니다.
여기서 왼쪽 위의 가 " 프레임에서 본"이라는 뜻입니다. 같은 점이라도 어느 프레임에서 보느냐에 따라 세 숫자가 달라지므로, 기준을 적지 않은 좌표는 의미가 없습니다. 로봇 코드에서 좌표 하나를 넘길 때마다 프레임 이름을 함께 달고 다녀야 하는 이유가 여기 있습니다.
4. 방향은 회전행렬로
방향(orientation) 은 3×3 회전행렬(rotation matrix) 로 적습니다. 의 방향을 에서 볼 때, 그 행렬의 세 열은 의 세 축 단위벡터를 좌표로 적은 것입니다.
를 의 두 축에 내린 성분이 그대로 첫 열이 되는 것이 보입니다. 열들이 서로 직교하고 길이가 1인 정규직교(orthonormal) 행렬이라, 이 행렬에는 특별한 성질이 붙습니다.
이 조건을 만족하는 행렬들의 무리를 SO(3) 라 부릅니다. 역행렬을 구하려고 계산할 필요 없이 전치만 하면 된다는 뜻이라, 뒤에서 역변환을 다룰 때 계산이 통째로 간단해집니다.
5. 프레임과 사상 — 기술을 갈아끼우다
위치벡터와 회전행렬을 한데 묶은 것이 프레임입니다. 한 점을 기술에서 기술로 바꾸는 것을 사상(mapping) 이라 합니다. 두 프레임이 방향은 같고 위치만 다르면 위치벡터를 더하면 되고, 원점은 같고 방향만 다르면 회전행렬을 곱하면 됩니다. 일반적으로는 둘을 합칩니다.
먼저 회전행렬을 곱해 방향을 기준으로 돌리고, 그다음 원점의 위치 를 더합니다. 순서가 바뀌면 결과가 달라지므로, 두 단계의 순서 자체가 이 식의 내용입니다.
6. 동차변환 — 하나의 행렬로 묶다
회전과 평행이동을 매번 따로 쓰면 번거롭습니다. 그래서 둘을 4×4 동차변환행렬(homogeneous transform) 하나로 묶습니다.
| 블록 | 크기 | 내용 |
|---|---|---|
| 왼쪽 위 | 3×3 | 회전행렬 — 방향 |
| 오른쪽 위 | 3×1 | 위치벡터 — 원점의 위치 |
| 왼쪽 아래 | 1×3 | — 자리 채움 |
| 오른쪽 아래 | 1×1 | — 축척 |
점도 마지막에 1을 붙인 4×1로 적으면, 앞 절의 두 단계짜리 식이 행렬 한 번의 곱으로 줄어듭니다.
이 하나의 표기가 2장의 정점입니다. 이후의 모든 장이 이 표기를 그대로 물려받아 씁니다.
7. 연산자, 합성, 그리고 역변환
같은 수학이 세 얼굴을 가진다는 점이 2장에서 놓치기 쉬운 대목입니다. 지금까지는 프레임을 바꾸는 사상으로 읽었지만, 똑같은 행렬을 한 프레임 안에서 점을 옮기는 연산자(operator) 로도 읽을 수 있습니다. 평행이동 연산자, 회전 연산자, 변환 연산자가 그것입니다. 관점만 다를 뿐 계산은 완전히 같습니다.
변환은 사슬처럼 이어 붙습니다.
링크를 하나씩 타고 올라가며 곱하면 베이스에서 말단장치까지의 변환이 나온다는 이야기라, 3장의 기구학이 사실상 이 한 줄의 반복이 됩니다.
역변환도 쉽습니다. 4×4 행렬을 통째로 뒤집는 대신, 회전 부분은 전치하고 위치 부분만 그에 맞춰 고쳐 쓰면 됩니다.
라는 SO(3)의 성질이 여기서 값을 합니다.
8. 변환 방정식
여러 프레임이 고리를 이루면, 한 바퀴 도는 두 경로가 같은 결과여야 한다는 변환 방정식(transform equation) 을 세울 수 있습니다. 예컨대 에서 로 가는 길이 둘 있다면 두 곱이 서로 같고, 여기서 모르는 변환 하나를 풀어낼 수 있습니다.
기구학뿐 아니라 카메라·공구를 다는 보정(calibration) 작업에서 계속 쓰게 되는 기법입니다.
9. 방향을 적는 다른 방법들
회전행렬은 아홉 개의 수로 세 개의 자유도를 표현합니다. 남는 정보가 많다는 뜻이라, 세 개나 네 개의 수로 줄인 표현들이 함께 쓰입니다.
| 표현 | 수의 개수 | 장점 | 단점 |
|---|---|---|---|
| 회전행렬 | 9 | 곱으로 합성이 바로 됨, 특이성 없음 | 남는 정보가 많고 저장·정규화 부담 |
| 오일러각(Euler angles, 예: Z-Y-X) | 3 | 최소 개수, 사람이 읽기 직관적 | 짐벌락(gimbal lock) 존재, 순서 약속 필요 |
| 고정각(fixed angles, 예: X-Y-Z) | 3 | 축이 고정이라 해석이 쉬움 | 오일러각과 같은 한계, 혼동하기 쉬움 |
| 등가 축-각(equivalent angle-axis) | 4 | 회전을 축 하나와 각으로 직관화 | 각이 0에 가까우면 축이 불안정 |
| 단위 사원수(unit quaternion) | 4 | 짐벌락 없음, 보간에 유리 | 부호 중복, 손으로 읽기 어려움 |
오일러각과 고정각은 순서를 뒤집으면 서로 같아집니다. 예컨대 Z-Y-X 오일러각과 X-Y-Z 고정각은 같은 회전을 가리킵니다. 결국 어떤 표현을 고르느냐는 수의 개수 · 계산 편의 · 특이성 사이의 맞바꿈입니다. 정책이나 제어기 출력으로 자세를 다룰 때 사원수가 자주 등장하는 것도 보간이 매끄럽고 짐벌락이 없기 때문입니다.
두 장의 핵심 한 줄 요약
1장은 매니퓰레이터를 링크와 관절의 사슬로 보고, 기구학 · 동역학 · 궤적 · 제어라는 앞으로의 문제 지도를 그립니다. 2장은 그 모든 문제의 공용어로, 위치는 위치벡터로 방향은 회전행렬로 적고, 둘을 4×4 동차변환행렬로 묶어 사상 · 합성 · 역변환을 행렬 곱 하나로 다루는 법을 세웁니다.
이 언어 위에서 다음 편의 3장 기구학이 전개됩니다. 링크와 관절을 파라미터로 적는 방법, 그리고 그 파라미터에서 변환행렬을 뽑아 사슬로 곱하는 과정을 이어서 정리하겠습니다.