같은 길도 시간을 달리 배정하면 다른 운동이다
경로는 어떤 configuration들을 어떤 순서로 지나는지 나타내는 기하 곡선이다. 시간 궤적은 각 시각에 어디에 있어야 하는지까지 정한다. Modern Robotics 저자 설명처럼 경로 q(s)에 시간 스케일 s(t)를 붙이면 q(s(t))라는 궤적을 얻는다. s는 0에서 1로 가는 무차원 진행 변수이며 초 단위 시각과 다르다.
그림 M17.06-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.
두 회전 관절의 시작 q_0=(0,0) rad, 끝 q_1=(1,0.4) rad를 주자. 변화량 Δq=q_1−q_0=(1,0.4) rad이고 기하 경로는 q(s)=q_0+Δq s다. 두 관절이 같은 s로 움직여 함께 목표에 도착한다. 이는 관절 공간의 직선이며 팔 끝점이 작업 공간에서 직선으로 움직인다는 뜻은 아니다. 기하적으로 충돌하지 않는지는 링크 전체와 모든 중간 configuration에서 별도 확인해야 한다.
같은 경로를 2 s와 3 s에 통과하면 위치 순서는 같지만 속도·가속도는 달라진다. 시간을 늘리는 것은 정적 기하 충돌을 없애지 못한다. 움직이는 장애물에서는 통과 시각도 중요하므로 기하 경로와 시간 배정의 분리가 언제 유효한지 확인한다. 이 예는 정적 환경에서 관절별 미분 제한만 계산하는 단계다.
시작과 끝에서 정지하는 cubic 스케일을 미분한다
총 기간을 T>0 s, 정규화한 시간을 u=t/T라고 하자. 0≤t≤T에서 s(t)=3u²−2u³를 사용하면 s(0)=0, s(T)=1이며 시작과 끝의 속도는 0이다. 저자 시간 스케일 설명의 cubic은 이런 네 끝 조건으로 정해진다. 각 관절 j의 속도와 가속도를 직접 미분하면 다음과 같다.
점 하나는 시간 미분을 뜻한다. q가 rad이므로 속도는 rad/s, 가속도는 rad/s²다. T=3 s에서 t=1.5 s는 u=0.5, s=0.5이므로 위치는 (0.5,0.2) rad다. 속도는 (0.5,0.2) rad/s이고 가속도는 (0,0) rad/s²다. 절반 위치에 왔다고 속도가 일정하다는 뜻은 아니다. 이 곡선의 속도는 시작 0에서 증가했다가 끝에서 다시 0이 된다.
6u−6u²는 u=0.5에서 최대 1.5이고 |6−12u|는 양 끝에서 최대 6이다. 따라서 각 관절의 구간 내 최대 속도와 최대 가속도 크기는 다음과 같다.
속도 0인 끝점에서도 가속도는 0이 아닐 수 있다. 정지 구간에 이어 붙이면 가속도가 불연속으로 바뀌므로 가속도의 시간 미분인 jerk 제한까지 만족한다고 볼 수 없다. 시작·끝 가속도를 0으로 정하는 quintic이나 다른 시간 스케일도 있지만 그 경우에는 그 식과 최대 미분값으로 다시 검사해야 한다. 이름이 부드럽다고 제한 검사를 생략하지 않는다.
관절마다 필요한 기간을 구해 가장 큰 값을 쓴다
합성 제한은 관절 1의 최대 속도 0.5 rad/s와 최대 가속도 1 rad/s², 관절 2는 0.4 rad/s와 0.8 rad/s²다. 양의 제한값을 v_j,max와 a_j,max라고 쓰면 위 cubic에서 필요한 공통 기간은 각 관절의 두 하한 이상이어야 한다.
관절 1의 속도 하한은 1.5×1/0.5=3 s, 가속도 하한은 √6≈2.449 s다. 관절 2는 속도 하한 1.5×0.4/0.4=1.5 s, 가속도 하한 √3≈1.732 s다. 네 값 중 최대는 3 s이므로 T=3 s는 제공한 속도·가속도 제한에 맞는 후보다. 두 관절에 따로 다른 완료 시각을 주면 원래의 공통 s 경로와 달라질 수 있다.
T=3 s에서 최대 속도는 0.5/0.2 rad/s, 최대 가속도는 약 0.6667/0.2667 rad/s²다. T=2 s에서는 관절 1의 속도 0.75와 가속도 1.5가 모두 제한을 넘는다. 관절 2만 통과한다고 전체 궤적을 승인할 수 없다. 이 기간 하한은 이 직선 경로와 cubic, 두 종류 제한 안에서의 결과다. 토크·접촉·관절 범위·jerk나 실제 추종 오차를 계산한 것이 아니며 모든 가능한 운동 중 시간 최적이라고도 할 수 없다.
메시지의 보간과 궤적 교체 계약도 확인한다
Jazzy Joint Trajectory Controller 공식 문서는 spline 모드에서 위치만 주면 linear, 위치와 속도를 주면 cubic, 위치·속도·가속도를 주면 quintic 보간을 구분한다. 위에서 cubic을 계산했다고 두 위치만 보내면 자동으로 같은 곡선이 되는 것은 아니다. 실제 입력 필드와 command interface, 보간 설정 및 생성된 샘플을 대조해야 한다. 이 활동에서는 메시지를 전송하지 않는다.
새 궤적으로 전환할 때 현재 로봇이 새 시작 상태에 있는지도 중요하다. 새 경로를 q_0=(0,0), 시작 속도 0으로 계산했는데 현재 관절이 (0.02,0) rad, 속도가 (0.1,0) rad/s라면 이전 가정을 그대로 재사용할 수 없다. 더 오래 실행한다고 시작 불일치가 없어지지는 않는다. 현재 상태에서 시작하는 유효한 연결과 필요한 위치·속도 연속성을 검토하고 제어기의 실제 교체 규칙을 확인한다.
같은 Jazzy 문서는 현재 교체 구현이 기존 궤적을 잊는다고 명시한다. 새 메시지 수락이 두 궤적의 자동 충돌 검사나 부드러운 blending을 보장한다고 쓰지 않는다. 로봇·태스크·지도 버전, 명령 순서와 적용 시각, 활성 궤적과 현재 상태가 같은 계약을 가리켜야 한다. 오래된 계산 결과나 다른 clock 세대의 명령도 구분한다.
재계획하는 동안에도 상태는 변할 수 있다
재계획은 관측과 목표 변경에 맞춰 경로 또는 궤적을 새로 만드는 일이다. 계산을 시작한 시점의 상태가 결과 적용 시점까지 그대로라는 보장은 없다. 별도의 합성 직선 이동에서 속도 v=0.4 m/s가 일정하고, 계산 시작 때 이미 관측이 0.05 s 오래되었으며 계산·적용까지 0.08 s가 더 걸린다고 하자. 관측 이후 적용까지 이동은 0.4×(0.05+0.08)=0.052 m다.
정적 장애물까지의 여유가 관측 시각에 0.12 m이고 로봇 형상은 이미 반영됐다고 준다. 적용 뒤 일정 감속 크기 a=0.8 m/s²로 정지한다고 추가 가정하면 감속 거리는 v²/(2a)=0.1 m다. 두 구간 합은 0.152 m로 관측 여유보다 0.032 m 크다. 이 단순 모델에서도 '계산이 끝날 때까지 기다렸다가 정지하면 된다'는 판정은 성립하지 않는다.
이는 실제 정지 보장이나 장치 정격이 아니다. 지연 동안 일정 속도, 적용 직후 일정 감속, 정적 장애물과 오차 없는 거리라는 제한된 모형이다. 실제에는 제어·구동 지연, 추정 오차와 마찰·사람의 이동 등이 더 있을 수 있다. 재계획 예산, 유효한 현재 상태와 중간 동작, 전환·정지 근거를 실행 계층에서 함께 다뤄야 한다. 기존 3.5 안전한 텔레오퍼레이션 루프와 6.5 End-to-End Pick & Place 배포로 연결하자. 아래 종이 계산은 제어기나 로봇 실증을 대신하지 않는다.