Navigation2 플래너
목표: navigation2 의 다양한 플래너들을 간단하게 알아봅시다.
전제조건
앞의 과정을 다 끝내고 와야 합니다. ROS2 와 navigation2 의 기본 개념이 없으면 이해하기 힘들 수 있습니다.
앞에서 우리는 navigation2 를 시작할 때 필수적인 요소들에 대해서 공부했습니다.
1 Planners 의 종류
아래와 같이 약 5가지 정도의 플래너가 존재한다. 현재 로봇에 사용중인 플래너는 NavFn Planner 이다. 기본으로 설정되어 있는 플래너이다.
하나씩 순서대로 플래너에 대한 설명을 할 것이다.
Plugin Name |
Creator |
Description |
Drivetrain support |
|---|---|---|---|
Eitan Marder-Eppstein & Kurt Konolige |
A navigation function using A* or Dijkstras expansion, assumes 2D holonomic particle |
Differential, Omnidirectional, Legged |
|
|
Steve Macenski |
A SE2 Hybrid-A* implementation using either Dubin or Reeds-shepp motion models with smoother and multi-resolution query. Cars, car-like, and ackermann vehicles. Kinematically feasible. |
Ackermann, Differential, Omnidirectional, Legged |
Steve Macenski |
A 2D A* implementation Using either 4 or 8 connected neighborhoods with smoother and multi-resolution query |
Differential, Omnidirectional, Legged |
|
Steve Macenski |
An implementation of State Lattice Planner using pre-generated minimum control sets for kinematically feasible planning with any type of vehicle imaginable. Includes generator script for Ackermann, diff, omni, and legged robots. |
Differential, Omnidirectional, Ackermann, Legged, Arbitrary / Custom |
|
Anshumaan Singh |
An implementaion of Theta* using either 4 or 8 connected neighborhoods, assumes the robot as a 2D holonomic particle |
Differential, Omnidirectional |
각각의 내용들을 익히고 사용하고 싶은 플래너를 사용해 볼 수 있습니다.
2 Planners 기본 사용법
Github_에서 소스 코드를 확인하세요.
Planner Server는 스택의 플래너 요청을 처리하고 플러그인 구현의 맵을 호스팅하는 서버를 구현합니다. 목표 및 사용할 플래너 플러그인 이름을 입력하고 목표까지의 경로를 계산하기 위해 적절한 플러그인을 호출합니다. 또한 글로벌 코스트맵을 호스팅합니다.
매개변수
- planner_plugins
타입
기본값
vector<string>
[‘GridBased’]
- 설명
파라미터 및 처리 요청에 대한 매핑된 플러그인 이름의 목록입니다.
- 참고
이 목록에 정의된 각 플러그인 네임스페이스는 로드할 플러그인의 유형을 정의하는
plugin매개변수를 가져야 합니다.예제:
planner_server: ros__parameters: planner_plugins: ["GridBased"] GridBased: plugin: "nav2_navfn_planner/NavfnPlanner"
- expected_planner_frequency
타입
기본값
double
[20.0]
- 설명
예상 플래너 주파수입니다. 현재 주파수가 예상 주파수보다 낮으면 경고 메시지를 표시합니다.
- action_server_result_timeout
타입
기본값
단위
double
10.0
초
- 설명
액션 서버가 결과를 생성하지 않은 경우 골 핸들을 폐기하는 시간 제한 값(초)입니다. 이것은 기본적으로 rcl에서 15분으로 설정되어 있었으나 이 PR #1012 에서 10초로 변경되었습니다. 대부분의 응용 프로그램에서는 서버 내의 액션이이 기간을 초과하지 않는 한이 기간을 조정할 필요가 없습니다. 이 문제는 OSRF와 함께 활동 중인 골 타임아웃을 방지하기 위한 다른 솔루션을 찾기 위해 제기되었으므로 이것은 반시시적인 임시 해결책입니다.
기본 플러그인
planner_plugins 매개변수가 재정의되지 않은 경우 다음 기본 플러그인이 로드됩니다:
네임스페이스
플러그인
“GridBased”
“nav2_navfn_planner/NavfnPlanner”
Example
planner_server:
ros__parameters:
expected_planner_frequency: 20.0
planner_plugins: ['GridBased']
GridBased:
plugin: 'nav2_navfn_planner/NavfnPlanner'
다음 단계
다음 과정에선 사용할 수 있는 각각의 플래너들의 내용에 대해서 배워 볼 것이다. 가장 먼저는 navfn_planner 입니다.