개요

직렬형 로봇은 여러 링크와 조인트가 직렬로 연결되어 있는 로봇 구조를 의미한다. 각 링크는 하나의 조인트를 통해 이전 링크와 연결되며, 이는 최종적으로 원하는 작업 공간에서 로봇의 엔드 이펙터를 제어할 수 있게 한다. 직렬형 로봇 운동학에서는 링크와 조인트의 운동을 통해 엔드 이펙터의 위치와 방향을 결정하는 방법을 다룬다. 직렬형 로봇의 운동학은 주로 정운동학(Forward Kinematics)과 역운동학(Inverse Kinematics)으로 나뉜다.

정운동학 (Forward Kinematics)

정운동학에서는 각 조인트의 위치와 각도를 기반으로 엔드 이펙터의 위치와 방향을 계산한다. 직렬형 로봇에서 각 조인트의 회전이나 이동은 각 링크를 차례로 움직이기 때문에, 정운동학은 각 조인트의 변위를 순차적으로 적용하여 최종적인 위치를 구하는 과정이다.

DH 파라미터(Denavit-Hartenberg Parameters)

정운동학에서 가장 많이 사용되는 방식은 DH 파라미터를 이용한 방법이다. DH 파라미터는 링크 간의 상대적인 위치와 방향을 나타내는 4개의 변수를 사용하여 로봇의 각 링크 간의 관계를 정의한다. 이 변수들은 다음과 같다.

  1. \theta_i: 링크 i의 회전 각도
  2. d_i: 링크 i의 축을 따라 이동한 거리
  3. a_i: 링크 i의 길이
  4. \alpha_i: 링크 i의 축과 링크 i-1의 축 사이의 각도

이 변수들은 다음과 같은 변환 행렬을 통해 링크 간의 관계를 정의한다.

\mathbf{T}_i^{i-1} = \begin{bmatrix} \cos\theta_i & -\sin\theta_i \cos\alpha_i & \sin\theta_i \sin\alpha_i & a_i \cos\theta_i \\ \sin\theta_i & \cos\theta_i \cos\alpha_i & -\cos\theta_i \sin\alpha_i & a_i \sin\theta_i \\ 0 & \sin\alpha_i & \cos\alpha_i & d_i \\ 0 & 0 & 0 & 1 \end{bmatrix}

이 행렬은 링크 i-1에서 링크 i로의 변환을 나타내며, 이를 차례로 곱해 나가면 엔드 이펙터의 위치를 얻을 수 있다. 즉, 로봇의 엔드 이펙터 좌표는 다음과 같이 계산된다.

\mathbf{T}_{0}^{n} = \mathbf{T}_0^1 \mathbf{T}_1^2 \dots \mathbf{T}_{n-1}^{n}

이 때, \mathbf{T}_{0}^{n}은 기준 좌표계에서 엔드 이펙터의 위치와 방향을 나타내는 변환 행렬이다.

링크 변환 행렬

각 링크 간의 변환은 위의 DH 파라미터를 이용한 변환 행렬을 통해 표현된다. 예를 들어, 3-DOF 로봇의 경우 다음과 같이 각 링크의 변환 행렬을 정의할 수 있다.

링크 1에서 링크 2로의 변환

\mathbf{T}_1^2 = \begin{bmatrix} \cos\theta_2 & -\sin\theta_2 \cos\alpha_2 & \sin\theta_2 \sin\alpha_2 & a_2 \cos\theta_2 \\ \sin\theta_2 & \cos\theta_2 \cos\alpha_2 & -\cos\theta_2 \sin\alpha_2 & a_2 \sin\theta_2 \\ 0 & \sin\alpha_2 & \cos\alpha_2 & d_2 \\ 0 & 0 & 0 & 1 \end{bmatrix}

링크 2에서 링크 3으로의 변환

