global path는 global costmap을 이용해 planner에서 결정하고
local path는 로봇의 움직임을 실시간으로 조정해 장애물을 회피하고 전역 경로를 따라간다. 이는 controller에서 결정한다.
플래너는 로봇이 목적지까지 따라가는 global path를 생성하는 역할을 한다. 로봇의 구동 방식, 사용 환경에 따라 적절한 플러그인을 선택해야 한다.
| 플러그인 이름 | 특징 및 알고리즘 | 권장 로봇 타입 |
| NavFn Planner | A* 또는 Dijkstra 알고리즘 사용. 가장 기본적이고 가벼운 2D 플래너입니다. | 차분 구동(Differential), 전방향(Omni) |
| Smac Planner 2D | 2D 비용 지도(Costmap) 상에서 경로를 찾는 A* 구현체. 매끄러운 경로 생성 기능 포함. | 차분 구동, 전방향 |
| Smac Planner Hybrid-A* | Dubin 또는 Reeds-Shepp 모델을 사용. 로봇의 회전 반경을 고려한 경로를 생성합니다. | Ackermann(차량형), 대형 로봇 |
| Smac Planner Lattice | 미리 정의된 제어 세트(Control set)를 사용하여 기구학적으로 가능한 경로를 계산합니다. | 모든 타입 |
| Theta Star Planner | Theta* 알고리즘을 사용하며, 격자에 얽매이지 않고 직선 위주의 효율적인 경로를 생성합니다. | 차분 구동, 전방향 |
NavFn
Dijkstra 알고리즘 기반으로, A* 알고리즘도 사용할 수 있다.
일반적으로 잘 동작하고 둥근 곡선을 만든다.
실제 둥근 곡선 형태로 경로 계획을 하는 건 아니고 목표 지점까지 모든 grid 칸에 목표까지 가는 비용(cost potential field)을 채워 넣는다. 가장 비용이 낮은 곳으로 한 칸씩 이동하는 것이다.
Smac
1. Smac 2D planner
cost-aware holonomic A* 기반으로 단순 최단 거리뿐 아니라 costmap cost를 함께 고려해 경로를 생성한다.
2. Smac Hybrid-A* planner
cache_obstacle_heuristtic 파라미터를 이용해 동일한 타겟 pose로 replanning에 사용할 휴리스틱을 캐싱해 놓음으로써 planner 속도를 향상시킨다. 정적인 환경에서 사용하는 것을 권장한다. 목표 pose와 너무 가까우면 회전 반경 제약로 접근이 어려울 수 있다.
https://docs.nav2.org/configuration/packages/configuring-smac-planner.html 에 있는 예시를 통해 경로 계산 시간을 비교하면 Hybrid-A* 114ms, State Lattic 113ms, 2D A* 243ms이 소요되었고 NavFn는 146ms이지만 심각한 오류가 포함됐다.
'로봇 > ROS' 카테고리의 다른 글
| [ROS2] bag 파일 복구 (0) | 2025.03.19 |
|---|