ROS2 기반 자율 계획 시스템의 구조 (Architecture of ROS2-Based Autonomous Planning Systems)
1. 개요
ROS2 환경에서의 자율 계획 시스템은 PlanSys2를 핵심 프레임워크로, BehaviorTree.CPP를 실행 엔진으로, Nav2와 MoveIt2를 저수준 동작 실행기로 활용하는 다계층 아키텍처로 구성된다.
2. 시스템 아키텍처
┌──────────────────────────────┐
│ PlanSys2 (태스크 플래닝) │
│ Domain Expert │ Problem Expert │
│ Planner Node │ Executor Node │
├──────────────────────────────┤
│ BehaviorTree.CPP (행동 실행) │
│ 각 PDDL 행동의 행동 트리 실행 │
├──────────────────────────────┤
│ Nav2 / MoveIt2 (동작 실행) │
│ 경로 계획, 경로 추종, 파지 실행 │
├──────────────────────────────┤
│ 로봇 하드웨어 드라이버 │
│ 센서, 모터, 그리퍼 │
└──────────────────────────────┘
3. PlanSys2의 노드 구조
| 노드 | 역할 | ROS2 인터페이스 |
| Domain Expert | PDDL 도메인 관리 | 서비스 |
| Problem Expert | 상태/목표 관리 | 서비스 |
| Planner | 계획 생성 | 서비스 |
| Executor | 계획 실행 | 액션 서버 |
4. 통합 흐름
- 운용자/상위 시스템이 목표를 PlanSys2에 전달
- Problem Expert가 현재 상태와 목표를 PDDL로 구성
- Planner Node가 계획기(POPF 등)를 호출하여 계획 생성
- Executor Node가 계획의 각 행동을 행동 트리로 실행
- 행동 트리가 Nav2/MoveIt2를 호출하여 물리적 동작 수행
- 실행 결과에 따라 상태 갱신 또는 재계획 트리거
5. ROS2 통신 구조
[사용자 CLI/GUI] → PlanSys2 서비스 호출
[PlanSys2] → BT 액션 노드 호출
[BT 액션] → Nav2 액션 서버 호출 (NavigateToPose)
[Nav2] → /cmd_vel 토픽 발행
6. 참고 문헌
- PlanSys2 공식 문서. https://plansys2.github.io/
- Macenski, S., et al. (2020). “The Marathon 2: A Navigation System.” arXiv preprint arXiv:2003.00368.
| 버전 | 날짜 | 변경 사항 |
| v0.1 | 2026-04-05 | 초안 작성 |