1. 개요[편집]
| 스크류 이론 Screw Theory | |
|---|---|
| 기본 대상 | 직선 하나 + 피치 하나 = 스크류 |
| 두 얼굴 | 트위스트(순간 운동) · 렌치(힘+모멘트) |
| 좌표 | 플뤼커 6성분 $(\mathbf{s};\,\mathbf{s}_0)$ |
| 핵심 연산 | 상반곱 = 렌치가 트위스트에 하는 일률 |
| 대수적 정체 | $\mathfrak{se}(3)$ 와 그 쌍대공간 |
| 정본 | Ball, A Treatise on the Theory of Screws (1900) |
| 한 줄 요약 | 운동도 힘도 결국 나사 하나로 적힌다 |
회전과 병진을 따로 적던 사람들이, 어느 날 둘을 6개짜리 벡터 하나로 묶고 나서 식이 절반으로 줄어드는 것을 목격했다.
스크류 이론(screw theory)은 강체의 순간 운동과 강체에 걸리는 하중을, 공간의 직선 하나와 그 직선에 붙은 피치(pitch) 하나로 이루어진 「스크류」라는 단일 기하 객체로 통일해 기술하는 체계다. 운동 쪽 화신이 트위스트(twist), 하중 쪽 화신이 렌치(wrench)이며, 둘 다 6개의 수로 적힌다. 회전과 병진, 힘과 모멘트를 각각 따로 굴리던 3차원 벡터 대수가 이 6차원 언어로 넘어오면 곱해야 할 행렬의 개수와 유도해야 할 식의 줄 수가 눈에 띄게 줄어든다.
출발점은 기구학에서 이미 만난 샤슬 정리다 — 임의의 강체 변위는 어떤 직선을 중심으로 한 회전과 그 직선 방향 병진의 합성이다. 나사를 돌려 박는 운동 하나가 모든 강체 변위를 덮는다는 뜻이고, 그 나사의 축과 “한 바퀴에 얼마나 파고드는가”(피치)를 적어 놓은 것이 스크류다. 로버트 스토웰 볼이 1876년 논문과 1900년의 『나사 이론 개론』에서 이 관점을 체계화했고, 20세기 후반 로보틱스가 이 언어를 통째로 수입해 오늘날 로봇 기구학 교과서의 표준 표기가 되었다.1
샤슬 정리·트위스트의 개념적 소개, 자유도 세기, 조작성 타원 같은 일반론은 기구학이 이미 다루므로 반복하지 않는다. 이 문서는 스크류의 대수 — 플뤼커 좌표, 상반성, 스크류계의 랭크, 지수곱 정식화, 그리고 특이점을 랭크 결손으로 읽는 법 — 을 담당한다.
2. 스크류의 좌표 — 플뤼커 6성분[편집]
공간의 유향 직선은 방향벡터 하나만으로는 정해지지 않는다. 방향이 같고 위치가 다른 직선이 무수히 많기 때문이다. 그래서 방향 와 원점에 대한 모멘트 를 짝지어
로 적는 것이 플뤼커 좌표다( 은 직선 위 아무 점). 6개의 수를 쓰되 전체 스케일이 무의미하고 위의 항등식 하나가 걸려 있으므로 실질 자유도는 4이며, 이것이 3차원 공간의 직선 전체가 이루는 4차원 다양체다. 사영기하학의 언어로는 이 항등식이 5차원 사영공간 안의 2차 초곡면(클라인 2차식)을 정의하고, 직선의 집합이 곧 그 초곡면이다.
스크류는 여기에 피치 를 얹어 항등식을 깬 물건이다.
우변의 두 공식이 요점이다. 6개의 수만 던져 주면 축의 방향·축의 위치·피치를 전부 되뽑아낼 수 있다. 피치는 라디안당 길이의 차원을 가지며, 특수한 두 경우가 우리가 아는 것들이다.
- — 순수 회전. 스크류가 플뤼커 항등식을 만족하는 진짜 직선이 된다. 힘 쪽에서는 작용선을 가진 순수한 힘이 여기 해당한다.
- () — 순수 병진, 힘 쪽에서는 순수 우력(couple). 축의 위치가 의미를 잃고 방향만 남는다.
성분의 순서 규약은 문헌마다 갈린다. 로보틱스 교과서(리 군 계열)는 각속도를 앞에 두어 로 적고, 고전 스크류 문헌은 힘을 앞에 두는 광선 좌표(ray coordinates)를 쓴다. 남의 식을 가져올 때 이 순서부터 확인하지 않으면 부호와 블록이 조용히 어긋난다. 이 문서는 각속도 우선 규약을 쓴다.
3. 트위스트와 렌치, 그리고 일률[편집]
강체의 순간 운동은 각속도 와 물체에 고정된 점 중 지금 기준점에 와 있는 점의 속도 를 묶은 트위스트
로 적는다. 가 “기준점의 속도”가 아니라 강체를 무한히 늘렸을 때 기준점에 겹치는 물질점의 속도라는 점이 초심자를 반드시 한 번 태우는 부분이다. 이렇게 정의해야만 가 좌표계 변환에서 선형으로 변환된다.
하중 쪽은 모멘트 과 힘 를 묶어 렌치 로 적는다. 순서를 이렇게 맞춰 놓으면 일률이 그냥 내적이 된다.
즉 트위스트는 의 원소이고 렌치는 그 쌍대공간의 원소이며, 둘을 짝지으면 일률이 나온다. 스크류 이론이 리 군의 언어와 정확히 같은 물건이라는 사실이 여기서 드러난다 — 트위스트를 4×4 행렬로 올린
의 지수 가 원소이고, 그것이 바로 나사 운동이다.
좌표계를 바꿀 때 쓰는 것이 수반 사상(adjoint)이다. 에 대해
트위스트는 로, 렌치는 로 변환된다. 이 전치 하나가 힘과 운동의 쌍대성을 코드 수준에서 구현한 것이며, 실수하면 모멘트 팔이 반대 부호로 붙어 조용히 틀린 값이 나온다. 다물체 동역학의 재귀 알고리즘이 쓰는 공간 벡터 대수(페더스톤 표기)가 정확히 이 구조이고, 페더스톤의 운동 벡터/힘 벡터가 여기서의 트위스트/렌치다.
4. 상반적 스크류 — 구속 해석의 본체[편집]
이 이론이 실제로 밥값을 하는 자리가 상반성(reciprocity)이다. 두 스크류 , 에 대해 상반곱을
로 정의하고, 이 값이 0이면 두 스크류가 상반적이라고 한다. 한쪽을 트위스트로, 다른 쪽을 렌치로 읽으면 의미가 곧바로 나온다 — 그 렌치는 그 트위스트에 대해 일을 하지 않는다. 가상일의 원리가 스크류 언어로 번역된 형태다.
여기서 구속 해석의 표준 절차가 나온다. 어떤 조인트나 기구가 물체에 허용하는 순간 운동들이 차원 부분공간(-계 스크류계)을 이루면, 그 조인트가 전달할 수 있는 하중은 정확히 그 부분공간에 상반적인 -계를 이룬다. 자유도와 구속이 6에서 서로를 보완한다는 이 정리가 볼의 결과이고, 실무에서는 이렇게 쓰인다.
| 조인트 | 허용 트위스트계 | 전달 렌치계(상반) |
|---|---|---|
| 회전(R) | 1-계, 축 직선(피치 0) | 5-계 — 축과 만나거나 평행한 모든 힘 + 축에 수직인 우력 |
| 병진(P) | 1-계, 피치 무한 | 5-계 — 모든 우력 + 이동방향에 수직인 힘 |
| 구면(S) | 3-계, 중심을 지나는 모든 회전 | 3-계 — 중심을 지나는 모든 힘 |
| 원통(C) | 2-계, 같은 축의 회전+병진 | 4-계 |
특히 구면 조인트 두 개로 양 끝이 잡힌 링크는 오직 자기 축선을 따르는 순수한 힘만 전달한다(피치 0 렌치 = 직선). 이 한 줄이 스튜어트 플랫폼의 정역학과 특이점 해석 전체를 굴리는 엔진이다.
스크류계의 기하는 그 자체로 연구 주제다. 2-계 스크류계는 일반적으로 실린드로이드(cylindroid)라 불리는 3차 선직면을 이루고, 3-계는 볼과 헌트가 분류표를 만들어 두었다. 코드에서는 이 모든 것이 6×n 행렬의 랭크와 영공간 계산으로 내려온다 — 상반 스크류계를 구하는 것은 의 영공간을 구하는 일이고, 여기서 는 위아래 3성분 블록을 맞바꾸는 치환행렬이다.
5. 지수곱 정식화 — 관절 하나 = 스크류 하나[편집]
직렬 기구의 순기구학을 스크류로 적으면 관절 축을 공간에 그대로 적어 놓고 지수를 곱하는 형태가 된다. 브로켓이 1984년에 정리한 지수곱(product of exponentials, PoE) 공식이다.
은 모든 관절각이 0일 때의 말단 자세, 는 그 영자세에서 본 번째 관절의 스크류 축이다. 회전관절이면 피치 0, 병진관절이면 피치 무한으로 적으면 된다. 각 지수는 리 군 문서의 로드리게스 공식을 로 확장한 닫힌 형태로 계산된다( 로 정규화했을 때).
데나비트-하르텐베르크 표기와 비교하면 장단이 분명하다. DH는 관절당 4개의 수만 쓰지만 좌표계 붙이는 규칙이 까다롭고 축이 평행하거나 교차하면 파라미터가 퇴화한다. PoE는 관절당 6개를 쓰지만 규칙이랄 것이 없고(“축 방향과 축 위의 점 하나를 적어라”) 퇴화가 없으며, 중간 링크 좌표계를 정의할 필요조차 없다. URDF가 관절마다 원점과 축을 직접 적는 것도 사실상 PoE 방식이다.2
6. 야코비안을 스크류 축으로 조립하기[편집]
PoE에서 야코비안이 거의 공짜로 떨어진다. 공간 야코비안의 번째 열은 앞선 관절들이 이미 움직여 놓은 뒤의 번째 관절 스크류 축이다.
즉 야코비안을 편미분으로 유도할 필요가 없다. 현재 자세에서 각 관절 축의 플뤼커 좌표를 6×n 행렬에 세로로 꽂으면 그게 야코비안이다. 기하학적 의미가 그대로 보이고, 손으로 검산할 수도 있으며, 수치미분이나 자동 미분에 기댈 필요가 없다. 이 행렬의 일반론은 자코비안 행렬, 그것으로 푸는 역기구학은 역운동학이 다룬다.
말단 좌표계 기준으로 적는 물체 야코비안 도 같은 방식이며 로 오간다. 어느 쪽을 쓸지는 취향이 아니라 목적의 문제다 — 힘 제어처럼 말단에 붙은 센서·툴 좌표계에서 생각하는 일에는 물체 야코비안이 편하고, 작업공간 전체를 고정 좌표계에서 보는 일에는 공간 야코비안이 편하다.
7. 특이점 — 랭크 결손을 스크류의 말로 읽기[편집]
특이점의 정의는 “야코비안이 랭크를 잃는 자세”이고, 스크류 언어로 옮기면 관절 축들이 이루는 스크류계의 차원이 떨어지는 자세다. 이 번역이 유용한 이유는 판별이 기하 문제로 바뀌기 때문이다.
- 개의 스크류가 종속이면, 그것들 전부에 상반적인 렌치가 존재한다. 그 렌치는 어떤 관절 토크로도 저항할 수 없다 — 말단을 그 방향으로 밀면 로봇이 그냥 밀린다. 반대로 그 렌치의 상반 방향으로는 말단을 움직일 수 없다.
- 대표적 6R 특이점이 전부 이 말로 깔끔하게 읽힌다. 팔을 다 편 자세에서는 세 축이 한 평면 위의 평행/공면 직선이 되어 랭크가 떨어지고, 손목 정렬(4·6축 축 일치)에서는 두 스크류가 같은 직선이 되어 문자 그대로 열이 겹친다.
- 병렬 기구에서는 문제가 뒤집힌다. 각 다리가 전달하는 렌치(대개 피치 0의 직선)들이 선형종속이 되는 자세에서, 액추에이터를 전부 잠갔는데도 그 렌치계에 상반적인 트위스트 방향으로 플랫폼이 움직인다. 직선 6개의 종속성 판정은 그라스만 직선기하로 분류되어 있고(그래스만 대수의 분해 가능한 2-벡터가 곧 직선이다), 메를레가 이 분류로 6-UPS 기구의 특이 자세를 전부 열거했다. 상세는 스튜어트 플랫폼.
한 가지 실무 경고. 6×n 야코비안의 조건수를 그냥 계산하면 안 된다. 위 3행은 각속도(1/초), 아래 3행은 선속도(길이/초)라 단위가 섞여 있어 값이 길이 단위 선택에 따라 바뀐다. 특성 길이로 규격화하거나 회전·병진 블록을 따로 평가해야 하며, 이 함정의 자세한 이야기는 기구학 문서에 있다. 특이점 판정(랭크가 0인가)은 단위와 무관하지만, “얼마나 특이점에 가까운가”라는 정도는 규격화 없이는 의미가 없다.
8. 사촌들 — 이중수와 듀얼 쿼터니언[편집]
스크류를 표현하는 또 하나의 유서 깊은 방법이 이중수(dual number) , 이다. 스크류를 이중벡터 로 적으면, 코텔니코프와 슈투디의 전이 원리(transference principle)에 따라 구면 삼각법의 공식에서 실수 각을 이중각으로 바꾸는 것만으로 공간 기구의 공식이 나온다. 실수부가 각도, 이중부가 두 축 사이의 공통법선 거리를 담기 때문이다.
이 발상의 현대적 후예가 듀얼 쿼터니언 이다. 사원수가 를 이중으로 덮듯 단위 듀얼 쿼터니언이 를 이중으로 덮고, 회전과 병진을 8개의 수로 한꺼번에 보간할 수 있어 스켈레탈 애니메이션의 듀얼 쿼터니언 스키닝에서 실제로 쓰인다. 선형 블렌드 스키닝의 관절 함몰(candy-wrapper) 아티팩트가 사라지는 그 기법이다.
9. 여담[편집]
- 볼이 이 이론을 만든 동기는 로봇이 아니었다. 그는 천문학자였고(아일랜드 왕실 천문관을 지냈다), 강체의 미소 변위와 그에 대한 구속을 일반적으로 다루는 순수 기하학적 문제로 접근했다. 백 년쯤 지나 로보틱스가 통째로 가져다 쓸 줄은 본인도 몰랐을 것이다.
- 스크류 이론은 20세기 중반 한 번 잊혔다가 1970~80년대에 부활했다. 부활의 계기가 병렬 기구와 로봇 손 — 다시 말해 구속이 복잡해서 자유도를 손으로 세다가 틀리는 물건들 — 의 등장이었다는 점이 이 이론의 성격을 잘 말해 준다. 직렬 6축 팔만 다루면 굳이 필요 없다.
- 왜 하필 “나사”인가에 대한 가장 짧은 답: 회전과 병진의 비()가 고정된 운동이 나사이고, 그 비가 0이면 경첩, 무한이면 서랍이며, 세상의 모든 강체 운동은 그 사이 어딘가다. 나사가 특수한 게 아니라 경첩과 서랍이 나사의 극한이다.3
- 이 이론을 배운 사람의 습관 하나 — 기구를 보면 조인트가 아니라 축선을 먼저 그린다. 축이 몇 개인지, 만나는지, 평행인지, 한 평면에 있는지만 보면 특이점의 위치가 대충 보이기 때문이다. 도면 위에 연필로 직선 여섯 개를 긋는 것이 6×6 행렬식을 푸는 것보다 빠를 때가 많다.
10. 관련 문서[편집]
- 기구학 · 역운동학 · 메커니즘 설계 · 경로 계획
- 스튜어트 플랫폼 · 다물체 동역학 · 강체 동역학
- 리 군 · 회전행렬 · 사원수 · 오일러각 · 듀얼 쿼터니언
- 자코비안 행렬 · 특이값 분해 · 조건수
- 가상일의 원리 · 케인 방법 · 일반화 좌표
- 사영기하학 · 그래스만 대수 · 스켈레탈 애니메이션
11. Footnotes[편집]
-
볼의 1900년판은 지금 읽어도 놀랍도록 현대적이지만, 표기가 완전히 다르고 벡터 대수가 정립되기 전이라 서술이 장황하다. 요즘 사람이 스크류 이론을 배우는 실제 경로는 볼이 아니라 로보틱스 교과서이고, 그 결과 “스크류”라는 단어는 알아도 실린드로이드는 못 들어 본 엔지니어가 대다수다. 부활한 이론이 원전 없이 유통되는 전형적인 사례. ↩
-
그렇다고 DH가 죽은 것은 아니다. 로봇 제조사 카탈로그의 파라미터 표는 여전히 DH로 적혀 있고, 표준판과 크레이그 변형판이 병용되는 혼란도 여전하다. 남의 로봇을 코드에 넣을 때 규약을 확인하지 않아 손목이 90도 돌아간 채로 시뮬레이션을 돌리는 일은 지금도 매주 어딘가에서 일어나고 있다. ↩
-
그래서 스크류 이론을 배운 뒤에 보면 “회전 조인트와 병진 조인트를 따로 코딩한” 예전 코드가 유난히 눈에 거슬린다. 피치 하나만 파라미터로 두면 분기 하나가 통째로 사라지는데, 그 사실을 모르면
if (joint.type == REVOLUTE)를 코드 전역에 뿌리게 된다. 리팩터링 동기로는 꽤 강력한 편. ↩