1317.36 PlanSys2 터미널 인터페이스
1. 터미널 인터페이스의 개요
PlanSys2 터미널 인터페이스(terminal interface)는 plansys2_terminal 패키지에 구현된 대화형(interactive) 명령행 도구로, 사용자가 PlanSys2 시스템의 모든 기능을 터미널 환경에서 직접 제어하고 모니터링할 수 있게 한다. 이 인터페이스는 독립적인 ROS2 노드로 실행되며, PlanSys2의 클라이언트 라이브러리를 통해 4대 핵심 노드와 통신한다. 터미널 인터페이스는 개발, 테스트, 교육, 시연 등 다양한 목적으로 활용된다(Martín et al., 2021).
2. 대화형 세션의 구조
2.1 프롬프트와 명령 입력
터미널 인터페이스를 실행하면 대화형 프롬프트가 표시되며, 사용자는 프롬프트에 명령어를 입력하여 시스템과 상호작용한다. 명령어는 공백으로 구분된 토큰의 시퀀스로 구성되며, 첫 번째 토큰이 명령의 종류를, 이후 토큰들이 인자를 나타낸다.
ros2 run plansys2_terminal plansys2_terminal
실행 후 대화형 프롬프트가 표시되어 사용자의 명령 입력을 대기한다.
2.2 명령 파싱과 실행
사용자가 입력한 명령 문자열은 내부 파서에 의해 분석되어 해당 기능의 서비스 호출로 변환된다. 명령 실행 결과는 터미널에 텍스트로 출력된다. 잘못된 명령이 입력되면 사용 가능한 명령 목록이 도움말 형태로 표시된다.
3. 주요 기능 영역
3.1 도메인 조회 기능
터미널 인터페이스를 통해 현재 로딩된 도메인 모델의 내용을 다양한 수준의 상세도로 조회할 수 있다. 전체 PDDL 도메인 텍스트를 출력하거나, 특정 액션의 전제 조건과 효과만을 선택적으로 확인할 수 있다. 이 기능은 도메인 파일의 수정 후 변경 사항이 올바르게 반영되었는지 검증하는 데 활용된다.
3.2 문제 인스턴스 조작 기능
터미널에서 객체의 등록과 제거, 술어 인스턴스의 추가와 삭제, 함수 값의 설정, 목표 조건의 정의 등 문제 인스턴스의 모든 구성 작업을 수행할 수 있다. 각 조작 명령에 대한 검증 결과가 즉시 표시되므로, 오류를 발견하고 수정하는 반복 과정이 효율적이다.
3.3 계획 수립 및 실행 기능
문제 인스턴스가 구성되면, 터미널에서 계획 수립을 요청하고 결과를 확인한 후 실행을 개시할 수 있다. 계획 실행 중에는 각 액션의 실행 상태와 진행률이 터미널에 실시간으로 출력된다.
4. 출력 형식과 가독성
4.1 계획 출력 형식
계획 수립 명령의 결과는 다음과 같은 형식으로 출력된다.
plan:
0.000: (move robot1 kitchen corridor) [5.000]
0.000: (charge robot2 station) [10.000]
5.001: (pick robot1 cup corridor) [3.000]
각 행은 시작 시각, 액션 표현, 지속 시간을 포함하며, 계획의 시간적 구조를 직관적으로 파악할 수 있다.
4.2 오류 메시지 출력
명령 실행 중 오류가 발생하면, 오류의 유형과 원인이 명확하게 출력된다. 예를 들어, 정의되지 않은 타입의 객체를 등록하려는 시도에 대해서는 해당 타입이 도메인에 존재하지 않는다는 오류 메시지가 표시된다. 이러한 즉각적인 오류 피드백은 개발자가 문제의 원인을 신속하게 파악하고 수정할 수 있게 한다.
5. 스크립트 기반 자동화
터미널 인터페이스는 표준 입력(stdin)으로부터 명령을 수신하므로, 명령 시퀀스를 파일로 작성하여 파이프 또는 리디렉션을 통해 일괄 실행할 수 있다. 이 기능은 반복적인 테스트 시나리오의 자동화에 유용하다. 테스트 시나리오 파일에는 객체 등록, 술어 설정, 목표 설정, 계획 수립, 실행 명령이 순서대로 기재되며, 이를 통해 특정 도메인과 문제 조합에 대한 회귀 테스트(regression test)를 자동화할 수 있다.
6. 터미널 인터페이스의 설계적 의의
터미널 인터페이스는 텍스트 기반이므로, 행동 트리의 구조 시각화나 계획의 타임라인 표시 등 그래픽 요소가 필요한 모니터링에는 한계가 있다. 그러나 SSH 원격 접속 환경, 헤드리스(headless) 로봇 시스템, 자동화된 테스트 파이프라인 등 그래픽 환경이 제공되지 않는 상황에서 PlanSys2를 운용할 수 있는 핵심 인터페이스로서 중요한 가치를 가진다. 또한, 터미널 인터페이스를 통한 수동 조작 경험은 PlanSys2의 API 구조와 동작 원리에 대한 이해를 심화하는 교육적 효과도 제공한다(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