로봇공학기초

[로봇공학기초 / 2DOF] #6-1. Trajectory Planning (궤적계획)

jhpark0518 2025. 4. 7. 10:00

📌 Trajectory Planning (궤적 계획)이란?

이번 글에서는 2자유도 매니퓰레이터를 기준으로 Trajectory Planning(궤적 계획)의 개념을 살펴봅니다. 로봇의 움직임을 계획할 때는 출발점에서 목표점까지 단순히 도달하는 것이 전부가 아닙니다. 목적지에 얼마나 빠르고 정확하게 도착하는지 뿐 아니라, 중간 과정에서 로봇이 흔들림 없이, 안정적이고 부드럽게 움직이는지도 매우 중요합니다.

 

예를 들어, 로봇 팔이 특정 물체를 들어 올릴 때 갑자기 급가속하거나 급정지하면, 로봇 자체에 과부하가 걸리고 시스템이 손상될 가능성도 있습니다. 또한 주변의 물체와 충돌하거나, 손으로 잡고 있는 물체를 떨어뜨릴 수도 있습니다. 따라서 로봇의 관절 각도, 각속도, 각가속도를 적절히 제어하여 안정적이고 매끄러운 움직임을 만드는 것이 Trajectory Planning의 핵심 목표입니다.

 

이러한 목적을 달성하기 위해 실제로 로봇공학에서 널리 사용되는 대표적인 궤적 생성 방식은 Trapezoidal Velocity Profile(사다리꼴 속도 프로파일)Cubic Polynomial Trajectory(3차 다항식 궤적) 입니다.

 

📈 Trapezoidal Profile이란?

Trapezoidal Profile(사다리꼴 프로파일) 은 속도 곡선이 사다리꼴 모양을 띠도록 하는 가장 기본적인 궤적 생성 방법입니다. 이 방식은 움직임을 세 단계로 나누어 관리합니다.

  • 가속 단계: 로봇이 정지 상태에서 목표 속도까지 일정한 가속도로 속도를 증가시키는 단계입니다.
  • 등속 단계: 최대 목표 속도로 일정 시간 동안 움직이는 단계입니다.
  • 감속 단계: 목표 지점에 도달하기 전에 일정한 감속도로 다시 속도를 줄이는 단계입니다.

이 방법은 구현이 간단하고 직관적이지만, 가속도의 변화가 급격한 구간에서 움직임이 다소 부자연스러울 수 있다는 단점도 있습니다.

 

🔸기본 개념과 경계 조건 (Boundary Condition)

  • 처음 각도를 $\theta_{0}$​, 최종 목표 각도를 $\theta_{f}$​, 그리고 이 이동에 걸리는 총 시간을 $T$라고 할 때,$$D=θ_{f}-θ_{0}$$
  • 사다리꼴 프로파일에서는 총 시간 $T$가 다음처럼 나뉩니다.
    • 가속 시간 $t_{a}$​: 초기 속도에서 최대 속도까지 가속하는 데 걸리는 시간
    • 등속 시간 $t_{c}$ ​: 최대 속도로 일정하게 유지하는 시간
    • 감속 시간 $t_{a}$ ​: 최대 속도에서 다시 최종 속도까지 감속하는 시간 (가속과 같음)
    따라서 등속 시간은 다음과 같이 구할 수 있습니다.
    $$t_c = T - 2t_a$$​
  • 최대 속도 $\omega_{max}$​와 가속도 $\alpha$는 다음과 같이 표현됩니다
    $$\omega_{max} = \frac{D}{t_a + t_c},\quad \alpha = \frac{\omega_{max}}{t_a}$$
    ​​

🔸 사다리꼴 속도 프로파일의 수학적 표현 

이 프로파일을 수식으로 나타내면 다음과 같습니다.

각도 $\theta(t)$

