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_configurePDDL 도메인 파일 로드, 파싱, 내부 모델 구성
on_activateROS2 서비스 서버 활성화, 도메인 정보 제공 시작
on_deactivate서비스 서버 비활성화
on_cleanup도메인 모델 메모리 해제
on_shutdown노드 종료

3.2 Problem Expert

전이수행 작업
on_configureDomain 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. 라이프사이클 관리의 이점

  1. 단계적 초기화: 도메인 로드, 서비스 준비 등을 명확한 단계로 분리
  2. 우아한 종료: 실행 중인 액션을 정리하고 자원을 체계적으로 해제
  3. 오류 복구: 오류 발생 시 노드를 비활성화 후 재구성하여 복구
  4. 외부 제어: 운영자가 런타임에 노드의 상태를 제어 가능
  5. 의존성 관리: 노드 간 의존 관계에 따른 순차적 활성화 보장

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.