1317.6 4대 핵심 노드의 역할과 관계
1. 대 핵심 노드의 개요
PlanSys2의 아키텍처는 네 가지 독립적인 ROS2 관리형 노드로 구성되며, 각 노드는 명확히 분리된 책임을 가진다. 이 분리는 관심사 분리(Separation of Concerns) 원칙에 따른 것으로, 각 노드를 독립적으로 개발, 테스트, 교체할 수 있게 한다.
2. Domain Expert 노드
2.1 역할
PDDL 도메인 모델의 관리와 조회를 담당한다.
2.2 책임
- PDDL 도메인 파일의 로딩과 파싱
- 타입 계층 구조의 관리
- 술어 시그니처 목록 관리
- 액션 스키마(순간적/듀레이티브) 관리
- 상수(constants) 관리
- 다른 노드의 도메인 정보 조회 요청 처리
2.3 제공 서비스
get_domain, get_domain_name, get_domain_types, get_domain_predicates, get_domain_actions, get_domain_action_details 등
3. Problem Expert 노드
3.1 역할
현재 세계 상태와 목표 조건의 관리를 담당한다.
3.2 책임
- 객체 인스턴스의 추가/삭제/조회
- 술어 인스턴스의 추가/삭제/조회
- 수치 함수 값의 설정/조회
- 목표 조건의 설정/조회
- 완전한 PDDL 문제 인스턴스의 생성
3.3 제공 서비스
add_instance, remove_instance, get_instances, add_predicate, remove_predicate, get_predicates, add_function, set_goal, get_goal, get_problem 등
4. Planner 노드
4.1 역할
PDDL 도메인과 문제를 외부 플래너에 전달하여 계획을 생성한다.
4.2 책임
- Domain Expert로부터 도메인 정보 수집
- Problem Expert로부터 문제 정보 수집
- PDDL 텍스트 생성 및 외부 플래너 호출
- 플래너 출력의 파싱과 계획 구조 생성
- 플래너 플러그인 관리
4.3 의존 관계
Planner는 Domain Expert와 Problem Expert에 의존한다.
5. Executor 노드
5.1 역할
생성된 계획의 실행을 조율한다.
5.2 책임
- 계획을 행동 트리(Behavior Tree)로 변환
- 각 PDDL 액션을 대응하는 ActionExecutorClient 노드에 위임
- 실행 상태의 모니터링과 피드백 수집
- 액션 완료 시 PDDL 효과의 세계 상태 반영
- 실행 실패 시 오류 보고
5.3 의존 관계
Executor는 Planner(계획 수신)와 Problem Expert(상태 갱신)에 의존한다.
6. 노드 간 관계
Domain Expert ←──── Planner ────→ Problem Expert
↓
Executor
↓
Action Executor Nodes
6.1 의존 관계 분석
| 노드 | 의존하는 노드 | 의존 이유 |
|---|---|---|
| Domain Expert | 없음 | 독립적으로 도메인 관리 |
| Problem Expert | Domain Expert | 객체/술어 유효성 검증에 도메인 정보 참조 |
| Planner | Domain Expert, Problem Expert | 계획 생성에 도메인과 문제 정보 모두 필요 |
| Executor | Planner, Problem Expert | 계획 수신 및 상태 갱신 |
6.2 통신 패턴
- Domain Expert ↔ Problem Expert: Problem Expert가 객체나 술어를 추가할 때, Domain Expert에서 타입과 술어의 유효성을 확인
- Planner → Domain Expert/Problem Expert: 계획 생성 시 도메인과 문제 텍스트를 수집
- Executor → Problem Expert: 액션 완료 후 효과에 의한 세계 상태 갱신
- Executor → Action Nodes: ROS2 액션 인터페이스를 통한 행동 실행 위임
7. 독립적 스케일링
4대 노드의 분리에 의해 각 노드를 독립적으로 스케일링할 수 있다:
- Planner 노드를 고성능 서버에 배치: 계산 집약적인 플래닝을 별도 머신에서 수행
- Executor와 액션 노드를 로봇 온보드에 배치: 실행 레이턴시를 최소화
- Domain/Problem Expert를 중앙 서버에 배치: 다중 로봇 시스템에서 세계 모델을 중앙 관리
8. 참고 문헌
- Gonzalez, F., Martin, F., Matellán, V., & Rodriguez, F. J. (2021). “PlanSys2: A Planning System Framework for ROS2.” IEEE ICARSC.