Skip to main content

Command Palette

Search for a command to run...

Regulated Pure Pursuit: nav2 기본 컨트롤러의 3가지 규제 메커니즘 완전 분석

곡률 규제·장애물 근접 규제·선제 충돌 감지 — PP 대비 경로 오차 85% 감소의 비밀

Published
7 min read
T
I build robots for a living. Not in simulation. Not in a lab. On the floor, with real hardware, real failure modes, and real deadlines. My work spans the full stack of modern robotics: embedded systems firmware, autonomous navigation, and the end-to-end pipeline for Vision-Language-Action (VLA) model development — dataset collection, training, inference optimization, and sim-to-real transfer. I've worked hands-on with platforms from Unitree, Deep Robotics, Dexmate, and Robotis, among others. Each one teaches you something different about the gap between what models promise and what robots actually do.

TL;DR

RPP(Regulated Pure Pursuit)는 Samsung Research의 Steve Macenski 등이 2023년 발표한 모바일 로봇 경로 추적 컨트롤러입니다(arXiv:2305.20026). 기존 Pure Pursuit의 고질적인 문제 — 속도 무시, 맹목 코너 충돌, 장애물 근접 시 감속 없음 — 를 세 가지 규제(Regulation) 휴리스틱으로 해결합니다: (1) 곡률 기반 속도 규제: 날카로운 커브 전 자동 감속, (2) 장애물 근접 속도 규제: 장애물 가까워질수록 감속, (3) 선제 충돌 감지: 호(arc) 투영으로 충돌 예측. ROS 2 nav2에 기본 컨트롤러로 탑재됐고, PAL Tiago 실제 로봇에서 기존 Pure Pursuit 대비 경로 추적 오차 0.19m → 0.03m로 85% 감소.


Background: Pure Pursuit의 문제

Pure Pursuit는 1992년 Craig Coulter가 제안한 고전 경로 추적 알고리즘입니다. 원리는 단순합니다:

경로 위에서 현재 위치로부터 lookahead 거리만큼 앞의 점을 찾아
그 점을 향해 원호(circular arc)를 그리며 따라간다.

조향각 = arctan(2L·sin(α) / ld)
   L  = 로봇 축거(wheelbase)
   α  = 목표점과 로봇 진행방향 사이 각도
   ld = lookahead 거리

단순하고 계산이 가볍지만 실제 배포에서는 문제가 쏟아집니다:

문제상황결과
속도 고려 없음고속에서 날카로운 커브경로 이탈, 미끄러짐
맹목 코너복도 교차로 진입보행자와 충돌
장애물 무시사람 옆 통과너무 빠른 속도로 근접
충돌 감지 없음경로 상 갑작스러운 장애물그대로 돌진

Adaptive Pure Pursuit(APP): lookahead 거리를 속도에 비례(ld = v · lt)해 동적으로 조정했지만, 속도 자체를 규제하는 메커니즘은 없었습니다.

RPP는 APP 위에 세 가지 규제를 추가해 이 문제를 해결합니다.


Core Algorithm: Regulated Pure Pursuit

1. Adaptive Lookahead (APP에서 계승)

lookahead 거리:
  ld = v · lt        (속도 비례 동적 lookahead)

  v  : 현재 병진 속도
  lt : lookahead 시간 게인 (기본 1.5s)

범위: [ld_min, ld_max] = [0.3m, 0.9m] 클램핑

고속에서 더 먼 경로점을 바라보고, 저속에서 가까운 점 → 고속 직진과 저속 회전 모두 안정적.

2. 곡률 기반 속도 규제 (Curvature Regulation)

경로의 곡률(κ)이 임계값(T_κ)을 초과하면 선속도를 자동으로 줄입니다:

κ = 2 · sin(α) / ld     (Pure Pursuit의 기하학적 곡률)

곡률 규제:
  if κ > T_κ:
      v_regulated = v_max · (1 / (κ · regulated_linear_scaling_min_radius))

  regulated_linear_scaling_min_radius 기본값: 0.9m

실용적 의미: 복도 교차로나 좁은 U턴 앞에서 자동으로 감속 → "맹목 코너(blind corner)" 진입 속도를 30~50% 줄임.

