About Trajectory Tracking ( 궤적 추종 )

공부많이된다·2025년 12월 16일

Trajectory Tracking

목록 보기
1/3

✈️ L1 Nonlinear Guidance Logic로 보는 Trajectory Tracking 완전 정리

본 글은 MIT LIDS에서 제안한 비선형 유도(Guidance) 로직을 기반으로
Trajectory Tracking(궤적 추종) 문제를 “왜 기존 PD가 곡선에서 약한지 → 왜 L1이 강한지”의 흐름으로 정리한다.
원문: A New Nonlinear Guidance Logic for Trajectory Tracking (Park, Deyst, How). fileciteturn0file0L1-L22

⚠️ Velog 수식 렌더링 깨짐 방지: 본 문서는 모든 수식을 $$ ... $$ 로 통일했다.
(Velog에서 \[ \] 또는 \\[ 같은 형태가 깨지는 경우가 있어 안전하게 처리)


0) 이 글에서 다루는 것

  • Trajectory Tracking에서 흔히 쓰는 Outer-loop guidance 관점
  • Park/Deyst/How 논문이 제안한 L1 Guidance Logic:
    • 직선에서는 PD처럼 동작
    • 곡선에서는 anticipation(선행) 성질로 타이트 추종
    • 풍속(바람)으로 인한 속도 변화에 자동 적응 fileciteturn0file0L34-L45
  • 선형화 분석(직선/비직선/원 궤적), 시뮬레이션 비교, 비행시험, Lyapunov 안정성(부록)

1) 문제 배경: Trajectory Tracking의 두 가지 설계 철학

논문은 trajectory tracking을 크게 두 방식으로 나눈다. fileciteturn0file0L34-L41

1.1 분리 설계(Outer guidance + Inner control)

  • Outer loop(유도): 경로 오차로부터 가속도/뱅크각 명령 생성
  • Inner loop(제어): 가속도/뱅크각 명령을 실제 동역학으로 따라가게 만듦
  • 실제 항공/로봇 시스템에서는 이 방식이 흔함(단순·검증 용이) fileciteturn0file0L34-L45

1.2 통합 설계(Modern control)

  • MPC, differential flatness, NN adaptive control 등 통합 설계도 가능하지만 구현/검증/계산비용 이슈 fileciteturn0file0L34-L41

이 논문은 분리 설계를 택하되, outer guidance를 “곡선에서 더 잘” 만들자는 목표다.


2) 기존 Linear PD 방식이 곡선에서 약한 이유

일반적인 outer loop는 cross-track error(횡방향 오차) (d)에 대해 PD를 건다:

acmdkpd+kdd˙a_{cmd} \approx k_p d + k_d \dot d

직선 경로에서는 꽤 좋지만, 곡선 경로(특히 원 궤적처럼 지속적 곡률)에서는

  • 위상 지연(phase lag)로 인해 경로를 “뒤늦게” 따라감
  • 특정 상황에서는 정상상태 오차가 생기며, 이를 줄이려면 적분을 추가(PID)해야 하는데
    • 적분은 과도응답/초기 추종을 더 나쁘게 만들 수 있음 fileciteturn0file0L237-L264

논문이 보여주는 핵심:
PD/PID는 ‘현재 오차’에만 반응하는 피드백이라 곡선에서 근본 한계가 드러난다.


3) L1 Guidance Logic: “미래 경로를 바라보게” 만드는 기하학적 유도

3.1 정의(Notation)

논문에서 쓰는 핵심 기호는 다음과 같다. fileciteturn0file0L18-L33

  • (V): 차량 속도(ground speed를 inertial speed 대용으로 사용) fileciteturn0file0L272-L279
  • (L_1): 차량에서 경로를 따라 앞쪽으로 떨어진 reference point까지의 거리
  • ( \eta ): 현재 속도 벡터 (V)에서 (L_1) 선분(차량→reference point)까지의 각도(시계방향 +) fileciteturn0file0L18-L23
  • (a_{s,cmd}): 속도 방향에 수직(횡방향) 가속도 명령 fileciteturn0file0L18-L23

3.2 Reference Point 선택

  • desired path 위에서 차량 기준으로 앞쪽 (L_1) 만큼 떨어진 점을 잡는다(look-ahead point). fileciteturn0file0L70-L78

🖼️ Fig1(논문 p2): 차량 위치에서 경로 위 reference point로 향하는 선 (L_1)와 각도 (\eta), 그리고 횡가속도 명령이 표시됨. fileciteturn0file0L70-L88

3.3 Guidance Law(핵심 수식)

횡가속도 명령:

as,cmd=2V2L1sinηa_{s,cmd} = \frac{2V^2}{L_1}\sin\eta