\mathbf{T}_2^3 = \begin{bmatrix} \cos\theta_3 & -\sin\theta_3 \cos\alpha_3 & \sin\theta_3 \sin\alpha_3 & a_3 \cos\theta_3 \\ \sin\theta_3 & \cos\theta_3 \cos\alpha_3 & -\cos\theta_3 \sin\alpha_3 & a_3 \sin\theta_3 \\ 0 & \sin\alpha_3 & \cos\alpha_3 & d_3 \\ 0 & 0 & 0 & 1 \end{bmatrix}

각 링크의 변환 행렬을 곱하여 최종적인 엔드 이펙터의 위치와 방향을 구할 수 있다.

역운동학 (Inverse Kinematics)

역운동학에서는 엔드 이펙터의 목표 위치와 방향이 주어졌을 때, 이를 달성하기 위해 각 조인트가 어떻게 움직여야 하는지를 계산한다. 이는 정운동학에 비해 훨씬 복잡한 문제로, 해가 다수 존재할 수 있고, 때로는 해가 존재하지 않을 수도 있다. 직렬형 로봇의 역운동학을 풀기 위해 일반적으로 수학적 방법, 기하학적 방법, 그리고 수치적 방법이 사용된다.

기하학적 접근

기하학적 방법은 로봇의 구조와 회전 및 이동 관계를 기하학적으로 분석하여 각 조인트 변수를 도출하는 방식이다. 예를 들어, 2D 평면에서 직선 로봇의 역운동학은 삼각형의 내각과 변의 길이를 이용하여 해를 구할 수 있다.

로봇의 엔드 이펙터가 (x, y)에 위치할 때, 두 링크의 길이가 l_1l_2인 2-DOF 로봇의 역운동학은 다음과 같이 표현된다.

r = \sqrt{x^2 + y^2}
\theta_2 = \cos^{-1} \left(\frac{r^2 - l_1^2 - l_2^2}{2 l_1 l_2}\right)
\theta_1 = \tan^{-1}\left(\frac{y}{x}\right) - \tan^{-1}\left(\frac{l_2 \sin \theta_2}{l_1 + l_2 \cos \theta_2}\right)

이 방법은 로봇이 평면에서 움직이는 경우에 적합하며, 로봇이 3차원에서 움직이는 경우 더 복잡한 기하학적 분석이 필요하다.

수치적 방법

3D에서 복잡한 로봇의 경우, 수치적 방법을 사용하여 역운동학을 해결하는 것이 일반적이다. 이러한 방법은 반복적인 수치 해석 기법을 통해 목표 위치에 수렴하는 각도를 찾아내는 방식이다. 대표적인 수치적 방법은 다음과 같다.

야코비 행렬(Jacobian Matrix)

야코비 행렬은 조인트 공간에서의 변화와 작업 공간에서의 변화를 연결하는 중요한 수단이다. 로봇의 조인트 속도 \dot{\mathbf{q}}와 엔드 이펙터 속도 \dot{\mathbf{x}} 사이의 관계는 다음과 같이 표현된다.

\dot{\mathbf{x}} = \mathbf{J}(\mathbf{q}) \dot{\mathbf{q}}

여기서 \mathbf{J}(\mathbf{q})는 로봇의 야코비 행렬이다. 야코비 행렬은 엔드 이펙터의 위치와 각도가 조인트 변수에 대해 어떻게 변화하는지를 나타내는 함수로, 다음과 같이 정의된다.

\mathbf{J}(\mathbf{q}) = \begin{bmatrix} \frac{\partial x}{\partial q_1} & \frac{\partial x}{\partial q_2} & \dots & \frac{\partial x}{\partial q_n} \\ \frac{\partial y}{\partial q_1} & \frac{\partial y}{\partial q_2} & \dots & \frac{\partial y}{\partial q_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial \theta}{\partial q_1} & \frac{\partial \theta}{\partial q_2} & \dots & \frac{\partial \theta}{\partial q_n} \end{bmatrix}

이를 이용해 역운동학에서 목표 위치를 달성하기 위해 각 조인트가 어떻게 움직여야 하는지 수치적으로 계산할 수 있다.

