로봇공학기초

[로봇공학기초 / 2DOF] #6-3. Trajectory Planning (Quintic Polynomial Trajectory)

jhpark0518 2025. 4. 18. 10:00

📐 Quintic Polynomial Trajectory란? 

이번 글에서는 궤적 생성 방식 중 하나인 Quintic Polynomial Trajectory (5차 다항식 궤적) 에 대해 알아보겠습니다.
앞서 살펴본 Cubic Polynomial이 위치와 속도를 고려했다면, Quintic Polynomial은 위치, 속도, 가속도까지 모두 고려하는 궤적 생성 방법입니다.

이 방식은 로봇이 출발점에서 목표점까지 이동할 때, 시작과 끝의 위치, 속도, 가속도 조건을 동시에 만족하도록 설계되며,
특히 가속도까지 연속이 보장되어 매우 부드럽고 물리적으로 안정적인 움직임을 만들어냅니다.

 

🔸 Quintic Trajectory 의 특징

  • 위치 \( \theta \) , 속도  \( \dot{\theta} \) , 가속도  \( \ddot{\theta} \) 에 대한 초기 및 최종 조건을 직접 지정 가능
  • 가속도 곡선까지 연속이므로, 로봇이 움직이는 동안의 진동, 충격이 최소화됨
  • 고속 / 고정밀 작업에 적합한 궤적 생성 방식
  • 특히 Pick-and-Place, 고속 이동 후 정밀 정지, 산업용 로봇 라인 등에서 널리 사용됨

🔸 Quintic Trajectory 의 수학적 표현

5차 다항식 형태의 Quintic Trajectory는 다음과 같습니다:

$$
\theta(t) = a_0 + a_1 t + a_2 t^2 + a_3 t^3 + a_4 t^4 + a_5 t^5
$$

  • 속도 :

$$
\omega(t) = a_1 + 2a_2 t + 3a_3 t^2 + 4a_4 t^3 + 5a_5 t^4
$$

  • 가속도:

$$
\alpha(t) = 2a_2 + 6a_3 t + 12a_4 t^2 + 20a_5 t^3
$$

  • 저크 :

$$
j_{\theta}(t) = 6a_3 + 24a_4 t + 60a_5 t^2
$$

 

🔸 경계 조건 (Boundary Conditions)

  • 위치 :

$$
\theta(0) = \theta_0, \quad \theta(T) = \theta_f
$$

  • 속도:

$$
\dot{\theta}(0) = \omega_0, \quad \dot{\theta}(T) = \omega_f
$$

  • 가속도 :

$$
\ddot{\theta}(0) = \alpha_0, \quad \ddot{\theta}(T) = \alpha_f
$$

🔸 Quintic 계수 계산식

$$
\begin{aligned}
a_0 &= \theta_0 \\
a_1 &= \omega_0 \\
a_2 &= \frac{\alpha_0}{2} \\
a_3 &= \frac{20(\theta_f - \theta_0) - (8\omega_f + 12\omega_0)T + (\alpha_f - 3\alpha_0)T^2}{2T^3} \\
a_4 &= \frac{-30(\theta_f - \theta_0) + (14\omega_f + 16\omega_0)T - (2\alpha_f + 3\alpha_0)T^2}{2T^4} \\
a_5 &= \frac{12(\theta_f - \theta_0) - (6\omega_f + 6\omega_0)T + (\alpha_f - \alpha_0)T^2}{2T^5}
\end{aligned}
$$

 

🔸 그래프로 보는 Quintic Polynomial 속도 프로파일

