728x90
반응형
13.4 역기구학
- 정기구학(forward kinematics)은 로봇 팔의 관절 각도를 입력으로 받아 말단 장치의 위치 및 방향을 결정한다.
- 이러한 작업의 역(逆)순을 역기구학(inverse kinematics; 이하 IK로 약칭)이라 한다.
- 즉, 목표로 하는 말단 장치의 위치 및 방향이 입력으로 주어지면, 이 목표를 달성하기 위해 필요한 각 관절의 각도를 계산한다.
- 로봇 분야에서 개발된 IK는 캐릭터 애니메이션에도 유용하게 사용된다.
- 로봇 분야에서는 미분 방정식을 풀어서 IK 해를 구하는데, 이는 복잡한 계산 과정을 거치고 연산 시간이 많이 든다는 단점이 있다.
- 실시간 응용 분야에서는 이를 대신하는 간단한 알고리즘이 널리 사용되는데, 이 절은 그 중 두 가지 기법을 소개하고 있다.
13.4.1 해석적 기법
- 물체의 상태를 정의하는 독립적인 변수의 개수를 자유도(degrees of freedom; DOF)라 부른다.
- (a)의 로봇 팔꿈치는 기구학적으로 경첩(hinge)과 같아서, 아래팔을 위아래로 움직이는 자유도만 가지고 있으므로, 1자유도 관절이라 한다.
- (b)의 어깨는 기구학적으로 볼 조인트(ball joint)와 같은데, 위 팔이 특정한 방향을 가리키려면 좌우로 한 번 움직이고 위아래로 한 번 움직이면 된다.
- 여기에 위팔은 스크루 드라이버처럼 회전될 수 있다. 결국 자유도는 하나 증가하여 3이 된다. 즉, 어깨는 3자유도 관절이다.
- IK를 위해 해석적(analytic) 기법을 사용할 수 있는데, 방향은 무시하고 위치만 고려했을때 (a)에서는 아래팔의 끝점 $T$가 $G$로 표기된 목표 위치에 닿을 수 있도록 위팔과 아래팔이 회전되어야 한다.
- IK는 이렇게 위팔과 아래팔을 회전시키는데 필요한 어깨와 팔꿈치의 관절각(joint angle)을 계산한다.
- 1자유도 관절인 팔꿈치의 관절각은 간단히 계산된다. 위팔과 아래팔의 길이는 각각 $l_u$와 $l_f$로 표기하고, $T$가 $G$에 닿았을 때의 팔꿈치 관절각을 ∂로 표기하고, 위치가 고정되어 있는 어깨와 목표 지점 $G$ 사이의 거리를 $l_g$로 표기하고 여기에 코사인 법칙을 적용하면 위와 같다.
- 여기서 어깨와 $T$를 연결하는 단위 벡터를 $v_1$, 어깨와 $G$를 연결하는 단위 벡터를 $v_2$라 하면, 회전각 ∂는 $v_1$과 $v_2$의 내적을 통해 계산된다.
- 여기에 회전축이 필요한데, 이는 $v_1$과 $v_2$에 모두 수직이어야 하므로 이들의 벡터곱을 통해 결정된다.
- 이렇게 구해진 회전축을 중심으로 위팔이 ∂만큼 회전하면 $T$는 $G$에 닿게 된다.
13.4.2 CCD 알고리즘
- 간단한 관절체의 경우 해석적 기법을 사용하면 빠르고 정확하게 IK를 해결할 수 있다. 하지만 많은 관절을 가진 복잡한 관절체에는 이것을 사용하기 어렵다.
- 대안으로 종종 CCD(cyclic coordinate descent)알고리즘이 채택된다. CCD는 말단 장치로부터 시작해 계층 구조를 거슬러 올라가면서, 말단 장치와 목표 지점 간 거리가 최소화되도록 관절각을 조정하고, 말단 장치와 목표 지점 간 거리가 임계값 이상 벌어지면, 말단 장치로부터 시작해 관절각을 조정하는 작업을 반복한다.
- CCD의 최종 목표는 $T$와 $G$를 같게 하는 것이다. CCD는 말단 장치인 손부터 움직이는데, T가 G를 가리키도록 회전시킨다. 여기서의 회전각과 회전축은 앞에서 나왔듯이 각각 내적과 벡터곱으로 구할 수가 있다.
- $T$와 $G$간 거리를 계산해서 그 거리가 충분히 가까우면 CCD 알고리즘은 종료되지만, 아니라면 (d)에서 보이는 것처럼 말단 장치인 손에서 시작해 동일한 작업을 반복하게 된다.
- 이러한 반복은 $T$와 $G$간 거리가 미리 정한 임계값 이하가 되거나 혹은 미리 설정한 최대 반복 횟수에 도달했을 때 중단된다.
- 게임에서는 자연스러운 캐릭터 애니메이션을 위해 다음 그림과 같이 IK를 자주 사용한다.
출처
한정현 - [OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문]을 보고 공부하고 정리한 내용입니다.
728x90
'공부 > Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문' 카테고리의 다른 글
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 14 - 노멀 매핑 [2/2] (0) | 2022.06.11 |
---|---|
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 14 - 노멀 매핑 [1/2] (0) | 2022.06.11 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [3/4] (0) | 2022.06.06 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [2/4] (0) | 2022.05.26 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [1/4] (0) | 2022.05.20 |