야코비 행렬을 이용한 역운동학 해법

야코비 행렬을 사용하여 역운동학 문제를 풀기 위해서는 야코비 행렬의 역행렬을 구하여 각 조인트 변화를 계산할 수 있다. 이때 야코비 행렬이 정방행렬일 경우에만 직접적으로 역행렬을 사용할 수 있으며, 야코비 행렬이 정방행렬이 아닐 경우에는 의사역행렬(pseudo-inverse)을 사용하여 해결한다.

야코비 행렬의 역행렬

야코비 행렬이 정방행렬인 경우, 역운동학은 다음과 같이 표현된다.

\dot{\mathbf{q}} = \mathbf{J}^{-1}(\mathbf{q}) \dot{\mathbf{x}}

여기서 \mathbf{J}^{-1}(\mathbf{q})는 야코비 행렬의 역행렬을 의미하며, 이를 통해 엔드 이펙터의 속도 \dot{\mathbf{x}}를 주었을 때 조인트의 속도 \dot{\mathbf{q}}를 구할 수 있다. 이를 적분하면 각 조인트의 위치를 계산할 수 있다.

야코비 행렬의 의사역행렬 (Pseudo-Inverse)

대부분의 경우 야코비 행렬은 정방행렬이 아니므로, 이를 해결하기 위해 의사역행렬을 사용한다. 의사역행렬은 다음과 같이 정의된다.

\mathbf{J}^{+} = (\mathbf{J}^{T} \mathbf{J})^{-1} \mathbf{J}^{T}

이를 이용하여 역운동학 문제를 다음과 같이 해결할 수 있다.

\dot{\mathbf{q}} = \mathbf{J}^{+} \dot{\mathbf{x}}

반복적 역운동학

야코비 행렬을 이용한 역운동학은 수렴하지 않을 수도 있기 때문에 반복적 방법을 사용하여 수렴할 때까지 조인트 변수를 업데이트한다. 목표 위치와 현재 위치의 오차를 기반으로 야코비 행렬을 이용해 각 조인트 변화를 계산하며, 각 반복마다 다음과 같은 과정을 거친다.

  1. 현재 엔드 이펙터의 위치 \mathbf{x}_\text{current}와 목표 위치 \mathbf{x}_\text{target} 사이의 오차를 계산한다.
\Delta \mathbf{x} = \mathbf{x}_\text{target} - \mathbf{x}_\text{current}
  1. 야코비 행렬 또는 의사역행렬을 사용하여 각 조인트의 변화를 계산한다.
\Delta \mathbf{q} = \mathbf{J}^{+} \Delta \mathbf{x}
  1. 각 조인트 변수를 업데이트한다.
\mathbf{q}_{\text{new}} = \mathbf{q}_{\text{old}} + \Delta \mathbf{q}

이 과정을 반복하여 목표 위치에 수렴할 때까지 각 조인트 변수를 수정한다.

작업 공간의 제한

로봇의 물리적 한계 또는 작업 공간의 제한으로 인해 역운동학 문제의 해가 존재하지 않을 수 있다. 예를 들어, 로봇의 엔드 이펙터가 작업 공간의 경계를 넘어서거나 로봇이 구조적으로 목표 위치를 달성할 수 없는 경우이다. 이러한 경우 해가 존재하지 않으므로, 역운동학 문제는 적절한 작업 공간 내에서만 해결 가능한다.

직렬형 로봇의 특성

직렬형 로봇은 각 링크와 조인트가 직렬로 연결되어 있기 때문에 엔드 이펙터의 정확한 위치를 제어하는 데 어려움이 있을 수 있다. 특히 각 조인트의 작은 오차가 누적되면서 엔드 이펙터의 오차가 커질 수 있다. 이러한 이유로 직렬형 로봇은 높은 정확도와 정밀도를 요구하는 작업에 적합하지 않을 수 있으며, 로봇의 운동학적 구조가 복잡해질수록 이러한 문제는 더욱 심화된다.