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의 전형적 사용 워크플로는 다음과 같다.
- 시스템 확인:
get domain명령으로 도메인이 올바르게 로딩되었는지 확인한다. - 객체 등록:
set instance명령을 반복 사용하여 필요한 객체를 등록한다. - 초기 상태 구성:
set predicate명령으로 초기 상태의 술어 인스턴스를 설정한다. - 목표 설정:
set goal명령으로 목표 조건을 설정한다. - 문제 검증:
get problem명령으로 구성된 문제 인스턴스를 확인한다. - 계획 수립:
get plan명령으로 계획을 수립하고 결과를 확인한다. - 계획 실행:
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