실험 결과: 동일 코너에서 RPP는 정지 거리가 APP 대비 33% 증가 (충돌 여유 공간 확보).

3. 장애물 근접 속도 규제 (Proximity / Cost Regulation)

costmap의 obstacle cost를 읽어 장애물 근처에서 감속:

if d_obstacle ≤ d_prox:
    v' = v · α · (d_obstacle / d_prox)

  d_prox : 규제 시작 거리 (기본 0.6m)
  α      : cost_scaling_gain (기본 1.0)

costmap 기반이라 고정 장애물(벽, 선반) + 동적 장애물(사람) 모두 처리.

실험 결과: confined corridor에서 APP 대비 경로 추적 오차 14% 감소, 장애물 근접 거리 증가.

4. 선제 충돌 감지 (Preemptive Collision Detection)

기존 방식: 현재 위치에서 공간적으로 앞을 확인 (lookahead 거리까지)

RPP 방식: 시간적으로 앞을 투영 — 현재 속도로 T초 동안 이동할 호(arc)를 그리고, 그 경로 위에 장애물이 있으면 정지:

시뮬레이션 호:
  for t in [0, T_max]:   (T_max 기본 1.0s)
      x(t) = x₀ + ∫v·cos(θ) dt
      y(t) = y₀ + ∫v·sin(θ) dt
      if costmap[x(t), y(t)] > collision_threshold:
          STOP

왜 더 나은가: 공간 기반 감지는 고속에서 반응이 늦음. 시간 기반 투영은 속도가 빠를수록 더 먼 미래까지 확인 → 고속 상황에서 안전 마진 자동 증가.

전체 제어 루프

[매 제어 주기]
1. 경로에서 lookahead 점 찾기
   ld = clamp(v · lt, ld_min, ld_max)

2. 기본 속도 설정
   v = v_max

3. 곡률 규제 적용
   κ = curvature(lookahead_point)
   if κ > T_κ: v = min(v, v_curvature_regulated)

4. 장애물 근접 규제 적용
   d_obs = nearest_obstacle_distance()
   if d_obs < d_prox: v = min(v, v_proximity_regulated)

5. 선제 충돌 감지
   if arc_collision_check(v): v = 0 (정지)

6. 조향각 계산
   ω = v · κ   (규제된 v 사용 — APP와 다른 점)

7. 속도 명령 발행: (v, ω)

6번이 핵심 포인트: APP는 최대 속도로 조향각을 계산하고 나서 감속. RPP는 먼저 v를 규제한 뒤 그 v로 ω를 계산 → 속도-조향각 일관성 유지, undershoot 방지.


nav2 파라미터 구조

nav2의 nav2_regulated_pure_pursuit_controller로 탑재된 설정:

RegulatedPurePursuitController:
  # Lookahead
  use_velocity_scaled_lookahead_dist: true
  min_lookahead_dist: 0.3
  max_lookahead_dist: 0.9
  lookahead_time: 1.5

  # 곡률 규제
  use_regulated_linear_velocity_scaling: true
  regulated_linear_scaling_min_radius: 0.9

  # 장애물 근접 규제
  use_cost_regulated_linear_velocity_scaling: true
  cost_scaling_dist: 0.6
  cost_scaling_gain: 1.0

  # 충돌 감지
  use_collision_detection: true
  max_allowed_time_to_collision_up_to_carrot: 1.0

  # 속도 한계
  desired_linear_vel: 0.5
  min_approach_linear_velocity: 0.05

실험 결과

플랫폼

  • 시뮬레이션: Turtlebot 3 + Gazebo (이상적 조건, ground truth 사용)
  • 실제 로봇: PAL Robotics Tiago (서비스 로봇, 실내 환경)

Experiment 1: 경로 추적 정밀도

컨트롤러평균 경로 오차
PP (Pure Pursuit)0.19m
APP (Adaptive PP)0.09m
RPP (Regulated PP)0.03m

PP 대비 85% 오차 감소. APP 대비도 67% 개선.

Experiment 2: 맹목 코너 안전성