$$\theta(t) =
\begin{cases}
\theta_0 + \frac{1}{2}\alpha t^2, & 0 \leq t < t_a \\[6pt]
\theta_0 + \frac{1}{2}\alpha t_a^2 + \omega_{max}(t - t_a), & t_a \leq t < t_a + t_c \\[6pt]
\theta_f - \frac{1}{2}\alpha(T - t)^2, & t_a + t_c \leq t \leq T
\end{cases}$$​

  • 처음에는 가속하면서 각도가 증가하고,
  • 중간에는 등속으로 각도가 일정하게 증가하며,
  • 마지막에는 감속하여 목표 각도에 정확히 도달합니다.

각속도 $\omega(t)$

$$\omega(t) =
\begin{cases}
\alpha t, & 0 \leq t < t_a \\[6pt]
\omega_{max}, & t_a \leq t < t_a + t_c \\[6pt]
\omega_{max} - \alpha(t - t_a - t_c), & t_a + t_c \leq t \leq T
\end{cases}$$​

  • 처음 가속 구간에서 선형적으로 속도가 증가하고,
  • 등속 구간에서는 속도가 최대값으로 유지되며,
  • 감속 구간에서는 다시 선형적으로 감소합니다.

각가속도 $\alpha(t)$

$$\alpha(t) =
\begin{cases}
\alpha, & 0 \leq t < t_a \\[6pt]
0, & t_a \leq t < t_a + t_c \\[6pt]
-\alpha, & t_a + t_c \leq t \leq T
\end{cases}$$​

  • 가속 구간에서 일정한 양의 가속도,
  • 등속 구간에서 가속도는 0,
  • 감속 구간에서 일정한 음의 가속도(감속)가 적용됩니다.

 

🔸 그래프로 보는 사다리꼴 속도 프로파일

위의 그림을 보면 명확히 확인할 수 있습니다.

  • 각도 그래프($\theta$): 시간에 따라 로봇의 각도가 부드럽게 목표값까지 이동합니다.
  • 각속도 그래프($\omega$): 각속도가 사다리꼴 형태를 명확히 보여줍니다. 처음과 끝에는 경사를 가지며 가운데는 일정한 속도를 유지합니다.
  • 각가속도 그래프($\alpha$): 가속도가 구간별로 +(가속), 0(등속), -(감속)으로 나타납니다.

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

import numpy as np
import matplotlib.pyplot as plt

T = 1.0
theta_s = 0
theta_f = np.pi / 2
t = np.linspace(0, T, 100)
ta_ratio = 0.2

ta = ta_ratio * T
tc = T - 2*ta
D = theta_f - theta_s
vmax = D / (ta + tc)
a = vmax / ta

theta = np.zeros_like(t)
omega = np.zeros_like(t)
alpha = np.zeros_like(t)

for i, ti in enumerate(t):
    if ti < ta:
        alpha[i] = a
        omega[i] = a * ti
        theta[i] = theta_s + 0.5 * a * ti**2
    elif ti < ta + tc:
        alpha[i] = 0
        omega[i] = vmax
        theta[i] = theta_s + 0.5 * a * ta**2 + vmax * (ti - ta)
    else:
        dt = ti - (ta + tc)
        alpha[i] = -a
        omega[i] = vmax - a * dt
        theta[i] = theta_f - 0.5 * a * (T - ti)**2

fig, axs = plt.subplots(3, 1, figsize=(8, 10), sharex=True)
axs[0].plot(t, theta, color='b')
axs[0].set_ylabel("θ (rad)")
axs[0].set_title("Trapezoidal Velocity Profile")
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].set_xlabel("Time (s)")
axs[2].grid()

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

🔧 실행 환경

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

📘 다음 편 예고

이번 글에서는 Trajectory Planning(궤적 계획) 기법 중 하나인 Trapezoidal Velocity Profile(사다리꼴 속도 프로파일) 을 중심으로, 로봇이 어떻게 매끄럽게 가속하고 감속하며 목표 지점까지 도달하는지를 수식과 그래프를 통해 살펴보았습니다.
다음 글에서는 또 다른 궤적 생성 방식인 Cubic Polynomial Trajectory(3차 다항식 궤적) 를 소개하며, 보다 부드럽고 연속적인 움직임을 위한 수학적 접근 방식을 함께 알아보겠습니다.