1317.33 PlanSys2의 오류 처리 아키텍처

1. 오류 처리의 필요성과 범위

자율 로봇의 임무 계획과 실행은 본질적으로 불확실성이 높은 환경에서 수행되므로, 다양한 단계에서 오류가 발생할 수 있다. PlanSys2는 도메인 로딩, 문제 인스턴스 구성, 계획 수립, 액션 실행에 이르는 전체 파이프라인에 걸쳐 체계적인 오류 처리 아키텍처(error handling architecture)를 제공한다. 이 아키텍처는 오류의 감지(detection), 분류(classification), 보고(reporting), 복구(recovery)의 네 단계로 구성된다(Martín et al., 2021).

2. 오류의 분류 체계

2.1 계층별 오류 분류

PlanSys2에서 발생할 수 있는 오류는 시스템 계층에 따라 다음과 같이 분류된다.

계층오류 유형예시
도메인 계층도메인 로딩 오류PDDL 파싱 실패, 파일 접근 불가
문제 계층문제 구성 오류미정의 타입 참조, 술어 인자 불일치
계획 계층계획 수립 오류해 부재, 플래너 시간 초과, 플래너 비정상 종료
실행 계층액션 실행 오류수행기 연결 실패, 액션 실패, 실행 시간 초과
통신 계층노드 간 통신 오류서비스 응답 시간 초과, 노드 비정상 종료

2.2 심각도별 분류

오류는 시스템에 미치는 영향의 심각도에 따라 다음과 같이 분류된다.

  • 치명적 오류(Fatal): 시스템의 정상 운영이 불가능한 수준의 오류. 핵심 노드의 초기화 실패 등이 해당한다.
  • 심각한 오류(Error): 현재 임무의 수행이 불가능하지만, 시스템의 재구성이나 재시작으로 복구 가능한 오류. 계획 수립 실패, 액션 실행 실패 등이 해당한다.
  • 경고(Warning): 현재 기능에 즉각적 영향은 없으나, 잠재적 문제를 예고하는 상태. 지원되지 않는 PDDL 기능 사용, 비최적 구성 등이 해당한다.

3. 도메인 및 문제 계층의 오류 처리

3.1 PDDL 검증 오류

도메인 전문가 노드와 문제 전문가 노드는 PDDL 입력에 대한 다단계 검증을 수행하며, 검증 실패 시 상세한 오류 정보를 반환한다. 오류 정보에는 다음과 같은 항목이 포함된다.

  • 오류 코드: 오류 유형을 식별하는 정수 코드
  • 오류 메시지: 사람이 읽을 수 있는 오류 설명
  • 오류 위치: PDDL 텍스트 내의 행 번호 또는 토큰 위치

서비스 호출자는 반환된 오류 정보를 분석하여 입력을 수정하고 재시도할 수 있다.

3.2 도메인-문제 불일치 오류

문제 인스턴스의 구성 과정에서, 문제 전문가 노드는 모든 변경 연산에 대해 도메인 모델과의 정합성을 검증한다. 도메인에 정의되지 않은 타입, 술어, 함수를 참조하려는 시도는 거부되며, 구체적인 불일치 정보가 오류 메시지로 반환된다. 이러한 사전 검증은 잘못된 문제 인스턴스가 플래너에 전달되는 것을 방지한다.

4. 계획 수립 계층의 오류 처리

4.1 플래너 오류의 유형

플래너 노드에서 발생할 수 있는 오류는 다음과 같다.

  • 해 부재(No Solution Found): 주어진 도메인과 문제에 대해 유효한 계획이 존재하지 않는 경우. 이는 목표가 달성 불가능하거나, 초기 상태에서 목표 상태로의 경로가 차단된 경우에 발생한다.
  • 시간 초과(Timeout): 플래너의 탐색 시간이 설정된 제한을 초과한 경우. 문제의 복잡도가 지나치게 높은 경우에 발생한다.
  • 플래너 프로세스 오류: 외부 플래너 프로세스가 비정상 종료하거나 잘못된 출력을 생성한 경우.
  • 출력 파싱 오류: 플래너의 출력이 기대한 형식과 일치하지 않는 경우.

