1317.38 PlanSys2의 확장성 설계

1. 확장성 설계의 원칙

PlanSys2는 다양한 로봇 플랫폼, 도메인, 플래너, 실행 환경에 적용될 수 있도록 확장성(extensibility)을 핵심 설계 원칙으로 채택하였다. 이 확장성은 플러그인 아키텍처, 추상 인터페이스, ROS2의 분산 통신 메커니즘을 통해 실현된다. PlanSys2의 확장성 설계는 소프트웨어 공학의 SOLID 원칙, 특히 개방-폐쇄 원칙(Open-Closed Principle)과 의존성 역전 원칙(Dependency Inversion Principle)에 기반한다(Martín et al., 2021; Gamma et al., 1995).

2. 확장 지점의 설계

2.1 플래너 확장 지점

PlanSys2의 가장 두드러진 확장 지점은 플래너 플러그인 인터페이스이다. PlanSolverBase 추상 클래스를 상속하는 새로운 플러그인을 구현하면, 임의의 외부 플래너를 PlanSys2에 통합할 수 있다. 이 확장은 PlanSys2의 핵심 코드를 수정하지 않고 독립적인 패키지로 이루어진다.

2.2 액션 수행기 확장 지점

각 PDDL 액션에 대응하는 액션 수행기는 ActionExecutorClient 기반 클래스를 상속하여 구현된다. 새로운 PDDL 액션이 도메인에 추가될 때, 해당 액션의 수행기를 독립적으로 구현하고 시스템에 배치하면 된다. 수행기의 추가와 제거가 다른 수행기나 PlanSys2 핵심 노드에 영향을 미치지 않는다.

2.3 행동 트리 확장 지점

사용자 정의 행동 트리 노드를 BT.CPP에 등록하여, 계획 실행 시 활용할 수 있다. 조건 노드, 데코레이터 노드, 복합 액션 노드 등을 추가하여, 표준 액션 수행기만으로는 표현하기 어려운 복잡한 실행 로직을 행동 트리 수준에서 구현할 수 있다.

3. 모듈화와 패키지 구조

3.1 핵심 패키지와 확장 패키지의 분리

PlanSys2는 다음과 같은 패키지 구조를 통해 핵심 기능과 확장 기능을 명확하게 분리한다.

패키지역할
plansys2_core핵심 인터페이스, 메시지 정의, 공통 유틸리티
plansys2_domain_expert도메인 전문가 노드
plansys2_problem_expert문제 전문가 노드
plansys2_planner플래너 노드
plansys2_executor실행기 노드
plansys2_popf_plan_solverPOPF 플래너 플러그인
plansys2_terminal터미널 인터페이스
plansys2_bringup런치 파일과 구성 파일

이러한 패키지 분리는 각 구성 요소의 독립적 빌드, 테스트, 배포를 가능하게 하며, 확장 패키지가 핵심 패키지에 대한 최소한의 의존성만을 가지도록 보장한다.

4. ROS2 인터페이스를 통한 확장

4.1 서비스와 토픽의 공개 인터페이스

PlanSys2의 각 노드가 제공하는 ROS2 서비스와 토픽은 공개(public) 인터페이스로서, 외부 노드에서 자유롭게 접근할 수 있다. 이를 통해 PlanSys2의 기능을 활용하는 상위 수준 시스템을 ROS2의 표준 통신 메커니즘만으로 구현할 수 있다. 임무 관리자, 사용자 인터페이스, 모니터링 시스템 등이 PlanSys2의 서비스를 호출하여 도메인 조회, 문제 구성, 계획 수립, 실행 제어 등을 수행할 수 있다.

4.2 클라이언트 라이브러리의 제공

PlanSys2는 각 핵심 노드에 대한 C++ 클라이언트 라이브러리를 제공한다. DomainExpertClient, ProblemExpertClient, PlannerClient, ExecutorClient는 ROS2 서비스 호출의 복잡성을 캡슐화하여, 개발자가 간결한 API를 통해 PlanSys2의 기능을 활용할 수 있게 한다.

5. 이종 시스템과의 통합 확장

PlanSys2의 ROS2 기반 설계는 ROS2 생태계의 다른 프레임워크와의 통합을 자연스럽게 지원한다. Nav2, MoveIt2, micro-ROS 등과의 통합이 표준 ROS2 통신을 통해 이루어질 수 있으며, 이는 PlanSys2의 적용 범위를 이동 로봇, 매니퓰레이터, 임베디드 시스템 등으로 확장한다.

또한, rosbridge 프로토콜을 통해 비ROS2 시스템(웹 애플리케이션, 외부 계획 서비스 등)과의 연동도 가능하며, 이는 PlanSys2를 이종(heterogeneous) 로봇 시스템 아키텍처의 계획 계층으로 활용할 수 있는 기반을 제공한다(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).
  • Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.

버전: v1.0