바리스타 로봇이나 치킨 튀기는 로봇과 같은 협동로봇은, 관절 개수가 많고 움직임 방향도 이리저리 범위가 넓습니다. 사용자 입장에서는 유용성이 크겠지만 개발자 입장에서는 제어가 어렵다고 봐야 합니다.
말단장치의 위치와 방위를 정하는 방법 중에 이동 좌표계(Moving Coordinate system)를 사용하기도 하는데, 이동 좌표계 중심으로 회전과 이동을 해 보겠습니다.
<과제>
로봇팔의 기저계(x, y, z = 0, 0, 0)에서 link의 길이와 관절의 회전이 연속적으로 일어나는 상황으로, 기저계의 좌표를 이동과 회전을 해서 말단장치까지 이동시켜 보겠습니다.
1. trans(n, o, a) = (2, 6, 5)
2. rot(a, 60)
3. trans(n, o, a) = (4, -3, 2)
4. rot(o, 70)
5. trans(n, o, a) = (3, -4, -2)
※ 고정 좌표계 x, y, z을 이동 좌표계에서는 n, o, a로 표기 하였음
이것을 머리 속으로 상상해서 말단장치의 위치와 방향이 어떠할 것이라고 추정하는 것은 거의 불가능해 보입니다. 알고리즘만 잘 반영하면 컴퓨터는 아주 쉽게 계산해 주니 걱정할 일도 아닙니다.
우선 기준(base) 좌표계부터 보겠습니다. 출발전에 기준 좌표계와 이동(moving) 좌표계를 일치 시켰습니다.
1. trans(n, o, a) = (2, 6, 5)
2. rot(a, 60)
3. trans(n, o, a) = (4, -3, 2)
4. rot(o, 70)
5. trans(n, o, a) = (3, -4, -2)
전체 이동 경로를 선으로 연결해 보겠습니다. 협동로봇의 기저부에서 말단장치까지의 배치로 봐도 될 듯 합니다.
이동과 회전을 몇 번 했더니, 기준 좌표계(0, 0, 0)에서 바라볼 때 이동 좌표계가 (9.9, 5.8, 3.4) 위치에 가 있네요.
기준 좌표계 중심으로 회전과 이동을 할때는 곱하는 순서를 역순으로 했지만, 이동 좌표계 중심으로 할때는 순서대로 곱하기 합니다.
1 trans(n, o, a) = (2, 6, 5)
2 rot(a, 60)
3 trans(n, o, a) = (4, -3, 2)
4 rot(o, 70)
5 trans(n, o, a) = (3, -4, -2)
trans(2, 6, 5) rot(a, 60) trans(4, -3, 2) rot(o, 70) trans(3, -4, -2)
곱하기는 행렬로 변환하여 곱하기 합니다.