상기 그래프를 통해 Quintic Polynomial Trajectory의 구조를 확인할 수 있습니다.

  • 각도 그래프($\theta$): 시작과 끝에서 속도가 0인 곡선 형태로, 위치가 부드럽게 증가합니다.
  • 각속도 그래프($\omega$): 속도가 시간에 따라 자연스럽게 증가하고, 중간에 최대값을 지나 감소합니다.
  • 각가속도 그래프($\alpha$): 가속도는 선형적으로 감소하는 경향을 보이며, 불연속 없이 연속적인 변화가 나타납니다.
  • 저크 그래프( $ j_{\theta} $): 가속도의 변화율인 저크 역시 시간에 따라 연속적으로 변하며, 급가속이나 급감속 없이 매우 부드러운 동작을 만들어냅니다.

    특히, 속도 그래프가 매끄럽게 오르내리는 형태를 통해 물리적으로 안정적인 움직임을 유도할 수 있음을 알 수 있습니다.

🔧Quintic Polynomial을 사용하는 이유

  • 가속도까지 연속이 보장되어, 고속 동작에서의 진동 억제에 효과적
  • 로봇 말단이 정밀한 위치에 멈추는 작업에 최적화
  • 고속 가공, 핸들링, Pick & Place 등 정밀 공정에 활용 가능
  • Cubic보다 수학적 계산은 복잡하지만, 물리적 안정성과 품질이 훨씬 우수

 

💻 아래는 그래프를 그릴 때 사용한 Python 코드입니다.

import numpy as np
import matplotlib.pyplot as plt

# 시간 및 경계조건
T = 1.0
t = np.linspace(0, T, 100)
theta0 = 0
thetaf = np.pi / 2
omega0 = 0
omegaf = 0
alpha0 = 0
alphaf = 0

# Quintic 계수 계산
a0 = theta0
a1 = omega0
a2 = alpha0 / 2
a3 = (20*(thetaf - theta0) - (8*omegaf + 12*omega0)*T + (alphaf - 3*alpha0)*T**2) / (2*T**3)
a4 = (-30*(thetaf - theta0) + (14*omegaf + 16*omega0)*T - (2*alphaf + 3*alpha0)*T**2) / (2*T**4)
a5 = (12*(thetaf - theta0) - (6*omegaf + 6*omega0)*T + (alphaf - alpha0)*T**2) / (2*T**5)

# 궤적 계산
theta = a0 + a1*t + a2*t**2 + a3*t**3 + a4*t**4 + a5*t**5
omega = a1 + 2*a2*t + 3*a3*t**2 + 4*a4*t**3 + 5*a5*t**4
alpha = 2*a2 + 6*a3*t + 12*a4*t**2 + 20*a5*t**3
jerk = 6*a3 + 24*a4*t + 60*a5*t**2

# 그래프 시각화
fig, axs = plt.subplots(4, 1, figsize=(8, 12), sharex=True)
axs[0].plot(t, theta, color='b')
axs[0].set_ylabel("θ (rad)")
axs[0].set_title("Quintic Polynomial Interpolation")
axs[0].grid()

axs[1].plot(t, omega, color='g')
axs[1].set_ylabel("ω (rad/s)")
axs[1].grid()

axs[2].plot(t, alpha, color='r')
axs[2].set_ylabel("α (rad/s²)")
axs[2].grid()

axs[3].plot(t, jerk, color='m')
axs[3].set_ylabel("Jerk (rad/s³)")
axs[3].set_xlabel("Time (s)")
axs[3].grid()


plt.tight_layout()
plt.savefig("quintic_polynomial_interpolation.png", dpi=300)
plt.show()

🔧 실행 환경

  • Python 3.8 이상
  • matplotlib
  • numpy
  • Jupyter Notebook (추천)

📘 다음 편 예고

다음 글에서는 궤적 생성 이후, 로봇이 실제로 어떻게 움직이는지를 설명하는 핵심 개념인 로봇 동역학(Robot Dynamics)에 대해 알아보겠습니다. 질량과 관성, 중력과 같은 물리적 요소가 로봇의 운동에 어떻게 작용하는지 살펴보고, 이를 수식적으로 표현하는 Lagrangian 접근법을 통해 2자유도 로봇의 동역학 모델을 구성하는 방법을 소개할 예정입니다.