역기구학

위치(Position)와 좌표계(Coordinate System)

로봇의 움직임에 대한 기구학적 이해의 출발점은 로봇을 구성하는 각 부분의 위치를 파악하는 것에서부터 비롯됩니다. 이를 위해서는 먼저 원점(Origin)이 되는 좌표를 결정하고, 거기에서부터 어느 정도의 위치에 있는지를 변위로 표시해야 합니다.

뷰(View)상에서의 좌표축과 원점은 아래와 같이 나타나며 격자의 단위는 20mm입니다.
Origin은 X, Y, Z의 좌표가 (0, 0, 0)임을 의미합니다.

poseutility_vieworigin.png

 

순기구학(Kinematics)과 역기구학(Inverse Kinematics)

로봇 관절의 각도나 동작으로부터 끝점의 위치나 동작을 구하는 것을 순기구학이라 합니다. 즉, 순기구학은 각 관절의 값이 정해지면 끝점의 위치를 어떻게 구할 것인가 하는 것입니다.

간단한 예로 아래와 같이 평면에서 2개의 관절을 갖는 매니퓰레이터를 생각해 봤을 때, 각 관절의 값이 정해져 있는 경우 그 끝점의 좌표 (x, y)를 구하는 것을 순기구학이라 하며, 순기구학의 해는 오직 하나만 존재합니다.

poseutility_ik_kinematics.png

 

반대로 끝점의 위치나 동작으로부터 각 관절의 위치나 각도를 구하는 것을 역기구학이라 합니다.

역시 위에서와 같이 평면 2링크 매니퓰레이터를 생각해 봤을 때, 끝점의 좌표 (x, y) 가 정해져 있는 경우 각 관절의 값은 아래 그림과 같이 2 가지 해가 존재합니다.

poseutility_ik_inversekinematics.png

역기구학에서는 경우에 따라 좌표 (x, y) 가 끝점이 다다를 수 없는 거리에 있거나, 관절 각도 제한에 의해 해가 존재하지 않을 수도 있으며, 더 많은 관절을 사용할 경우 무수히 많은 해가 존재할 수도 있습니다.

 

끝점(End Point) 제어

포즈 유틸리티의 역기구학 기능은 초기 자세에서 정해진 끝점을 어느 방향으로 얼마나 옮길 것인가를 선택하면 역기구학을 이용하여 각 관절의 값을 계산하여 자동으로 설정된 값 만큼 끝점을 이동시켜 주는 기능입니다.

이 기능은 역기구학 연산을 수행하는 모듈이 있어야 합니다. 현재 역기구학 연산을 지원하는 로봇은 다음과 같습니다.

본 주제에 대한 설명은 바이올로이드 프리미엄 휴머노이드 A타입을 기준으로 진행됩니다.

 

끝점 선택

poseutility_ik_selectendpoint.png

 

끝점 초기화

끝점의 위치를 초기화시킵니다.

 

끝점 움직이기

3D 공간에서 끝점은 6개의 파라미터로 제어가 가능합니다. 로봇의 구조에 따라 6개의 파라미터가 모두 나오지 않는 경우도 있습니다.
값을 바꾸기 위해서는 해당 파라미터를 선택한 후, 다음과 같은 방법을 사용합니다.

poseutility_ik_descrip.png

 각 파라미터는 최소 값과 최대 값이 있어서 그 범위에서만 변경이 가능합니다.
역기구학 연산은 때때로 수학적으로 결과를 알 수 없는 경우가 발생하며, 이를 해(Solution)가 없거나 무수히 많다라고 표현합니다. 이로인해 파라미터 값이 범위 안에 있는데도 불구하고 변경되지 않는 경우가 발생하는데, 이런 경우에는 다른 파라미터 값을 바꾸면 해결이 됩니다.
(예를 들어, 다리를 끝까지 펴고 있는 경우(Z가 0)에는 X 혹은 Y파라미터가 변경되지 않습니다.)

 

결과 적용

스텝의 포즈가 선택된 상태에서는 데이터 상의 포즈값이 바뀌고, 로봇의 포즈가 선택된 상태에서는 로봇의 포즈값이 바뀝니다.