1317.35 PlanSys2 CLI 도구의 기능과 활용

1. CLI 도구의 개요

PlanSys2는 명령행 인터페이스(Command Line Interface, CLI) 도구를 제공하여, 개발자와 운영자가 터미널 환경에서 PlanSys2 시스템과 직접 상호작용할 수 있게 한다. 이 CLI 도구는 도메인 모델 조회, 문제 인스턴스 구성, 계획 수립 요청, 계획 실행 명령 등 PlanSys2의 모든 핵심 기능에 대한 텍스트 기반 인터페이스를 제공한다. CLI 도구는 프로토타이핑, 디버깅, 교육 목적으로 널리 활용되며, 그래픽 인터페이스 없이도 PlanSys2의 전체 기능을 시험할 수 있는 수단이다(Martín et al., 2021).

2. CLI 도구의 구조

PlanSys2의 CLI 도구는 plansys2_terminal 패키지에 포함되어 있으며, ROS2 노드로서 실행된다. 이 노드는 PlanSys2의 클라이언트 라이브러리(DomainExpertClient, ProblemExpertClient, PlannerClient, ExecutorClient)를 내부적으로 사용하여 각 핵심 노드와 통신한다. 사용자가 터미널에 명령을 입력하면, CLI 도구는 해당 명령을 적절한 서비스 호출이나 액션 요청으로 변환하여 PlanSys2 시스템에 전달한다.

3. 주요 명령어 체계

3.1 도메인 관련 명령

명령어기능
get domain현재 로딩된 도메인의 전체 PDDL 텍스트를 출력한다
get domain types도메인에 정의된 타입 목록을 출력한다
get domain predicates도메인에 정의된 술어 목록을 출력한다
get domain actions도메인에 정의된 액션 목록을 출력한다
get domain action <name>특정 액션의 상세 정의를 출력한다

이 명령들은 도메인 전문가 노드의 서비스를 호출하여 도메인 모델의 내용을 조회한다.

3.2 문제 관련 명령

명령어기능
set instance <name> <type>객체를 등록한다
remove instance <name>객체를 제거한다
get instances등록된 모든 객체를 출력한다
set predicate (<pred> <args...>)술어 인스턴스를 추가한다
remove predicate (<pred> <args...>)술어 인스턴스를 제거한다
get predicates모든 술어 인스턴스를 출력한다
set goal (<goal_expr>)목표 논리식을 설정한다
get goal현재 목표를 출력한다
get problem전체 PDDL 문제 문자열을 출력한다

이 명령들을 통해 문제 인스턴스를 단계적으로 구성하고 확인할 수 있다.

3.3 계획 및 실행 관련 명령

명령어기능
get plan현재 도메인과 문제에 대한 계획을 수립하고 출력한다
run수립된 계획의 실행을 개시한다

get plan 명령은 플래너 노드에 계획 수립을 요청하고, 성공 시 계획의 각 액션을 시간 인덱싱된 형태로 출력한다. run 명령은 실행기 노드에 ExecutePlan 액션을 요청하여 계획의 실행을 개시한다.

4. CLI 사용의 전형적 워크플로

CLI를 통한 PlanSys2의 전형적 사용 워크플로는 다음과 같다.

  1. 시스템 확인: get domain 명령으로 도메인이 올바르게 로딩되었는지 확인한다.
  2. 객체 등록: set instance 명령을 반복 사용하여 필요한 객체를 등록한다.
  3. 초기 상태 구성: set predicate 명령으로 초기 상태의 술어 인스턴스를 설정한다.
  4. 목표 설정: set goal 명령으로 목표 조건을 설정한다.
  5. 문제 검증: get problem 명령으로 구성된 문제 인스턴스를 확인한다.
  6. 계획 수립: get plan 명령으로 계획을 수립하고 결과를 확인한다.
  7. 계획 실행: run 명령으로 계획의 실행을 개시하고, 실행 상태를 모니터링한다.

5. 디버깅 활용

CLI 도구는 PlanSys2 시스템의 디버깅에 매우 유용하다. 다음과 같은 상황에서 CLI를 통해 문제를 진단할 수 있다.

  • 도메인 검증: 도메인 파일의 파싱이 올바르게 수행되었는지 확인한다. get domain actions 명령으로 기대한 액션이 모두 등록되었는지 확인할 수 있다.
  • 문제 구성 검증: 술어 인스턴스와 객체의 등록이 올바르게 이루어졌는지 확인한다. 오류 발생 시 반환되는 오류 메시지를 통해 원인을 파악한다.
  • 플래너 테스트: 다양한 초기 상태와 목표 조합에 대해 플래너가 유효한 계획을 생성하는지 반복적으로 테스트한다.
  • 액션 수행기 테스트: 계획을 실행하여 각 액션 수행기가 올바르게 동작하는지 확인한다. 특정 액션에서 실패가 발생하면 해당 수행기의 로그를 확인하여 원인을 분석한다.

CLI 도구는 프로그래밍 인터페이스를 사용하지 않고도 PlanSys2의 전체 파이프라인을 신속하게 테스트할 수 있게 하므로, 개발 초기 단계에서의 빠른 반복(rapid iteration)에 특히 유용하다(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).

버전: v1.0