동일한 코너에서:

  • RPP: 정지 거리 33% 증가 (충돌 전 여유 공간 확보)
  • 주행 완료 시간은 APP와 거의 동일 (안전성 향상이 속도 저하로 이어지지 않음)

Experiment 3: 좁은 복도 (Confined Corridor)

  • RPP: APP 대비 경로 추적 오차 14% 감소
  • 속도 분포 시각화: 코너 앞에서만 감속하고 직선 구간은 최대 속도 유지

Experiment 4: 전체 시스템 (캠퍼스 빌딩)

실제 빌딩에서 전체 내비게이션:

  • 완료 시간: PP/APP/RPP 모두 85~95초로 유사
  • 경로 이탈: RPP가 최소 (0.043m 평균 이탈)
  • 결론: 속도 손실 없이 안전성 향상

Key Experiments

경로 추적 오차 vs 안전성 트레이드오프

RPP의 핵심 주장: "속도를 줄여서 안전해지는 게 아니라, 올바른 상황에서만 줄인다."

실험 데이터:
  - 전체 주행 시간: PP ≈ APP ≈ RPP (85~95s)
  - 경로 오차: RPP가 PP 대비 85% 낮음
  - 코너 안전 여유: RPP가 33% 더 큼

→ 속도는 거의 안 줄이면서 안전성과 정밀도를 동시에 향상.

minimum_radius 파라미터 영향

regulated_linear_scaling_min_radius를 0.5m → 1.5m로 변화시키는 실험:

  • 값이 작을수록: 적극적 감속, 매우 안전하지만 느림
  • 값이 클수록: 감속 거의 없음, 빠르지만 코너 오버슈트 증가
  • 기본값 0.9m가 균형점

Limitations — 현장 엔지니어 관점

알고리즘 한계:

  1. 차량 동역학 무시: Pure Pursuit 계열 공통 한계. Ackermann 조향(차량형 로봇)에서는 최소 회전 반경 제약이 있는데, 이를 기하학적으로 처리하지 않음. 경로가 "물리적으로 실현 가능한(feasibly drivable)" 형태여야 함.

  2. 고속 코너 단축(shortcutting): 급커브에서 경로를 조금씩 단축하는 현상은 남아 있음 (PP, APP 대비 줄었지만 완전히 해결되지 않음).

  3. costmap 의존성: 장애물 근접 규제는 costmap 품질에 의존. 센서 노이즈로 costmap이 부정확하면 불필요한 감속 또는 감속 누락.

  4. 순수 반응형: 전방 경로를 기반으로 반응하는 로컬 컨트롤러. 복잡한 글로벌 경로 재계획은 global planner에게 위임.

현장 관점:

  • nav2에서 즉시 쓸 수 있는 것: nav2_regulated_pure_pursuit_controller 패키지로 바로 사용 가능. 파라미터 3개(min_radius, d_prox, lookahead_time)만 잘 튜닝하면 대부분 환경에서 잘 작동.

  • DWB vs RPP 선택: DWB(Dynamic Window Approach)는 동적 장애물에 더 유연하지만 무겁고 설정 복잡. RPP는 가볍고 예측 가능 → 실내 정적 환경, 서비스 로봇에 적합.

  • Unitree/이동 로봇: Go2 같은 사족 보행 로봇에 nav2 올릴 때 RPP가 기본 선택지. 단, 사족 보행 특유의 발 미끄러짐을 고려하면 min_lookahead를 좀 더 늘리는 게 경험적으로 좋음.

  • 속도 파라미터 우선 튜닝: 필드 배포 시 desired_linear_vel을 낮게 시작(0.2~0.3m/s)해서 안정성 확인 후 올리는 것이 정석. regulated_linear_scaling_min_radius는 환경 복잡도에 맞게.


The Lineage — RPP의 계보

알고리즘/논문관계
Pure Pursuit (Coulter 1992)기반 알고리즘 — 단순한 기하학적 lookahead 추적
Adaptive Pure Pursuit (APP)lookahead를 속도에 비례하도록 적응화
DWB (Dynamic Window Approach)nav2 대안 컨트롤러 — 동적 제약 포함, 더 무거움
TEB (Timed Elastic Band)전체 경로를 시간 파라미터로 최적화, 차량 동역학 포함
RPP (Macenski et al. 2023)곡률·근접·충돌 규제 추가 — nav2 기본 컨트롤러
nav2 MPPIController샘플 기반 최적화, 더 복잡한 constraint 처리 가능
nav2 GracefulController비홀로노믹 제약 포함, 자연스러운 감속 곡선