논문 원식 Eq.(1). fileciteturn0file0L79-L88


4) 이 수식이 “기하학적으로” 맞는 이유(순간 원호 추종)

논문은 매우 중요한 해석을 준다. fileciteturn0file0L90-L112

reference point, 차량 위치, 그리고 차량 속도 접선을 만족하는 순간 원호를 생각하면:

L1=2RsinηL_1 = 2R\sin\eta

따라서 필요한 구심가속도는

V2R=2V2L1sinη=as,cmd\frac{V^2}{R} = \frac{2V^2}{L_1}\sin\eta = a_{s,cmd}

즉, L1 guidance는 매 순간

  • “지금 이 geometry면 이런 반지름 원을 따라가야 한다”를 만들어내고
  • 그 원을 정확히 따라가는 구심가속도를 계산해 준다. fileciteturn0file0L90-L112

👉 직관: 차량은 자신의 속도 방향을 (L_1) 선분 방향으로 정렬하도록 회전한다. fileciteturn0file0L90-L104


5) Discrete 관점에서 보는 “부드러운 수렴”

논문은 시간 이산화 관점으로, 한 스텝 동안 속도 방향이 어떻게 바뀌는지 도식화한다. fileciteturn0file0L116-L137

  • reference point가 속도 방향의 오른쪽에 있으면 (a_{s,cmd})가 오른쪽(시계방향 회전)을 명령
  • 결과적으로 속도 방향이 점점 경로 접선에 맞춰짐

🖼️ Fig2, Fig3(논문 p3): 한 타임스텝 변화와 다수 스텝 누적을 보여주며, 어느 지점에서 가속도 부호가 바뀌면서 매끄럽게 경로로 수렴. fileciteturn0file0L116-L147


6) Proportional Navigation(PN)과의 관계

논문은 reference point를 “가상의 타겟”으로 보면 PN과 닮았다고 설명한다. fileciteturn0file0L149-L189

PN의 대표 형태(LOS rate 기반):

aLOS=N0Vcλ˙a_{\perp LOS} = N_0 V_c \dot{\lambda}

L1 guidance는 특정 가정(타겟이 stationary로 보인다고 가정) 아래에서
navigation constant (N_0 = 2)인 PN과 동치 형태가 됨을 보인다. fileciteturn0file0L149-L189

단, 결정적 차이:

  • 실제로 reference point는 경로를 따라 이동하는 점
  • L1을 고정하면 closing speed가 0에 가깝기 때문에 PN과 완전히 동일한 상황은 아님 fileciteturn0file0L183-L189

7) 선형화 분석: “직선에서는 PD”가 정확히 증명됨

논문은 세 가지 케이스에 대해 분석한다. fileciteturn0file0L191-L207

  • Case 1: 직선
  • Case 2: 직선에 작은 곡선 섭동(perturbed non-straight)
  • Case 3: 원 궤적

7.1 Case 1 — 직선 추종: PD 형태 도출 (Eq.3~Eq.4)

작은 각도에서

sinηη=η1+η2\sin\eta \approx \eta = \eta_1+\eta_2

여기서 도식(Fig5)에 의해

η1dL1,η2d˙V\eta_1 \approx \frac{d}{L_1}, \quad \eta_2 \approx \frac{\dot d}{V}

따라서

as,cmd=2V2L1sinη2V2L1(dL1+d˙V)=2VL1d˙+2V2L12da_{s,cmd} = \frac{2V^2}{L_1}\sin\eta \approx \frac{2V^2}{L_1}\left(\frac{d}{L_1}+\frac{\dot d}{V}\right) = \frac{2V}{L_1}\dot d + \frac{2V^2}{L_1^2}d

논문 Eq.(3). fileciteturn0file0L210-L229

✅ 결론

  • 자연스럽게 PD 제어기가 된다(횡오차 (d)에 대한 P+D). fileciteturn0file0L210-L229
  • (L_1/V)가 사실상 시간상수(대역폭)를 결정
  • 더 단순화하면 2차 시스템:
d¨+2ζωnd˙+ωn2d=0\ddot d + 2\zeta\omega_n \dot d + \omega_n^2 d = 0

여기서

ζ=120.707,ωn=2VL1\zeta = \frac{1}{\sqrt{2}}\approx 0.707,\quad \omega_n = \frac{\sqrt{2}V}{L_1}

논문 Eq.(4). fileciteturn0file0L230-L236

👉 L1 선택이 곧 제어 대역폭/응답속도를 고르는 것


8) Case 2 — 곡선(섭동) 경로에서의 핵심: “Reference point 입력” + “위상 선행”

논문 Fig6 상황: 원하는 경로가 nominal 직선에서 약간 휘어졌다고 하자. fileciteturn0file0L244-L256

