25.1.3 다형 논리 기반 그룹 의존성 및 멤버십 결합 메커니즘

자율 에이전트 드론과 같은 거대 규모(Large-scale)의 ROS 2 시스템은 수백 개의 마이크로 패키지들이 얽힌 고도의 그래프 토폴로지(Graph Topology)를 형성한다. 이 과정에서 개별 모듈들이 타 패키지를 1:1 단방향 종속성(예: <depend>)으로만 열거할 경우, 매니페스트 파일(package.xml)의 구문적 비대화(Bloating) 현상이 발생하고 유지보수 복잡도가 기하급수적으로 증가한다. 이러한 결합도 문제를 완화하기 위하여, Format 3 표준 명세는 다형성(Polymorphism) 논리를 기반으로 한 가상 그룹(Virtual Group)화 및 멤버십 바인딩 스키마를 제공한다.

1. 그룹 의존성의 시스템적 필요성

그룹 결합 메커니즘은 객체 지향 프로그래밍(OOP)에서의 ‘인터페이스(Interface)’ 또는 집합 기반 ’다형성’의 개념을 메타 빌드 시스템에 투영한 것이다. 시스템 설계자는 특정한 기능적 범주(Category)나 메타 패키지(Meta-package) 묶음을 하나의 추상화된 그룹 식별자로 정의할 수 있다.
예를 들어, 다양한 제조사의 라이다(LiDAR) 센서 드라이버 패키지들이 존재할 때, 상위 계층의 센서 퓨전(Sensor Fusion) 노드는 개별 패키지 이름을 모두 명제할 필요 없이 단일한 추상화 식별자(예: lidar_drivers)에만 종속되도록 설계할 수 있다.

2. <member_of_group> 자가 선언 메커니즘

멤버십 결합은 패키지가 ament 생태계에 편입될 때, 스스로가 어떠한 논리적 계층 클래스(Logical Hierarchy Class)의 인스턴스인지 자가 선언(Self-declaration)하는 역전된 제어 방식을 채택한다.

개별 패키지의 package.xml 내의 익스포트(Export) 블록에 선언되는 <member_of_group> 태그(예: <member_of_group>ros_core</member_of_group>)는 해당 패키지를 특정 그룹의 원소(Element)로 편입시킨다. 이 과정을 통해 분산된 수많은 서드파티 소프트웨어 모듈들이 중앙 집중적인 등록 절차 없이도 런타임 혹은 빌드 타임에 시스템의 인벤토리 스캐너(Inventory Scanner)에 의해 특정 형상 집합으로 발견(Discovery)될 수 있는 구조적 토대를 마련한다.

이 기능은 특히 ROS 2의 동적 플러그인 아키텍처(예: RViz 2 플러그인, RQT 플러그인, 하드웨어 인터페이스 컨트롤러)에서 런타임 시 가용 모듈 목록을 쿼리(Query)하고 동적 링크 라이브러리(.so)를 지연 로딩(Lazy loading)하는 데 있어 중추적인 역할을 수행한다.

3. <group_depend>를 통한 일괄 종속성(Batch Dependency) 해석

자가 선언된 멤버십에 기초하여 시스템 구성의 최상위 노드나 모듈은 <group_depend> 태그를 활용하여 거시적인 자원 요구서를 작성한다.

특정 패키지가 <group_depend>ros_core</group_depend>라는 태그를 명세할 경우, colcon 워크스페이스 스케줄러 및 rosdep 패키지 관리 프레임워크는 환경 내에 <member_of_group>ros_core</member_of_group>를 선언한 모든 패키지들을 검색 트리에서 추적하여 단일 집합체로 취합한다. 이후 과정에서 컴파일러 파이프라인과 로더는 이 집합 내의 모든 객체를 현재 타겟 패키지의 명시적인 빌드 및 런타임 종속성 목록(Dependency list)으로 동적 변환하여 주입한다.

이러한 다형 구조적 그룹 바인딩 설계는 런타임 플러그인의 추가 및 삭제를 패키징 단계의 스크립트 수정 없이 시스템 레벨에서 수용할 수 있게 하여, 모듈 기반 시스템 확장의 수학적 유연성과 아키텍처 결합력을 대폭 향상시킨다. (참고 버전: REP-149, ROS 2 Humble/Jazzy)