4.2 계획 수립 실패 시의 응답

플래너 노드는 계획 수립 요청에 대한 응답으로 성공 여부와 함께 오류 정보를 반환한다. 실패 응답에는 실패 원인을 식별하는 오류 코드와 상세 메시지가 포함된다. 다중 플래너가 구성된 경우, 첫 번째 플래너의 실패 후 대체 플래너로의 전환이 자동으로 수행되며, 모든 플래너가 실패한 경우에만 최종 실패가 보고된다.

5. 실행 계층의 오류 처리

5.1 액션 실행 실패

액션 수행기가 finish(false, ...) 를 호출하여 실패를 보고하면, 해당 행동 트리 액션 노드가 FAILURE 상태를 반환한다. 이 실패는 행동 트리의 제어 흐름에 따라 상위 노드로 전파된다.

Sequence 노드의 자식 중 하나가 실패하면 해당 Sequence 전체가 실패로 처리되며, 이는 순차적 계획의 후속 액션이 실행되지 않음을 의미한다. Parallel 노드의 자식 중 하나가 실패하면 나머지 병렬 액션도 취소된다.

5.2 수행기 연결 실패

행동 트리 액션 노드가 해당 이름의 ROS2 액션 서버를 탐색하지 못하거나 연결에 실패하면, 즉시 FAILURE 상태를 반환한다. 이 오류는 액션 수행기 노드가 시작되지 않았거나 비활성 상태인 경우에 발생한다.

5.3 실행 시간 초과

PlanSys2는 각 액션에 대해 최대 실행 시간을 설정할 수 있다. 액션이 설정된 시간 내에 완료되지 않으면 시간 초과 오류가 발생하며, 해당 액션의 취소가 요청된다.

6. 오류의 보고 경로

PlanSys2의 오류 보고는 다음과 같은 다중 경로를 통해 이루어진다.

  1. 서비스 응답: 서비스 호출에 대한 직접적 오류 반환. 동기적이며, 호출자가 즉시 오류를 처리할 수 있다.
  2. 액션 결과: ExecutePlan 액션의 최종 결과로 실패가 보고된다. 비동기적이며, 계획 실행 완료 후 확인된다.
  3. ROS2 로그: 모든 오류는 해당 노드의 로거를 통해 ERROR 수준으로 기록된다.
  4. 진단 토픽: diagnostic_msgs를 통해 시스템 수준의 오류 상태가 발행된다.

7. 오류 복구 전략

7.1 자동 재시도

특정 유형의 일시적 오류(transient error)에 대해서는 자동 재시도가 적용될 수 있다. 예를 들어, 플래너 프로세스의 간헐적 실패에 대해 설정된 횟수만큼 재시도를 수행한다.

7.2 라이프사이클 재구성

핵심 노드가 오류 상태에 진입한 경우, 라이프사이클 전이를 통해 노드를 Inactive 상태로 되돌린 후 재구성(configure)을 시도할 수 있다. 이는 도메인 파일 수정 후 재로딩이 필요한 경우에 활용된다.

7.3 상위 수준 위임

실행 계층의 오류 중 자동 복구가 불가능한 경우, 오류 정보가 상위 수준의 임무 관리자에게 전달되어 재계획, 임무 변경, 운영자 개입 요청 등의 결정이 위임된다. 이러한 계층적 오류 처리 구조는 PlanSys2가 다양한 실패 상황에 강건하게 대응할 수 있는 기반을 제공한다(Martín et al., 2021).


참고 문헌

  • 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).
  • Ghallab, M., Nau, D., & Traverso, P. (2004). Automated Planning: Theory and Practice. Morgan Kaufmann.

버전: v1.0