이때 선형화하면(논문 Eq.5):

d¨+2VL1d˙+2V2L12d=2V2L12dref.pt\ddot d + \frac{2V}{L_1}\dot d + \frac{2V^2}{L_1^2} d = \frac{2V^2}{L_1^2} d_{ref.pt}^*

여기서 입력은 “현재 위치에서의 desired path”가 아니라
앞쪽 reference point의 lateral position (d_{ref.pt}^*)이다. fileciteturn0file0L257-L266

라플라스 변환하면 2차 low-pass transfer:

d(s)dref.pt(s)=ωn2s2+2ζωns+ωn2,ζ=0.707, ωn=2VL1\frac{d(s)}{d_{ref.pt}^*(s)} = \frac{\omega_n^2}{s^2 + 2\zeta\omega_n s + \omega_n^2}, \quad \zeta=0.707,\ \omega_n=\frac{\sqrt{2}V}{L_1}

논문 Eq.(6). fileciteturn0file0L267-L276

8.1 왜 위상(phase)이 좋아지나?

핵심 문장(요약):

  • well-damped 2차 시스템은 대역폭 근처에서 약 90° phase lag가 생기는데,
  • reference point가 경로에서 앞쪽으로 (L_1)만큼 있기 때문에, 입력 자체가 “미리 움직인” 값이라 phase lead를 제공한다. fileciteturn0file0L276-L300

논문은 이를 시간지연/선행 형태로 근사한다:

dref.pt(s)eτsd(s),τL1Vd_{ref.pt}^*(s) \approx e^{\tau s} d^*(s),\quad \tau \approx \frac{L_1}{V}

따라서(논문 Eq.8):

d(s)d(s)=ωn2eτss2+2ζωns+ωn2\frac{d(s)}{d^*(s)} = \frac{\omega_n^2 e^{\tau s}}{s^2 + 2\zeta\omega_n s + \omega_n^2}

fileciteturn0file0L301-L317

👉 이 (e^{\tau s})가 “anticipation(선행)”의 수학적 표현이다.

8.2 L1 선택 규칙(고주파 경로 성분 추종)

논문은 경로가 가진 최대 주파수 성분(파장 (L_p)) 기준으로,
정확한 추종을 위해 (L_1)이 너무 크면 안 된다고 말한다. fileciteturn0file0L284-L300
(요지: 높은 곡률/짧은 파장 경로를 따라가려면 L1을 충분히 작게)


9) Case 3 — 원 궤적 추종: “구심가속도 + 안정한 오차 동역학”

원 궤적(Fig8)에서 선형화하면, 결국 횡오차 (d)는 다음과 같은 2차 안정 시스템으로 수렴한다(논문 Eq.17):

d¨+2ζωnd˙+ωn2d0\ddot d + 2\zeta\omega_n \dot d + \omega_n^2 d \approx 0

여기서

ζ=0.707,ωn=2VcL1,c=cosη3\zeta = 0.707,\quad \omega_n = \frac{\sqrt{2}Vc}{L_1},\quad c=\cos\eta_3

fileciteturn0file0L332-L369

그리고 정상상태에서 필요한 구심가속도 (V^2/R) 성분이 자연스럽게 포함됨을 보인다. fileciteturn0file0L342-L369

✅ 해석 요약

  • L1 guidance는 원 궤적에서 “곡률 feedforward”에 가까운 성질을 자동으로 만든다.
  • 따라서 PD/PID보다 원 궤적(곡선)에서 훨씬 타이트하게 붙는다.

10) 시뮬레이션 비교: PD/PID vs L1 Guidance

논문은 전통 linear 방법과 L1을 비교한다. fileciteturn0file0L371-L385

10.1 비교 1 — 직선

  • PD와 L1이 거의 동일 성능 fileciteturn0file0L386-L396
  • (직선에서는 L1이 PD로 근사되기 때문)

10.2 비교 2 — 곡선

  • PD는 원형 경로에서 약 40m 정상상태 오차가 발생하는 사례를 보여줌
  • PID는 정상상태 오차는 제거되지만 초기 과도오차가 큼
  • L1은 초기 과도에서도 5m 이내로 매우 타이트 fileciteturn0file0L397-L426

10.3 비교 3 — 곡선 + 풍속(steady wind 5m/s)

PD/PID는 바람으로 인한 ground speed 변화 때문에

  • 다운윈드에서 바깥으로(속도 증가 → 더 큰 가속도 필요)
  • 업윈드에서 안쪽으로(속도 감소) 흔들리는 패턴을 보임 fileciteturn0file0L427-L455

반면 L1은 수식 자체가

as,cmdV2a_{s,cmd} \propto V^2

