ROS 2
BT Navigator , Planner Server , Controller Server
정지홍
2025. 3. 24. 14:42
전체적인 흐름
1. BT Navigator가 목적지로 이동하라고 명령을 받으면,
2. Planner Server가 전역 경로를 생성하고,
3. Controller Server가 해당되는 경로를 따라가도록 실제 속도 명령( cmd_vel )을 만든다.
BT Navigator
- 로봇의 행동 흐름을 제어하는 Behavior Tree 엔진이다.
- 주어진 목표 위치를 기반으로 '경로 계획 -> 추종 -> 목표 도달 확인' 과정을 트리 방식으로 제어한다.
- 로봇이 장애물을 만나면 피하고, 목표에 도달하면 멈추는 등의 논리를 트리 구조로 수행한다.
- 입력
- 목표 위치 ( geometry_msgs/PoseStamped )
- 사용자 명령 ( service or action )
- 출력
- 목표 도달 성공 or 실패
- 중간 상태 피드백 ( 경로 생성됨 , 이동중 , 장애물 회피 등 )
Planner Server
- 전역 경로 생성
- 시작위치 ( 현재 위치 )와 ㅁ복표 위치를 기반으로, 전역 지도( map )을 참고해서 최적의 경로 생성
- 입력
- 현재 로봇의 위치 ( TF : map -> base_link )
- 목표 위치 ( geometry_msgs/PoseStamped )
- 정적인 맵 ( /map )
- 전역 비용맵 ( global_costmap/costmap_raw )
- 출력
- 전역 경로 ( nav_msgs/Path ) : /plan
- 실패시에는 계획실패 반환
Controller Server
- 전역 경로를 '실제 로봇의 속도 명령' 으로 변환
- 장애물을 회피하며, 경로를 따라간다.
- 실시간으로 동작을 제어함
- 입력
- 경로 ( nav2_msgs/Path )
- 현재 위치 ( TF : odom -> base_link )
- 로컬 비용맵 ( local_costmap/costmap_raw )
- 로봇 제약사항 , 속도 제한
- 출력
- 속도명령 ( geometry_msgs/Twist ) : /cmd_vel
만약 로봇이 멈춰있다?
=> cmd_vel이 publish되는지확인
경로가 생성이 안된다?
=> planner_server에서 /plan이 publish되는지 확인