RPP의 위치: 계산 효율과 직관적 파라미터 조정 가능성 덕분에 nav2 배포의 사실상 표준 컨트롤러.


Summary — Key Takeaways

  1. Pure Pursuit + 3가지 규제 = 실용적 안전 컨트롤러 — 곡률 규제(코너 감속), 근접 규제(장애물 감속), 선제 충돌 감지(호 투영). 각각 독립적으로 on/off 가능한 모듈형 설계.

  2. 속도-조향각 일관성이 핵심 개선 — APP는 감속 후 조향각을 재계산하지 않아 언더슈트 발생. RPP는 규제된 속도로 조향각 계산 → 실제 궤적이 의도한 경로와 일치.

  3. 경로 추적 오차 85% 감소 (PP 대비 0.19m → 0.03m) — 안전성 향상이 주행 시간 증가로 이어지지 않음. 올바른 상황에서만 감속하기 때문.

  4. nav2 기본 탑재 + 고품질 C++ 구현 — 92% 유닛 테스트 커버리지, production-ready. 직접 구현 없이 YAML 파라미터 튜닝만으로 사용 가능.

  5. 로컬 반응형 컨트롤러의 한계는 인정 — 차량 동역학, 고속 단축, 글로벌 재계획은 다른 계층(global planner, MPPI)과 조합해 해결. RPP 단독으로 모든 걸 해결하려 하지 않음 — 그게 오히려 강점.


📚 논문: arXiv:2305.20026

🤖 nav2 소스: GitHub nav2_regulated_pure_pursuit_controller

📖 nav2 공식 문서: Regulated Pure Pursuit — Nav2 Docs

다음 포스트: GR00T — NVIDIA의 휴머노이드 범용 정책

More from this blog

TwinVLA: 단일 팔 VLA 두 개로 양팔 조작 구현 — 50 에피소드로 RDT-1B 능가

TL;DR TwinVLA(arXiv:2511.05275)는 두 개의 사전 훈련된 단일 팔 VLA를 조합해 양팔 조작(Bimanual Manipulation)을 구현하는 프레임워크다. 양팔 데이터로 처음부터 대규모 사전 훈련 없이, 단일 팔 데이터만으로 사전 훈련된 SingleVLA(0.8B)를 두 개 인스턴스로 구성하고 Joint Attention + Causal Mask로 양팔을 협조시킨다. 결과: RDT-1B(학습 데이터 2,400시간)을 ...

Apr 21, 20268 min read1

Swerve Drive: 슬립 없는 전방향 이동 플랫폼 완전 분석 (2휠/3휠/4휠 비교)

TL;DR Swerve Drive(스워브 드라이브)는 각 바퀴가 독립적으로 조향(steering)과 구동(driving)을 동시에 수행하는 전방향 이동 플랫폼이다. 모든 방향으로 슬립 없이 이동할 수 있으면서도 메카넘 휠 대비 높은 견인력을 유지한다. 핵심은 역기구학(Inverse Kinematics): 원하는 차체 속도(vx, vy, ω)를 입력받아 각 바퀴의 속도와 각도를 실시간 계산한다. 산업용 AGV, 경쟁 로봇(FRC), 서비스 로봇 ...

Apr 20, 202612 min read5

telos-robotics

26 posts

VLA Paper Reviews RT-1, RT-2, π0, OpenVLA, Octo — the models that define where robot learning is headed. Not just summaries. Architecture breakdowns, training details, deployment considerations. Autonomous Driving Navigation Path planning algorithms, localization techniques (LiDAR SLAM ...), perception stacks. The building blocks of autonomous mobile robots. Robot Platform Notes Hands-on observations from working with specific hardware. Things you only learn by running the robot until it fails.

Regulated Pure Pursuit: nav2 기본 컨트롤러의 3가지 규제 메커니즘 완전 분석