지난 포스트에서는 2차원 상에서의 2링크 기구학과 역기구학을 계산해보았다.
3차원 기구를 단순히 방정식으로 풀려면, 더 복잡하고 훨씬 긴 수식이 필요하고, 매우 비효율적이다.
실제 로봇팔 등에서 사용하는 계산에서는 방정식 대신에,
'Transformation Matrix (변환행렬)'을 사용한다.
그 수학적 증명을 천천히 따라가보자.
해당 내용을 이해하려면 먼저 선형대수학과 행렬에 대한 기본적인 이론적 기초가 필요하다.
모른다면 아래 내용을 참고하면 좋을 것이다.
선형대수학 참조
선형대수학의 본질 | 3Blue1Brown
공돌이의 수학정리 노트 - 선형대수 | 공돌이의 수학정리 노트
추천하는 로봇공학 강의
로봇제어공학 | 경희대학교 김동한 교수님
1. 3차원 공간에서 좌표계의 정의

표준적인 3차원 좌표계의 좌표축은 그림과 같이 x,y,z 로 이루어진다.
z 축의 방향은 x×y=z 로 정의된다.

공간 상에 여러개의 좌표계가 있고, A 좌표계, B 좌표계 등으로 정의를 한다.

이제 공간 상의 한 점 P를 A 좌표계, B 좌표계로 표현해볼 수 있다.
각각 AP=⎣⎢⎡ApxApyApz⎦⎥⎤
BP=⎣⎢⎡BpxBpyBpz⎦⎥⎤ 로 표현된다.
왼쪽 위 첨자가, 기준이 되는 좌표계이다.
2. 행렬의 회전
2차원

그림은 2차원에서, xA,yA 좌표축을 θ 만큼 회전시킨 xB,yB 좌표축이다.
x,y 축의 변환을 따로 계산할 수도 있겠지만, 행렬로 표현해보자.
이에 대한 답은 잘 알려져있다시피,
BAR=[cosθsinθ−sinθcosθ]
이를 유도해보자.
BAR=[AXB^AYB^]
X,Y는 원본 좌표계의 각 축을 A 에서 B로 회전시키는 열들이다. 각각 A 좌표계의 x축, y축을 회전시킨다. 또한 선형대수학의 관점에서 볼 때, 각 축의 회전 이후의 좌표라고도 볼 수 있다. 선형대수학의 새로운 관점 | 3Blue1Brown
BAR=[AXB^AYB^]=[XB^⋅XA^XB^⋅YA^YB^⋅XA^YB^⋅YA^]
예를 들어, 1열은 B 좌표계의 단위 x벡터 XB 를 A 좌표계의 단위벡터 XA^,YA^ 로 나타낸 값이다.
직관적으로는,
BAR=[B의X와A의X사이각도B의X와A의Y사이각도B의Y와A의X사이각도B의Y와A의Y사이각도]
3차원
3차원으로 확장하면,
BAR=⎣⎢⎡X^B⋅X^AX^B⋅Y^AX^B⋅Z^AY^B⋅X^AY^B⋅Y^AY^B⋅Z^AZ^B⋅X^AZ^B⋅Y^AZ^B⋅Z^A⎦⎥⎤
행렬을 보면, BART=ABR 이라는 사실을 눈치챌 수 있다. 이는 A의 단위벡터를 B에서 나타내느냐, B의 단위벡터를 A에서 나타내느냐의 차이기 때문이다. 서로의 행이 그대로 열로 사용될 수 있다.
공간상 임의의 점 P 를 A 좌표계에서 B 좌표계로 회전하면,
A 좌표계를 원점이동 없이 회전 -> AP=BAR×BP
역으로는, BP=BART×AP=ABR×AP
예시

그림은 검은색 좌표계인 A 좌표계를, x축 방향으로 30°만큼 회전시킨 좌표계 B이다.
BAR=⎣⎢⎡X^B⋅X^AX^B⋅Y^AX^B⋅Z^AY^B⋅X^AY^B⋅Y^AY^B⋅Z^AZ^B⋅X^AZ^B⋅Y^AZ^B⋅Z^A⎦⎥⎤
단위벡터끼리의 내적은 결국 벡터사이 각도의 코사인 값인 것을 생각하자
예를 들어 X^B⋅X^A 의 경우, 둘이 일치하므로, cos0=1 이다.
Z^B⋅Y^A 의 경우, 사이 각도가 120°이므로, cos(120°)=−sin(30°)=−0.5 이다.
BAR=⎣⎢⎡1000cos(30∘)sin(30∘)0−sin(30∘)cos(30∘)⎦⎥⎤=⎣⎢⎢⎡100023210−2123⎦⎥⎥⎤
이와 같이, 첫 번째 열은 XB와 A 의 단위 벡터 세 개 각각의 코사인 값이고, 두 번째 열은 YB 와 A 의 단위 벡터 세 개 각각의 코사인 값이다.
3. 좌표계의 평행이동
좌표계의 평행이동은 매우 단순하다.

