1317.15 PlanSys2의 라이프사이클 관리
1. ROS2 라이프사이클 노드의 개요
ROS2의 관리형 노드(Managed Node, Lifecycle Node)는 노드의 상태 전이를 표준화된 상태 기계(state machine)로 관리하는 인터페이스이다. PlanSys2의 4대 핵심 노드는 모두 라이프사이클 노드로 구현되어 있으며, 이에 따라 체계적인 초기화, 활성화, 비활성화, 종료가 가능하다.
2. 라이프사이클 상태 전이
create
┌──────────────────────────────────┐
│ Unconfigured │
└──────────┬───────────────────────┘
│ on_configure (성공)
┌──────────▼───────────────────────┐
│ Inactive │
└──────────┬───────────────────────┘
│ on_activate (성공)
┌──────────▼───────────────────────┐
│ Active │←─── on_deactivate로 Inactive 복귀
└──────────┬───────────────────────┘
│ on_shutdown
┌──────────▼───────────────────────┐
│ Finalized │
└──────────────────────────────────┘
3. PlanSys2 노드별 라이프사이클 구현
3.1 Domain Expert
| 전이 | 수행 작업 |
|---|---|
on_configure | PDDL 도메인 파일 로드, 파싱, 내부 모델 구성 |
on_activate | ROS2 서비스 서버 활성화, 도메인 정보 제공 시작 |
on_deactivate | 서비스 서버 비활성화 |
on_cleanup | 도메인 모델 메모리 해제 |
on_shutdown | 노드 종료 |
3.2 Problem Expert
| 전이 | 수행 작업 |
|---|---|
on_configure | Domain Expert 클라이언트 초기화, 세계 상태 저장소 준비 |
on_activate | 서비스 서버 활성화, 세계 상태 관리 시작 |
on_deactivate | 서비스 비활성화, 상태 보존 |
on_cleanup | 세계 상태 초기화 |
on_shutdown | 노드 종료 |
3.3 Planner
| 전이 | 수행 작업 |
|---|---|
on_configure | 플래너 플러그인 로드, Domain/Problem Expert 클라이언트 초기화 |
on_activate | 계획 생성 서비스 활성화 |
on_deactivate | 서비스 비활성화 |
on_cleanup | 플러그인 해제 |
on_shutdown | 노드 종료 |
3.4 Executor
| 전이 | 수행 작업 |
|---|---|
on_configure | 행동 트리 엔진 초기화, ActionExecutorClient 발견 |
on_activate | 실행 액션 서버 활성화 |
on_deactivate | 진행 중 실행 정지, 액션 서버 비활성화 |
on_cleanup | 행동 트리 해제 |
on_shutdown | 노드 종료 |
4. PlanSys2 Bringup의 라이프사이클 조율
PlanSys2의 런치 시스템은 4대 노드의 라이프사이클을 순서대로 조율한다:
# 런치 파일에서의 라이프사이클 조율
# 1. 모든 노드를 Unconfigured로 생성
# 2. Domain Expert → configure → activate
# 3. Problem Expert → configure → activate (Domain Expert 필요)
# 4. Planner → configure → activate
# 5. Executor → configure → activate
의존 관계에 따라 Domain Expert가 먼저 활성화된 후, Problem Expert, Planner, Executor 순으로 활성화된다.
5. 런타임 라이프사이클 제어
외부에서 노드의 라이프사이클을 제어할 수 있다:
# ROS2 CLI를 통한 라이프사이클 제어
ros2 lifecycle set /domain_expert configure
ros2 lifecycle set /domain_expert activate
ros2 lifecycle get /domain_expert # 현재 상태 조회
6. 라이프사이클 관리의 이점
- 단계적 초기화: 도메인 로드, 서비스 준비 등을 명확한 단계로 분리
- 우아한 종료: 실행 중인 액션을 정리하고 자원을 체계적으로 해제
- 오류 복구: 오류 발생 시 노드를 비활성화 후 재구성하여 복구
- 외부 제어: 운영자가 런타임에 노드의 상태를 제어 가능
- 의존성 관리: 노드 간 의존 관계에 따른 순차적 활성화 보장
7. 참고 문헌
- Gonzalez, F., Martin, F., Matellán, V., & Rodriguez, F. J. (2021). “PlanSys2: A Planning System Framework for ROS2.” IEEE ICARSC.
- Macenski, S., Foote, T., Gerkey, B., Lalancette, C., & Woodall, W. (2022). “Robot Operating System 2: Design, Architecture, and Uses in the Wild.” Science Robotics, 7(66), eabm6074.