1317.30 PlanSys2의 모니터링과 진단 체계

1. 모니터링과 진단의 필요성

자율 로봇 시스템에서 임무 계획의 수립과 실행은 다수의 분산된 노드가 협력하여 수행하는 복잡한 과정이다. 이 과정에서 도메인 모델의 로딩 실패, 플래너의 해 도출 실패, 액션 수행기의 비정상 동작 등 다양한 장애가 발생할 수 있다. PlanSys2는 이러한 상황을 적시에 감지하고 원인을 파악할 수 있도록, ROS2의 로깅 시스템, 토픽 기반 상태 발행, 라이프사이클 상태 보고 등을 활용한 체계적인 모니터링과 진단(monitoring and diagnostics) 체계를 제공한다(Martín et al., 2021).

2. ROS2 로깅 시스템의 활용

2.1 로그 수준별 정보 구분

PlanSys2의 모든 핵심 노드(도메인 전문가, 문제 전문가, 플래너, 실행기)는 ROS2의 로깅 프레임워크(rclcpp 로거)를 통해 운영 정보를 출력한다. 로그 메시지는 심각도(severity)에 따라 다음과 같이 분류된다.

로그 수준용도예시
DEBUG상세한 내부 동작 추적PDDL 파싱의 각 단계, 토큰 분석 결과
INFO정상 운영 상태 보고도메인 로딩 완료, 계획 수립 성공, 액션 실행 개시
WARN잠재적 문제 경고지원되지 않는 PDDL 요구사항 발견, 플래너 응답 지연
ERROR기능 장애 보고도메인 파싱 실패, 플래너 프로세스 비정상 종료
FATAL시스템 수준 치명적 오류핵심 노드 초기화 실패

개발자와 운영자는 ROS2의 로그 수준 필터링을 통해 필요한 수준의 정보만을 선택적으로 확인할 수 있다. 디버깅 시에는 DEBUG 수준을 활성화하여 상세한 내부 동작을 추적하고, 운영 시에는 WARN 이상으로 필터링하여 이상 상태만을 모니터링한다.

2.2 구조화된 로그 메시지

PlanSys2의 로그 메시지는 일관된 형식을 따라 구조화되어 있다. 각 로그 메시지에는 발생 노드의 이름, 발생 시각, 관련 컴포넌트 정보가 포함되므로, 분산 시스템에서 발생한 이벤트의 시간적 순서와 인과관계를 파악할 수 있다.

3. 토픽 기반 상태 모니터링

3.1 계획 실행 상태 토픽

실행기 노드는 계획 실행의 진행 상태를 ROS2 토픽을 통해 주기적으로 발행한다. 이 토픽을 구독하는 외부 노드는 계획의 현재 상태를 실시간으로 파악할 수 있다. 발행되는 상태 정보에는 다음과 같은 항목이 포함된다.

  • 현재 ��행 중인 액션: 현재 활성 상태인 PDDL 액션의 이름과 인자
  • 완료된 액션 목록: 이미 성공적으로 완료된 액션들의 목록
  • 대기 중인 액션 목록: 아직 ��행되지 않은 액션들의 목록
  • 전체 진행률: 계획의 총 액션 수 대비 완료된 액션 수의 비율
  • 각 액션의 개별 진행률: 액션 수행기로부터 수신한 피드백에 기반한 개별 액션의 진행률

3.2 노드 상태 토픽

PlanSys2의 각 핵심 노드는 자신의 라이프사이클 상태를 토픽으로 발행한다. 이를 통해 외부 모니터링 시스템이 각 노드의 활성 여부, 오류 상태, 상태 전이 이력을 추적할 수 있다.

4. 라이프사이클 기반 상태 진단

4.1 관리형 노드의 상태 보고

PlanSys2의 핵심 노드들은 ROS2 관리형 노드(managed node)로 구현되어 있으므로, 라이프사이클 상태 전이 이벤트 자체가 진단 정보로 활용된다. 각 노드의 현재 라이프사이클 상태는 /lifecycle_state 관련 서비스를 통해 조회할 수 있으며, 상태 전이 시 이벤트가 발생하여 모니터링 시스템에 전달된다.

라이프사이클 상태진단적 의미
Unconfigured노드가 아직 초기화되지 않았음
Inactive초기화 완료, 서비스 미활성
Active정상 운영 상태
Finalized노드 종료
ErrorProcessing상태 전이 중 오류 발생

