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되는지 확인