이므로 순간 속도 변화가 곧바로 가속도 명령에 반영되어
오차가 7m 이하로 안정적. fileciteturn0file0L272-L279L455-L462


11) 비행시험(Flight Test): 실제 UAV에서 검증

논문은 MIT PCUAV 프로젝트의 2대 UAV에 L1 guidance를 적용한다. fileciteturn0file0L463-L507

11.1 시스템 제약과 L1 선택

  • inner loop: bank angle control
  • outer loop bandwidth 제한 요인:
    • bank control bandwidth (약 2~3 rad/s)
    • GPS time delay (0.4s)
  • nominal speed (V \approx 25\,m/s)
  • 선택: (L_1=150\,m) → crossover 약 0.4 rad/s fileciteturn0file0L463-L470

11.2 결과(단독 원 궤적 추종)

  • Mini vehicle: 원 궤적에서
    • ±2m 이내 75%
    • ±3m 이내 96% fileciteturn0file0L487-L495
  • OHS Parent: transient 후
    • ±2m 이내 78%
    • ±3m 이내 97% fileciteturn0file0L496-L507

🖼️ Fig13~14(논문 p12): 실제 비행 궤적(실선)과 desired path(점선) 비교.

11.3 Rendezvous / Formation flight

  • Parent는 Mini 위치를 몰라도 원 궤적 유지
  • Mini는 Parent의 위치 정보를 받아 경로를 스케줄링하고 진입 → 같은 원 궤적을 추종하며 거리 유지 fileciteturn0file0L508-L535
  • separation command를 30m → 12m로 단계적으로 줄였고,
    • 수평 상대오차 ±2m 이내 86%
    • 고도 상대오차 ±2m 이내 84% fileciteturn0file0L548-L566

12) 결론(논문 요지 정리)

논문이 꼽는 “왜 더 잘 되나”의 핵심은 2가지다. fileciteturn0file0L567-L581

1) 각도 (\eta)가 동시에 3가지 역할

  • heading correction
  • 작은 오차에서는 PD 제어
  • 곡선에서는 원형 reference를 정확히 따르는 anticipatory 성분 fileciteturn0file0L567-L576

2) 순간 속도 (V)를 직접 사용

  • 풍속 등 외란으로 inertial speed가 바뀌어도 자동 적응 fileciteturn0file0L576-L581


13) 부록: Lyapunov 안정성(직선 추종)

논문 부록은 직선 추종 모델에 대해 Lyapunov function을 구성해
특정 조건에서 asymptotically stable임을 보인다. fileciteturn0file0L582-L641

13.1 모델

d˙=Vsinη2,η˙2=asV\dot d = V\sin\eta_2,\quad \dot \eta_2 = -\frac{a_s}{V}

guidance:

as=2V2L1sinηa_s = \frac{2V^2}{L_1}\sin\eta

조건:

d<L1,π2<η<π2d < L_1,\quad -\frac{\pi}{2}<\eta<\frac{\pi}{2}

fileciteturn0file0L603-L611

13.2 결과(요지)

Lyapunov function을 통해

L˙=2V3L1sin2η2cosη0\dot L = -\frac{2V^3}{L_1}\sin^2\eta_2 \cos\eta \le 0

이고, invariant set theorem으로 ((\eta_2=0,d=0))만 남으므로
asymptotically stable. fileciteturn0file0L632-L641


14) 실전 적용 체크리스트 (내가 구현할 때의 포인트)

14.1 구현에 필요한 것

  • 현재 위치/속도(벡터)
  • path representation(폴리라인/스플라인 등)
  • 경로를 따라 앞으로 (L_1)만큼 진행한 reference point 계산
  • 각도 (\eta) 계산 (속도 벡터 vs (ref - pos) 벡터)
  • 횡가속도 명령 (a_{s,cmd}) 생성 후, 내 시스템 액추에이터로 변환
    • UAV: bank angle command
    • UGV/차량: yaw rate/steering/curvature 명령 등

14.2 L1 튜닝 감각(중요)

  • (L_1) ↓ : 더 공격적(고주파 경로 추종↑) 하지만 노이즈/액추에이터 한계에 취약
  • (L_1) ↑ : 더 부드러움(안정·노이즈 강함) 하지만 곡선 세밀 추종↓

논문 관점에서는 inner loop 대역폭과 센서 지연을 고려해 (L_1)를 고르며,
실제 실험에서는 (V\approx25m/s), GPS delay 0.4s 등의 제약 아래 (L_1=150m)를 택했다. fileciteturn0file0L463-L470


15) 참고(원문)

Sanghyuk Park, John Deyst, Jonathan P. How,
A New Nonlinear Guidance Logic for Trajectory Tracking, AIAA. fileciteturn0file0L1-L22


think about it step-by-step

profile
어서오세요?

0개의 댓글