좌표계 A의 원점을 (0,0,0) 로 하는 글로벌 좌표계가 있다.
좌표계 B의 원점은 글로벌 좌표계 기준 (1,2,3) 이다.
B 좌표계는 A 좌표계를 회전 없이 평행 이동한 결과이다.
아주 당연하게도, A 의 원점에서 B 의 원점까지의 벡터만큼 움직이면 된다.

이러한 벡터를 그림과 같이 정의할 수 있다.
A좌표계의 기준으로, B 좌표계의 원점까지의 벡터: APBORG=PBORG−PAORG

이제 공간상 임의의 점 P 에 대해 B 좌표계 기준 좌표값을 A 좌표계 기준 좌표값으로 나타낼 수 있다.
AP=APBORG+BP

이제 좌표계의 회전과 평행이동을 동시에 수식으로 나타낼 수 있다.
A 좌표계에서 B 좌표계의 원점으로 평행이동을 한 후, 좌표계가 틀어진 만큼 회전하면,
AP=BAR×BP+APBORG
A 좌표계 기준 P = B 좌표계 기준 P 를 A 좌표계와 평행하도록 회전 + A 원점에서 B 원점
위 수식을 행렬곱 하나로 나타낼 수 있다!
[a0b1][c1]=[ac+b1]
이 행렬 수식을 이용하면, 회전과 평행이동을 하나의 행렬, [a0b1] 로 나타낼 수 있다.
[AP1]=[BAR0APBORG1][BP1]=[BAR×BP+APBORG1]
이렇게 만든 [BAR0APBORG1] 형태의 행렬을 Transformation, 변환행렬이라 하고,
BAT 로 표기한다.
AP=BAT×BP
예시

(0,0,0) 을 원점으로 하는 좌표계 A,
(2,1,3) 을 원점으로 하는 좌표계 B 가 있다.
좌표계 B는 A 에서 z축 방향으로 30° 만큼 회전하였다.
BP=⎣⎢⎡111⎦⎥⎤
APBORG=⎣⎢⎡213⎦⎥⎤
BAR=⎣⎢⎡cos(30°)sin(30°)0−sin(30°)cos(30°)0001⎦⎥⎤
[AP1]=[BAR0APBORG1][BP1]
=⎣⎢⎢⎢⎡cos(30°)sin(30°)00−sin(30°)cos(30°)0000102131⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡1111⎦⎥⎥⎥⎤
=⎣⎢⎢⎢⎡2.3662.36641⎦⎥⎥⎥⎤,∴AP=⎣⎢⎡2.3662.3664⎦⎥⎤
5. 다중 링크의 정기구학
위에서 굳이 변환행렬의 형태로 행렬 하나로 정리한 이유는 다중 링크의 경우에서 계산을 매우 쉽게 하기 위해서이다.
좌표계를 연속적으로 연결할 경우, 단순히 변환행렬을 연속으로 곱해주면 된다.
A->B
AP=BAT×BP
A->B->C
AP=BAT×CBT×CP
2링크 변환행렬의 결과는 알아두면 좋다. 아래와 같다.
CAT=[BAR⋅CBR0BAR⋅BPCORG+APBORG1]
6. 역방향 계산
지금까지는 말단 좌표계의 좌표를 글로벌 좌표계로 나타내었다.
이번에는 글로벌 좌표계 기준 좌표를 말단 좌표계 기준으로 구해보자.
아래의 식으로부터,
AP=BAT×BP
다음 식을 유도할 수 있다.
BP=BAT−1×AP
이 때 변환행렬의 역행렬은 다음과 같다.
ABT=BAT−1=[BAR⊤0−BAR⊤⋅APBORG1]
정기구학 다중 링크의 경우,
AP=BAT×CBT×CP,
CBT−1×BAT−1×AP=CP
-> CP=BCT×ABT×AP,
이런 식으로 계산하면 된다.