특히, 노드가 Active 상태로 전이하지 못하고 Inactive 상태에 머무르는 경우, 이는 초기화 과정에서 오류가 발생했음을 의미한다. 예를 들어, 도메인 전문가 노드가 도메인 파일 로딩에 실패하면 Inactive 상태를 유지하며, 이를 통해 시스템 운영자가 문제를 인지할 수 있다.

4.2 본드(Bond) 기반 노드 감시

PlanSys2는 ROS2의 bond 라이브러리를 활용하여 핵심 노드 간의 활성 상태를 상호 감시할 수 있다. 본드는 두 노드 사이에 하트비트(heartbeat) 메커니즘을 설정하여, 한쪽 노드가 비정상 종료되면 상대 노드에 즉시 통지한다. 이를 통해 런치 시스템이 비정상 종료된 노드를 자동으로 재시작하는 등의 장애 복구를 수행할 수 있다.

5. 서비스 기반 진단 인터페이스

5.1 도메인 상태 진단

도메인 전문가 노드는 현재 로딩된 도메인 모델의 상태를 진단하기 위한 서비스를 제공한다. 이 서비스를 통해 다음과 같은 진단 정보를 조회할 수 있다.

  • 로딩된 도메인의 PDDL 텍스트
  • 정의된 타입, 술어, 함수, 액션의 목록과 세부 정보
  • 도메인 로딩 시 발생한 경고나 오류 목록

5.2 문제 상태 진단

문제 전문가 노드는 현재 구성된 문제 인스턴스의 상태를 진단하기 위한 서비스를 제공한다. 등록된 객체, 술어 인스턴스, 함수 값, 목표 조건 등을 개별적으로 조회하여, 문제 인스턴스가 올바르게 구성되었는지 확인할 수 있다.

5.3 플래너 상태 진단

플래너 노드는 로딩된 플래너 플러그인의 목록, 각 플래너의 활성 상태, 가장 최근 계획 수립 요청의 결과(성공/실패, 소요 시간, 계획 길이 등)를 진단 정보로 제공한다.

6. 진단 메시지 표준의 활용

6.1 diagnostic_msgs 통합

ROS2 생태계에서는 diagnostic_msgs 패키지가 표준화된 진단 메시지 형식을 정의한다. DiagnosticStatus 메시지는 하드웨어와 소프트웨어 컴포넌트의 상태를 OK, WARN, ERROR, STALE 수준으로 보고하며, 키-값 쌍의 형태로 상세 정보를 첨부할 수 있다. PlanSys2는 이 표준 메시지를 활용하여 각 핵심 노드의 상태를 /diagnostics 토픽으로 발행할 수 있으며, 이를 통해 rqt_robot_monitor 등 기존 ROS2 진단 도구와의 통합이 가능하다.

진단 항목상태설명
Domain ExpertOK도메인 모델 로딩 완료
Problem ExpertWARN목표 조건 미설정
PlannerOK플래너 플러그인 로딩 완료
ExecutorERROR액션 수행기 연결 실패

7. 실시간 모니터링의 아키텍처

PlanSys2의 모니터링 체계는 다음과 같은 다계층 구조로 설계되어 있다.

  1. 노드 내부 계층: 각 노드가 내부 상태를 로그로 출력하고 서비스 인터페이스를 통해 진단 정보를 제공한다.
  2. 토픽 발행 계층: 노드의 주요 상태 변화와 계획 실행 진행 상태가 토픽으로 실시간 발행된다.
  3. 진단 집약 계층: diagnostic_aggregator 등의 도구가 분산된 진단 정보를 수집하고 집약하여 전체 시스템의 건강 상태(health status)를 종합적으로 평가한다.
  4. 시각화 계층: 수집된 모니터링 데이터를 터미널 인터페이스, 웹 기반 대시보드, 또는 RViz 플러그인 등을 통해 시각화하여 운영자에게 제공한다.

이러한 다계층 모니터링과 진단 체계는 PlanSys2 기반 로봇 시스템의 안정적 운영과 신속한 장애 대응을 지원하는 기반이 된다(Martín et al., 2021; Macenski et al., 2022).


참고 문헌

  • Martín, F., Cañas, J. M., Ginés, J., & Fuentetaja, R. (2021). “PlanSys2: A Planning System Framework for ROS2.” IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).
  • 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.

버전: v1.0